{"version":3,"file":"mass-tools.min.js","sources":["../node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-spectra-processing/lib-esm/reim/reimAbsolute.js","../node_modules/ml-spectra-processing/lib-esm/x/getOutputArray.js","../node_modules/ml-spectra-processing/lib-esm/x/xAbsolute.js","../node_modules/ml-spectra-processing/lib-esm/x/xMedian.js","../node_modules/ml-spectra-processing/lib-esm/x/xCheck.js","../node_modules/ml-spectra-processing/lib-esm/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xAdd.js","../node_modules/ml-spectra-processing/lib-esm/x/xMultiply.js","../node_modules/ml-spectra-processing/lib-esm/x/xDotProduct.js","../node_modules/ml-spectra-processing/lib-esm/x/xCrossCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/x/xBoxPlot.js","../node_modules/ml-spectra-processing/lib-esm/x/xCheckLengths.js","../node_modules/ml-spectra-processing/lib-esm/x/xCorrelation.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-matrix/matrix.js","../node_modules/ml-matrix/matrix.mjs","../node_modules/ml-spectra-processing/lib-esm/x/xCostMatrix.js","../node_modules/ml-spectra-processing/lib-esm/x/xCumulative.js","../node_modules/ml-spectra-processing/lib-esm/x/xEnsureFloat64.js","../node_modules/ml-spectra-processing/lib-esm/x/xGetTargetIndex.js","../node_modules/fft.js/lib/fft.js","../node_modules/ml-spectra-processing/lib-esm/utils/createArray.js","../node_modules/ml-spectra-processing/lib-esm/utils/createFromToArray.js","../node_modules/ml-xsadd/lib-esm/XSadd.js","../node_modules/ml-spectra-processing/lib-esm/utils/createRandomArray.js","../node_modules/ml-spectra-processing/lib-esm/utils/isPowerOfTwo.js","../node_modules/ml-spectra-processing/lib-esm/utils/nextPowerOfTwo.js","../node_modules/ml-spectra-processing/lib-esm/utils/recursiveResolve.js","../node_modules/ml-spectra-processing/lib-esm/x/xSubtract.js","../node_modules/ml-spectra-processing/lib-esm/utils/calculateAdaptiveWeights.js","../node_modules/ml-spectra-processing/lib-esm/x/xHilbertTransform.js","../node_modules/ml-spectra-processing/lib-esm/x/xMaxValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xHistogram.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsEquallySpaced.js","../node_modules/ml-spectra-processing/lib-esm/x/xIsMonotonic.js","../node_modules/ml-spectra-processing/lib-esm/x/xMassCenterVectorSimilarity.js","../node_modules/ml-spectra-processing/lib-esm/x/xMean.js","../node_modules/ml-spectra-processing/lib-esm/x/xMedianAbsoluteDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinMaxValues.js","../node_modules/ml-spectra-processing/lib-esm/x/utils/erfcinv.js","../node_modules/ml-spectra-processing/lib-esm/x/utils/simpleNormInv.js","../node_modules/ml-spectra-processing/lib-esm/x/xNoiseSanPlot.js","../node_modules/ml-spectra-processing/lib-esm/x/xNoiseStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xNorm.js","../node_modules/ml-spectra-processing/lib-esm/x/xSum.js","../node_modules/ml-spectra-processing/lib-esm/x/xPadding.js","../node_modules/ml-spectra-processing/lib-esm/x/xVariance.js","../node_modules/ml-spectra-processing/lib-esm/x/xStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/x/xRolling.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingAverage.js","../node_modules/ml-spectra-processing/lib-esm/x/xRotate.js","../node_modules/ml-spectra-processing/lib-esm/x/xSequentialFillFromStep.js","../node_modules/ml-spectra-processing/lib-esm/x/xSortDescending.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCholeskySolver.js","../node_modules/ml-spectra-processing/lib-esm/utils/addWeights.js","../node_modules/ml-spectra-processing/lib-esm/x/xWhitakerSmoother.js","../node_modules/ml-spectra-processing/lib-esm/reim/reimPhaseCorrection.js","../node_modules/ml-spectra-processing/lib-esm/reim/reimAutoPhaseCorrection.js","../node_modules/ml-spectra-processing/lib-esm/reim/reimFFT.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCheck.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCumulativeDistributionStatistics.js","../node_modules/ml-spectra-processing/lib-esm/zones/zonesNormalize.js","../node_modules/ml-spectra-processing/lib-esm/zones/zonesWithPoints.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/integral.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEquallySpaced.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/equallySpacedSlot.js","../node_modules/ml-spectra-processing/lib-esm/xy/utils/equallySpacedSmooth.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyJoinX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyReduce.js","../node_modules/ml-spectra-processing/lib-esm/xy/xySortX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyUniqueX.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/utils/getSlots.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayWeightedMerge.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectCheck.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMaxXPoint.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMinXPoint.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCreateEmpty.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCheck.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixClone.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCheckRanges.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMinMaxAbsoluteZ.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMinMaxZ.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMaxAbsoluteZ.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixToArray.js","../node_modules/ml-spectra-processing/lib-esm/utils/createStepArray.js","../node_modules/ml-spectra-processing/lib-esm/utils/getRescaler.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixAbsoluteMedian.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixApplyNumericalEncoding.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixAutoCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixBoxPlot.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCenterZMean.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixColumnsCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCuthillMckee.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixGetSubMatrix.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixHistogram.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMedian.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixNoiseStandardDeviation.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixNumericalDecoding.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixNumericalEncoding.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixPQN.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixSetSubMatrix.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixZPivotRescale.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixZRescale.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixZRescalePerColumn.js","../node_modules/ml-spectra-processing/lib-esm/utils/stringify.js","../node_modules/ml-spectra-processing/lib-esm/x/xAbsoluteMedian.js","../node_modules/ml-spectra-processing/lib-esm/x/xAbsoluteSum.js","../node_modules/ml-spectra-processing/lib-esm/x/xApplyFunctionStr.js","../node_modules/ml-spectra-processing/lib-esm/x/xAutoCorrelation.js","../node_modules/ml-spectra-processing/lib-esm/x/xBoxPlotWithOutliers.js","../node_modules/ml-spectra-processing/lib-esm/x/xDivide.js","../node_modules/ml-spectra-processing/lib-esm/x/xMaxAbsoluteValue.js","../node_modules/ml-spectra-processing/lib-esm/x/xMaxIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xMeanAbsoluteError.js","../node_modules/ml-spectra-processing/lib-esm/x/xMeanSquaredError.js","../node_modules/ml-spectra-processing/lib-esm/x/xMeanWeighted.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinMaxDelta.js","../node_modules/ml-spectra-processing/lib-esm/x/xMode.js","../node_modules/ml-spectra-processing/lib-esm/x/xNormed.js","../node_modules/ml-spectra-processing/lib-esm/x/xParetoNormalization.js","../node_modules/ml-spectra-processing/lib-esm/x/xRescale.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingMax.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingMedian.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingMin.js","../node_modules/ml-spectra-processing/lib-esm/x/xSampling.js","../node_modules/ml-spectra-processing/lib-esm/x/xSequentialFillFromTo.js","../node_modules/ml-spectra-processing/lib-esm/x/xSortAscending.js","../node_modules/ml-spectra-processing/lib-esm/x/xUniqueSorted.js","../node_modules/ml-spectra-processing/lib-esm/utils/createSystemMatrix.js","../node_modules/ml-spectra-processing/lib-esm/xreim/xreimSortX.js","../node_modules/ml-spectra-processing/lib-esm/xreim/xreimZeroFilling.js","../node_modules/ml-spectra-processing/lib-esm/xy2/xy2ToXY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyAlign.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayAlign.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayAlignToFirst.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/utils/getSlotsToFirst.js","../node_modules/ml-spectra-processing/lib-esm/xyArray/xyArrayMerge.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCovariance.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEnsureFloat64.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyEnsureGrowingX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyExtract.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilter.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterMinYValue.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterTopYValues.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFilterXPositive.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyFindClosestPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyGetNMaxY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyGrowingX.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyIntegral.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyIntegration.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMassCenter.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMassCenterVector.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxClosestYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxMerge.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaximaY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMedian.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMergeByCentroids.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMinClosestYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMinYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMinimaY.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectBestPoints.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectJoinX.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMaxYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMinMaxValues.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectMinYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectSlotX.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectSortX.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectSumY.js","../node_modules/ml-spectra-processing/lib-esm/xyObject/xyObjectToXY.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyPeakInfo.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyRealMaxYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyRealMinYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyReduceNonContinuous.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyRolling.js","../node_modules/ml-spectra-processing/lib-esm/xy/xySetYValue.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyToXYArray.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyToXYObject.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyWeightedMerge.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/xy-parser/lib-esm/parse.js","../node_modules/xy-parser/lib-esm/index.js","../packages/ms-spectrum/lib/src/getBestPeaks.js","../packages/mf-parser/lib/src/Kind.js","../packages/mf-parser/lib/src/util/parseCharge.js","../packages/mf-parser/lib/src/parse.js","../packages/mf-parser/lib/src/util/subSuperscript.js","../packages/mf-parser/lib/src/Format.js","../packages/mf-parser/lib/src/util/formatCharge.js","../packages/mf-parser/lib/src/util/improveLinesForDisplay.js","../packages/mf-parser/lib/src/util/toDisplay.js","../packages/chemical-elements/lib/src/elementsAndIsotopes.js","../packages/chemical-elements/lib/src/elements.js","../packages/chemical-elements/lib/src/elementsAndIsotopesObject.js","../packages/chemical-elements/lib/src/elementsAndStableIsotopes.js","../packages/chemical-elements/lib/src/elementsAndStableIsotopesObject.js","../packages/chemical-elements/lib/src/elementsObject.js","../packages/chemical-elements/lib/src/isotopesObject.js","../packages/chemical-elements/lib/src/stableIsotopesObject.js","../packages/chemical-elements/lib/src/unsaturationsObject.js","../packages/chemical-groups/lib/src/groupsObject.js","../packages/chemical-groups/lib/src/groupsToSequence.js","../packages/mf-parser/lib/src/util/isMF.js","../packages/mf-parser/lib/src/Style.js","../packages/mf-parser/lib/src/util/toHtml.js","../packages/mf-parser/lib/src/ensureCase.js","../packages/mf-parser/lib/src/util/flatten.js","../packages/mf-parser/lib/src/util/getIsotopeRatioInfo.js","../packages/mf-parser/lib/src/util/getEA.js","../packages/mf-parser/lib/src/util/getElements.js","../packages/mf-parser/lib/src/util/getNumberOfIsotopologues.js","../packages/mf-parser/lib/src/util/partToAtoms.js","../packages/mf-parser/lib/src/util/partToMF.js","../packages/mf-parser/lib/src/util/getInfoInternal.js","../packages/mf-parser/lib/src/util/getIsotopesInfo.js","../packages/mf-parser/lib/src/util/partsToDisplay.js","../packages/mf-parser/lib/src/util/partsToMF.js","../packages/atom-sorter/lib/src/index.js","../packages/mf-parser/lib/src/util/toParts.js","../packages/mf-parser/lib/src/util/toText.js","../packages/mf-parser/lib/src/MFInternal.js","../packages/mf-parser/lib/src/MF.js","../packages/mf-parser/lib/src/parseToHtml.js","../packages/mf-matcher/lib/src/unsaturationMatcher.js","../packages/mf-matcher/lib/src/generalMatcher.js","../packages/mf-utilities/lib/src/ensureUppercaseSequence.js","../packages/mf-utilities/lib/src/getEutrophicationPotential.js","../packages/mf-utilities/lib/src/getMsem.js","../packages/mf-utilities/lib/src/getMsInfo.js","../packages/mf-utilities/lib/src/getRangesForFragment.js","../packages/mf-utilities/lib/src/mfDiff.js","../packages/mf-utilities/lib/src/preprocessIonizations.js","../packages/mf-utilities/lib/src/preprocessRanges.js","../packages/mf-matcher/lib/src/msemMatcher.js","../packages/mf-finder/lib/src/TargetMassCache.js","../packages/mf-finder/lib/src/findMFsSync.js","../packages/mf-finder/lib/src/findMFs.js","../packages/mf-finder/lib/src/mfIncluded.js","../packages/ms-spectrum/lib/src/from/fromMonoisotopicMass.js","../packages/ms-spectrum/lib/src/getPeaks.js","../packages/ms-spectrum/lib/src/getFragmentPeaks.js","../packages/ms-spectrum/lib/src/getMassRemainder.js","../node_modules/peaks-similarity/lib-esm/calculateOverlapFromDiff.js","../node_modules/peaks-similarity/lib-esm/checkPeaks.js","../node_modules/peaks-similarity/lib-esm/extract.js","../node_modules/peaks-similarity/lib-esm/getCommonArray.js","../node_modules/ml-stat/array.js","../node_modules/ml-stat/index.js","../node_modules/peaks-similarity/lib-esm/normalize.js","../node_modules/peaks-similarity/lib-esm/commonExtractAndNormalize.js","../node_modules/peaks-similarity/lib-esm/extractAndNormalize.js","../node_modules/peaks-similarity/lib-esm/getIntersection.js","../node_modules/peaks-similarity/lib-esm/index.js","../packages/ms-spectrum/lib/src/getPeakChargeBySimilarity.js","../packages/ms-spectrum/lib/src/getPeaksWithCharge.js","../packages/ms-spectrum/lib/src/isContinuous.js","../node_modules/@lukeed/uuid/dist/index.mjs","../node_modules/ml-savitzky-golay-generalized/lib-esm/index.js","../node_modules/ml-peak-shape-generator/lib-esm/util/constants.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/gaussian/Gaussian.js","../node_modules/ml-peak-shape-generator/lib-esm/util/erfinv.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/lorentzian/Lorentzian.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/pseudoVoigt/PseudoVoigt.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/generalizedLorentzian/GeneralizedLorentzian.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/2d/gaussian2D/Gaussian2D.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/getShape1D.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/2d/getShape2D.js","../node_modules/ml-spectra-fitting/lib-esm/util/assert.js","../node_modules/ml-spectra-fitting/lib-esm/util/internalPeaks/DefaultParameters.js","../node_modules/ml-spectra-fitting/lib-esm/util/internalPeaks/getInternalPeaks.js","../node_modules/ml-levenberg-marquardt/lib-esm/errorCalculation.js","../node_modules/ml-levenberg-marquardt/lib-esm/step.js","../node_modules/ml-levenberg-marquardt/lib-esm/gradientFunction.js","../node_modules/ml-levenberg-marquardt/lib-esm/index.js","../node_modules/ml-levenberg-marquardt/lib-esm/checkOptions.js","../node_modules/ml-direct/src/util/antiLowerConvexHull.js","../node_modules/ml-direct/src/index.js","../node_modules/ml-spectra-fitting/lib-esm/util/wrappers/directOptimization.js","../node_modules/ml-spectra-fitting/lib-esm/index.js","../node_modules/ml-spectra-fitting/lib-esm/util/selectMethod.js","../node_modules/ml-spectra-fitting/lib-esm/shapes/getSumOfShapes.js","../node_modules/ml-gsd/lib-esm/utils/addMissingShape.js","../node_modules/ml-gsd/lib-esm/post/optimizePeaksWithLogs.js","../node_modules/ml-gsd/lib-esm/utils/groupPeaks.js","../node_modules/ml-gsd/lib-esm/utils/addMissingIDs.js","../node_modules/ml-gsd/lib-esm/post/joinBroadPeaks.js","../node_modules/ml-gsd/lib-esm/utils/setShape.js","../node_modules/ml-gsd/lib-esm/post/broadenPeaks.js","../node_modules/ml-gsd/lib-esm/gsd.js","../node_modules/ml-gsd/lib-esm/utils/optimizeTop.js","../node_modules/ml-gsd/lib-esm/post/optimizePeaks.js","../packages/ms-spectrum/lib/src/peakPicking.js","../node_modules/ml-regression-base/lib-esm/checkArrayLength.js","../node_modules/ml-regression-base/lib-esm/BaseRegression.js","../node_modules/ml-regression-base/lib-esm/maybeToPrecision.js","../node_modules/ml-regression-simple-linear/lib-esm/index.js","../node_modules/ml-regression-power/src/index.js","../packages/ms-spectrum/lib/src/peaksWidth.js","../packages/ms-spectrum/lib/src/Spectrum.js","../packages/ms-spectrum/lib/src/MSComparator.js","../packages/ms-spectrum/lib/src/jsgraph/getPeaksAnnotation.js","../packages/ms-spectrum/lib/src/jsgraph/index.js","../packages/emdb/lib/src/append/appendFragmentsInfo.js","../node_modules/sum-object-keys/lib/index.js","../packages/mf-generator/lib/src/generateMFs.js","../node_modules/openchemlib-utils/lib-esm/util/getXAtomicNumber.js","../node_modules/openchemlib-utils/lib-esm/util/isCsp3.js","../node_modules/openchemlib-utils/lib-esm/util/makeRacemic.js","../node_modules/openchemlib-utils/lib-esm/util/tagAtom.js","../node_modules/openchemlib-utils/lib-esm/hose/getHoseCodesForAtomsInternal.js","../node_modules/openchemlib-utils/lib-esm/util/getConnectivityMatrix.js","../node_modules/ml-floyd-warshall/lib-esm/index.js","../node_modules/openchemlib-utils/lib-esm/diastereotopic/getChiralOrHeterotopicCarbons.js","../node_modules/openchemlib-utils/lib-esm/diastereotopic/ensureHeterotopicChiralBonds.js","../node_modules/openchemlib-utils/lib-esm/topic/TopicMolecule.js","../node_modules/openchemlib-utils/lib-esm/path/getAllAtomsPaths.js","../node_modules/openchemlib-utils/lib-esm/topic/getMoleculeWithH.js","../node_modules/openchemlib-utils/lib-esm/topic/getXMolecule.js","../node_modules/openchemlib-utils/lib-esm/topic/getCanonizedDiaIDs.js","../node_modules/openchemlib-utils/lib-esm/topic/getCanonizedHoseCodes.js","../node_modules/openchemlib-utils/lib-esm/topic/getDiaIDsAndInfo.js","../node_modules/openchemlib-utils/lib-esm/topic/getHeterotopicSymmetryRanks.js","../node_modules/openchemlib-utils/lib-esm/util/getSymmetryRanks.js","../node_modules/openchemlib-utils/lib-esm/diastereotopic/getDiastereotopicAtomIDs.js","../node_modules/openchemlib-utils/lib-esm/diastereotopic/getDiastereotopicAtomIDsAndH.js","../node_modules/openchemlib-utils/lib-esm/diastereotopic/getGroupedDiastereotopicAtomIDs.js","../node_modules/openchemlib-utils/lib-esm/diastereotopic/groupDiastereotopicAtomIDs.js","../node_modules/openchemlib-utils/lib-esm/hose/getHoseCodesForAtoms.js","../node_modules/openchemlib-utils/lib-esm/hose/getHoseCodesForPath.js","../node_modules/openchemlib-utils/lib-esm/polymer/createPolymer.js","../node_modules/openchemlib-utils/lib-esm/util/combineSmiles.js","../node_modules/openchemlib-utils/lib-esm/util/dwar/utils/parseColumnbProperties.js","../node_modules/openchemlib-utils/lib-esm/util/dwar/utils/parseData.js","../node_modules/openchemlib-utils/lib-esm/util/dwar/parseDwar.js","../node_modules/openchemlib-utils/lib-esm/util/getAtomsInfo.js","../node_modules/openchemlib-utils/lib-esm/util/getImplicitHydrogensCount.js","../node_modules/openchemlib-utils/lib-esm/util/getMF.js","../node_modules/openchemlib-utils/lib-esm/util/getUnsaturation.js","../node_modules/openchemlib-utils/lib-esm/util/getNMRHints.js","../node_modules/openchemlib-utils/lib-esm/util/getProperties.js","../node_modules/openchemlib-utils/lib-esm/path/getPathsInfo.js","../node_modules/openchemlib-utils/lib-esm/util/getAtoms.js","../node_modules/openchemlib-utils/lib-esm/path/getPathAndTorsion.js","../node_modules/papaparse/papaparse.min.js","../node_modules/openchemlib-utils/lib-esm/db/utils/getMoleculeCreators.js","../node_modules/openchemlib-utils/lib-esm/db/utils/appendCSV.js","../node_modules/get-value/dist/index.mjs","../node_modules/sdf-parser/src/util/getMolecule.js","../node_modules/openchemlib-utils/lib-esm/db/utils/appendSDF.js","../node_modules/sdf-parser/src/parse.js","../node_modules/sdf-parser/src/getEntriesBoundaries.js","../node_modules/openchemlib-utils/lib-esm/util/noWait.js","../node_modules/openchemlib-utils/lib-esm/db/utils/search.js","../node_modules/openchemlib-utils/lib-esm/util/getRAtomicNumber.js","../node_modules/openchemlib-utils/lib-esm/reaction/utils/checkIfExistsOrAddInfo.js","../node_modules/openchemlib-utils/lib-esm/reaction/utils/applyOneReactantReactions.js","../node_modules/openchemlib-utils/lib-esm/reaction/utils/getFilteredTrees.js","../node_modules/openchemlib-utils/lib-esm/reaction/utils/getLeaves.js","../node_modules/openchemlib-utils/lib-esm/reaction/utils/getNodes.js","../node_modules/openchemlib-utils/lib-esm/reaction/Reactions.js","../node_modules/openchemlib-utils/lib-esm/reaction/utils/appendOCLReaction.js","../node_modules/openchemlib-utils/lib-esm/db/MoleculesDB.js","../node_modules/openchemlib-utils/lib-esm/db/utils/appendEntries.js","../node_modules/openchemlib-utils/lib-esm/db/utils/appendSmilesList.js","../node_modules/openchemlib-utils/lib-esm/db/utils/pushEntry.js","../node_modules/openchemlib-utils/lib-esm/db/utils/pushMoleculeInfo.js","../node_modules/openchemlib-utils/lib-esm/db/utils/appendColor.js","../node_modules/openchemlib-utils/lib-esm/fragment/fragmentAcyclicSingleBonds.js","../node_modules/openchemlib-utils/lib-esm/features/getAtomFeatures.js","../node_modules/openchemlib-utils/lib-esm/util/getCharge.js","../node_modules/openchemlib-utils/lib-esm/diastereotopic/getDiastereotopicAtomIDsFromMolfile.js","../node_modules/openchemlib-utils/lib-esm/hose/getHoseCodes.js","../node_modules/openchemlib-utils/lib-esm/hose/getHoseCodesAndInfo.js","../node_modules/openchemlib-utils/lib-esm/hose/getHoseCodesForAtom.js","../node_modules/openchemlib-utils/lib-esm/hose/getHoseCodesFromDiastereotopicID.js","../node_modules/openchemlib-utils/lib-esm/util/getMolfilesMapping.js","../node_modules/openchemlib-utils/lib-esm/util/getNextNMRHint.js","../node_modules/openchemlib-utils/lib-esm/path/getShortestPaths.js","../node_modules/openchemlib-utils/lib-esm/util/nbCHO.js","../node_modules/openchemlib-utils/lib-esm/util/nbCN.js","../node_modules/openchemlib-utils/lib-esm/util/nbCOOH.js","../node_modules/openchemlib-utils/lib-esm/util/nbLabileH.js","../node_modules/openchemlib-utils/lib-esm/util/nbNH2.js","../node_modules/openchemlib-utils/lib-esm/util/nbOH.js","../node_modules/openchemlib-utils/lib-esm/util/dwar/utils/getParts.js","../node_modules/openchemlib-utils/lib-esm/util/dwar/utils/getCamelCase.js","../node_modules/openchemlib-utils/lib-esm/diastereotopic/toDiastereotopicSVG.js","../node_modules/openchemlib-utils/lib-esm/util/toVisualizerMolfile.js","../node_modules/openchemlib-utils/lib-esm/util/toggleHydrogens.js","../packages/mass-fragmentation/lib/src/fragmentAcyclicBonds.js","../packages/mass-fragmentation/lib/src/utils/getRingsInfo.js","../packages/mass-fragmentation/lib/src/utils/getFragmentableRings.js","../packages/mass-fragmentation/lib/src/fragmentRings.js","../packages/mass-fragmentation/lib/src/fragment.js","../node_modules/openchemlib/dist/openchemlib-core.js","../node_modules/openchemlib/core.js","../packages/mass-fragmentation/lib/src/database/defaultDatabase.js","../packages/mass-fragmentation/lib/src/database/getDatabase.js","../packages/mass-fragmentation/lib/src/utils/getMasses.js","../packages/mass-fragmentation/lib/src/reactionFragmentation.js","../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/jsx-runtime.js","../node_modules/react/cjs/react.production.js","../node_modules/react/index.js","../node_modules/react-dom/cjs/react-dom.production.js","../node_modules/react-dom/index.js","../node_modules/scheduler/cjs/scheduler.production.js","../node_modules/scheduler/index.js","../node_modules/react-dom/cjs/react-dom-client.production.js","../node_modules/react-dom/client.js","../node_modules/react-tree-svg/lib-esm/data/calculatePosition.js","../node_modules/react-tree-svg/lib-esm/components/MultilineText.js","../node_modules/react-tree-svg/lib-esm/components/Text.js","../node_modules/react-tree-svg/lib-esm/components/Arrow.js","../node_modules/react-tree-svg/lib-esm/data/getArrows.js","../node_modules/react-tree-svg/lib-esm/data/getBoxes.js","../node_modules/react-tree-svg/lib-esm/data/prepareTree.js","../node_modules/react-tree-svg/lib-esm/components/MarkerDef.js","../node_modules/react-tree-svg/lib-esm/components/MarkerDef.utils.js","../node_modules/react-tree-svg/lib-esm/components/SVGBoxesTree.js","../node_modules/react-tree-svg/lib-esm/components/Rectangle.js","../node_modules/react-tree-svg/lib-esm/components/SVG.js","../node_modules/react-tree-svg/lib-esm/nodeRenderer/moleculeRenderer.js","../node_modules/react-tree-svg/lib-esm/render.js","../node_modules/react-tree-svg/lib-esm/nodeRenderer/taxonomyRenderer.js","../packages/mass-fragmentation/lib/src/getFragmentationSVG.js","../packages/emdb/lib/src/from/fromMolecules.js","../packages/nucleotide/lib/src/sequenceToMF.js","../packages/nucleotide/lib/src/furanThreeTerm.js","../packages/nucleotide/lib/src/addFiveTerm.js","../packages/nucleotide/lib/src/baseLoss.js","../packages/nucleotide/lib/src/addFiveTermBaseLoss.js","../packages/nucleotide/lib/src/addInternalTerm.js","../packages/nucleotide/lib/src/addThreeTerm.js","../packages/nucleotide/lib/src/addThreeTermBaseLoss.js","../packages/nucleotide/lib/src/generateFragments.js","../packages/emdb/lib/src/from/fromNucleicSequence.js","../packages/peptide/lib/src/aminoAcids.js","../packages/peptide/lib/src/isoElectricPoint.js","../packages/peptide/lib/src/splitPeptide.js","../packages/peptide/lib/src/allowNeutralLoss.js","../packages/peptide/lib/src/getAA.js","../packages/peptide/lib/src/chargePeptide.js","../packages/peptide/lib/src/sequenceToMF.js","../packages/peptide/lib/src/generatePeptideFragments.js","../packages/peptide/lib/src/digestPeptide.js","../packages/peptide/lib/src/index.js","../packages/emdb/lib/src/from/util/fragmentPeptide.js","../packages/emdb/lib/src/from/fromPeptidicSequence.js","../packages/emdb/lib/src/from/fromRange.js","../node_modules/jszip/dist/jszip.min.js","../packages/emdb/lib/src/util/fetchArrayBuffer.js","../packages/emdb/lib/src/loadCommercials.js","../packages/mf-from-google-sheet/lib/src/util/fetchText.js","../packages/mf-from-google-sheet/lib/src/index.js","../packages/emdb/lib/src/loadGoogleSheet.js","../packages/emdb/lib/src/loadKnapSack.js","../packages/emdb/lib/src/search.js","../packages/emdb/lib/src/searchMSEM.js","../node_modules/spectrum-generator/lib-esm/SpectrumGenerator.js","../node_modules/spectrum-generator/lib-esm/util/addBaseline.js","../node_modules/spectrum-generator/lib-esm/util/addNoise.js","../node_modules/spectrum-generator/lib-esm/Spectrum2DGenerator.js","../packages/isotopic-distribution/lib/src/utils/closestPointX.js","../packages/isotopic-distribution/lib/src/utils/joinX.js","../packages/isotopic-distribution/lib/src/utils/multiply.js","../packages/isotopic-distribution/lib/src/utils/power.js","../packages/isotopic-distribution/lib/src/Distribution.js","../packages/isotopic-distribution/lib/src/utils/getDerivedCompositionInfo.js","../packages/isotopic-distribution/lib/src/IsotopicDistribution.js","../packages/emdb/lib/src/searchSimilarity.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/ml-regression-theil-sen/src/index.js","../packages/emdb/lib/src/massShifts.js","../packages/emdb/lib/src/util/fetchJSON.js","../packages/emdb/lib/src/index.js","../packages/mf-from-ea/lib/src/preprocessEARanges.js","../packages/mf-from-ea/lib/src/index.js","../packages/mf-from-atomic-ratio/lib/src/mfFromAtomicRatio.js","../packages/octochemdb/lib/src/utils/appendAllDBRefs.js","../packages/octochemdb/lib/src/utils/appendURLs.js","../packages/octochemdb/lib/src/utils/fetchJSON.js","../packages/octochemdb/lib/src/utils/postFetchJSON.js","../packages/octochemdb/lib/src/utils/includeDBRefs.js","../packages/octochemdb/lib/src/utils/normalizeActivities.js","../packages/octochemdb/lib/src/activeOrNaturalDetails.js","../packages/octochemdb/lib/src/utils/parseMasses.js","../packages/octochemdb/lib/src/utils/getAllowedEMs.js","../packages/octochemdb/lib/src/utils/searchWithIonizations.js","../packages/octochemdb/lib/src/activesOrNaturals.js","../packages/octochemdb/lib/src/activesOrNaturalsByMF.js","../packages/octochemdb/lib/src/compoundsFromMF.js","../packages/octochemdb/lib/src/searchMasses.js","../packages/octochemdb/lib/src/massSpectra.js","../packages/octochemdb/lib/src/mfsFromEMs.js","../packages/octochemdb/lib/src/pubmedCompounds.js","../packages/octochemdb/lib/src/searchInSilicoSpectraByMF.js","../packages/octochemdb/lib/src/searchInSilicoSpectraByMasses.js","../packages/octochemdb/lib/src/OctoChemDB.js","../node_modules/@orama/orama/dist/browser/components/tokenizer/languages.js","../node_modules/@orama/orama/dist/browser/utils.js","../node_modules/@orama/orama/dist/browser/errors.js","../node_modules/@orama/orama/dist/browser/components/defaults.js","../node_modules/@orama/orama/dist/browser/components/internal-document-id-store.js","../node_modules/@orama/orama/dist/browser/components/documents-store.js","../node_modules/@orama/orama/dist/browser/components/plugins.js","../node_modules/@orama/orama/dist/browser/components/hooks.js","../node_modules/@orama/orama/dist/browser/trees/avl.js","../node_modules/@orama/orama/dist/browser/trees/flat.js","../node_modules/@orama/orama/dist/browser/components/levenshtein.js","../node_modules/@orama/orama/dist/browser/trees/radix.js","../node_modules/@orama/orama/dist/browser/trees/bkd.js","../node_modules/@orama/orama/dist/browser/trees/bool.js","../node_modules/@orama/orama/dist/browser/components/algorithms.js","../node_modules/@orama/orama/dist/browser/trees/vector.js","../node_modules/@orama/orama/dist/browser/components/index.js","../node_modules/@orama/orama/dist/browser/components/sorter.js","../node_modules/@orama/orama/dist/browser/components/tokenizer/diacritics.js","../node_modules/@orama/orama/dist/browser/components/tokenizer/english-stemmer.js","../node_modules/@orama/orama/dist/browser/components/tokenizer/index.js","../node_modules/@orama/orama/dist/browser/methods/create.js","../node_modules/@orama/orama/dist/browser/methods/docs.js","../node_modules/@orama/orama/dist/browser/constants.js","../node_modules/@orama/orama/dist/browser/types.js","../node_modules/@orama/orama/dist/browser/components/sync-blocking-checker.js","../node_modules/@orama/orama/dist/browser/methods/insert.js","../node_modules/@orama/orama/dist/browser/methods/remove.js","../node_modules/@orama/orama/dist/browser/components/facets.js","../node_modules/@orama/orama/dist/browser/components/groups.js","../node_modules/@orama/orama/dist/browser/methods/search-fulltext.js","../node_modules/@orama/orama/dist/browser/methods/search.js","../node_modules/@orama/orama/dist/browser/methods/search-vector.js","../node_modules/@orama/orama/dist/browser/methods/search-hybrid.js","../node_modules/@orama/orama/dist/browser/methods/answer-session.js","../node_modules/@orama/orama/dist/browser/methods/serialization.js","../node_modules/@orama/orama/dist/browser/methods/update.js","../packages/octochemdb/lib/src/summarizer/utils/getActivitiesDB.js","../packages/octochemdb/lib/src/summarizer/utils/getPatentsDB.js","../packages/octochemdb/lib/src/summarizer/utils/getPubmedsDB.js","../packages/octochemdb/lib/src/summarizer/utils/getTaxonomiesDB.js","../packages/octochemdb/lib/src/summarizer/utils/searchActivitiesDB.js","../packages/octochemdb/lib/src/summarizer/utils/searchPatentsDB.js","../packages/octochemdb/lib/src/summarizer/utils/searchPubmedsDB.js","../packages/octochemdb/lib/src/summarizer/utils/searchTaxonomiesDB.js","../packages/octochemdb/lib/src/summarizer/utils/summarizeEmptyTerms.js","../packages/octochemdb/lib/src/summarizer/ActiveOrNaturalSummarizer.js","../packages/octochemdb/lib/src/taxonomy/taxonomyRanks.js","../packages/octochemdb/lib/src/taxonomy/taxonomyComparator.js","../packages/octochemdb/lib/src/taxonomy/createTaxonomyTree.js","../packages/ms-report/lib/src/appendInternals.js","../packages/ms-report/lib/src/appendResidues.js","../node_modules/@svgdotjs/svg.js/dist/svg.node.cjs","../packages/ms-report/lib/src/getPaper.browser.js","../packages/ms-report/lib/src/appendResiduesPosition.js","../packages/ms-report/lib/src/appendResults.js","../packages/ms-report/lib/src/appendRows.js","../packages/ms-report/lib/src/appendRowsInformation.js","../packages/ms-report/lib/src/draw/addScript.js","../packages/ms-report/lib/src/draw/drawLabel.js","../packages/ms-report/lib/src/draw/drawInternals.js","../packages/ms-report/lib/src/draw/drawReplacements.js","../packages/ms-report/lib/src/draw/drawTerminals.js","../packages/ms-report/lib/src/draw/drawSequence.js","../packages/ms-report/lib/src/sequenceSVG.js","../node_modules/@lukeed/uuid/dist/index.js","../packages/mfs-deconvolution/lib/src/getPeakWidthFct.js","../node_modules/ml-fcnnls/lib-esm/util/sortCollectionSet.js","../node_modules/ml-fcnnls/lib-esm/cssls.js","../node_modules/ml-fcnnls/lib-esm/util/setDifference.js","../node_modules/ml-fcnnls/lib-esm/optimality.js","../node_modules/ml-fcnnls/lib-esm/util/selection.js","../node_modules/ml-fcnnls/lib-esm/fcnnls.js","../node_modules/ml-fcnnls/lib-esm/initialisation.js","../node_modules/ml-fcnnls/lib-esm/fcnnlsVector.js","../packages/mfs-deconvolution/lib/src/utils/splitMatrix.js","../packages/mfs-deconvolution/lib/src/utils/blockFcnnls.js","../packages/mfs-deconvolution/lib/src/mfsDeconvolution.js","../packages/mfs-deconvolution/lib/src/reconstruct.js","../packages/mass-tools/src/index.js"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","/**\n * Calculates reimAbsolute value of a complex spectrum.\n * @param data - complex spectrum\n * @returns - reimAbsolute value\n */\nexport function reimAbsolute(data) {\n    const length = data.re.length;\n    const re = data.re;\n    const im = data.im;\n    const newArray = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n        newArray[i] = Math.hypot(re[i], im[i]);\n    }\n    return newArray;\n}\n//# sourceMappingURL=reimAbsolute.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function\n * @param output - undefined or a new array\n * @param length - length of the output array\n * @returns\n */\nexport function getOutputArray(output, length) {\n    if (output !== undefined) {\n        if (!isAnyArray(output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        if (output.length !== length) {\n            throw new TypeError('the output array does not have the correct length');\n        }\n        return output;\n    }\n    else {\n        return new Float64Array(length);\n    }\n}\n//# sourceMappingURL=getOutputArray.js.map","/**\n * This function returns an array with absolute values.\n * @param array - array of data\n * @returns - array with absolute values\n */\nexport function xAbsolute(array) {\n    const tmpArray = array.slice();\n    for (let i = 0; i < tmpArray.length; i++) {\n        if (tmpArray[i] < 0)\n            tmpArray[i] *= -1;\n    }\n    return tmpArray;\n}\n//# sourceMappingURL=xAbsolute.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Calculates the median of an array.\n * @param input - Array containing values\n * @param options\n * @returns - median\n */\nexport function xMedian(input, options = {}) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    const { exact = false } = options || {};\n    const array = input.slice();\n    const middleIndex = calcMiddle(0, array.length - 1);\n    const median = quickSelect(array, middleIndex);\n    if (array.length % 2 === 1 || !exact) {\n        return median;\n    }\n    const medianNext = quickSelect(array, middleIndex + 1);\n    return (median + medianNext) / 2;\n}\nfunction quickSelect(array, middleIndex) {\n    let low = 0;\n    let high = array.length - 1;\n    let middle = 0;\n    let currentLow = 0;\n    let currentHigh = 0;\n    while (true) {\n        if (high <= low) {\n            return array[middleIndex];\n        }\n        if (high === low + 1) {\n            if (array[low] > array[high]) {\n                swap(array, low, high);\n            }\n            return array[middleIndex];\n        }\n        // Find median of low, middle and high items; swap into position low\n        middle = calcMiddle(low, high);\n        if (array[middle] > array[high])\n            swap(array, middle, high);\n        if (array[low] > array[high])\n            swap(array, low, high);\n        if (array[middle] > array[low])\n            swap(array, middle, low);\n        // Swap low item (now in position middle) into position (low+1)\n        swap(array, middle, low + 1);\n        // Nibble from each end towards middle, swapping items when stuck\n        currentLow = low + 1;\n        currentHigh = high;\n        while (true) {\n            do\n                currentLow++;\n            while (array[low] > array[currentLow]);\n            do\n                currentHigh--;\n            while (array[currentHigh] > array[low]);\n            if (currentHigh < currentLow) {\n                break;\n            }\n            swap(array, currentLow, currentHigh);\n        }\n        // Swap middle item (in position low) back into correct position\n        swap(array, low, currentHigh);\n        // Re-set active partition\n        if (currentHigh <= middleIndex) {\n            low = currentLow;\n        }\n        if (currentHigh >= middleIndex) {\n            high = currentHigh - 1;\n        }\n    }\n}\nfunction swap(array, i, j) {\n    const temp = array[j];\n    array[j] = array[i];\n    array[i] = temp;\n}\nfunction calcMiddle(i, j) {\n    return Math.floor((i + j) / 2);\n}\n//# sourceMappingURL=xMedian.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if the input is a non-empty array of numbers.\n * Only checks the first element.\n * @param input - Array to check.\n * @param options - Additional checks.\n */\nexport function xCheck(input, options = {}) {\n    const { minLength } = options;\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    if (typeof input[0] !== 'number') {\n        throw new TypeError('input must contain numbers');\n    }\n    if (minLength && input.length < minLength) {\n        throw new Error(`input must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xCheck.js.map","/**\n * Returns the closest index of a `target`\n * @param array - array of numbers\n * @param target - target\n * @param options\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\n        let low = 0;\n        let high = array.length - 1;\n        let middle = 0;\n        while (high - low > 1) {\n            middle = low + ((high - low) >> 1);\n            if (array[middle] < target) {\n                low = middle;\n            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\n            }\n        }\n        if (low < array.length - 1) {\n            if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n                return low;\n            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex } = options;\n    const { from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xAdd the first array by the second array or a constant value to each element of the first array\n * @param array1 - the first array\n * @param array2 - the second array or number\n * @returns the result of the addition\n */\nexport function xAdd(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xAdd.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from './getOutputArray';\n/**\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array\n * @param options - options\n */\nexport function xMultiply(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = Number(array2);\n    }\n    const array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xMultiply.js.map","import { xMultiply } from './xMultiply';\n/**\n * Dot product between two arrays.\n * @param A - First array.\n * @param B - Second array.\n */\nexport function xDotProduct(A, B) {\n    const g = xMultiply(A, B);\n    let result = 0;\n    for (let i = 0; i < A.length; i++) {\n        result += g[i];\n    }\n    return result;\n}\n//# sourceMappingURL=xDotProduct.js.map","import { xDotProduct } from './xDotProduct';\n/**\n * Calculates the cross-correlation between 2 arrays\n * @param A - fixed array\n * @param B - sweeping array\n * @param options - Options\n */\nexport function xCrossCorrelation(A, B, options = {}) {\n    const { tau = 1, lag = A.length - 1 } = options;\n    const result = new Float64Array(1 + (2 * lag) / tau);\n    if (A.length === B.length) {\n        const n = B.length;\n        const g = new Float64Array(2 * n);\n        const q = new Float64Array(2 * n);\n        for (let i = 0; i < n; i++) {\n            q[n + i] = B[i];\n        }\n        for (let i = n * 2 - (tau - 1); i > 0; i -= tau) {\n            let k = 0;\n            for (let j = i; j < n * 2; j++) {\n                g[k] = q[j];\n                k++;\n            }\n            const w = [];\n            for (let l = 0; l < n; l++) {\n                w[l] = g[l];\n            }\n            result[(k - (n - lag)) / tau] = xDotProduct(A, w);\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xCrossCorrelation.js.map","/**\n * Calculating the box plot of the array\n * @param array - data\n * @param options\n * @returns - q1, median, q3, min, max\n */\nexport function xBoxPlot(array, options = {}) {\n    const { allowSmallArray = false } = options;\n    if (array.length < 5) {\n        if (allowSmallArray) {\n            if (array.length === 0) {\n                throw new Error('can not calculate info if array is empty');\n            }\n        }\n        else {\n            throw new Error('can not calculate info if array contains less than 5 elements');\n        }\n    }\n    array = Float64Array.from(array).sort();\n    const info = {\n        q1: 0,\n        median: 0,\n        q3: 0,\n        min: array[0],\n        max: array.at(-1),\n    };\n    let q1max, q3min;\n    if (array.length % 2 === 1) {\n        // odd\n        const middle = (array.length - 1) / 2;\n        info.median = array[middle];\n        q1max = Math.max(middle - 1, 0);\n        q3min = Math.min(middle + 1, array.length - 1);\n    }\n    else {\n        // even\n        q3min = array.length / 2;\n        q1max = q3min - 1;\n        info.median = (array[q1max] + array[q3min]) / 2;\n    }\n    if (q1max % 2 === 0) {\n        info.q1 = array[q1max / 2];\n        info.q3 = array[(array.length + q3min - 1) / 2];\n    }\n    else {\n        info.q1 = (array[(q1max + 1) / 2] + array[(q1max - 1) / 2]) / 2;\n        const middleOver = (array.length + q3min) / 2;\n        info.q3 = (array[middleOver] + array[middleOver - 1]) / 2;\n    }\n    return info;\n}\n//# sourceMappingURL=xBoxPlot.js.map","/**\n * Check that two arrays have the same length.\n * @param array1 - First array.\n * @param array2 - Second array.\n */\nexport function xCheckLengths(array1, array2) {\n    if (array1.length !== array2.length) {\n        throw new TypeError('length of array1 and array2 must be identical');\n    }\n}\n//# sourceMappingURL=xCheckLengths.js.map","/**\n * Calculates the correlation between 2 vectors\n * https://en.wikipedia.org/wiki/Correlation_and_dependence\n * @param A - first array\n * @param B - sencond array\n */\nexport function xCorrelation(A, B) {\n    const n = A.length;\n    let sumA = 0;\n    let sumA2 = 0;\n    let sumB = 0;\n    let sumB2 = 0;\n    let sumAB = 0;\n    for (let i = 0; i < n; i++) {\n        const a = A[i];\n        const b = B[i];\n        sumA += a;\n        sumA2 += a ** 2;\n        sumB += b;\n        sumB2 += b ** 2;\n        sumAB += a * b;\n    }\n    return ((n * sumAB - sumA * sumB) /\n        (Math.sqrt(n * sumA2 - sumA ** 2) * Math.sqrt(n * sumB2 - sumB ** 2)));\n}\n//# sourceMappingURL=xCorrelation.js.map","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar isAnyArray = require('is-any-array');\nvar rescale = require('ml-array-rescale');\n\nconst indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\n/**\n * @this {Matrix}\n * @returns {string}\n */\nfunction inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nfunction inspectMatrixWithOptions(matrix, options = {}) {\n  const {\n    maxRows = 15,\n    maxColumns = 10,\n    maxNumSize = 8,\n    padMinus = 'auto',\n  } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n\n  if (padMinus === 'auto') {\n    padMinus = false;\n    loop: for (let i = 0; i < maxI; i++) {\n      for (let j = 0; j < maxJ; j++) {\n        if (matrix.get(i, j) < 0) {\n          padMinus = true;\n          break loop;\n        }\n      }\n    }\n  }\n\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize, padMinus));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize, padMinus) {\n  return (\n    num >= 0 && padMinus\n      ? ` ${formatNumber2(num, maxNumSize - 1)}`\n      : formatNumber2(num, maxNumSize)\n  ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n  // small.length numbers should be as is\n  let str = num.toString();\n  if (str.length <= len) return str;\n\n  // (7)'0.00123' is better then (7)'1.23e-2'\n  // (8)'0.000123' is worse then (7)'1.23e-3',\n  let fix = num.toFixed(len);\n  if (fix.length > len) {\n    fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n  }\n  if (\n    fix.length <= len &&\n    !fix.startsWith('0.000') &&\n    !fix.startsWith('-0.000')\n  ) {\n    return fix;\n  }\n\n  // well, if it's still too long the user should've used longer numbers\n  let exp = num.toExponential(len);\n  if (exp.length > len) {\n    exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n  }\n  return exp.slice(0);\n}\n\nfunction installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ** value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ** matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n}\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nfunction checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray.isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nfunction checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray.isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\n}\n\nfunction checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nfunction newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nfunction checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n\nfunction sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nfunction productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nfunction varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nfunction varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nfunction varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nfunction centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nfunction centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nfunction centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nfunction getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += matrix.get(i, j) ** 2 / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nfunction getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += matrix.get(i, j) ** 2 / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nfunction getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += matrix.get(i, j) ** 2 / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nfunction scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n\nclass AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isDistance() {\n    if (!this.isSymmetric()) return false;\n\n    for (let i = 0; i < this.rows; i++) {\n      if (this.get(i, i) !== 0) return false;\n    }\n\n    return true;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    switch (by) {\n      case 'row': {\n        const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[row]) {\n              max[row] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case 'column': {\n        const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[column]) {\n              max[column] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case undefined: {\n        let max = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max) {\n              max = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n\n    switch (by) {\n      case 'row': {\n        const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[row]) {\n              min[row] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case 'column': {\n        const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[column]) {\n              min[column] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case undefined: {\n        let min = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min) {\n              min = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    switch (type) {\n      case 'max':\n        return this.max();\n      case 'frobenius':\n        return Math.sqrt(this.dot(this));\n      default:\n        throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  mpow(scalar) {\n    if (!this.isSquare()) {\n      throw new RangeError('Matrix must be square');\n    }\n    if (!Number.isInteger(scalar) || scalar < 0) {\n      throw new RangeError('Exponent must be a non-negative integer');\n    }\n    // Russian Peasant exponentiation, i.e. exponentiation by squaring\n    let result = Matrix.eye(this.rows);\n    let bb = this;\n    // Note: Don't bit shift. In JS, that would truncate at 32 bits\n    for (let e = scalar; e >= 1; e /= 2) {\n      if ((e & 1) !== 0) {\n        result = result.mmul(bb);\n      }\n      bb = bb.mmul(bb);\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let result = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      result = result.setSubMatrix(c11, 0, 0);\n      result = result.setSubMatrix(c12, c11.rows, 0);\n      result = result.setSubMatrix(c21, 0, c11.columns);\n      result = result.setSubMatrix(c22, c11.rows, c11.columns);\n      return result.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min,\n          max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    return this.constructor.copy(this, new Matrix(this.rows, this.columns));\n  }\n\n  /**\n   * @template {AbstractMatrix} M\n   * @param {AbstractMatrix} from\n   * @param {M} to\n   * @return {M}\n   */\n  static copy(from, to) {\n    for (const [row, column, value] of from.entries()) {\n      to.set(row, column, value);\n    }\n\n    return to;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray.isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray.isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray.isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray.isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!isAnyArray.isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!isAnyArray.isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n\n  [Symbol.iterator]() {\n    return this.entries();\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield [row, column, value]\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *entries() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield [row, col, this.get(row, col)];\n      }\n    }\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield value\n   * @returns {Generator<number, void, void>}\n   */\n  *values() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield this.get(row, col);\n      }\n    }\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\nfunction isArrayOfNumbers(array) {\n  return array.every((element) => {\n    return typeof element === 'number';\n  });\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nclass Matrix extends AbstractMatrix {\n  /**\n   * @type {Float64Array[]}\n   */\n  data;\n\n  /**\n   * Init an empty matrix\n   * @param {number} nRows\n   * @param {number} nColumns\n   */\n  #initData(nRows, nColumns) {\n    this.data = [];\n\n    if (Number.isInteger(nColumns) && nColumns >= 0) {\n      for (let i = 0; i < nRows; i++) {\n        this.data.push(new Float64Array(nColumns));\n      }\n    } else {\n      throw new TypeError('nColumns must be a positive integer');\n    }\n\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      this.#initData(nRows.rows, nRows.columns);\n      Matrix.copy(nRows, this);\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      this.#initData(nRows, nColumns);\n    } else if (isAnyArray.isAnyArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        if (!isArrayOfNumbers(arrayData[i])) {\n          throw new TypeError('Input data contains non-numeric values');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n\n      this.rows = nRows;\n      this.columns = nColumns;\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n\n/**\n * @typedef {0 | 1 | number | boolean} Mask\n */\n\nclass SymmetricMatrix extends AbstractMatrix {\n  /** @type {Matrix} */\n  #matrix;\n\n  get size() {\n    return this.#matrix.size;\n  }\n\n  get rows() {\n    return this.#matrix.rows;\n  }\n\n  get columns() {\n    return this.#matrix.columns;\n  }\n\n  get diagonalSize() {\n    return this.rows;\n  }\n\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isSymmetricMatrix(value) {\n    return Matrix.isMatrix(value) && value.klassType === 'SymmetricMatrix';\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static zeros(diagonalSize) {\n    return new this(diagonalSize);\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static ones(diagonalSize) {\n    return new this(diagonalSize).fill(1);\n  }\n\n  /**\n   * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n   * @return {this}\n   */\n  constructor(diagonalSize) {\n    super();\n\n    if (Matrix.isMatrix(diagonalSize)) {\n      if (!diagonalSize.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n\n      this.#matrix = Matrix.copy(\n        diagonalSize,\n        new Matrix(diagonalSize.rows, diagonalSize.rows),\n      );\n    } else if (Number.isInteger(diagonalSize) && diagonalSize >= 0) {\n      this.#matrix = new Matrix(diagonalSize, diagonalSize);\n    } else {\n      this.#matrix = new Matrix(diagonalSize);\n\n      if (!this.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n    }\n  }\n\n  clone() {\n    const matrix = new SymmetricMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  toMatrix() {\n    return new Matrix(this);\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.#matrix.get(rowIndex, columnIndex);\n  }\n  set(rowIndex, columnIndex, value) {\n    // symmetric set\n    this.#matrix.set(rowIndex, columnIndex, value);\n    this.#matrix.set(columnIndex, rowIndex, value);\n\n    return this;\n  }\n\n  removeCross(index) {\n    // symmetric remove side\n    this.#matrix.removeRow(index);\n    this.#matrix.removeColumn(index);\n\n    return this;\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    const row = array.slice();\n    row.splice(index, 1);\n\n    this.#matrix.addRow(index, row);\n    this.#matrix.addColumn(index, array);\n\n    return this;\n  }\n\n  /**\n   * @param {Mask[]} mask\n   */\n  applyMask(mask) {\n    if (mask.length !== this.diagonalSize) {\n      throw new RangeError('Mask size do not match with matrix size');\n    }\n\n    // prepare sides to remove from matrix from mask\n    /** @type {number[]} */\n    const sidesToRemove = [];\n    for (const [index, passthroughs] of mask.entries()) {\n      if (passthroughs) continue;\n      sidesToRemove.push(index);\n    }\n    // to remove from highest to lowest for no mutation shifting\n    sidesToRemove.reverse();\n\n    // remove sides\n    for (const sideIndex of sidesToRemove) {\n      this.removeCross(sideIndex);\n    }\n\n    return this;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * iterate from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 1 2 3 4\n   * B 2 5 6 7\n   * C 3 6 8 9\n   * D 4 7 9 10\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n   *\n   * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n\n    /** @type {number[]} */\n    const compact = new Array((diagonalSize * (diagonalSize + 1)) / 2);\n    for (let col = 0, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   * @return {SymmetricMatrix}\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n    // compactSize = (sideSize * (sideSize + 1)) / 2\n    // https://mathsolver.microsoft.com/fr/solve-problem/y%20%3D%20%20x%20%60cdot%20%20%20%60frac%7B%20%20%60left(%20x%2B1%20%20%60right)%20%20%20%20%7D%7B%202%20%20%7D\n    // sideSize = (Sqrt(8 × compactSize + 1) - 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) - 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new SymmetricMatrix(diagonalSize);\n    for (let col = 0, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return matrix;\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield [row, column, value]\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightEntries() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield [row, col, value];\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield value\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightValues() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield value;\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n}\nSymmetricMatrix.prototype.klassType = 'SymmetricMatrix';\n\nclass DistanceMatrix extends SymmetricMatrix {\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isDistanceMatrix(value) {\n    return (\n      SymmetricMatrix.isSymmetricMatrix(value) &&\n      value.klassSubType === 'DistanceMatrix'\n    );\n  }\n\n  constructor(sideSize) {\n    super(sideSize);\n\n    if (!this.isDistance()) {\n      throw new TypeError('Provided arguments do no produce a distance matrix');\n    }\n  }\n\n  set(rowIndex, columnIndex, value) {\n    // distance matrix diagonal is 0\n    if (rowIndex === columnIndex) value = 0;\n\n    return super.set(rowIndex, columnIndex, value);\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    // ensure distance\n    array = array.slice();\n    array[index] = 0;\n\n    return super.addCross(index, array);\n  }\n\n  toSymmetricMatrix() {\n    return new SymmetricMatrix(this);\n  }\n\n  clone() {\n    const matrix = new DistanceMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      if (row === col) continue;\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * no diagonal (only zeros)\n   * iterable from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 0 1 2 3\n   * B 1 0 4 5\n   * C 2 4 0 6\n   * D 3 5 6 0\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n   *\n   * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n    const compactLength = ((diagonalSize - 1) * diagonalSize) / 2;\n\n    /** @type {number[]} */\n    const compact = new Array(compactLength);\n    for (let col = 1, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n\n    if (compactSize === 0) {\n      return new this(0);\n    }\n\n    // compactSize in Natural integer range ]0;∞]\n    // compactSize = (sideSize * (sideSize - 1)) / 2\n    // sideSize = (Sqrt(8 × compactSize + 1) + 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) + 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new this(diagonalSize);\n    for (let col = 1, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return matrix;\n  }\n}\nDistanceMatrix.prototype.klassSubType = 'DistanceMatrix';\n\nclass BaseView extends AbstractMatrix {\n  constructor(matrix, rows, columns) {\n    super();\n    this.matrix = matrix;\n    this.rows = rows;\n    this.columns = columns;\n  }\n}\n\nclass MatrixColumnView extends BaseView {\n  constructor(matrix, column) {\n    checkColumnIndex(matrix, column);\n    super(matrix, matrix.rows, 1);\n    this.column = column;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.column, value);\n    return this;\n  }\n\n  get(rowIndex) {\n    return this.matrix.get(rowIndex, this.column);\n  }\n}\n\nclass MatrixColumnSelectionView extends BaseView {\n  constructor(matrix, columnIndices) {\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, matrix.rows, columnIndices.length);\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n  }\n}\n\nclass MatrixFlipColumnView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n  }\n}\n\nclass MatrixFlipRowView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n  }\n}\n\nclass MatrixRowView extends BaseView {\n  constructor(matrix, row) {\n    checkRowIndex(matrix, row);\n    super(matrix, 1, matrix.columns);\n    this.row = row;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.row, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.row, columnIndex);\n  }\n}\n\nclass MatrixRowSelectionView extends BaseView {\n  constructor(matrix, rowIndices) {\n    checkRowIndices(matrix, rowIndices);\n    super(matrix, rowIndices.length, matrix.columns);\n    this.rowIndices = rowIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n  }\n}\n\nclass MatrixSelectionView extends BaseView {\n  constructor(matrix, rowIndices, columnIndices) {\n    checkRowIndices(matrix, rowIndices);\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, rowIndices.length, columnIndices.length);\n    this.rowIndices = rowIndices;\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n    );\n  }\n}\n\nclass MatrixSubView extends BaseView {\n  constructor(matrix, startRow, endRow, startColumn, endColumn) {\n    checkRange(matrix, startRow, endRow, startColumn, endColumn);\n    super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n    this.startRow = startRow;\n    this.startColumn = startColumn;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n    );\n  }\n}\n\nclass MatrixTransposeView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.columns, matrix.rows);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(columnIndex, rowIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(columnIndex, rowIndex);\n  }\n}\n\nclass WrapperMatrix1D extends AbstractMatrix {\n  constructor(data, options = {}) {\n    const { rows = 1 } = options;\n\n    if (data.length % rows !== 0) {\n      throw new Error('the data length is not divisible by the number of rows');\n    }\n    super();\n    this.rows = rows;\n    this.columns = data.length / rows;\n    this.data = data;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    this.data[index] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    return this.data[index];\n  }\n\n  _calculateIndex(row, column) {\n    return row * this.columns + column;\n  }\n}\n\nclass WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n\nfunction wrap(array, options) {\n  if (isAnyArray.isAnyArray(array)) {\n    if (array[0] && isAnyArray.isAnyArray(array[0])) {\n      return new WrapperMatrix2D(array);\n    } else {\n      return new WrapperMatrix1D(array, options);\n    }\n  } else {\n    throw new Error('the argument is not an array');\n  }\n}\n\nclass LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n\nfunction hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n\nclass QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n\nclass SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n\nfunction inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nfunction solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n\nfunction determinant(matrix) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isSquare()) {\n    if (matrix.columns === 0) {\n      return 1;\n    }\n\n    let a, b, c, d;\n    if (matrix.columns === 2) {\n      // 2 x 2 matrix\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(1, 0);\n      d = matrix.get(1, 1);\n\n      return a * d - b * c;\n    } else if (matrix.columns === 3) {\n      // 3 x 3 matrix\n      let subMatrix0, subMatrix1, subMatrix2;\n      subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n      subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n      subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(0, 2);\n\n      return (\n        a * determinant(subMatrix0) -\n        b * determinant(subMatrix1) +\n        c * determinant(subMatrix2)\n      );\n    } else {\n      // general purpose determinant using the LU decomposition\n      return new LuDecomposition(matrix).determinant;\n    }\n  } else {\n    throw Error('determinant can only be calculated for a square matrix');\n  }\n}\n\nfunction xrange(n, exception) {\n  let range = [];\n  for (let i = 0; i < n; i++) {\n    if (i !== exception) {\n      range.push(i);\n    }\n  }\n  return range;\n}\n\nfunction dependenciesOneRow(\n  error,\n  matrix,\n  index,\n  thresholdValue = 10e-10,\n  thresholdError = 10e-10,\n) {\n  if (error > thresholdError) {\n    return new Array(matrix.rows + 1).fill(0);\n  } else {\n    let returnArray = matrix.addRow(index, [0]);\n    for (let i = 0; i < returnArray.rows; i++) {\n      if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n        returnArray.set(i, 0, 0);\n      }\n    }\n    return returnArray.to1DArray();\n  }\n}\n\nfunction linearDependencies(matrix, options = {}) {\n  const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n  matrix = Matrix.checkMatrix(matrix);\n\n  let n = matrix.rows;\n  let results = new Matrix(n, n);\n\n  for (let i = 0; i < n; i++) {\n    let b = Matrix.columnVector(matrix.getRow(i));\n    let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n    let svd = new SingularValueDecomposition(Abis);\n    let x = svd.solve(b);\n    let error = Matrix.sub(b, Abis.mmul(x)).abs().max();\n    results.setRow(\n      i,\n      dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n    );\n  }\n  return results;\n}\n\nfunction pseudoInverse(matrix, threshold = Number.EPSILON) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isEmpty()) {\n    // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n    // (0xn)*(nx0)*(0xn) = 0xn\n    // (nx0)*(0xn)*(nx0) = nx0\n    return matrix.transpose();\n  }\n  let svdSolution = new SingularValueDecomposition(matrix, { autoTranspose: true });\n\n  let U = svdSolution.leftSingularVectors;\n  let V = svdSolution.rightSingularVectors;\n  let s = svdSolution.diagonal;\n\n  for (let i = 0; i < s.length; i++) {\n    if (Math.abs(s[i]) > threshold) {\n      s[i] = 1.0 / s[i];\n    } else {\n      s[i] = 0.0;\n    }\n  }\n\n  return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n\nfunction covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray.isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n  const { center = true } = options;\n  if (center) {\n    xMatrix = xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix = yMatrix.center('column');\n    }\n  }\n  const cov = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < cov.rows; i++) {\n    for (let j = 0; j < cov.columns; j++) {\n      cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n    }\n  }\n  return cov;\n}\n\nfunction correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray.isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n\n  const { center = true, scale = true } = options;\n  if (center) {\n    xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix.center('column');\n    }\n  }\n  if (scale) {\n    xMatrix.scale('column');\n    if (!yIsSame) {\n      yMatrix.scale('column');\n    }\n  }\n\n  const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n  const sdy = yIsSame\n    ? sdx\n    : yMatrix.standardDeviation('column', { unbiased: true });\n\n  const corr = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < corr.rows; i++) {\n    for (let j = 0; j < corr.columns; j++) {\n      corr.set(\n        i,\n        j,\n        corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n      );\n    }\n  }\n  return corr;\n}\n\nclass EigenvalueDecomposition {\n  constructor(matrix, options = {}) {\n    const { assumeSymmetric = false } = options;\n\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n    if (!matrix.isSquare()) {\n      throw new Error('Matrix is not a square matrix');\n    }\n\n    if (matrix.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let n = matrix.columns;\n    let V = new Matrix(n, n);\n    let d = new Float64Array(n);\n    let e = new Float64Array(n);\n    let value = matrix;\n    let i, j;\n\n    let isSymmetric = false;\n    if (assumeSymmetric) {\n      isSymmetric = true;\n    } else {\n      isSymmetric = matrix.isSymmetric();\n    }\n\n    if (isSymmetric) {\n      for (i = 0; i < n; i++) {\n        for (j = 0; j < n; j++) {\n          V.set(i, j, value.get(i, j));\n        }\n      }\n      tred2(n, e, d, V);\n      tql2(n, e, d, V);\n    } else {\n      let H = new Matrix(n, n);\n      let ort = new Float64Array(n);\n      for (j = 0; j < n; j++) {\n        for (i = 0; i < n; i++) {\n          H.set(i, j, value.get(i, j));\n        }\n      }\n      orthes(n, H, ort, V);\n      hqr2(n, e, d, V, H);\n    }\n\n    this.n = n;\n    this.e = e;\n    this.d = d;\n    this.V = V;\n  }\n\n  get realEigenvalues() {\n    return Array.from(this.d);\n  }\n\n  get imaginaryEigenvalues() {\n    return Array.from(this.e);\n  }\n\n  get eigenvectorMatrix() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    let n = this.n;\n    let e = this.e;\n    let d = this.d;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        X.set(i, j, 0);\n      }\n      X.set(i, i, d[i]);\n      if (e[i] > 0) {\n        X.set(i, i + 1, e[i]);\n      } else if (e[i] < 0) {\n        X.set(i, i - 1, e[i]);\n      }\n    }\n    return X;\n  }\n}\n\nfunction tred2(n, e, d, V) {\n  let f, g, h, i, j, k, hh, scale;\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n  }\n\n  for (i = n - 1; i > 0; i--) {\n    scale = 0;\n    h = 0;\n    for (k = 0; k < i; k++) {\n      scale = scale + Math.abs(d[k]);\n    }\n\n    if (scale === 0) {\n      e[i] = d[i - 1];\n      for (j = 0; j < i; j++) {\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n        V.set(j, i, 0);\n      }\n    } else {\n      for (k = 0; k < i; k++) {\n        d[k] /= scale;\n        h += d[k] * d[k];\n      }\n\n      f = d[i - 1];\n      g = Math.sqrt(h);\n      if (f > 0) {\n        g = -g;\n      }\n\n      e[i] = scale * g;\n      h = h - f * g;\n      d[i - 1] = f - g;\n      for (j = 0; j < i; j++) {\n        e[j] = 0;\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        V.set(j, i, f);\n        g = e[j] + V.get(j, j) * f;\n        for (k = j + 1; k <= i - 1; k++) {\n          g += V.get(k, j) * d[k];\n          e[k] += V.get(k, j) * f;\n        }\n        e[j] = g;\n      }\n\n      f = 0;\n      for (j = 0; j < i; j++) {\n        e[j] /= h;\n        f += e[j] * d[j];\n      }\n\n      hh = f / (h + h);\n      for (j = 0; j < i; j++) {\n        e[j] -= hh * d[j];\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        g = e[j];\n        for (k = j; k <= i - 1; k++) {\n          V.set(k, j, V.get(k, j) - (f * e[k] + g * d[k]));\n        }\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n      }\n    }\n    d[i] = h;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    V.set(n - 1, i, V.get(i, i));\n    V.set(i, i, 1);\n    h = d[i + 1];\n    if (h !== 0) {\n      for (k = 0; k <= i; k++) {\n        d[k] = V.get(k, i + 1) / h;\n      }\n\n      for (j = 0; j <= i; j++) {\n        g = 0;\n        for (k = 0; k <= i; k++) {\n          g += V.get(k, i + 1) * V.get(k, j);\n        }\n        for (k = 0; k <= i; k++) {\n          V.set(k, j, V.get(k, j) - g * d[k]);\n        }\n      }\n    }\n\n    for (k = 0; k <= i; k++) {\n      V.set(k, i + 1, 0);\n    }\n  }\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n    V.set(n - 1, j, 0);\n  }\n\n  V.set(n - 1, n - 1, 1);\n  e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n  let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2;\n\n  for (i = 1; i < n; i++) {\n    e[i - 1] = e[i];\n  }\n\n  e[n - 1] = 0;\n\n  let f = 0;\n  let tst1 = 0;\n  let eps = Number.EPSILON;\n\n  for (l = 0; l < n; l++) {\n    tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n    m = l;\n    while (m < n) {\n      if (Math.abs(e[m]) <= eps * tst1) {\n        break;\n      }\n      m++;\n    }\n\n    if (m > l) {\n      do {\n\n        g = d[l];\n        p = (d[l + 1] - g) / (2 * e[l]);\n        r = hypotenuse(p, 1);\n        if (p < 0) {\n          r = -r;\n        }\n\n        d[l] = e[l] / (p + r);\n        d[l + 1] = e[l] * (p + r);\n        dl1 = d[l + 1];\n        h = g - d[l];\n        for (i = l + 2; i < n; i++) {\n          d[i] -= h;\n        }\n\n        f = f + h;\n\n        p = d[m];\n        c = 1;\n        c2 = c;\n        c3 = c;\n        el1 = e[l + 1];\n        s = 0;\n        s2 = 0;\n        for (i = m - 1; i >= l; i--) {\n          c3 = c2;\n          c2 = c;\n          s2 = s;\n          g = c * e[i];\n          h = c * p;\n          r = hypotenuse(p, e[i]);\n          e[i + 1] = s * r;\n          s = e[i] / r;\n          c = p / r;\n          p = c * d[i] - s * g;\n          d[i + 1] = h + s * (c * g + s * d[i]);\n\n          for (k = 0; k < n; k++) {\n            h = V.get(k, i + 1);\n            V.set(k, i + 1, s * V.get(k, i) + c * h);\n            V.set(k, i, c * V.get(k, i) - s * h);\n          }\n        }\n\n        p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n        e[l] = s * p;\n        d[l] = c * p;\n      } while (Math.abs(e[l]) > eps * tst1);\n    }\n    d[l] = d[l] + f;\n    e[l] = 0;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    k = i;\n    p = d[i];\n    for (j = i + 1; j < n; j++) {\n      if (d[j] < p) {\n        k = j;\n        p = d[j];\n      }\n    }\n\n    if (k !== i) {\n      d[k] = d[i];\n      d[i] = p;\n      for (j = 0; j < n; j++) {\n        p = V.get(j, i);\n        V.set(j, i, V.get(j, k));\n        V.set(j, k, p);\n      }\n    }\n  }\n}\n\nfunction orthes(n, H, ort, V) {\n  let low = 0;\n  let high = n - 1;\n  let f, g, h, i, j, m;\n  let scale;\n\n  for (m = low + 1; m <= high - 1; m++) {\n    scale = 0;\n    for (i = m; i <= high; i++) {\n      scale = scale + Math.abs(H.get(i, m - 1));\n    }\n\n    if (scale !== 0) {\n      h = 0;\n      for (i = high; i >= m; i--) {\n        ort[i] = H.get(i, m - 1) / scale;\n        h += ort[i] * ort[i];\n      }\n\n      g = Math.sqrt(h);\n      if (ort[m] > 0) {\n        g = -g;\n      }\n\n      h = h - ort[m] * g;\n      ort[m] = ort[m] - g;\n\n      for (j = m; j < n; j++) {\n        f = 0;\n        for (i = high; i >= m; i--) {\n          f += ort[i] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (i = m; i <= high; i++) {\n          H.set(i, j, H.get(i, j) - f * ort[i]);\n        }\n      }\n\n      for (i = 0; i <= high; i++) {\n        f = 0;\n        for (j = high; j >= m; j--) {\n          f += ort[j] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (j = m; j <= high; j++) {\n          H.set(i, j, H.get(i, j) - f * ort[j]);\n        }\n      }\n\n      ort[m] = scale * ort[m];\n      H.set(m, m - 1, scale * g);\n    }\n  }\n\n  for (i = 0; i < n; i++) {\n    for (j = 0; j < n; j++) {\n      V.set(i, j, i === j ? 1 : 0);\n    }\n  }\n\n  for (m = high - 1; m >= low + 1; m--) {\n    if (H.get(m, m - 1) !== 0) {\n      for (i = m + 1; i <= high; i++) {\n        ort[i] = H.get(i, m - 1);\n      }\n\n      for (j = m; j <= high; j++) {\n        g = 0;\n        for (i = m; i <= high; i++) {\n          g += ort[i] * V.get(i, j);\n        }\n\n        g = g / ort[m] / H.get(m, m - 1);\n        for (i = m; i <= high; i++) {\n          V.set(i, j, V.get(i, j) + g * ort[i]);\n        }\n      }\n    }\n  }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n  let n = nn - 1;\n  let low = 0;\n  let high = nn - 1;\n  let eps = Number.EPSILON;\n  let exshift = 0;\n  let norm = 0;\n  let p = 0;\n  let q = 0;\n  let r = 0;\n  let s = 0;\n  let z = 0;\n  let iter = 0;\n  let i, j, k, l, m, t, w, x, y;\n  let ra, sa, vr, vi;\n  let notlast, cdivres;\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      d[i] = H.get(i, i);\n      e[i] = 0;\n    }\n\n    for (j = Math.max(i - 1, 0); j < nn; j++) {\n      norm = norm + Math.abs(H.get(i, j));\n    }\n  }\n\n  while (n >= low) {\n    l = n;\n    while (l > low) {\n      s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n      if (s === 0) {\n        s = norm;\n      }\n      if (Math.abs(H.get(l, l - 1)) < eps * s) {\n        break;\n      }\n      l--;\n    }\n\n    if (l === n) {\n      H.set(n, n, H.get(n, n) + exshift);\n      d[n] = H.get(n, n);\n      e[n] = 0;\n      n--;\n      iter = 0;\n    } else if (l === n - 1) {\n      w = H.get(n, n - 1) * H.get(n - 1, n);\n      p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n      q = p * p + w;\n      z = Math.sqrt(Math.abs(q));\n      H.set(n, n, H.get(n, n) + exshift);\n      H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n      x = H.get(n, n);\n\n      if (q >= 0) {\n        z = p >= 0 ? p + z : p - z;\n        d[n - 1] = x + z;\n        d[n] = d[n - 1];\n        if (z !== 0) {\n          d[n] = x - w / z;\n        }\n        e[n - 1] = 0;\n        e[n] = 0;\n        x = H.get(n, n - 1);\n        s = Math.abs(x) + Math.abs(z);\n        p = x / s;\n        q = z / s;\n        r = Math.sqrt(p * p + q * q);\n        p = p / r;\n        q = q / r;\n\n        for (j = n - 1; j < nn; j++) {\n          z = H.get(n - 1, j);\n          H.set(n - 1, j, q * z + p * H.get(n, j));\n          H.set(n, j, q * H.get(n, j) - p * z);\n        }\n\n        for (i = 0; i <= n; i++) {\n          z = H.get(i, n - 1);\n          H.set(i, n - 1, q * z + p * H.get(i, n));\n          H.set(i, n, q * H.get(i, n) - p * z);\n        }\n\n        for (i = low; i <= high; i++) {\n          z = V.get(i, n - 1);\n          V.set(i, n - 1, q * z + p * V.get(i, n));\n          V.set(i, n, q * V.get(i, n) - p * z);\n        }\n      } else {\n        d[n - 1] = x + p;\n        d[n] = x + p;\n        e[n - 1] = z;\n        e[n] = -z;\n      }\n\n      n = n - 2;\n      iter = 0;\n    } else {\n      x = H.get(n, n);\n      y = 0;\n      w = 0;\n      if (l < n) {\n        y = H.get(n - 1, n - 1);\n        w = H.get(n, n - 1) * H.get(n - 1, n);\n      }\n\n      if (iter === 10) {\n        exshift += x;\n        for (i = low; i <= n; i++) {\n          H.set(i, i, H.get(i, i) - x);\n        }\n        s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n        // eslint-disable-next-line no-multi-assign\n        x = y = 0.75 * s;\n        w = -0.4375 * s * s;\n      }\n\n      if (iter === 30) {\n        s = (y - x) / 2;\n        s = s * s + w;\n        if (s > 0) {\n          s = Math.sqrt(s);\n          if (y < x) {\n            s = -s;\n          }\n          s = x - w / ((y - x) / 2 + s);\n          for (i = low; i <= n; i++) {\n            H.set(i, i, H.get(i, i) - s);\n          }\n          exshift += s;\n          // eslint-disable-next-line no-multi-assign\n          x = y = w = 0.964;\n        }\n      }\n\n      iter = iter + 1;\n\n      m = n - 2;\n      while (m >= l) {\n        z = H.get(m, m);\n        r = x - z;\n        s = y - z;\n        p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n        q = H.get(m + 1, m + 1) - z - r - s;\n        r = H.get(m + 2, m + 1);\n        s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n        p = p / s;\n        q = q / s;\n        r = r / s;\n        if (m === l) {\n          break;\n        }\n        if (\n          Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n          eps *\n            (Math.abs(p) *\n              (Math.abs(H.get(m - 1, m - 1)) +\n                Math.abs(z) +\n                Math.abs(H.get(m + 1, m + 1))))\n        ) {\n          break;\n        }\n        m--;\n      }\n\n      for (i = m + 2; i <= n; i++) {\n        H.set(i, i - 2, 0);\n        if (i > m + 2) {\n          H.set(i, i - 3, 0);\n        }\n      }\n\n      for (k = m; k <= n - 1; k++) {\n        notlast = k !== n - 1;\n        if (k !== m) {\n          p = H.get(k, k - 1);\n          q = H.get(k + 1, k - 1);\n          r = notlast ? H.get(k + 2, k - 1) : 0;\n          x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n          if (x !== 0) {\n            p = p / x;\n            q = q / x;\n            r = r / x;\n          }\n        }\n\n        if (x === 0) {\n          break;\n        }\n\n        s = Math.sqrt(p * p + q * q + r * r);\n        if (p < 0) {\n          s = -s;\n        }\n\n        if (s !== 0) {\n          if (k !== m) {\n            H.set(k, k - 1, -s * x);\n          } else if (l !== m) {\n            H.set(k, k - 1, -H.get(k, k - 1));\n          }\n\n          p = p + s;\n          x = p / s;\n          y = q / s;\n          z = r / s;\n          q = q / p;\n          r = r / p;\n\n          for (j = k; j < nn; j++) {\n            p = H.get(k, j) + q * H.get(k + 1, j);\n            if (notlast) {\n              p = p + r * H.get(k + 2, j);\n              H.set(k + 2, j, H.get(k + 2, j) - p * z);\n            }\n\n            H.set(k, j, H.get(k, j) - p * x);\n            H.set(k + 1, j, H.get(k + 1, j) - p * y);\n          }\n\n          for (i = 0; i <= Math.min(n, k + 3); i++) {\n            p = x * H.get(i, k) + y * H.get(i, k + 1);\n            if (notlast) {\n              p = p + z * H.get(i, k + 2);\n              H.set(i, k + 2, H.get(i, k + 2) - p * r);\n            }\n\n            H.set(i, k, H.get(i, k) - p);\n            H.set(i, k + 1, H.get(i, k + 1) - p * q);\n          }\n\n          for (i = low; i <= high; i++) {\n            p = x * V.get(i, k) + y * V.get(i, k + 1);\n            if (notlast) {\n              p = p + z * V.get(i, k + 2);\n              V.set(i, k + 2, V.get(i, k + 2) - p * r);\n            }\n\n            V.set(i, k, V.get(i, k) - p);\n            V.set(i, k + 1, V.get(i, k + 1) - p * q);\n          }\n        }\n      }\n    }\n  }\n\n  if (norm === 0) {\n    return;\n  }\n\n  for (n = nn - 1; n >= 0; n--) {\n    p = d[n];\n    q = e[n];\n\n    if (q === 0) {\n      l = n;\n      H.set(n, n, 1);\n      for (i = n - 1; i >= 0; i--) {\n        w = H.get(i, i) - p;\n        r = 0;\n        for (j = l; j <= n; j++) {\n          r = r + H.get(i, j) * H.get(j, n);\n        }\n\n        if (e[i] < 0) {\n          z = w;\n          s = r;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n            t = (x * s - z * r) / q;\n            H.set(i, n, t);\n            H.set(\n              i + 1,\n              n,\n              Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n            );\n          }\n\n          t = Math.abs(H.get(i, n));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    } else if (q < 0) {\n      l = n - 1;\n\n      if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n        H.set(n - 1, n - 1, q / H.get(n, n - 1));\n        H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n      } else {\n        cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n        H.set(n - 1, n - 1, cdivres[0]);\n        H.set(n - 1, n, cdivres[1]);\n      }\n\n      H.set(n, n - 1, 0);\n      H.set(n, n, 1);\n      for (i = n - 2; i >= 0; i--) {\n        ra = 0;\n        sa = 0;\n        for (j = l; j <= n; j++) {\n          ra = ra + H.get(i, j) * H.get(j, n - 1);\n          sa = sa + H.get(i, j) * H.get(j, n);\n        }\n\n        w = H.get(i, i) - p;\n\n        if (e[i] < 0) {\n          z = w;\n          r = ra;\n          s = sa;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            cdivres = cdiv(-ra, -sa, w, q);\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n            vi = (d[i] - p) * 2 * q;\n            if (vr === 0 && vi === 0) {\n              vr =\n                eps *\n                norm *\n                (Math.abs(w) +\n                  Math.abs(q) +\n                  Math.abs(x) +\n                  Math.abs(y) +\n                  Math.abs(z));\n            }\n            cdivres = cdiv(\n              x * r - z * ra + q * sa,\n              x * s - z * sa - q * ra,\n              vr,\n              vi,\n            );\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n            if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n              H.set(\n                i + 1,\n                n - 1,\n                (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n              );\n              H.set(\n                i + 1,\n                n,\n                (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n              );\n            } else {\n              cdivres = cdiv(\n                -r - y * H.get(i, n - 1),\n                -s - y * H.get(i, n),\n                z,\n                q,\n              );\n              H.set(i + 1, n - 1, cdivres[0]);\n              H.set(i + 1, n, cdivres[1]);\n            }\n          }\n\n          t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n - 1, H.get(j, n - 1) / t);\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      for (j = i; j < nn; j++) {\n        V.set(i, j, H.get(i, j));\n      }\n    }\n  }\n\n  for (j = nn - 1; j >= low; j--) {\n    for (i = low; i <= high; i++) {\n      z = 0;\n      for (k = low; k <= Math.min(j, high); k++) {\n        z = z + V.get(i, k) * H.get(k, j);\n      }\n      V.set(i, j, z);\n    }\n  }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n  let r, d;\n  if (Math.abs(yr) > Math.abs(yi)) {\n    r = yi / yr;\n    d = yr + r * yi;\n    return [(xr + r * xi) / d, (xi - r * xr) / d];\n  } else {\n    r = yr / yi;\n    d = yi + r * yr;\n    return [(r * xr + xi) / d, (r * xi - xr) / d];\n  }\n}\n\nclass CholeskyDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n    if (!value.isSymmetric()) {\n      throw new Error('Matrix is not symmetric');\n    }\n\n    let a = value;\n    let dimension = a.rows;\n    let l = new Matrix(dimension, dimension);\n    let positiveDefinite = true;\n    let i, j, k;\n\n    for (j = 0; j < dimension; j++) {\n      let d = 0;\n      for (k = 0; k < j; k++) {\n        let s = 0;\n        for (i = 0; i < k; i++) {\n          s += l.get(k, i) * l.get(j, i);\n        }\n        s = (a.get(j, k) - s) / l.get(k, k);\n        l.set(j, k, s);\n        d = d + s * s;\n      }\n\n      d = a.get(j, j) - d;\n\n      positiveDefinite &&= d > 0;\n      l.set(j, j, Math.sqrt(Math.max(d, 0)));\n      for (k = j + 1; k < dimension; k++) {\n        l.set(j, k, 0);\n      }\n    }\n\n    this.L = l;\n    this.positiveDefinite = positiveDefinite;\n  }\n\n  isPositiveDefinite() {\n    return this.positiveDefinite;\n  }\n\n  solve(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let l = this.L;\n    let dimension = l.rows;\n\n    if (value.rows !== dimension) {\n      throw new Error('Matrix dimensions do not match');\n    }\n    if (this.isPositiveDefinite() === false) {\n      throw new Error('Matrix is not positive definite');\n    }\n\n    let count = value.columns;\n    let B = value.clone();\n    let i, j, k;\n\n    for (k = 0; k < dimension; k++) {\n      for (j = 0; j < count; j++) {\n        for (i = 0; i < k; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    for (k = dimension - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        for (i = k + 1; i < dimension; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    return B;\n  }\n\n  get lowerTriangularMatrix() {\n    return this.L;\n  }\n}\n\nclass nipals {\n  constructor(X, options = {}) {\n    X = WrapperMatrix2D.checkMatrix(X);\n    let { Y } = options;\n    const {\n      scaleScores = false,\n      maxIterations = 1000,\n      terminationCriteria = 1e-10,\n    } = options;\n\n    let u;\n    if (Y) {\n      if (isAnyArray.isAnyArray(Y) && typeof Y[0] === 'number') {\n        Y = Matrix.columnVector(Y);\n      } else {\n        Y = WrapperMatrix2D.checkMatrix(Y);\n      }\n      if (Y.rows !== X.rows) {\n        throw new Error('Y should have the same number of rows as X');\n      }\n      u = Y.getColumnVector(0);\n    } else {\n      u = X.getColumnVector(0);\n    }\n\n    let diff = 1;\n    let t, q, w, tOld;\n\n    for (\n      let counter = 0;\n      counter < maxIterations && diff > terminationCriteria;\n      counter++\n    ) {\n      w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n      w = w.div(w.norm());\n\n      t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n      if (counter > 0) {\n        diff = t.clone().sub(tOld).pow(2).sum();\n      }\n      tOld = t.clone();\n\n      if (Y) {\n        q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n        q = q.div(q.norm());\n\n        u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n      } else {\n        u = t;\n      }\n    }\n\n    if (Y) {\n      let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      p = p.div(p.norm());\n      let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n      let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      let yResidual = Y.clone().sub(\n        t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n      );\n\n      this.t = t;\n      this.p = p.transpose();\n      this.w = w.transpose();\n      this.q = q;\n      this.u = u;\n      this.s = t.transpose().mmul(t);\n      this.xResidual = xResidual;\n      this.yResidual = yResidual;\n      this.betas = residual;\n    } else {\n      this.w = w.transpose();\n      this.s = t.transpose().mmul(t).sqrt();\n      if (scaleScores) {\n        this.t = t.clone().div(this.s.get(0, 0));\n      } else {\n        this.t = t;\n      }\n      this.xResidual = X.sub(t.mmul(w.transpose()));\n    }\n  }\n}\n\nexports.AbstractMatrix = AbstractMatrix;\nexports.CHO = CholeskyDecomposition;\nexports.CholeskyDecomposition = CholeskyDecomposition;\nexports.DistanceMatrix = DistanceMatrix;\nexports.EVD = EigenvalueDecomposition;\nexports.EigenvalueDecomposition = EigenvalueDecomposition;\nexports.LU = LuDecomposition;\nexports.LuDecomposition = LuDecomposition;\nexports.Matrix = Matrix;\nexports.MatrixColumnSelectionView = MatrixColumnSelectionView;\nexports.MatrixColumnView = MatrixColumnView;\nexports.MatrixFlipColumnView = MatrixFlipColumnView;\nexports.MatrixFlipRowView = MatrixFlipRowView;\nexports.MatrixRowSelectionView = MatrixRowSelectionView;\nexports.MatrixRowView = MatrixRowView;\nexports.MatrixSelectionView = MatrixSelectionView;\nexports.MatrixSubView = MatrixSubView;\nexports.MatrixTransposeView = MatrixTransposeView;\nexports.NIPALS = nipals;\nexports.Nipals = nipals;\nexports.QR = QrDecomposition;\nexports.QrDecomposition = QrDecomposition;\nexports.SVD = SingularValueDecomposition;\nexports.SingularValueDecomposition = SingularValueDecomposition;\nexports.SymmetricMatrix = SymmetricMatrix;\nexports.WrapperMatrix1D = WrapperMatrix1D;\nexports.WrapperMatrix2D = WrapperMatrix2D;\nexports.correlation = correlation;\nexports.covariance = covariance;\nexports.default = Matrix;\nexports.determinant = determinant;\nexports.inverse = inverse;\nexports.linearDependencies = linearDependencies;\nexports.pseudoInverse = pseudoInverse;\nexports.solve = solve;\nexports.wrap = wrap;\n","import * as matrix from './matrix.js';\n\nexport const AbstractMatrix = matrix.AbstractMatrix;\nexport const CHO = matrix.CHO;\nexport const CholeskyDecomposition = matrix.CholeskyDecomposition;\nexport const DistanceMatrix = matrix.DistanceMatrix;\nexport const EVD = matrix.EVD;\nexport const EigenvalueDecomposition = matrix.EigenvalueDecomposition;\nexport const LU = matrix.LU;\nexport const LuDecomposition = matrix.LuDecomposition;\nexport const Matrix = matrix.Matrix;\nexport const MatrixColumnSelectionView = matrix.MatrixColumnSelectionView;\nexport const MatrixColumnView = matrix.MatrixColumnView;\nexport const MatrixFlipColumnView = matrix.MatrixFlipColumnView;\nexport const MatrixFlipRowView = matrix.MatrixFlipRowView;\nexport const MatrixRowSelectionView = matrix.MatrixRowSelectionView;\nexport const MatrixRowView = matrix.MatrixRowView;\nexport const MatrixSelectionView = matrix.MatrixSelectionView;\nexport const MatrixSubView = matrix.MatrixSubView;\nexport const MatrixTransposeView = matrix.MatrixTransposeView;\nexport const NIPALS = matrix.NIPALS;\nexport const Nipals = matrix.Nipals;\nexport const QR = matrix.QR;\nexport const QrDecomposition = matrix.QrDecomposition;\nexport const SVD = matrix.SVD;\nexport const SingularValueDecomposition = matrix.SingularValueDecomposition;\nexport const SymmetricMatrix = matrix.SymmetricMatrix;\nexport const WrapperMatrix1D = matrix.WrapperMatrix1D;\nexport const WrapperMatrix2D = matrix.WrapperMatrix2D;\nexport const correlation = matrix.correlation;\nexport const covariance = matrix.covariance;\nexport default matrix.default.Matrix ? matrix.default.Matrix : matrix.Matrix;\nexport const determinant = matrix.determinant;\nexport const inverse = matrix.inverse;\nexport const linearDependencies = matrix.linearDependencies;\nexport const pseudoInverse = matrix.pseudoInverse;\nexport const solve = matrix.solve;\nexport const wrap = matrix.wrap;\n","import { Matrix } from 'ml-matrix';\nconst absDiff = (a, b) => Math.abs(a - b);\n/**\n * Generate a cost matrix from two set of values using the function passed. by default it\n * generate the cost matrix of absolute value of differences.\n * @param rowsArray - Array of values that will represent the rows of the cost matrix.\n * @param columnsArray - Array of values that will represent the columns of the cost matrix.\n * @param options\n * @returns - A matrix instance with dimensions rowsArray.length x columnsArray.length\n */\nexport function xCostMatrix(rowsArray, columnsArray, options = {}) {\n    const { fct = absDiff } = options;\n    const nbRows = rowsArray.length;\n    const nbColumns = columnsArray.length;\n    const result = new Matrix(nbRows, nbColumns);\n    for (let r = 0; r < nbRows; r++) {\n        for (let c = 0; c < nbColumns; c++) {\n            result.set(r, c, fct(rowsArray[r], columnsArray[c]));\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xCostMatrix.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Calculate an array of the same size that is the cumulative values\n * @param array - initial array\n */\nexport function xCumulative(array) {\n    if (!isAnyArray(array)) {\n        throw new TypeError('input must be an array');\n    }\n    const newArray = new Float64Array(array.length);\n    if (array.length === 0)\n        return newArray;\n    newArray[0] = array[0];\n    for (let i = 1; i < array.length; i++) {\n        newArray[i] = newArray[i - 1] + array[i];\n    }\n    return newArray;\n}\n//# sourceMappingURL=xCumulative.js.map","import { xCheck } from './xCheck';\n/**\n * Returns a copy of the data as a Float64Array.\n * @param array - array of numbers\n */\nexport function xEnsureFloat64(array) {\n    xCheck(array);\n    if (array instanceof Float64Array) {\n        return array.slice(0);\n    }\n    return Float64Array.from(array);\n}\n//# sourceMappingURL=xEnsureFloat64.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n *  Returns the targetIndex\n * @param x - array of numbers\n * @param options - options\n */\nexport function xGetTargetIndex(x, options = {}) {\n    const { target, targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            return xFindClosestIndex(x, target);\n        }\n        else {\n            return 0;\n        }\n    }\n    return targetIndex;\n}\n//# sourceMappingURL=xGetTargetIndex.js.map","'use strict';\n\nfunction FFT(size) {\n  this.size = size | 0;\n  if (this.size <= 1 || (this.size & (this.size - 1)) !== 0)\n    throw new Error('FFT size must be a power of two and bigger than 1');\n\n  this._csize = size << 1;\n\n  // NOTE: Use of `var` is intentional for old V8 versions\n  var table = new Array(this.size * 2);\n  for (var i = 0; i < table.length; i += 2) {\n    const angle = Math.PI * i / this.size;\n    table[i] = Math.cos(angle);\n    table[i + 1] = -Math.sin(angle);\n  }\n  this.table = table;\n\n  // Find size's power of two\n  var power = 0;\n  for (var t = 1; this.size > t; t <<= 1)\n    power++;\n\n  // Calculate initial step's width:\n  //   * If we are full radix-4 - it is 2x smaller to give inital len=8\n  //   * Otherwise it is the same as `power` to give len=4\n  this._width = power % 2 === 0 ? power - 1 : power;\n\n  // Pre-compute bit-reversal patterns\n  this._bitrev = new Array(1 << this._width);\n  for (var j = 0; j < this._bitrev.length; j++) {\n    this._bitrev[j] = 0;\n    for (var shift = 0; shift < this._width; shift += 2) {\n      var revShift = this._width - shift - 2;\n      this._bitrev[j] |= ((j >>> shift) & 3) << revShift;\n    }\n  }\n\n  this._out = null;\n  this._data = null;\n  this._inv = 0;\n}\nmodule.exports = FFT;\n\nFFT.prototype.fromComplexArray = function fromComplexArray(complex, storage) {\n  var res = storage || new Array(complex.length >>> 1);\n  for (var i = 0; i < complex.length; i += 2)\n    res[i >>> 1] = complex[i];\n  return res;\n};\n\nFFT.prototype.createComplexArray = function createComplexArray() {\n  const res = new Array(this._csize);\n  for (var i = 0; i < res.length; i++)\n    res[i] = 0;\n  return res;\n};\n\nFFT.prototype.toComplexArray = function toComplexArray(input, storage) {\n  var res = storage || this.createComplexArray();\n  for (var i = 0; i < res.length; i += 2) {\n    res[i] = input[i >>> 1];\n    res[i + 1] = 0;\n  }\n  return res;\n};\n\nFFT.prototype.completeSpectrum = function completeSpectrum(spectrum) {\n  var size = this._csize;\n  var half = size >>> 1;\n  for (var i = 2; i < half; i += 2) {\n    spectrum[size - i] = spectrum[i];\n    spectrum[size - i + 1] = -spectrum[i + 1];\n  }\n};\n\nFFT.prototype.transform = function transform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._transform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.realTransform = function realTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._realTransform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.inverseTransform = function inverseTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 1;\n  this._transform4();\n  for (var i = 0; i < out.length; i++)\n    out[i] /= this.size;\n  this._out = null;\n  this._data = null;\n};\n\n// radix-4 implementation\n//\n// NOTE: Uses of `var` are intentional for older V8 version that do not\n// support both `let compound assignments` and `const phi`\nFFT.prototype._transform4 = function _transform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform2(outOff, off, step);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform4(outOff, off, step);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var quarterLen = len >>> 2;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      // Full case\n      var limit = outOff + quarterLen;\n      for (var i = outOff, k = 0; i < limit; i += 2, k += step) {\n        const A = i;\n        const B = A + quarterLen;\n        const C = B + quarterLen;\n        const D = C + quarterLen;\n\n        // Original values\n        const Ar = out[A];\n        const Ai = out[A + 1];\n        const Br = out[B];\n        const Bi = out[B + 1];\n        const Cr = out[C];\n        const Ci = out[C + 1];\n        const Dr = out[D];\n        const Di = out[D + 1];\n\n        // Middle values\n        const MAr = Ar;\n        const MAi = Ai;\n\n        const tableBr = table[k];\n        const tableBi = inv * table[k + 1];\n        const MBr = Br * tableBr - Bi * tableBi;\n        const MBi = Br * tableBi + Bi * tableBr;\n\n        const tableCr = table[2 * k];\n        const tableCi = inv * table[2 * k + 1];\n        const MCr = Cr * tableCr - Ci * tableCi;\n        const MCi = Cr * tableCi + Ci * tableCr;\n\n        const tableDr = table[3 * k];\n        const tableDi = inv * table[3 * k + 1];\n        const MDr = Dr * tableDr - Di * tableDi;\n        const MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        const T0r = MAr + MCr;\n        const T0i = MAi + MCi;\n        const T1r = MAr - MCr;\n        const T1i = MAi - MCi;\n        const T2r = MBr + MDr;\n        const T2i = MBi + MDi;\n        const T3r = inv * (MBr - MDr);\n        const T3i = inv * (MBi - MDi);\n\n        // Final values\n        const FAr = T0r + T2r;\n        const FAi = T0i + T2i;\n\n        const FCr = T0r - T2r;\n        const FCi = T0i - T2i;\n\n        const FBr = T1r + T3i;\n        const FBi = T1i - T3r;\n\n        const FDr = T1r - T3i;\n        const FDi = T1i + T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n        out[C] = FCr;\n        out[C + 1] = FCi;\n        out[D] = FDr;\n        out[D + 1] = FDi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleTransform2 = function _singleTransform2(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const evenI = data[off + 1];\n  const oddR = data[off + step];\n  const oddI = data[off + step + 1];\n\n  const leftR = evenR + oddR;\n  const leftI = evenI + oddI;\n  const rightR = evenR - oddR;\n  const rightI = evenI - oddI;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = leftI;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = rightI;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleTransform4 = function _singleTransform4(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Ai = data[off + 1];\n  const Br = data[off + step];\n  const Bi = data[off + step + 1];\n  const Cr = data[off + step2];\n  const Ci = data[off + step2 + 1];\n  const Dr = data[off + step3];\n  const Di = data[off + step3 + 1];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T0i = Ai + Ci;\n  const T1r = Ar - Cr;\n  const T1i = Ai - Ci;\n  const T2r = Br + Dr;\n  const T2i = Bi + Di;\n  const T3r = inv * (Br - Dr);\n  const T3i = inv * (Bi - Di);\n\n  // Final values\n  const FAr = T0r + T2r;\n  const FAi = T0i + T2i;\n\n  const FBr = T1r + T3i;\n  const FBi = T1i - T3r;\n\n  const FCr = T0r - T2r;\n  const FCi = T0i - T2i;\n\n  const FDr = T1r - T3i;\n  const FDi = T1i + T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = FAi;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = FCi;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n\n// Real input radix-4 implementation\nFFT.prototype._realTransform4 = function _realTransform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform2(outOff, off >>> 1, step >>> 1);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform4(outOff, off >>> 1, step >>> 1);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var halfLen = len >>> 1;\n    var quarterLen = halfLen >>> 1;\n    var hquarterLen = quarterLen >>> 1;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      for (var i = 0, k = 0; i <= hquarterLen; i += 2, k += step) {\n        var A = outOff + i;\n        var B = A + quarterLen;\n        var C = B + quarterLen;\n        var D = C + quarterLen;\n\n        // Original values\n        var Ar = out[A];\n        var Ai = out[A + 1];\n        var Br = out[B];\n        var Bi = out[B + 1];\n        var Cr = out[C];\n        var Ci = out[C + 1];\n        var Dr = out[D];\n        var Di = out[D + 1];\n\n        // Middle values\n        var MAr = Ar;\n        var MAi = Ai;\n\n        var tableBr = table[k];\n        var tableBi = inv * table[k + 1];\n        var MBr = Br * tableBr - Bi * tableBi;\n        var MBi = Br * tableBi + Bi * tableBr;\n\n        var tableCr = table[2 * k];\n        var tableCi = inv * table[2 * k + 1];\n        var MCr = Cr * tableCr - Ci * tableCi;\n        var MCi = Cr * tableCi + Ci * tableCr;\n\n        var tableDr = table[3 * k];\n        var tableDi = inv * table[3 * k + 1];\n        var MDr = Dr * tableDr - Di * tableDi;\n        var MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        var T0r = MAr + MCr;\n        var T0i = MAi + MCi;\n        var T1r = MAr - MCr;\n        var T1i = MAi - MCi;\n        var T2r = MBr + MDr;\n        var T2i = MBi + MDi;\n        var T3r = inv * (MBr - MDr);\n        var T3i = inv * (MBi - MDi);\n\n        // Final values\n        var FAr = T0r + T2r;\n        var FAi = T0i + T2i;\n\n        var FBr = T1r + T3i;\n        var FBi = T1i - T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n\n        // Output final middle point\n        if (i === 0) {\n          var FCr = T0r - T2r;\n          var FCi = T0i - T2i;\n          out[C] = FCr;\n          out[C + 1] = FCi;\n          continue;\n        }\n\n        // Do not overwrite ourselves\n        if (i === hquarterLen)\n          continue;\n\n        // In the flipped case:\n        // MAi = -MAi\n        // MBr=-MBi, MBi=-MBr\n        // MCr=-MCr\n        // MDr=MDi, MDi=MDr\n        var ST0r = T1r;\n        var ST0i = -T1i;\n        var ST1r = T0r;\n        var ST1i = -T0i;\n        var ST2r = -inv * T3i;\n        var ST2i = -inv * T3r;\n        var ST3r = -inv * T2i;\n        var ST3i = -inv * T2r;\n\n        var SFAr = ST0r + ST2r;\n        var SFAi = ST0i + ST2i;\n\n        var SFBr = ST1r + ST3i;\n        var SFBi = ST1i - ST3r;\n\n        var SA = outOff + quarterLen - i;\n        var SB = outOff + halfLen - i;\n\n        out[SA] = SFAr;\n        out[SA + 1] = SFAi;\n        out[SB] = SFBr;\n        out[SB + 1] = SFBi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleRealTransform2 = function _singleRealTransform2(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const oddR = data[off + step];\n\n  const leftR = evenR + oddR;\n  const rightR = evenR - oddR;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = 0;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleRealTransform4 = function _singleRealTransform4(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Br = data[off + step];\n  const Cr = data[off + step2];\n  const Dr = data[off + step3];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T1r = Ar - Cr;\n  const T2r = Br + Dr;\n  const T3r = inv * (Br - Dr);\n\n  // Final values\n  const FAr = T0r + T2r;\n\n  const FBr = T1r;\n  const FBi = -T3r;\n\n  const FCr = T0r - T2r;\n\n  const FDr = T1r;\n  const FDi = T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = 0;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n","export function createNumberArray(ArrayConstructor, length) {\n    if (ArrayConstructor === Array) {\n        return new ArrayConstructor(length).fill(0);\n    }\n    else {\n        return new ArrayConstructor(length);\n    }\n}\nexport function createDoubleArray(ArrayConstructor, length) {\n    if (ArrayConstructor === Array) {\n        return new ArrayConstructor(length).fill(0);\n    }\n    else {\n        return new ArrayConstructor(length);\n    }\n}\n//# sourceMappingURL=createArray.js.map","/**\n * Create an array with numbers between \"from\" and \"to\" of length \"length\"\n * @param options - options\n * @returns - array of distributed numbers between \"from\" and \"to\"\n */\nexport function createFromToArray(options = {}) {\n    const { from = 0, to = 1, length = 1000, includeFrom = true, includeTo = true, distribution = 'uniform', } = options;\n    const array = new Float64Array(length);\n    let div = length;\n    if (includeFrom && includeTo) {\n        div = length - 1;\n    }\n    else if ((!includeFrom && includeTo) || (includeFrom && !includeTo)) {\n        div = length;\n    }\n    else if (!includeFrom && !includeTo) {\n        div = length + 1;\n    }\n    const delta = (to - from) / div;\n    if (distribution === 'uniform') {\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * index;\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * (index + 1);\n                index++;\n            }\n        }\n    }\n    else if (distribution === 'log') {\n        const base = (to / from) ** (1 / div);\n        const firstExponent = Math.log(from) / Math.log(base);\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index);\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index + 1);\n                index++;\n            }\n        }\n    }\n    else {\n        throw new Error('distribution must be uniform or log');\n    }\n    return array;\n}\n//# sourceMappingURL=createFromToArray.js.map","const LOOP = 8;\nconst FLOAT_MUL = 1 / 16777216;\nconst sh1 = 15;\nconst sh2 = 18;\nconst sh3 = 11;\nfunction multiplyUint32(n, m) {\n    n >>>= 0;\n    m >>>= 0;\n    const nlo = n & 0xffff;\n    const nhi = n - nlo;\n    return (((nhi * m) >>> 0) + nlo * m) >>> 0;\n}\nexport class XSadd {\n    random;\n    state;\n    /**\n     * create an instance of XSadd with the specified seed\n     * @param [seed=Date.now()]\n     */\n    constructor(seed = Date.now()) {\n        this.state = new Uint32Array(4);\n        this.init(seed);\n        this.random = this.getFloat.bind(this);\n    }\n    /**\n     * Returns a 32-bit integer r (0 <= r < 2^32)\n     */\n    getUint32() {\n        this.nextState();\n        return (this.state[3] + this.state[2]) >>> 0;\n    }\n    /**\n     * Returns a floating point number r (0.0 <= r < 1.0)\n     */\n    getFloat() {\n        return (this.getUint32() >>> 8) * FLOAT_MUL;\n    }\n    init(seed) {\n        if (!Number.isInteger(seed)) {\n            throw new TypeError(\"seed must be an integer\");\n        }\n        this.state[0] = seed;\n        this.state[1] = 0;\n        this.state[2] = 0;\n        this.state[3] = 0;\n        for (let i = 1; i < LOOP; i++) {\n            this.state[i & 3] ^=\n                (i +\n                    multiplyUint32(1812433253, this.state[(i - 1) & 3] ^ ((this.state[(i - 1) & 3] >>> 30) >>> 0))) >>>\n                    0;\n        }\n        this.periodCertification();\n        for (let i = 0; i < LOOP; i++) {\n            this.nextState();\n        }\n    }\n    periodCertification() {\n        if (this.state[0] === 0 &&\n            this.state[1] === 0 &&\n            this.state[2] === 0 &&\n            this.state[3] === 0) {\n            this.state[0] = 88; // X\n            this.state[1] = 83; // S\n            this.state[2] = 65; // A\n            this.state[3] = 68; // D\n        }\n    }\n    nextState() {\n        let t = this.state[0];\n        t ^= t << sh1;\n        t ^= t >>> sh2;\n        t ^= this.state[3] << sh3;\n        this.state[0] = this.state[1];\n        this.state[1] = this.state[2];\n        this.state[2] = this.state[3];\n        this.state[3] = t;\n    }\n}\n//# sourceMappingURL=XSadd.js.map","import { XSadd } from 'ml-xsadd';\n/**\n * Create a random array of numbers of a specific length.\n * @param options\n * @returns - array of random floats normally distributed\n */\nexport function createRandomArray(options = {}) {\n    const { mean = 0, standardDeviation = 1, length = 1000, range = 1, seed, distribution = 'normal', } = options;\n    const generator = new XSadd(seed);\n    const returnArray = new Float64Array(length);\n    switch (distribution) {\n        case 'normal': {\n            const gaussianGenerator = new GaussianGenerator(mean, standardDeviation, generator);\n            for (let i = 0; i < length; i++) {\n                returnArray[i] = gaussianGenerator.generateGaussian();\n            }\n            break;\n        }\n        case 'uniform': {\n            for (let i = 0; i < length; i++) {\n                returnArray[i] = (generator.random() - 0.5) * range + mean;\n            }\n            break;\n        }\n        default: {\n            throw new Error(`unknown distribution: ${String(distribution)}`);\n        }\n    }\n    return returnArray;\n}\nclass GaussianGenerator {\n    #spare = 0;\n    #hasSpare = false;\n    #mean;\n    #standardDeviation;\n    #generator;\n    constructor(mean, standardDeviation, generator) {\n        this.#mean = mean;\n        this.#standardDeviation = standardDeviation;\n        this.#generator = generator;\n    }\n    generateGaussian() {\n        let val, u, v, s;\n        if (this.#hasSpare) {\n            this.#hasSpare = false;\n            val = this.#spare * this.#standardDeviation + this.#mean;\n        }\n        else {\n            do {\n                u = this.#generator.random() * 2 - 1;\n                v = this.#generator.random() * 2 - 1;\n                s = u * u + v * v;\n            } while (s >= 1 || s === 0);\n            s = Math.sqrt((-2 * Math.log(s)) / s);\n            this.#spare = v * s;\n            this.#hasSpare = true;\n            val = this.#mean + this.#standardDeviation * u * s;\n        }\n        return val;\n    }\n}\n//# sourceMappingURL=createRandomArray.js.map","/**\n * Check if a number is a power of two.\n * @param n\n */\nexport function isPowerOfTwo(n) {\n    return n !== 0 && (n & (n - 1)) === 0;\n}\n//# sourceMappingURL=isPowerOfTwo.js.map","/**\n * Get the size of the next power of two.\n * @param n\n */\nexport function nextPowerOfTwo(n) {\n    if (n === 0)\n        return 1;\n    n--;\n    n |= n >> 1;\n    n |= n >> 2;\n    n |= n >> 4;\n    n |= n >> 8;\n    n |= n >> 16;\n    return n + 1;\n}\n//# sourceMappingURL=nextPowerOfTwo.js.map","/**\n * Resolves all promises in an object recursively. The promise with be replaced by the resolved value.\n * The changes are therefore done in-place !\n * @param object\n * @returns\n */\nexport async function recursiveResolve(object) {\n    if (typeof object !== 'object')\n        return object;\n    const promises = [];\n    await appendPromises(object, promises);\n    await Promise.all(promises);\n    return object;\n}\nfunction appendPromises(object, promises) {\n    if (typeof object !== 'object')\n        return object;\n    for (const key in object) {\n        if (typeof object[key].then === 'function') {\n            promises.push(object[key].then((value) => (object[key] = value)));\n        }\n        else if (typeof object[key] === 'object') {\n            appendPromises(object[key], promises);\n        }\n    }\n    return object;\n}\n//# sourceMappingURL=recursiveResolve.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param array1 - the array that will be rotated\n * @param array2 - second array or number\n * @returns array after subtraction\n */\nexport function xSubtract(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = Number(array2);\n    }\n    const array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xSubtract.js.map","import { xAbsolute } from '../x/xAbsolute';\nimport { xMedian } from '../x/xMedian';\nimport { xSubtract } from '../x/xSubtract';\n/**\n * Calculate the weights based on the control points and the MAD between the original data and the new baseline.\n * MAD (Median Absolute Deviation) is more robust to outliers and\n * the factor (1.4826) makes MAD scaled to be equivalent to the standard deviation for\n * normal distributions. {@link https://en.m.wikipedia.org/wiki/Median_absolute_deviation}.\n * @param yData - The original data.\n * @param baseline - The new baseline calculated.\n * @param weights - The current weights to be updated.\n * @param options - Options for updating weights.\n * @returns new array of weights.\n */\nexport function calculateAdaptiveWeights(yData, baseline, weights, options) {\n    const { controlPoints, factorStd = 3, learningRate = 0.5, minWeight = 0.01, } = options;\n    const absResiduals = xAbsolute(xSubtract(yData, baseline));\n    const medAbsRes = xMedian(absResiduals);\n    const mad = 1.4826 * medAbsRes;\n    const threshold = factorStd * mad;\n    const rawWeights = new Float64Array(absResiduals.length);\n    for (let i = 0; i < absResiduals.length; i++) {\n        rawWeights[i] = Math.exp(-((absResiduals[i] / threshold) ** 2));\n    }\n    let maxWeight = Number.MIN_SAFE_INTEGER;\n    const newWeights = Float64Array.from(weights);\n    const oneMinusLearningRate = 1 - learningRate;\n    for (let i = 0; i < newWeights.length; i++) {\n        if (controlPoints && controlPoints[i] > 0)\n            continue;\n        const weight = Math.max(minWeight, oneMinusLearningRate * weights[i] + learningRate * rawWeights[i]);\n        newWeights[i] = weight;\n        maxWeight = Math.max(maxWeight, weight);\n    }\n    newWeights[0] = maxWeight;\n    newWeights[weights.length - 1] = maxWeight;\n    return newWeights;\n}\n//# sourceMappingURL=calculateAdaptiveWeights.js.map","import FFT from 'fft.js';\nimport { nextPowerOfTwo, isPowerOfTwo } from '../utils';\nimport { xCheck } from './xCheck';\n/**\n * Performs the Hilbert transform\n * @link https://en.wikipedia.org/wiki/Hilbert_transform\n * @param array - Array containing values\n * @param options\n * @returns A new vector with 90 degree shift regarding the phase of the original function\n */\nexport function xHilbertTransform(array, options = {}) {\n    xCheck(array);\n    const { forceFFT = false } = options;\n    const length = array.length;\n    if (isPowerOfTwo(length)) {\n        return hilbertTransformWithFFT(array);\n    }\n    else if (forceFFT) {\n        return resampling(hilbertTransformWithFFT(resampling(array, nextPowerOfTwo(length))), length);\n    }\n    else {\n        return hilbertTransform(array);\n    }\n}\n/**\n * Performs the discrete Hilbert transform using fast Fourier transform\n * @param array - Array containing values\n * @returns A new vector with 90 degree shift regarding the phase of the original function\n * @see DOI: 10.1109/TAU.1970.1162139 \"Discrete Hilbert transform\"\n */\nfunction hilbertTransformWithFFT(array) {\n    const length = array.length;\n    const fft = new FFT(length);\n    const fftResult = new Float64Array(length * 2);\n    fft.realTransform(fftResult, array);\n    fft.completeSpectrum(fftResult);\n    const multiplier = new Float64Array(length);\n    for (let i = 1; i < length; i++) {\n        multiplier[i] = Math.sign(length / 2 - i);\n    }\n    for (let i = 0; i < length; i++) {\n        fftResult[i * 2] *= multiplier[i];\n        fftResult[i * 2 + 1] *= multiplier[i];\n    }\n    const hilbertSignal = new Float64Array(length * 2);\n    fft.inverseTransform(hilbertSignal, fftResult);\n    const result = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n        result[i] = hilbertSignal[i * 2 + 1];\n    }\n    return result;\n}\n/**\n * Performs the discrete Hilbert transform\n * @param array - Array containing values\n * @param options\n * @param options.inClockwise\n * @returns A new vector with 90 degree shift regarding the phase of the original function\n */\nfunction hilbertTransform(array, options = {}) {\n    const { inClockwise = true } = options;\n    const input = [0, ...array, 0];\n    const result = new Float64Array(array.length);\n    for (let k = 1; k < input.length - 1; k++) {\n        let aSum = 0;\n        for (let i = 0; i < k - 1; i++) {\n            const log = Math.log((k - i) / (k - i - 1));\n            aSum += input[i] * log + (input[i + 1] - input[i]) * (-1 + (k - i) * log);\n        }\n        const b = input[k - 1] - input[k + 1];\n        let cSum = 0;\n        for (let i = k + 1; i < input.length - 1; i++) {\n            const log = Math.log((i - k) / (i - k + 1));\n            cSum += input[i] * log + (input[i - 1] - input[i]) * (1 + (i - k) * log);\n        }\n        result[k - 1] = ((inClockwise ? 1 : -1) * (aSum + b + cSum)) / Math.PI;\n    }\n    return result;\n}\n/**\n * Performs resampling of an input array to the desired length employing linear interpolation.\n * @param array - Array containing values.\n * @param length - The length of the resulting array.\n * @returns It returns a new array of the desired length.\n * @link https://en.wikipedia.org/wiki/Sample-rate_conversion\n */\nfunction resampling(array, length) {\n    xCheck(array);\n    const oldLength = array.length;\n    const ratio = (oldLength - 1) / (length - 1);\n    const result = new Float64Array(length);\n    let currentIndex = 0;\n    let floor = Math.floor(currentIndex);\n    let ceil = Math.min(Math.ceil(currentIndex), oldLength - 1);\n    let diff = currentIndex - floor;\n    for (let i = 0; i < length; i++) {\n        result[i] = array[floor] * (1 - diff) + array[ceil] * diff;\n        currentIndex += ratio;\n        floor = Math.floor(currentIndex);\n        ceil = Math.min(Math.ceil(currentIndex), oldLength - 1);\n        diff = currentIndex - floor;\n    }\n    return result;\n}\n//# sourceMappingURL=xHilbertTransform.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the maximal value of an array of values\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > maxValue) {\n            maxValue = array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxValue.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the minimal value of an array of values.\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMinValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < minValue) {\n            minValue = array[i];\n        }\n    }\n    return minValue;\n}\n//# sourceMappingURL=xMinValue.js.map","import { createFromToArray } from '../utils';\nimport { xAbsolute } from './xAbsolute';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xMinValue } from './xMinValue';\n/**\n * Calculates a histogram of defined number of slots\n * @param array - Array containing values\n * @param options - options\n * @returns - result of the histogram\n */\nexport function xHistogram(array, options = {}) {\n    xCheck(array);\n    const histogram = options.histogram;\n    const { centerX = true, nbSlots = histogram === undefined ? 256 : histogram.x.length, logBaseX, logBaseY, absolute = false, } = options;\n    if (absolute) {\n        array = xAbsolute(array);\n    }\n    if (logBaseX) {\n        array = array.slice();\n        const logOfBase = Math.log10(logBaseX);\n        for (let i = 0; i < array.length; i++) {\n            array[i] = Math.log10(array[i]) / logOfBase;\n        }\n    }\n    const { min = xMinValue(array), max = xMaxValue(array) } = options;\n    const slotSize = (max - min) / (nbSlots + Number.EPSILON);\n    const y = histogram === undefined ? new Float64Array(nbSlots) : histogram.y;\n    const x = histogram === undefined\n        ? Array.from(createFromToArray({\n            from: min + (centerX ? slotSize / 2 : 0),\n            to: max - (centerX ? slotSize / 2 : 0),\n            length: nbSlots,\n        }))\n        : histogram.x;\n    for (const element of array) {\n        const index = Math.max(Math.min(Math.floor((element - min - Number.EPSILON) / slotSize), nbSlots - 1), 0);\n        y[index]++;\n    }\n    if (logBaseY) {\n        const logOfBase = Math.log10(logBaseY);\n        for (let i = 0; i < y.length; i++) {\n            y[i] = Math.log10(y[i] + 1) / logOfBase;\n        }\n    }\n    return { x, y };\n}\n//# sourceMappingURL=xHistogram.js.map","/**\n * Check if the values are separated always by the same difference\n * @param array - Monotone growing array of number\n * @param options\n */\nexport function xIsEquallySpaced(array, options = {}) {\n    if (array.length < 3)\n        return true;\n    const { tolerance = 0.05 } = options;\n    let maxDx = 0;\n    let minDx = Number.MAX_SAFE_INTEGER;\n    for (let i = 0; i < array.length - 1; ++i) {\n        const absoluteDifference = array[i + 1] - array[i];\n        if (absoluteDifference < minDx) {\n            minDx = absoluteDifference;\n        }\n        if (absoluteDifference > maxDx) {\n            maxDx = absoluteDifference;\n        }\n    }\n    return (maxDx - minDx) / maxDx < tolerance;\n}\n//# sourceMappingURL=xIsEquallySpaced.js.map","/**\n * Returns true if x is monotonic.\n * @param array - array of numbers.\n * @returns 1 if monotonic increasing, -1 if monotonic decreasing, 0 if not monotonic.\n */\nexport function xIsMonotonic(array) {\n    if (array.length <= 2) {\n        return 1;\n    }\n    if (array[0] === array[1]) {\n        // maybe a constant series\n        for (let i = 1; i < array.length - 1; i++) {\n            if (array[i] !== array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    if (array[0] < array.at(-1)) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return 0;\n        }\n        return -1;\n    }\n}\n//# sourceMappingURL=xIsMonotonic.js.map","/**\n * Check the similarity between array created by xyMassCenterVector\n * @param array1\n * @param array2\n * @param options\n * @returns\n */\nexport function xMassCenterVectorSimilarity(array1, array2, options = {}) {\n    const { recenter = true, similarityFct = (a, b) => (a === b ? 1 : 0), } = options;\n    const depth1 = getDepth(array1);\n    const depth2 = getDepth(array2);\n    const depth = Math.min(depth1, depth2);\n    // need to copy the array because we shift the data in place if recenter is true\n    if (recenter) {\n        array1 = array1.slice();\n    }\n    let similarity = 0;\n    // we will compare level by level\n    // and recenter the array at each level\n    for (let level = 0; level < depth; level++) {\n        const maxSimilarity = 1 / depth / (1 << level);\n        for (let slot = 0; slot < 1 << level; slot++) {\n            const index = (1 << level) - 1 + slot;\n            const value1 = array1[index];\n            const value2 = array2[index];\n            similarity += similarityFct(value1, value2) * maxSimilarity;\n            if (recenter) {\n                shiftSubTree(array1, depth, level, slot, value2 - value1);\n            }\n        }\n    }\n    return similarity;\n}\nfunction shiftSubTree(array, depth, level, slot, shift) {\n    for (let currentLevel = level; currentLevel < depth; currentLevel++) {\n        const levelSlotShift = slot * (1 << (currentLevel - level));\n        const levelShift = (1 << currentLevel) - 1;\n        const levelSlotSize = 1 << (currentLevel - level);\n        for (let slotIndex = levelSlotShift; slotIndex < levelSlotShift + levelSlotSize; slotIndex++) {\n            const index = levelShift + slotIndex;\n            array[index] += shift;\n        }\n    }\n}\nfunction getDepth(array) {\n    const depth = Math.log2(array.length + 1);\n    if (depth % 1 !== 0) {\n        throw new Error('the array length is not a power of 2 minus 1');\n    }\n    return depth;\n}\n//# sourceMappingURL=xMassCenterVectorSimilarity.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the mean value of an array of values.\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMean(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue / (toIndex - fromIndex + 1);\n}\n//# sourceMappingURL=xMean.js.map","import { xMedian } from './xMedian';\n/**\n * This function calculates the median absolute deviation (MAD).\n * https://en.wikipedia.org/wiki/Median_absolute_deviation\n * @param array\n */\nexport function xMedianAbsoluteDeviation(array) {\n    const median = xMedian(array);\n    const averageDeviations = new Float64Array(array.length);\n    for (let i = 0; i < array.length; i++) {\n        averageDeviations[i] = Math.abs(array[i] - median);\n    }\n    return {\n        median,\n        mad: xMedian(averageDeviations),\n    };\n}\n//# sourceMappingURL=xMedianAbsoluteDeviation.js.map","import { xCheck } from './xCheck';\n/**\n * Return min and max values of an array.\n * @param array - array of number\n * @returns - Object with 2 properties, min and max.\n */\nexport function xMinMaxValues(array) {\n    xCheck(array);\n    let min = array[0];\n    let max = array[0];\n    for (const value of array) {\n        if (value < min)\n            min = value;\n        if (value > max)\n            max = value;\n    }\n    return { min, max };\n}\n//# sourceMappingURL=xMinMaxValues.js.map","/*\nAdapted from: https://github.com/compute-io/erfcinv/blob/aa116e23883839359e310ad41a7c42f72815fc1e/lib/number.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 The Compute.io Authors. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nBoost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:\n\nThe copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n// Coefficients for erfcinv on [0, 0.5]:\nconst Y1 = 8.91314744949340820313e-2;\nconst P1 = [\n    -5.38772965071242932965e-3, 8.22687874676915743155e-3,\n    2.19878681111168899165e-2, -3.65637971411762664006e-2,\n    -1.26926147662974029034e-2, 3.34806625409744615033e-2,\n    -8.36874819741736770379e-3, -5.08781949658280665617e-4,\n];\nconst Q1 = [\n    8.86216390456424707504e-4, -2.33393759374190016776e-3,\n    7.95283687341571680018e-2, -5.27396382340099713954e-2,\n    -7.1228902341542847553e-1, 6.62328840472002992063e-1, 1.56221558398423026363,\n    -1.56574558234175846809, -9.70005043303290640362e-1, 1,\n];\n// Coefficients for erfcinv for 0.5 > 1-x >= 0:\nconst Y2 = 2.249481201171875;\nconst P2 = [\n    -3.67192254707729348546, 2.11294655448340526258e1, 1.7445385985570866523e1,\n    -4.46382324441786960818e1, -1.88510648058714251895e1,\n    1.76447298408374015486e1, 8.37050328343119927838, 1.05264680699391713268e-1,\n    -2.02433508355938759655e-1,\n];\nconst Q2 = [\n    1.72114765761200282724, -2.26436933413139721736e1, 1.08268667355460159008e1,\n    4.85609213108739935468e1, -2.01432634680485188801e1,\n    -2.86608180499800029974e1, 3.9713437953343869095, 6.24264124854247537712, 1,\n];\n// Coefficients for erfcinv for sqrt( -log(1-x)):\nconst Y3 = 8.07220458984375e-1;\nconst P3 = [\n    -6.81149956853776992068e-10, 2.85225331782217055858e-8,\n    -6.79465575181126350155e-7, 2.14558995388805277169e-3,\n    2.90157910005329060432e-2, 1.42869534408157156766e-1,\n    3.37785538912035898924e-1, 3.87079738972604337464e-1,\n    1.17030156341995252019e-1, -1.63794047193317060787e-1,\n    -1.31102781679951906451e-1,\n];\nconst Q3 = [\n    1.105924229346489121e-2, 1.52264338295331783612e-1, 8.48854343457902036425e-1,\n    2.59301921623620271374, 4.77846592945843778382, 5.38168345707006855425,\n    3.46625407242567245975, 1,\n];\nconst Y4 = 9.3995571136474609375e-1;\nconst P4 = [\n    2.66339227425782031962e-12, -2.30404776911882601748e-10,\n    4.60469890584317994083e-6, 1.57544617424960554631e-4,\n    1.87123492819559223345e-3, 9.50804701325919603619e-3,\n    1.85573306514231072324e-2, -2.22426529213447927281e-3,\n    -3.50353787183177984712e-2,\n];\nconst Q4 = [\n    7.64675292302794483503e-5, 2.63861676657015992959e-3,\n    3.41589143670947727934e-2, 2.20091105764131249824e-1,\n    7.62059164553623404043e-1, 1.3653349817554063097, 1,\n];\nconst Y5 = 9.8362827301025390625e-1;\nconst P5 = [\n    9.9055709973310326855e-17, -2.81128735628831791805e-14,\n    4.62596163522878599135e-9, 4.49696789927706453732e-7,\n    1.49624783758342370182e-5, 2.09386317487588078668e-4,\n    1.05628862152492910091e-3, -1.12951438745580278863e-3,\n    -1.67431005076633737133e-2,\n];\nconst Q5 = [\n    2.82243172016108031869e-7, 2.75335474764726041141e-5,\n    9.64011807005165528527e-4, 1.60746087093676504695e-2,\n    1.38151865749083321638e-1, 5.91429344886417493481e-1, 1,\n];\n/**\n * Polyval.\n * @param c - Array of Number.\n * @param x - Number.\n * @returns Number.\n */\nfunction polyval(c, x) {\n    let p = 0;\n    for (const coef of c) {\n        p = p * x + coef;\n    }\n    return p;\n}\n/**\n * Calculates a rational approximation.\n * @private\n * @param x - Number.\n * @param v - Number.\n * @param P - Array of polynomial coefficients.\n * @param Q - Array of polynomial coefficients.\n * @param Y - Number.\n * @returns Rational approximation.\n */\nfunction calc(x, v, P, Q, Y) {\n    const s = x - v;\n    const r = polyval(P, s) / polyval(Q, s);\n    return Y * x + r * x;\n}\n/**\n * Evaluates the complementary inverse error function for an input value.\n * @private\n * @param x - Input value.\n * @returns Evaluated complementary inverse error function.\n */\nexport default function erfcinv(x) {\n    let sign = false;\n    let val;\n    let q;\n    let g;\n    let r;\n    // [1] Special cases...\n    // NaN:\n    if (Number.isNaN(x)) {\n        return Number.NaN;\n    }\n    // x not on the interval: [0,2]\n    if (x < 0 || x > 2) {\n        throw new RangeError(`erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`);\n    }\n    if (x === 0) {\n        return Number.POSITIVE_INFINITY;\n    }\n    if (x === 2) {\n        return Number.NEGATIVE_INFINITY;\n    }\n    if (x === 1) {\n        return 0;\n    }\n    // [2] Get the sign and make use of `erfc` reflection formula: `erfc(-z)=2 - erfc(z)`...\n    if (x > 1) {\n        q = 2 - x;\n        x = 1 - q;\n        sign = true;\n    }\n    else {\n        q = x;\n        x = 1 - x;\n    }\n    // [3] |x| <= 0.5\n    if (x <= 0.5) {\n        g = x * (x + 10);\n        r = polyval(P1, x) / polyval(Q1, x);\n        val = g * Y1 + g * r;\n        return sign ? -val : val;\n    }\n    // [4] 1-|x| >= 0.25\n    if (q >= 0.25) {\n        g = Math.sqrt(-2 * Math.log(q));\n        q = q - 0.25;\n        r = polyval(P2, q) / polyval(Q2, q);\n        val = g / (Y2 + r);\n        return sign ? -val : val;\n    }\n    q = Math.sqrt(-Math.log(q));\n    // [5] q < 3\n    if (q < 3) {\n        return calc(q, 1.125, P3, Q3, Y3);\n    }\n    // [6] q < 6\n    if (q < 6) {\n        return calc(q, 3, P4, Q4, Y4);\n    }\n    // Note that the smallest number in JavaScript is 5e-324. Math.sqrt( -Math.log( 5e-324 ) ) ~27.2844\n    return calc(q, 6, P5, Q5, Y5);\n    // Note that in the boost library, they are able to go to much smaller values, as 128 bit long doubles support ~1e-5000; something which JavaScript does not natively support.\n}\n//# sourceMappingURL=erfcinv.js.map","import erfcinv from './erfcinv';\n/**\n * Applies a simple normalization inverse transformation to the input data.\n * @param data - The input array of numbers to be transformed.\n * @param options - Optional parameters for the transformation.\n * @returns A new Float64Array containing the transformed data.\n */\nexport function simpleNormInv(data, options = {}) {\n    const { magnitudeMode = false } = options;\n    const result = new Float64Array(data.length);\n    if (magnitudeMode) {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -Math.sqrt(-2 * Math.log(1 - data[i]));\n        }\n    }\n    else {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -1 * Math.SQRT2 * erfcinv(2 * data[i]);\n        }\n    }\n    return result;\n}\n/**\n * Convenience wrapper for single number processing by simpleNormInv function.\n * @param data - The number to be normalized.\n * @param options - The options for the normalization process.\n * @returns The normalized number.\n */\nexport function simpleNormInvNumber(data, options = {}) {\n    return simpleNormInv([data], options)[0];\n}\n//# sourceMappingURL=simpleNormInv.js.map","import { isAnyArray } from 'is-any-array';\nimport { createFromToArray } from '../utils';\nimport { simpleNormInvNumber } from './utils/simpleNormInv';\nimport { xEnsureFloat64 } from './xEnsureFloat64';\n/**\n * Determine noise level by san plot methodology (https://doi.org/10.1002/mrc.4882)\n * @param array - real or magnitude spectra data.\n * @param options - options\n * @returns noise level\n */\nexport function xNoiseSanPlot(array, options = {}) {\n    const { mask, cutOff, refine = true, magnitudeMode = false, scaleFactor = 1, factorStd = 5, fixOffset = true, } = options;\n    const input = prepareData(array, { scaleFactor, mask });\n    if (fixOffset && !magnitudeMode) {\n        const medianIndex = Math.floor(input.length / 2);\n        const median = input.length % 2 === 0\n            ? 0.5 * (input[medianIndex - 1] + input[medianIndex])\n            : input[medianIndex];\n        for (let i = 0; i < input.length; i++) {\n            input[i] -= median;\n        }\n    }\n    const firstNegativeValueIndex = input.at(-1) >= 0\n        ? input.length\n        : input.findIndex((e) => e < 0);\n    let lastPositiveValueIndex = firstNegativeValueIndex - 1;\n    for (let i = lastPositiveValueIndex; i >= 0; i--) {\n        if (input[i] > 0) {\n            lastPositiveValueIndex = i;\n            break;\n        }\n    }\n    const signPositive = input.slice(0, lastPositiveValueIndex + 1);\n    const signNegative = input.slice(firstNegativeValueIndex);\n    const cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n    const pIndex = Math.floor(signPositive.length * cutOffDist);\n    const initialNoiseLevelPositive = signPositive[pIndex];\n    const skyPoint = signPositive[0];\n    let initialNoiseLevelNegative;\n    if (signNegative.length > 0) {\n        const nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n        initialNoiseLevelNegative = -1 * signNegative[nIndex];\n    }\n    else {\n        initialNoiseLevelNegative = 0;\n    }\n    let noiseLevelPositive = initialNoiseLevelPositive;\n    let noiseLevelNegative = initialNoiseLevelNegative;\n    let cloneSignPositive = signPositive.slice();\n    let cloneSignNegative = signNegative.slice();\n    let cutOffSignalsIndexPlus = 0;\n    let cutOffSignalsIndexNeg = 2;\n    if (refine) {\n        let cutOffSignals = noiseLevelPositive * factorStd;\n        cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexPlus > -1) {\n            cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n            noiseLevelPositive =\n                cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n        }\n        cutOffSignals = noiseLevelNegative * factorStd;\n        cutOffSignalsIndexNeg = signNegative.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexNeg > -1) {\n            cloneSignNegative = signNegative.slice(cutOffSignalsIndexNeg);\n            noiseLevelNegative =\n                cloneSignPositive[Math.floor(cloneSignNegative.length * (1 - cutOffDist))];\n        }\n    }\n    const correctionFactor = -simpleNormInvNumber(cutOffDist / 2, {\n        magnitudeMode,\n    });\n    let effectiveCutOffDist, refinedCorrectionFactor;\n    if (refine && cutOffSignalsIndexPlus > -1) {\n        effectiveCutOffDist =\n            (cutOffDist * cloneSignPositive.length + cutOffSignalsIndexPlus) /\n                (cloneSignPositive.length + cutOffSignalsIndexPlus);\n        refinedCorrectionFactor =\n            -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n        noiseLevelPositive /= refinedCorrectionFactor;\n        if (cutOffSignalsIndexNeg > -1) {\n            effectiveCutOffDist =\n                (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n                    (cloneSignNegative.length + cutOffSignalsIndexNeg);\n            refinedCorrectionFactor =\n                -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n            if (noiseLevelNegative !== 0) {\n                noiseLevelNegative /= refinedCorrectionFactor;\n            }\n        }\n    }\n    else {\n        noiseLevelPositive /= correctionFactor;\n        noiseLevelNegative /= correctionFactor;\n    }\n    return {\n        positive: noiseLevelPositive,\n        negative: noiseLevelNegative,\n        snr: skyPoint / noiseLevelPositive,\n        sanplot: generateSanPlot(input, {\n            fromTo: {\n                positive: { from: 0, to: lastPositiveValueIndex },\n                negative: { from: firstNegativeValueIndex, to: input.length },\n            },\n        }),\n    };\n}\n/**\n * Determines the optimal cut-off point for a given array of positive numbers.\n * @param signPositive - An array of positive numbers.\n * @param options - Optional parameters to configure the cut-off determination.\n * @param options.magnitudeMode - If true, uses magnitude mode for normalization. Default is false.\n * @param options.considerList - An object specifying the range and step for consideration.\n * @param options.considerList.from - The starting point of the range. Default is 0.5.\n * @param options.considerList.step - The step size for the range. Default is 0.1.\n * @param options.considerList.to - The ending point of the range. Default is 0.9.\n * @returns The optimal cut-off point as a number.\n */\nfunction determineCutOff(signPositive, options = {}) {\n    const { magnitudeMode = false, considerList = { from: 0.5, step: 0.1, to: 0.9 }, } = options;\n    //generate a list of values for\n    const cutOff = [];\n    const indexMax = signPositive.length - 1;\n    for (let i = 0.01; i <= 0.99; i += 0.01) {\n        const index = Math.round(indexMax * i);\n        const value = -signPositive[index] / simpleNormInvNumber(i / 2, { magnitudeMode });\n        cutOff.push([i, value]);\n    }\n    let minKi = Number.MAX_SAFE_INTEGER;\n    const { from, to, step } = considerList;\n    const delta = step / 2;\n    let whereToCutStat = 0.5;\n    for (let i = from; i <= to; i += step) {\n        const floor = i - delta;\n        const top = i + delta;\n        const elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n        let averageValue = 0;\n        for (const element of elementsOfCutOff) {\n            averageValue += Math.abs(element[1]);\n        }\n        let kiSqrt = 0;\n        for (const element of elementsOfCutOff) {\n            kiSqrt += (element[1] - averageValue) ** 2;\n        }\n        if (kiSqrt < minKi) {\n            minKi = kiSqrt;\n            whereToCutStat = i;\n        }\n    }\n    return whereToCutStat;\n}\n/**\n * Generates a SAN plot from the given array based on the specified options.\n * @param array - The input array of numbers to be processed.\n * @param options - An optional object containing configuration options.\n * @param options.logBaseY - The logarithmic base for the Y-axis. Defaults to 2.\n * @param options.fromTo - An object specifying the range for each key. Each key maps to an object with `from` and `to` properties.\n * @returns An object where each key maps to a DataXY object containing the processed data.\n */\nfunction generateSanPlot(array, options = {}) {\n    const { fromTo, logBaseY = 2 } = options;\n    const sanplot = {};\n    for (const key in fromTo) {\n        const { from, to } = fromTo[key];\n        sanplot[key] =\n            from !== to\n                ? scale(array.slice(from, to), {\n                    logBaseY,\n                })\n                : { x: [], y: [] };\n        if (key === 'negative') {\n            sanplot[key].y.reverse();\n        }\n    }\n    return sanplot;\n}\n/**\n * Scales the input array based on the provided options.\n * @param array - The input array to be scaled.\n * @param options - An optional object containing scaling options.\n * @param options.logBaseY - If provided, the array values will be scaled using the logarithm of this base.\n * @returns An object containing the scaled x and y arrays.\n */\nfunction scale(array, options = {}) {\n    const { log10, abs } = Math;\n    const { logBaseY } = options;\n    if (logBaseY) {\n        array = array.slice(0);\n        const logOfBase = log10(logBaseY);\n        for (let i = 0; i < array.length; i++) {\n            array[i] = log10(abs(array[i])) / logOfBase;\n        }\n    }\n    const xAxis = createFromToArray({\n        from: 0,\n        to: array.length - 1,\n        length: array.length,\n    });\n    return { x: xAxis, y: array };\n}\n/**\n * Prepares and processes the input data array based on the provided options.\n * @param array - The input array of numbers to be processed.\n * @param options - An object containing the following properties:\n *   - scaleFactor: A number by which to scale each element of the array.\n *   - mask: An optional array of the same length as the input array, where\n *           elements corresponding to `true` values will be excluded from processing.\n * @param options.scaleFactor\n * @param options.mask\n * @returns A new Float64Array containing the processed data, scaled by the\n *          scaleFactor and sorted in descending order.\n */\nfunction prepareData(array, options) {\n    const { scaleFactor, mask } = options;\n    const input = xEnsureFloat64(isAnyArray(mask) && mask.length === array.length\n        ? array.filter((_e, i) => !mask[i])\n        : array);\n    if (scaleFactor > 1) {\n        for (let i = 0; i < input.length; i++) {\n            input[i] *= scaleFactor;\n        }\n    }\n    return input.sort().reverse();\n}\n//# sourceMappingURL=xNoiseSanPlot.js.map","import { xMedianAbsoluteDeviation } from './xMedianAbsoluteDeviation';\n/**\n * Determine noise level using MAD https://en.wikipedia.org/wiki/Median_absolute_deviation\n * Constant to convert mad to sd calculated using https://www.wolframalpha.com/input?i=sqrt%282%29+inverse+erf%280.5%29\n * This assumes a gaussian distribution of the noise\n * @param array\n * @returns noise level corresponding to one standard deviation\n */\nexport function xNoiseStandardDeviation(array) {\n    const { mad, median } = xMedianAbsoluteDeviation(array);\n    return { sd: mad / 0.6744897501960817, mad, median };\n}\n//# sourceMappingURL=xNoiseStandardDeviation.js.map","/**\n * This function calculate the norm of a vector.\n * @example xNorm([3, 4]) -> 5\n * @param array - array\n * @returns - calculated norm\n */\nexport function xNorm(array) {\n    let result = 0;\n    for (const element of array) {\n        result += element ** 2;\n    }\n    return Math.sqrt(result);\n}\n//# sourceMappingURL=xNorm.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Calculate the sum of the values\n * @param array - Object that contains property x (an ordered increasing array) and y (an array).\n * @param options - Options.\n * @returns XSum value on the specified range.\n */\nexport function xSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xSum.js.map","import { xCheck } from './xCheck';\nimport { xEnsureFloat64 } from './xEnsureFloat64';\n/**\n * This function pads an array\n *s\n * @param array - the array that will be padded\n * @param options - options\n */\nexport function xPadding(array, options = {}) {\n    const { size = 0, value = 0, algorithm } = options;\n    xCheck(array);\n    if (!algorithm) {\n        return xEnsureFloat64(array);\n    }\n    const result = new Float64Array(array.length + size * 2);\n    for (let i = 0; i < array.length; i++) {\n        result[i + size] = array[i];\n    }\n    const fromEnd = size + array.length;\n    const toEnd = 2 * size + array.length;\n    switch (algorithm) {\n        case 'value':\n            for (let i = 0; i < size; i++) {\n                result[i] = value;\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = value;\n            }\n            break;\n        case 'duplicate':\n            for (let i = 0; i < size; i++) {\n                result[i] = array[0];\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = array.at(-1);\n            }\n            break;\n        case 'circular':\n            for (let i = 0; i < size; i++) {\n                result[i] =\n                    array[(array.length - (size % array.length) + i) % array.length];\n            }\n            for (let i = 0; i < size; i++) {\n                result[i + fromEnd] = array[i % array.length];\n            }\n            break;\n        default:\n            throw new Error(`unknown algorithm ${String(algorithm)}`);\n    }\n    return result;\n}\n//# sourceMappingURL=xPadding.js.map","import { isAnyArray } from 'is-any-array';\nimport { xMean } from './xMean';\n/**\n * Finds the variance of the data\n * @param values - the values of the array\n * @param options - options\n * @returns variance\n */\nexport function xVariance(values, options = {}) {\n    if (!isAnyArray(values)) {\n        throw new TypeError('input must be an array');\n    }\n    const { unbiased = true, mean = xMean(values) } = options;\n    let sqrError = 0;\n    for (let i = 0; i < values.length; i++) {\n        const x = values[i] - mean;\n        sqrError += x * x;\n    }\n    if (unbiased) {\n        return sqrError / (values.length - 1);\n    }\n    else {\n        return sqrError / values.length;\n    }\n}\n//# sourceMappingURL=xVariance.js.map","import { xVariance } from './xVariance';\n/**\n * Finds the standard deviation for the data at hand\n * @param values - values in the data\n * @param options - options\n * @returns standard deviation\n */\nexport function xStandardDeviation(values, options = {}) {\n    return Math.sqrt(xVariance(values, options));\n}\n//# sourceMappingURL=xStandardDeviation.js.map","import { xCheck } from './xCheck';\nimport { xPadding } from './xPadding';\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param fct - callback function that from an array returns a value\n * @param options - options\n */\nexport function xRolling(array, fct, options = {}) {\n    xCheck(array);\n    if (typeof fct !== 'function') {\n        throw new TypeError('fct must be a function');\n    }\n    const { window = 5, padding = {} } = options;\n    const { size = window - 1, algorithm, value } = padding;\n    const padded = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n    const newArray = [];\n    for (let i = 0; i < padded.length - window + 1; i++) {\n        // we will send a view to the original buffer\n        newArray.push(fct(padded.subarray(i, i + window)));\n    }\n    return newArray;\n}\n//# sourceMappingURL=xRolling.js.map","import { xMean } from './xMean';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - option\n */\nexport function xRollingAverage(array, options = {}) {\n    return xRolling(array, xMean, options);\n}\n//# sourceMappingURL=xRollingAverage.js.map","/**\n * This function performs a circular shift to an array.\n * Positive values of shifts will shift to the right and negative values will do to the left.\n * @example xRotate([1,2,3,4],1) -> [4,1,2,3]\n * @example xRotate([1,2,3,4],-1) -> [2,3,4,1]\n * @param array - array\n * @param shift - shift\n * @returns - rotated array\n */\nexport function xRotate(array, shift) {\n    shift = shift % array.length;\n    if (shift < 0)\n        shift += array.length;\n    const result = new Float64Array(array.length);\n    result.set(array.slice(array.length - shift));\n    result.set(array.slice(0, array.length - shift), shift);\n    return result;\n}\n//# sourceMappingURL=xRotate.js.map","import { createNumberArray } from '../utils';\nexport function xSequentialFillFromStep(parameters, options = {}) {\n    const { from, step, size } = parameters;\n    const { ArrayConstructor = Float64Array } = options;\n    const result = createNumberArray(ArrayConstructor, size);\n    for (let i = 0; i < size; i++) {\n        result[i] = from + i * step;\n    }\n    return result;\n}\n//# sourceMappingURL=xSequentialFillFromStep.js.map","/**\n * Function that sorts arrays or Float64Arrays in descending order\n * @param array - array to sort\n * @returns sorted array\n */\nexport function xSortDescending(array) {\n    if (ArrayBuffer.isView(array)) {\n        return array.sort().reverse();\n    }\n    else if (Array.isArray(array)) {\n        return array.sort((a, b) => b - a);\n    }\n    throw new Error('trying to sort non array');\n}\n//# sourceMappingURL=xSortDescending.js.map","/*\nThe MIT License (MIT)\n\nCopyright (c) 2013 Eric Arnebäck\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n/**\n * Solves a system of linear equations using the Cholesky decomposition method.\n * It is a direct conversion to TS from {@link https://github.com/scijs/cholesky-solve}\n * @param nonZerosArray - The matrix in triplet form (array of arrays), where each sub-array contains three elements: row index, column index, and value.\n * @param dimension - The order of the matrix (number of rows/columns).\n * @param permutationEncoded - Optional permutation array. If provided, it will be used to permute the matrix.\n * @returns A function that takes a right-hand side vector `b` and returns the solution vector `x`, or `null` if the decomposition fails.\n */\nexport function matrixCholeskySolver(nonZerosArray, dimension, permutationEncoded) {\n    if (permutationEncoded) {\n        const pinv = new Array(dimension);\n        for (let k = 0; k < dimension; k++) {\n            pinv[permutationEncoded[k]] = k;\n        }\n        const mt = new Array(nonZerosArray.length);\n        for (let a = 0; a < nonZerosArray.length; ++a) {\n            const [r, c, value] = nonZerosArray[a];\n            const [ar, ac] = [pinv[r], pinv[c]];\n            mt[a] = ac < ar ? [ac, ar, value] : [ar, ac, value];\n        }\n        nonZerosArray = mt;\n    }\n    else {\n        permutationEncoded = [];\n        for (let i = 0; i < dimension; ++i) {\n            permutationEncoded[i] = i;\n        }\n    }\n    const ap = new Array(dimension + 1);\n    const ai = new Array(nonZerosArray.length);\n    const ax = new Array(nonZerosArray.length);\n    const lnz = [];\n    for (let i = 0; i < dimension; ++i) {\n        lnz[i] = 0;\n    }\n    for (const a of nonZerosArray) {\n        lnz[a[1]]++;\n    }\n    ap[0] = 0;\n    for (let i = 0; i < dimension; ++i) {\n        ap[i + 1] = ap[i] + lnz[i];\n    }\n    const colOffset = [];\n    for (let a = 0; a < dimension; ++a) {\n        colOffset[a] = 0;\n    }\n    for (const e of nonZerosArray) {\n        const col = e[1];\n        const adr = ap[col] + colOffset[col];\n        ai[adr] = e[0];\n        ax[adr] = e[2];\n        colOffset[col]++;\n    }\n    const d = new Array(dimension);\n    const y = new Array(dimension);\n    const lp = new Array(dimension + 1);\n    const parent = new Array(dimension);\n    const lnzArray = new Array(dimension);\n    const flag = new Array(dimension);\n    const pattern = new Array(dimension);\n    const bp1 = new Array(dimension);\n    const x = new Array(dimension);\n    ldlSymbolic(dimension, ap, ai, lp, parent, lnzArray, flag);\n    const lx = new Array(lp[dimension]);\n    const li = new Array(lp[dimension]);\n    const result = ldlNumeric(dimension, ap, ai, ax, lp, parent, lnzArray, li, lx, d, y, pattern, flag);\n    if (result === dimension) {\n        return (b) => {\n            ldlPerm(dimension, bp1, b, permutationEncoded);\n            ldlLsolve(dimension, bp1, lp, li, lx);\n            ldlDsolve(dimension, bp1, d);\n            ldlLTsolve(dimension, bp1, lp, li, lx);\n            ldlPermt(dimension, x, bp1, permutationEncoded);\n            return x;\n        };\n    }\n    else {\n        return null;\n    }\n}\nfunction ldlSymbolic(dimension, ap, ai, lp, parent, lnz, flag) {\n    for (let k = 0; k < dimension; k++) {\n        parent[k] = -1;\n        flag[k] = k;\n        lnz[k] = 0;\n        const kk = k;\n        const p2 = ap[kk + 1];\n        for (let permutationEncoded = ap[kk]; permutationEncoded < p2; permutationEncoded++) {\n            let i = ai[permutationEncoded];\n            if (i < k) {\n                for (; flag[i] !== k; i = parent[i]) {\n                    if (parent[i] === -1)\n                        parent[i] = k;\n                    lnz[i]++;\n                    flag[i] = k;\n                }\n            }\n        }\n    }\n    lp[0] = 0;\n    for (let k = 0; k < dimension; k++) {\n        lp[k + 1] = lp[k] + lnz[k];\n    }\n}\nfunction ldlNumeric(dimension, ap, ai, ax, lp, parent, lnz, li, lx, d, y, pattern, flag) {\n    let yi, lKi;\n    let i, k, permutationEncoded, kk, p2, len, top;\n    for (k = 0; k < dimension; k++) {\n        y[k] = 0;\n        top = dimension;\n        flag[k] = k;\n        lnz[k] = 0;\n        kk = k;\n        p2 = ap[kk + 1];\n        for (permutationEncoded = ap[kk]; permutationEncoded < p2; permutationEncoded++) {\n            i = ai[permutationEncoded];\n            if (i <= k) {\n                y[i] += ax[permutationEncoded];\n                for (len = 0; flag[i] !== k; i = parent[i]) {\n                    pattern[len++] = i;\n                    flag[i] = k;\n                }\n                while (len > 0)\n                    pattern[--top] = pattern[--len];\n            }\n        }\n        d[k] = y[k];\n        y[k] = 0;\n        for (; top < dimension; top++) {\n            i = pattern[top];\n            yi = y[i];\n            y[i] = 0;\n            p2 = lp[i] + lnz[i];\n            for (permutationEncoded = lp[i]; permutationEncoded < p2; permutationEncoded++) {\n                y[li[permutationEncoded]] -= lx[permutationEncoded] * yi;\n            }\n            lKi = yi / d[i];\n            d[k] -= lKi * yi;\n            li[permutationEncoded] = k;\n            lx[permutationEncoded] = lKi;\n            lnz[i]++;\n        }\n        if (d[k] === 0)\n            return k;\n    }\n    return dimension;\n}\nfunction ldlLsolve(dimension, x, lp, li, lx) {\n    let j, permutationEncoded, p2;\n    for (j = 0; j < dimension; j++) {\n        p2 = lp[j + 1];\n        for (permutationEncoded = lp[j]; permutationEncoded < p2; permutationEncoded++) {\n            x[li[permutationEncoded]] -= lx[permutationEncoded] * x[j];\n        }\n    }\n}\nfunction ldlDsolve(dimension, x, d) {\n    for (let j = 0; j < dimension; j++) {\n        x[j] /= d[j];\n    }\n}\nfunction ldlLTsolve(dimension, x, lp, li, lx) {\n    let j, permutationEncoded, p2;\n    for (j = dimension - 1; j >= 0; j--) {\n        p2 = lp[j + 1];\n        for (permutationEncoded = lp[j]; permutationEncoded < p2; permutationEncoded++) {\n            x[j] -= lx[permutationEncoded] * x[li[permutationEncoded]];\n        }\n    }\n}\nfunction ldlPerm(dimension, x, b, permutationEncoded) {\n    let j;\n    for (j = 0; j < dimension; j++) {\n        x[j] = b[permutationEncoded[j]];\n    }\n}\nfunction ldlPermt(dimension, x, b, permutationEncoded) {\n    let j;\n    for (j = 0; j < dimension; j++) {\n        x[permutationEncoded[j]] = b[j];\n    }\n}\n//# sourceMappingURL=matrixCholeskySolver.js.map","/**\n * add the provided weights to a particular given system matrix (lD'D) in the triplet form and y data. This function is not general\n * it assumes that diagonal coefficients are in the even indexes, it is the case of the matrix generated by createSystemMatrix function.\n * It simulates the matrix operation W + lD'D and Wy.\n * @param leftHandSide - The original system matrix to be updated, a lower triangular non-zeros of the system matrix (lambda D'D).\n * @param rightHandSide - The original vector to be updated.\n * @param weights - The weights to apply to the system matrix and vector.\n * @returns An object that contains the news left and right hand-side of the system.\n */\nexport function addWeights(leftHandSide, rightHandSide, weights) {\n    const nbPoints = rightHandSide.length;\n    const l = nbPoints - 1;\n    const newLeftHandSide = new Array(leftHandSide.length);\n    const newRightHandSide = new Float64Array(nbPoints);\n    for (let i = 0; i < l; i++) {\n        const w = weights[i];\n        const diag = i * 2;\n        const next = diag + 1;\n        newLeftHandSide[diag] = leftHandSide[diag].slice();\n        newLeftHandSide[next] = leftHandSide[next].slice();\n        newRightHandSide[i] = rightHandSide[i] * w;\n        newLeftHandSide[diag][2] += w;\n    }\n    newRightHandSide[l] = rightHandSide[l] * weights[l];\n    newLeftHandSide[l * 2] = leftHandSide[l * 2].slice();\n    newLeftHandSide[l * 2][2] += weights[l];\n    return {\n        leftHandSide: newLeftHandSide,\n        rightHandSide: newRightHandSide,\n    };\n}\n//# sourceMappingURL=addWeights.js.map","import { matrixCholeskySolver } from '../matrix/matrixCholeskySolver';\nimport { addWeights } from '../utils/addWeights';\nimport { calculateAdaptiveWeights } from '../utils/calculateAdaptiveWeights';\nimport { createSystemMatrix } from '../utils/createSystemMatrix';\nimport { xEnsureFloat64 } from './xEnsureFloat64';\nimport { xMultiply } from './xMultiply';\n/**\n * Computes the baseline points for the given data using an iterative smoothing algorithm.\n * @param yData - The input data array.\n * @param options - The options for baseline computation.\n * @returns - The computed baseline points.\n */\nexport function xWhitakerSmoother(yData, options = {}) {\n    const { lambda = 100, maxIterations = 100, tolerance = 1e-6, factorStd = 3, learningRate = 0.5, minWeight = 0.01, } = options;\n    const size = yData.length;\n    // eslint-disable-next-line prefer-const\n    let { controlPoints, weights } = getWeightsAndControlPoints(yData, options);\n    const prevBaseline = new Float64Array(size);\n    let iteration = 0;\n    let delta = Infinity;\n    let baseline = yData.slice();\n    const upperTriangularNonZeros = createSystemMatrix(size, lambda);\n    while (iteration < maxIterations && delta > tolerance) {\n        const { leftHandSide, rightHandSide } = addWeights(upperTriangularNonZeros, yData, weights);\n        const cho = matrixCholeskySolver(leftHandSide, size);\n        if (!cho) {\n            return baseline;\n        }\n        const newBaseline = cho(rightHandSide);\n        weights = calculateAdaptiveWeights(yData, newBaseline, weights, {\n            controlPoints,\n            minWeight,\n            learningRate,\n            factorStd,\n        });\n        delta = calculateDelta(newBaseline, prevBaseline, size);\n        prevBaseline.set(newBaseline);\n        baseline = xEnsureFloat64(newBaseline);\n        iteration++;\n    }\n    return baseline;\n}\n/**\n * Calculates the delta between the current and previous baseline.\n * @param baseline - The current baseline array.\n * @param prevBaseline - The previous baseline array.\n * @param n - The length of the arrays.\n * @returns - The calculated delta value.\n */\nfunction calculateDelta(baseline, prevBaseline, n) {\n    let sum = 0;\n    for (let i = 0; i < n; i++) {\n        sum += (baseline[i] - prevBaseline[i]) ** 2;\n    }\n    return Math.sqrt(sum / n);\n}\n/**\n * Retrieves the control points and weights for the given data, the weights are modified multiplication of controlPoints if it exists.\n * @param  y - The input data array.\n * @param  options - The options for control points and weights.\n * @returns - The control points and modified weights.\n */\nfunction getWeightsAndControlPoints(y, options = {}) {\n    const { length } = y;\n    const { controlPoints } = options;\n    const { weights = Float64Array.from({ length }).fill(1) } = options;\n    if (controlPoints && controlPoints.length !== y.length) {\n        throw new RangeError('controlPoints should match the length with X');\n    }\n    else if (weights.length !== y.length) {\n        throw new RangeError('weights should match the length with X');\n    }\n    return {\n        weights: controlPoints ? xMultiply(weights, controlPoints) : weights,\n        controlPoints,\n    };\n}\n//# sourceMappingURL=xWhitakerSmoother.js.map","/**\n * Phase correction filter.\n * @param data - complex spectrum\n * @param phi0 - Angle in radians for zero order phase correction\n * @param phi1 - Angle in radians for first order phase correction\n * @param options\n * @returns - returns a new object {re:[], im:[]}\n */\nexport function reimPhaseCorrection(data, phi0 = 0, phi1 = 0, options = {}) {\n    const { reverse = false } = options;\n    phi0 = Number.isFinite(phi0) ? phi0 : 0;\n    phi1 = Number.isFinite(phi1) ? phi1 : 0;\n    const re = data.re;\n    const im = data.im;\n    const length = data.re.length;\n    let firstAngle = phi0;\n    let delta = phi1 / length;\n    if (reverse) {\n        delta *= -1;\n        firstAngle += phi1;\n    }\n    const alpha = 2 * Math.sin(delta / 2) ** 2;\n    const beta = Math.sin(delta);\n    let cosTheta = Math.cos(firstAngle);\n    let sinTheta = Math.sin(firstAngle);\n    const newRe = new Float64Array(length);\n    const newIm = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n        newRe[i] = re[i] * cosTheta - im[i] * sinTheta;\n        newIm[i] = im[i] * cosTheta + re[i] * sinTheta;\n        // calculate angles i+1 from i\n        const newCosTheta = cosTheta - (alpha * cosTheta + beta * sinTheta);\n        const newSinTheta = sinTheta - (alpha * sinTheta - beta * cosTheta);\n        cosTheta = newCosTheta;\n        sinTheta = newSinTheta;\n    }\n    return { re: newRe, im: newIm };\n}\n//# sourceMappingURL=reimPhaseCorrection.js.map","import { xNoiseSanPlot } from '../x';\nimport { reimAbsolute } from './reimAbsolute';\nimport { reimPhaseCorrection } from './reimPhaseCorrection';\n/**\n * Implementation of the algorithm for automatic phase correction: A robust, general automatic phase\n * correction algorithm for high-resolution NMR data. 10.1002/mrc.4586\n * @param data - complex spectrum\n * @param options - options\n */\nexport function reimAutoPhaseCorrection(data, options = {}) {\n    const { magnitudeMode = true, minRegSize = 30, factorNoise = 3, maxDistanceToJoin = 256, reverse = false, } = options;\n    const finalPeaks = detectBaselineRegions(data, {\n        maxDistanceToJoin,\n        magnitudeMode,\n        factorNoise,\n    });\n    const { re, im } = data;\n    const length = re.length;\n    const indexMask = reverse ? (i) => length - 1 - i : (i) => i;\n    let x0 = 0;\n    let counter = -1;\n    const res = [];\n    while (counter < length) {\n        const reTmp = [];\n        const imTmp = [];\n        while (!finalPeaks[indexMask(++counter)] && counter < length) {\n            // Add some extra points(0.1 ppm) at rigth and left sides of the region.\n            x0 = counter;\n        }\n        for (; finalPeaks[indexMask(counter)] && counter < length; counter += 2) {\n            reTmp.push(re[indexMask(counter)]);\n            imTmp.push(im[indexMask(counter)]);\n        }\n        if (reTmp.length > minRegSize) {\n            res.push(autoPhaseRegion(reTmp, imTmp, x0));\n        }\n    }\n    const { ph1, ph0 } = determiningGlobalValues(res.map((r) => r.x0 / length), res.map((r) => r.ph0), res.map((r) => r.area / 1e11));\n    const phased = reimPhaseCorrection({ re, im }, toRadians(ph0), toRadians(ph1), { reverse });\n    return { data: phased, ph0, ph1 };\n}\nfunction determiningGlobalValues(x, ph0Values, weights) {\n    if (x.length === 0) {\n        return { ph0: 0, ph1: 0 };\n    }\n    else if (x.length === 1) {\n        return { ph0: ph0Values[0], ph1: 0 };\n    }\n    const [ph1, ph0] = weightedLinearRegression(x, ph0Values, weights);\n    let indexMax = -1;\n    let maxDiff = Number.MIN_SAFE_INTEGER;\n    for (let i = 0; i < x.length; i++) {\n        const predictedPh0 = x[i] * ph1 + ph0;\n        const diff = Math.abs(ph0Values[i] - predictedPh0);\n        if (diff > 34 && maxDiff < diff) {\n            indexMax = i;\n            maxDiff = diff;\n        }\n    }\n    if (indexMax > -1) {\n        x.splice(indexMax, 1);\n        ph0Values.splice(indexMax, 1);\n        weights.splice(indexMax, 1);\n        return determiningGlobalValues(x, ph0Values, weights);\n    }\n    return { ph0, ph1 };\n}\nfunction detectBaselineRegions(data, options) {\n    const magnitudeData = options.magnitudeMode ? reimAbsolute(data) : data.re;\n    const ds = holoborodko(magnitudeData);\n    const peaksDs = robustBaseLineRegionsDetection(ds, options);\n    const peaksSp = robustBaseLineRegionsDetection(magnitudeData, options);\n    return peaksSp.map((sp, i) => sp && peaksDs[i]);\n}\n/**\n * AutoPhaseRegion.\n * @param re - Array of Number.\n * @param im - Array of Number.\n * @param x0 - Number.\n * @returns Region.\n */\nfunction autoPhaseRegion(re, im, x0) {\n    let start = -180;\n    let stop = 180;\n    const nSteps = 6;\n    let maxSteps = 10;\n    let bestAng = 0;\n    let minArea = Number.MAX_SAFE_INTEGER;\n    while (maxSteps > 0) {\n        const dAng = (stop - start) / (nSteps + 1);\n        for (let i = start; i <= stop; i += dAng) {\n            const tmpPhased = reimPhaseCorrection({ re, im }, toRadians(i), 0);\n            const negArea = getNegArea(tmpPhased.re);\n            if (negArea < minArea) {\n                [minArea, bestAng] = [negArea, i];\n            }\n        }\n        start = bestAng - dAng;\n        stop = bestAng + dAng;\n        maxSteps--;\n    }\n    // Calculate the area for the best angle\n    const phased = reimPhaseCorrection({ re, im }, toRadians(bestAng), 0);\n    let area = 0;\n    let sumX = 0;\n    for (let j = 0; j < re.length; j++) {\n        area += phased.re[j];\n        sumX += phased.re[j] * (j + x0);\n    }\n    return { ph0: bestAng, area, x0: sumX / area };\n}\n/**\n * Holoborodko.\n * @param s - Array of float.\n * @returns Array of float.\n */\nfunction holoborodko(s) {\n    const dk = new Float64Array(s.length);\n    for (let i = 5; i < s.length - 5; i++) {\n        dk[i] =\n            (42 * (s[i + 1] - s[i - 1]) +\n                48 * (s[i + 2] - s[i - 2]) +\n                27 * (s[i + 3] + s[i - 3]) +\n                8 * (s[i + 4] - s[i - 4]) +\n                s[i + 5] -\n                s[i - 5]) /\n                512;\n    }\n    //Fill the borders\n    for (let i = 0; i < 5; i++) {\n        dk[i] = dk[5];\n        dk[s.length - i - 1] = dk[s.length - 6];\n    }\n    return dk;\n}\n/**\n * RobustBaseLineRegionsDetection.\n * @param s\n * @param options\n * @param options.magnitudeMode\n * @param options.maxDistanceToJoin\n * @param options.factorNoise\n */\nfunction robustBaseLineRegionsDetection(s, options) {\n    const { maxDistanceToJoin, magnitudeMode, factorNoise } = options;\n    const mask = new Uint8Array(s.length);\n    for (let i = 0; i < s.length; i++) {\n        mask[i] = 0;\n    }\n    let change = true;\n    while (change) {\n        const noiseLevel = xNoiseSanPlot(s, { magnitudeMode });\n        const cutOff = factorNoise * noiseLevel.positive;\n        change = false;\n        for (let i = 0; i < s.length; i++) {\n            if (Math.abs(s[i]) > cutOff && !mask[i]) {\n                change = true;\n                mask[i] = 1;\n            }\n        }\n    }\n    // Clean up mask by merging peaks blocks, separated by just a few points(4??).\n    let count = 0;\n    let prev = 0;\n    for (let i = 0; i < s.length; i++) {\n        if (!mask[i]) {\n            count++;\n        }\n        else {\n            if (count < maxDistanceToJoin) {\n                for (let j = 0; j <= count; j++) {\n                    mask[prev + j] = 1;\n                }\n            }\n            while (mask[++i] && i < s.length)\n                ;\n            prev = i;\n            count = 0;\n        }\n    }\n    return mask;\n}\n/**\n * WeightedLinearRegression.\n * @param x\n * @param y\n * @param w\n */\nfunction weightedLinearRegression(x, y, w) {\n    let sxtw = 0;\n    let swx = 0;\n    let sw = 0;\n    let sxtwy = 0;\n    let swy = 0;\n    for (let i = 0; i < x.length; i++) {\n        sxtw += x[i] * x[i] * w[i];\n        swx += x[i] * w[i];\n        sw += w[i];\n        sxtwy += x[i] * w[i] * y[i];\n        swy += w[i] * y[i];\n    }\n    /* Just to know what is the matrix system that we solve\n     let Mx=[[sxtw, swx], [swx, sw]];\n     let My=[[sxtwy], [swy]];\n    */\n    //Mx inverse\n    const detMx = sxtw * sw - swx * swx;\n    const inMx = [\n        [sw / detMx, -swx / detMx],\n        [-swx / detMx, sxtw / detMx],\n    ];\n    return [\n        inMx[0][0] * sxtwy + inMx[0][1] * swy,\n        inMx[1][0] * sxtwy + inMx[1][1] * swy,\n    ];\n}\nfunction toRadians(degree) {\n    return (degree * Math.PI) / 180;\n}\nfunction getNegArea(data) {\n    let area = 0;\n    for (const element of data) {\n        if (element < 0)\n            area -= element;\n    }\n    return area;\n}\n//# sourceMappingURL=reimAutoPhaseCorrection.js.map","import FFT from 'fft.js';\nimport { xRotate } from '../x';\n/**\n * ReimFFT.\n * @param data - complex spectrum\n * @param options - options.\n * @returns FFT of complex spectrum.\n */\nexport function reimFFT(data, options = {}) {\n    const { inverse = false, applyZeroShift = false } = options;\n    const { re, im } = data;\n    const size = re.length;\n    const csize = size << 1;\n    let complexArray = new Float64Array(csize);\n    for (let i = 0; i < csize; i += 2) {\n        complexArray[i] = re[i >>> 1];\n        complexArray[i + 1] = im[i >>> 1];\n    }\n    const fft = new FFT(size);\n    let output = new Float64Array(csize);\n    if (inverse) {\n        if (applyZeroShift)\n            complexArray = zeroShift(complexArray, true);\n        fft.inverseTransform(output, complexArray);\n    }\n    else {\n        fft.transform(output, complexArray);\n        if (applyZeroShift)\n            output = zeroShift(output);\n    }\n    const newRe = new Float64Array(size);\n    const newIm = new Float64Array(size);\n    for (let i = 0; i < csize; i += 2) {\n        newRe[i >>> 1] = output[i];\n        newIm[i >>> 1] = output[i + 1];\n    }\n    return { re: newRe, im: newIm };\n}\nfunction zeroShift(data, inverse) {\n    const middle = inverse\n        ? Math.ceil(data.length / 2)\n        : Math.floor(data.length / 2);\n    return xRotate(data, middle);\n}\n//# sourceMappingURL=reimFFT.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Verify that `data` is an object of x,y arrays.\n * Throws an error if it's not.\n * @param data\n * @param options\n * @param options.minLength\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (data === null ||\n        typeof data !== 'object' ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.x) ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.y)) {\n        throw new Error('data must be an object of x and y arrays');\n    }\n    // @ts-expect-error Typechecking\n    if (data.x.length !== data.y.length) {\n        throw new Error('the x and y arrays must have the same length');\n    }\n    // @ts-expect-error Typechecking\n    if (minLength && data.x.length < minLength) {\n        throw new Error(`data.x must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max y value in a range and return a {x,y} point\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n */\nexport function xyMaxYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1) {\n        return { x: x[0], y: y[0], index: 0 };\n    }\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] > current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMaxYPoint.js.map","import { xCumulative, xMaxValue } from '../x';\nimport { xyCheck } from './xyCheck';\nimport { xyMaxYPoint } from './xyMaxYPoint';\nconst STEPS = [0.25, 0.5, 0.75];\n/**\n * Cumulative Distribution Statistics\n * @param data - array of points {x,y}\n * @returns x0, x25, x50, x75, x100, xMode, xMean (x for maxY)\n */\nexport function xyCumulativeDistributionStatistics(data) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    const cumulativeSum = xCumulative(y);\n    const maxY = xMaxValue(cumulativeSum);\n    for (let i = 0; i < cumulativeSum.length; i++) {\n        cumulativeSum[i] /= maxY;\n    }\n    const result = {\n        x0: 0,\n        x25: 0,\n        x50: 0,\n        x75: 0,\n        x100: 0,\n        xMode: 0,\n        xMean: 0,\n    };\n    // need to find the x values closest to STEPS/100\n    result.x0 = x[0];\n    result.x100 = x.at(-1);\n    let currentStep = 0;\n    breakPoint: for (let i = 1; i < cumulativeSum.length; i++) {\n        while (STEPS[currentStep] < cumulativeSum[i]) {\n            // Key is computed dynamically with a multiplication. This cannot be type-safe, hence the \"as\" assertion.\n            const key = `x${STEPS[currentStep] * 100}`;\n            result[key] =\n                x[i - 1] +\n                    (x[i] - x[i - 1]) *\n                        ((STEPS[currentStep] - cumulativeSum[i - 1]) /\n                            (cumulativeSum[i] - cumulativeSum[i - 1]));\n            currentStep++;\n            if (currentStep === STEPS.length)\n                break breakPoint;\n        }\n    }\n    result.xMode = xyMaxYPoint(data).x;\n    let sumXY = 0;\n    let sumY = 0;\n    for (let i = 0; i < x.length; i++) {\n        sumXY += x[i] * y[i];\n        sumY += y[i];\n    }\n    result.xMean = sumXY / sumY;\n    return result;\n}\n//# sourceMappingURL=xyCumulativeDistributionStatistics.js.map","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * - deal with exclusions zones\n * - if no zones is specified add one between -Infinity and +Infinity\n * @param zones - array of zones\n * @param options - options\n * @returns array of zones\n */\nexport function zonesNormalize(zones = [], options = {}) {\n    const { exclusions = [] } = options;\n    let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY } = options;\n    if (from > to)\n        [from, to] = [to, from];\n    zones = zones\n        .map((zone) => zone.from > zone.to ? { from: zone.to, to: zone.from } : { ...zone })\n        .sort((a, b) => {\n        if (a.from !== b.from)\n            return a.from - b.from;\n        return a.to - b.to;\n    });\n    if (zones.length === 0) {\n        zones.push({ from, to });\n    }\n    for (const zone of zones) {\n        if (from > zone.from)\n            zone.from = from;\n        if (to < zone.to)\n            zone.to = to;\n    }\n    zones = zones.filter((zone) => zone.from <= zone.to);\n    if (zones.length === 0)\n        return [];\n    let currentZone = zones[0];\n    const beforeExclusionsZones = [currentZone];\n    for (let i = 1; i < zones.length; i++) {\n        const zone = zones[i];\n        if (zone.from <= currentZone.to) {\n            if (currentZone.to < zone.to) {\n                currentZone.to = zone.to;\n            }\n        }\n        else {\n            currentZone = zone;\n            beforeExclusionsZones.push(currentZone);\n        }\n    }\n    if (exclusions.length === 0)\n        return beforeExclusionsZones;\n    const normalizedExclusions = zonesNormalize(exclusions);\n    let currentExclusionIndex = 0;\n    const results = [];\n    for (let zoneIndex = 0; zoneIndex < beforeExclusionsZones.length; zoneIndex++) {\n        const zone = beforeExclusionsZones[zoneIndex];\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        while (currentExclusionIndex < normalizedExclusions.length &&\n            normalizedExclusions[currentExclusionIndex].to <= zone.from) {\n            currentExclusionIndex++;\n        }\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        if (zone.to < normalizedExclusions[currentExclusionIndex].from) {\n            // no problems, not yet in exclusion\n            results.push(zone);\n            continue;\n        }\n        if (normalizedExclusions[currentExclusionIndex].to >= zone.to) {\n            // could be totally excluded\n            if (normalizedExclusions[currentExclusionIndex].from <= zone.from) {\n                continue;\n            }\n            results.push({\n                from: normalizedExclusions[currentExclusionIndex].to,\n                to: zone.to,\n            });\n        }\n        // we cut in the middle, we need to create more zones, annoying !\n        if (normalizedExclusions[currentExclusionIndex].from > zone.from) {\n            results.push({\n                from: zone.from,\n                to: normalizedExclusions[currentExclusionIndex].from,\n            });\n        }\n        zone.from = normalizedExclusions[currentExclusionIndex].to;\n        zoneIndex--;\n    }\n    return results;\n}\n//# sourceMappingURL=zonesNormalize.js.map","import { zonesNormalize } from './zonesNormalize';\n/**\n * Add the number of points per zone to reach a specified total\n * @param zones - array of zones\n * @param numberOfPoints - total number of points to distribute between zones\n * @param options - options\n * @returns array of zones with points\n */\nexport function zonesWithPoints(zones = [], \n/**\n * total number of points to distribute between zones\n * @default 10\n */\nnumberOfPoints = 10, options = {}) {\n    if (zones.length === 0)\n        return [];\n    const normalizedZones = zonesNormalize(zones, options);\n    const zonesWithNumberOfPoints = [];\n    const totalSize = normalizedZones.reduce((previous, current) => {\n        return previous + (current.to - current.from);\n    }, 0);\n    const unitsPerPoint = totalSize / numberOfPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < normalizedZones.length - 1; i++) {\n        const tempZone = normalizedZones[i];\n        const tempZoneNumberOfPoints = Math.min(Math.round((tempZone.to - tempZone.from) / unitsPerPoint), numberOfPoints - currentTotal);\n        zonesWithNumberOfPoints.push({\n            ...tempZone,\n            numberOfPoints: tempZoneNumberOfPoints,\n        });\n        currentTotal += tempZoneNumberOfPoints;\n    }\n    zonesWithNumberOfPoints.push({\n        ...normalizedZones.at(-1),\n        numberOfPoints: numberOfPoints - currentTotal,\n    });\n    return zonesWithNumberOfPoints;\n}\n//# sourceMappingURL=zonesWithPoints.js.map","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param x0\n * @param x1\n * @param slope\n * @param intercept\n * @returns integral value.\n */\nexport default function integral(\n/** first coordinate of point */\nx0, \n/** second coordinate of point */\nx1, \n/** slope of the line */\nslope, \n/** intercept of the line on the y axis */\nintercept) {\n    return (0.5 * slope * x1 * x1 +\n        intercept * x1 -\n        (0.5 * slope * x0 * x0 + intercept * x0));\n}\n//# sourceMappingURL=integral.js.map","import { createFromToArray } from '../utils';\nimport { zonesNormalize, zonesWithPoints } from '../zones';\nimport equallySpacedSlot from './utils/equallySpacedSlot';\nimport equallySpacedSmooth from './utils/equallySpacedSmooth';\nimport { xyCheck } from './xyCheck';\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in an array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in an array.\n *\n * If exclusions zone are present, zones are ignored !\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns new object with x / y array with the equally spaced data.\n */\nexport function xyEquallySpaced(data, options = {}) {\n    const { x, y } = data;\n    const xLength = x.length;\n    const { from = x[0], to = x[xLength - 1], variant = 'smooth', numberOfPoints = 100, exclusions = [], zones = [{ from, to }], } = options;\n    if (from > to) {\n        throw new RangeError('from should be larger than to');\n    }\n    xyCheck(data);\n    if (numberOfPoints < 2) {\n        throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n    }\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    const zonesWithPointsRes = zonesWithPoints(normalizedZones, numberOfPoints, {\n        from,\n        to,\n    }).filter((zone) => zone.numberOfPoints);\n    let xResult = [];\n    let yResult = [];\n    for (const zone of zonesWithPointsRes) {\n        if (!zone.numberOfPoints) {\n            zone.numberOfPoints = 0;\n        }\n        const zoneResult = processZone(Array.from(x), Array.from(y), zone.from, zone.to, zone.numberOfPoints, variant);\n        xResult = xResult.concat(zoneResult.x);\n        yResult = yResult.concat(zoneResult.y);\n    }\n    return { x: xResult, y: yResult };\n}\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n    if (numberOfPoints < 1) {\n        throw new RangeError('the number of points must be at least 1');\n    }\n    const output = variant === 'slot'\n        ? Array.from(equallySpacedSlot(x, y, from, to, numberOfPoints))\n        : Array.from(equallySpacedSmooth(x, y, from, to, numberOfPoints));\n    return {\n        x: Array.from(createFromToArray({\n            from,\n            to,\n            length: numberOfPoints,\n        })),\n        y: output,\n    };\n}\n//# sourceMappingURL=xyEquallySpaced.js.map","/**\n * Function that retrieves the getEquallySpacedData with the variant \"slot\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    const xLength = x.length;\n    if (xLength < 2) {\n        return Float64Array.from(x);\n    }\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    const lastStep = x.at(-1) - x.at(-2);\n    const start = from - halfStep;\n    // Changed Array to Float64Array\n    const output = new Float64Array(numberOfPoints);\n    // Init main variables\n    let min = start;\n    let max = start + step;\n    let previousX = -Number.MAX_VALUE;\n    let previousY = 0;\n    let nextX = x[0];\n    let nextY = y[0];\n    let frontOutsideSpectra = 0;\n    let backOutsideSpectra = true;\n    let currentValue = 0;\n    // for slot algorithm\n    let currentPoints = 0;\n    let i = 1; // index of input\n    let j = 0; // index of output\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        while (previousX - max > 0) {\n            // no overlap with original point, just consume current value\n            if (backOutsideSpectra) {\n                currentPoints++;\n                backOutsideSpectra = false;\n            }\n            output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n            j++;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            currentValue = 0;\n            currentPoints = 0;\n        }\n        if (previousX > min) {\n            currentValue += previousY;\n            currentPoints++;\n        }\n        if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n            currentPoints--;\n        }\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else {\n            nextX += lastStep;\n            nextY = 0;\n            frontOutsideSpectra++;\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSlot.js.map","import integral from './integral';\n/**\n * Function that retrieves the getEquallySpacedData with the variant \"smooth\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    const xLength = x.length;\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    // Changed Array to Float64Array\n    const output = new Float64Array(numberOfPoints);\n    const initialOriginalStep = x[1] - x[0];\n    const lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n    // Init main variables\n    let min = from - halfStep;\n    let max = from + halfStep;\n    let previousX = Number.MIN_SAFE_INTEGER;\n    let previousY = 0;\n    let nextX = x[0] - initialOriginalStep;\n    let nextY = 0;\n    let currentValue = 0;\n    let slope = 0;\n    let intercept = 0;\n    let sumAtMin = 0;\n    let sumAtMax = 0;\n    let i = 0; // index of input\n    let j = 0; // index of output\n    let add = 0;\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        if (previousX <= min && min <= nextX) {\n            add = integral(0, min - previousX, slope, previousY);\n            sumAtMin = currentValue + add;\n        }\n        while (nextX - max >= 0) {\n            // no overlap with original point, just consume current value\n            add = integral(0, max - previousX, slope, previousY);\n            sumAtMax = currentValue + add;\n            output[j++] = (sumAtMax - sumAtMin) / step;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            sumAtMin = sumAtMax;\n        }\n        currentValue += integral(previousX, nextX, slope, intercept);\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else if (i === xLength) {\n            nextX += lastOriginalStep;\n            nextY = 0;\n        }\n        slope = getSlope(previousX, previousY, nextX, nextY);\n        intercept = -slope * previousX + previousY;\n    }\n    return output;\n}\nfunction getSlope(x0, y0, x1, y1) {\n    return (y1 - y0) / (x1 - x0);\n}\n//# sourceMappingURL=equallySpacedSmooth.js.map","import { xyCheck } from './xyCheck';\n/**\n * Join x / y values when difference in X is closer than delta.\n * When joining, y values are summed and x values are weighted average\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the xyIntegration function\n */\nexport function xyJoinX(data, options = {}) {\n    xyCheck(data);\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    if (x.length < 2) {\n        return { x, y };\n    }\n    let position = 0;\n    for (let i = 1; i < x.length; i++) {\n        const difference = x[i] - x[i - 1];\n        const currentDelta = deltaIsFunction ? delta((x[i] + x[i - 1]) / 2) : delta;\n        if (difference <= currentDelta) {\n            // we join\n            if (y[position] !== 0 || y[i] !== 0) {\n                x[position] =\n                    (x[position] * y[position] + x[i] * y[i]) / (y[position] + y[i]);\n                y[position] += y[i];\n            }\n        }\n        else {\n            position++;\n            x[position] = x[i];\n            y[position] = y[i];\n        }\n    }\n    x.length = position + 1;\n    y.length = position + 1;\n    return { x, y };\n}\n//# sourceMappingURL=xyJoinX.js.map","import { xFindClosestIndex } from '../x';\nimport { zonesNormalize } from '../zones';\nimport { xyCheck } from './xyCheck';\n/**\n * Reduce the number of points while keeping visually the same noise. Practical to\n * display many spectra as SVG. If you want a similar looking spectrum you should still however\n * generate at least 4x the nbPoints that is being displayed.\n *\n * SHOULD NOT BE USED FOR DATA PROCESSING !!!\n * You should rather use ml-xy-equally-spaced to make further processing\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns Object with x and y arrays\n */\nexport function xyReduce(data, options = {}) {\n    xyCheck(data);\n    // todo we should check that the single point is really in the range and the zones\n    if (data.x.length < 2) {\n        return {\n            x: Float64Array.from(data.x),\n            y: Float64Array.from(data.y),\n        };\n    }\n    const { x, y } = data;\n    const { from = x[0], to = x.at(-1), nbPoints = 4001, optimize = false, } = options;\n    let { zones = [] } = options;\n    zones = zonesNormalize(zones, { from, to });\n    if (zones.length === 0)\n        zones = [{ from, to }]; // we take everything\n    const { internalZones, totalPoints } = getInternalZones(zones, x);\n    // we calculate the number of points per zone that we should keep\n    if (totalPoints <= nbPoints) {\n        return notEnoughPoints(x, y, internalZones, totalPoints);\n    }\n    // need to xyReduce number of points\n    const ratio = nbPoints / totalPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < internalZones.length - 1; i++) {\n        const zone = internalZones[i];\n        zone.nbPoints = Math.round(zone.nbPoints * ratio);\n        currentTotal += zone.nbPoints;\n    }\n    internalZones.at(-1).nbPoints = nbPoints - currentTotal;\n    const newX = [];\n    const newY = [];\n    for (const zone of internalZones) {\n        if (!zone.nbPoints)\n            continue;\n        appendFromTo(zone.fromIndex, zone.toIndex, zone.nbPoints);\n    }\n    return { x: newX, y: newY };\n    /**\n     * AppendFromTo.\n     * @param fromIndex - From.\n     * @param  toIndex - To.\n     * @param zoneNbPoints - NbPoints.\n     */\n    function appendFromTo(fromIndex, toIndex, zoneNbPoints) {\n        if (zoneNbPoints === 1) {\n            newX.push(x[Math.round((toIndex - fromIndex) / 2)]);\n            newY.push(y[Math.round((toIndex - fromIndex) / 2)]);\n            return;\n        }\n        if (zoneNbPoints === 2) {\n            newX.push(x[fromIndex], x[toIndex]);\n            newY.push(y[fromIndex], y[toIndex]);\n            return;\n        }\n        newX.push(x[fromIndex]);\n        newY.push(y[fromIndex]);\n        if (zoneNbPoints % 2 === 0) {\n            zoneNbPoints = zoneNbPoints / 2 + 1;\n        }\n        else {\n            zoneNbPoints = (zoneNbPoints - 1) / 2 + 1;\n        }\n        // we will need to make some kind of min / max because there are too many points\n        // we will always keep the first point and the last point\n        const slot = (x[toIndex] - x[fromIndex]) / (zoneNbPoints - 1);\n        let currentX = x[fromIndex] + slot;\n        let first = true;\n        let minY = Number.POSITIVE_INFINITY;\n        let xyMaxY = Number.NEGATIVE_INFINITY;\n        for (let i = fromIndex + 1; i <= toIndex; i++) {\n            if (first) {\n                minY = y[i];\n                xyMaxY = y[i];\n                first = false;\n            }\n            else {\n                if (y[i] < minY)\n                    minY = y[i];\n                if (y[i] > xyMaxY)\n                    xyMaxY = y[i];\n            }\n            if (x[i] >= currentX || i === toIndex) {\n                if (optimize) {\n                    if (minY > newY[newX.length - 1]) {\n                        // we can skip the intermediate value\n                    }\n                    else if (xyMaxY < newY[newX.length - 1]) {\n                        // we can skip the intermediate value\n                        xyMaxY = minY;\n                    }\n                    else {\n                        newX.push(currentX - slot / 2);\n                        newY.push(minY);\n                    }\n                }\n                else {\n                    newX.push(currentX - slot / 2);\n                    newY.push(minY);\n                }\n                newX.push(currentX);\n                newY.push(xyMaxY);\n                currentX += slot;\n                first = true;\n            }\n        }\n    }\n}\nexport function notEnoughPoints(x, y, internalZones, totalPoints) {\n    const newX = new Float64Array(totalPoints);\n    const newY = new Float64Array(totalPoints);\n    let index = 0;\n    for (const zone of internalZones) {\n        for (let i = zone.fromIndex; i < zone.toIndex + 1; i++) {\n            newX[index] = x[i];\n            newY[index] = y[i];\n            index++;\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\nexport function getInternalZones(zones, x) {\n    // for each zone we should know the first index, the last index and the number of points\n    const internalZones = [];\n    let totalPoints = 0;\n    for (const zone of zones) {\n        let fromIndex = xFindClosestIndex(x, zone.from);\n        let toIndex = xFindClosestIndex(x, zone.to);\n        if (fromIndex > 0 && x[fromIndex] > zone.from) {\n            fromIndex--;\n        }\n        if (toIndex < x.length - 1 && x[toIndex] < zone.to) {\n            toIndex++;\n        }\n        const nbPoints = toIndex - fromIndex + 1;\n        internalZones.push({\n            from: zone.from,\n            to: zone.to,\n            fromIndex,\n            toIndex,\n            nbPoints,\n        });\n        totalPoints += nbPoints;\n    }\n    return { internalZones, totalPoints };\n}\n//# sourceMappingURL=xyReduce.js.map","import { xIsMonotonic } from '../x';\n/**\n * This function performs a quick sort of the x array while transforming the y array to preserve the coordinates.\n * @param data - Object that contains property x (Array) and y (Array)\n */\nexport function xySortX(data) {\n    const { x, y } = data;\n    if (xIsMonotonic(x) && x.length > 1) {\n        if (x[0] < x[1]) {\n            return {\n                x: Float64Array.from(x),\n                y: Float64Array.from(y),\n            };\n        }\n        else {\n            return {\n                x: Float64Array.from(x).reverse(),\n                y: Float64Array.from(y).reverse(),\n            };\n        }\n    }\n    const xyObject = Array.from(x, (val, index) => ({\n        x: val,\n        y: y[index],\n    })).sort((a, b) => a.x - b.x);\n    const response = {\n        x: new Float64Array(x.length),\n        y: new Float64Array(y.length),\n    };\n    for (let i = 0; i < x.length; i++) {\n        response.x[i] = xyObject[i].x;\n        response.y[i] = xyObject[i].y;\n    }\n    return response;\n}\n//# sourceMappingURL=xySortX.js.map","import { xyCheck } from './xyCheck';\nimport { xySortX } from './xySortX';\n/**\n * Ensure x values are unique\n * @param data - Object that contains property x (Array) and y (Array)\n * @param options - Object containing a property algorithm (can be 'sum' or 'average', the latter being the default value), and a property isSorted (boolean indicating if the x-array is sorted).\n */\nexport function xyUniqueX(data, options = {}) {\n    xyCheck(data);\n    if (data.x.length === 0) {\n        return { x: [], y: [] };\n    }\n    const { algorithm = 'average', isSorted = true } = options;\n    if (!isSorted) {\n        data = xySortX(data);\n    }\n    switch (algorithm) {\n        case 'average':\n            return average(data);\n        case 'sum':\n            return sum(data);\n        default:\n            throw new Error(`unknown algorithm: ${String(algorithm)}`);\n    }\n}\n/**\n * Average.\n * @param data - Input.\n * @returns Result.\n */\nfunction average(data) {\n    const x = [];\n    const y = [];\n    let cumulativeY = data.y[0];\n    let divider = 1;\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY / divider);\n            cumulativeY = 0;\n            divider = 0;\n        }\n        cumulativeY += data.y[i];\n        divider++;\n    }\n    x.push(data.x.at(-1));\n    y.push(cumulativeY / divider);\n    return { x, y };\n}\n/**\n * Sum.\n * @param data - Input.\n * @returns Result.\n */\nfunction sum(data) {\n    const x = [];\n    const y = [];\n    let cumulativeY = data.y[0];\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY);\n            cumulativeY = 0;\n        }\n        cumulativeY += data.y[i];\n    }\n    x.push(data.x.at(-1));\n    y.push(cumulativeY);\n    return { x, y };\n}\n//# sourceMappingURL=xyUniqueX.js.map","/**\n * GetSlots.\n * @param data - data.\n * @param options - Options.\n */\nexport function getSlots(data, options = {}) {\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    const possibleXs = Float64Array.from(data.flatMap((spectrum) => spectrum.x)).sort();\n    if (possibleXs.length === 0) {\n        throw new Error('can not process empty arrays');\n    }\n    let currentSlot = {\n        from: possibleXs[0],\n        to: possibleXs[0],\n        average: possibleXs[0],\n        sum: possibleXs[0],\n        number: 1,\n    };\n    const slots = [currentSlot];\n    for (let i = 1; i < possibleXs.length; i++) {\n        const currentDelta = deltaIsFunction ? delta(possibleXs[i]) : delta;\n        if (possibleXs[i] - currentSlot.to <= currentDelta) {\n            currentSlot.to = possibleXs[i];\n            currentSlot.number++;\n            currentSlot.sum += possibleXs[i];\n            currentSlot.average = currentSlot.sum / currentSlot.number;\n        }\n        else {\n            currentSlot = {\n                from: possibleXs[i],\n                to: possibleXs[i],\n                average: possibleXs[i],\n                sum: possibleXs[i],\n                number: 1,\n            };\n            slots.push(currentSlot);\n        }\n    }\n    return slots;\n}\n//# sourceMappingURL=getSlots.js.map","/**\n * Merge DataXY\n * We have an array of DataXY and the goal is to merge all the values for which the deltaX is small or equal to delta.\n * X values are weighted average\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayWeightedMerge(data, options = {}) {\n    let { delta = 1 } = options;\n    if (typeof delta === 'number') {\n        const deltaNumber = delta;\n        delta = () => deltaNumber;\n    }\n    data = data.filter((spectrum) => spectrum.x.length > 0);\n    if (data.length === 0)\n        return { x: [], y: [] };\n    const x = [];\n    const y = [];\n    const positions = new Array(data.length).fill(0);\n    const point = { x: 0, y: 0 };\n    nextValue(data, positions, point);\n    const slot = {\n        maxX: point.x + delta(point.x),\n        sumY: point.y,\n        sumXY: point.y * point.x,\n    };\n    while (data.length > 0) {\n        nextValue(data, positions, point);\n        const sameSlot = point.x <= slot.maxX;\n        if (!sameSlot) {\n            if (slot.sumY > 0) {\n                x.push(slot.sumXY / slot.sumY);\n                y.push(slot.sumY);\n            }\n            slot.sumY = 0;\n            slot.sumXY = 0;\n        }\n        slot.sumY += point.y;\n        slot.sumXY += point.x * point.y;\n        slot.maxX = point.x + delta(point.x);\n        if (data.length === 0 && slot.sumY > 0) {\n            x.push(slot.sumXY / slot.sumY);\n            y.push(slot.sumY);\n        }\n    }\n    return { x, y };\n}\n/**\n * NextValue.\n * @param data - data.\n * @param positions - Positions array.\n * @param point - Point.\n */\nfunction nextValue(data, positions, point) {\n    let minIndex = 0;\n    let minX = data[0].x[positions[0]];\n    for (let i = 1; i < data.length; i++) {\n        const currentX = data[i].x[positions[i]];\n        if (currentX < minX) {\n            minX = currentX;\n            minIndex = i;\n        }\n    }\n    point.x = minX;\n    point.y = data[minIndex].y[positions[minIndex]];\n    positions[minIndex]++;\n    if (positions[minIndex] === data[minIndex].x.length) {\n        positions.splice(minIndex, 1);\n        data.splice(minIndex, 1);\n    }\n}\n//# sourceMappingURL=xyArrayWeightedMerge.js.map","/**\n * Throws an error if it's not an array of x,y objects.\n * Only checks the first element.\n * @param points - List of points.\n * @param options - Additional checks.\n */\nexport function xyObjectCheck(points, options = {}) {\n    const { minLength = 0 } = options;\n    if (!Array.isArray(points)) {\n        throw new Error('points must be an array of {x,y} objects');\n    }\n    if (points.length > 0 &&\n        (typeof points[0].x !== 'number' || typeof points[0].y !== 'number')) {\n        throw new Error('points must be an array of {x,y} objects');\n    }\n    if (minLength && points.length < minLength) {\n        throw new Error(`points must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xyObjectCheck.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the max x value and return a {x,y,index} point\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMaxXPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length === 0)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].x > current.x) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMaxXPoint.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the min x value and return a {x,y,index} point\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMinXPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length === 0)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].x < current.x) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMinXPoint.js.map","import { createNumberArray } from '../utils';\n/**\n * Create a new matrix based on the size of the current one or by using specific dimensions.\n * @param options\n */\nexport function matrixCreateEmpty(options) {\n    const { matrix, nbRows = matrix?.length || 1, nbColumns = matrix?.[0].length || 1, ArrayConstructor = Float64Array, } = options;\n    const newMatrix = [];\n    for (let row = 0; row < nbRows; row++) {\n        newMatrix.push(createNumberArray(ArrayConstructor, nbColumns));\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixCreateEmpty.js.map","export function matrixCheck(data) {\n    if (data.length === 0 || data[0].length === 0) {\n        throw new RangeError('matrix must contain data');\n    }\n    const firstLength = data[0].length;\n    for (let i = 1; i < data.length; i++) {\n        if (data[i].length !== firstLength) {\n            throw new RangeError('all rows must has the same length');\n        }\n    }\n}\n//# sourceMappingURL=matrixCheck.js.map","/**\n * Clone a matrix.\n * @param matrix\n */\nexport function matrixClone(matrix) {\n    return matrix.map((row) => row.slice(0));\n}\n//# sourceMappingURL=matrixClone.js.map","/**\n * Checks if the specified submatrix boundaries are within the valid range of the given matrix.\n * @param matrix - The matrix to check the boundaries against.\n * @param boundaries - The boundaries of the submatrix.\n * @throws {RangeError} If any of the specified boundaries are out of the matrix's range.\n */\nexport function matrixCheckRanges(matrix, boundaries) {\n    const { startRow, endRow, startColumn, endColumn } = boundaries;\n    if (startRow > endRow ||\n        startColumn > endColumn ||\n        startRow < 0 ||\n        startRow >= matrix.length ||\n        endRow < 0 ||\n        endRow >= matrix.length ||\n        startColumn < 0 ||\n        startColumn >= matrix[0].length ||\n        endColumn < 0 ||\n        endColumn >= matrix[0].length) {\n        throw new RangeError('submatrix indices are out of range');\n    }\n}\n//# sourceMappingURL=matrixCheckRanges.js.map","/**\n * Get min and max of the absolute values of Z.\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxAbsoluteZ(matrix) {\n    if (matrix.length === 0 || matrix[0].length === 0) {\n        throw new Error('matrixMinMaxAbsoluteZ requires at least 1 row and 1 column');\n    }\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            let value = matrix[row][column];\n            if (value < 0)\n                value *= -1;\n            if (value < min)\n                min = value;\n            if (value > max)\n                max = value;\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxAbsoluteZ.js.map","import { matrixCheck } from './matrixCheck';\n/**\n * Get min and max Z.\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxZ(matrix) {\n    matrixCheck(matrix);\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = matrix[0][0];\n    let max = matrix[0][0];\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            if (matrix[row][column] < min)\n                min = matrix[row][column];\n            if (matrix[row][column] > max)\n                max = matrix[row][column];\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxZ.js.map","/**\n * Returns the max absolute values of Z.\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMaxAbsoluteZ(matrix) {\n    if (matrix.length === 0 || matrix[0].length === 0) {\n        throw new Error('matrix must have at least 1 row and 1 column');\n    }\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let max = Number.NEGATIVE_INFINITY;\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            const value = Math.abs(matrix[row][column]);\n            if (value > max)\n                max = value;\n        }\n    }\n    return max;\n}\n//# sourceMappingURL=matrixMaxAbsoluteZ.js.map","import { matrixCheck } from './matrixCheck';\n/**\n * Convert a matrix to a flat Float64Array.\n * @param matrix\n */\nexport function matrixToArray(matrix) {\n    matrixCheck(matrix);\n    const nbColumns = matrix[0].length;\n    const flatten = new Float64Array(matrix.length * nbColumns);\n    for (let row = 0; row < matrix.length; row++) {\n        const currentRow = row * nbColumns;\n        for (let column = 0; column < nbColumns; column++) {\n            flatten[currentRow + column] = matrix[row][column];\n        }\n    }\n    return flatten;\n}\n//# sourceMappingURL=matrixToArray.js.map","/**\n * Create an array with numbers starting from \"from\" with step \"step\" of length \"length\".\n * @param options - options\n * @returns - array of distributed numbers with step \"step\" from \"from\"\n */\nexport function createStepArray(options = {}) {\n    const { from = 0, step = 1, length = 1000 } = options;\n    const array = new Float64Array(length);\n    let index = 0;\n    while (index < length) {\n        array[index] = from + step * index;\n        index++;\n    }\n    return array;\n}\n//# sourceMappingURL=createStepArray.js.map","export function getRescaler(options = {}) {\n    const { targetMin = 0, targetMax = 1, clamp = true, algorithmOptions = {}, algorithm = 'linear', } = options;\n    let { originalMin = 0, originalMax = 1 } = options;\n    const convert = getDataConverter(algorithm, algorithmOptions);\n    originalMin = convert(originalMin);\n    originalMax = convert(originalMax);\n    const originalRange = originalMax - originalMin;\n    const targetRange = targetMax - targetMin;\n    return function rescaler(value) {\n        value = convert(value);\n        value = checkRange(value, originalMin, originalMax, clamp);\n        const valueScaled = (value - originalMin) / originalRange;\n        return targetMin + valueScaled * targetRange;\n    };\n}\nfunction getDataConverter(kind = 'linear', options = {}) {\n    return (value) => {\n        switch (kind) {\n            case 'linear':\n                return value;\n            case 'logarithmic':\n                return Math.log10(value);\n            case 'power':\n                return value ** (options.power || 2);\n            default:\n                throw new Error(`Unknown kind ${String(kind)}`);\n        }\n    };\n}\nfunction checkRange(value, min, max, clamp = true) {\n    if (value < min) {\n        if (clamp)\n            return min;\n        throw new RangeError(`Value ${value} is out of range [${min}, ${max}]`);\n    }\n    if (value > max) {\n        if (clamp)\n            return max;\n        throw new RangeError(`Value ${value} is out of range [${min}, ${max}]`);\n    }\n    return value;\n}\n//# sourceMappingURL=getRescaler.js.map","import { xMedian } from '../x';\n/**\n * Returns the median of the absolute matrix.\n * @param matrix\n */\nexport function matrixAbsoluteMedian(matrix) {\n    const nbColumns = matrix[0].length;\n    const flatten = new Float64Array(matrix.length * nbColumns);\n    for (let row = 0; row < matrix.length; row++) {\n        const currentRow = row * nbColumns;\n        for (let column = 0; column < nbColumns; column++) {\n            const value = matrix[row][column];\n            flatten[currentRow + column] = Math.abs(value);\n        }\n    }\n    return xMedian(flatten);\n}\n//# sourceMappingURL=matrixAbsoluteMedian.js.map","import { xMaxValue } from '../x';\nimport { matrixCreateEmpty } from './matrixCreateEmpty';\n/**\n * Numerically encodes the strings in the matrix with an encoding dictionary.\n * @param matrixInitial - Original matrix before encoding.\n * @param dictionary - Dictionary against which to do the encoding.\n * @returns - Encoded matrix.\n */\nexport function matrixApplyNumericalEncoding(matrixInitial, dictionary) {\n    const matrix = matrixCreateEmpty({\n        nbRows: matrixInitial.length,\n        nbColumns: matrixInitial[0].length,\n        ArrayConstructor: Array,\n    });\n    const arrayOfValues = [];\n    for (const key in dictionary) {\n        arrayOfValues.push(dictionary[key]);\n    }\n    let k = xMaxValue(arrayOfValues);\n    for (let i = 0; i < matrix.length; i++) {\n        for (let j = 0; j < matrix[0].length; j++) {\n            if (typeof matrix[i][j] === 'string') {\n                if (matrix[i][j] in dictionary) {\n                    matrix[i][j] = dictionary[matrix[i][j]];\n                }\n                else {\n                    k++;\n                    dictionary[matrix[i][j]] = k;\n                    matrix[i][j] = k;\n                }\n            }\n        }\n    }\n    return matrix;\n}\n//# sourceMappingURL=matrixApplyNumericalEncoding.js.map","import { xCorrelation } from '../x';\nexport function matrixAutoCorrelation(matrix, index = 0) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    if (nbRows < 2) {\n        throw new Error('can not calculate info if matrix contains less than 2 rows');\n    }\n    const targetArray = new Float64Array(nbRows);\n    const sourceArray = new Float64Array(nbRows);\n    const result = new Float64Array(nbColumns);\n    for (let j = 0; j < nbRows; j++) {\n        targetArray[j] = matrix[j][index];\n    }\n    for (let i = 0; i < nbColumns; i++) {\n        for (let j = 0; j < nbRows; j++) {\n            sourceArray[j] = matrix[j][i];\n        }\n        result[i] = xCorrelation(targetArray, sourceArray);\n    }\n    return result;\n}\n//# sourceMappingURL=matrixAutoCorrelation.js.map","export function matrixBoxPlot(matrix) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    if (nbRows < 5) {\n        throw new Error('can not calculate info if matrix contains less than 5 rows');\n    }\n    const info = {\n        q1: new Float64Array(nbColumns),\n        median: new Float64Array(nbColumns),\n        q3: new Float64Array(nbColumns),\n        min: Float64Array.from(matrix[0]),\n        max: Float64Array.from(matrix.at(-1)),\n    };\n    const columnArray = new Float64Array(matrix.length);\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            columnArray[row] = matrix[row][column];\n        }\n        let q1max = 0;\n        let q3min = 0;\n        if (nbRows % 2 === 1) {\n            // odd\n            const middle = (nbRows - 1) / 2;\n            info.median[column] = columnArray[middle];\n            q1max = middle - 1;\n            q3min = middle + 1;\n        }\n        else {\n            // even\n            q3min = nbRows / 2;\n            q1max = q3min - 1;\n            info.median[column] = (columnArray[q1max] + columnArray[q3min]) / 2;\n        }\n        if (q1max % 2 === 0) {\n            info.q1[column] = columnArray[q1max / 2];\n            info.q3[column] = columnArray[(nbRows + q3min - 1) / 2];\n        }\n        else {\n            info.q1[column] =\n                (columnArray[(q1max + 1) / 2] + columnArray[(q1max - 1) / 2]) / 2;\n            const middleOver = (columnArray.length + q3min) / 2;\n            info.q3[column] =\n                (columnArray[middleOver] + columnArray[middleOver - 1]) / 2;\n        }\n    }\n    return info;\n}\n//# sourceMappingURL=matrixBoxPlot.js.map","import { matrixCreateEmpty } from './matrixCreateEmpty';\n/**\n * Center mean of matrix columns.\n * @param matrix - matrix [rows][cols]\n */\nexport function matrixCenterZMean(matrix) {\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows });\n    for (let column = 0; column < nbColumns; column++) {\n        let mean = 0;\n        for (let row = 0; row < nbRows; row++) {\n            mean += matrix[row][column];\n        }\n        mean /= nbRows;\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] = matrix[row][column] - mean;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixCenterZMean.js.map","import { Matrix } from 'ml-matrix';\nimport { xCorrelation } from '../x';\n/**\n * Calculates a correlation matrix based on the columns of the initial matrix.\n * @param A - matrix [rows][cols]\n */\nexport function matrixColumnsCorrelation(A) {\n    const B = new Matrix(A).transpose();\n    const result = [];\n    for (let i = 0; i < B.rows; i++) {\n        result.push(new Float64Array(B.rows));\n    }\n    for (let i = 0; i < B.rows; i++) {\n        for (let j = i; j < B.rows; j++) {\n            const correlation = xCorrelation(B.getRow(i), B.getRow(j));\n            result[i][j] = correlation;\n            result[j][i] = correlation;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=matrixColumnsCorrelation.js.map","/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2013 Mikola Lysenko\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n  * of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n \n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n \n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n */\n/**\n * The reverse Cuthill-Mckee method is a fast and effective preconditioner for reducing the bandwidth of sparse linear systems.\n * When solving a positive semidefinite linear system using Cholesky factorization, it greatly reduces fill-in.\n * It is a direct conversion to TS from {@link github.com/mikolalysenko/cuthill-mckee}\n * @param list - lower triangular non zeros from a symmetric sparse matrix.\n * @param dimension - matrix dimension\n * @returns A Float64Array where the value at each index represents the new position of the node\n *          in the bandwidth-reduced ordering.\n */\nexport function matrixCuthillMckee(list, dimension) {\n    const adj = new Array(dimension);\n    const visited = new Array(dimension).fill(false);\n    for (let i = 0; i < dimension; ++i) {\n        adj[i] = [];\n    }\n    for (const l of list) {\n        adj[l[0]].push(l[1]);\n    }\n    const toVisit = new Float64Array(dimension);\n    let eol = 0;\n    let ptr = 0;\n    for (let i = 0; i < dimension; ++i) {\n        if (visited[i]) {\n            continue;\n        }\n        toVisit[eol++] = i;\n        visited[i] = true;\n        while (ptr < eol) {\n            const v = toVisit[ptr++];\n            const nbhd = Float64Array.from(adj[v]).sort();\n            for (const u of nbhd) {\n                if (visited[u]) {\n                    continue;\n                }\n                visited[u] = true;\n                toVisit[eol++] = u;\n            }\n        }\n    }\n    const result = new Float64Array(dimension);\n    for (let i = 0; i < dimension; ++i) {\n        result[toVisit[i]] = i;\n    }\n    return result;\n}\n//# sourceMappingURL=matrixCuthillMckee.js.map","import { matrixCheckRanges } from './matrixCheckRanges';\n/**\n * Get a subMatrix from matrix, the function checks if the subMatrix\n * lies within the dimensions of the matrix.\n * @param matrix - The original matrix from which the subMatrix will be extracted.\n * @param options - Options to define the subMatrix boundaries and duplication behavior.\n * @returns The subMatrix extracted from the original matrix.\n */\nexport function matrixGetSubMatrix(matrix, options) {\n    const { startRow = 0, endRow = matrix.length - 1, startColumn = 0, endColumn = matrix[0].length - 1, duplicate = true, } = options;\n    matrixCheckRanges(matrix, { startColumn, startRow, endColumn, endRow });\n    const nbRows = endRow - startRow + 1;\n    const subMatrix = [];\n    if (duplicate) {\n        for (let i = 0; i < nbRows; i++) {\n            subMatrix.push(matrix[startRow + i].slice(startColumn, endColumn + 1));\n        }\n    }\n    else {\n        for (let i = 0; i < nbRows; i++) {\n            subMatrix.push(matrix[startRow + i].subarray(startColumn, endColumn + 1));\n        }\n    }\n    return subMatrix;\n}\n//# sourceMappingURL=matrixGetSubMatrix.js.map","import { xHistogram } from '../x';\nimport { matrixMinMaxAbsoluteZ } from './matrixMinMaxAbsoluteZ';\nimport { matrixMinMaxZ } from './matrixMinMaxZ';\n/**\n * Calculates a histogram of defined number of slots.\n * @param matrix - matrix [rows][cols].\n * @param options - options\n * @returns - Result of the histogram.\n */\nexport function matrixHistogram(matrix, options = {}) {\n    let { min, max } = options;\n    const { absolute, logBaseX, logBaseY, histogram, nbSlots, centerX } = options;\n    if (matrix.length === 0 || matrix[0].length === 0) {\n        throw new Error('matrix must have at least one column and one row');\n    }\n    if (min === undefined || max === undefined) {\n        const minMax = absolute\n            ? matrixMinMaxAbsoluteZ(matrix)\n            : matrixMinMaxZ(matrix);\n        if (min === undefined) {\n            min =\n                logBaseX && minMax.min\n                    ? Math.log(minMax.min) / Math.log(logBaseX)\n                    : minMax.min;\n        }\n        if (max === undefined) {\n            max =\n                logBaseX && minMax.max\n                    ? Math.log(minMax.max) / Math.log(logBaseX)\n                    : minMax.max;\n        }\n    }\n    const xHistogramOptions = {\n        histogram,\n        nbSlots,\n        centerX,\n        absolute,\n        logBaseX,\n        // Skip logBaseY as it's handled below.\n        min,\n        max,\n    };\n    const finalHistogram = xHistogram(matrix[0], xHistogramOptions);\n    xHistogramOptions.histogram = finalHistogram;\n    const nbRows = matrix.length;\n    for (let row = 1; row < nbRows; row++) {\n        xHistogram(matrix[row], xHistogramOptions);\n    }\n    const y = finalHistogram.y;\n    if (logBaseY) {\n        const logOfBase = Math.log10(logBaseY);\n        for (let i = 0; i < y.length; i++) {\n            y[i] = Math.log10(y[i] + 1) / logOfBase;\n        }\n    }\n    return finalHistogram;\n}\n//# sourceMappingURL=matrixHistogram.js.map","import { xMedian } from '../x';\nimport { matrixToArray } from './matrixToArray';\n/**\n * Returns the median of the matrix.\n * @param matrix\n */\nexport function matrixMedian(matrix) {\n    return xMedian(matrixToArray(matrix));\n}\n//# sourceMappingURL=matrixMedian.js.map","import { xNoiseStandardDeviation } from '../x';\nimport { matrixToArray } from './matrixToArray';\n/**\n * Determine noise level using MAD https://en.wikipedia.org/wiki/Median_absolute_deviation\n * Constant to convert mad to sd calculated using https://www.wolframalpha.com/input?i=sqrt%282%29+inverse+erf%280.5%29\n * This assumes a gaussian distribution of the noise.\n * @param matrix\n * @returns Noise level corresponding to one standard deviation.\n */\nexport function matrixNoiseStandardDeviation(matrix) {\n    return xNoiseStandardDeviation(matrixToArray(matrix));\n}\n//# sourceMappingURL=matrixNoiseStandardDeviation.js.map","import { matrixClone } from './matrixClone';\n/**\n * Numerically decodes the matrix using the dictionary.\n * @param matrixInitial\n * @param dictionary - dictionary against which to do the encoding\n * @returns - decoded matrix\n */\nexport function matrixNumericalDecoding(matrixInitial, dictionary) {\n    const matrix = matrixClone(matrixInitial);\n    const invertedDictionary = swap(dictionary);\n    for (let i = 0; i < matrix.length; i++) {\n        for (let j = 0; j < matrix[0].length; j++) {\n            const value = matrix[i][j];\n            if (typeof value === 'number' && value in invertedDictionary) {\n                matrix[i][j] = invertedDictionary[value];\n            }\n        }\n    }\n    return matrix;\n}\nfunction swap(dictionary) {\n    const ret = {};\n    for (const key in dictionary) {\n        ret[dictionary[key]] = key;\n    }\n    return ret;\n}\n//# sourceMappingURL=matrixNumericalDecoding.js.map","import { matrixClone } from './matrixClone';\n/**\n * Numerically encodes the strings in the matrix and returns an encoding dictionary which can be used to encode other matrices\n * @param matrixInitial - original matrix before encoding\n * @returns - dictionary from string to number\n */\nexport function matrixNumericalEncoding(matrixInitial) {\n    const matrix = matrixClone(matrixInitial);\n    const nRows = matrix.length;\n    const nColumns = matrix[0].length;\n    let k = 0;\n    for (let i = 0; i < nRows; i++) {\n        for (let j = 0; j < nColumns; j++) {\n            const value = matrix[i][j];\n            if (typeof value === 'number' && value > k) {\n                k = value;\n            }\n        }\n    }\n    const dictCategoricalToNumerical = {};\n    for (let i = 0; i < nRows; i++) {\n        for (let j = 0; j < nColumns; j++) {\n            const value = matrix[i][j];\n            if (typeof value === 'string') {\n                if (value in dictCategoricalToNumerical) {\n                    matrix[i][j] = dictCategoricalToNumerical[value];\n                }\n                else {\n                    k++;\n                    dictCategoricalToNumerical[value] = k;\n                    matrix[i][j] = k;\n                }\n            }\n        }\n    }\n    return { matrix: matrix, dictCategoricalToNumerical };\n}\n//# sourceMappingURL=matrixNumericalEncoding.js.map","import { Matrix } from 'ml-matrix';\nimport { xMedian } from '../x';\n/**\n * Performs a Probabilistic quotient normalization (PQN) over the dataset to account dilution based in median spectrum.\n * Dieterle, F., Ross, A., Schlotterbeck, G., & Senn, H. (2006). Probabilistic quotient normalization as robust method to account for dilution of complex biological mixtures. Application in 1H NMR metabonomics. Analytical chemistry, 78(13), 4281-4290.\n * DOI: 10.1021/ac051632c\n * @param matrix - matrix [rows][cols].\n * @param options - options\n * @returns - {data: Normalized dataset, medianOfQuotients: The median of quotients of each variables}\n */\nexport function matrixPQN(matrix, options = {}) {\n    const { max = 100 } = options;\n    const matrixB = new Matrix(matrix);\n    for (let i = 0; i < matrixB.rows; i++) {\n        const normalizationFactor = matrixB.getRowVector(i).norm('frobenius') / max;\n        const row = matrixB.getRowVector(i).div(normalizationFactor);\n        matrixB.setRow(i, row);\n    }\n    const referenceSpectrum = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        const currentVariable = matrixB.getColumn(i);\n        referenceSpectrum.push(xMedian(currentVariable));\n    }\n    const medianOfQuotients = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        const quotients = matrixB.getColumnVector(i).div(referenceSpectrum[i]);\n        medianOfQuotients.push(xMedian(quotients.getColumn(0)));\n    }\n    for (let i = 0; i < matrixB.rows; i++) {\n        matrixB.mulRow(i, 1 / medianOfQuotients[i]);\n    }\n    return {\n        data: matrixB.to2DArray(),\n        medianOfQuotients,\n    };\n}\n//# sourceMappingURL=matrixPQN.js.map","import { matrixCheckRanges } from './matrixCheckRanges';\n/**\n * Set in-place a subMatrix to matrix, the function check if the subMatrix\n * lies into the dimensions of matrix.\n * @param matrix - matrix that will receive the new element values.\n * @param subMatrix - matrix with equal or less size than matrix.\n * @param startRow - row index in matrix for the first row in subMatrix.\n * @param startColumn - column index in matrix for the first column in subMatrix.\n * @returns The modified `matrix`.\n */\nexport function matrixSetSubMatrix(matrix, subMatrix, startRow, startColumn) {\n    const endRow = startRow + subMatrix.length - 1;\n    const endColumn = startColumn + subMatrix[0].length - 1;\n    matrixCheckRanges(matrix, { startRow, endRow, startColumn, endColumn });\n    for (let i = 0; i < subMatrix.length; i++) {\n        for (let j = 0; j < subMatrix[0].length; j++) {\n            matrix[startRow + i][startColumn + j] = subMatrix[i][j];\n        }\n    }\n    return matrix;\n}\n//# sourceMappingURL=matrixSetSubMatrix.js.map","import { matrixCreateEmpty } from './matrixCreateEmpty';\nimport { matrixMaxAbsoluteZ } from './matrixMaxAbsoluteZ';\n/**\n * Rescale a matrix around 0 taking into account the absolute max value.\n * @param matrix - matrix [rows][cols].\n * @param options - Options.\n */\nexport function matrixZPivotRescale(matrix, options = {}) {\n    const { max = 1, ArrayConstructor } = options;\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows, ArrayConstructor });\n    const currentMax = matrixMaxAbsoluteZ(matrix);\n    for (let column = 0; column < nbColumns; column++) {\n        const factor = max / currentMax;\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] = matrix[row][column] * factor;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixZPivotRescale.js.map","import { matrixCreateEmpty } from './matrixCreateEmpty';\nimport { matrixMinMaxZ } from './matrixMinMaxZ';\n/**\n * Rescale a matrix between min and max values.\n * @param matrix - matrix [rows][cols].\n * @param options - Options.\n */\nexport function matrixZRescale(matrix, options = {}) {\n    const { min = 0, max = 1, ArrayConstructor } = options;\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows, ArrayConstructor });\n    const { min: currentMin, max: currentMax } = matrixMinMaxZ(matrix);\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] =\n                (matrix[row][column] - currentMin) * factor + min;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixZRescale.js.map","import { matrixCreateEmpty } from './matrixCreateEmpty';\n/**\n * Rescale the matrix per column for which we get the min and max values.\n * @param matrix - matrix [rows][cols].\n * @param options - Options.\n */\nexport function matrixZRescalePerColumn(matrix, options = {}) {\n    const { min = 0, max = 1 } = options;\n    const nbColumns = matrix[0].length;\n    const nbRows = matrix.length;\n    const newMatrix = matrixCreateEmpty({ nbColumns, nbRows });\n    for (let column = 0; column < nbColumns; column++) {\n        let currentMin = matrix[0][column];\n        let currentMax = matrix[0][column];\n        for (let row = 1; row < nbRows; row++) {\n            if (matrix[row][column] < currentMin)\n                currentMin = matrix[row][column];\n            if (matrix[row][column] > currentMax)\n                currentMax = matrix[row][column];\n        }\n        const factor = (max - min) / (currentMax - currentMin);\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] =\n                (matrix[row][column] - currentMin) * factor + min;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixZRescalePerColumn.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Stringify an object and convert all typed arrays to arrays\n * @param object\n * @param replacer\n * @param space\n * @returns\n */\nexport function stringify(object, replacer, space) {\n    const internalReplacer = (key, value) => {\n        if (ArrayBuffer.isView(value)) {\n            value = Array.from(value);\n        }\n        if (replacer) {\n            return replacer(key, value);\n        }\n        return value;\n    };\n    return JSON.stringify(object, internalReplacer, space);\n}\n//# sourceMappingURL=stringify.js.map","import { xAbsolute } from './xAbsolute';\nimport { xMedian } from './xMedian';\n/**\n * This function calculates the median after taking the xAbsolute values of the points.\n * @param array - the array for which we want to calculate the absolute value\n * @returns - median\n */\nexport function xAbsoluteMedian(array) {\n    return xMedian(xAbsolute(array));\n}\n//# sourceMappingURL=xAbsoluteMedian.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\nexport function xAbsoluteSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sum = 0;\n    for (let i = fromIndex; i <= toIndex; i++) {\n        sum += Math.abs(array[i]);\n    }\n    return sum;\n}\n//# sourceMappingURL=xAbsoluteSum.js.map","/**\n * Will apply a function on each element of the array described as a string\n * By default we will use as variable 'x'\n * In front of sequence of lowercase we will add 'Math.'. This allows to write\n * `sin(x) + cos(x)` and it will be replace internally by (x) => (Math.sin(x) + Math.cos(x))\n * @param array\n * @param options\n * @returns\n */\nexport function xApplyFunctionStr(array, options = {}) {\n    const { variableLabel = 'x', fctString = variableLabel } = options;\n    const fct = new Function(variableLabel, `return Number(${fctString\n        .replaceAll(/(?<before>^|\\W)(?<after>[\\da-z]{2,}\\()/g, '$<before>Math.$<after>')\n        .replaceAll('Math.Math', 'Math')})`);\n    const toReturn = Float64Array.from(array);\n    for (let i = 0; i < array.length; i++) {\n        toReturn[i] = fct(array[i]);\n        if (Number.isNaN(toReturn[i])) {\n            throw new Error(`The callback ${fctString} does not return a number: ${array[i]}`);\n        }\n    }\n    return toReturn;\n}\n//# sourceMappingURL=xApplyFunctionStr.js.map","import { xCrossCorrelation } from './xCrossCorrelation';\n/**\n * Calculates the auto-correlation of an array\n * @param A - the array for which to calculate the auto-correlation\n * @param options - Options\n */\nexport function xAutoCorrelation(A, options = {}) {\n    return xCrossCorrelation(A, A, options);\n}\n//# sourceMappingURL=xAutoCorrelation.js.map","import { xBoxPlot } from './xBoxPlot';\n/**\n * Calculating the box plot of the array with outliers\n * Values are outliers if they are below Q1 - 1.5 * IQR or above Q3 + 1.5 * IQR\n * @param array - data\n * @param options\n * @returns - q1, median, q3, min, max, outliers\n */\nexport function xBoxPlotWithOutliers(array, options = {}) {\n    const info = {\n        ...xBoxPlot(array, options),\n        outliers: [],\n    };\n    const iqr = info.q3 - info.q1;\n    const min = info.q1 - 1.5 * iqr;\n    const max = info.q3 + 1.5 * iqr;\n    // we need to recalculate the min and the max because they could be outliers\n    info.min = info.median;\n    info.max = info.median;\n    for (const value of array) {\n        if (value < min || value > max) {\n            info.outliers.push(value);\n        }\n        else {\n            if (value < info.min)\n                info.min = value;\n            if (value > info.max)\n                info.max = value;\n        }\n    }\n    return info;\n}\n//# sourceMappingURL=xBoxPlotWithOutliers.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from './getOutputArray';\n/**\n * This function divide the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array or number\n * @param options - options\n */\nexport function xDivide(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new RangeError('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = Number(array2);\n    }\n    const array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xDivide.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the maximal value of an array of values\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxAbsoluteValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] >= 0) {\n            if (array[i] > maxValue) {\n                maxValue = array[i];\n            }\n        }\n        else if (-array[i] > maxValue) {\n            maxValue = -array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxAbsoluteValue.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the index of the maximum of the given values\n * @param array - array of numbers\n * @param  options - options\n * @returns - index\n */\nexport function xMaxIndex(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxIndex = fromIndex;\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > array[maxIndex]) {\n            maxIndex = i;\n        }\n    }\n    return maxIndex;\n}\n//# sourceMappingURL=xMaxIndex.js.map","import { xCheckLengths } from './xCheckLengths';\n/**\n * This function calculates the mean absolute error.\n * @param array1 - first array\n * @param array2 - second array\n */\nexport function xMeanAbsoluteError(array1, array2) {\n    xCheckLengths(array1, array2);\n    let sum = 0;\n    for (let i = 0; i < array1.length; i++) {\n        sum += Math.abs(array1[i] - array2[i]);\n    }\n    return sum / array1.length;\n}\n//# sourceMappingURL=xMeanAbsoluteError.js.map","import { xCheckLengths } from './xCheckLengths';\n/**\n * This function calculates the mean squared error.\n * @param array1 -first array\n * @param array2 - second array\n */\nexport function xMeanSquaredError(array1, array2) {\n    xCheckLengths(array1, array2);\n    let sum = 0;\n    for (let i = 0; i < array1.length; i++) {\n        sum += (array1[i] - array2[i]) ** 2;\n    }\n    return sum / array1.length;\n}\n//# sourceMappingURL=xMeanSquaredError.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the weighted mean value of an array of values.\n * @deprecated please use xyMassCenter\n * @param array - array of numbers\n * @param weights - array of weights\n * @param options - options\n */\nexport function xMeanWeighted(array, weights, options = {}) {\n    xCheck(array, { minLength: 1 });\n    xCheck(weights);\n    if (array.length !== weights.length) {\n        throw new Error('array and weights must have the same length');\n    }\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    // normalize weights\n    let sumWeights = 0;\n    let sumValue = array[fromIndex] * weights[fromIndex];\n    sumWeights += weights[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i] * weights[i];\n        sumWeights += weights[i];\n    }\n    if (sumWeights === 0) {\n        // We throw because the case is not well defined\n        throw new Error('sum of weights must be > 0');\n    }\n    return sumValue / sumWeights;\n}\n//# sourceMappingURL=xMeanWeighted.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the index of the minimum of the given values.\n * @param array - array of numbers\n * @param options - options\n * @returns - index\n */\nexport function xMinIndex(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minIndex = fromIndex;\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < array[minIndex]) {\n            minIndex = i;\n        }\n    }\n    return minIndex;\n}\n//# sourceMappingURL=xMinIndex.js.map","import { xCheck } from './xCheck';\n/**\n * Return min and max values of an array.\n * @param array - array of number\n * @returns - Object with 2 properties, min and max\n */\nexport function xMinMaxDelta(array) {\n    xCheck(array, {\n        minLength: 2,\n    });\n    let minDelta = array[1] - array[0];\n    let maxDelta = minDelta;\n    for (let i = 0; i < array.length - 1; i++) {\n        const delta = array[i + 1] - array[i];\n        if (delta < minDelta)\n            minDelta = delta;\n        if (delta > maxDelta)\n            maxDelta = delta;\n    }\n    return { min: minDelta, max: maxDelta };\n}\n//# sourceMappingURL=xMinMaxDelta.js.map","/**\n * Calculates the mode of an array\n * @param input - Array containing values\n * @returns - mode\n */\nexport function xMode(input) {\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    let maxValue = 0;\n    let maxCount = 0;\n    let count = 0;\n    const counts = {};\n    for (let i = 0; i < input.length; ++i) {\n        const element = input[i];\n        count = counts[element];\n        if (count) {\n            counts[element]++;\n            count++;\n        }\n        else {\n            counts[element] = 1;\n            count = 1;\n        }\n        if (count > maxCount) {\n            maxCount = count;\n            maxValue = input[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMode.js.map","import { getOutputArray } from './getOutputArray';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xSum } from './xSum';\n/**\n * Divides the data with either the sum, the absolute sum or the maximum of the data\n * @param input - Array containing values\n * @param options - options\n * @returns - normalized data\n */\nexport function xNormed(input, options = {}) {\n    const { algorithm = 'absolute', value = 1 } = options;\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    if (input.length === 0) {\n        throw new Error('input must not be empty');\n    }\n    switch (algorithm) {\n        case 'absolute': {\n            const absoluteSumValue = absoluteSum(input) / value;\n            if (absoluteSumValue === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / absoluteSumValue;\n            }\n            return output;\n        }\n        case 'max': {\n            const currentMaxValue = xMaxValue(input);\n            if (currentMaxValue === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            const factor = value / currentMaxValue;\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] * factor;\n            }\n            return output;\n        }\n        case 'sum': {\n            const sumFactor = xSum(input) / value;\n            if (sumFactor === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / sumFactor;\n            }\n            return output;\n        }\n        default:\n            throw new Error(`unknown algorithm: ${String(algorithm)}`);\n    }\n}\nfunction absoluteSum(input) {\n    let sumValue = 0;\n    for (let i = 0; i < input.length; i++) {\n        sumValue += Math.abs(input[i]);\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xNormed.js.map","import { xCheck } from './xCheck';\nimport { xStandardDeviation } from './xStandardDeviation';\n/**\n * Pareto scaling, which uses the square root of standard deviation as the scaling factor, circumvents the amplification of noise by retaining a small portion of magnitude information.\n * Noda, I. (2008). Scaling techniques to enhance two-dimensional correlation spectra. Journal of Molecular Structure, 883, 216-227.\n * DOI: 10.1016/j.molstruc.2007.12.026\n * @param array - array of number\n */\nexport function xParetoNormalization(array) {\n    xCheck(array);\n    const result = new Float64Array(array.length);\n    const sqrtSD = Math.sqrt(xStandardDeviation(array));\n    for (let i = 0; i < array.length; i++) {\n        result[i] = array[i] / sqrtSD;\n    }\n    return result;\n}\n//# sourceMappingURL=xParetoNormalization.js.map","import { getOutputArray } from './getOutputArray';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xMinValue } from './xMinValue';\n/**\n * Function used to rescale data\n * @param input - input for the rescale\n * @param options - options\n * @returns rescaled data\n */\nexport function xRescale(input, options = {}) {\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    const currentMin = xMinValue(input);\n    const currentMax = xMaxValue(input);\n    if (currentMin === currentMax) {\n        throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n    }\n    const { min = 0, max = 1 } = options;\n    if (min >= max) {\n        throw new RangeError('min option must be smaller than max option');\n    }\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let i = 0; i < input.length; i++) {\n        output[i] = (input[i] - currentMin) * factor + min;\n    }\n    return output;\n}\n//# sourceMappingURL=xRescale.js.map","import { xMaxValue } from './xMaxValue';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a maximum within a rolling window\n * @param array - array\n * @param options - options\n */\nexport function xRollingMax(array, options = {}) {\n    return xRolling(array, xMaxValue, options);\n}\n//# sourceMappingURL=xRollingMax.js.map","import { xMedian } from './xMedian';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - options\n */\nexport function xRollingMedian(array, options = {}) {\n    return xRolling(array, xMedian, options);\n}\n//# sourceMappingURL=xRollingMedian.js.map","import { xMinValue } from './xMinValue';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a minimum within a rolling window\n * @param array - array\n * @param options - options\n */\nexport function xRollingMin(array, options = {}) {\n    return xRolling(array, xMinValue, options);\n}\n//# sourceMappingURL=xRollingMin.js.map","import { xCheck } from './xCheck';\n/**\n * Sample within the array\n * @param array - array from which to sample\n * @param options - options\n * @returns - array with evenly spaced elements\n * @link https://en.wikipedia.org/wiki/Sampling_(signal_processing)\n */\nexport function xSampling(array, options = {}) {\n    const { length = 10 } = options;\n    xCheck(array);\n    if (length === array.length) {\n        return Float64Array.from(array);\n    }\n    else if (length > array.length) {\n        throw new RangeError('length must be smaller than the array length');\n    }\n    else {\n        return downSampling(array, length);\n    }\n}\n/**\n * Downsample within the array\n * @param array - array from which to sample\n * @param length\n * @returns - array with evenly spaced elements\n * @link https://en.wikipedia.org/wiki/Downsampling_(signal_processing)\n */\nfunction downSampling(array, length) {\n    const returnArray = new Float64Array(length);\n    const delta = (array.length - 1) / (length - 1);\n    for (let i = 0; i < length; i++) {\n        returnArray[i] = array[Math.round(i * delta)];\n    }\n    return returnArray;\n}\n//# sourceMappingURL=xSampling.js.map","import { xSequentialFillFromStep } from './xSequentialFillFromStep';\nexport function xSequentialFillFromTo(parameters, options = {}) {\n    const { from, to, size } = parameters;\n    const step = (to - from) / (size - 1);\n    return xSequentialFillFromStep({ from, step, size }, options);\n}\n//# sourceMappingURL=xSequentialFillFromTo.js.map","/**\n * Function that sorts arrays or Float64Arrays in ascending order in place !\n * This method is optimized for typed arrays.\n * @param array - array to sort\n * @returns sorted array\n */\nexport function xSortAscending(array) {\n    if (ArrayBuffer.isView(array)) {\n        return array.sort();\n    }\n    else if (Array.isArray(array)) {\n        return array.sort((a, b) => a - b);\n    }\n    throw new Error('trying to sort non array');\n}\n//# sourceMappingURL=xSortAscending.js.map","/**\n * XUniqueSorted.\n * @param array - array of numbers\n * @returns - sorted array\n */\nexport function xUniqueSorted(array) {\n    return Float64Array.from(new Set(array)).sort();\n}\n//# sourceMappingURL=xUniqueSorted.js.map","/**\n * Generates a lower triangular non-zeros of the first order smoother matrix (lambda D'D) where D is the derivate of the identity matrix\n * this function in combination with addWeights function can obtain (Q = W + lambda D'D) a penalized least square of Whitaker smoother,\n * it also generates a permutation encoded array.\n * @param dimension - The number of points in the matrix.\n * @param lambda - The factor of smoothness .\n * @returns An object containing the lower triangular non-zero elements of the matrix\n * and the permutation encoded array.\n * @property lowerTriangularNonZeros - The lower triangular non-zero elements of the matrix in triplet form.\n * @property permutationEncodedArray - The permutation encoded array generated using the Cuthill-McKee algorithm.\n */\nexport function createSystemMatrix(dimension, lambda) {\n    const upperTriangularNonZeros = [];\n    const last = dimension - 1;\n    for (let i = 0; i < last; i++) {\n        upperTriangularNonZeros.push([i, i, lambda * 2], [i, i + 1, -1 * lambda]);\n    }\n    upperTriangularNonZeros[0][2] = lambda;\n    upperTriangularNonZeros.push([last, last, lambda]);\n    return upperTriangularNonZeros;\n}\n//# sourceMappingURL=createSystemMatrix.js.map","/**\n * Sort object of array, x has to be monotone.\n * @param data - object of kind {x:[], re:[], im:[]}\n * @returns - sorted array\n */\nexport function xreimSortX(data) {\n    const { x, re, im } = data;\n    if (x.length !== re.length || x.length !== im.length) {\n        throw new TypeError('length of x, re and im must be identical');\n    }\n    if (x.length < 2 || x[0] < x[1])\n        return data;\n    return {\n        x: x.slice(0).reverse(),\n        re: re.slice(0).reverse(),\n        im: im.slice(0).reverse(),\n    };\n}\n//# sourceMappingURL=xreimSortX.js.map","/**\n * This function make a zero filling to re and im part.\n * @param data - object of kind {x:[], re:[], im:[]}\n * @param totalLength - final number of points\n * @returns - data.\n */\nexport function xreimZeroFilling(data, totalLength) {\n    const length = data.x.length;\n    if (totalLength === 0 || length === totalLength)\n        return data;\n    if (length > totalLength) {\n        return {\n            x: data.x.slice(0, totalLength),\n            re: data.re.slice(0, totalLength),\n            im: data.im.slice(0, totalLength),\n        };\n    }\n    const x = data.x;\n    const re = data.re;\n    const im = data.im;\n    const newX = new Float64Array(totalLength);\n    const newRE = new Float64Array(totalLength);\n    const newIM = new Float64Array(totalLength);\n    for (let i = 0; i < length; i++) {\n        newX[i] = x[i];\n        newRE[i] = re[i];\n        newIM[i] = im[i];\n    }\n    const deltaX = (x.at(-1) - x[0]) / (length - 1);\n    for (let i = length; i < totalLength; i++) {\n        newX[i] = newX[i - 1] + deltaX;\n    }\n    return {\n        x: newX,\n        re: newRE,\n        im: newIM,\n    };\n}\n//# sourceMappingURL=xreimZeroFilling.js.map","/**\n * Convert an array of XY arrays to a DataXY object containing x,y arrays\n * @param data - array of arrays [[x,y],[x,y],...]\n */\nexport function xy2ToXY(data) {\n    const xy2 = { x: [], y: [] };\n    for (const xyValue of data) {\n        xy2.x.push(xyValue[0]);\n        xy2.y.push(xyValue[1]);\n    }\n    return xy2;\n}\n//# sourceMappingURL=xy2ToXY.js.map","/**\n * Align data of two spectra by verifying wether x values are in a certain range (`delta`).\n * The two spectra should not have two consecutive x values which difference is\n * smaller than `delta` to achieve good results!\n * @param data1 - First spectrum data\n * @param data2 - Second spectrum data\n * @param options - Options\n */\nexport function xyAlign(data1, data2, options = {}) {\n    const { delta = 1, common = true, x = 'x1' } = options;\n    const result = {\n        x: [],\n        y1: [],\n        y2: [],\n    };\n    let i = 0;\n    let j = 0;\n    const length1 = data1.x.length;\n    const length2 = data2.x.length;\n    while (i < length1 && j < length2) {\n        let maxDiff = 0;\n        if (typeof delta === 'function') {\n            const mean = (data1.x[i] + data2.x[j]) / 2; // is this a good thing to do?\n            maxDiff = delta(mean);\n        }\n        else {\n            maxDiff = delta;\n        }\n        const difference = data1.x[i] - data2.x[j];\n        if (Math.abs(difference) > maxDiff) {\n            if (difference > 0) {\n                if (!common) {\n                    result.x.push(data2.x[j]);\n                    result.y1.push(0);\n                    result.y2.push(data2.y[j]);\n                    if (j === length2 - 1) {\n                        while (i < length1) {\n                            result.x.push(data1.x[i]);\n                            result.y1.push(data1.y[i]);\n                            result.y2.push(0);\n                            i++;\n                        }\n                    }\n                }\n                j++;\n            }\n            else {\n                if (!common) {\n                    result.x.push(data1.x[i]);\n                    result.y1.push(data1.y[i]);\n                    result.y2.push(0);\n                    if (i === length1 - 1) {\n                        while (j < length2) {\n                            result.x.push(data2.x[j]);\n                            result.y1.push(0);\n                            result.y2.push(data2.y[j]);\n                            j++;\n                        }\n                    }\n                }\n                i++;\n            }\n        }\n        else {\n            const weightedX = (data1.x[i] * data1.y[i] + data2.x[j] * data2.y[j]) /\n                (data1.y[i] + data2.y[j]);\n            switch (x) {\n                case 'x1':\n                    result.x.push(data1.x[i]);\n                    break;\n                case 'x2':\n                    result.x.push(data2.x[j]);\n                    break;\n                case 'weighted':\n                    result.x.push(weightedX);\n                    break;\n                default:\n                    throw new Error(`unknown x option value: ${String(x)}`);\n            }\n            result.y1.push(data1.y[i]);\n            result.y2.push(data2.y[j]);\n            i++;\n            j++;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xyAlign.js.map","import { xyJoinX } from '../xy';\nimport { getSlots } from './utils/getSlots';\n/**\n * Aligns data, can be used for spectra\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayAlign(data, options = {}) {\n    const { delta = 1, requiredY = false } = options;\n    data = data.map((spectrum) => xyJoinX(spectrum, { delta }));\n    const slots = getSlots(data, { delta });\n    const x = Float64Array.from(slots.map((slot) => slot.average));\n    const ys = Array.from(data, () => new Float64Array(x.length));\n    const positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        const slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            const spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] <= slot.to) {\n                ys[j][i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    if (requiredY)\n        return filterRequiredY(x, ys);\n    return { x, ys };\n}\nfunction filterRequiredY(x, ys) {\n    const newX = [];\n    const newYs = Array.from(ys, () => []);\n    for (let i = 0; i < x.length; i++) {\n        if (ys.every((y) => y[i] !== 0)) {\n            newX.push(x[i]);\n            for (let j = 0; j < ys.length; j++) {\n                newYs[j].push(ys[j][i]);\n            }\n        }\n    }\n    return { x: newX, ys: newYs };\n}\n//# sourceMappingURL=xyArrayAlign.js.map","import { getSlotsToFirst } from './utils/getSlotsToFirst';\n/**\n * We align all the data/spectra to the first array of X.\n * The alignment is based on the X values of the first spectrum and the `delta` error allowed.\n * If some x values are missing in the first spectrum we will add them\n * @param data - data\n * @param options - options\n */\nexport function xyArrayAlignToFirst(data, options = {}) {\n    const { delta = 1 } = options;\n    const slots = getSlotsToFirst(data, { delta });\n    const x = Float64Array.from(slots.map((slot) => slot.value));\n    const ys = Array.from(data, () => new Float64Array(x.length));\n    const positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        const slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            const spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] < slot.to) {\n                ys[j][i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    return { x, ys };\n}\n//# sourceMappingURL=xyArrayAlignToFirst.js.map","import { xyArrayWeightedMerge } from '../xyArrayWeightedMerge';\n/**\n * GetSlotsToFirst.\n * @param data - data.\n * @param options - Options.\n */\nexport function getSlotsToFirst(data, options = {}) {\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    const firstXs = data[0].x;\n    const slots = [];\n    // we first create the slots based on the first spectrum\n    for (const element of firstXs) {\n        const currentDelta = deltaIsFunction ? delta(element) : delta;\n        slots.push({\n            from: element - currentDelta,\n            to: element + currentDelta,\n            value: element,\n        });\n    }\n    const otherXs = xyArrayWeightedMerge(data.slice(1), options).x;\n    let currentPosition = 0;\n    for (const slot of slots) {\n        while (otherXs[currentPosition] < slot.to &&\n            currentPosition < otherXs.length) {\n            if (otherXs[currentPosition] < slot.from) {\n                const currentDelta = deltaIsFunction\n                    ? delta(otherXs[currentPosition])\n                    : delta;\n                slots.push({\n                    from: otherXs[currentPosition] - currentDelta,\n                    to: otherXs[currentPosition] + currentDelta,\n                    value: otherXs[currentPosition],\n                });\n            }\n            currentPosition++;\n        }\n    }\n    for (let i = currentPosition; i < otherXs.length; i++) {\n        const currentDelta = deltaIsFunction ? delta(otherXs[i]) : delta;\n        slots.push({\n            from: otherXs[i] - currentDelta,\n            to: otherXs[i] + currentDelta,\n            value: otherXs[i],\n        });\n    }\n    slots.sort((a, b) => a.value - b.value);\n    // we prevent slots overlap in the first spectrum\n    for (let i = 0; i < slots.length - 1; i++) {\n        if (slots[i].to > slots[i + 1].from) {\n            const middle = (slots[i].value + slots[i + 1].value) / 2;\n            slots[i].to = middle;\n            slots[i + 1].from = middle;\n        }\n    }\n    return slots;\n}\n//# sourceMappingURL=getSlotsToFirst.js.map","import { xyJoinX } from '../xy';\nimport { getSlots } from './utils/getSlots';\n/**\n * Merge DataXY\n * We have an array of DataXY and the goal is to merge all the values that are the closest possible\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayMerge(data, options = {}) {\n    const { delta = 1 } = options;\n    // We start by checking that the data/spectra don't have peaks too close and we simplify them.\n    data = data.map((spectrum) => xyJoinX(spectrum, { delta }));\n    // At first, we will calculate the X values (simple mean).\n    const slots = getSlots(data, { delta });\n    const x = Float64Array.from(slots.map((slot) => slot.average));\n    const y = new Float64Array(x.length);\n    const positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        const slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            const spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] <= slot.to) {\n                y[i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    return { x, y };\n}\n//# sourceMappingURL=xyArrayMerge.js.map","import { xMean } from '../x';\n/**\n * Finds the covariance of the points.\n * @param data\n * @param options\n * @returns the covariance\n */\nexport function xyCovariance(data, options = {}) {\n    const { x, y } = data;\n    const { unbiased = true } = options;\n    const meanX = xMean(x);\n    const meanY = xMean(y);\n    let error = 0;\n    for (let i = 0; i < x.length; i++) {\n        error += (x[i] - meanX) * (y[i] - meanY);\n    }\n    if (unbiased) {\n        return error / (x.length - 1);\n    }\n    else {\n        return error / x.length;\n    }\n}\n//# sourceMappingURL=xyCovariance.js.map","import { xEnsureFloat64 } from '../x';\nexport function xyEnsureFloat64(data) {\n    return {\n        x: xEnsureFloat64(data.x),\n        y: xEnsureFloat64(data.y),\n    };\n}\n//# sourceMappingURL=xyEnsureFloat64.js.map","import { xIsMonotonic } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Filters x,y values to allow strictly growing values in x-axis.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array).\n */\nexport function xyEnsureGrowingX(data) {\n    xyCheck(data);\n    if (xIsMonotonic(data.x) === 1)\n        return data;\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    let prevX = Number.NEGATIVE_INFINITY;\n    let currentIndex = 0;\n    for (let index = 0; index < x.length; index++) {\n        if (prevX < x[index]) {\n            if (currentIndex < index) {\n                x[currentIndex] = x[index];\n                y[currentIndex] = y[index];\n            }\n            currentIndex++;\n            prevX = x[index];\n        }\n    }\n    x.length = currentIndex;\n    y.length = currentIndex;\n    return { x, y };\n}\n//# sourceMappingURL=xyEnsureGrowingX.js.map","import { zonesNormalize } from '../zones';\nimport { xyCheck } from './xyCheck';\n/**\n * Extract zones from a XY data.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - Array of points\n */\nexport function xyExtract(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    let { zones } = options;\n    zones = zonesNormalize(zones);\n    if (x === undefined ||\n        y === undefined ||\n        !Array.isArray(zones) ||\n        zones.length === 0) {\n        return data;\n    }\n    const newX = [];\n    const newY = [];\n    let currentZone = zones[0];\n    let position = 0;\n    loop: for (let i = 0; i < x.length; i++) {\n        while (currentZone.to < x[i]) {\n            position++;\n            currentZone = zones[position];\n            if (!currentZone) {\n                i = x.length;\n                break loop;\n            }\n        }\n        if (x[i] >= currentZone.from) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xyExtract.js.map","/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns filtered array\n */\nexport function xyFilter(data, options = {}) {\n    const { x, y } = data;\n    const { filter } = options;\n    const newX = [];\n    const newY = [];\n    for (let i = 0; i < x.length; i++) {\n        if (!filter || filter(x[i], y[i])) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilter.js.map","import { xMinMaxValues } from '../x';\n/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param minRelativeYValue - the minimum relative value compare to the Y max value\n * @returns filtered data\n */\nexport function xyFilterMinYValue(data, minRelativeYValue) {\n    if (minRelativeYValue === undefined)\n        return data;\n    const { x, y } = data;\n    const { min, max } = xMinMaxValues(y);\n    const threshold = max * minRelativeYValue;\n    if (min >= threshold)\n        return data;\n    const newX = [];\n    const newY = [];\n    for (let i = 0; i < x.length; i++) {\n        if (y[i] >= threshold) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterMinYValue.js.map","import { xSortDescending } from '../x';\n/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param nbPeaks\n * @returns filtered data\n */\nexport function xyFilterTopYValues(data, nbPeaks) {\n    if (nbPeaks === undefined)\n        return data;\n    if (nbPeaks > data.x.length)\n        return data;\n    const { x, y } = data;\n    const newX = [];\n    const newY = [];\n    const descending = xSortDescending(y.slice());\n    const threshold = descending[nbPeaks - 1];\n    let nbThreshold = 0;\n    for (let i = 0; i < nbPeaks; i++) {\n        if (descending[i] === threshold) {\n            nbThreshold++;\n        }\n    }\n    for (let i = 0; i < x.length; i++) {\n        if (y[i] > threshold) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n        else if (y[i] === threshold) {\n            nbThreshold--;\n            if (nbThreshold >= 0) {\n                newX.push(x[i]);\n                newY.push(y[i]);\n            }\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterTopYValues.js.map","import { zonesNormalize } from '../zones';\n/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns filtered array\n */\nexport function xyFilterX(data, options = {}) {\n    const { x, y } = data;\n    if (x.length === 0) {\n        return {\n            x: Array.from(x),\n            y: Array.from(y),\n        };\n    }\n    const { from = x[0], to = x.at(-1), zones = [{ from, to }], exclusions = [], } = options;\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    let currentZoneIndex = 0;\n    const newX = [];\n    const newY = [];\n    let position = 0;\n    while (position < x.length) {\n        if (x[position] <= normalizedZones[currentZoneIndex].to &&\n            x[position] >= normalizedZones[currentZoneIndex].from) {\n            newX.push(x[position]);\n            newY.push(y[position]);\n        }\n        else if (x[position] > normalizedZones[currentZoneIndex].to) {\n            currentZoneIndex++;\n            if (!normalizedZones[currentZoneIndex])\n                break;\n        }\n        position++;\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterX.js.map","import { xyCheck } from './xyCheck';\n/**\n * Filter out all the points for which x <= 0. Useful to display log scale data\n * @param data - data\n * @returns - An object with the filtered data\n */\nexport function xyFilterXPositive(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const newX = [];\n    const newY = [];\n    if (x === undefined || y === undefined) {\n        return { x: newX, y: newY };\n    }\n    for (let i = 0; i < x.length; i++) {\n        if (x[i] > 0) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xyFilterXPositive.js.map","import { xFindClosestIndex } from '../x';\n/**\n * Finds the closest point\n * @param data - x array should be sorted and ascending\n * @param target - target to search\n * @returns - closest point\n */\nexport function xyFindClosestPoint(\n/** points */\ndata, target) {\n    const { x, y } = data;\n    const index = xFindClosestIndex(x, target);\n    return {\n        x: x[index],\n        y: y[index],\n    };\n}\n//# sourceMappingURL=xyFindClosestPoint.js.map","import { xyCheck } from './xyCheck';\n/**\n * Returns the numberMaxPoints points with the bigger y.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param numberMaxPoints - Number of points to keep\n * @returns - The points filtered to keep the `numberMaxPoints` most intense points of the input.\n */\nexport function xyGetNMaxY(data, numberMaxPoints) {\n    xyCheck(data);\n    if (data.x.length <= numberMaxPoints) {\n        return data;\n    }\n    else {\n        const newX = new Float64Array(numberMaxPoints);\n        const newY = new Float64Array(numberMaxPoints);\n        // slice() is used to make a copy of the array, because sort() is IPM\n        const threshold = Float64Array.from(data.y).sort().reverse()[numberMaxPoints - 1];\n        let index = 0;\n        for (let i = 0; i < data.x.length; i++) {\n            if (data.y[i] >= threshold) {\n                newX[index] = data.x[i];\n                newY[index] = data.y[i];\n                index++;\n            }\n            if (index === numberMaxPoints) {\n                return { x: newX, y: newY };\n            }\n        }\n        return data;\n    }\n}\n//# sourceMappingURL=xyGetNMaxY.js.map","/**\n * Order object of array, x has to be monotone. Ensure x is growing\n * @param data - Object of kind {x:[], y:[]}.\n */\nexport function xyGrowingX(data) {\n    const { x, y } = data;\n    if (x.length !== y.length) {\n        throw new TypeError('length of x and y must be identical');\n    }\n    if (x.length < 2 || x[0] < x.at(-1))\n        return data;\n    return {\n        x: x.slice(0).reverse(),\n        y: y.slice(0).reverse(),\n    };\n}\n//# sourceMappingURL=xyGrowingX.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Generate a X / Y of the xyIntegral\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the xyIntegration function\n */\nexport function xyIntegral(data, options = {}) {\n    const { reverse = false } = options;\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let xyIntegration = 0;\n    const currentxyIntegral = {\n        x: new Float64Array(toIndex - fromIndex + 1),\n        y: new Float64Array(toIndex - fromIndex + 1),\n    };\n    let index = 0;\n    if (reverse) {\n        currentxyIntegral.y[index] = 0;\n        currentxyIntegral.x[index++] = x[toIndex];\n        for (let i = toIndex; i > fromIndex; i--) {\n            xyIntegration += ((x[i] - x[i - 1]) * (y[i - 1] + y[i])) / 2;\n            currentxyIntegral.x[index] = x[i - 1];\n            currentxyIntegral.y[index++] = xyIntegration;\n        }\n        currentxyIntegral.x.reverse();\n        currentxyIntegral.y.reverse();\n    }\n    else {\n        currentxyIntegral.y[index] = 0;\n        currentxyIntegral.x[index++] = x[fromIndex];\n        for (let i = fromIndex; i < toIndex; i++) {\n            xyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n            currentxyIntegral.x[index] = x[i + 1];\n            currentxyIntegral.y[index++] = xyIntegration;\n        }\n    }\n    return currentxyIntegral;\n}\n//# sourceMappingURL=xyIntegral.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Calculate integration\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - xyIntegration value on the specified range\n */\nexport function xyIntegration(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return 0;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let currentxyIntegration = 0;\n    for (let i = fromIndex; i < toIndex; i++) {\n        currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n    }\n    return currentxyIntegration;\n}\n//# sourceMappingURL=xyIntegration.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Computes the weighted mean value of an array of values.\n * @param data - array of DataXY\n * @param options - options\n */\nexport function xyMassCenter(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let sumYs = 0;\n    let sumProducts = 0;\n    for (let i = fromIndex; i <= toIndex; i++) {\n        sumProducts += x[i] * y[i];\n        sumYs += y[i];\n    }\n    if (sumYs === 0) {\n        throw new Error('Sum of Ys can not be zero.');\n    }\n    return sumProducts / sumYs;\n}\n//# sourceMappingURL=xyMassCenter.js.map","import { xFindClosestIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * We will calculate a vector containing center of mass of DataXY as well as center of mass of both parts, etc.\n * This approach allows to efficiently represent spectra like XPS, NMR, etc. It should provide an extremely efficient\n * way to store and search similar spectra.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options\n * @returns - Array of centers of mass\n */\nexport function xyMassCenterVector(data, options = {}) {\n    xyCheck(data, { minLength: 2 });\n    const { depth = 5 } = options;\n    const { weightedIntegral, integral } = getWeightedIntegral(data);\n    const results = new Float64Array((1 << depth) - 1);\n    const endIndexes = new Int32Array((1 << depth) - 1);\n    endIndexes[0] = data.x.length - 1;\n    const beginIndexes = new Int32Array((1 << depth) - 1);\n    beginIndexes[0] = -1;\n    let index = 0;\n    for (let i = 0; i < depth; i++) {\n        for (let j = 0; j < 1 << i; j++) {\n            const currentBeginIndex = beginIndexes[index];\n            const currentEndIndex = endIndexes[index];\n            const currentIntegration = currentBeginIndex === -1\n                ? integral[currentEndIndex]\n                : integral[currentEndIndex] - integral[currentBeginIndex];\n            // we need to solve the issue of null integration (rather in simulated spectra).\n            let x = 0;\n            if (currentIntegration !== 0) {\n                x =\n                    currentBeginIndex === -1\n                        ? weightedIntegral[currentEndIndex] / currentIntegration\n                        : (weightedIntegral[currentEndIndex] -\n                            weightedIntegral[currentBeginIndex]) /\n                            currentIntegration;\n            }\n            else {\n                x = (data.x[currentEndIndex] + data.x[currentBeginIndex]) / 2;\n            }\n            results[index++] = x;\n            // we can now prepare the next level\n            if (i < depth - 1) {\n                const nextIndex = (1 << (i + 1)) + j * 2 - 1;\n                let middleIndex = xFindClosestIndex(data.x, x);\n                if (middleIndex === currentBeginIndex) {\n                    middleIndex++;\n                }\n                beginIndexes[nextIndex] = currentBeginIndex;\n                endIndexes[nextIndex] = middleIndex;\n                if (middleIndex === currentEndIndex) {\n                    middleIndex--;\n                }\n                beginIndexes[nextIndex + 1] = middleIndex;\n                endIndexes[nextIndex + 1] = currentEndIndex;\n            }\n        }\n    }\n    return results;\n}\nfunction getWeightedIntegral(data) {\n    const { x, y } = data;\n    const weightedIntegral = new Float64Array(x.length);\n    const integral = new Float64Array(x.length);\n    // the first point, no points before\n    const firstIntegration = (x[1] - x[0]) * y[0];\n    let totalIntegration = firstIntegration;\n    integral[0] = totalIntegration;\n    let totalWeightedIntegral = firstIntegration * x[0];\n    weightedIntegral[0] = totalWeightedIntegral;\n    for (let i = 1; i < x.length - 1; i++) {\n        const currentIntegration = ((x[i + 1] - x[i - 1]) * y[i]) / 2;\n        const currentX = x[i];\n        totalIntegration += currentIntegration;\n        integral[i] = totalIntegration;\n        totalWeightedIntegral += currentIntegration * currentX;\n        weightedIntegral[i] = totalWeightedIntegral;\n    }\n    // the last point, no points after\n    const lastIntegration = (x.at(-1) - x.at(-2)) * y.at(-1);\n    totalIntegration += lastIntegration;\n    integral[x.length - 1] = totalIntegration;\n    totalWeightedIntegral += lastIntegration * x.at(-1);\n    weightedIntegral[x.length - 1] = totalWeightedIntegral;\n    return { integral, weightedIntegral };\n}\n//# sourceMappingURL=xyMassCenterVector.js.map","import { xFindClosestIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest maximum going up hill\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - An object with the x/y value\n */\nexport function xyMaxClosestYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const { target } = options;\n    let { targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            targetIndex = xFindClosestIndex(x, target);\n        }\n        else {\n            targetIndex = 0;\n        }\n    }\n    let previousIndex = Number.MIN_SAFE_INTEGER;\n    let currentIndex = targetIndex;\n    let xyMaxY = y[targetIndex];\n    while (currentIndex !== previousIndex) {\n        previousIndex = currentIndex;\n        if (currentIndex > 0 && y[currentIndex - 1] > xyMaxY) {\n            currentIndex--;\n        }\n        else if (currentIndex < x.length - 1 && y[currentIndex + 1] > xyMaxY) {\n            currentIndex++;\n        }\n        xyMaxY = y[currentIndex];\n    }\n    return {\n        x: x[currentIndex],\n        y: y[currentIndex],\n        index: currentIndex,\n    };\n}\n//# sourceMappingURL=xyMaxClosestYPoint.js.map","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns array of merged and weighted points\n */\nexport function xyMaxMerge(data, options = {}) {\n    const { x, y } = data;\n    const { groupWidth = 0.001 } = options;\n    const merged = { x: [], y: [] };\n    const maxAbscissa = { x: [], y: [] };\n    let size = 0;\n    let index = 0;\n    while (index < x.length) {\n        if (size === 0 || x[index] - merged.x[size - 1] > groupWidth) {\n            maxAbscissa.x.push(x[index]);\n            maxAbscissa.y.push(y[index]);\n            merged.x.push(x[index]);\n            merged.y.push(y[index]);\n            index++;\n            size++;\n        }\n        else {\n            if (y[index] > maxAbscissa.y[size - 1]) {\n                maxAbscissa.x[size - 1] = x[index];\n                maxAbscissa.y[size - 1] = y[index];\n            }\n            merged.x[size - 1] = x[index];\n            merged.y[size - 1] += y[index];\n            index++;\n        }\n    }\n    merged.x = maxAbscissa.x.slice();\n    return merged;\n}\n//# sourceMappingURL=xyMaxMerge.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max value in a zone\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - Max y on the specified range\n */\nexport function xyMaxY(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let currentxyMaxY = y[fromIndex];\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] > currentxyMaxY)\n            currentxyMaxY = y[i];\n    }\n    return currentxyMaxY;\n}\n//# sourceMappingURL=xyMaxY.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds all the max values\n * If the values are equal the middle\n * of the equal part will be the position of the signal!\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Object with from and to properties\n * @returns - Array of points\n */\nexport function xyMaximaY(data, options = {}) {\n    xyCheck(data, { minLength: 2 });\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    const maxima = [];\n    let startEqualIndex = -1;\n    for (let i = fromIndex + 1; i < toIndex; i++) {\n        if (y[i - 1] < y[i] && y[i + 1] < y[i]) {\n            maxima.push({ x: x[i], y: y[i], index: i });\n        }\n        else if (y[i - 1] < y[i] && y[i + 1] === y[i]) {\n            startEqualIndex = i;\n        }\n        else if (y[i - 1] === y[i] && y[i + 1] < y[i]) {\n            const index = Math.floor((i + startEqualIndex) / 2);\n            maxima.push({ x: x[index], y: y[index], index });\n        }\n    }\n    return maxima;\n}\n//# sourceMappingURL=xyMaximaY.js.map","/**\n * Finds the median x value for an object with properties x and y (arrays of the same length)\n * @param data - x should be sorted in increasing order\n * @returns - the median of x values\n */\nexport function xyMedian(data) {\n    const { x, y } = data;\n    let sumY = 0;\n    let cumSumY = 0;\n    let i;\n    if (x.length === 0) {\n        return Number.NaN;\n    }\n    if (x.length === 1) {\n        return x[0];\n    }\n    for (i = 0; i < y.length; i++) {\n        sumY += y[i];\n    }\n    for (i = 0; i < y.length; i++) {\n        cumSumY += y[i];\n        if (cumSumY > sumY / 2) {\n            return x[i];\n        }\n        else if (cumSumY === sumY / 2) {\n            return 0.5 * (x[i] + x[i + 1]);\n        }\n    }\n    return Number.NaN;\n}\n//# sourceMappingURL=xyMedian.js.map","/**\n * Merge abscissa values if the ordinate value is in a list of centroids\n * @param data - object containing 2 properties x and y\n * @param centroids - centroids\n * @param options - options\n * @returns merged points\n */\nexport function xyMergeByCentroids(data, centroids, options = {}) {\n    const { window = 0.01 } = options;\n    const mergedPoints = {\n        x: Float64Array.from(centroids),\n        y: new Float64Array(centroids.length).fill(0),\n    };\n    let originalIndex = 0;\n    let mergedIndex = 0;\n    while (originalIndex < data.x.length && mergedIndex < centroids.length) {\n        const diff = data.x[originalIndex] - centroids[mergedIndex];\n        if (Math.abs(diff) < window) {\n            mergedPoints.y[mergedIndex] += data.y[originalIndex++];\n        }\n        else if (diff < 0) {\n            originalIndex++;\n        }\n        else {\n            mergedIndex++;\n        }\n    }\n    return mergedPoints;\n}\n//# sourceMappingURL=xyMergeByCentroids.js.map","import { xFindClosestIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest minimum going down hill\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the x/y value\n */\nexport function xyMinClosestYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const { target } = options;\n    let { targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            targetIndex = xFindClosestIndex(x, target);\n        }\n        else {\n            targetIndex = 0;\n        }\n    }\n    let previousIndex = Number.MIN_SAFE_INTEGER;\n    let currentIndex = targetIndex;\n    let minY = y[targetIndex];\n    while (currentIndex !== previousIndex) {\n        previousIndex = currentIndex;\n        if (currentIndex > 0 && y[currentIndex - 1] < minY) {\n            currentIndex--;\n        }\n        else if (currentIndex < x.length - 1 && y[currentIndex + 1] < minY) {\n            currentIndex++;\n        }\n        minY = y[currentIndex];\n    }\n    return {\n        x: x[currentIndex],\n        y: y[currentIndex],\n        index: currentIndex,\n    };\n}\n//# sourceMappingURL=xyMinClosestYPoint.js.map","import { xGetFromToIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the min y value in a range and return a {x,y} point\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n */\nexport function xyMinYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return { x: x[0], y: y[0], index: 0 };\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = {\n        x: x[fromIndex],\n        y: y[fromIndex],\n        index: fromIndex,\n    };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] < current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMinYPoint.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds all the min values\n * If the values are equal the middle\n * of the equal part will be the position of the signal!\n * @param data - Object that contains property X (an ordered increasing array) and y (an arraY)\n * @param options - Object with from and to properties\n * @returns - Array of points.\n */\nexport function xyMinimaY(data, options = {}) {\n    xyCheck(data, { minLength: 2 });\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    const maxima = [];\n    let startEqualIndex = -1;\n    for (let i = fromIndex + 1; i < toIndex; i++) {\n        if (y[i - 1] > y[i] && y[i + 1] > y[i]) {\n            maxima.push({ x: x[i], y: y[i], index: i });\n        }\n        else if (y[i - 1] > y[i] && y[i + 1] === y[i]) {\n            startEqualIndex = i;\n        }\n        else if (y[i - 1] === y[i] && y[i + 1] > y[i]) {\n            const index = Math.floor((i + startEqualIndex) / 2);\n            maxima.push({ x: x[index], y: y[index], index });\n        }\n    }\n    return maxima;\n}\n//# sourceMappingURL=xyMinimaY.js.map","import { xyObjectMaxXPoint } from './xyObjectMaxXPoint';\nimport { xyObjectMinXPoint } from './xyObjectMinXPoint';\n/**\n * Filter the array by taking the higher points (max y value) and only.\n * Keep one per slot. There are 2 different slots, the smallest one will have the\n * new property `close` to true\n * @param points - array of all the points\n * @param options - Options\n * @returns - copy of points with 'close' property\n */\nexport function xyObjectBestPoints(points, options = {}) {\n    const { from = xyObjectMinXPoint(points).x, to = xyObjectMaxXPoint(points).x, limit = 20, threshold = 0.01, numberCloseSlots = 50, numberSlots = 10, } = options;\n    const slot = (to - from) / numberSlots;\n    const closeSlot = (to - from) / numberCloseSlots;\n    let selected = points\n        .filter((point) => point.x >= from && point.x <= to)\n        .map((point) => {\n        return {\n            point,\n            monoisotopic: false,\n        };\n    });\n    selected = selected.sort((a, b) => {\n        if (a.monoisotopic && !b.monoisotopic)\n            return -1;\n        if (b.monoisotopic && !a.monoisotopic)\n            return 1;\n        return b.point.y - a.point.y;\n    });\n    const toReturn = [];\n    if (selected.length === 0)\n        return [];\n    const minY = selected[0].point.y * threshold;\n    peakLoop: for (const item of selected) {\n        if (item.point.y < minY) {\n            if (item.monoisotopic) {\n                continue;\n            }\n            else {\n                break;\n            }\n        }\n        let close = false;\n        for (const existing of toReturn) {\n            if (Math.abs(existing.x - item.point.x) < closeSlot) {\n                continue peakLoop;\n            }\n            if (Math.abs(existing.x - item.point.x) < slot) {\n                close = true;\n            }\n        }\n        const newPeak = { ...item.point, close };\n        toReturn.push(newPeak);\n        if (toReturn.length === limit)\n            break;\n    }\n    return toReturn.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=xyObjectBestPoints.js.map","/**\n * xyObjectJoinX.\n * @param points - Array of growing points {x,y}.\n * @param options - Options.\n */\nexport function xyObjectJoinX(points, options = {}) {\n    const { xError = Number.EPSILON } = options;\n    // when we join we will use the center of mass\n    const result = [];\n    let current = {\n        x: Number.MIN_SAFE_INTEGER,\n        y: 0,\n    };\n    for (const point of points) {\n        if (point.x - current.x <= xError) {\n            // weighted sum\n            if (current.y !== 0 || point.y !== 0) {\n                current.x =\n                    (point.y / (current.y + point.y)) * (point.x - current.x) + current.x;\n                current.y += point.y;\n            }\n        }\n        else {\n            current = {\n                x: point.x,\n                y: point.y,\n            };\n            result.push(current);\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xyObjectJoinX.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the max y value and return a {x,y,index} point\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n * @returns max point\n */\nexport function xyObjectMaxYPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length === 0)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].y > current.y) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMaxYPoint.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Returns all min and max values of an array of points.\n * @param points - Array of points {x,y}.\n * @returns - Object with the 4 extrema.\n */\nexport function xyObjectMinMaxValues(points) {\n    xyObjectCheck(points, { minLength: 1 });\n    let minX = points[0].x;\n    let maxX = minX;\n    let minY = points[0].y;\n    let maxY = minY;\n    for (const point of points) {\n        if (point.x < minX)\n            minX = point.x;\n        if (point.x > maxX)\n            maxX = point.x;\n        if (point.y < minY)\n            minY = point.y;\n        if (point.y > maxY)\n            maxY = point.y;\n    }\n    return { minX, maxX, minY, maxY };\n}\n//# sourceMappingURL=xyObjectMinMaxValues.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the min y value and return a {x,y,index} point\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMinYPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length === 0)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].y < current.y) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMinYPoint.js.map","/**\n * xyObjectSlotX\n * @param points - Array of growing points {x,y}.\n * @param options - Options.\n */\nexport function xyObjectSlotX(points, options = {}) {\n    const { slotWidth = 1 } = options;\n    const halfSlot = slotWidth / 2;\n    // when we join we will use the center of mass\n    const result = [];\n    let current = {\n        x: Number.NEGATIVE_INFINITY,\n        y: 0,\n    };\n    for (const point of points) {\n        const slot = point.x - ((point.x + halfSlot) % slotWidth) + halfSlot;\n        if (Math.abs(current.x - slot) > Number.EPSILON) {\n            current = {\n                x: slot,\n                y: 0,\n            };\n            result.push(current);\n        }\n        current.y += point.y;\n    }\n    return result;\n}\n//# sourceMappingURL=xyObjectSlotX.js.map","/**\n * Sorts an array of points in-place.\n * @param points - array of points {x,y}\n * @returns - sorted array of points {x,y}\n */\nexport function xyObjectSortX(points) {\n    return points.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=xyObjectSortX.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Calculate the sum of Y values.\n * @param points - Object that contains property x and y (an array)\n */\nexport function xyObjectSumY(points = []) {\n    xyObjectCheck(points);\n    let sum = 0;\n    for (const point of points) {\n        sum += point.y;\n    }\n    return sum;\n}\n//# sourceMappingURL=xyObjectSumY.js.map","/**\n * xyObjectToXY.\n * @param points - Array of points {x,y}.\n */\nexport function xyObjectToXY(points) {\n    return {\n        x: points.map((entry) => entry.x),\n        y: points.map((entry) => entry.y),\n    };\n}\n//# sourceMappingURL=xyObjectToXY.js.map","import { xFindClosestIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Returns an information about a signal.\n *\n *\n * We expect ordered data and equidistant X axis\n * You can use the method helper if required:\n * ML.ArrayPoints.uniqueX\n * ML.ArrayPoints.sortX\n * ML.ArrayPoints.equallySpaced\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - Information about signal\n */\nexport function xyPeakInfo(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    if (x === undefined || y === undefined || x.length < 3) {\n        return;\n    }\n    const { target } = options;\n    let { targetIndex } = options;\n    if (targetIndex === undefined && target !== undefined) {\n        targetIndex = xFindClosestIndex(x, target);\n    }\n    if (targetIndex === undefined) {\n        throw new Error('must specify target or targetIndex');\n    }\n    let i = targetIndex;\n    let currentDiff = y[i] - y[i + 1];\n    const multiplier = currentDiff < 0 ? -1 : 1;\n    currentDiff *= multiplier;\n    while (i < x.length - 1) {\n        i++;\n        const newDiff = (y[i] - y[i + 1]) * multiplier;\n        if (newDiff < currentDiff)\n            break;\n        currentDiff = newDiff;\n    }\n    const after = { x: x[i], y: y[i] };\n    i = targetIndex;\n    currentDiff = (y[i] - y[i - 1]) * multiplier;\n    while (i > 1) {\n        i--;\n        const newDiff = (y[i] - y[i - 1]) * multiplier;\n        if (newDiff < currentDiff)\n            break;\n        currentDiff = newDiff;\n    }\n    const before = { x: x[i], y: y[i] };\n    return {\n        inflectionBefore: before,\n        inflectionAfter: after,\n        extrema: { x: x[targetIndex], y: y[targetIndex] },\n        inflectionMiddle: {\n            x: (before.x + after.x) / 2,\n            y: (before.y + after.y) / 2,\n        },\n        width: Math.abs(before.x - after.x),\n    };\n}\n//# sourceMappingURL=xyPeakInfo.js.map","import { xGetTargetIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest minimum going down hill\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - An object with the x/y value\n */\nexport function xyRealMaxYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const targetIndex = xGetTargetIndex(x, options);\n    // interpolation to a sin() function\n    if (y[targetIndex - 1] > 0 &&\n        y[targetIndex + 1] > 0 &&\n        y[targetIndex] >= y[targetIndex - 1] &&\n        y[targetIndex] >= y[targetIndex + 1]) {\n        const alpha = 20 * Math.log10(y[targetIndex - 1]);\n        const beta = 20 * Math.log10(y[targetIndex]);\n        const gamma = 20 * Math.log10(y[targetIndex + 1]);\n        const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n        return {\n            x: x[targetIndex] + (x[targetIndex] - x[targetIndex - 1]) * p,\n            y: y[targetIndex] - 0.25 * (y[targetIndex - 1] - y[targetIndex + 1]) * p,\n            index: targetIndex,\n        };\n    }\n    else {\n        return {\n            x: x[targetIndex],\n            y: y[targetIndex],\n            index: targetIndex,\n        };\n    }\n}\n//# sourceMappingURL=xyRealMaxYPoint.js.map","import { xGetTargetIndex } from '../x';\nimport { xyCheck } from './xyCheck';\n/**\n * xyRealMinYPoint.\n * @param data - Data.\n * @param options - Options.\n */\nexport function xyRealMinYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const targetIndex = xGetTargetIndex(x, options);\n    // interpolation to a sin() function\n    if (y[targetIndex - 1] < 0 &&\n        y[targetIndex + 1] < 0 &&\n        y[targetIndex] <= y[targetIndex - 1] &&\n        y[targetIndex] <= y[targetIndex + 1]) {\n        const alpha = 20 * Math.log10(-y[targetIndex - 1]);\n        const beta = 20 * Math.log10(-y[targetIndex]);\n        const gamma = 20 * Math.log10(-y[targetIndex + 1]);\n        const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n        return {\n            x: x[targetIndex] + (x[targetIndex] - x[targetIndex - 1]) * p,\n            y: y[targetIndex] - 0.25 * (y[targetIndex - 1] - y[targetIndex + 1]) * p,\n            index: targetIndex,\n        };\n    }\n    else {\n        return {\n            x: x[targetIndex],\n            y: y[targetIndex],\n            index: targetIndex,\n        };\n    }\n}\n//# sourceMappingURL=xyRealMinYPoint.js.map","import { zonesNormalize } from '../zones';\nimport { xyCheck } from './xyCheck';\nimport { getInternalZones, notEnoughPoints } from './xyReduce';\n/**\n * Reduce the number of points while keeping visually the same noise. Practical to\n * display many spectra as SVG. This algorithm is designed for non-continuous data.\n * We are expecting peaks to be only positive and the x values to be ordered.\n * SHOULD NOT BE USED FOR DATA PROCESSING !!!\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns Object with x and y arrays\n */\nexport function xyReduceNonContinuous(data, options = {}) {\n    xyCheck(data);\n    if (data.x.length < 2) {\n        // todo we should check that the single point is really in the range and the zones\n        return {\n            x: Float64Array.from(data.x),\n            y: Float64Array.from(data.y),\n        };\n    }\n    const { x, y } = data;\n    const { from = x[0], to = x.at(-1), maxApproximateNbPoints = 4001, } = options;\n    let { zones = [] } = options;\n    zones = zonesNormalize(zones, { from, to });\n    if (zones.length === 0)\n        zones = [{ from, to }]; // we take everything\n    const { internalZones, totalPoints } = getInternalZones(zones, x);\n    // we calculate the number of points per zone that we should keep\n    if (totalPoints <= maxApproximateNbPoints) {\n        return notEnoughPoints(x, y, internalZones, totalPoints);\n    }\n    const deltaX = (to - from) / (maxApproximateNbPoints - 1);\n    const newX = [];\n    const newY = [];\n    for (const internalZone of internalZones) {\n        const maxNbPoints = Math.ceil((internalZone.to - internalZone.from) / deltaX) + 1;\n        const fromIndex = internalZone.fromIndex;\n        const toIndex = internalZone.toIndex;\n        if (toIndex - fromIndex + 1 <= maxNbPoints) {\n            // we keep all the points\n            for (let i = fromIndex; i <= toIndex; i++) {\n                newX.push(x[i]);\n                newY.push(y[i]);\n            }\n        }\n        else {\n            // we need to reduce the number of points\n            let currentX = x[fromIndex];\n            let currentY = y[fromIndex];\n            let lastX = currentX + deltaX;\n            newX.push(currentX);\n            newY.push(currentY);\n            for (let i = fromIndex; i <= toIndex; i++) {\n                if (x[i] > lastX) {\n                    // next slot\n                    currentX = x[i];\n                    currentY = y[i];\n                    newX.push(currentX);\n                    newY.push(currentY);\n                    lastX += deltaX;\n                }\n                if (y[i] > currentY) {\n                    currentY = y[i];\n                    newY[newY.length - 1] = currentY;\n                }\n            }\n        }\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyReduceNonContinuous.js.map","import { xRolling, xRollingAverage } from '../x';\n/**\n * This function calculates a rolling average.\n * This methods will recalculate the x values by using xRollingAverage\n * @param data - array of points {x,y}\n * @param fct - callback function that from an array returns a value.\n * @param options - options\n */\nexport function xyRolling(data, fct, options = {}) {\n    let { x, y } = data;\n    y = xRolling(y, fct, options);\n    if (x.length !== y.length) {\n        x = xRollingAverage(x, options);\n    }\n    return { x, y };\n}\n//# sourceMappingURL=xyRolling.js.map","import { zonesNormalize } from '../zones';\nimport { xyCheck } from './xyCheck';\n/**\n * Set a value (default 0) to specific zones.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - Array of points\n */\nexport function xySetYValue(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const { value = 0 } = options;\n    let { zones } = options;\n    if (!Array.isArray(zones) || zones.length === 0) {\n        return data;\n    }\n    zones = zonesNormalize(zones);\n    const newX = x.slice();\n    const newY = y.slice();\n    let currentZone = zones[0];\n    let position = 0;\n    loop: for (let i = 0; i < x.length; i++) {\n        while (currentZone.to < x[i]) {\n            position++;\n            currentZone = zones[position];\n            if (!currentZone) {\n                i = x.length;\n                break loop;\n            }\n        }\n        if (x[i] >= currentZone.from) {\n            newY[i] = value;\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xySetYValue.js.map","import { xyCheck } from './xyCheck';\n/**\n * Convert a DataXY to an array of array containing x,y.\n * @param data - array of points {x,y}\n */\nexport function xyToXYArray(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const objectArray = [];\n    for (let i = 0; i < x.length; i++) {\n        objectArray.push([x[i], y[i]]);\n    }\n    return objectArray;\n}\n//# sourceMappingURL=xyToXYArray.js.map","import { xyCheck } from './xyCheck';\n/**\n * xyToXYObject.\n * @param data - Array of points {x,y}.\n */\nexport function xyToXYObject(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const objectArray = [];\n    for (let i = 0; i < x.length; i++) {\n        objectArray.push({ x: x[i], y: y[i] });\n    }\n    return objectArray;\n}\n//# sourceMappingURL=xyToXYObject.js.map","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns array of merged and weighted points\n */\nexport function xyWeightedMerge(data, options = {}) {\n    const { x, y } = data;\n    const { groupWidth = 0.001 } = options;\n    const merged = { x: [], y: [] };\n    const weightedAbscissa = { x: [], y: [] };\n    let size = 0;\n    let index = 0;\n    while (index < x.length) {\n        if (size === 0 || x[index] - merged.x[size - 1] > groupWidth) {\n            weightedAbscissa.x.push(x[index] * y[index]);\n            weightedAbscissa.y.push(y[index]);\n            merged.x.push(x[index]);\n            merged.y.push(y[index]);\n            index++;\n            size++;\n        }\n        else {\n            weightedAbscissa.x[size - 1] += x[index] * y[index];\n            weightedAbscissa.y[size - 1] += y[index];\n            merged.x[size - 1] = x[index];\n            merged.y[size - 1] += y[index];\n            index++;\n        }\n    }\n    for (let i = 0; i < merged.x.length; i++) {\n        merged.x[i] = weightedAbscissa.x[i] / weightedAbscissa.y[i];\n    }\n    return merged;\n}\n//# sourceMappingURL=xyWeightedMerge.js.map","import isutf8 from 'isutf8';\n/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        const { encoding = guessEncoding(blob) } = options;\n        const decoder = new TextDecoder(encoding);\n        return decoder.decode(blob);\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction guessEncoding(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return 'utf-16be';\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return 'utf-16le';\n        }\n    }\n    //@ts-expect-error an ArrayBuffer is also ok\n    if (!isutf8(blob))\n        return 'latin1';\n    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","/*\n    https://tools.ietf.org/html/rfc3629\n\n    UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n    UTF8-1    = %x00-7F\n\n    UTF8-2    = %xC2-DF UTF8-tail\n\n    UTF8-3    = %xE0 %xA0-BF UTF8-tail\n                %xE1-EC 2( UTF8-tail )\n                %xED %x80-9F UTF8-tail\n                %xEE-EF 2( UTF8-tail )\n\n    UTF8-4    = %xF0 %x90-BF 2( UTF8-tail )\n                %xF1-F3 3( UTF8-tail )\n                %xF4 %x80-8F 2( UTF8-tail )\n\n    UTF8-tail = %x80-BF\n*/\n/**\n * Check if a Node.js Buffer or Uint8Array is UTF-8.\n */\nfunction isUtf8(buf) {\n    if (!buf) {\n        return false;\n    }\n    var i = 0;\n    var len = buf.length;\n    while (i < len) {\n        // UTF8-1 = %x00-7F\n        if (buf[i] <= 0x7F) {\n            i++;\n            continue;\n        }\n        // UTF8-2 = %xC2-DF UTF8-tail\n        if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n            // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n            if (buf[i + 1] >> 6 === 2) {\n                i += 2;\n                continue;\n            }\n            else {\n                return false;\n            }\n        }\n        // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n        // UTF8-3 = %xED %x80-9F UTF8-tail\n        if (((buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n            (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)) && buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-3 = %xE1-EC 2( UTF8-tail )\n        // UTF8-3 = %xEE-EF 2( UTF8-tail )\n        if (((buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n            (buf[i] >= 0xEE && buf[i] <= 0xEF)) &&\n            buf[i + 1] >> 6 === 2 &&\n            buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n        //          %xF1-F3 3( UTF8-tail )\n        //          %xF4 %x80-8F 2( UTF8-tail )\n        if (((buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n            (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n            (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)) &&\n            buf[i + 2] >> 6 === 2 &&\n            buf[i + 3] >> 6 === 2) {\n            i += 4;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n\nexport { isUtf8 as default };\n","import { ensureString } from 'ensure-string';\nimport { xyUniqueX, xMaxValue, xIsMonotonic } from 'ml-spectra-processing';\n/**\n * General internal parsing function\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns parsed text file with column information\n */\nexport function parse(text, options = {}) {\n    const { rescale = false, uniqueX = false, bestGuess = false, \n    //@ts-expect-error old library used this property and we want to throw an error so that people are forced to migrate\n    keepInfo, } = options;\n    let { xColumn = 0, yColumn = 1, numberColumns = Number.MAX_SAFE_INTEGER, maxNumberColumns = Number.MAX_SAFE_INTEGER, minNumberColumns = 2, } = options;\n    if (keepInfo !== undefined) {\n        throw new Error('keepInfo has been deprecated, pelase use the new method parseXYAndKeepInfo');\n    }\n    text = ensureString(text);\n    maxNumberColumns = Math.max(maxNumberColumns, xColumn + 1, yColumn + 1);\n    minNumberColumns = Math.max(xColumn + 1, yColumn + 1, minNumberColumns);\n    const lines = text.split(/[\\r\\n]+/);\n    let matrix = [];\n    const info = [];\n    let position = 0;\n    lines.forEach((line) => {\n        line = line.trim();\n        // we will consider only lines that contains only numbers\n        if (/[0-9]+/.test(line) && /^[0-9eE,;. \\t+-]+$/.test(line)) {\n            let fields = line.split(/,[; \\t]+|[; \\t]+/);\n            if (fields.length === 1) {\n                fields = line.split(/[,; \\t]+/);\n            }\n            if (fields &&\n                fields.length >= minNumberColumns && // we filter lines that have not enough or too many columns\n                fields.length <= maxNumberColumns) {\n                matrix.push(fields.map((value) => parseFloat(value.replace(',', '.'))));\n                position++;\n            }\n        }\n        else if (line) {\n            info.push({ position, value: line });\n        }\n    });\n    if (bestGuess) {\n        if (matrix[0] &&\n            matrix[0].length === 3 &&\n            options.xColumn === undefined &&\n            options.yColumn === undefined) {\n            // is the first column a seuqnetial number ?\n            let skipFirstColumn = true;\n            for (let i = 0; i < matrix.length - 1; i++) {\n                if (Math.abs(matrix[i][0] - matrix[i + 1][0]) !== 1) {\n                    skipFirstColumn = false;\n                }\n            }\n            if (skipFirstColumn) {\n                xColumn = 1;\n                yColumn = 2;\n            }\n        }\n        if (matrix[0] && matrix[0].length > 3) {\n            const xs = [];\n            for (const row of matrix) {\n                for (let i = xColumn; i < row.length; i += 2) {\n                    xs.push(row[i]);\n                }\n            }\n            if (xIsMonotonic(xs)) {\n                numberColumns = 2;\n            }\n        }\n    }\n    if (numberColumns) {\n        const newMatrix = [];\n        for (const row of matrix) {\n            for (let i = 0; i < row.length; i += numberColumns) {\n                newMatrix.push(row.slice(i, i + numberColumns));\n            }\n        }\n        matrix = newMatrix;\n    }\n    let result = {\n        x: matrix.map((row) => row[xColumn]),\n        y: matrix.map((row) => row[yColumn]),\n    };\n    if (uniqueX) {\n        result = xyUniqueX(result, { algorithm: 'sum' });\n    }\n    if (rescale) {\n        const maxY = xMaxValue(result.y);\n        for (let i = 0; i < result.y.length; i++) {\n            result.y[i] /= maxY;\n        }\n    }\n    return {\n        info,\n        data: result,\n    };\n}\n//# sourceMappingURL=parse.js.map","import { parse } from './parse';\nexport * from './ParseXYOptions';\n/**\n * Parse a text-file and convert it to an object {x:[], y:[]}\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data\n */\nexport function parseXY(text, options = {}) {\n    return parse(text, options).data;\n}\n/**\n * Parse a text-file and returns the parsed data and information about the columns\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data with information about the columns\n */\nexport function parseXYAndKeepInfo(text, options = {}) {\n    return parse(text, options);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBestPeaks = getBestPeaks;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Filter the array by taking the higher peaks and only\n * keep one per slot.\n * There are 2 different slots, the smallest one will have the\n * extra annotation `close` to true\n * @param {array} peaks - array of all the peaks\n * @param {object} [options={}]\n * @param {number} [options.from] - min X value of the window to consider\n * @param {number} [options.to] - max X value of the window to consider\n * @param {number} [options.minValue=Number.NEGATIVE_INFINITY] - min Y value of the window to consider\n * @param {number} [options.maxValue=Number.POSITIVE_INFINITY] - max Y value of the window to consider\n * @param {number} [options.searchMonoisotopicRatio=0] - search previous peaks with at least ratio height\n * @param {number} [options.limit=20] - max number of peaks\n * @param {number} [options.threshold=0.01] - minimal intensity compare to base peak\n * @param {number} [options.numberSlots=10] - define the number of slots and indirectly the slot width\n * @param {number} [options.numberCloseSlots=50]\n * @returns {array} - copy of peaks with 'close' annotation\n */\nfunction getBestPeaks(peaks, options = {}) {\n    const { searchMonoisotopicRatio = 0, from = (0, ml_spectra_processing_1.xyObjectMinXPoint)(peaks).x, to = (0, ml_spectra_processing_1.xyObjectMaxXPoint)(peaks).x, limit = 20, threshold = 0.01, numberCloseSlots = 50, numberSlots = 10, minValue = Number.NEGATIVE_INFINITY, maxValue = Number.POSITIVE_INFINITY, } = options;\n    let slot = (to - from) / numberSlots;\n    let closeSlot = (to - from) / numberCloseSlots;\n    let selected = peaks\n        .filter((peak) => peak.x >= from && peak.x <= to)\n        .filter((peak) => peak.y >= minValue && peak.y <= maxValue)\n        .map((peak) => {\n        return {\n            peak,\n            monoisotopic: false,\n        };\n    });\n    if (searchMonoisotopicRatio) {\n        selected = selected.sort((a, b) => b.peak.x - a.peak.x);\n        for (let i = 0; i < selected.length; i++) {\n            let item = selected[i];\n            for (let j = i + 1; j < selected.length; j++) {\n                let nextItem = selected[j];\n                if (item.peak.x - nextItem.peak.x < 0.09)\n                    continue;\n                if (item.peak.x - nextItem.peak.x > 1.1)\n                    break;\n                if (nextItem.peak.y > item.peak.y * searchMonoisotopicRatio) {\n                    item.monoisotopic = false;\n                    nextItem.monoisotopic = true;\n                    break;\n                }\n            }\n        }\n    }\n    selected = selected.sort((a, b) => {\n        if (a.monoisotopic && !b.monoisotopic)\n            return -1;\n        if (b.monoisotopic && !a.monoisotopic)\n            return 1;\n        return b.peak.y - a.peak.y;\n    });\n    let toReturn = [];\n    if (selected.length === 0)\n        return [];\n    let minY = selected[0].peak.y * threshold;\n    peakLoop: for (let item of selected) {\n        if (item.peak.y < minY) {\n            if (item.monoisotopic) {\n                continue;\n            }\n            else {\n                break;\n            }\n        }\n        let close = false;\n        for (let existing of toReturn) {\n            if (Math.abs(existing.x - item.peak.x) < closeSlot) {\n                continue peakLoop;\n            }\n            if (Math.abs(existing.x - item.peak.x) < slot) {\n                close = true;\n            }\n        }\n        let newPeak = structuredClone(item.peak);\n        newPeak.close = close;\n        toReturn.push(newPeak);\n        if (toReturn.length === limit)\n            break;\n    }\n    return toReturn.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=getBestPeaks.js.map","\"use strict\";\n/**\n * Define static variable corresponding to the various Kinds of a molecular formula part.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kind = void 0;\nexports.Kind = {\n    BEGIN: 'begin',\n    ATOM: 'atom',\n    MULTIPLIER_RANGE: 'multiplierRange',\n    ISOTOPE: 'isotope',\n    ISOTOPE_RATIO: 'isotopeRatio',\n    CHARGE: 'charge',\n    SALT: 'salt',\n    OPENING_PARENTHESIS: 'openingParenthesis',\n    CLOSING_PARENTHESIS: 'closingParenthesis',\n    PRE_MULTIPLIER: 'preMultiplier',\n    MULTIPLIER: 'multiplier',\n    TEXT: 'text',\n    ANCHOR: 'anchor',\n    COMMENT: 'comment',\n};\n//# sourceMappingURL=Kind.js.map","\"use strict\";\n/**\n * Parse a string to extract the charge.\n * The charge may be in the form --, +++, +3, -2, 4+, 2-\n * @param {*} charge\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseCharge = parseCharge;\nfunction parseCharge(charge) {\n    charge = charge.replaceAll(/[()]/g, '');\n    let chargeNumber = 0;\n    if (charge.match(/^[+-]+$/)) {\n        for (let i = 0; i < charge.length; i++) {\n            if (charge.charAt(i) === '+')\n                chargeNumber++;\n            else\n                chargeNumber--;\n        }\n    }\n    else if (charge.match(/^\\d+[+-]$/)) {\n        chargeNumber = Number(\n        // eslint-disable-next-line unicorn/prefer-at\n        charge.charAt(charge.length - 1) + charge.slice(0, -1));\n    }\n    else {\n        chargeNumber = Number(charge);\n    }\n    return chargeNumber;\n}\n//# sourceMappingURL=parseCharge.js.map","\"use strict\";\n/* eslint-disable unicorn/prefer-code-point */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = parse;\nconst Kind_1 = require(\"./Kind\");\nconst parseCharge_1 = require(\"./util/parseCharge\");\n/**\n * Parse a mf to an array of kind / value\n * @param {String} mf\n */\nfunction parse(mf) {\n    return new MFParser().parse(mf);\n}\nclass MFParser {\n    parse(mf = '') {\n        this.mf = mf;\n        this.i = 0;\n        this.result = [];\n        let lastKind = Kind_1.Kind.BEGIN;\n        while (this.i < mf.length) {\n            if (this.result.length > 0 && this.result.at(-1).kind !== Kind_1.Kind.TEXT) {\n                lastKind = this.result.at(-1).kind;\n            }\n            let char = mf.charAt(this.i);\n            let ascii = mf.charCodeAt(this.i);\n            let nextAscii = 0;\n            if (this.i + 1 < mf.length)\n                nextAscii = mf.charCodeAt(this.i + 1);\n            if ((ascii > 47 && ascii < 58) ||\n                (char === '-' && nextAscii > 47 && nextAscii < 58)) {\n                // a number\n                let value = this.getNumber(ascii);\n                if (lastKind === Kind_1.Kind.SALT ||\n                    lastKind === Kind_1.Kind.BEGIN ||\n                    lastKind === Kind_1.Kind.OPENING_PARENTHESIS) {\n                    if (value.to) {\n                        throw new MFError(this.mf, this.i, 'Premultiplier may not contain a -');\n                    }\n                    this.result.push({ kind: Kind_1.Kind.PRE_MULTIPLIER, value: value.from });\n                }\n                else if (lastKind === Kind_1.Kind.ANCHOR) {\n                    if (value.to) {\n                        throw new MFError(this.mf, this.i, 'Anchor ID may not contain -');\n                    }\n                    this.result.at(-1).value = value.from;\n                }\n                else if (value.to) {\n                    this.result.push({\n                        kind: Kind_1.Kind.MULTIPLIER_RANGE,\n                        value: {\n                            from: Math.min(value.from, value.to),\n                            to: Math.max(value.from, value.to),\n                        },\n                    });\n                }\n                else {\n                    this.result.push({ kind: Kind_1.Kind.MULTIPLIER, value: value.from });\n                }\n                continue;\n            }\n            else if (char === '.') {\n                // a point\n                this.result.push({ kind: Kind_1.Kind.SALT, value: char });\n                // it is not in a number otherwise it would have been taken before\n                // it must be in a salt\n            }\n            else if (char === '#') {\n                // an anchor\n                this.result.push({ kind: Kind_1.Kind.ANCHOR, value: 0 });\n                // it is not in a number otherwise it would have been taken before\n                // it must be in a salt\n            }\n            else if (ascii > 64 && ascii < 91) {\n                // an uppercase = new atom\n                let value = this.getAtom(ascii);\n                this.result.push({ kind: Kind_1.Kind.ATOM, value });\n                continue;\n            }\n            else if (ascii > 96 && ascii < 123) {\n                // a lowercase\n                throw new MFError(this.mf, this.i, 'found a lowercase not following an uppercase');\n            }\n            else if (char === '(') {\n                let charge = this.getParenthesisCharge(ascii);\n                if (charge) {\n                    this.result.push({ kind: Kind_1.Kind.CHARGE, value: charge });\n                }\n                else {\n                    this.result.push({ kind: Kind_1.Kind.OPENING_PARENTHESIS, value: '(' });\n                }\n            }\n            else if (char === ')') {\n                this.result.push({ kind: Kind_1.Kind.CLOSING_PARENTHESIS, value: ')' });\n            }\n            else if (char === '[') {\n                // defines an isotope\n                let isotope = this.getIsotope(ascii);\n                this.result.push({ kind: Kind_1.Kind.ISOTOPE, value: isotope });\n            }\n            else if (char === ']') {\n                throw new MFError(this.mf, this.i, 'should never meet an closing bracket not in isotopes');\n            }\n            else if (char === '{') {\n                // can define an exotic isotopic ratio or mixtures of groups\n                let isotopeRatio = this.getCurlyBracketIsotopeRatio(ascii);\n                if (lastKind === Kind_1.Kind.ATOM) {\n                    let lastResult = this.result.at(-1);\n                    lastResult.kind = Kind_1.Kind.ISOTOPE_RATIO;\n                    lastResult.value = {\n                        atom: lastResult.value,\n                        ratio: isotopeRatio,\n                    };\n                }\n                else {\n                    throw new MFError(this.mf, this.i, 'isotopic composition has to follow an atom');\n                }\n            }\n            else if (char === '}') {\n                throw new MFError(this.mf, this.i, 'found a unexpected closing curly bracket');\n            }\n            else if (char === '+') {\n                // charge not in parenthesis\n                let charge = this.getNonParenthesisCharge(ascii);\n                this.result.push({ kind: Kind_1.Kind.CHARGE, value: charge });\n            }\n            else if (char === '-') {\n                // charge not in parenthesis\n                let charge = this.getNonParenthesisCharge(ascii);\n                this.result.push({ kind: Kind_1.Kind.CHARGE, value: charge });\n            }\n            else if (char === '$') {\n                // it is a comment after\n                this.result.push({\n                    kind: Kind_1.Kind.COMMENT,\n                    value: this.mf.slice(this.i + 1),\n                });\n                break;\n            }\n            else {\n                this.result.push({ kind: Kind_1.Kind.TEXT, value: char });\n            }\n            this.i++;\n        }\n        this.checkParenthesis();\n        return this.result;\n    }\n    checkParenthesis() {\n        let counter = 0;\n        for (let line of this.result) {\n            if (line.kind === Kind_1.Kind.OPENING_PARENTHESIS)\n                counter++;\n            if (line.kind === Kind_1.Kind.CLOSING_PARENTHESIS)\n                counter--;\n        }\n        if (counter !== 0) {\n            throw new MFError(this.mf, this.i, 'number of opening and closing parenthesis not equal');\n        }\n    }\n    getNumber(ascii) {\n        let number = '';\n        let previous;\n        do {\n            previous = ascii;\n            number += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while ((ascii > 47 && ascii < 58) ||\n            ascii === 46 ||\n            ascii === 45 ||\n            ascii === 47); // number . - /\n        // we need to deal with the case there is a from / to\n        if (previous === 46)\n            this.i--;\n        let indexOfDash = number.indexOf('-', 1);\n        if (indexOfDash > -1) {\n            return {\n                from: parseNumberWithDivision(number.slice(0, indexOfDash)),\n                to: parseNumberWithDivision(number.slice(indexOfDash + 1)),\n            };\n        }\n        return { from: parseNumberWithDivision(number) };\n    }\n    getAtom(ascii) {\n        let atom = '';\n        do {\n            atom += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii > 96 && ascii < 123);\n        return atom;\n    }\n    getIsotope(ascii) {\n        // [13C]\n        let substring = '';\n        do {\n            substring += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii !== 93 && this.i <= this.mf.length);\n        let atom = substring.replaceAll(/[^A-Za-z]/g, '');\n        let isotope = Number(substring.replaceAll(/\\D/g, ''));\n        return { atom, isotope };\n    }\n    getCurlyBracketIsotopeRatio(ascii) {\n        let substring = '';\n        let first = true;\n        do {\n            if (!first) {\n                substring += String.fromCharCode(ascii);\n            }\n            else {\n                first = false;\n            }\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii !== 125 && this.i <= this.mf.length); // closing curly bracket\n        if (substring.match(/^[0-9.,]+$/)) {\n            return substring.split(',').map(Number);\n        }\n        throw new MFError(this.mf, this.i, 'Curly brackets should contain only number, dot and comma');\n    }\n    getParenthesisCharge(ascii) {\n        let substring = '';\n        let begin = this.i;\n        do {\n            substring += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii !== 41 && this.i <= this.mf.length); // closing parenthesis\n        if (substring.match(/^\\([\\d+-]+$/)) {\n            return (0, parseCharge_1.parseCharge)(substring.slice(1));\n        }\n        else {\n            this.i = begin;\n            return undefined;\n        }\n    }\n    getNonParenthesisCharge(ascii) {\n        let substring = '';\n        do {\n            substring += String.fromCharCode(ascii);\n            this.i++;\n            ascii = this.mf.charCodeAt(this.i);\n        } while (ascii === 43 || ascii === 45 || (ascii > 47 && ascii < 58));\n        this.i--;\n        return (0, parseCharge_1.parseCharge)(substring);\n    }\n}\nclass MFError extends SyntaxError {\n    constructor(mf, i, message) {\n        let text = `${message}\\n\\n${mf}\\n${' '.repeat(i)}^`;\n        super(text);\n    }\n}\nfunction parseNumberWithDivision(string) {\n    if (string.includes('/')) {\n        let parts = string.split('/');\n        if (parts.length !== 2) {\n            throw new TypeError('Can not parse MF with number like: ', string);\n        }\n        return Number(parts[0]) / Number(parts[1]);\n    }\n    else {\n        return Number(string);\n    }\n}\n//# sourceMappingURL=parse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscript = exports.superscript = void 0;\nexports.superscript = {\n    0: '⁰',\n    1: '¹',\n    2: '²',\n    3: '³',\n    4: '⁴',\n    5: '⁵',\n    6: '⁶',\n    7: '⁷',\n    8: '⁸',\n    9: '⁹',\n    '+': '⁺',\n    '-': '⁻',\n    '(': '⁽',\n    ')': '⁾',\n    '{': '⁽',\n    '}': '⁾',\n    '.': '˙',\n    ',': '˒',\n};\nexports.subscript = {\n    0: '₀',\n    1: '₁',\n    2: '₂',\n    3: '₃',\n    4: '₄',\n    5: '₅',\n    6: '₆',\n    7: '₇',\n    8: '₈',\n    9: '₉',\n    '(': '₍',\n    ')': '₎',\n    '{': '₍',\n    '}': '₎',\n    '.': ' ',\n    ',': ' ',\n};\n//# sourceMappingURL=subSuperscript.js.map","\"use strict\";\n/**\n * Defines static variables corresponding to the various formatting possibilities\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Format = void 0;\nexports.Format = {\n    SUBSCRIPT: 'subscript',\n    SUPERSCRIPT: 'superscript',\n    SUPERIMPOSE: 'superimpose',\n    TEXT: 'text',\n};\n//# sourceMappingURL=Format.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatCharge = formatCharge;\nfunction formatCharge(charge) {\n    if (charge === 1)\n        return '+';\n    if (charge > 1)\n        return `+${charge}`;\n    if (charge < 0)\n        return String(charge);\n    return '';\n}\n//# sourceMappingURL=formatCharge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.improveLinesForDisplay = improveLinesForDisplay;\nconst Kind_js_1 = require(\"../Kind.js\");\n/**\n * We try to remove useless lines that are not needed for the display and could be confusing\n * for the user\n * @param {object[]} lines\n */\nfunction improveLinesForDisplay(lines) {\n    lines = lines.slice(0);\n    // multipliers by one seems completely useless\n    lines = lines.filter((line) => !(line.kind === Kind_js_1.Kind.MULTIPLIER && line.value === 1));\n    // global surrouding useless parenthesis\n    // (C) -> C, (CH2) -> CH2, ((CH2)) -> CH2, ((CH2)2) -> (CH2)2, (C(CH2)2) -> C(CH2)2\n    // need to count the number of opening parenthesis\n    // and check the minimum number of parenthesis we find\n    let beginCounter = 0;\n    let endCounter = 0;\n    let minCounter = Number.MAX_SAFE_INTEGER;\n    let counter = 0;\n    let begin = true;\n    for (let line of lines) {\n        switch (line.kind) {\n            case Kind_js_1.Kind.OPENING_PARENTHESIS:\n                if (begin) {\n                    beginCounter++;\n                }\n                counter++;\n                break;\n            case Kind_js_1.Kind.CLOSING_PARENTHESIS:\n                endCounter++;\n                counter--;\n                break;\n            case Kind_js_1.Kind.CHARGE: // seems to me we can still remove parenthesis even if we have some charges\n                break;\n            default:\n                if (counter < minCounter)\n                    minCounter = counter;\n                endCounter = 0;\n                begin = false;\n        }\n    }\n    let nbParenthesisToSuppress = Math.min(minCounter, beginCounter, endCounter);\n    if (nbParenthesisToSuppress > 0) {\n        // need to remove from the beginning and from the end the number of parenthesis\n        // knowing some of the lines could be charges\n        let toSuppress = nbParenthesisToSuppress;\n        let i = 0;\n        while (toSuppress > 0) {\n            if (lines[0].kind === Kind_js_1.Kind.OPENING_PARENTHESIS) {\n                lines.splice(i, 1);\n                toSuppress--;\n            }\n            else {\n                i++;\n            }\n        }\n        toSuppress = nbParenthesisToSuppress;\n        i = lines.length - 1;\n        while (toSuppress > 0) {\n            if (lines[i].kind === Kind_js_1.Kind.CLOSING_PARENTHESIS) {\n                toSuppress--;\n                lines.splice(i, 1);\n            }\n            i--;\n        }\n    }\n    return lines;\n}\n//# sourceMappingURL=improveLinesForDisplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toDisplay = toDisplay;\nconst Format_1 = require(\"../Format\");\nconst Kind_1 = require(\"../Kind\");\nconst formatCharge_js_1 = require(\"./formatCharge.js\");\nconst improveLinesForDisplay_js_1 = require(\"./improveLinesForDisplay.js\");\n/**\n * Converts an array of mf elements to an array of formatting information\n * @param {object[]} lines of the parse method\n * @returns {{kind: string, value: string}[]}\n */\nfunction toDisplay(lines) {\n    lines = (0, improveLinesForDisplay_js_1.improveLinesForDisplay)(lines);\n    const special = specialCases(lines);\n    if (special)\n        return special;\n    let results = [];\n    let result = {};\n    for (let line of lines) {\n        switch (line.kind) {\n            case Kind_1.Kind.MULTIPLIER:\n                if (line.value !== 1) {\n                    result = {\n                        kind: Format_1.Format.SUBSCRIPT,\n                        value: String(line.value),\n                    };\n                    results.push(result);\n                }\n                break;\n            case Kind_1.Kind.MULTIPLIER_RANGE:\n                result = {\n                    kind: Format_1.Format.SUBSCRIPT,\n                    value: `${String(line.value.from)}-${line.value.to}`,\n                };\n                results.push(result);\n                break;\n            case Kind_1.Kind.CHARGE:\n                if (result.kind === Format_1.Format.SUBSCRIPT) {\n                    result.kind = Format_1.Format.SUPERIMPOSE;\n                    result.over = (0, formatCharge_js_1.formatCharge)(line.value);\n                    result.under = result.value;\n                    result.value = undefined;\n                }\n                else {\n                    result = {\n                        kind: Format_1.Format.SUPERSCRIPT,\n                        value: (0, formatCharge_js_1.formatCharge)(line.value),\n                    };\n                    results.push(result);\n                }\n                break;\n            case Kind_1.Kind.ISOTOPE:\n                result = {\n                    kind: Format_1.Format.SUPERSCRIPT,\n                    value: line.value.isotope,\n                };\n                results.push(result);\n                result = {\n                    kind: Format_1.Format.TEXT,\n                    value: line.value.atom,\n                };\n                results.push(result);\n                break;\n            case Kind_1.Kind.ISOTOPE_RATIO:\n                if (result.kind === Format_1.Format.TEXT) {\n                    result.value += line.value.atom;\n                }\n                else {\n                    result = {\n                        kind: Format_1.Format.TEXT,\n                        value: line.value.atom,\n                    };\n                    results.push(result);\n                }\n                result = {\n                    kind: Format_1.Format.SUPERSCRIPT,\n                    value: `{${line.value.ratio.join(',')}}`,\n                };\n                results.push(result);\n                break;\n            case Kind_1.Kind.SALT:\n                if (result.kind === Format_1.Format.TEXT) {\n                    result.value += ' • ';\n                }\n                else {\n                    result = {\n                        kind: Format_1.Format.TEXT,\n                        value: ' • ',\n                    };\n                    results.push(result);\n                }\n                break;\n            default:\n                if (result.kind === Format_1.Format.TEXT) {\n                    result.value += line.value;\n                }\n                else {\n                    result = {\n                        kind: Format_1.Format.TEXT,\n                        value: line.value,\n                    };\n                    results.push(result);\n                }\n        }\n    }\n    return results;\n}\n/**\n * Some special changes for specific cases\n * @param {} lines\n */\nfunction specialCases(lines) {\n    // (-)\n    if (lines.length === 1 && lines[0].kind === Kind_1.Kind.CHARGE) {\n        const charge = lines[0].value;\n        if (charge === 0)\n            return [];\n        if (charge === 1) {\n            return [\n                { kind: Format_1.Format.TEXT, value: '-e' },\n                { kind: Format_1.Format.SUPERSCRIPT, value: '-' },\n            ];\n        }\n        if (charge === -1) {\n            return [\n                { kind: Format_1.Format.TEXT, value: '+e' },\n                { kind: Format_1.Format.SUPERSCRIPT, value: '-' },\n            ];\n        }\n        if (charge > 1) {\n            return [\n                { kind: Format_1.Format.TEXT, value: `-${charge}e` },\n                { kind: Format_1.Format.SUPERSCRIPT, value: '-' },\n            ];\n        }\n        if (charge < -1) {\n            return [\n                { kind: Format_1.Format.TEXT, value: `+${-charge}e` },\n                { kind: Format_1.Format.SUPERSCRIPT, value: '-' },\n            ];\n        }\n    }\n    // (-)2, (-)-1, (+)2, (+)-1, (2+)2, (2+)-1, (2-)+1, (2-)-1\n    if (lines.length === 2 &&\n        lines[0].kind === Kind_1.Kind.CHARGE &&\n        lines[1].kind === Kind_1.Kind.MULTIPLIER) {\n        const charge = lines[0].value;\n        const nbElectrons = -lines[1].value * charge;\n        const results = [];\n        if (nbElectrons === 0)\n            return [];\n        if (nbElectrons === 1) {\n            results.push({ kind: Format_1.Format.TEXT, value: '+e' });\n        }\n        if (nbElectrons === -1) {\n            results.push({ kind: Format_1.Format.TEXT, value: '-e' });\n        }\n        if (nbElectrons > 1) {\n            results.push({ kind: Format_1.Format.TEXT, value: `+${nbElectrons}e` });\n        }\n        if (nbElectrons < -1) {\n            results.push({ kind: Format_1.Format.TEXT, value: `${nbElectrons}e` });\n        }\n        results.push({ kind: Format_1.Format.SUPERSCRIPT, value: '-' });\n        return results;\n    }\n    return undefined;\n}\n//# sourceMappingURL=toDisplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsAndIsotopes = void 0;\nexports.elementsAndIsotopes = [\n    {\n        number: 1,\n        isotopes: [\n            { nominal: 1, mass: 1.00782503223, abundance: 0.999885 },\n            { nominal: 2, mass: 2.01410177812, abundance: 0.000115 },\n            { nominal: 3, mass: 3.0160492779 },\n            { nominal: 4, mass: 4.02643 },\n            { nominal: 5, mass: 5.035311 },\n            { nominal: 6, mass: 6.04496 },\n            { nominal: 7, mass: 7.0527 },\n        ],\n        symbol: 'H',\n        mass: 1.0079407540557772,\n        name: 'Hydrogen',\n        monoisotopicMass: 1.00782503223,\n    },\n    {\n        number: 2,\n        isotopes: [\n            { nominal: 3, mass: 3.0160293201, abundance: 0.00000134 },\n            { nominal: 4, mass: 4.00260325413, abundance: 0.99999866 },\n            { nominal: 5, mass: 5.012057 },\n            { nominal: 6, mass: 6.018885891 },\n            { nominal: 7, mass: 7.0279907 },\n            { nominal: 8, mass: 8.03393439 },\n            { nominal: 9, mass: 9.043946 },\n            { nominal: 10, mass: 10.05279 },\n        ],\n        symbol: 'He',\n        mass: 4.002601932120929,\n        name: 'Helium',\n        monoisotopicMass: 4.00260325413,\n    },\n    {\n        number: 3,\n        isotopes: [\n            { nominal: 3, mass: 3.0308 },\n            { nominal: 4, mass: 4.02719 },\n            { nominal: 5, mass: 5.012538 },\n            { nominal: 6, mass: 6.0151228874, abundance: 0.0759 },\n            { nominal: 7, mass: 7.0160034366, abundance: 0.9241 },\n            { nominal: 8, mass: 8.022486246 },\n            { nominal: 9, mass: 9.02679019 },\n            { nominal: 10, mass: 10.035483 },\n            { nominal: 11, mass: 11.04372358 },\n            { nominal: 12, mass: 12.052517 },\n            { nominal: 13, mass: 13.06263 },\n        ],\n        symbol: 'Li',\n        mass: 6.94003660291572,\n        name: 'Lithium',\n        monoisotopicMass: 7.0160034366,\n    },\n    {\n        number: 4,\n        isotopes: [\n            { nominal: 5, mass: 5.0399 },\n            { nominal: 6, mass: 6.0197264 },\n            { nominal: 7, mass: 7.016928717 },\n            { nominal: 8, mass: 8.005305102 },\n            { nominal: 9, mass: 9.012183065, abundance: 1 },\n            { nominal: 10, mass: 10.013534695 },\n            { nominal: 11, mass: 11.02166108 },\n            { nominal: 12, mass: 12.0269221 },\n            { nominal: 13, mass: 13.036135 },\n            { nominal: 14, mass: 14.04289 },\n            { nominal: 15, mass: 15.05342 },\n            { nominal: 16, mass: 16.06167 },\n        ],\n        symbol: 'Be',\n        mass: 9.012183065,\n        name: 'Beryllium',\n        monoisotopicMass: 9.012183065,\n    },\n    {\n        number: 5,\n        isotopes: [\n            { nominal: 6, mass: 6.0508 },\n            { nominal: 7, mass: 7.029712 },\n            { nominal: 8, mass: 8.0246073 },\n            { nominal: 9, mass: 9.01332965 },\n            { nominal: 10, mass: 10.01293695, abundance: 0.199 },\n            { nominal: 11, mass: 11.00930536, abundance: 0.801 },\n            { nominal: 12, mass: 12.0143527 },\n            { nominal: 13, mass: 13.0177802 },\n            { nominal: 14, mass: 14.025404 },\n            { nominal: 15, mass: 15.031088 },\n            { nominal: 16, mass: 16.039842 },\n            { nominal: 17, mass: 17.04699 },\n            { nominal: 18, mass: 18.05566 },\n            { nominal: 19, mass: 19.0631 },\n            { nominal: 20, mass: 20.07207 },\n            { nominal: 21, mass: 21.08129 },\n        ],\n        symbol: 'B',\n        mass: 10.811028046410001,\n        name: 'Boron',\n        monoisotopicMass: 11.00930536,\n    },\n    {\n        number: 6,\n        isotopes: [\n            { nominal: 8, mass: 8.037643 },\n            { nominal: 9, mass: 9.0310372 },\n            { nominal: 10, mass: 10.01685331 },\n            { nominal: 11, mass: 11.0114336 },\n            { nominal: 12, mass: 12, abundance: 0.9893 },\n            { nominal: 13, mass: 13.00335483507, abundance: 0.0107 },\n            { nominal: 14, mass: 14.0032419884 },\n            { nominal: 15, mass: 15.01059926 },\n            { nominal: 16, mass: 16.0147013 },\n            { nominal: 17, mass: 17.022577 },\n            { nominal: 18, mass: 18.026751 },\n            { nominal: 19, mass: 19.0348 },\n            { nominal: 20, mass: 20.04032 },\n            { nominal: 21, mass: 21.049 },\n            { nominal: 22, mass: 22.05753 },\n            { nominal: 23, mass: 23.0689 },\n        ],\n        symbol: 'C',\n        mass: 12.010735896735248,\n        name: 'Carbon',\n        monoisotopicMass: 12,\n    },\n    {\n        number: 7,\n        isotopes: [\n            { nominal: 10, mass: 10.04165 },\n            { nominal: 11, mass: 11.026091 },\n            { nominal: 12, mass: 12.0186132 },\n            { nominal: 13, mass: 13.00573861 },\n            { nominal: 14, mass: 14.00307400443, abundance: 0.99636 },\n            { nominal: 15, mass: 15.00010889888, abundance: 0.00364 },\n            { nominal: 16, mass: 16.0061019 },\n            { nominal: 17, mass: 17.008449 },\n            { nominal: 18, mass: 18.014078 },\n            { nominal: 19, mass: 19.017022 },\n            { nominal: 20, mass: 20.023366 },\n            { nominal: 21, mass: 21.02711 },\n            { nominal: 22, mass: 22.03439 },\n            { nominal: 23, mass: 23.04114 },\n            { nominal: 24, mass: 24.05039 },\n            { nominal: 25, mass: 25.0601 },\n        ],\n        symbol: 'N',\n        mass: 14.006703211445798,\n        name: 'Nitrogen',\n        monoisotopicMass: 14.00307400443,\n    },\n    {\n        number: 8,\n        isotopes: [\n            { nominal: 12, mass: 12.034262 },\n            { nominal: 13, mass: 13.024815 },\n            { nominal: 14, mass: 14.00859636 },\n            { nominal: 15, mass: 15.00306562 },\n            { nominal: 16, mass: 15.99491461957, abundance: 0.99757 },\n            { nominal: 17, mass: 16.9991317565, abundance: 0.00038 },\n            { nominal: 18, mass: 17.99915961286, abundance: 0.00205 },\n            { nominal: 19, mass: 19.003578 },\n            { nominal: 20, mass: 20.00407535 },\n            { nominal: 21, mass: 21.008655 },\n            { nominal: 22, mass: 22.009966 },\n            { nominal: 23, mass: 23.015696 },\n            { nominal: 24, mass: 24.01986 },\n            { nominal: 25, mass: 25.02936 },\n            { nominal: 26, mass: 26.03729 },\n            { nominal: 27, mass: 27.04772 },\n            { nominal: 28, mass: 28.05591 },\n        ],\n        symbol: 'O',\n        mass: 15.999404924318277,\n        name: 'Oxygen',\n        monoisotopicMass: 15.99491461957,\n    },\n    {\n        number: 9,\n        isotopes: [\n            { nominal: 14, mass: 14.034315 },\n            { nominal: 15, mass: 15.018043 },\n            { nominal: 16, mass: 16.0114657 },\n            { nominal: 17, mass: 17.00209524 },\n            { nominal: 18, mass: 18.00093733 },\n            { nominal: 19, mass: 18.99840316273, abundance: 1 },\n            { nominal: 20, mass: 19.999981252 },\n            { nominal: 21, mass: 20.9999489 },\n            { nominal: 22, mass: 22.002999 },\n            { nominal: 23, mass: 23.003557 },\n            { nominal: 24, mass: 24.008115 },\n            { nominal: 25, mass: 25.012199 },\n            { nominal: 26, mass: 26.020038 },\n            { nominal: 27, mass: 27.02644 },\n            { nominal: 28, mass: 28.03534 },\n            { nominal: 29, mass: 29.04254 },\n            { nominal: 30, mass: 30.05165 },\n            { nominal: 31, mass: 31.05971 },\n        ],\n        symbol: 'F',\n        mass: 18.99840316273,\n        name: 'Fluorine',\n        monoisotopicMass: 18.99840316273,\n    },\n    {\n        number: 10,\n        isotopes: [\n            { nominal: 16, mass: 16.02575 },\n            { nominal: 17, mass: 17.01771396 },\n            { nominal: 18, mass: 18.0057087 },\n            { nominal: 19, mass: 19.00188091 },\n            { nominal: 20, mass: 19.9924401762, abundance: 0.9048 },\n            { nominal: 21, mass: 20.993846685, abundance: 0.0027 },\n            { nominal: 22, mass: 21.991385114, abundance: 0.0925 },\n            { nominal: 23, mass: 22.99446691 },\n            { nominal: 24, mass: 23.99361065 },\n            { nominal: 25, mass: 24.997789 },\n            { nominal: 26, mass: 26.000515 },\n            { nominal: 27, mass: 27.007553 },\n            { nominal: 28, mass: 28.01212 },\n            { nominal: 29, mass: 29.01975 },\n            { nominal: 30, mass: 30.02473 },\n            { nominal: 31, mass: 31.0331 },\n            { nominal: 32, mass: 32.03972 },\n            { nominal: 33, mass: 33.04938 },\n            { nominal: 34, mass: 34.05673 },\n        ],\n        symbol: 'Ne',\n        mass: 20.18004638052026,\n        name: 'Neon',\n        monoisotopicMass: 19.9924401762,\n    },\n    {\n        number: 11,\n        isotopes: [\n            { nominal: 18, mass: 18.02688 },\n            { nominal: 19, mass: 19.01388 },\n            { nominal: 20, mass: 20.0073544 },\n            { nominal: 21, mass: 20.99765469 },\n            { nominal: 22, mass: 21.99443741 },\n            { nominal: 23, mass: 22.989769282, abundance: 1 },\n            { nominal: 24, mass: 23.99096295 },\n            { nominal: 25, mass: 24.989954 },\n            { nominal: 26, mass: 25.9926346 },\n            { nominal: 27, mass: 26.9940765 },\n            { nominal: 28, mass: 27.998939 },\n            { nominal: 29, mass: 29.0028771 },\n            { nominal: 30, mass: 30.0090979 },\n            { nominal: 31, mass: 31.013163 },\n            { nominal: 32, mass: 32.02019 },\n            { nominal: 33, mass: 33.02573 },\n            { nominal: 34, mass: 34.03359 },\n            { nominal: 35, mass: 35.04062 },\n            { nominal: 36, mass: 36.04929 },\n            { nominal: 37, mass: 37.05705 },\n        ],\n        symbol: 'Na',\n        mass: 22.989769282,\n        name: 'Sodium',\n        monoisotopicMass: 22.989769282,\n    },\n    {\n        number: 12,\n        isotopes: [\n            { nominal: 19, mass: 19.034169 },\n            { nominal: 20, mass: 20.01885 },\n            { nominal: 21, mass: 21.011716 },\n            { nominal: 22, mass: 21.99957065 },\n            { nominal: 23, mass: 22.99412421 },\n            { nominal: 24, mass: 23.985041697, abundance: 0.7899 },\n            { nominal: 25, mass: 24.985836976, abundance: 0.1 },\n            { nominal: 26, mass: 25.982592968, abundance: 0.1101 },\n            { nominal: 27, mass: 26.984340624 },\n            { nominal: 28, mass: 27.9838767 },\n            { nominal: 29, mass: 28.988617 },\n            { nominal: 30, mass: 29.9904629 },\n            { nominal: 31, mass: 30.996648 },\n            { nominal: 32, mass: 31.9991102 },\n            { nominal: 33, mass: 33.0053271 },\n            { nominal: 34, mass: 34.008935 },\n            { nominal: 35, mass: 35.01679 },\n            { nominal: 36, mass: 36.02188 },\n            { nominal: 37, mass: 37.03037 },\n            { nominal: 38, mass: 38.03658 },\n            { nominal: 39, mass: 39.04538 },\n            { nominal: 40, mass: 40.05218 },\n        ],\n        symbol: 'Mg',\n        mass: 24.3050516198371,\n        name: 'Magnesium',\n        monoisotopicMass: 23.985041697,\n    },\n    {\n        number: 13,\n        isotopes: [\n            { nominal: 21, mass: 21.02897 },\n            { nominal: 22, mass: 22.01954 },\n            { nominal: 23, mass: 23.00724435 },\n            { nominal: 24, mass: 23.9999489 },\n            { nominal: 25, mass: 24.9904281 },\n            { nominal: 26, mass: 25.986891904 },\n            { nominal: 27, mass: 26.98153853, abundance: 1 },\n            { nominal: 28, mass: 27.98191021 },\n            { nominal: 29, mass: 28.9804565 },\n            { nominal: 30, mass: 29.98296 },\n            { nominal: 31, mass: 30.983945 },\n            { nominal: 32, mass: 31.988085 },\n            { nominal: 33, mass: 32.990909 },\n            { nominal: 34, mass: 33.996705 },\n            { nominal: 35, mass: 34.999764 },\n            { nominal: 36, mass: 36.00639 },\n            { nominal: 37, mass: 37.01053 },\n            { nominal: 38, mass: 38.0174 },\n            { nominal: 39, mass: 39.02254 },\n            { nominal: 40, mass: 40.03003 },\n            { nominal: 41, mass: 41.03638 },\n            { nominal: 42, mass: 42.04384 },\n            { nominal: 43, mass: 43.05147 },\n        ],\n        symbol: 'Al',\n        mass: 26.98153853,\n        name: 'Aluminium',\n        monoisotopicMass: 26.98153853,\n    },\n    {\n        number: 14,\n        isotopes: [\n            { nominal: 22, mass: 22.03579 },\n            { nominal: 23, mass: 23.02544 },\n            { nominal: 24, mass: 24.011535 },\n            { nominal: 25, mass: 25.004109 },\n            { nominal: 26, mass: 25.99233384 },\n            { nominal: 27, mass: 26.98670481 },\n            { nominal: 28, mass: 27.97692653465, abundance: 0.92223 },\n            { nominal: 29, mass: 28.9764946649, abundance: 0.04685 },\n            { nominal: 30, mass: 29.973770136, abundance: 0.03092 },\n            { nominal: 31, mass: 30.975363194 },\n            { nominal: 32, mass: 31.97415154 },\n            { nominal: 33, mass: 32.97797696 },\n            { nominal: 34, mass: 33.978576 },\n            { nominal: 35, mass: 34.984583 },\n            { nominal: 36, mass: 35.986695 },\n            { nominal: 37, mass: 36.992921 },\n            { nominal: 38, mass: 37.995523 },\n            { nominal: 39, mass: 39.002491 },\n            { nominal: 40, mass: 40.00583 },\n            { nominal: 41, mass: 41.01301 },\n            { nominal: 42, mass: 42.01778 },\n            { nominal: 43, mass: 43.0248 },\n            { nominal: 44, mass: 44.03061 },\n            { nominal: 45, mass: 45.03995 },\n        ],\n        symbol: 'Si',\n        mass: 28.085498705705955,\n        name: 'Silicon',\n        monoisotopicMass: 27.97692653465,\n    },\n    {\n        number: 15,\n        isotopes: [\n            { nominal: 24, mass: 24.03577 },\n            { nominal: 25, mass: 25.02119 },\n            { nominal: 26, mass: 26.01178 },\n            { nominal: 27, mass: 26.999224 },\n            { nominal: 28, mass: 27.9923266 },\n            { nominal: 29, mass: 28.98180079 },\n            { nominal: 30, mass: 29.97831375 },\n            { nominal: 31, mass: 30.97376199842, abundance: 1 },\n            { nominal: 32, mass: 31.973907643 },\n            { nominal: 33, mass: 32.9717257 },\n            { nominal: 34, mass: 33.97364589 },\n            { nominal: 35, mass: 34.9733141 },\n            { nominal: 36, mass: 35.97826 },\n            { nominal: 37, mass: 36.979607 },\n            { nominal: 38, mass: 37.984252 },\n            { nominal: 39, mass: 38.986227 },\n            { nominal: 40, mass: 39.99133 },\n            { nominal: 41, mass: 40.994654 },\n            { nominal: 42, mass: 42.00108 },\n            { nominal: 43, mass: 43.00502 },\n            { nominal: 44, mass: 44.01121 },\n            { nominal: 45, mass: 45.01645 },\n            { nominal: 46, mass: 46.02446 },\n            { nominal: 47, mass: 47.03139 },\n        ],\n        symbol: 'P',\n        mass: 30.97376199842,\n        name: 'Phosphorus',\n        monoisotopicMass: 30.97376199842,\n    },\n    {\n        number: 16,\n        isotopes: [\n            { nominal: 26, mass: 26.02907 },\n            { nominal: 27, mass: 27.01828 },\n            { nominal: 28, mass: 28.00437 },\n            { nominal: 29, mass: 28.996611 },\n            { nominal: 30, mass: 29.98490703 },\n            { nominal: 31, mass: 30.97955701 },\n            { nominal: 32, mass: 31.9720711744, abundance: 0.9499 },\n            { nominal: 33, mass: 32.9714589098, abundance: 0.0075 },\n            { nominal: 34, mass: 33.967867004, abundance: 0.0425 },\n            { nominal: 35, mass: 34.96903231 },\n            { nominal: 36, mass: 35.96708071, abundance: 0.0001 },\n            { nominal: 37, mass: 36.97112551 },\n            { nominal: 38, mass: 37.9711633 },\n            { nominal: 39, mass: 38.975134 },\n            { nominal: 40, mass: 39.9754826 },\n            { nominal: 41, mass: 40.9795935 },\n            { nominal: 42, mass: 41.9810651 },\n            { nominal: 43, mass: 42.9869076 },\n            { nominal: 44, mass: 43.9901188 },\n            { nominal: 45, mass: 44.99572 },\n            { nominal: 46, mass: 46.00004 },\n            { nominal: 47, mass: 47.00795 },\n            { nominal: 48, mass: 48.0137 },\n            { nominal: 49, mass: 49.02276 },\n        ],\n        symbol: 'S',\n        mass: 32.06478740612706,\n        name: 'Sulfur',\n        monoisotopicMass: 31.9720711744,\n    },\n    {\n        number: 17,\n        isotopes: [\n            { nominal: 28, mass: 28.02954 },\n            { nominal: 29, mass: 29.01478 },\n            { nominal: 30, mass: 30.00477 },\n            { nominal: 31, mass: 30.992414 },\n            { nominal: 32, mass: 31.98568464 },\n            { nominal: 33, mass: 32.97745199 },\n            { nominal: 34, mass: 33.973762485 },\n            { nominal: 35, mass: 34.968852682, abundance: 0.7576 },\n            { nominal: 36, mass: 35.968306809 },\n            { nominal: 37, mass: 36.965902602, abundance: 0.2424 },\n            { nominal: 38, mass: 37.96801044 },\n            { nominal: 39, mass: 38.9680082 },\n            { nominal: 40, mass: 39.970415 },\n            { nominal: 41, mass: 40.970685 },\n            { nominal: 42, mass: 41.97325 },\n            { nominal: 43, mass: 42.97389 },\n            { nominal: 44, mass: 43.97787 },\n            { nominal: 45, mass: 44.98029 },\n            { nominal: 46, mass: 45.98517 },\n            { nominal: 47, mass: 46.98916 },\n            { nominal: 48, mass: 47.99564 },\n            { nominal: 49, mass: 49.00123 },\n            { nominal: 50, mass: 50.00905 },\n            { nominal: 51, mass: 51.01554 },\n        ],\n        symbol: 'Cl',\n        mass: 35.452937582608,\n        name: 'Chlorine',\n        monoisotopicMass: 34.968852682,\n    },\n    {\n        number: 18,\n        isotopes: [\n            { nominal: 30, mass: 30.02307 },\n            { nominal: 31, mass: 31.01212 },\n            { nominal: 32, mass: 31.9976378 },\n            { nominal: 33, mass: 32.98992555 },\n            { nominal: 34, mass: 33.98027009 },\n            { nominal: 35, mass: 34.97525759 },\n            { nominal: 36, mass: 35.967545105, abundance: 0.003336 },\n            { nominal: 37, mass: 36.96677633 },\n            { nominal: 38, mass: 37.96273211, abundance: 0.000629 },\n            { nominal: 39, mass: 38.964313 },\n            { nominal: 40, mass: 39.9623831237, abundance: 0.996035 },\n            { nominal: 41, mass: 40.96450057 },\n            { nominal: 42, mass: 41.9630457 },\n            { nominal: 43, mass: 42.9656361 },\n            { nominal: 44, mass: 43.9649238 },\n            { nominal: 45, mass: 44.96803973 },\n            { nominal: 46, mass: 45.968083 },\n            { nominal: 47, mass: 46.972935 },\n            { nominal: 48, mass: 47.97591 },\n            { nominal: 49, mass: 48.9819 },\n            { nominal: 50, mass: 49.98613 },\n            { nominal: 51, mass: 50.9937 },\n            { nominal: 52, mass: 51.99896 },\n            { nominal: 53, mass: 53.00729 },\n        ],\n        symbol: 'Ar',\n        mass: 39.947798563582005,\n        name: 'Argon',\n        monoisotopicMass: 39.9623831237,\n    },\n    {\n        number: 19,\n        isotopes: [\n            { nominal: 32, mass: 32.02265 },\n            { nominal: 33, mass: 33.00756 },\n            { nominal: 34, mass: 33.99869 },\n            { nominal: 35, mass: 34.98800541 },\n            { nominal: 36, mass: 35.98130201 },\n            { nominal: 37, mass: 36.97337589 },\n            { nominal: 38, mass: 37.96908112 },\n            { nominal: 39, mass: 38.9637064864, abundance: 0.932581 },\n            { nominal: 40, mass: 39.963998166, abundance: 0.000117 },\n            { nominal: 41, mass: 40.9618252579, abundance: 0.067302 },\n            { nominal: 42, mass: 41.96240231 },\n            { nominal: 43, mass: 42.9607347 },\n            { nominal: 44, mass: 43.96158699 },\n            { nominal: 45, mass: 44.96069149 },\n            { nominal: 46, mass: 45.96198159 },\n            { nominal: 47, mass: 46.9616616 },\n            { nominal: 48, mass: 47.96534119 },\n            { nominal: 49, mass: 48.96821075 },\n            { nominal: 50, mass: 49.97238 },\n            { nominal: 51, mass: 50.975828 },\n            { nominal: 52, mass: 51.98224 },\n            { nominal: 53, mass: 52.98746 },\n            { nominal: 54, mass: 53.99463 },\n            { nominal: 55, mass: 55.00076 },\n            { nominal: 56, mass: 56.00851 },\n        ],\n        symbol: 'K',\n        mass: 39.098300910086,\n        name: 'Potassium',\n        monoisotopicMass: 38.9637064864,\n    },\n    {\n        number: 20,\n        isotopes: [\n            { nominal: 34, mass: 34.01487 },\n            { nominal: 35, mass: 35.00514 },\n            { nominal: 36, mass: 35.993074 },\n            { nominal: 37, mass: 36.98589785 },\n            { nominal: 38, mass: 37.97631922 },\n            { nominal: 39, mass: 38.97071081 },\n            { nominal: 40, mass: 39.962590863, abundance: 0.96941 },\n            { nominal: 41, mass: 40.96227792 },\n            { nominal: 42, mass: 41.95861783, abundance: 0.00647 },\n            { nominal: 43, mass: 42.95876644, abundance: 0.00135 },\n            { nominal: 44, mass: 43.95548156, abundance: 0.02086 },\n            { nominal: 45, mass: 44.95618635 },\n            { nominal: 46, mass: 45.953689, abundance: 0.00004 },\n            { nominal: 47, mass: 46.9545424 },\n            { nominal: 48, mass: 47.95252276, abundance: 0.00187 },\n            { nominal: 49, mass: 48.95566274 },\n            { nominal: 50, mass: 49.9574992 },\n            { nominal: 51, mass: 50.960989 },\n            { nominal: 52, mass: 51.963217 },\n            { nominal: 53, mass: 52.96945 },\n            { nominal: 54, mass: 53.9734 },\n            { nominal: 55, mass: 54.9803 },\n            { nominal: 56, mass: 55.98508 },\n            { nominal: 57, mass: 56.99262 },\n            { nominal: 58, mass: 57.99794 },\n        ],\n        symbol: 'Ca',\n        mass: 40.078022511017735,\n        name: 'Calcium',\n        monoisotopicMass: 39.962590863,\n    },\n    {\n        number: 21,\n        isotopes: [\n            { nominal: 36, mass: 36.01648 },\n            { nominal: 37, mass: 37.00374 },\n            { nominal: 38, mass: 37.99512 },\n            { nominal: 39, mass: 38.984785 },\n            { nominal: 40, mass: 39.9779673 },\n            { nominal: 41, mass: 40.969251105 },\n            { nominal: 42, mass: 41.96551653 },\n            { nominal: 43, mass: 42.9611505 },\n            { nominal: 44, mass: 43.9594029 },\n            { nominal: 45, mass: 44.95590828, abundance: 1 },\n            { nominal: 46, mass: 45.95516826 },\n            { nominal: 47, mass: 46.9524037 },\n            { nominal: 48, mass: 47.9522236 },\n            { nominal: 49, mass: 48.9500146 },\n            { nominal: 50, mass: 49.952176 },\n            { nominal: 51, mass: 50.953592 },\n            { nominal: 52, mass: 51.95688 },\n            { nominal: 53, mass: 52.95909 },\n            { nominal: 54, mass: 53.96393 },\n            { nominal: 55, mass: 54.96782 },\n            { nominal: 56, mass: 55.97345 },\n            { nominal: 57, mass: 56.97777 },\n            { nominal: 58, mass: 57.98403 },\n            { nominal: 59, mass: 58.98894 },\n            { nominal: 60, mass: 59.99565 },\n            { nominal: 61, mass: 61.001 },\n        ],\n        symbol: 'Sc',\n        mass: 44.95590828,\n        name: 'Scandium',\n        monoisotopicMass: 44.95590828,\n    },\n    {\n        number: 22,\n        isotopes: [\n            { nominal: 38, mass: 38.01145 },\n            { nominal: 39, mass: 39.00236 },\n            { nominal: 40, mass: 39.9905 },\n            { nominal: 41, mass: 40.983148 },\n            { nominal: 42, mass: 41.97304903 },\n            { nominal: 43, mass: 42.9685225 },\n            { nominal: 44, mass: 43.95968995 },\n            { nominal: 45, mass: 44.95812198 },\n            { nominal: 46, mass: 45.95262772, abundance: 0.0825 },\n            { nominal: 47, mass: 46.95175879, abundance: 0.0744 },\n            { nominal: 48, mass: 47.94794198, abundance: 0.7372 },\n            { nominal: 49, mass: 48.94786568, abundance: 0.0541 },\n            { nominal: 50, mass: 49.94478689, abundance: 0.0518 },\n            { nominal: 51, mass: 50.94661065 },\n            { nominal: 52, mass: 51.946893 },\n            { nominal: 53, mass: 52.94973 },\n            { nominal: 54, mass: 53.95105 },\n            { nominal: 55, mass: 54.95527 },\n            { nominal: 56, mass: 55.95791 },\n            { nominal: 57, mass: 56.96364 },\n            { nominal: 58, mass: 57.9666 },\n            { nominal: 59, mass: 58.97247 },\n            { nominal: 60, mass: 59.97603 },\n            { nominal: 61, mass: 60.98245 },\n            { nominal: 62, mass: 61.98651 },\n            { nominal: 63, mass: 62.99375 },\n        ],\n        symbol: 'Ti',\n        mass: 47.866744962721995,\n        name: 'Titanium',\n        monoisotopicMass: 47.94794198,\n    },\n    {\n        number: 23,\n        isotopes: [\n            { nominal: 40, mass: 40.01276 },\n            { nominal: 41, mass: 41.00021 },\n            { nominal: 42, mass: 41.99182 },\n            { nominal: 43, mass: 42.980766 },\n            { nominal: 44, mass: 43.97411 },\n            { nominal: 45, mass: 44.9657748 },\n            { nominal: 46, mass: 45.96019878 },\n            { nominal: 47, mass: 46.95490491 },\n            { nominal: 48, mass: 47.9522522 },\n            { nominal: 49, mass: 48.9485118 },\n            { nominal: 50, mass: 49.94715601, abundance: 0.0025 },\n            { nominal: 51, mass: 50.94395704, abundance: 0.9975 },\n            { nominal: 52, mass: 51.94477301 },\n            { nominal: 53, mass: 52.9443367 },\n            { nominal: 54, mass: 53.946439 },\n            { nominal: 55, mass: 54.94724 },\n            { nominal: 56, mass: 55.95048 },\n            { nominal: 57, mass: 56.95252 },\n            { nominal: 58, mass: 57.95672 },\n            { nominal: 59, mass: 58.95939 },\n            { nominal: 60, mass: 59.96431 },\n            { nominal: 61, mass: 60.96725 },\n            { nominal: 62, mass: 61.97265 },\n            { nominal: 63, mass: 62.97639 },\n            { nominal: 64, mass: 63.98264 },\n            { nominal: 65, mass: 64.9875 },\n            { nominal: 66, mass: 65.99398 },\n        ],\n        symbol: 'V',\n        mass: 50.941465037425004,\n        name: 'Vanadium',\n        monoisotopicMass: 50.94395704,\n    },\n    {\n        number: 24,\n        isotopes: [\n            { nominal: 42, mass: 42.0067 },\n            { nominal: 43, mass: 42.99753 },\n            { nominal: 44, mass: 43.98536 },\n            { nominal: 45, mass: 44.97905 },\n            { nominal: 46, mass: 45.968359 },\n            { nominal: 47, mass: 46.9628974 },\n            { nominal: 48, mass: 47.9540291 },\n            { nominal: 49, mass: 48.9513333 },\n            { nominal: 50, mass: 49.94604183, abundance: 0.04345 },\n            { nominal: 51, mass: 50.94476502 },\n            { nominal: 52, mass: 51.94050623, abundance: 0.83789 },\n            { nominal: 53, mass: 52.94064815, abundance: 0.09501 },\n            { nominal: 54, mass: 53.93887916, abundance: 0.02365 },\n            { nominal: 55, mass: 54.94083843 },\n            { nominal: 56, mass: 55.9406531 },\n            { nominal: 57, mass: 56.943613 },\n            { nominal: 58, mass: 57.94435 },\n            { nominal: 59, mass: 58.94859 },\n            { nominal: 60, mass: 59.95008 },\n            { nominal: 61, mass: 60.95442 },\n            { nominal: 62, mass: 61.9561 },\n            { nominal: 63, mass: 62.96165 },\n            { nominal: 64, mass: 63.96408 },\n            { nominal: 65, mass: 64.96996 },\n            { nominal: 66, mass: 65.97366 },\n            { nominal: 67, mass: 66.98016 },\n            { nominal: 68, mass: 67.98403 },\n        ],\n        symbol: 'Cr',\n        mass: 51.9961317554337,\n        name: 'Chromium',\n        monoisotopicMass: 51.94050623,\n    },\n    {\n        number: 25,\n        isotopes: [\n            { nominal: 44, mass: 44.00715 },\n            { nominal: 45, mass: 44.99449 },\n            { nominal: 46, mass: 45.98609 },\n            { nominal: 47, mass: 46.975775 },\n            { nominal: 48, mass: 47.96852 },\n            { nominal: 49, mass: 48.959595 },\n            { nominal: 50, mass: 49.95423778 },\n            { nominal: 51, mass: 50.94820847 },\n            { nominal: 52, mass: 51.9455639 },\n            { nominal: 53, mass: 52.94128889 },\n            { nominal: 54, mass: 53.9403576 },\n            { nominal: 55, mass: 54.93804391, abundance: 1 },\n            { nominal: 56, mass: 55.93890369 },\n            { nominal: 57, mass: 56.9382861 },\n            { nominal: 58, mass: 57.9400666 },\n            { nominal: 59, mass: 58.9403911 },\n            { nominal: 60, mass: 59.9431366 },\n            { nominal: 61, mass: 60.9444525 },\n            { nominal: 62, mass: 61.94795 },\n            { nominal: 63, mass: 62.9496647 },\n            { nominal: 64, mass: 63.9538494 },\n            { nominal: 65, mass: 64.9560198 },\n            { nominal: 66, mass: 65.960547 },\n            { nominal: 67, mass: 66.96424 },\n            { nominal: 68, mass: 67.96962 },\n            { nominal: 69, mass: 68.97366 },\n            { nominal: 70, mass: 69.97937 },\n            { nominal: 71, mass: 70.98368 },\n        ],\n        symbol: 'Mn',\n        mass: 54.93804391,\n        name: 'Manganese',\n        monoisotopicMass: 54.93804391,\n    },\n    {\n        number: 26,\n        isotopes: [\n            { nominal: 45, mass: 45.01442 },\n            { nominal: 46, mass: 46.00063 },\n            { nominal: 47, mass: 46.99185 },\n            { nominal: 48, mass: 47.98023 },\n            { nominal: 49, mass: 48.973429 },\n            { nominal: 50, mass: 49.962975 },\n            { nominal: 51, mass: 50.956841 },\n            { nominal: 52, mass: 51.9481131 },\n            { nominal: 53, mass: 52.9453064 },\n            { nominal: 54, mass: 53.93960899, abundance: 0.05845 },\n            { nominal: 55, mass: 54.93829199 },\n            { nominal: 56, mass: 55.93493633, abundance: 0.91754 },\n            { nominal: 57, mass: 56.93539284, abundance: 0.02119 },\n            { nominal: 58, mass: 57.93327443, abundance: 0.00282 },\n            { nominal: 59, mass: 58.93487434 },\n            { nominal: 60, mass: 59.9340711 },\n            { nominal: 61, mass: 60.9367462 },\n            { nominal: 62, mass: 61.9367918 },\n            { nominal: 63, mass: 62.9402727 },\n            { nominal: 64, mass: 63.9409878 },\n            { nominal: 65, mass: 64.9450115 },\n            { nominal: 66, mass: 65.94625 },\n            { nominal: 67, mass: 66.95054 },\n            { nominal: 68, mass: 67.95295 },\n            { nominal: 69, mass: 68.95807 },\n            { nominal: 70, mass: 69.96102 },\n            { nominal: 71, mass: 70.96672 },\n            { nominal: 72, mass: 71.96983 },\n            { nominal: 73, mass: 72.97572 },\n            { nominal: 74, mass: 73.97935 },\n        ],\n        symbol: 'Fe',\n        mass: 55.845144433865904,\n        name: 'Iron',\n        monoisotopicMass: 55.93493633,\n    },\n    {\n        number: 27,\n        isotopes: [\n            { nominal: 47, mass: 47.01057 },\n            { nominal: 48, mass: 48.00093 },\n            { nominal: 49, mass: 48.98891 },\n            { nominal: 50, mass: 49.98091 },\n            { nominal: 51, mass: 50.970647 },\n            { nominal: 52, mass: 51.96351 },\n            { nominal: 53, mass: 52.9542041 },\n            { nominal: 54, mass: 53.94845987 },\n            { nominal: 55, mass: 54.9419972 },\n            { nominal: 56, mass: 55.9398388 },\n            { nominal: 57, mass: 56.93629057 },\n            { nominal: 58, mass: 57.9357521 },\n            { nominal: 59, mass: 58.93319429, abundance: 1 },\n            { nominal: 60, mass: 59.9338163 },\n            { nominal: 61, mass: 60.93247662 },\n            { nominal: 62, mass: 61.934059 },\n            { nominal: 63, mass: 62.9336 },\n            { nominal: 64, mass: 63.935811 },\n            { nominal: 65, mass: 64.9364621 },\n            { nominal: 66, mass: 65.939443 },\n            { nominal: 67, mass: 66.9406096 },\n            { nominal: 68, mass: 67.94426 },\n            { nominal: 69, mass: 68.94614 },\n            { nominal: 70, mass: 69.94963 },\n            { nominal: 71, mass: 70.95237 },\n            { nominal: 72, mass: 71.95729 },\n            { nominal: 73, mass: 72.96039 },\n            { nominal: 74, mass: 73.96515 },\n            { nominal: 75, mass: 74.96876 },\n            { nominal: 76, mass: 75.97413 },\n        ],\n        symbol: 'Co',\n        mass: 58.93319429,\n        name: 'Cobalt',\n        monoisotopicMass: 58.93319429,\n    },\n    {\n        number: 28,\n        isotopes: [\n            { nominal: 48, mass: 48.01769 },\n            { nominal: 49, mass: 49.0077 },\n            { nominal: 50, mass: 49.99474 },\n            { nominal: 51, mass: 50.98611 },\n            { nominal: 52, mass: 51.9748 },\n            { nominal: 53, mass: 52.96819 },\n            { nominal: 54, mass: 53.957892 },\n            { nominal: 55, mass: 54.95133063 },\n            { nominal: 56, mass: 55.94212855 },\n            { nominal: 57, mass: 56.93979218 },\n            { nominal: 58, mass: 57.93534241, abundance: 0.68077 },\n            { nominal: 59, mass: 58.9343462 },\n            { nominal: 60, mass: 59.93078588, abundance: 0.26223 },\n            { nominal: 61, mass: 60.93105557, abundance: 0.011399 },\n            { nominal: 62, mass: 61.92834537, abundance: 0.036346 },\n            { nominal: 63, mass: 62.92966963 },\n            { nominal: 64, mass: 63.92796682, abundance: 0.009255 },\n            { nominal: 65, mass: 64.93008517 },\n            { nominal: 66, mass: 65.9291393 },\n            { nominal: 67, mass: 66.9315694 },\n            { nominal: 68, mass: 67.9318688 },\n            { nominal: 69, mass: 68.9356103 },\n            { nominal: 70, mass: 69.9364313 },\n            { nominal: 71, mass: 70.940519 },\n            { nominal: 72, mass: 71.9417859 },\n            { nominal: 73, mass: 72.9462067 },\n            { nominal: 74, mass: 73.94798 },\n            { nominal: 75, mass: 74.9525 },\n            { nominal: 76, mass: 75.95533 },\n            { nominal: 77, mass: 76.96055 },\n            { nominal: 78, mass: 77.96336 },\n            { nominal: 79, mass: 78.97025 },\n        ],\n        symbol: 'Ni',\n        mass: 58.69334710994765,\n        name: 'Nickel',\n        monoisotopicMass: 57.93534241,\n    },\n    {\n        number: 29,\n        isotopes: [\n            { nominal: 52, mass: 51.99671 },\n            { nominal: 53, mass: 52.98459 },\n            { nominal: 54, mass: 53.97666 },\n            { nominal: 55, mass: 54.96604 },\n            { nominal: 56, mass: 55.95895 },\n            { nominal: 57, mass: 56.9492125 },\n            { nominal: 58, mass: 57.94453305 },\n            { nominal: 59, mass: 58.93949748 },\n            { nominal: 60, mass: 59.9373645 },\n            { nominal: 61, mass: 60.9334576 },\n            { nominal: 62, mass: 61.93259541 },\n            { nominal: 63, mass: 62.92959772, abundance: 0.6915 },\n            { nominal: 64, mass: 63.92976434 },\n            { nominal: 65, mass: 64.9277897, abundance: 0.3085 },\n            { nominal: 66, mass: 65.92886903 },\n            { nominal: 67, mass: 66.9277303 },\n            { nominal: 68, mass: 67.9296109 },\n            { nominal: 69, mass: 68.9294293 },\n            { nominal: 70, mass: 69.9323921 },\n            { nominal: 71, mass: 70.9326768 },\n            { nominal: 72, mass: 71.9358203 },\n            { nominal: 73, mass: 72.9366744 },\n            { nominal: 74, mass: 73.9398749 },\n            { nominal: 75, mass: 74.9415226 },\n            { nominal: 76, mass: 75.945275 },\n            { nominal: 77, mass: 76.94792 },\n            { nominal: 78, mass: 77.95223 },\n            { nominal: 79, mass: 78.95502 },\n            { nominal: 80, mass: 79.96089 },\n            { nominal: 81, mass: 80.96587 },\n            { nominal: 82, mass: 81.97244 },\n        ],\n        symbol: 'Cu',\n        mass: 63.54603994583,\n        name: 'Copper',\n        monoisotopicMass: 62.92959772,\n    },\n    {\n        number: 30,\n        isotopes: [\n            { nominal: 54, mass: 53.99204 },\n            { nominal: 55, mass: 54.98398 },\n            { nominal: 56, mass: 55.97254 },\n            { nominal: 57, mass: 56.96506 },\n            { nominal: 58, mass: 57.954591 },\n            { nominal: 59, mass: 58.94931266 },\n            { nominal: 60, mass: 59.9418421 },\n            { nominal: 61, mass: 60.939507 },\n            { nominal: 62, mass: 61.93433397 },\n            { nominal: 63, mass: 62.9332115 },\n            { nominal: 64, mass: 63.92914201, abundance: 0.4917 },\n            { nominal: 65, mass: 64.92924077 },\n            { nominal: 66, mass: 65.92603381, abundance: 0.2773 },\n            { nominal: 67, mass: 66.92712775, abundance: 0.0404 },\n            { nominal: 68, mass: 67.92484455, abundance: 0.1845 },\n            { nominal: 69, mass: 68.9265507 },\n            { nominal: 70, mass: 69.9253192, abundance: 0.0061 },\n            { nominal: 71, mass: 70.9277196 },\n            { nominal: 72, mass: 71.9268428 },\n            { nominal: 73, mass: 72.9295826 },\n            { nominal: 74, mass: 73.9294073 },\n            { nominal: 75, mass: 74.9328402 },\n            { nominal: 76, mass: 75.933115 },\n            { nominal: 77, mass: 76.9368872 },\n            { nominal: 78, mass: 77.9382892 },\n            { nominal: 79, mass: 78.9426381 },\n            { nominal: 80, mass: 79.9445529 },\n            { nominal: 81, mass: 80.9504026 },\n            { nominal: 82, mass: 81.95426 },\n            { nominal: 83, mass: 82.96056 },\n            { nominal: 84, mass: 83.96521 },\n            { nominal: 85, mass: 84.97226 },\n        ],\n        symbol: 'Zn',\n        mass: 65.37778252952499,\n        name: 'Zinc',\n        monoisotopicMass: 63.92914201,\n    },\n    {\n        number: 31,\n        isotopes: [\n            { nominal: 56, mass: 55.99536 },\n            { nominal: 57, mass: 56.9832 },\n            { nominal: 58, mass: 57.97478 },\n            { nominal: 59, mass: 58.96353 },\n            { nominal: 60, mass: 59.95729 },\n            { nominal: 61, mass: 60.949399 },\n            { nominal: 62, mass: 61.94419025 },\n            { nominal: 63, mass: 62.9392942 },\n            { nominal: 64, mass: 63.9368404 },\n            { nominal: 65, mass: 64.93273459 },\n            { nominal: 66, mass: 65.9315894 },\n            { nominal: 67, mass: 66.9282025 },\n            { nominal: 68, mass: 67.9279805 },\n            { nominal: 69, mass: 68.9255735, abundance: 0.60108 },\n            { nominal: 70, mass: 69.9260219 },\n            { nominal: 71, mass: 70.92470258, abundance: 0.39892 },\n            { nominal: 72, mass: 71.92636747 },\n            { nominal: 73, mass: 72.9251747 },\n            { nominal: 74, mass: 73.9269457 },\n            { nominal: 75, mass: 74.9265002 },\n            { nominal: 76, mass: 75.9288276 },\n            { nominal: 77, mass: 76.9291543 },\n            { nominal: 78, mass: 77.9316088 },\n            { nominal: 79, mass: 78.9328523 },\n            { nominal: 80, mass: 79.9364208 },\n            { nominal: 81, mass: 80.9381338 },\n            { nominal: 82, mass: 81.9431765 },\n            { nominal: 83, mass: 82.9471203 },\n            { nominal: 84, mass: 83.95246 },\n            { nominal: 85, mass: 84.95699 },\n            { nominal: 86, mass: 85.96301 },\n            { nominal: 87, mass: 86.96824 },\n        ],\n        symbol: 'Ga',\n        mass: 69.7230660725936,\n        name: 'Gallium',\n        monoisotopicMass: 68.9255735,\n    },\n    {\n        number: 32,\n        isotopes: [\n            { nominal: 58, mass: 57.99172 },\n            { nominal: 59, mass: 58.98249 },\n            { nominal: 60, mass: 59.97036 },\n            { nominal: 61, mass: 60.96379 },\n            { nominal: 62, mass: 61.95502 },\n            { nominal: 63, mass: 62.949628 },\n            { nominal: 64, mass: 63.9416899 },\n            { nominal: 65, mass: 64.9393681 },\n            { nominal: 66, mass: 65.9338621 },\n            { nominal: 67, mass: 66.9327339 },\n            { nominal: 68, mass: 67.9280953 },\n            { nominal: 69, mass: 68.9279645 },\n            { nominal: 70, mass: 69.92424875, abundance: 0.2057 },\n            { nominal: 71, mass: 70.92495233 },\n            { nominal: 72, mass: 71.922075826, abundance: 0.2745 },\n            { nominal: 73, mass: 72.923458956, abundance: 0.0775 },\n            { nominal: 74, mass: 73.921177761, abundance: 0.365 },\n            { nominal: 75, mass: 74.92285837 },\n            { nominal: 76, mass: 75.921402726, abundance: 0.0773 },\n            { nominal: 77, mass: 76.923549843 },\n            { nominal: 78, mass: 77.9228529 },\n            { nominal: 79, mass: 78.92536 },\n            { nominal: 80, mass: 79.9253508 },\n            { nominal: 81, mass: 80.9288329 },\n            { nominal: 82, mass: 81.929774 },\n            { nominal: 83, mass: 82.9345391 },\n            { nominal: 84, mass: 83.9375751 },\n            { nominal: 85, mass: 84.9429697 },\n            { nominal: 86, mass: 85.94658 },\n            { nominal: 87, mass: 86.95268 },\n            { nominal: 88, mass: 87.95691 },\n            { nominal: 89, mass: 88.96379 },\n            { nominal: 90, mass: 89.96863 },\n        ],\n        symbol: 'Ge',\n        mass: 72.6275501646868,\n        name: 'Germanium',\n        monoisotopicMass: 73.921177761,\n    },\n    {\n        number: 33,\n        isotopes: [\n            { nominal: 60, mass: 59.99388 },\n            { nominal: 61, mass: 60.98112 },\n            { nominal: 62, mass: 61.97361 },\n            { nominal: 63, mass: 62.9639 },\n            { nominal: 64, mass: 63.95743 },\n            { nominal: 65, mass: 64.949611 },\n            { nominal: 66, mass: 65.9441488 },\n            { nominal: 67, mass: 66.93925111 },\n            { nominal: 68, mass: 67.9367741 },\n            { nominal: 69, mass: 68.932246 },\n            { nominal: 70, mass: 69.930926 },\n            { nominal: 71, mass: 70.9271138 },\n            { nominal: 72, mass: 71.9267523 },\n            { nominal: 73, mass: 72.9238291 },\n            { nominal: 74, mass: 73.9239286 },\n            { nominal: 75, mass: 74.92159457, abundance: 1 },\n            { nominal: 76, mass: 75.92239202 },\n            { nominal: 77, mass: 76.9206476 },\n            { nominal: 78, mass: 77.921828 },\n            { nominal: 79, mass: 78.9209484 },\n            { nominal: 80, mass: 79.9224746 },\n            { nominal: 81, mass: 80.9221323 },\n            { nominal: 82, mass: 81.9247412 },\n            { nominal: 83, mass: 82.9252069 },\n            { nominal: 84, mass: 83.9293033 },\n            { nominal: 85, mass: 84.9321637 },\n            { nominal: 86, mass: 85.9367015 },\n            { nominal: 87, mass: 86.9402917 },\n            { nominal: 88, mass: 87.94555 },\n            { nominal: 89, mass: 88.94976 },\n            { nominal: 90, mass: 89.95563 },\n            { nominal: 91, mass: 90.96039 },\n            { nominal: 92, mass: 91.96674 },\n        ],\n        symbol: 'As',\n        mass: 74.92159457,\n        name: 'Arsenic',\n        monoisotopicMass: 74.92159457,\n    },\n    {\n        number: 34,\n        isotopes: [\n            { nominal: 64, mass: 63.97109 },\n            { nominal: 65, mass: 64.9644 },\n            { nominal: 66, mass: 65.95559 },\n            { nominal: 67, mass: 66.949994 },\n            { nominal: 68, mass: 67.94182524 },\n            { nominal: 69, mass: 68.9394148 },\n            { nominal: 70, mass: 69.9335155 },\n            { nominal: 71, mass: 70.9322094 },\n            { nominal: 72, mass: 71.9271405 },\n            { nominal: 73, mass: 72.9267549 },\n            { nominal: 74, mass: 73.922475934, abundance: 0.0089 },\n            { nominal: 75, mass: 74.92252287 },\n            { nominal: 76, mass: 75.919213704, abundance: 0.0937 },\n            { nominal: 77, mass: 76.919914154, abundance: 0.0763 },\n            { nominal: 78, mass: 77.91730928, abundance: 0.2377 },\n            { nominal: 79, mass: 78.91849929 },\n            { nominal: 80, mass: 79.9165218, abundance: 0.4961 },\n            { nominal: 81, mass: 80.917993 },\n            { nominal: 82, mass: 81.9166995, abundance: 0.0873 },\n            { nominal: 83, mass: 82.9191186 },\n            { nominal: 84, mass: 83.9184668 },\n            { nominal: 85, mass: 84.9222608 },\n            { nominal: 86, mass: 85.9243117 },\n            { nominal: 87, mass: 86.9286886 },\n            { nominal: 88, mass: 87.9314175 },\n            { nominal: 89, mass: 88.9366691 },\n            { nominal: 90, mass: 89.9401 },\n            { nominal: 91, mass: 90.94596 },\n            { nominal: 92, mass: 91.94984 },\n            { nominal: 93, mass: 92.95629 },\n            { nominal: 94, mass: 93.96049 },\n            { nominal: 95, mass: 94.9673 },\n        ],\n        symbol: 'Se',\n        mass: 78.95938855701361,\n        name: 'Selenium',\n        monoisotopicMass: 79.9165218,\n    },\n    {\n        number: 35,\n        isotopes: [\n            { nominal: 67, mass: 66.96465 },\n            { nominal: 68, mass: 67.95873 },\n            { nominal: 69, mass: 68.950497 },\n            { nominal: 70, mass: 69.944792 },\n            { nominal: 71, mass: 70.9393422 },\n            { nominal: 72, mass: 71.9365886 },\n            { nominal: 73, mass: 72.9316715 },\n            { nominal: 74, mass: 73.9299102 },\n            { nominal: 75, mass: 74.9258105 },\n            { nominal: 76, mass: 75.924542 },\n            { nominal: 77, mass: 76.9213792 },\n            { nominal: 78, mass: 77.9211459 },\n            { nominal: 79, mass: 78.9183376, abundance: 0.5069 },\n            { nominal: 80, mass: 79.9185298 },\n            { nominal: 81, mass: 80.9162897, abundance: 0.4931 },\n            { nominal: 82, mass: 81.9168032 },\n            { nominal: 83, mass: 82.9151756 },\n            { nominal: 84, mass: 83.916496 },\n            { nominal: 85, mass: 84.9156458 },\n            { nominal: 86, mass: 85.9188054 },\n            { nominal: 87, mass: 86.920674 },\n            { nominal: 88, mass: 87.9240833 },\n            { nominal: 89, mass: 88.9267046 },\n            { nominal: 90, mass: 89.9312928 },\n            { nominal: 91, mass: 90.9343986 },\n            { nominal: 92, mass: 91.9396316 },\n            { nominal: 93, mass: 92.94313 },\n            { nominal: 94, mass: 93.9489 },\n            { nominal: 95, mass: 94.95301 },\n            { nominal: 96, mass: 95.95903 },\n            { nominal: 97, mass: 96.96344 },\n            { nominal: 98, mass: 97.96946 },\n        ],\n        symbol: 'Br',\n        mass: 79.90352778050999,\n        name: 'Bromine',\n        monoisotopicMass: 78.9183376,\n    },\n    {\n        number: 36,\n        isotopes: [\n            { nominal: 69, mass: 68.96518 },\n            { nominal: 70, mass: 69.95604 },\n            { nominal: 71, mass: 70.95027 },\n            { nominal: 72, mass: 71.9420924 },\n            { nominal: 73, mass: 72.9392892 },\n            { nominal: 74, mass: 73.933084 },\n            { nominal: 75, mass: 74.9309457 },\n            { nominal: 76, mass: 75.9259103 },\n            { nominal: 77, mass: 76.92467 },\n            { nominal: 78, mass: 77.92036494, abundance: 0.00355 },\n            { nominal: 79, mass: 78.9200829 },\n            { nominal: 80, mass: 79.91637808, abundance: 0.02286 },\n            { nominal: 81, mass: 80.9165912 },\n            { nominal: 82, mass: 81.91348273, abundance: 0.11593 },\n            { nominal: 83, mass: 82.91412716, abundance: 0.115 },\n            { nominal: 84, mass: 83.9114977282, abundance: 0.56987 },\n            { nominal: 85, mass: 84.9125273 },\n            { nominal: 86, mass: 85.9106106269, abundance: 0.17279 },\n            { nominal: 87, mass: 86.91335476 },\n            { nominal: 88, mass: 87.9144479 },\n            { nominal: 89, mass: 88.9178355 },\n            { nominal: 90, mass: 89.9195279 },\n            { nominal: 91, mass: 90.9238063 },\n            { nominal: 92, mass: 91.9261731 },\n            { nominal: 93, mass: 92.9311472 },\n            { nominal: 94, mass: 93.93414 },\n            { nominal: 95, mass: 94.939711 },\n            { nominal: 96, mass: 95.943017 },\n            { nominal: 97, mass: 96.94909 },\n            { nominal: 98, mass: 97.95243 },\n            { nominal: 99, mass: 98.95839 },\n            { nominal: 100, mass: 99.96237 },\n            { nominal: 101, mass: 100.96873 },\n        ],\n        symbol: 'Kr',\n        mass: 83.7979999953261,\n        name: 'Krypton',\n        monoisotopicMass: 83.9114977282,\n    },\n    {\n        number: 37,\n        isotopes: [\n            { nominal: 71, mass: 70.96532 },\n            { nominal: 72, mass: 71.95908 },\n            { nominal: 73, mass: 72.95053 },\n            { nominal: 74, mass: 73.9442659 },\n            { nominal: 75, mass: 74.9385732 },\n            { nominal: 76, mass: 75.935073 },\n            { nominal: 77, mass: 76.9304016 },\n            { nominal: 78, mass: 77.9281419 },\n            { nominal: 79, mass: 78.9239899 },\n            { nominal: 80, mass: 79.9225164 },\n            { nominal: 81, mass: 80.9189939 },\n            { nominal: 82, mass: 81.918209 },\n            { nominal: 83, mass: 82.9151142 },\n            { nominal: 84, mass: 83.9143752 },\n            { nominal: 85, mass: 84.9117897379, abundance: 0.7217 },\n            { nominal: 86, mass: 85.91116743 },\n            { nominal: 87, mass: 86.909180531, abundance: 0.2783 },\n            { nominal: 88, mass: 87.91131559 },\n            { nominal: 89, mass: 88.9122783 },\n            { nominal: 90, mass: 89.9147985 },\n            { nominal: 91, mass: 90.9165372 },\n            { nominal: 92, mass: 91.9197284 },\n            { nominal: 93, mass: 92.9220393 },\n            { nominal: 94, mass: 93.9263948 },\n            { nominal: 95, mass: 94.92926 },\n            { nominal: 96, mass: 95.9341334 },\n            { nominal: 97, mass: 96.9371771 },\n            { nominal: 98, mass: 97.9416869 },\n            { nominal: 99, mass: 98.94503 },\n            { nominal: 100, mass: 99.95003 },\n            { nominal: 101, mass: 100.95404 },\n            { nominal: 102, mass: 101.95952 },\n            { nominal: 103, mass: 102.96392 },\n        ],\n        symbol: 'Rb',\n        mass: 85.46766359561973,\n        name: 'Rubidium',\n        monoisotopicMass: 84.9117897379,\n    },\n    {\n        number: 38,\n        isotopes: [\n            { nominal: 73, mass: 72.9657 },\n            { nominal: 74, mass: 73.95617 },\n            { nominal: 75, mass: 74.94995 },\n            { nominal: 76, mass: 75.941763 },\n            { nominal: 77, mass: 76.9379455 },\n            { nominal: 78, mass: 77.93218 },\n            { nominal: 79, mass: 78.9297077 },\n            { nominal: 80, mass: 79.9245175 },\n            { nominal: 81, mass: 80.9232114 },\n            { nominal: 82, mass: 81.9183999 },\n            { nominal: 83, mass: 82.9175544 },\n            { nominal: 84, mass: 83.9134191, abundance: 0.0056 },\n            { nominal: 85, mass: 84.912932 },\n            { nominal: 86, mass: 85.9092606, abundance: 0.0986 },\n            { nominal: 87, mass: 86.9088775, abundance: 0.07 },\n            { nominal: 88, mass: 87.9056125, abundance: 0.8258 },\n            { nominal: 89, mass: 88.9074511 },\n            { nominal: 90, mass: 89.90773 },\n            { nominal: 91, mass: 90.9101954 },\n            { nominal: 92, mass: 91.9110382 },\n            { nominal: 93, mass: 92.9140242 },\n            { nominal: 94, mass: 93.9153556 },\n            { nominal: 95, mass: 94.9193529 },\n            { nominal: 96, mass: 95.9217066 },\n            { nominal: 97, mass: 96.926374 },\n            { nominal: 98, mass: 97.9286888 },\n            { nominal: 99, mass: 98.9328907 },\n            { nominal: 100, mass: 99.93577 },\n            { nominal: 101, mass: 100.940352 },\n            { nominal: 102, mass: 101.943791 },\n            { nominal: 103, mass: 102.94909 },\n            { nominal: 104, mass: 103.95265 },\n            { nominal: 105, mass: 104.95855 },\n            { nominal: 106, mass: 105.96265 },\n            { nominal: 107, mass: 106.96897 },\n        ],\n        symbol: 'Sr',\n        mass: 87.61664446962,\n        name: 'Strontium',\n        monoisotopicMass: 87.9056125,\n    },\n    {\n        number: 39,\n        isotopes: [\n            { nominal: 76, mass: 75.95856 },\n            { nominal: 77, mass: 76.949781 },\n            { nominal: 78, mass: 77.94361 },\n            { nominal: 79, mass: 78.93735 },\n            { nominal: 80, mass: 79.9343561 },\n            { nominal: 81, mass: 80.9294556 },\n            { nominal: 82, mass: 81.9269314 },\n            { nominal: 83, mass: 82.922485 },\n            { nominal: 84, mass: 83.9206721 },\n            { nominal: 85, mass: 84.916433 },\n            { nominal: 86, mass: 85.914886 },\n            { nominal: 87, mass: 86.9108761 },\n            { nominal: 88, mass: 87.9095016 },\n            { nominal: 89, mass: 88.9058403, abundance: 1 },\n            { nominal: 90, mass: 89.9071439 },\n            { nominal: 91, mass: 90.9072974 },\n            { nominal: 92, mass: 91.9089451 },\n            { nominal: 93, mass: 92.909578 },\n            { nominal: 94, mass: 93.9115906 },\n            { nominal: 95, mass: 94.9128161 },\n            { nominal: 96, mass: 95.9158968 },\n            { nominal: 97, mass: 96.9182741 },\n            { nominal: 98, mass: 97.9223821 },\n            { nominal: 99, mass: 98.924148 },\n            { nominal: 100, mass: 99.927715 },\n            { nominal: 101, mass: 100.9301477 },\n            { nominal: 102, mass: 101.9343277 },\n            { nominal: 103, mass: 102.937243 },\n            { nominal: 104, mass: 103.94196 },\n            { nominal: 105, mass: 104.94544 },\n            { nominal: 106, mass: 105.95056 },\n            { nominal: 107, mass: 106.95452 },\n            { nominal: 108, mass: 107.95996 },\n            { nominal: 109, mass: 108.96436 },\n        ],\n        symbol: 'Y',\n        mass: 88.9058403,\n        name: 'Yttrium',\n        monoisotopicMass: 88.9058403,\n    },\n    {\n        number: 40,\n        isotopes: [\n            { nominal: 78, mass: 77.95566 },\n            { nominal: 79, mass: 78.94948 },\n            { nominal: 80, mass: 79.9404 },\n            { nominal: 81, mass: 80.93731 },\n            { nominal: 82, mass: 81.93135 },\n            { nominal: 83, mass: 82.9292421 },\n            { nominal: 84, mass: 83.9233269 },\n            { nominal: 85, mass: 84.9214444 },\n            { nominal: 86, mass: 85.9162972 },\n            { nominal: 87, mass: 86.914818 },\n            { nominal: 88, mass: 87.9102213 },\n            { nominal: 89, mass: 88.9088814 },\n            { nominal: 90, mass: 89.9046977, abundance: 0.5145 },\n            { nominal: 91, mass: 90.9056396, abundance: 0.1122 },\n            { nominal: 92, mass: 91.9050347, abundance: 0.1715 },\n            { nominal: 93, mass: 92.9064699 },\n            { nominal: 94, mass: 93.9063108, abundance: 0.1738 },\n            { nominal: 95, mass: 94.9080385 },\n            { nominal: 96, mass: 95.9082714, abundance: 0.028 },\n            { nominal: 97, mass: 96.9109512 },\n            { nominal: 98, mass: 97.9127289 },\n            { nominal: 99, mass: 98.916667 },\n            { nominal: 100, mass: 99.9180006 },\n            { nominal: 101, mass: 100.921448 },\n            { nominal: 102, mass: 101.9231409 },\n            { nominal: 103, mass: 102.927191 },\n            { nominal: 104, mass: 103.929436 },\n            { nominal: 105, mass: 104.934008 },\n            { nominal: 106, mass: 105.93676 },\n            { nominal: 107, mass: 106.94174 },\n            { nominal: 108, mass: 107.94487 },\n            { nominal: 109, mass: 108.95041 },\n            { nominal: 110, mass: 109.95396 },\n            { nominal: 111, mass: 110.95968 },\n            { nominal: 112, mass: 111.9637 },\n        ],\n        symbol: 'Zr',\n        mass: 91.22364159706,\n        name: 'Zirconium',\n        monoisotopicMass: 89.9046977,\n    },\n    {\n        number: 41,\n        isotopes: [\n            { nominal: 81, mass: 80.9496 },\n            { nominal: 82, mass: 81.94396 },\n            { nominal: 83, mass: 82.93729 },\n            { nominal: 84, mass: 83.93449 },\n            { nominal: 85, mass: 84.9288458 },\n            { nominal: 86, mass: 85.9257828 },\n            { nominal: 87, mass: 86.9206937 },\n            { nominal: 88, mass: 87.918222 },\n            { nominal: 89, mass: 88.913445 },\n            { nominal: 90, mass: 89.9112584 },\n            { nominal: 91, mass: 90.9069897 },\n            { nominal: 92, mass: 91.9071881 },\n            { nominal: 93, mass: 92.906373, abundance: 1 },\n            { nominal: 94, mass: 93.9072788 },\n            { nominal: 95, mass: 94.9068324 },\n            { nominal: 96, mass: 95.9080973 },\n            { nominal: 97, mass: 96.9080959 },\n            { nominal: 98, mass: 97.9103265 },\n            { nominal: 99, mass: 98.911613 },\n            { nominal: 100, mass: 99.9143276 },\n            { nominal: 101, mass: 100.9153103 },\n            { nominal: 102, mass: 101.9180772 },\n            { nominal: 103, mass: 102.9194572 },\n            { nominal: 104, mass: 103.9228925 },\n            { nominal: 105, mass: 104.9249465 },\n            { nominal: 106, mass: 105.9289317 },\n            { nominal: 107, mass: 106.9315937 },\n            { nominal: 108, mass: 107.9360748 },\n            { nominal: 109, mass: 108.93922 },\n            { nominal: 110, mass: 109.94403 },\n            { nominal: 111, mass: 110.94753 },\n            { nominal: 112, mass: 111.95247 },\n            { nominal: 113, mass: 112.95651 },\n            { nominal: 114, mass: 113.96201 },\n            { nominal: 115, mass: 114.96634 },\n        ],\n        symbol: 'Nb',\n        mass: 92.906373,\n        name: 'Niobium',\n        monoisotopicMass: 92.906373,\n    },\n    {\n        number: 42,\n        isotopes: [\n            { nominal: 83, mass: 82.94988 },\n            { nominal: 84, mass: 83.94149 },\n            { nominal: 85, mass: 84.938261 },\n            { nominal: 86, mass: 85.9311748 },\n            { nominal: 87, mass: 86.9281962 },\n            { nominal: 88, mass: 87.9219678 },\n            { nominal: 89, mass: 88.9194682 },\n            { nominal: 90, mass: 89.9139309 },\n            { nominal: 91, mass: 90.9117453 },\n            { nominal: 92, mass: 91.90680796, abundance: 0.1453 },\n            { nominal: 93, mass: 92.90680958 },\n            { nominal: 94, mass: 93.9050849, abundance: 0.0915 },\n            { nominal: 95, mass: 94.90583877, abundance: 0.1584 },\n            { nominal: 96, mass: 95.90467612, abundance: 0.1667 },\n            { nominal: 97, mass: 96.90601812, abundance: 0.096 },\n            { nominal: 98, mass: 97.90540482, abundance: 0.2439 },\n            { nominal: 99, mass: 98.90770851 },\n            { nominal: 100, mass: 99.9074718, abundance: 0.0982 },\n            { nominal: 101, mass: 100.9103414 },\n            { nominal: 102, mass: 101.9102834 },\n            { nominal: 103, mass: 102.913079 },\n            { nominal: 104, mass: 103.9137344 },\n            { nominal: 105, mass: 104.916969 },\n            { nominal: 106, mass: 105.918259 },\n            { nominal: 107, mass: 106.922106 },\n            { nominal: 108, mass: 107.924033 },\n            { nominal: 109, mass: 108.928424 },\n            { nominal: 110, mass: 109.930704 },\n            { nominal: 111, mass: 110.935654 },\n            { nominal: 112, mass: 111.93831 },\n            { nominal: 113, mass: 112.94335 },\n            { nominal: 114, mass: 113.94653 },\n            { nominal: 115, mass: 114.95196 },\n            { nominal: 116, mass: 115.95545 },\n            { nominal: 117, mass: 116.96117 },\n        ],\n        symbol: 'Mo',\n        mass: 95.959788541188,\n        name: 'Molybdenum',\n        monoisotopicMass: 97.90540482,\n    },\n    {\n        number: 43,\n        isotopes: [\n            { nominal: 85, mass: 84.95058 },\n            { nominal: 86, mass: 85.94493 },\n            { nominal: 87, mass: 86.9380672 },\n            { nominal: 88, mass: 87.93378 },\n            { nominal: 89, mass: 88.9276487 },\n            { nominal: 90, mass: 89.9240739 },\n            { nominal: 91, mass: 90.9184254 },\n            { nominal: 92, mass: 91.9152698 },\n            { nominal: 93, mass: 92.910246 },\n            { nominal: 94, mass: 93.9096536 },\n            { nominal: 95, mass: 94.9076536 },\n            { nominal: 96, mass: 95.907868 },\n            { nominal: 97, mass: 96.9063667 },\n            { nominal: 98, mass: 97.9072124 },\n            { nominal: 99, mass: 98.9062508 },\n            { nominal: 100, mass: 99.9076539 },\n            { nominal: 101, mass: 100.907309 },\n            { nominal: 102, mass: 101.9092097 },\n            { nominal: 103, mass: 102.909176 },\n            { nominal: 104, mass: 103.911425 },\n            { nominal: 105, mass: 104.911655 },\n            { nominal: 106, mass: 105.914358 },\n            { nominal: 107, mass: 106.9154606 },\n            { nominal: 108, mass: 107.9184957 },\n            { nominal: 109, mass: 108.920256 },\n            { nominal: 110, mass: 109.923744 },\n            { nominal: 111, mass: 110.925901 },\n            { nominal: 112, mass: 111.9299458 },\n            { nominal: 113, mass: 112.932569 },\n            { nominal: 114, mass: 113.93691 },\n            { nominal: 115, mass: 114.93998 },\n            { nominal: 116, mass: 115.94476 },\n            { nominal: 117, mass: 116.94806 },\n            { nominal: 118, mass: 117.95299 },\n            { nominal: 119, mass: 118.95666 },\n            { nominal: 120, mass: 119.96187 },\n        ],\n        symbol: 'Tc',\n        mass: null,\n        name: 'Technetium',\n    },\n    {\n        number: 44,\n        isotopes: [\n            { nominal: 87, mass: 86.95069 },\n            { nominal: 88, mass: 87.9416 },\n            { nominal: 89, mass: 88.93762 },\n            { nominal: 90, mass: 89.9303444 },\n            { nominal: 91, mass: 90.9267419 },\n            { nominal: 92, mass: 91.9202344 },\n            { nominal: 93, mass: 92.9171044 },\n            { nominal: 94, mass: 93.9113429 },\n            { nominal: 95, mass: 94.910406 },\n            { nominal: 96, mass: 95.90759025, abundance: 0.0554 },\n            { nominal: 97, mass: 96.9075471 },\n            { nominal: 98, mass: 97.9052868, abundance: 0.0187 },\n            { nominal: 99, mass: 98.9059341, abundance: 0.1276 },\n            { nominal: 100, mass: 99.9042143, abundance: 0.126 },\n            { nominal: 101, mass: 100.9055769, abundance: 0.1706 },\n            { nominal: 102, mass: 101.9043441, abundance: 0.3155 },\n            { nominal: 103, mass: 102.9063186 },\n            { nominal: 104, mass: 103.9054275, abundance: 0.1862 },\n            { nominal: 105, mass: 104.9077476 },\n            { nominal: 106, mass: 105.9073291 },\n            { nominal: 107, mass: 106.909972 },\n            { nominal: 108, mass: 107.910188 },\n            { nominal: 109, mass: 108.913326 },\n            { nominal: 110, mass: 109.9140407 },\n            { nominal: 111, mass: 110.91757 },\n            { nominal: 112, mass: 111.918809 },\n            { nominal: 113, mass: 112.922844 },\n            { nominal: 114, mass: 113.9246136 },\n            { nominal: 115, mass: 114.92882 },\n            { nominal: 116, mass: 115.9312192 },\n            { nominal: 117, mass: 116.9361 },\n            { nominal: 118, mass: 117.93853 },\n            { nominal: 119, mass: 118.94357 },\n            { nominal: 120, mass: 119.94631 },\n            { nominal: 121, mass: 120.95164 },\n            { nominal: 122, mass: 121.95447 },\n            { nominal: 123, mass: 122.95989 },\n            { nominal: 124, mass: 123.96305 },\n        ],\n        symbol: 'Ru',\n        mass: 101.06494013916,\n        name: 'Ruthenium',\n        monoisotopicMass: 101.9043441,\n    },\n    {\n        number: 45,\n        isotopes: [\n            { nominal: 89, mass: 88.95058 },\n            { nominal: 90, mass: 89.94422 },\n            { nominal: 91, mass: 90.93688 },\n            { nominal: 92, mass: 91.9323677 },\n            { nominal: 93, mass: 92.9259128 },\n            { nominal: 94, mass: 93.9217305 },\n            { nominal: 95, mass: 94.9158979 },\n            { nominal: 96, mass: 95.914453 },\n            { nominal: 97, mass: 96.911329 },\n            { nominal: 98, mass: 97.910708 },\n            { nominal: 99, mass: 98.9081282 },\n            { nominal: 100, mass: 99.908117 },\n            { nominal: 101, mass: 100.9061606 },\n            { nominal: 102, mass: 101.9068374 },\n            { nominal: 103, mass: 102.905498, abundance: 1 },\n            { nominal: 104, mass: 103.9066492 },\n            { nominal: 105, mass: 104.9056885 },\n            { nominal: 106, mass: 105.9072868 },\n            { nominal: 107, mass: 106.906748 },\n            { nominal: 108, mass: 107.908714 },\n            { nominal: 109, mass: 108.9087488 },\n            { nominal: 110, mass: 109.911079 },\n            { nominal: 111, mass: 110.9116423 },\n            { nominal: 112, mass: 111.914403 },\n            { nominal: 113, mass: 112.9154393 },\n            { nominal: 114, mass: 113.918718 },\n            { nominal: 115, mass: 114.9203116 },\n            { nominal: 116, mass: 115.924059 },\n            { nominal: 117, mass: 116.9260354 },\n            { nominal: 118, mass: 117.93034 },\n            { nominal: 119, mass: 118.932557 },\n            { nominal: 120, mass: 119.93686 },\n            { nominal: 121, mass: 120.93942 },\n            { nominal: 122, mass: 121.94399 },\n            { nominal: 123, mass: 122.94685 },\n            { nominal: 124, mass: 123.95151 },\n            { nominal: 125, mass: 124.95469 },\n            { nominal: 126, mass: 125.95946 },\n        ],\n        symbol: 'Rh',\n        mass: 102.905498,\n        name: 'Rhodium',\n        monoisotopicMass: 102.905498,\n    },\n    {\n        number: 46,\n        isotopes: [\n            { nominal: 91, mass: 90.95032 },\n            { nominal: 92, mass: 91.94088 },\n            { nominal: 93, mass: 92.93651 },\n            { nominal: 94, mass: 93.9290376 },\n            { nominal: 95, mass: 94.9248898 },\n            { nominal: 96, mass: 95.9182151 },\n            { nominal: 97, mass: 96.916472 },\n            { nominal: 98, mass: 97.9126983 },\n            { nominal: 99, mass: 98.9117748 },\n            { nominal: 100, mass: 99.908505 },\n            { nominal: 101, mass: 100.9082864 },\n            { nominal: 102, mass: 101.9056022, abundance: 0.0102 },\n            { nominal: 103, mass: 102.9060809 },\n            { nominal: 104, mass: 103.9040305, abundance: 0.1114 },\n            { nominal: 105, mass: 104.9050796, abundance: 0.2233 },\n            { nominal: 106, mass: 105.9034804, abundance: 0.2733 },\n            { nominal: 107, mass: 106.9051282 },\n            { nominal: 108, mass: 107.9038916, abundance: 0.2646 },\n            { nominal: 109, mass: 108.9059504 },\n            { nominal: 110, mass: 109.9051722, abundance: 0.1172 },\n            { nominal: 111, mass: 110.90768968 },\n            { nominal: 112, mass: 111.9073297 },\n            { nominal: 113, mass: 112.910261 },\n            { nominal: 114, mass: 113.9103686 },\n            { nominal: 115, mass: 114.913659 },\n            { nominal: 116, mass: 115.914297 },\n            { nominal: 117, mass: 116.9179547 },\n            { nominal: 118, mass: 117.9190667 },\n            { nominal: 119, mass: 118.9233402 },\n            { nominal: 120, mass: 119.9245511 },\n            { nominal: 121, mass: 120.9289503 },\n            { nominal: 122, mass: 121.930632 },\n            { nominal: 123, mass: 122.93514 },\n            { nominal: 124, mass: 123.93714 },\n            { nominal: 125, mass: 124.94179 },\n            { nominal: 126, mass: 125.94416 },\n            { nominal: 127, mass: 126.94907 },\n            { nominal: 128, mass: 127.95183 },\n        ],\n        symbol: 'Pd',\n        mass: 106.41532750734,\n        name: 'Palladium',\n        monoisotopicMass: 105.9034804,\n    },\n    {\n        number: 47,\n        isotopes: [\n            { nominal: 93, mass: 92.95033 },\n            { nominal: 94, mass: 93.94373 },\n            { nominal: 95, mass: 94.93602 },\n            { nominal: 96, mass: 95.930744 },\n            { nominal: 97, mass: 96.92397 },\n            { nominal: 98, mass: 97.92156 },\n            { nominal: 99, mass: 98.9176458 },\n            { nominal: 100, mass: 99.9161154 },\n            { nominal: 101, mass: 100.912684 },\n            { nominal: 102, mass: 101.9117047 },\n            { nominal: 103, mass: 102.9089631 },\n            { nominal: 104, mass: 103.9086239 },\n            { nominal: 105, mass: 104.9065256 },\n            { nominal: 106, mass: 105.9066636 },\n            { nominal: 107, mass: 106.9050916, abundance: 0.51839 },\n            { nominal: 108, mass: 107.9059503 },\n            { nominal: 109, mass: 108.9047553, abundance: 0.48161 },\n            { nominal: 110, mass: 109.9061102 },\n            { nominal: 111, mass: 110.9052959 },\n            { nominal: 112, mass: 111.9070486 },\n            { nominal: 113, mass: 112.906573 },\n            { nominal: 114, mass: 113.908823 },\n            { nominal: 115, mass: 114.908767 },\n            { nominal: 116, mass: 115.9113868 },\n            { nominal: 117, mass: 116.911774 },\n            { nominal: 118, mass: 117.9145955 },\n            { nominal: 119, mass: 118.91557 },\n            { nominal: 120, mass: 119.9187848 },\n            { nominal: 121, mass: 120.920125 },\n            { nominal: 122, mass: 121.923664 },\n            { nominal: 123, mass: 122.925337 },\n            { nominal: 124, mass: 123.92893 },\n            { nominal: 125, mass: 124.93105 },\n            { nominal: 126, mass: 125.93475 },\n            { nominal: 127, mass: 126.93711 },\n            { nominal: 128, mass: 127.94106 },\n            { nominal: 129, mass: 128.94395 },\n            { nominal: 130, mass: 129.9507 },\n        ],\n        symbol: 'Ag',\n        mass: 107.868149634557,\n        name: 'Silver',\n        monoisotopicMass: 106.9050916,\n    },\n    {\n        number: 48,\n        isotopes: [\n            { nominal: 95, mass: 94.94994 },\n            { nominal: 96, mass: 95.94034 },\n            { nominal: 97, mass: 96.9351 },\n            { nominal: 98, mass: 97.927389 },\n            { nominal: 99, mass: 98.9249258 },\n            { nominal: 100, mass: 99.9203488 },\n            { nominal: 101, mass: 100.9185862 },\n            { nominal: 102, mass: 101.914482 },\n            { nominal: 103, mass: 102.9134165 },\n            { nominal: 104, mass: 103.9098564 },\n            { nominal: 105, mass: 104.9094639 },\n            { nominal: 106, mass: 105.9064599, abundance: 0.0125 },\n            { nominal: 107, mass: 106.9066121 },\n            { nominal: 108, mass: 107.9041834, abundance: 0.0089 },\n            { nominal: 109, mass: 108.9049867 },\n            { nominal: 110, mass: 109.90300661, abundance: 0.1249 },\n            { nominal: 111, mass: 110.90418287, abundance: 0.128 },\n            { nominal: 112, mass: 111.90276287, abundance: 0.2413 },\n            { nominal: 113, mass: 112.90440813, abundance: 0.1222 },\n            { nominal: 114, mass: 113.90336509, abundance: 0.2873 },\n            { nominal: 115, mass: 114.90543751 },\n            { nominal: 116, mass: 115.90476315, abundance: 0.0749 },\n            { nominal: 117, mass: 116.907226 },\n            { nominal: 118, mass: 117.906922 },\n            { nominal: 119, mass: 118.909847 },\n            { nominal: 120, mass: 119.9098681 },\n            { nominal: 121, mass: 120.9129637 },\n            { nominal: 122, mass: 121.9134591 },\n            { nominal: 123, mass: 122.9168925 },\n            { nominal: 124, mass: 123.9176574 },\n            { nominal: 125, mass: 124.9212576 },\n            { nominal: 126, mass: 125.9224291 },\n            { nominal: 127, mass: 126.926472 },\n            { nominal: 128, mass: 127.9278129 },\n            { nominal: 129, mass: 128.93182 },\n            { nominal: 130, mass: 129.93394 },\n            { nominal: 131, mass: 130.9406 },\n            { nominal: 132, mass: 131.94604 },\n            { nominal: 133, mass: 132.95285 },\n        ],\n        symbol: 'Cd',\n        mass: 112.411557818268,\n        name: 'Cadmium',\n        monoisotopicMass: 113.90336509,\n    },\n    {\n        number: 49,\n        isotopes: [\n            { nominal: 97, mass: 96.94934 },\n            { nominal: 98, mass: 97.94214 },\n            { nominal: 99, mass: 98.93411 },\n            { nominal: 100, mass: 99.93096 },\n            { nominal: 101, mass: 100.92634 },\n            { nominal: 102, mass: 101.9241071 },\n            { nominal: 103, mass: 102.9198819 },\n            { nominal: 104, mass: 103.9182145 },\n            { nominal: 105, mass: 104.914502 },\n            { nominal: 106, mass: 105.913464 },\n            { nominal: 107, mass: 106.91029 },\n            { nominal: 108, mass: 107.9096935 },\n            { nominal: 109, mass: 108.9071514 },\n            { nominal: 110, mass: 109.90717 },\n            { nominal: 111, mass: 110.9051085 },\n            { nominal: 112, mass: 111.9055377 },\n            { nominal: 113, mass: 112.90406184, abundance: 0.0429 },\n            { nominal: 114, mass: 113.90491791 },\n            { nominal: 115, mass: 114.903878776, abundance: 0.9571 },\n            { nominal: 116, mass: 115.90525999 },\n            { nominal: 117, mass: 116.9045157 },\n            { nominal: 118, mass: 117.9063566 },\n            { nominal: 119, mass: 118.9058507 },\n            { nominal: 120, mass: 119.907967 },\n            { nominal: 121, mass: 120.907851 },\n            { nominal: 122, mass: 121.910281 },\n            { nominal: 123, mass: 122.910434 },\n            { nominal: 124, mass: 123.913182 },\n            { nominal: 125, mass: 124.913605 },\n            { nominal: 126, mass: 125.916507 },\n            { nominal: 127, mass: 126.917446 },\n            { nominal: 128, mass: 127.9204 },\n            { nominal: 129, mass: 128.9218053 },\n            { nominal: 130, mass: 129.924977 },\n            { nominal: 131, mass: 130.9269715 },\n            { nominal: 132, mass: 131.933001 },\n            { nominal: 133, mass: 132.93831 },\n            { nominal: 134, mass: 133.94454 },\n            { nominal: 135, mass: 134.95005 },\n        ],\n        symbol: 'In',\n        mass: 114.81808662944559,\n        name: 'Indium',\n        monoisotopicMass: 114.903878776,\n    },\n    {\n        number: 50,\n        isotopes: [\n            { nominal: 99, mass: 98.94853 },\n            { nominal: 100, mass: 99.9385 },\n            { nominal: 101, mass: 100.93526 },\n            { nominal: 102, mass: 101.93029 },\n            { nominal: 103, mass: 102.928105 },\n            { nominal: 104, mass: 103.9231052 },\n            { nominal: 105, mass: 104.9212684 },\n            { nominal: 106, mass: 105.9169574 },\n            { nominal: 107, mass: 106.9157137 },\n            { nominal: 108, mass: 107.9118943 },\n            { nominal: 109, mass: 108.9112921 },\n            { nominal: 110, mass: 109.907845 },\n            { nominal: 111, mass: 110.9077401 },\n            { nominal: 112, mass: 111.90482387, abundance: 0.0097 },\n            { nominal: 113, mass: 112.9051757 },\n            { nominal: 114, mass: 113.9027827, abundance: 0.0066 },\n            { nominal: 115, mass: 114.903344699, abundance: 0.0034 },\n            { nominal: 116, mass: 115.9017428, abundance: 0.1454 },\n            { nominal: 117, mass: 116.90295398, abundance: 0.0768 },\n            { nominal: 118, mass: 117.90160657, abundance: 0.2422 },\n            { nominal: 119, mass: 118.90331117, abundance: 0.0859 },\n            { nominal: 120, mass: 119.90220163, abundance: 0.3258 },\n            { nominal: 121, mass: 120.9042426 },\n            { nominal: 122, mass: 121.9034438, abundance: 0.0463 },\n            { nominal: 123, mass: 122.9057252 },\n            { nominal: 124, mass: 123.9052766, abundance: 0.0579 },\n            { nominal: 125, mass: 124.9077864 },\n            { nominal: 126, mass: 125.907659 },\n            { nominal: 127, mass: 126.91039 },\n            { nominal: 128, mass: 127.910507 },\n            { nominal: 129, mass: 128.913465 },\n            { nominal: 130, mass: 129.9139738 },\n            { nominal: 131, mass: 130.917045 },\n            { nominal: 132, mass: 131.9178267 },\n            { nominal: 133, mass: 132.9239134 },\n            { nominal: 134, mass: 133.9286821 },\n            { nominal: 135, mass: 134.9349086 },\n            { nominal: 136, mass: 135.93999 },\n            { nominal: 137, mass: 136.94655 },\n            { nominal: 138, mass: 137.95184 },\n        ],\n        symbol: 'Sn',\n        mass: 118.71011259301059,\n        name: 'Tin',\n        monoisotopicMass: 119.90220163,\n    },\n    {\n        number: 51,\n        isotopes: [\n            { nominal: 103, mass: 102.93969 },\n            { nominal: 104, mass: 103.93648 },\n            { nominal: 105, mass: 104.931276 },\n            { nominal: 106, mass: 105.928638 },\n            { nominal: 107, mass: 106.9241506 },\n            { nominal: 108, mass: 107.9222267 },\n            { nominal: 109, mass: 108.9181411 },\n            { nominal: 110, mass: 109.9168543 },\n            { nominal: 111, mass: 110.9132182 },\n            { nominal: 112, mass: 111.9124 },\n            { nominal: 113, mass: 112.909375 },\n            { nominal: 114, mass: 113.90929 },\n            { nominal: 115, mass: 114.906598 },\n            { nominal: 116, mass: 115.9067931 },\n            { nominal: 117, mass: 116.9048415 },\n            { nominal: 118, mass: 117.9055321 },\n            { nominal: 119, mass: 118.9039455 },\n            { nominal: 120, mass: 119.9050794 },\n            { nominal: 121, mass: 120.903812, abundance: 0.5721 },\n            { nominal: 122, mass: 121.9051699 },\n            { nominal: 123, mass: 122.9042132, abundance: 0.4279 },\n            { nominal: 124, mass: 123.905935 },\n            { nominal: 125, mass: 124.905253 },\n            { nominal: 126, mass: 125.907253 },\n            { nominal: 127, mass: 126.9069243 },\n            { nominal: 128, mass: 127.909146 },\n            { nominal: 129, mass: 128.909147 },\n            { nominal: 130, mass: 129.911662 },\n            { nominal: 131, mass: 130.9119888 },\n            { nominal: 132, mass: 131.9145077 },\n            { nominal: 133, mass: 132.9152732 },\n            { nominal: 134, mass: 133.9205357 },\n            { nominal: 135, mass: 134.9251851 },\n            { nominal: 136, mass: 135.9307459 },\n            { nominal: 137, mass: 136.93555 },\n            { nominal: 138, mass: 137.94145 },\n            { nominal: 139, mass: 138.94655 },\n            { nominal: 140, mass: 139.95283 },\n        ],\n        symbol: 'Sb',\n        mass: 121.75978367348,\n        name: 'Antimony',\n        monoisotopicMass: 120.903812,\n    },\n    {\n        number: 52,\n        isotopes: [\n            { nominal: 105, mass: 104.9433 },\n            { nominal: 106, mass: 105.9375 },\n            { nominal: 107, mass: 106.935012 },\n            { nominal: 108, mass: 107.9293805 },\n            { nominal: 109, mass: 108.9273045 },\n            { nominal: 110, mass: 109.9224581 },\n            { nominal: 111, mass: 110.9210006 },\n            { nominal: 112, mass: 111.9167279 },\n            { nominal: 113, mass: 112.915891 },\n            { nominal: 114, mass: 113.912089 },\n            { nominal: 115, mass: 114.911902 },\n            { nominal: 116, mass: 115.90846 },\n            { nominal: 117, mass: 116.908646 },\n            { nominal: 118, mass: 117.905854 },\n            { nominal: 119, mass: 118.9064071 },\n            { nominal: 120, mass: 119.9040593, abundance: 0.0009 },\n            { nominal: 121, mass: 120.904944 },\n            { nominal: 122, mass: 121.9030435, abundance: 0.0255 },\n            { nominal: 123, mass: 122.9042698, abundance: 0.0089 },\n            { nominal: 124, mass: 123.9028171, abundance: 0.0474 },\n            { nominal: 125, mass: 124.9044299, abundance: 0.0707 },\n            { nominal: 126, mass: 125.9033109, abundance: 0.1884 },\n            { nominal: 127, mass: 126.9052257 },\n            { nominal: 128, mass: 127.90446128, abundance: 0.3174 },\n            { nominal: 129, mass: 128.90659646 },\n            { nominal: 130, mass: 129.906222748, abundance: 0.3408 },\n            { nominal: 131, mass: 130.908522213 },\n            { nominal: 132, mass: 131.9085467 },\n            { nominal: 133, mass: 132.9109688 },\n            { nominal: 134, mass: 133.911394 },\n            { nominal: 135, mass: 134.9165557 },\n            { nominal: 136, mass: 135.9201006 },\n            { nominal: 137, mass: 136.9255989 },\n            { nominal: 138, mass: 137.9294722 },\n            { nominal: 139, mass: 138.9353672 },\n            { nominal: 140, mass: 139.939499 },\n            { nominal: 141, mass: 140.9458 },\n            { nominal: 142, mass: 141.95022 },\n            { nominal: 143, mass: 142.95676 },\n        ],\n        symbol: 'Te',\n        mass: 127.6031264846604,\n        name: 'Tellurium',\n        monoisotopicMass: 129.906222748,\n    },\n    {\n        number: 53,\n        isotopes: [\n            { nominal: 107, mass: 106.94678 },\n            { nominal: 108, mass: 107.94348 },\n            { nominal: 109, mass: 108.9380853 },\n            { nominal: 110, mass: 109.935089 },\n            { nominal: 111, mass: 110.9302692 },\n            { nominal: 112, mass: 111.928005 },\n            { nominal: 113, mass: 112.9236501 },\n            { nominal: 114, mass: 113.92185 },\n            { nominal: 115, mass: 114.918048 },\n            { nominal: 116, mass: 115.91681 },\n            { nominal: 117, mass: 116.913648 },\n            { nominal: 118, mass: 117.913074 },\n            { nominal: 119, mass: 118.910074 },\n            { nominal: 120, mass: 119.910087 },\n            { nominal: 121, mass: 120.9074051 },\n            { nominal: 122, mass: 121.9075888 },\n            { nominal: 123, mass: 122.9055885 },\n            { nominal: 124, mass: 123.906209 },\n            { nominal: 125, mass: 124.9046294 },\n            { nominal: 126, mass: 125.9056233 },\n            { nominal: 127, mass: 126.9044719, abundance: 1 },\n            { nominal: 128, mass: 127.9058086 },\n            { nominal: 129, mass: 128.9049837 },\n            { nominal: 130, mass: 129.9066702 },\n            { nominal: 131, mass: 130.9061263 },\n            { nominal: 132, mass: 131.9079935 },\n            { nominal: 133, mass: 132.907797 },\n            { nominal: 134, mass: 133.9097588 },\n            { nominal: 135, mass: 134.9100488 },\n            { nominal: 136, mass: 135.914604 },\n            { nominal: 137, mass: 136.9180282 },\n            { nominal: 138, mass: 137.9227264 },\n            { nominal: 139, mass: 138.926506 },\n            { nominal: 140, mass: 139.93173 },\n            { nominal: 141, mass: 140.93569 },\n            { nominal: 142, mass: 141.9412 },\n            { nominal: 143, mass: 142.94565 },\n            { nominal: 144, mass: 143.95139 },\n            { nominal: 145, mass: 144.95605 },\n        ],\n        symbol: 'I',\n        mass: 126.9044719,\n        name: 'Iodine',\n        monoisotopicMass: 126.9044719,\n    },\n    {\n        number: 54,\n        isotopes: [\n            { nominal: 109, mass: 108.95043 },\n            { nominal: 110, mass: 109.94426 },\n            { nominal: 111, mass: 110.941607 },\n            { nominal: 112, mass: 111.935559 },\n            { nominal: 113, mass: 112.9332217 },\n            { nominal: 114, mass: 113.92798 },\n            { nominal: 115, mass: 114.926294 },\n            { nominal: 116, mass: 115.921581 },\n            { nominal: 117, mass: 116.920359 },\n            { nominal: 118, mass: 117.916179 },\n            { nominal: 119, mass: 118.915411 },\n            { nominal: 120, mass: 119.911784 },\n            { nominal: 121, mass: 120.911453 },\n            { nominal: 122, mass: 121.908368 },\n            { nominal: 123, mass: 122.908482 },\n            { nominal: 124, mass: 123.905892, abundance: 0.000952 },\n            { nominal: 125, mass: 124.9063944 },\n            { nominal: 126, mass: 125.9042983, abundance: 0.00089 },\n            { nominal: 127, mass: 126.9051829 },\n            { nominal: 128, mass: 127.903531, abundance: 0.019102 },\n            { nominal: 129, mass: 128.9047808611, abundance: 0.264006 },\n            { nominal: 130, mass: 129.903509349, abundance: 0.04071 },\n            { nominal: 131, mass: 130.90508406, abundance: 0.212324 },\n            { nominal: 132, mass: 131.9041550856, abundance: 0.269086 },\n            { nominal: 133, mass: 132.9059108 },\n            { nominal: 134, mass: 133.90539466, abundance: 0.104357 },\n            { nominal: 135, mass: 134.9072278 },\n            { nominal: 136, mass: 135.907214484, abundance: 0.088573 },\n            { nominal: 137, mass: 136.91155778 },\n            { nominal: 138, mass: 137.9141463 },\n            { nominal: 139, mass: 138.9187922 },\n            { nominal: 140, mass: 139.9216458 },\n            { nominal: 141, mass: 140.9267872 },\n            { nominal: 142, mass: 141.9299731 },\n            { nominal: 143, mass: 142.9353696 },\n            { nominal: 144, mass: 143.9389451 },\n            { nominal: 145, mass: 144.94472 },\n            { nominal: 146, mass: 145.948518 },\n            { nominal: 147, mass: 146.95426 },\n            { nominal: 148, mass: 147.95813 },\n        ],\n        symbol: 'Xe',\n        mass: 131.29276144779053,\n        name: 'Xenon',\n        monoisotopicMass: 131.9041550856,\n    },\n    {\n        number: 55,\n        isotopes: [\n            { nominal: 112, mass: 111.950309 },\n            { nominal: 113, mass: 112.9444291 },\n            { nominal: 114, mass: 113.941296 },\n            { nominal: 115, mass: 114.93591 },\n            { nominal: 116, mass: 115.93337 },\n            { nominal: 117, mass: 116.928617 },\n            { nominal: 118, mass: 117.92656 },\n            { nominal: 119, mass: 118.922377 },\n            { nominal: 120, mass: 119.920677 },\n            { nominal: 121, mass: 120.917227 },\n            { nominal: 122, mass: 121.916108 },\n            { nominal: 123, mass: 122.912996 },\n            { nominal: 124, mass: 123.9122578 },\n            { nominal: 125, mass: 124.909728 },\n            { nominal: 126, mass: 125.909446 },\n            { nominal: 127, mass: 126.9074174 },\n            { nominal: 128, mass: 127.9077487 },\n            { nominal: 129, mass: 128.9060657 },\n            { nominal: 130, mass: 129.9067093 },\n            { nominal: 131, mass: 130.9054649 },\n            { nominal: 132, mass: 131.9064339 },\n            { nominal: 133, mass: 132.905451961, abundance: 1 },\n            { nominal: 134, mass: 133.906718503 },\n            { nominal: 135, mass: 134.905977 },\n            { nominal: 136, mass: 135.9073114 },\n            { nominal: 137, mass: 136.90708923 },\n            { nominal: 138, mass: 137.9110171 },\n            { nominal: 139, mass: 138.9133638 },\n            { nominal: 140, mass: 139.9172831 },\n            { nominal: 141, mass: 140.9200455 },\n            { nominal: 142, mass: 141.924296 },\n            { nominal: 143, mass: 142.927349 },\n            { nominal: 144, mass: 143.932076 },\n            { nominal: 145, mass: 144.935527 },\n            { nominal: 146, mass: 145.940344 },\n            { nominal: 147, mass: 146.944156 },\n            { nominal: 148, mass: 147.94923 },\n            { nominal: 149, mass: 148.95302 },\n            { nominal: 150, mass: 149.95833 },\n            { nominal: 151, mass: 150.96258 },\n        ],\n        symbol: 'Cs',\n        mass: 132.905451961,\n        name: 'Caesium',\n        monoisotopicMass: 132.905451961,\n    },\n    {\n        number: 56,\n        isotopes: [\n            { nominal: 114, mass: 113.95066 },\n            { nominal: 115, mass: 114.94737 },\n            { nominal: 116, mass: 115.94128 },\n            { nominal: 117, mass: 116.93814 },\n            { nominal: 118, mass: 117.93306 },\n            { nominal: 119, mass: 118.93066 },\n            { nominal: 120, mass: 119.92605 },\n            { nominal: 121, mass: 120.92405 },\n            { nominal: 122, mass: 121.919904 },\n            { nominal: 123, mass: 122.918781 },\n            { nominal: 124, mass: 123.915094 },\n            { nominal: 125, mass: 124.914472 },\n            { nominal: 126, mass: 125.91125 },\n            { nominal: 127, mass: 126.911091 },\n            { nominal: 128, mass: 127.908342 },\n            { nominal: 129, mass: 128.908681 },\n            { nominal: 130, mass: 129.9063207, abundance: 0.00106 },\n            { nominal: 131, mass: 130.906941 },\n            { nominal: 132, mass: 131.9050611, abundance: 0.00101 },\n            { nominal: 133, mass: 132.9060074 },\n            { nominal: 134, mass: 133.90450818, abundance: 0.02417 },\n            { nominal: 135, mass: 134.90568838, abundance: 0.06592 },\n            { nominal: 136, mass: 135.90457573, abundance: 0.07854 },\n            { nominal: 137, mass: 136.90582714, abundance: 0.11232 },\n            { nominal: 138, mass: 137.905247, abundance: 0.71698 },\n            { nominal: 139, mass: 138.9088411 },\n            { nominal: 140, mass: 139.9106057 },\n            { nominal: 141, mass: 140.9144033 },\n            { nominal: 142, mass: 141.9164324 },\n            { nominal: 143, mass: 142.9206253 },\n            { nominal: 144, mass: 143.9229549 },\n            { nominal: 145, mass: 144.9275184 },\n            { nominal: 146, mass: 145.930284 },\n            { nominal: 147, mass: 146.935304 },\n            { nominal: 148, mass: 147.938171 },\n            { nominal: 149, mass: 148.94308 },\n            { nominal: 150, mass: 149.94605 },\n            { nominal: 151, mass: 150.95127 },\n            { nominal: 152, mass: 151.95481 },\n            { nominal: 153, mass: 152.96036 },\n        ],\n        symbol: 'Ba',\n        mass: 137.3268916286322,\n        name: 'Barium',\n        monoisotopicMass: 137.905247,\n    },\n    {\n        number: 57,\n        isotopes: [\n            { nominal: 116, mass: 115.9563 },\n            { nominal: 117, mass: 116.94999 },\n            { nominal: 118, mass: 117.94673 },\n            { nominal: 119, mass: 118.94099 },\n            { nominal: 120, mass: 119.93807 },\n            { nominal: 121, mass: 120.93315 },\n            { nominal: 122, mass: 121.93071 },\n            { nominal: 123, mass: 122.9263 },\n            { nominal: 124, mass: 123.924574 },\n            { nominal: 125, mass: 124.920816 },\n            { nominal: 126, mass: 125.919513 },\n            { nominal: 127, mass: 126.916375 },\n            { nominal: 128, mass: 127.915592 },\n            { nominal: 129, mass: 128.912694 },\n            { nominal: 130, mass: 129.912369 },\n            { nominal: 131, mass: 130.91007 },\n            { nominal: 132, mass: 131.910119 },\n            { nominal: 133, mass: 132.908218 },\n            { nominal: 134, mass: 133.908514 },\n            { nominal: 135, mass: 134.906984 },\n            { nominal: 136, mass: 135.907635 },\n            { nominal: 137, mass: 136.9064504 },\n            { nominal: 138, mass: 137.9071149, abundance: 0.0008881 },\n            { nominal: 139, mass: 138.9063563, abundance: 0.9991119 },\n            { nominal: 140, mass: 139.9094806 },\n            { nominal: 141, mass: 140.910966 },\n            { nominal: 142, mass: 141.9140909 },\n            { nominal: 143, mass: 142.9160795 },\n            { nominal: 144, mass: 143.919646 },\n            { nominal: 145, mass: 144.921808 },\n            { nominal: 146, mass: 145.925875 },\n            { nominal: 147, mass: 146.928418 },\n            { nominal: 148, mass: 147.932679 },\n            { nominal: 149, mass: 148.93535 },\n            { nominal: 150, mass: 149.93947 },\n            { nominal: 151, mass: 150.94232 },\n            { nominal: 152, mass: 151.94682 },\n            { nominal: 153, mass: 152.95036 },\n            { nominal: 154, mass: 153.95517 },\n            { nominal: 155, mass: 154.95901 },\n        ],\n        symbol: 'La',\n        mass: 138.90546887371266,\n        name: 'Lanthanum',\n        monoisotopicMass: 138.9063563,\n    },\n    {\n        number: 58,\n        isotopes: [\n            { nominal: 119, mass: 118.95271 },\n            { nominal: 120, mass: 119.94654 },\n            { nominal: 121, mass: 120.94335 },\n            { nominal: 122, mass: 121.93787 },\n            { nominal: 123, mass: 122.93528 },\n            { nominal: 124, mass: 123.93031 },\n            { nominal: 125, mass: 124.92844 },\n            { nominal: 126, mass: 125.923971 },\n            { nominal: 127, mass: 126.922727 },\n            { nominal: 128, mass: 127.918911 },\n            { nominal: 129, mass: 128.918102 },\n            { nominal: 130, mass: 129.914736 },\n            { nominal: 131, mass: 130.914429 },\n            { nominal: 132, mass: 131.911464 },\n            { nominal: 133, mass: 132.91152 },\n            { nominal: 134, mass: 133.908928 },\n            { nominal: 135, mass: 134.909161 },\n            { nominal: 136, mass: 135.90712921, abundance: 0.00185 },\n            { nominal: 137, mass: 136.90776236 },\n            { nominal: 138, mass: 137.905991, abundance: 0.00251 },\n            { nominal: 139, mass: 138.9066551 },\n            { nominal: 140, mass: 139.9054431, abundance: 0.8845 },\n            { nominal: 141, mass: 140.9082807 },\n            { nominal: 142, mass: 141.9092504, abundance: 0.11114 },\n            { nominal: 143, mass: 142.9123921 },\n            { nominal: 144, mass: 143.9136529 },\n            { nominal: 145, mass: 144.917265 },\n            { nominal: 146, mass: 145.918802 },\n            { nominal: 147, mass: 146.9226899 },\n            { nominal: 148, mass: 147.924424 },\n            { nominal: 149, mass: 148.928427 },\n            { nominal: 150, mass: 149.930384 },\n            { nominal: 151, mass: 150.934272 },\n            { nominal: 152, mass: 151.9366 },\n            { nominal: 153, mass: 152.94093 },\n            { nominal: 154, mass: 153.9438 },\n            { nominal: 155, mass: 154.94855 },\n            { nominal: 156, mass: 155.95183 },\n            { nominal: 157, mass: 156.95705 },\n        ],\n        symbol: 'Ce',\n        mass: 140.1157307378545,\n        name: 'Cerium',\n        monoisotopicMass: 139.9054431,\n    },\n    {\n        number: 59,\n        isotopes: [\n            { nominal: 121, mass: 120.95532 },\n            { nominal: 122, mass: 121.95175 },\n            { nominal: 123, mass: 122.94596 },\n            { nominal: 124, mass: 123.94294 },\n            { nominal: 125, mass: 124.9377 },\n            { nominal: 126, mass: 125.93524 },\n            { nominal: 127, mass: 126.93071 },\n            { nominal: 128, mass: 127.928791 },\n            { nominal: 129, mass: 128.925095 },\n            { nominal: 130, mass: 129.92359 },\n            { nominal: 131, mass: 130.920235 },\n            { nominal: 132, mass: 131.919255 },\n            { nominal: 133, mass: 132.916331 },\n            { nominal: 134, mass: 133.915697 },\n            { nominal: 135, mass: 134.913112 },\n            { nominal: 136, mass: 135.912677 },\n            { nominal: 137, mass: 136.9106792 },\n            { nominal: 138, mass: 137.910754 },\n            { nominal: 139, mass: 138.9089408 },\n            { nominal: 140, mass: 139.9090803 },\n            { nominal: 141, mass: 140.9076576, abundance: 1 },\n            { nominal: 142, mass: 141.9100496 },\n            { nominal: 143, mass: 142.9108228 },\n            { nominal: 144, mass: 143.9133109 },\n            { nominal: 145, mass: 144.9145182 },\n            { nominal: 146, mass: 145.91768 },\n            { nominal: 147, mass: 146.919008 },\n            { nominal: 148, mass: 147.92213 },\n            { nominal: 149, mass: 148.923736 },\n            { nominal: 150, mass: 149.9266765 },\n            { nominal: 151, mass: 150.928309 },\n            { nominal: 152, mass: 151.931553 },\n            { nominal: 153, mass: 152.933904 },\n            { nominal: 154, mass: 153.93753 },\n            { nominal: 155, mass: 154.940509 },\n            { nominal: 156, mass: 155.94464 },\n            { nominal: 157, mass: 156.94789 },\n            { nominal: 158, mass: 157.95241 },\n            { nominal: 159, mass: 158.95589 },\n        ],\n        symbol: 'Pr',\n        mass: 140.9076576,\n        name: 'Praseodymium',\n        monoisotopicMass: 140.9076576,\n    },\n    {\n        number: 60,\n        isotopes: [\n            { nominal: 124, mass: 123.9522 },\n            { nominal: 125, mass: 124.9489 },\n            { nominal: 126, mass: 125.94311 },\n            { nominal: 127, mass: 126.94038 },\n            { nominal: 128, mass: 127.93525 },\n            { nominal: 129, mass: 128.9331 },\n            { nominal: 130, mass: 129.928506 },\n            { nominal: 131, mass: 130.927248 },\n            { nominal: 132, mass: 131.923321 },\n            { nominal: 133, mass: 132.922348 },\n            { nominal: 134, mass: 133.91879 },\n            { nominal: 135, mass: 134.918181 },\n            { nominal: 136, mass: 135.914976 },\n            { nominal: 137, mass: 136.914562 },\n            { nominal: 138, mass: 137.91195 },\n            { nominal: 139, mass: 138.911954 },\n            { nominal: 140, mass: 139.90955 },\n            { nominal: 141, mass: 140.9096147 },\n            { nominal: 142, mass: 141.907729, abundance: 0.27152 },\n            { nominal: 143, mass: 142.90982, abundance: 0.12174 },\n            { nominal: 144, mass: 143.910093, abundance: 0.23798 },\n            { nominal: 145, mass: 144.9125793, abundance: 0.08293 },\n            { nominal: 146, mass: 145.9131226, abundance: 0.17189 },\n            { nominal: 147, mass: 146.9161061 },\n            { nominal: 148, mass: 147.9168993, abundance: 0.05756 },\n            { nominal: 149, mass: 148.9201548 },\n            { nominal: 150, mass: 149.9209022, abundance: 0.05638 },\n            { nominal: 151, mass: 150.9238403 },\n            { nominal: 152, mass: 151.924692 },\n            { nominal: 153, mass: 152.927718 },\n            { nominal: 154, mass: 153.92948 },\n            { nominal: 155, mass: 154.9331357 },\n            { nominal: 156, mass: 155.93508 },\n            { nominal: 157, mass: 156.939386 },\n            { nominal: 158, mass: 157.94197 },\n            { nominal: 159, mass: 158.94653 },\n            { nominal: 160, mass: 159.9494 },\n            { nominal: 161, mass: 160.95428 },\n        ],\n        symbol: 'Nd',\n        mass: 144.241596031827,\n        name: 'Neodymium',\n        monoisotopicMass: 141.907729,\n    },\n    {\n        number: 61,\n        isotopes: [\n            { nominal: 126, mass: 125.95792 },\n            { nominal: 127, mass: 126.95192 },\n            { nominal: 128, mass: 127.9487 },\n            { nominal: 129, mass: 128.94323 },\n            { nominal: 130, mass: 129.94053 },\n            { nominal: 131, mass: 130.93567 },\n            { nominal: 132, mass: 131.93384 },\n            { nominal: 133, mass: 132.929782 },\n            { nominal: 134, mass: 133.928353 },\n            { nominal: 135, mass: 134.924823 },\n            { nominal: 136, mass: 135.923585 },\n            { nominal: 137, mass: 136.92048 },\n            { nominal: 138, mass: 137.919548 },\n            { nominal: 139, mass: 138.9168 },\n            { nominal: 140, mass: 139.91604 },\n            { nominal: 141, mass: 140.913555 },\n            { nominal: 142, mass: 141.91289 },\n            { nominal: 143, mass: 142.9109383 },\n            { nominal: 144, mass: 143.9125964 },\n            { nominal: 145, mass: 144.9127559 },\n            { nominal: 146, mass: 145.9147024 },\n            { nominal: 147, mass: 146.915145 },\n            { nominal: 148, mass: 147.9174819 },\n            { nominal: 149, mass: 148.9183423 },\n            { nominal: 150, mass: 149.920991 },\n            { nominal: 151, mass: 150.9212175 },\n            { nominal: 152, mass: 151.923506 },\n            { nominal: 153, mass: 152.9241567 },\n            { nominal: 154, mass: 153.926472 },\n            { nominal: 155, mass: 154.928137 },\n            { nominal: 156, mass: 155.9311175 },\n            { nominal: 157, mass: 156.9331214 },\n            { nominal: 158, mass: 157.936565 },\n            { nominal: 159, mass: 158.939287 },\n            { nominal: 160, mass: 159.9431 },\n            { nominal: 161, mass: 160.94607 },\n            { nominal: 162, mass: 161.95022 },\n            { nominal: 163, mass: 162.95357 },\n        ],\n        symbol: 'Pm',\n        mass: null,\n        name: 'Promethium',\n    },\n    {\n        number: 62,\n        isotopes: [\n            { nominal: 128, mass: 127.95842 },\n            { nominal: 129, mass: 128.95476 },\n            { nominal: 130, mass: 129.949 },\n            { nominal: 131, mass: 130.94618 },\n            { nominal: 132, mass: 131.94087 },\n            { nominal: 133, mass: 132.93856 },\n            { nominal: 134, mass: 133.93411 },\n            { nominal: 135, mass: 134.93252 },\n            { nominal: 136, mass: 135.928276 },\n            { nominal: 137, mass: 136.926971 },\n            { nominal: 138, mass: 137.923244 },\n            { nominal: 139, mass: 138.922297 },\n            { nominal: 140, mass: 139.918995 },\n            { nominal: 141, mass: 140.9184816 },\n            { nominal: 142, mass: 141.9152044 },\n            { nominal: 143, mass: 142.9146353 },\n            { nominal: 144, mass: 143.9120065, abundance: 0.0307 },\n            { nominal: 145, mass: 144.9134173 },\n            { nominal: 146, mass: 145.913047 },\n            { nominal: 147, mass: 146.9149044, abundance: 0.1499 },\n            { nominal: 148, mass: 147.9148292, abundance: 0.1124 },\n            { nominal: 149, mass: 148.9171921, abundance: 0.1382 },\n            { nominal: 150, mass: 149.9172829, abundance: 0.0738 },\n            { nominal: 151, mass: 150.9199398 },\n            { nominal: 152, mass: 151.9197397, abundance: 0.2675 },\n            { nominal: 153, mass: 152.9221047 },\n            { nominal: 154, mass: 153.9222169, abundance: 0.2275 },\n            { nominal: 155, mass: 154.9246477 },\n            { nominal: 156, mass: 155.925536 },\n            { nominal: 157, mass: 156.9284187 },\n            { nominal: 158, mass: 157.929951 },\n            { nominal: 159, mass: 158.9332172 },\n            { nominal: 160, mass: 159.9353353 },\n            { nominal: 161, mass: 160.9391602 },\n            { nominal: 162, mass: 161.94146 },\n            { nominal: 163, mass: 162.94555 },\n            { nominal: 164, mass: 163.94836 },\n            { nominal: 165, mass: 164.95297 },\n        ],\n        symbol: 'Sm',\n        mass: 150.36635571193,\n        name: 'Samarium',\n        monoisotopicMass: 151.9197397,\n    },\n    {\n        number: 63,\n        isotopes: [\n            { nominal: 130, mass: 129.96369 },\n            { nominal: 131, mass: 130.95784 },\n            { nominal: 132, mass: 131.95467 },\n            { nominal: 133, mass: 132.94929 },\n            { nominal: 134, mass: 133.9464 },\n            { nominal: 135, mass: 134.94187 },\n            { nominal: 136, mass: 135.93962 },\n            { nominal: 137, mass: 136.93546 },\n            { nominal: 138, mass: 137.933709 },\n            { nominal: 139, mass: 138.929792 },\n            { nominal: 140, mass: 139.928088 },\n            { nominal: 141, mass: 140.924932 },\n            { nominal: 142, mass: 141.923442 },\n            { nominal: 143, mass: 142.920299 },\n            { nominal: 144, mass: 143.91882 },\n            { nominal: 145, mass: 144.9162726 },\n            { nominal: 146, mass: 145.917211 },\n            { nominal: 147, mass: 146.9167527 },\n            { nominal: 148, mass: 147.918089 },\n            { nominal: 149, mass: 148.9179378 },\n            { nominal: 150, mass: 149.9197077 },\n            { nominal: 151, mass: 150.9198578, abundance: 0.4781 },\n            { nominal: 152, mass: 151.9217522 },\n            { nominal: 153, mass: 152.921238, abundance: 0.5219 },\n            { nominal: 154, mass: 153.922987 },\n            { nominal: 155, mass: 154.9229011 },\n            { nominal: 156, mass: 155.9247605 },\n            { nominal: 157, mass: 156.9254334 },\n            { nominal: 158, mass: 157.927799 },\n            { nominal: 159, mass: 158.9291001 },\n            { nominal: 160, mass: 159.931851 },\n            { nominal: 161, mass: 160.933664 },\n            { nominal: 162, mass: 161.936989 },\n            { nominal: 163, mass: 162.939196 },\n            { nominal: 164, mass: 163.94274 },\n            { nominal: 165, mass: 164.94559 },\n            { nominal: 166, mass: 165.94962 },\n            { nominal: 167, mass: 166.95289 },\n        ],\n        symbol: 'Eu',\n        mass: 151.96437812637998,\n        name: 'Europium',\n        monoisotopicMass: 152.921238,\n    },\n    {\n        number: 64,\n        isotopes: [\n            { nominal: 133, mass: 132.96133 },\n            { nominal: 134, mass: 133.95566 },\n            { nominal: 135, mass: 134.95245 },\n            { nominal: 136, mass: 135.9473 },\n            { nominal: 137, mass: 136.94502 },\n            { nominal: 138, mass: 137.94025 },\n            { nominal: 139, mass: 138.93813 },\n            { nominal: 140, mass: 139.933674 },\n            { nominal: 141, mass: 140.932126 },\n            { nominal: 142, mass: 141.928116 },\n            { nominal: 143, mass: 142.92675 },\n            { nominal: 144, mass: 143.922963 },\n            { nominal: 145, mass: 144.921713 },\n            { nominal: 146, mass: 145.9183188 },\n            { nominal: 147, mass: 146.9191014 },\n            { nominal: 148, mass: 147.9181215 },\n            { nominal: 149, mass: 148.9193481 },\n            { nominal: 150, mass: 149.9186644 },\n            { nominal: 151, mass: 150.920356 },\n            { nominal: 152, mass: 151.9197995, abundance: 0.002 },\n            { nominal: 153, mass: 152.921758 },\n            { nominal: 154, mass: 153.9208741, abundance: 0.0218 },\n            { nominal: 155, mass: 154.9226305, abundance: 0.148 },\n            { nominal: 156, mass: 155.9221312, abundance: 0.2047 },\n            { nominal: 157, mass: 156.9239686, abundance: 0.1565 },\n            { nominal: 158, mass: 157.9241123, abundance: 0.2484 },\n            { nominal: 159, mass: 158.926397 },\n            { nominal: 160, mass: 159.9270624, abundance: 0.2186 },\n            { nominal: 161, mass: 160.9296775 },\n            { nominal: 162, mass: 161.930993 },\n            { nominal: 163, mass: 162.9341769 },\n            { nominal: 164, mass: 163.93583 },\n            { nominal: 165, mass: 164.93936 },\n            { nominal: 166, mass: 165.94146 },\n            { nominal: 167, mass: 166.94545 },\n            { nominal: 168, mass: 167.94808 },\n            { nominal: 169, mass: 168.9526 },\n        ],\n        symbol: 'Gd',\n        mass: 157.25213064687998,\n        name: 'Gadolinium',\n        monoisotopicMass: 157.9241123,\n    },\n    {\n        number: 65,\n        isotopes: [\n            { nominal: 135, mass: 134.96476 },\n            { nominal: 136, mass: 135.96129 },\n            { nominal: 137, mass: 136.95602 },\n            { nominal: 138, mass: 137.95312 },\n            { nominal: 139, mass: 138.94833 },\n            { nominal: 140, mass: 139.94581 },\n            { nominal: 141, mass: 140.94145 },\n            { nominal: 142, mass: 141.93928 },\n            { nominal: 143, mass: 142.935137 },\n            { nominal: 144, mass: 143.933045 },\n            { nominal: 145, mass: 144.92882 },\n            { nominal: 146, mass: 145.927253 },\n            { nominal: 147, mass: 146.9240548 },\n            { nominal: 148, mass: 147.924282 },\n            { nominal: 149, mass: 148.9232535 },\n            { nominal: 150, mass: 149.9236649 },\n            { nominal: 151, mass: 150.9231096 },\n            { nominal: 152, mass: 151.924083 },\n            { nominal: 153, mass: 152.9234424 },\n            { nominal: 154, mass: 153.924685 },\n            { nominal: 155, mass: 154.923511 },\n            { nominal: 156, mass: 155.9247552 },\n            { nominal: 157, mass: 156.924033 },\n            { nominal: 158, mass: 157.9254209 },\n            { nominal: 159, mass: 158.9253547, abundance: 1 },\n            { nominal: 160, mass: 159.9271756 },\n            { nominal: 161, mass: 160.9275778 },\n            { nominal: 162, mass: 161.929495 },\n            { nominal: 163, mass: 162.9306547 },\n            { nominal: 164, mass: 163.93336 },\n            { nominal: 165, mass: 164.93498 },\n            { nominal: 166, mass: 165.93786 },\n            { nominal: 167, mass: 166.93996 },\n            { nominal: 168, mass: 167.9434 },\n            { nominal: 169, mass: 168.94597 },\n            { nominal: 170, mass: 169.94984 },\n            { nominal: 171, mass: 170.95273 },\n        ],\n        symbol: 'Tb',\n        mass: 158.9253547,\n        name: 'Terbium',\n        monoisotopicMass: 158.9253547,\n    },\n    {\n        number: 66,\n        isotopes: [\n            { nominal: 138, mass: 137.9625 },\n            { nominal: 139, mass: 138.95959 },\n            { nominal: 140, mass: 139.95402 },\n            { nominal: 141, mass: 140.95128 },\n            { nominal: 142, mass: 141.94619 },\n            { nominal: 143, mass: 142.943994 },\n            { nominal: 144, mass: 143.9392695 },\n            { nominal: 145, mass: 144.937474 },\n            { nominal: 146, mass: 145.9328445 },\n            { nominal: 147, mass: 146.9310827 },\n            { nominal: 148, mass: 147.927157 },\n            { nominal: 149, mass: 148.927322 },\n            { nominal: 150, mass: 149.9255933 },\n            { nominal: 151, mass: 150.9261916 },\n            { nominal: 152, mass: 151.9247253 },\n            { nominal: 153, mass: 152.9257724 },\n            { nominal: 154, mass: 153.9244293 },\n            { nominal: 155, mass: 154.925759 },\n            { nominal: 156, mass: 155.9242847, abundance: 0.00056 },\n            { nominal: 157, mass: 156.9254707 },\n            { nominal: 158, mass: 157.9244159, abundance: 0.00095 },\n            { nominal: 159, mass: 158.925747 },\n            { nominal: 160, mass: 159.9252046, abundance: 0.02329 },\n            { nominal: 161, mass: 160.9269405, abundance: 0.18889 },\n            { nominal: 162, mass: 161.9268056, abundance: 0.25475 },\n            { nominal: 163, mass: 162.9287383, abundance: 0.24896 },\n            { nominal: 164, mass: 163.9291819, abundance: 0.2826 },\n            { nominal: 165, mass: 164.9317105 },\n            { nominal: 166, mass: 165.9328139 },\n            { nominal: 167, mass: 166.935661 },\n            { nominal: 168, mass: 167.93713 },\n            { nominal: 169, mass: 168.94031 },\n            { nominal: 170, mass: 169.94239 },\n            { nominal: 171, mass: 170.94612 },\n            { nominal: 172, mass: 171.94846 },\n            { nominal: 173, mass: 172.95283 },\n        ],\n        symbol: 'Dy',\n        mass: 162.499472819424,\n        name: 'Dysprosium',\n        monoisotopicMass: 163.9291819,\n    },\n    {\n        number: 67,\n        isotopes: [\n            { nominal: 140, mass: 139.96859 },\n            { nominal: 141, mass: 140.96311 },\n            { nominal: 142, mass: 141.96001 },\n            { nominal: 143, mass: 142.95486 },\n            { nominal: 144, mass: 143.9521097 },\n            { nominal: 145, mass: 144.9472674 },\n            { nominal: 146, mass: 145.9449935 },\n            { nominal: 147, mass: 146.9401423 },\n            { nominal: 148, mass: 147.937744 },\n            { nominal: 149, mass: 148.933803 },\n            { nominal: 150, mass: 149.933498 },\n            { nominal: 151, mass: 150.9316983 },\n            { nominal: 152, mass: 151.931724 },\n            { nominal: 153, mass: 152.9302064 },\n            { nominal: 154, mass: 153.9306068 },\n            { nominal: 155, mass: 154.929104 },\n            { nominal: 156, mass: 155.929706 },\n            { nominal: 157, mass: 156.928254 },\n            { nominal: 158, mass: 157.928946 },\n            { nominal: 159, mass: 158.9277197 },\n            { nominal: 160, mass: 159.928737 },\n            { nominal: 161, mass: 160.9278615 },\n            { nominal: 162, mass: 161.9291023 },\n            { nominal: 163, mass: 162.928741 },\n            { nominal: 164, mass: 163.9302403 },\n            { nominal: 165, mass: 164.9303288, abundance: 1 },\n            { nominal: 166, mass: 165.9322909 },\n            { nominal: 167, mass: 166.9331385 },\n            { nominal: 168, mass: 167.935522 },\n            { nominal: 169, mass: 168.936878 },\n            { nominal: 170, mass: 169.939625 },\n            { nominal: 171, mass: 170.94147 },\n            { nominal: 172, mass: 171.94473 },\n            { nominal: 173, mass: 172.94702 },\n            { nominal: 174, mass: 173.95095 },\n            { nominal: 175, mass: 174.95362 },\n        ],\n        symbol: 'Ho',\n        mass: 164.9303288,\n        name: 'Holmium',\n        monoisotopicMass: 164.9303288,\n    },\n    {\n        number: 68,\n        isotopes: [\n            { nominal: 142, mass: 141.9701 },\n            { nominal: 143, mass: 142.96662 },\n            { nominal: 144, mass: 143.9607 },\n            { nominal: 145, mass: 144.95805 },\n            { nominal: 146, mass: 145.9524184 },\n            { nominal: 147, mass: 146.949964 },\n            { nominal: 148, mass: 147.944735 },\n            { nominal: 149, mass: 148.942306 },\n            { nominal: 150, mass: 149.937916 },\n            { nominal: 151, mass: 150.937449 },\n            { nominal: 152, mass: 151.935057 },\n            { nominal: 153, mass: 152.93508 },\n            { nominal: 154, mass: 153.9327908 },\n            { nominal: 155, mass: 154.9332159 },\n            { nominal: 156, mass: 155.931067 },\n            { nominal: 157, mass: 156.931949 },\n            { nominal: 158, mass: 157.929893 },\n            { nominal: 159, mass: 158.9306918 },\n            { nominal: 160, mass: 159.929077 },\n            { nominal: 161, mass: 160.9300046 },\n            { nominal: 162, mass: 161.9287884, abundance: 0.00139 },\n            { nominal: 163, mass: 162.9300408 },\n            { nominal: 164, mass: 163.9292088, abundance: 0.01601 },\n            { nominal: 165, mass: 164.9307345 },\n            { nominal: 166, mass: 165.9302995, abundance: 0.33503 },\n            { nominal: 167, mass: 166.9320546, abundance: 0.22869 },\n            { nominal: 168, mass: 167.9323767, abundance: 0.26978 },\n            { nominal: 169, mass: 168.9345968 },\n            { nominal: 170, mass: 169.9354702, abundance: 0.1491 },\n            { nominal: 171, mass: 170.9380357 },\n            { nominal: 172, mass: 171.9393619 },\n            { nominal: 173, mass: 172.9424 },\n            { nominal: 174, mass: 173.94423 },\n            { nominal: 175, mass: 174.94777 },\n            { nominal: 176, mass: 175.94994 },\n            { nominal: 177, mass: 176.95399 },\n        ],\n        symbol: 'Er',\n        mass: 167.259082649669,\n        name: 'Erbium',\n        monoisotopicMass: 165.9302995,\n    },\n    {\n        number: 69,\n        isotopes: [\n            { nominal: 144, mass: 143.97628 },\n            { nominal: 145, mass: 144.97039 },\n            { nominal: 146, mass: 145.96684 },\n            { nominal: 147, mass: 146.9613799 },\n            { nominal: 148, mass: 147.958384 },\n            { nominal: 149, mass: 148.95289 },\n            { nominal: 150, mass: 149.95009 },\n            { nominal: 151, mass: 150.945488 },\n            { nominal: 152, mass: 151.944422 },\n            { nominal: 153, mass: 152.94204 },\n            { nominal: 154, mass: 153.94157 },\n            { nominal: 155, mass: 154.93921 },\n            { nominal: 156, mass: 155.938992 },\n            { nominal: 157, mass: 156.936944 },\n            { nominal: 158, mass: 157.93698 },\n            { nominal: 159, mass: 158.934975 },\n            { nominal: 160, mass: 159.935263 },\n            { nominal: 161, mass: 160.933549 },\n            { nominal: 162, mass: 161.934002 },\n            { nominal: 163, mass: 162.9326592 },\n            { nominal: 164, mass: 163.933544 },\n            { nominal: 165, mass: 164.9324431 },\n            { nominal: 166, mass: 165.933561 },\n            { nominal: 167, mass: 166.9328562 },\n            { nominal: 168, mass: 167.9341774 },\n            { nominal: 169, mass: 168.9342179, abundance: 1 },\n            { nominal: 170, mass: 169.935806 },\n            { nominal: 171, mass: 170.9364339 },\n            { nominal: 172, mass: 171.9384055 },\n            { nominal: 173, mass: 172.9396084 },\n            { nominal: 174, mass: 173.942173 },\n            { nominal: 175, mass: 174.943841 },\n            { nominal: 176, mass: 175.947 },\n            { nominal: 177, mass: 176.94904 },\n            { nominal: 178, mass: 177.95264 },\n            { nominal: 179, mass: 178.95534 },\n        ],\n        symbol: 'Tm',\n        mass: 168.9342179,\n        name: 'Thulium',\n        monoisotopicMass: 168.9342179,\n    },\n    {\n        number: 70,\n        isotopes: [\n            { nominal: 148, mass: 147.96758 },\n            { nominal: 149, mass: 148.96436 },\n            { nominal: 150, mass: 149.95852 },\n            { nominal: 151, mass: 150.9554 },\n            { nominal: 152, mass: 151.95027 },\n            { nominal: 153, mass: 152.94932 },\n            { nominal: 154, mass: 153.946396 },\n            { nominal: 155, mass: 154.945783 },\n            { nominal: 156, mass: 155.942825 },\n            { nominal: 157, mass: 156.942645 },\n            { nominal: 158, mass: 157.9398705 },\n            { nominal: 159, mass: 158.940055 },\n            { nominal: 160, mass: 159.937557 },\n            { nominal: 161, mass: 160.937907 },\n            { nominal: 162, mass: 161.935774 },\n            { nominal: 163, mass: 162.93634 },\n            { nominal: 164, mass: 163.934495 },\n            { nominal: 165, mass: 164.93527 },\n            { nominal: 166, mass: 165.9338747 },\n            { nominal: 167, mass: 166.934953 },\n            { nominal: 168, mass: 167.9338896, abundance: 0.00123 },\n            { nominal: 169, mass: 168.9351825 },\n            { nominal: 170, mass: 169.9347664, abundance: 0.02982 },\n            { nominal: 171, mass: 170.9363302, abundance: 0.1409 },\n            { nominal: 172, mass: 171.9363859, abundance: 0.2168 },\n            { nominal: 173, mass: 172.9382151, abundance: 0.16103 },\n            { nominal: 174, mass: 173.9388664, abundance: 0.32026 },\n            { nominal: 175, mass: 174.9412808 },\n            { nominal: 176, mass: 175.9425764, abundance: 0.12996 },\n            { nominal: 177, mass: 176.9452656 },\n            { nominal: 178, mass: 177.946651 },\n            { nominal: 179, mass: 178.95004 },\n            { nominal: 180, mass: 179.95212 },\n            { nominal: 181, mass: 180.95589 },\n        ],\n        symbol: 'Yb',\n        mass: 173.05415016631702,\n        name: 'Ytterbium',\n        monoisotopicMass: 173.9388664,\n    },\n    {\n        number: 71,\n        isotopes: [\n            { nominal: 150, mass: 149.97355 },\n            { nominal: 151, mass: 150.96768 },\n            { nominal: 152, mass: 151.96412 },\n            { nominal: 153, mass: 152.95875 },\n            { nominal: 154, mass: 153.95736 },\n            { nominal: 155, mass: 154.954321 },\n            { nominal: 156, mass: 155.953033 },\n            { nominal: 157, mass: 156.950127 },\n            { nominal: 158, mass: 157.949316 },\n            { nominal: 159, mass: 158.946636 },\n            { nominal: 160, mass: 159.946033 },\n            { nominal: 161, mass: 160.943572 },\n            { nominal: 162, mass: 161.943283 },\n            { nominal: 163, mass: 162.941179 },\n            { nominal: 164, mass: 163.941339 },\n            { nominal: 165, mass: 164.939407 },\n            { nominal: 166, mass: 165.939859 },\n            { nominal: 167, mass: 166.93827 },\n            { nominal: 168, mass: 167.938736 },\n            { nominal: 169, mass: 168.9376441 },\n            { nominal: 170, mass: 169.938478 },\n            { nominal: 171, mass: 170.937917 },\n            { nominal: 172, mass: 171.9390891 },\n            { nominal: 173, mass: 172.938934 },\n            { nominal: 174, mass: 173.9403409 },\n            { nominal: 175, mass: 174.9407752, abundance: 0.97401 },\n            { nominal: 176, mass: 175.9426897, abundance: 0.02599 },\n            { nominal: 177, mass: 176.9437615 },\n            { nominal: 178, mass: 177.945958 },\n            { nominal: 179, mass: 178.9473309 },\n            { nominal: 180, mass: 179.949888 },\n            { nominal: 181, mass: 180.95191 },\n            { nominal: 182, mass: 181.95504 },\n            { nominal: 183, mass: 182.957363 },\n            { nominal: 184, mass: 183.96091 },\n            { nominal: 185, mass: 184.96362 },\n        ],\n        symbol: 'Lu',\n        mass: 174.96681495785498,\n        name: 'Lutetium',\n        monoisotopicMass: 174.9407752,\n    },\n    {\n        number: 72,\n        isotopes: [\n            { nominal: 153, mass: 152.97069 },\n            { nominal: 154, mass: 153.96486 },\n            { nominal: 155, mass: 154.96311 },\n            { nominal: 156, mass: 155.95935 },\n            { nominal: 157, mass: 156.95824 },\n            { nominal: 158, mass: 157.954801 },\n            { nominal: 159, mass: 158.953996 },\n            { nominal: 160, mass: 159.950691 },\n            { nominal: 161, mass: 160.950278 },\n            { nominal: 162, mass: 161.9472148 },\n            { nominal: 163, mass: 162.947113 },\n            { nominal: 164, mass: 163.944371 },\n            { nominal: 165, mass: 164.944567 },\n            { nominal: 166, mass: 165.94218 },\n            { nominal: 167, mass: 166.9426 },\n            { nominal: 168, mass: 167.940568 },\n            { nominal: 169, mass: 168.941259 },\n            { nominal: 170, mass: 169.939609 },\n            { nominal: 171, mass: 170.940492 },\n            { nominal: 172, mass: 171.93945 },\n            { nominal: 173, mass: 172.940513 },\n            { nominal: 174, mass: 173.9400461, abundance: 0.0016 },\n            { nominal: 175, mass: 174.9415092 },\n            { nominal: 176, mass: 175.9414076, abundance: 0.0526 },\n            { nominal: 177, mass: 176.9432277, abundance: 0.186 },\n            { nominal: 178, mass: 177.9437058, abundance: 0.2728 },\n            { nominal: 179, mass: 178.9458232, abundance: 0.1362 },\n            { nominal: 180, mass: 179.946557, abundance: 0.3508 },\n            { nominal: 181, mass: 180.9491083 },\n            { nominal: 182, mass: 181.9505612 },\n            { nominal: 183, mass: 182.95353 },\n            { nominal: 184, mass: 183.955446 },\n            { nominal: 185, mass: 184.958862 },\n            { nominal: 186, mass: 185.960897 },\n            { nominal: 187, mass: 186.96477 },\n            { nominal: 188, mass: 187.96685 },\n            { nominal: 189, mass: 188.97084 },\n        ],\n        symbol: 'Hf',\n        mass: 178.4849787234,\n        name: 'Hafnium',\n        monoisotopicMass: 179.946557,\n    },\n    {\n        number: 73,\n        isotopes: [\n            { nominal: 155, mass: 154.97424 },\n            { nominal: 156, mass: 155.97203 },\n            { nominal: 157, mass: 156.96818 },\n            { nominal: 158, mass: 157.96654 },\n            { nominal: 159, mass: 158.963023 },\n            { nominal: 160, mass: 159.961488 },\n            { nominal: 161, mass: 160.958452 },\n            { nominal: 162, mass: 161.957294 },\n            { nominal: 163, mass: 162.954337 },\n            { nominal: 164, mass: 163.953534 },\n            { nominal: 165, mass: 164.950781 },\n            { nominal: 166, mass: 165.950512 },\n            { nominal: 167, mass: 166.948093 },\n            { nominal: 168, mass: 167.948047 },\n            { nominal: 169, mass: 168.946011 },\n            { nominal: 170, mass: 169.946175 },\n            { nominal: 171, mass: 170.944476 },\n            { nominal: 172, mass: 171.944895 },\n            { nominal: 173, mass: 172.94375 },\n            { nominal: 174, mass: 173.944454 },\n            { nominal: 175, mass: 174.943737 },\n            { nominal: 176, mass: 175.944857 },\n            { nominal: 177, mass: 176.9444795 },\n            { nominal: 178, mass: 177.945678 },\n            { nominal: 179, mass: 178.9459366 },\n            { nominal: 180, mass: 179.9474648, abundance: 0.0001201 },\n            { nominal: 181, mass: 180.9479958, abundance: 0.9998799 },\n            { nominal: 182, mass: 181.9501519 },\n            { nominal: 183, mass: 182.9513726 },\n            { nominal: 184, mass: 183.954008 },\n            { nominal: 185, mass: 184.955559 },\n            { nominal: 186, mass: 185.958551 },\n            { nominal: 187, mass: 186.960386 },\n            { nominal: 188, mass: 187.963916 },\n            { nominal: 189, mass: 188.96583 },\n            { nominal: 190, mass: 189.96939 },\n            { nominal: 191, mass: 190.97156 },\n            { nominal: 192, mass: 191.97514 },\n        ],\n        symbol: 'Ta',\n        mass: 180.9478756362269,\n        name: 'Tantalum',\n        monoisotopicMass: 180.9479958,\n    },\n    {\n        number: 74,\n        isotopes: [\n            { nominal: 157, mass: 156.97884 },\n            { nominal: 158, mass: 157.97456 },\n            { nominal: 159, mass: 158.97264 },\n            { nominal: 160, mass: 159.96846 },\n            { nominal: 161, mass: 160.9672 },\n            { nominal: 162, mass: 161.963499 },\n            { nominal: 163, mass: 162.962524 },\n            { nominal: 164, mass: 163.958961 },\n            { nominal: 165, mass: 164.958281 },\n            { nominal: 166, mass: 165.955031 },\n            { nominal: 167, mass: 166.954805 },\n            { nominal: 168, mass: 167.951806 },\n            { nominal: 169, mass: 168.951779 },\n            { nominal: 170, mass: 169.949232 },\n            { nominal: 171, mass: 170.949451 },\n            { nominal: 172, mass: 171.947292 },\n            { nominal: 173, mass: 172.947689 },\n            { nominal: 174, mass: 173.946079 },\n            { nominal: 175, mass: 174.946717 },\n            { nominal: 176, mass: 175.945634 },\n            { nominal: 177, mass: 176.946643 },\n            { nominal: 178, mass: 177.945883 },\n            { nominal: 179, mass: 178.947077 },\n            { nominal: 180, mass: 179.9467108, abundance: 0.0012 },\n            { nominal: 181, mass: 180.9481978 },\n            { nominal: 182, mass: 181.94820394, abundance: 0.265 },\n            { nominal: 183, mass: 182.95022275, abundance: 0.1431 },\n            { nominal: 184, mass: 183.95093092, abundance: 0.3064 },\n            { nominal: 185, mass: 184.95341897 },\n            { nominal: 186, mass: 185.9543628, abundance: 0.2843 },\n            { nominal: 187, mass: 186.9571588 },\n            { nominal: 188, mass: 187.9584862 },\n            { nominal: 189, mass: 188.961763 },\n            { nominal: 190, mass: 189.963091 },\n            { nominal: 191, mass: 190.966531 },\n            { nominal: 192, mass: 191.96817 },\n            { nominal: 193, mass: 192.97178 },\n            { nominal: 194, mass: 193.97367 },\n        ],\n        symbol: 'W',\n        mass: 183.841777550513,\n        name: 'Tungsten',\n        monoisotopicMass: 183.95093092,\n    },\n    {\n        number: 75,\n        isotopes: [\n            { nominal: 159, mass: 158.98418 },\n            { nominal: 160, mass: 159.98182 },\n            { nominal: 161, mass: 160.97757 },\n            { nominal: 162, mass: 161.97584 },\n            { nominal: 163, mass: 162.97208 },\n            { nominal: 164, mass: 163.970453 },\n            { nominal: 165, mass: 164.967103 },\n            { nominal: 166, mass: 165.965761 },\n            { nominal: 167, mass: 166.962595 },\n            { nominal: 168, mass: 167.961573 },\n            { nominal: 169, mass: 168.958766 },\n            { nominal: 170, mass: 169.95822 },\n            { nominal: 171, mass: 170.955716 },\n            { nominal: 172, mass: 171.95542 },\n            { nominal: 173, mass: 172.953243 },\n            { nominal: 174, mass: 173.953115 },\n            { nominal: 175, mass: 174.951381 },\n            { nominal: 176, mass: 175.951623 },\n            { nominal: 177, mass: 176.950328 },\n            { nominal: 178, mass: 177.950989 },\n            { nominal: 179, mass: 178.949989 },\n            { nominal: 180, mass: 179.950792 },\n            { nominal: 181, mass: 180.950058 },\n            { nominal: 182, mass: 181.95121 },\n            { nominal: 183, mass: 182.9508196 },\n            { nominal: 184, mass: 183.9525228 },\n            { nominal: 185, mass: 184.9529545, abundance: 0.374 },\n            { nominal: 186, mass: 185.9549856 },\n            { nominal: 187, mass: 186.9557501, abundance: 0.626 },\n            { nominal: 188, mass: 187.9581115 },\n            { nominal: 189, mass: 188.959226 },\n            { nominal: 190, mass: 189.961744 },\n            { nominal: 191, mass: 190.963122 },\n            { nominal: 192, mass: 191.966088 },\n            { nominal: 193, mass: 192.967541 },\n            { nominal: 194, mass: 193.97076 },\n            { nominal: 195, mass: 194.97254 },\n            { nominal: 196, mass: 195.9758 },\n            { nominal: 197, mass: 196.97799 },\n            { nominal: 198, mass: 197.9816 },\n        ],\n        symbol: 'Re',\n        mass: 186.20670454560002,\n        name: 'Rhenium',\n        monoisotopicMass: 186.9557501,\n    },\n    {\n        number: 76,\n        isotopes: [\n            { nominal: 161, mass: 160.98903 },\n            { nominal: 162, mass: 161.98443 },\n            { nominal: 163, mass: 162.98241 },\n            { nominal: 164, mass: 163.97802 },\n            { nominal: 165, mass: 164.9766 },\n            { nominal: 166, mass: 165.972692 },\n            { nominal: 167, mass: 166.971549 },\n            { nominal: 168, mass: 167.967808 },\n            { nominal: 169, mass: 168.967018 },\n            { nominal: 170, mass: 169.963578 },\n            { nominal: 171, mass: 170.963174 },\n            { nominal: 172, mass: 171.960017 },\n            { nominal: 173, mass: 172.959808 },\n            { nominal: 174, mass: 173.957064 },\n            { nominal: 175, mass: 174.956945 },\n            { nominal: 176, mass: 175.954806 },\n            { nominal: 177, mass: 176.954966 },\n            { nominal: 178, mass: 177.953254 },\n            { nominal: 179, mass: 178.953817 },\n            { nominal: 180, mass: 179.952375 },\n            { nominal: 181, mass: 180.953247 },\n            { nominal: 182, mass: 181.95211 },\n            { nominal: 183, mass: 182.953125 },\n            { nominal: 184, mass: 183.9524885, abundance: 0.0002 },\n            { nominal: 185, mass: 184.9540417 },\n            { nominal: 186, mass: 185.953835, abundance: 0.0159 },\n            { nominal: 187, mass: 186.9557474, abundance: 0.0196 },\n            { nominal: 188, mass: 187.9558352, abundance: 0.1324 },\n            { nominal: 189, mass: 188.9581442, abundance: 0.1615 },\n            { nominal: 190, mass: 189.9584437, abundance: 0.2626 },\n            { nominal: 191, mass: 190.9609264 },\n            { nominal: 192, mass: 191.961477, abundance: 0.4078 },\n            { nominal: 193, mass: 192.9641479 },\n            { nominal: 194, mass: 193.9651772 },\n            { nominal: 195, mass: 194.968318 },\n            { nominal: 196, mass: 195.969641 },\n            { nominal: 197, mass: 196.97283 },\n            { nominal: 198, mass: 197.97441 },\n            { nominal: 199, mass: 198.97801 },\n            { nominal: 200, mass: 199.97984 },\n            { nominal: 201, mass: 200.98364 },\n            { nominal: 202, mass: 201.98595 },\n        ],\n        symbol: 'Os',\n        mass: 190.22485962823998,\n        name: 'Osmium',\n        monoisotopicMass: 191.961477,\n    },\n    {\n        number: 77,\n        isotopes: [\n            { nominal: 164, mass: 163.99191 },\n            { nominal: 165, mass: 164.9875 },\n            { nominal: 166, mass: 165.98566 },\n            { nominal: 167, mass: 166.981666 },\n            { nominal: 168, mass: 167.979907 },\n            { nominal: 169, mass: 168.976298 },\n            { nominal: 170, mass: 169.974922 },\n            { nominal: 171, mass: 170.97164 },\n            { nominal: 172, mass: 171.970607 },\n            { nominal: 173, mass: 172.967506 },\n            { nominal: 174, mass: 173.966861 },\n            { nominal: 175, mass: 174.96415 },\n            { nominal: 176, mass: 175.96365 },\n            { nominal: 177, mass: 176.961301 },\n            { nominal: 178, mass: 177.961082 },\n            { nominal: 179, mass: 178.95912 },\n            { nominal: 180, mass: 179.959229 },\n            { nominal: 181, mass: 180.957625 },\n            { nominal: 182, mass: 181.958076 },\n            { nominal: 183, mass: 182.95684 },\n            { nominal: 184, mass: 183.957476 },\n            { nominal: 185, mass: 184.956698 },\n            { nominal: 186, mass: 185.957944 },\n            { nominal: 187, mass: 186.957542 },\n            { nominal: 188, mass: 187.958828 },\n            { nominal: 189, mass: 188.958715 },\n            { nominal: 190, mass: 189.9605412 },\n            { nominal: 191, mass: 190.9605893, abundance: 0.373 },\n            { nominal: 192, mass: 191.9626002 },\n            { nominal: 193, mass: 192.9629216, abundance: 0.627 },\n            { nominal: 194, mass: 193.9650735 },\n            { nominal: 195, mass: 194.9659747 },\n            { nominal: 196, mass: 195.968397 },\n            { nominal: 197, mass: 196.969655 },\n            { nominal: 198, mass: 197.97228 },\n            { nominal: 199, mass: 198.973805 },\n            { nominal: 200, mass: 199.9768 },\n            { nominal: 201, mass: 200.97864 },\n            { nominal: 202, mass: 201.98199 },\n            { nominal: 203, mass: 202.98423 },\n            { nominal: 204, mass: 203.9896 },\n        ],\n        symbol: 'Ir',\n        mass: 192.2160516521,\n        name: 'Iridium',\n        monoisotopicMass: 192.9629216,\n    },\n    {\n        number: 78,\n        isotopes: [\n            { nominal: 166, mass: 165.99486 },\n            { nominal: 167, mass: 166.99269 },\n            { nominal: 168, mass: 167.98813 },\n            { nominal: 169, mass: 168.98657 },\n            { nominal: 170, mass: 169.982496 },\n            { nominal: 171, mass: 170.981245 },\n            { nominal: 172, mass: 171.977351 },\n            { nominal: 173, mass: 172.976443 },\n            { nominal: 174, mass: 173.97282 },\n            { nominal: 175, mass: 174.97241 },\n            { nominal: 176, mass: 175.968938 },\n            { nominal: 177, mass: 176.96847 },\n            { nominal: 178, mass: 177.96565 },\n            { nominal: 179, mass: 178.965359 },\n            { nominal: 180, mass: 179.963032 },\n            { nominal: 181, mass: 180.963098 },\n            { nominal: 182, mass: 181.961172 },\n            { nominal: 183, mass: 182.961597 },\n            { nominal: 184, mass: 183.959915 },\n            { nominal: 185, mass: 184.960614 },\n            { nominal: 186, mass: 185.959351 },\n            { nominal: 187, mass: 186.960617 },\n            { nominal: 188, mass: 187.9593889 },\n            { nominal: 189, mass: 188.960831 },\n            { nominal: 190, mass: 189.9599297, abundance: 0.00012 },\n            { nominal: 191, mass: 190.9616729 },\n            { nominal: 192, mass: 191.9610387, abundance: 0.00782 },\n            { nominal: 193, mass: 192.9629824 },\n            { nominal: 194, mass: 193.9626809, abundance: 0.3286 },\n            { nominal: 195, mass: 194.9647917, abundance: 0.3378 },\n            { nominal: 196, mass: 195.96495209, abundance: 0.2521 },\n            { nominal: 197, mass: 196.96734069 },\n            { nominal: 198, mass: 197.9678949, abundance: 0.07356 },\n            { nominal: 199, mass: 198.9705952 },\n            { nominal: 200, mass: 199.971443 },\n            { nominal: 201, mass: 200.974513 },\n            { nominal: 202, mass: 201.975639 },\n            { nominal: 203, mass: 202.97893 },\n            { nominal: 204, mass: 203.98076 },\n            { nominal: 205, mass: 204.98608 },\n            { nominal: 206, mass: 205.98966 },\n        ],\n        symbol: 'Pt',\n        mass: 195.084456864931,\n        name: 'Platinum',\n        monoisotopicMass: 194.9647917,\n    },\n    {\n        number: 79,\n        isotopes: [\n            { nominal: 169, mass: 168.99808 },\n            { nominal: 170, mass: 169.99597 },\n            { nominal: 171, mass: 170.991876 },\n            { nominal: 172, mass: 171.989942 },\n            { nominal: 173, mass: 172.986241 },\n            { nominal: 174, mass: 173.984717 },\n            { nominal: 175, mass: 174.981304 },\n            { nominal: 176, mass: 175.98025 },\n            { nominal: 177, mass: 176.97687 },\n            { nominal: 178, mass: 177.976032 },\n            { nominal: 179, mass: 178.973174 },\n            { nominal: 180, mass: 179.972523 },\n            { nominal: 181, mass: 180.970079 },\n            { nominal: 182, mass: 181.969618 },\n            { nominal: 183, mass: 182.967591 },\n            { nominal: 184, mass: 183.967452 },\n            { nominal: 185, mass: 184.96579 },\n            { nominal: 186, mass: 185.965953 },\n            { nominal: 187, mass: 186.964543 },\n            { nominal: 188, mass: 187.965349 },\n            { nominal: 189, mass: 188.963948 },\n            { nominal: 190, mass: 189.964698 },\n            { nominal: 191, mass: 190.963702 },\n            { nominal: 192, mass: 191.964814 },\n            { nominal: 193, mass: 192.9641373 },\n            { nominal: 194, mass: 193.9654178 },\n            { nominal: 195, mass: 194.9650352 },\n            { nominal: 196, mass: 195.9665699 },\n            { nominal: 197, mass: 196.96656879, abundance: 1 },\n            { nominal: 198, mass: 197.96824242 },\n            { nominal: 199, mass: 198.96876528 },\n            { nominal: 200, mass: 199.970756 },\n            { nominal: 201, mass: 200.9716575 },\n            { nominal: 202, mass: 201.973856 },\n            { nominal: 203, mass: 202.9751544 },\n            { nominal: 204, mass: 203.97783 },\n            { nominal: 205, mass: 204.97985 },\n            { nominal: 206, mass: 205.98474 },\n            { nominal: 207, mass: 206.9884 },\n            { nominal: 208, mass: 207.99345 },\n            { nominal: 209, mass: 208.99735 },\n            { nominal: 210, mass: 210.0025 },\n        ],\n        symbol: 'Au',\n        mass: 196.96656879,\n        name: 'Gold',\n        monoisotopicMass: 196.96656879,\n    },\n    {\n        number: 80,\n        isotopes: [\n            { nominal: 171, mass: 171.00353 },\n            { nominal: 172, mass: 171.99881 },\n            { nominal: 173, mass: 172.99709 },\n            { nominal: 174, mass: 173.992865 },\n            { nominal: 175, mass: 174.991441 },\n            { nominal: 176, mass: 175.987361 },\n            { nominal: 177, mass: 176.986277 },\n            { nominal: 178, mass: 177.982484 },\n            { nominal: 179, mass: 178.981831 },\n            { nominal: 180, mass: 179.97826 },\n            { nominal: 181, mass: 180.977819 },\n            { nominal: 182, mass: 181.974689 },\n            { nominal: 183, mass: 182.9744448 },\n            { nominal: 184, mass: 183.971714 },\n            { nominal: 185, mass: 184.971899 },\n            { nominal: 186, mass: 185.969362 },\n            { nominal: 187, mass: 186.969814 },\n            { nominal: 188, mass: 187.967567 },\n            { nominal: 189, mass: 188.968195 },\n            { nominal: 190, mass: 189.966323 },\n            { nominal: 191, mass: 190.967157 },\n            { nominal: 192, mass: 191.965635 },\n            { nominal: 193, mass: 192.966653 },\n            { nominal: 194, mass: 193.9654491 },\n            { nominal: 195, mass: 194.966721 },\n            { nominal: 196, mass: 195.9658326, abundance: 0.0015 },\n            { nominal: 197, mass: 196.9672128 },\n            { nominal: 198, mass: 197.9667686, abundance: 0.0997 },\n            { nominal: 199, mass: 198.96828064, abundance: 0.1687 },\n            { nominal: 200, mass: 199.96832659, abundance: 0.231 },\n            { nominal: 201, mass: 200.97030284, abundance: 0.1318 },\n            { nominal: 202, mass: 201.9706434, abundance: 0.2986 },\n            { nominal: 203, mass: 202.9728728 },\n            { nominal: 204, mass: 203.97349398, abundance: 0.0687 },\n            { nominal: 205, mass: 204.9760734 },\n            { nominal: 206, mass: 205.977514 },\n            { nominal: 207, mass: 206.9823 },\n            { nominal: 208, mass: 207.985759 },\n            { nominal: 209, mass: 208.99072 },\n            { nominal: 210, mass: 209.99424 },\n            { nominal: 211, mass: 210.99933 },\n            { nominal: 212, mass: 212.00296 },\n            { nominal: 213, mass: 213.00823 },\n            { nominal: 214, mass: 214.012 },\n            { nominal: 215, mass: 215.0174 },\n            { nominal: 216, mass: 216.02132 },\n        ],\n        symbol: 'Hg',\n        mass: 200.59916703455602,\n        name: 'Mercury',\n        monoisotopicMass: 201.9706434,\n    },\n    {\n        number: 81,\n        isotopes: [\n            { nominal: 176, mass: 176.000624 },\n            { nominal: 177, mass: 176.996431 },\n            { nominal: 178, mass: 177.99485 },\n            { nominal: 179, mass: 178.991111 },\n            { nominal: 180, mass: 179.990057 },\n            { nominal: 181, mass: 180.98626 },\n            { nominal: 182, mass: 181.985713 },\n            { nominal: 183, mass: 182.982193 },\n            { nominal: 184, mass: 183.981886 },\n            { nominal: 185, mass: 184.978789 },\n            { nominal: 186, mass: 185.978651 },\n            { nominal: 187, mass: 186.9759063 },\n            { nominal: 188, mass: 187.976021 },\n            { nominal: 189, mass: 188.973588 },\n            { nominal: 190, mass: 189.973828 },\n            { nominal: 191, mass: 190.9717842 },\n            { nominal: 192, mass: 191.972225 },\n            { nominal: 193, mass: 192.970502 },\n            { nominal: 194, mass: 193.971081 },\n            { nominal: 195, mass: 194.969774 },\n            { nominal: 196, mass: 195.970481 },\n            { nominal: 197, mass: 196.969576 },\n            { nominal: 198, mass: 197.970483 },\n            { nominal: 199, mass: 198.969877 },\n            { nominal: 200, mass: 199.9709633 },\n            { nominal: 201, mass: 200.970822 },\n            { nominal: 202, mass: 201.972102 },\n            { nominal: 203, mass: 202.9723446, abundance: 0.2952 },\n            { nominal: 204, mass: 203.9738639 },\n            { nominal: 205, mass: 204.9744278, abundance: 0.7048 },\n            { nominal: 206, mass: 205.9761106 },\n            { nominal: 207, mass: 206.9774197 },\n            { nominal: 208, mass: 207.982019 },\n            { nominal: 209, mass: 208.9853594 },\n            { nominal: 210, mass: 209.990074 },\n            { nominal: 211, mass: 210.993475 },\n            { nominal: 212, mass: 211.99834 },\n            { nominal: 213, mass: 213.001915 },\n            { nominal: 214, mass: 214.00694 },\n            { nominal: 215, mass: 215.01064 },\n            { nominal: 216, mass: 216.0158 },\n            { nominal: 217, mass: 217.01966 },\n            { nominal: 218, mass: 218.02479 },\n        ],\n        symbol: 'Tl',\n        mass: 204.38341283936,\n        name: 'Thallium',\n        monoisotopicMass: 204.9744278,\n    },\n    {\n        number: 82,\n        isotopes: [\n            { nominal: 178, mass: 178.003831 },\n            { nominal: 179, mass: 179.002201 },\n            { nominal: 180, mass: 179.997928 },\n            { nominal: 181, mass: 180.996653 },\n            { nominal: 182, mass: 181.992672 },\n            { nominal: 183, mass: 182.991872 },\n            { nominal: 184, mass: 183.988136 },\n            { nominal: 185, mass: 184.98761 },\n            { nominal: 186, mass: 185.984238 },\n            { nominal: 187, mass: 186.9839109 },\n            { nominal: 188, mass: 187.980875 },\n            { nominal: 189, mass: 188.980807 },\n            { nominal: 190, mass: 189.978082 },\n            { nominal: 191, mass: 190.978276 },\n            { nominal: 192, mass: 191.975775 },\n            { nominal: 193, mass: 192.976173 },\n            { nominal: 194, mass: 193.974012 },\n            { nominal: 195, mass: 194.974543 },\n            { nominal: 196, mass: 195.972774 },\n            { nominal: 197, mass: 196.9734312 },\n            { nominal: 198, mass: 197.972034 },\n            { nominal: 199, mass: 198.972913 },\n            { nominal: 200, mass: 199.971819 },\n            { nominal: 201, mass: 200.972883 },\n            { nominal: 202, mass: 201.972152 },\n            { nominal: 203, mass: 202.9733911 },\n            { nominal: 204, mass: 203.973044, abundance: 0.014 },\n            { nominal: 205, mass: 204.9744822 },\n            { nominal: 206, mass: 205.9744657, abundance: 0.241 },\n            { nominal: 207, mass: 206.9758973, abundance: 0.221 },\n            { nominal: 208, mass: 207.9766525, abundance: 0.524 },\n            { nominal: 209, mass: 208.9810905 },\n            { nominal: 210, mass: 209.9841889 },\n            { nominal: 211, mass: 210.9887371 },\n            { nominal: 212, mass: 211.9918977 },\n            { nominal: 213, mass: 212.9965629 },\n            { nominal: 214, mass: 213.9998059 },\n            { nominal: 215, mass: 215.00474 },\n            { nominal: 216, mass: 216.00803 },\n            { nominal: 217, mass: 217.01314 },\n            { nominal: 218, mass: 218.01659 },\n            { nominal: 219, mass: 219.02177 },\n            { nominal: 220, mass: 220.02541 },\n        ],\n        symbol: 'Pb',\n        mass: 207.216908063,\n        name: 'Lead',\n        monoisotopicMass: 207.9766525,\n    },\n    {\n        number: 83,\n        isotopes: [\n            { nominal: 184, mass: 184.001275 },\n            { nominal: 185, mass: 184.9976 },\n            { nominal: 186, mass: 185.996644 },\n            { nominal: 187, mass: 186.993147 },\n            { nominal: 188, mass: 187.992287 },\n            { nominal: 189, mass: 188.989195 },\n            { nominal: 190, mass: 189.988622 },\n            { nominal: 191, mass: 190.9857866 },\n            { nominal: 192, mass: 191.985469 },\n            { nominal: 193, mass: 192.98296 },\n            { nominal: 194, mass: 193.982785 },\n            { nominal: 195, mass: 194.9806488 },\n            { nominal: 196, mass: 195.980667 },\n            { nominal: 197, mass: 196.9788651 },\n            { nominal: 198, mass: 197.979206 },\n            { nominal: 199, mass: 198.977673 },\n            { nominal: 200, mass: 199.978131 },\n            { nominal: 201, mass: 200.97701 },\n            { nominal: 202, mass: 201.977734 },\n            { nominal: 203, mass: 202.976893 },\n            { nominal: 204, mass: 203.9778361 },\n            { nominal: 205, mass: 204.9773867 },\n            { nominal: 206, mass: 205.9784993 },\n            { nominal: 207, mass: 206.978471 },\n            { nominal: 208, mass: 207.9797425 },\n            { nominal: 209, mass: 208.9803991, abundance: 1 },\n            { nominal: 210, mass: 209.9841207 },\n            { nominal: 211, mass: 210.9872697 },\n            { nominal: 212, mass: 211.991286 },\n            { nominal: 213, mass: 212.9943851 },\n            { nominal: 214, mass: 213.998712 },\n            { nominal: 215, mass: 215.00177 },\n            { nominal: 216, mass: 216.006306 },\n            { nominal: 217, mass: 217.009372 },\n            { nominal: 218, mass: 218.014188 },\n            { nominal: 219, mass: 219.01748 },\n            { nominal: 220, mass: 220.02235 },\n            { nominal: 221, mass: 221.02587 },\n            { nominal: 222, mass: 222.03078 },\n            { nominal: 223, mass: 223.0345 },\n            { nominal: 224, mass: 224.03947 },\n        ],\n        symbol: 'Bi',\n        mass: 208.9803991,\n        name: 'Bismuth',\n        monoisotopicMass: 208.9803991,\n    },\n    {\n        number: 84,\n        isotopes: [\n            { nominal: 186, mass: 186.004393 },\n            { nominal: 187, mass: 187.003041 },\n            { nominal: 188, mass: 187.999416 },\n            { nominal: 189, mass: 188.998473 },\n            { nominal: 190, mass: 189.995101 },\n            { nominal: 191, mass: 190.9945585 },\n            { nominal: 192, mass: 191.991336 },\n            { nominal: 193, mass: 192.991026 },\n            { nominal: 194, mass: 193.988186 },\n            { nominal: 195, mass: 194.988126 },\n            { nominal: 196, mass: 195.985526 },\n            { nominal: 197, mass: 196.98566 },\n            { nominal: 198, mass: 197.983389 },\n            { nominal: 199, mass: 198.983667 },\n            { nominal: 200, mass: 199.981799 },\n            { nominal: 201, mass: 200.9822598 },\n            { nominal: 202, mass: 201.980758 },\n            { nominal: 203, mass: 202.9814161 },\n            { nominal: 204, mass: 203.98031 },\n            { nominal: 205, mass: 204.981203 },\n            { nominal: 206, mass: 205.980474 },\n            { nominal: 207, mass: 206.9815938 },\n            { nominal: 208, mass: 207.9812461 },\n            { nominal: 209, mass: 208.9824308 },\n            { nominal: 210, mass: 209.9828741 },\n            { nominal: 211, mass: 210.9866536 },\n            { nominal: 212, mass: 211.9888684 },\n            { nominal: 213, mass: 212.9928576 },\n            { nominal: 214, mass: 213.9952017 },\n            { nominal: 215, mass: 214.9994201 },\n            { nominal: 216, mass: 216.0019152 },\n            { nominal: 217, mass: 217.0063182 },\n            { nominal: 218, mass: 218.0089735 },\n            { nominal: 219, mass: 219.013614 },\n            { nominal: 220, mass: 220.016386 },\n            { nominal: 221, mass: 221.021228 },\n            { nominal: 222, mass: 222.02414 },\n            { nominal: 223, mass: 223.02907 },\n            { nominal: 224, mass: 224.03211 },\n            { nominal: 225, mass: 225.03707 },\n            { nominal: 226, mass: 226.04031 },\n            { nominal: 227, mass: 227.04539 },\n        ],\n        symbol: 'Po',\n        mass: null,\n        name: 'Polonium',\n    },\n    {\n        number: 85,\n        isotopes: [\n            { nominal: 191, mass: 191.004148 },\n            { nominal: 192, mass: 192.003152 },\n            { nominal: 193, mass: 192.999927 },\n            { nominal: 194, mass: 193.999236 },\n            { nominal: 195, mass: 194.9962685 },\n            { nominal: 196, mass: 195.9958 },\n            { nominal: 197, mass: 196.993189 },\n            { nominal: 198, mass: 197.992784 },\n            { nominal: 199, mass: 198.9905277 },\n            { nominal: 200, mass: 199.990351 },\n            { nominal: 201, mass: 200.9884171 },\n            { nominal: 202, mass: 201.98863 },\n            { nominal: 203, mass: 202.986943 },\n            { nominal: 204, mass: 203.987251 },\n            { nominal: 205, mass: 204.986076 },\n            { nominal: 206, mass: 205.986657 },\n            { nominal: 207, mass: 206.9858 },\n            { nominal: 208, mass: 207.9866133 },\n            { nominal: 209, mass: 208.9861702 },\n            { nominal: 210, mass: 209.9871479 },\n            { nominal: 211, mass: 210.9874966 },\n            { nominal: 212, mass: 211.9907377 },\n            { nominal: 213, mass: 212.992937 },\n            { nominal: 214, mass: 213.9963721 },\n            { nominal: 215, mass: 214.9986528 },\n            { nominal: 216, mass: 216.0024236 },\n            { nominal: 217, mass: 217.0047192 },\n            { nominal: 218, mass: 218.008695 },\n            { nominal: 219, mass: 219.0111618 },\n            { nominal: 220, mass: 220.015433 },\n            { nominal: 221, mass: 221.018017 },\n            { nominal: 222, mass: 222.022494 },\n            { nominal: 223, mass: 223.025151 },\n            { nominal: 224, mass: 224.029749 },\n            { nominal: 225, mass: 225.03263 },\n            { nominal: 226, mass: 226.03716 },\n            { nominal: 227, mass: 227.04024 },\n            { nominal: 228, mass: 228.04475 },\n            { nominal: 229, mass: 229.04812 },\n        ],\n        symbol: 'At',\n        mass: null,\n        name: 'Astatine',\n    },\n    {\n        number: 86,\n        isotopes: [\n            { nominal: 193, mass: 193.009708 },\n            { nominal: 194, mass: 194.006144 },\n            { nominal: 195, mass: 195.005422 },\n            { nominal: 196, mass: 196.002116 },\n            { nominal: 197, mass: 197.001585 },\n            { nominal: 198, mass: 197.998679 },\n            { nominal: 199, mass: 198.99839 },\n            { nominal: 200, mass: 199.99569 },\n            { nominal: 201, mass: 200.995628 },\n            { nominal: 202, mass: 201.993264 },\n            { nominal: 203, mass: 202.993388 },\n            { nominal: 204, mass: 203.99143 },\n            { nominal: 205, mass: 204.991719 },\n            { nominal: 206, mass: 205.990214 },\n            { nominal: 207, mass: 206.9907303 },\n            { nominal: 208, mass: 207.989635 },\n            { nominal: 209, mass: 208.990415 },\n            { nominal: 210, mass: 209.9896891 },\n            { nominal: 211, mass: 210.9906011 },\n            { nominal: 212, mass: 211.9907039 },\n            { nominal: 213, mass: 212.9938831 },\n            { nominal: 214, mass: 213.995363 },\n            { nominal: 215, mass: 214.9987459 },\n            { nominal: 216, mass: 216.0002719 },\n            { nominal: 217, mass: 217.003928 },\n            { nominal: 218, mass: 218.0056016 },\n            { nominal: 219, mass: 219.0094804 },\n            { nominal: 220, mass: 220.0113941 },\n            { nominal: 221, mass: 221.0155371 },\n            { nominal: 222, mass: 222.0175782 },\n            { nominal: 223, mass: 223.0218893 },\n            { nominal: 224, mass: 224.024096 },\n            { nominal: 225, mass: 225.028486 },\n            { nominal: 226, mass: 226.030861 },\n            { nominal: 227, mass: 227.035304 },\n            { nominal: 228, mass: 228.037835 },\n            { nominal: 229, mass: 229.042257 },\n            { nominal: 230, mass: 230.04514 },\n            { nominal: 231, mass: 231.04987 },\n        ],\n        symbol: 'Rn',\n        mass: null,\n        name: 'Radon',\n    },\n    {\n        number: 87,\n        isotopes: [\n            { nominal: 199, mass: 199.007259 },\n            { nominal: 200, mass: 200.006586 },\n            { nominal: 201, mass: 201.003867 },\n            { nominal: 202, mass: 202.00332 },\n            { nominal: 203, mass: 203.0009407 },\n            { nominal: 204, mass: 204.000652 },\n            { nominal: 205, mass: 204.9985939 },\n            { nominal: 206, mass: 205.998666 },\n            { nominal: 207, mass: 206.996946 },\n            { nominal: 208, mass: 207.997138 },\n            { nominal: 209, mass: 208.995955 },\n            { nominal: 210, mass: 209.996422 },\n            { nominal: 211, mass: 210.995556 },\n            { nominal: 212, mass: 211.9962257 },\n            { nominal: 213, mass: 212.996186 },\n            { nominal: 214, mass: 213.9989713 },\n            { nominal: 215, mass: 215.0003418 },\n            { nominal: 216, mass: 216.0031899 },\n            { nominal: 217, mass: 217.0046323 },\n            { nominal: 218, mass: 218.0075787 },\n            { nominal: 219, mass: 219.0092524 },\n            { nominal: 220, mass: 220.0123277 },\n            { nominal: 221, mass: 221.0142552 },\n            { nominal: 222, mass: 222.017552 },\n            { nominal: 223, mass: 223.019736 },\n            { nominal: 224, mass: 224.023398 },\n            { nominal: 225, mass: 225.025573 },\n            { nominal: 226, mass: 226.029566 },\n            { nominal: 227, mass: 227.031869 },\n            { nominal: 228, mass: 228.035823 },\n            { nominal: 229, mass: 229.038298 },\n            { nominal: 230, mass: 230.042416 },\n            { nominal: 231, mass: 231.045158 },\n            { nominal: 232, mass: 232.04937 },\n            { nominal: 233, mass: 233.05264 },\n        ],\n        symbol: 'Fr',\n        mass: null,\n        name: 'Francium',\n    },\n    {\n        number: 88,\n        isotopes: [\n            { nominal: 201, mass: 201.01271 },\n            { nominal: 202, mass: 202.00976 },\n            { nominal: 203, mass: 203.009304 },\n            { nominal: 204, mass: 204.006492 },\n            { nominal: 205, mass: 205.006268 },\n            { nominal: 206, mass: 206.003828 },\n            { nominal: 207, mass: 207.003799 },\n            { nominal: 208, mass: 208.001841 },\n            { nominal: 209, mass: 209.00199 },\n            { nominal: 210, mass: 210.000494 },\n            { nominal: 211, mass: 211.0008932 },\n            { nominal: 212, mass: 211.999787 },\n            { nominal: 213, mass: 213.000384 },\n            { nominal: 214, mass: 214.0000997 },\n            { nominal: 215, mass: 215.0027204 },\n            { nominal: 216, mass: 216.0035334 },\n            { nominal: 217, mass: 217.0063207 },\n            { nominal: 218, mass: 218.007141 },\n            { nominal: 219, mass: 219.0100855 },\n            { nominal: 220, mass: 220.0110259 },\n            { nominal: 221, mass: 221.0139177 },\n            { nominal: 222, mass: 222.0153748 },\n            { nominal: 223, mass: 223.0185023 },\n            { nominal: 224, mass: 224.020212 },\n            { nominal: 225, mass: 225.0236119 },\n            { nominal: 226, mass: 226.0254103 },\n            { nominal: 227, mass: 227.0291783 },\n            { nominal: 228, mass: 228.0310707 },\n            { nominal: 229, mass: 229.034942 },\n            { nominal: 230, mass: 230.037055 },\n            { nominal: 231, mass: 231.041027 },\n            { nominal: 232, mass: 232.0434753 },\n            { nominal: 233, mass: 233.047582 },\n            { nominal: 234, mass: 234.050342 },\n            { nominal: 235, mass: 235.05497 },\n        ],\n        symbol: 'Ra',\n        mass: null,\n        name: 'Radium',\n    },\n    {\n        number: 89,\n        isotopes: [\n            { nominal: 206, mass: 206.014452 },\n            { nominal: 207, mass: 207.011966 },\n            { nominal: 208, mass: 208.01155 },\n            { nominal: 209, mass: 209.009495 },\n            { nominal: 210, mass: 210.009436 },\n            { nominal: 211, mass: 211.007732 },\n            { nominal: 212, mass: 212.007813 },\n            { nominal: 213, mass: 213.006609 },\n            { nominal: 214, mass: 214.006918 },\n            { nominal: 215, mass: 215.006475 },\n            { nominal: 216, mass: 216.008743 },\n            { nominal: 217, mass: 217.009344 },\n            { nominal: 218, mass: 218.011642 },\n            { nominal: 219, mass: 219.012421 },\n            { nominal: 220, mass: 220.0147549 },\n            { nominal: 221, mass: 221.015592 },\n            { nominal: 222, mass: 222.0178442 },\n            { nominal: 223, mass: 223.0191377 },\n            { nominal: 224, mass: 224.0217232 },\n            { nominal: 225, mass: 225.02323 },\n            { nominal: 226, mass: 226.0260984 },\n            { nominal: 227, mass: 227.0277523 },\n            { nominal: 228, mass: 228.0310215 },\n            { nominal: 229, mass: 229.032956 },\n            { nominal: 230, mass: 230.036327 },\n            { nominal: 231, mass: 231.038393 },\n            { nominal: 232, mass: 232.042034 },\n            { nominal: 233, mass: 233.044346 },\n            { nominal: 234, mass: 234.048139 },\n            { nominal: 235, mass: 235.05084 },\n            { nominal: 236, mass: 236.054988 },\n            { nominal: 237, mass: 237.05827 },\n        ],\n        symbol: 'Ac',\n        mass: null,\n        name: 'Actinium',\n    },\n    {\n        number: 90,\n        isotopes: [\n            { nominal: 208, mass: 208.0179 },\n            { nominal: 209, mass: 209.017753 },\n            { nominal: 210, mass: 210.015094 },\n            { nominal: 211, mass: 211.014929 },\n            { nominal: 212, mass: 212.012988 },\n            { nominal: 213, mass: 213.013009 },\n            { nominal: 214, mass: 214.0115 },\n            { nominal: 215, mass: 215.0117248 },\n            { nominal: 216, mass: 216.011056 },\n            { nominal: 217, mass: 217.013117 },\n            { nominal: 218, mass: 218.013276 },\n            { nominal: 219, mass: 219.015537 },\n            { nominal: 220, mass: 220.015748 },\n            { nominal: 221, mass: 221.018184 },\n            { nominal: 222, mass: 222.018469 },\n            { nominal: 223, mass: 223.0208119 },\n            { nominal: 224, mass: 224.021464 },\n            { nominal: 225, mass: 225.0239514 },\n            { nominal: 226, mass: 226.0249034 },\n            { nominal: 227, mass: 227.0277042 },\n            { nominal: 228, mass: 228.0287413 },\n            { nominal: 229, mass: 229.0317627 },\n            { nominal: 230, mass: 230.0331341 },\n            { nominal: 231, mass: 231.0363046 },\n            { nominal: 232, mass: 232.0380558, abundance: 1 },\n            { nominal: 233, mass: 233.0415823 },\n            { nominal: 234, mass: 234.0436014 },\n            { nominal: 235, mass: 235.047255 },\n            { nominal: 236, mass: 236.049657 },\n            { nominal: 237, mass: 237.053629 },\n            { nominal: 238, mass: 238.0565 },\n            { nominal: 239, mass: 239.06077 },\n        ],\n        symbol: 'Th',\n        mass: 232.0380558,\n        name: 'Thorium',\n        monoisotopicMass: 232.0380558,\n    },\n    {\n        number: 91,\n        isotopes: [\n            { nominal: 212, mass: 212.023203 },\n            { nominal: 213, mass: 213.021109 },\n            { nominal: 214, mass: 214.020918 },\n            { nominal: 215, mass: 215.019183 },\n            { nominal: 216, mass: 216.019109 },\n            { nominal: 217, mass: 217.018325 },\n            { nominal: 218, mass: 218.020059 },\n            { nominal: 219, mass: 219.019904 },\n            { nominal: 220, mass: 220.021705 },\n            { nominal: 221, mass: 221.021875 },\n            { nominal: 222, mass: 222.023784 },\n            { nominal: 223, mass: 223.023963 },\n            { nominal: 224, mass: 224.0256176 },\n            { nominal: 225, mass: 225.026131 },\n            { nominal: 226, mass: 226.027948 },\n            { nominal: 227, mass: 227.0288054 },\n            { nominal: 228, mass: 228.0310517 },\n            { nominal: 229, mass: 229.0320972 },\n            { nominal: 230, mass: 230.034541 },\n            { nominal: 231, mass: 231.0358842, abundance: 1 },\n            { nominal: 232, mass: 232.0385917 },\n            { nominal: 233, mass: 233.0402472 },\n            { nominal: 234, mass: 234.0433072 },\n            { nominal: 235, mass: 235.045399 },\n            { nominal: 236, mass: 236.048668 },\n            { nominal: 237, mass: 237.051023 },\n            { nominal: 238, mass: 238.054637 },\n            { nominal: 239, mass: 239.05726 },\n            { nominal: 240, mass: 240.06098 },\n            { nominal: 241, mass: 241.06408 },\n        ],\n        symbol: 'Pa',\n        mass: 231.0358842,\n        name: 'Protactinium',\n        monoisotopicMass: 231.0358842,\n    },\n    {\n        number: 92,\n        isotopes: [\n            { nominal: 217, mass: 217.02466 },\n            { nominal: 218, mass: 218.023523 },\n            { nominal: 219, mass: 219.024999 },\n            { nominal: 220, mass: 220.02462 },\n            { nominal: 221, mass: 221.02628 },\n            { nominal: 222, mass: 222.026 },\n            { nominal: 223, mass: 223.027739 },\n            { nominal: 224, mass: 224.027605 },\n            { nominal: 225, mass: 225.029391 },\n            { nominal: 226, mass: 226.029339 },\n            { nominal: 227, mass: 227.031157 },\n            { nominal: 228, mass: 228.031371 },\n            { nominal: 229, mass: 229.0335063 },\n            { nominal: 230, mass: 230.0339401 },\n            { nominal: 231, mass: 231.0362939 },\n            { nominal: 232, mass: 232.0371563 },\n            { nominal: 233, mass: 233.0396355 },\n            { nominal: 234, mass: 234.0409523, abundance: 0.000054 },\n            { nominal: 235, mass: 235.0439301, abundance: 0.007204 },\n            { nominal: 236, mass: 236.0455682 },\n            { nominal: 237, mass: 237.0487304 },\n            { nominal: 238, mass: 238.0507884, abundance: 0.992742 },\n            { nominal: 239, mass: 239.0542935 },\n            { nominal: 240, mass: 240.0565934 },\n            { nominal: 241, mass: 241.06033 },\n            { nominal: 242, mass: 242.06293 },\n            { nominal: 243, mass: 243.06699 },\n        ],\n        symbol: 'U',\n        mass: 238.0289104616574,\n        name: 'Uranium',\n        monoisotopicMass: 238.0507884,\n    },\n    {\n        number: 93,\n        isotopes: [\n            { nominal: 219, mass: 219.03143 },\n            { nominal: 220, mass: 220.03254 },\n            { nominal: 221, mass: 221.03204 },\n            { nominal: 222, mass: 222.0333 },\n            { nominal: 223, mass: 223.03285 },\n            { nominal: 224, mass: 224.03422 },\n            { nominal: 225, mass: 225.033911 },\n            { nominal: 226, mass: 226.035188 },\n            { nominal: 227, mass: 227.034957 },\n            { nominal: 228, mass: 228.036067 },\n            { nominal: 229, mass: 229.036264 },\n            { nominal: 230, mass: 230.037828 },\n            { nominal: 231, mass: 231.038245 },\n            { nominal: 232, mass: 232.04011 },\n            { nominal: 233, mass: 233.040741 },\n            { nominal: 234, mass: 234.0428953 },\n            { nominal: 235, mass: 235.0440635 },\n            { nominal: 236, mass: 236.04657 },\n            { nominal: 237, mass: 237.0481736 },\n            { nominal: 238, mass: 238.0509466 },\n            { nominal: 239, mass: 239.0529392 },\n            { nominal: 240, mass: 240.056165 },\n            { nominal: 241, mass: 241.058253 },\n            { nominal: 242, mass: 242.06164 },\n            { nominal: 243, mass: 243.06428 },\n            { nominal: 244, mass: 244.06785 },\n            { nominal: 245, mass: 245.0708 },\n        ],\n        symbol: 'Np',\n        mass: null,\n        name: 'Neptunium',\n    },\n    {\n        number: 94,\n        isotopes: [\n            { nominal: 228, mass: 228.038732 },\n            { nominal: 229, mass: 229.040144 },\n            { nominal: 230, mass: 230.03965 },\n            { nominal: 231, mass: 231.041102 },\n            { nominal: 232, mass: 232.041185 },\n            { nominal: 233, mass: 233.042998 },\n            { nominal: 234, mass: 234.0433174 },\n            { nominal: 235, mass: 235.045286 },\n            { nominal: 236, mass: 236.0460581 },\n            { nominal: 237, mass: 237.0484098 },\n            { nominal: 238, mass: 238.0495601 },\n            { nominal: 239, mass: 239.0521636 },\n            { nominal: 240, mass: 240.0538138 },\n            { nominal: 241, mass: 241.0568517 },\n            { nominal: 242, mass: 242.0587428 },\n            { nominal: 243, mass: 243.0620036 },\n            { nominal: 244, mass: 244.0642053 },\n            { nominal: 245, mass: 245.067826 },\n            { nominal: 246, mass: 246.070205 },\n            { nominal: 247, mass: 247.07419 },\n        ],\n        symbol: 'Pu',\n        mass: null,\n        name: 'Plutonium',\n    },\n    {\n        number: 95,\n        isotopes: [\n            { nominal: 230, mass: 230.04609 },\n            { nominal: 231, mass: 231.04556 },\n            { nominal: 232, mass: 232.04645 },\n            { nominal: 233, mass: 233.04644 },\n            { nominal: 234, mass: 234.04773 },\n            { nominal: 235, mass: 235.047908 },\n            { nominal: 236, mass: 236.04943 },\n            { nominal: 237, mass: 237.049996 },\n            { nominal: 238, mass: 238.051985 },\n            { nominal: 239, mass: 239.0530247 },\n            { nominal: 240, mass: 240.0553 },\n            { nominal: 241, mass: 241.0568293 },\n            { nominal: 242, mass: 242.0595494 },\n            { nominal: 243, mass: 243.0613813 },\n            { nominal: 244, mass: 244.0642851 },\n            { nominal: 245, mass: 245.0664548 },\n            { nominal: 246, mass: 246.069775 },\n            { nominal: 247, mass: 247.07209 },\n            { nominal: 248, mass: 248.07575 },\n            { nominal: 249, mass: 249.07848 },\n        ],\n        symbol: 'Am',\n        name: 'Americium',\n        mass: null,\n    },\n    {\n        number: 96,\n        isotopes: [\n            { nominal: 232, mass: 232.04982 },\n            { nominal: 233, mass: 233.05077 },\n            { nominal: 234, mass: 234.05016 },\n            { nominal: 235, mass: 235.05154 },\n            { nominal: 236, mass: 236.051374 },\n            { nominal: 237, mass: 237.052869 },\n            { nominal: 238, mass: 238.053081 },\n            { nominal: 239, mass: 239.05491 },\n            { nominal: 240, mass: 240.0555297 },\n            { nominal: 241, mass: 241.0576532 },\n            { nominal: 242, mass: 242.058836 },\n            { nominal: 243, mass: 243.0613893 },\n            { nominal: 244, mass: 244.0627528 },\n            { nominal: 245, mass: 245.0654915 },\n            { nominal: 246, mass: 246.0672238 },\n            { nominal: 247, mass: 247.0703541 },\n            { nominal: 248, mass: 248.0723499 },\n            { nominal: 249, mass: 249.0759548 },\n            { nominal: 250, mass: 250.078358 },\n            { nominal: 251, mass: 251.082286 },\n            { nominal: 252, mass: 252.08487 },\n        ],\n        symbol: 'Cm',\n        name: 'Curium',\n        mass: null,\n    },\n    {\n        number: 97,\n        isotopes: [\n            { nominal: 234, mass: 234.05727 },\n            { nominal: 235, mass: 235.05658 },\n            { nominal: 236, mass: 236.05748 },\n            { nominal: 237, mass: 237.0571 },\n            { nominal: 238, mass: 238.0582 },\n            { nominal: 239, mass: 239.05824 },\n            { nominal: 240, mass: 240.05976 },\n            { nominal: 241, mass: 241.06016 },\n            { nominal: 242, mass: 242.06198 },\n            { nominal: 243, mass: 243.0630078 },\n            { nominal: 244, mass: 244.065181 },\n            { nominal: 245, mass: 245.0663618 },\n            { nominal: 246, mass: 246.068673 },\n            { nominal: 247, mass: 247.0703073 },\n            { nominal: 248, mass: 248.073088 },\n            { nominal: 249, mass: 249.0749877 },\n            { nominal: 250, mass: 250.0783167 },\n            { nominal: 251, mass: 251.080762 },\n            { nominal: 252, mass: 252.08431 },\n            { nominal: 253, mass: 253.08688 },\n            { nominal: 254, mass: 254.0906 },\n        ],\n        symbol: 'Bk',\n        name: 'Berkelium',\n        mass: null,\n    },\n    {\n        number: 98,\n        isotopes: [\n            { nominal: 237, mass: 237.062198 },\n            { nominal: 238, mass: 238.06149 },\n            { nominal: 239, mass: 239.06253 },\n            { nominal: 240, mass: 240.062256 },\n            { nominal: 241, mass: 241.06369 },\n            { nominal: 242, mass: 242.063754 },\n            { nominal: 243, mass: 243.06548 },\n            { nominal: 244, mass: 244.0660008 },\n            { nominal: 245, mass: 245.0680487 },\n            { nominal: 246, mass: 246.0688055 },\n            { nominal: 247, mass: 247.070965 },\n            { nominal: 248, mass: 248.0721851 },\n            { nominal: 249, mass: 249.0748539 },\n            { nominal: 250, mass: 250.0764062 },\n            { nominal: 251, mass: 251.0795886 },\n            { nominal: 252, mass: 252.0816272 },\n            { nominal: 253, mass: 253.0851345 },\n            { nominal: 254, mass: 254.087324 },\n            { nominal: 255, mass: 255.09105 },\n            { nominal: 256, mass: 256.09344 },\n        ],\n        symbol: 'Cf',\n        name: 'Californium',\n        mass: null,\n    },\n    {\n        number: 99,\n        isotopes: [\n            { nominal: 239, mass: 239.06823 },\n            { nominal: 240, mass: 240.06892 },\n            { nominal: 241, mass: 241.06856 },\n            { nominal: 242, mass: 242.06957 },\n            { nominal: 243, mass: 243.06951 },\n            { nominal: 244, mass: 244.07088 },\n            { nominal: 245, mass: 245.07125 },\n            { nominal: 246, mass: 246.0729 },\n            { nominal: 247, mass: 247.073622 },\n            { nominal: 248, mass: 248.075471 },\n            { nominal: 249, mass: 249.076411 },\n            { nominal: 250, mass: 250.07861 },\n            { nominal: 251, mass: 251.0799936 },\n            { nominal: 252, mass: 252.08298 },\n            { nominal: 253, mass: 253.0848257 },\n            { nominal: 254, mass: 254.0880222 },\n            { nominal: 255, mass: 255.090275 },\n            { nominal: 256, mass: 256.0936 },\n            { nominal: 257, mass: 257.09598 },\n            { nominal: 258, mass: 258.09952 },\n        ],\n        symbol: 'Es',\n        name: 'Einsteinium',\n        mass: null,\n    },\n    {\n        number: 100,\n        isotopes: [\n            { nominal: 241, mass: 241.07421 },\n            { nominal: 242, mass: 242.07343 },\n            { nominal: 243, mass: 243.07446 },\n            { nominal: 244, mass: 244.07404 },\n            { nominal: 245, mass: 245.07535 },\n            { nominal: 246, mass: 246.07535 },\n            { nominal: 247, mass: 247.07694 },\n            { nominal: 248, mass: 248.0771865 },\n            { nominal: 249, mass: 249.0789275 },\n            { nominal: 250, mass: 250.079521 },\n            { nominal: 251, mass: 251.08154 },\n            { nominal: 252, mass: 252.0824671 },\n            { nominal: 253, mass: 253.0851846 },\n            { nominal: 254, mass: 254.0868544 },\n            { nominal: 255, mass: 255.089964 },\n            { nominal: 256, mass: 256.0917745 },\n            { nominal: 257, mass: 257.0951061 },\n            { nominal: 258, mass: 258.09708 },\n            { nominal: 259, mass: 259.1006 },\n            { nominal: 260, mass: 260.10281 },\n        ],\n        symbol: 'Fm',\n        name: 'Fermium',\n        mass: null,\n    },\n    {\n        number: 101,\n        isotopes: [\n            { nominal: 245, mass: 245.08081 },\n            { nominal: 246, mass: 246.08171 },\n            { nominal: 247, mass: 247.08152 },\n            { nominal: 248, mass: 248.08282 },\n            { nominal: 249, mass: 249.08291 },\n            { nominal: 250, mass: 250.08441 },\n            { nominal: 251, mass: 251.084774 },\n            { nominal: 252, mass: 252.08643 },\n            { nominal: 253, mass: 253.087144 },\n            { nominal: 254, mass: 254.08959 },\n            { nominal: 255, mass: 255.0910841 },\n            { nominal: 256, mass: 256.09389 },\n            { nominal: 257, mass: 257.0955424 },\n            { nominal: 258, mass: 258.0984315 },\n            { nominal: 259, mass: 259.10051 },\n            { nominal: 260, mass: 260.10365 },\n            { nominal: 261, mass: 261.10583 },\n            { nominal: 262, mass: 262.1091 },\n        ],\n        symbol: 'Md',\n        name: 'Mendelevium',\n        mass: null,\n    },\n    {\n        number: 102,\n        isotopes: [\n            { nominal: 248, mass: 248.08655 },\n            { nominal: 249, mass: 249.0878 },\n            { nominal: 250, mass: 250.08756 },\n            { nominal: 251, mass: 251.08894 },\n            { nominal: 252, mass: 252.088967 },\n            { nominal: 253, mass: 253.0905641 },\n            { nominal: 254, mass: 254.090956 },\n            { nominal: 255, mass: 255.093191 },\n            { nominal: 256, mass: 256.0942829 },\n            { nominal: 257, mass: 257.0968878 },\n            { nominal: 258, mass: 258.09821 },\n            { nominal: 259, mass: 259.10103 },\n            { nominal: 260, mass: 260.10264 },\n            { nominal: 261, mass: 261.1057 },\n            { nominal: 262, mass: 262.10746 },\n            { nominal: 263, mass: 263.11071 },\n            { nominal: 264, mass: 264.11273 },\n        ],\n        symbol: 'No',\n        name: 'Nobelium',\n        mass: null,\n    },\n    {\n        number: 103,\n        isotopes: [\n            { nominal: 251, mass: 251.09418 },\n            { nominal: 252, mass: 252.09526 },\n            { nominal: 253, mass: 253.09509 },\n            { nominal: 254, mass: 254.09648 },\n            { nominal: 255, mass: 255.096562 },\n            { nominal: 256, mass: 256.098494 },\n            { nominal: 257, mass: 257.099418 },\n            { nominal: 258, mass: 258.10176 },\n            { nominal: 259, mass: 259.102902 },\n            { nominal: 260, mass: 260.1055 },\n            { nominal: 261, mass: 261.10688 },\n            { nominal: 262, mass: 262.10961 },\n            { nominal: 263, mass: 263.11136 },\n            { nominal: 264, mass: 264.1142 },\n            { nominal: 265, mass: 265.11619 },\n            { nominal: 266, mass: 266.11983 },\n        ],\n        symbol: 'Lr',\n        name: 'Lawrencium',\n        mass: null,\n    },\n    {\n        number: 104,\n        isotopes: [\n            { nominal: 253, mass: 253.10044 },\n            { nominal: 254, mass: 254.10005 },\n            { nominal: 255, mass: 255.10127 },\n            { nominal: 256, mass: 256.101152 },\n            { nominal: 257, mass: 257.102918 },\n            { nominal: 258, mass: 258.103428 },\n            { nominal: 259, mass: 259.105596 },\n            { nominal: 260, mass: 260.10644 },\n            { nominal: 261, mass: 261.108773 },\n            { nominal: 262, mass: 262.10992 },\n            { nominal: 263, mass: 263.11249 },\n            { nominal: 264, mass: 264.11388 },\n            { nominal: 265, mass: 265.11668 },\n            { nominal: 266, mass: 266.11817 },\n            { nominal: 267, mass: 267.12179 },\n            { nominal: 268, mass: 268.12397 },\n        ],\n        symbol: 'Rf',\n        name: 'Rutherfordium',\n        mass: null,\n    },\n    {\n        number: 105,\n        isotopes: [\n            { nominal: 255, mass: 255.10707 },\n            { nominal: 256, mass: 256.10789 },\n            { nominal: 257, mass: 257.10758 },\n            { nominal: 258, mass: 258.10928 },\n            { nominal: 259, mass: 259.109492 },\n            { nominal: 260, mass: 260.1113 },\n            { nominal: 261, mass: 261.11192 },\n            { nominal: 262, mass: 262.11407 },\n            { nominal: 263, mass: 263.11499 },\n            { nominal: 264, mass: 264.11741 },\n            { nominal: 265, mass: 265.11861 },\n            { nominal: 266, mass: 266.12103 },\n            { nominal: 267, mass: 267.12247 },\n            { nominal: 268, mass: 268.12567 },\n            { nominal: 269, mass: 269.12791 },\n            { nominal: 270, mass: 270.13136 },\n        ],\n        symbol: 'Db',\n        name: 'Dubnium',\n        mass: null,\n    },\n    {\n        number: 106,\n        isotopes: [\n            { nominal: 258, mass: 258.11298 },\n            { nominal: 259, mass: 259.1144 },\n            { nominal: 260, mass: 260.114384 },\n            { nominal: 261, mass: 261.115949 },\n            { nominal: 262, mass: 262.116337 },\n            { nominal: 263, mass: 263.11829 },\n            { nominal: 264, mass: 264.11893 },\n            { nominal: 265, mass: 265.12109 },\n            { nominal: 266, mass: 266.12198 },\n            { nominal: 267, mass: 267.12436 },\n            { nominal: 268, mass: 268.12539 },\n            { nominal: 269, mass: 269.12863 },\n            { nominal: 270, mass: 270.13043 },\n            { nominal: 271, mass: 271.13393 },\n            { nominal: 272, mass: 272.13589 },\n            { nominal: 273, mass: 273.13958 },\n        ],\n        symbol: 'Sg',\n        name: 'Seaborgium',\n        mass: null,\n    },\n    {\n        number: 107,\n        isotopes: [\n            { nominal: 260, mass: 260.12166 },\n            { nominal: 261, mass: 261.12145 },\n            { nominal: 262, mass: 262.12297 },\n            { nominal: 263, mass: 263.12292 },\n            { nominal: 264, mass: 264.12459 },\n            { nominal: 265, mass: 265.12491 },\n            { nominal: 266, mass: 266.12679 },\n            { nominal: 267, mass: 267.1275 },\n            { nominal: 268, mass: 268.12969 },\n            { nominal: 269, mass: 269.13042 },\n            { nominal: 270, mass: 270.13336 },\n            { nominal: 271, mass: 271.13526 },\n            { nominal: 272, mass: 272.13826 },\n            { nominal: 273, mass: 273.14024 },\n            { nominal: 274, mass: 274.14355 },\n            { nominal: 275, mass: 275.14567 },\n        ],\n        symbol: 'Bh',\n        name: 'Bohrium',\n        mass: null,\n    },\n    {\n        number: 108,\n        isotopes: [\n            { nominal: 263, mass: 263.12852 },\n            { nominal: 264, mass: 264.128357 },\n            { nominal: 265, mass: 265.129793 },\n            { nominal: 266, mass: 266.130046 },\n            { nominal: 267, mass: 267.13167 },\n            { nominal: 268, mass: 268.13186 },\n            { nominal: 269, mass: 269.13375 },\n            { nominal: 270, mass: 270.13429 },\n            { nominal: 271, mass: 271.13717 },\n            { nominal: 272, mass: 272.1385 },\n            { nominal: 273, mass: 273.14168 },\n            { nominal: 274, mass: 274.1433 },\n            { nominal: 275, mass: 275.14667 },\n            { nominal: 276, mass: 276.14846 },\n            { nominal: 277, mass: 277.1519 },\n        ],\n        symbol: 'Hs',\n        name: 'Hassium',\n        mass: null,\n    },\n    {\n        number: 109,\n        isotopes: [\n            { nominal: 265, mass: 265.136 },\n            { nominal: 266, mass: 266.13737 },\n            { nominal: 267, mass: 267.13719 },\n            { nominal: 268, mass: 268.13865 },\n            { nominal: 269, mass: 269.13882 },\n            { nominal: 270, mass: 270.14033 },\n            { nominal: 271, mass: 271.14074 },\n            { nominal: 272, mass: 272.14341 },\n            { nominal: 273, mass: 273.1444 },\n            { nominal: 274, mass: 274.14724 },\n            { nominal: 275, mass: 275.14882 },\n            { nominal: 276, mass: 276.15159 },\n            { nominal: 277, mass: 277.15327 },\n            { nominal: 278, mass: 278.15631 },\n            { nominal: 279, mass: 279.15808 },\n        ],\n        symbol: 'Mt',\n        name: 'Meitnerium',\n        mass: null,\n    },\n    {\n        number: 110,\n        isotopes: [\n            { nominal: 267, mass: 267.14377 },\n            { nominal: 268, mass: 268.14348 },\n            { nominal: 269, mass: 269.144752 },\n            { nominal: 270, mass: 270.144584 },\n            { nominal: 271, mass: 271.14595 },\n            { nominal: 272, mass: 272.14602 },\n            { nominal: 273, mass: 273.14856 },\n            { nominal: 274, mass: 274.14941 },\n            { nominal: 275, mass: 275.15203 },\n            { nominal: 276, mass: 276.15303 },\n            { nominal: 277, mass: 277.15591 },\n            { nominal: 278, mass: 278.15704 },\n            { nominal: 279, mass: 279.1601 },\n            { nominal: 280, mass: 280.16131 },\n            { nominal: 281, mass: 281.16451 },\n        ],\n        symbol: 'Ds',\n        name: 'Darmstadtium',\n        mass: null,\n    },\n    {\n        number: 111,\n        isotopes: [\n            { nominal: 272, mass: 272.15327 },\n            { nominal: 273, mass: 273.15313 },\n            { nominal: 274, mass: 274.15525 },\n            { nominal: 275, mass: 275.15594 },\n            { nominal: 276, mass: 276.15833 },\n            { nominal: 277, mass: 277.15907 },\n            { nominal: 278, mass: 278.16149 },\n            { nominal: 279, mass: 279.16272 },\n            { nominal: 280, mass: 280.16514 },\n            { nominal: 281, mass: 281.16636 },\n            { nominal: 282, mass: 282.16912 },\n            { nominal: 283, mass: 283.17054 },\n        ],\n        symbol: 'Rg',\n        name: 'Roentgenium',\n        mass: null,\n    },\n    {\n        number: 112,\n        isotopes: [\n            { nominal: 276, mass: 276.16141 },\n            { nominal: 277, mass: 277.16364 },\n            { nominal: 278, mass: 278.16416 },\n            { nominal: 279, mass: 279.16654 },\n            { nominal: 280, mass: 280.16715 },\n            { nominal: 281, mass: 281.16975 },\n            { nominal: 282, mass: 282.1705 },\n            { nominal: 283, mass: 283.17327 },\n            { nominal: 284, mass: 284.17416 },\n            { nominal: 285, mass: 285.17712 },\n        ],\n        symbol: 'Cn',\n        name: 'Copernicium',\n        mass: null,\n    },\n    {\n        number: 113,\n        isotopes: [\n            { nominal: 278, mass: 278.17058 },\n            { nominal: 279, mass: 279.17095 },\n            { nominal: 280, mass: 280.17293 },\n            { nominal: 281, mass: 281.17348 },\n            { nominal: 282, mass: 282.17567 },\n            { nominal: 283, mass: 283.17657 },\n            { nominal: 284, mass: 284.17873 },\n            { nominal: 285, mass: 285.17973 },\n            { nominal: 286, mass: 286.18221 },\n            { nominal: 287, mass: 287.18339 },\n        ],\n        symbol: 'Nh',\n        name: 'Nihonium',\n        mass: null,\n    },\n    {\n        number: 114,\n        isotopes: [\n            { nominal: 285, mass: 285.18364 },\n            { nominal: 286, mass: 286.18423 },\n            { nominal: 287, mass: 287.18678 },\n            { nominal: 288, mass: 288.18757 },\n            { nominal: 289, mass: 289.19042 },\n        ],\n        symbol: 'Fl',\n        name: 'Flerovium',\n        mass: null,\n    },\n    {\n        number: 115,\n        isotopes: [\n            { nominal: 287, mass: 287.1907 },\n            { nominal: 288, mass: 288.19274 },\n            { nominal: 289, mass: 289.19363 },\n            { nominal: 290, mass: 290.19598 },\n            { nominal: 291, mass: 291.19707 },\n        ],\n        symbol: 'Mc',\n        name: 'Moscovium',\n        mass: null,\n    },\n    {\n        number: 116,\n        isotopes: [\n            { nominal: 289, mass: 289.19816 },\n            { nominal: 290, mass: 290.19864 },\n            { nominal: 291, mass: 291.20108 },\n            { nominal: 292, mass: 292.20174 },\n            { nominal: 293, mass: 293.20449 },\n        ],\n        symbol: 'Lv',\n        name: 'Livermorium',\n        mass: null,\n    },\n    {\n        number: 117,\n        isotopes: [\n            { nominal: 291, mass: 291.20553 },\n            { nominal: 292, mass: 292.20746 },\n            { nominal: 293, mass: 293.20824 },\n            { nominal: 294, mass: 294.21046 },\n        ],\n        symbol: 'Ts',\n        name: 'Teennessine',\n        mass: null,\n    },\n    {\n        number: 118,\n        isotopes: [\n            { nominal: 293, mass: 293.21356 },\n            { nominal: 294, mass: 294.21392 },\n            { nominal: 295, mass: 295.21624 },\n        ],\n        symbol: 'Og',\n        name: 'Oganesson',\n        mass: null,\n    },\n];\n//# sourceMappingURL=elementsAndIsotopes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elements = void 0;\nconst elementsAndIsotopes_js_1 = require(\"./elementsAndIsotopes.js\");\nexports.elements = elementsAndIsotopes_js_1.elementsAndIsotopes.map((element) => ({\n    number: element.number,\n    symbol: element.symbol,\n    mass: element.mass,\n    name: element.name,\n    monoisotopicMass: element.monoisotopicMass,\n}));\n//# sourceMappingURL=elements.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsAndIsotopesObject = void 0;\nconst elementsAndIsotopes_js_1 = require(\"./elementsAndIsotopes.js\");\nexports.elementsAndIsotopesObject = {};\nfor (const element of elementsAndIsotopes_js_1.elementsAndIsotopes) {\n    exports.elementsAndIsotopesObject[element.symbol] = element;\n}\n//# sourceMappingURL=elementsAndIsotopesObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsAndStableIsotopes = void 0;\nconst elementsAndIsotopes_js_1 = require(\"./elementsAndIsotopes.js\");\nexports.elementsAndStableIsotopes = structuredClone(elementsAndIsotopes_js_1.elementsAndIsotopes);\nfor (const element of exports.elementsAndStableIsotopes) {\n    element.isotopes = element.isotopes.filter((i) => {\n        return typeof i.abundance === 'number' && i.abundance > 0;\n    });\n}\n//# sourceMappingURL=elementsAndStableIsotopes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsAndStableIsotopesObject = void 0;\nconst elementsAndStableIsotopes_js_1 = require(\"./elementsAndStableIsotopes.js\");\nexports.elementsAndStableIsotopesObject = {};\nfor (const element of elementsAndStableIsotopes_js_1.elementsAndStableIsotopes) {\n    exports.elementsAndStableIsotopesObject[element.symbol] = element;\n}\n//# sourceMappingURL=elementsAndStableIsotopesObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementsObject = void 0;\nconst elements_js_1 = require(\"./elements.js\");\nexports.elementsObject = {};\nfor (const element of elements_js_1.elements) {\n    exports.elementsObject[element.symbol] = element;\n}\n//# sourceMappingURL=elementsObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isotopesObject = void 0;\nconst elementsAndIsotopesObject_js_1 = require(\"./elementsAndIsotopesObject.js\");\nexports.isotopesObject = {};\nfor (const [symbol, element] of Object.entries(elementsAndIsotopesObject_js_1.elementsAndIsotopesObject)) {\n    if (!element)\n        continue;\n    for (const isotope of element.isotopes) {\n        exports.isotopesObject[`${isotope.nominal}${symbol}`] = {\n            abundance: isotope.abundance,\n            mass: isotope.mass,\n        };\n    }\n}\n//# sourceMappingURL=isotopesObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stableIsotopesObject = void 0;\nconst elementsAndIsotopes_js_1 = require(\"./elementsAndIsotopes.js\");\nexports.stableIsotopesObject = {};\nfor (const element of elementsAndIsotopes_js_1.elementsAndIsotopes) {\n    let abundance = 0;\n    let mostAbundant = 0;\n    for (const isotope of element.isotopes) {\n        if (typeof isotope.abundance === 'number' &&\n            isotope.abundance > abundance) {\n            abundance = isotope.abundance;\n            mostAbundant = isotope.nominal;\n        }\n    }\n    for (const isotope of element.isotopes) {\n        if (isotope.abundance === 0)\n            continue;\n        const entry = {\n            name: element.name,\n            mass: isotope.mass,\n            symbol: element.symbol,\n            mostAbundant: false,\n        };\n        if (isotope.nominal === mostAbundant) {\n            entry.mostAbundant = true;\n        }\n        exports.stableIsotopesObject[`${isotope.nominal}${element.symbol}`] = entry;\n    }\n}\n//# sourceMappingURL=stableIsotopesObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsaturationsObject = void 0;\nexports.unsaturationsObject = {\n    O: 0,\n    N: 1,\n    H: -1,\n    Na: -1,\n    K: -1,\n    Li: -1,\n    Ca: -2,\n    C: 2,\n    F: -1,\n    Si: 2,\n    Cl: -1,\n    Br: -1,\n    I: -1,\n    S: 0,\n    P: 1,\n};\n//# sourceMappingURL=unsaturationsObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.groupsObject = void 0;\nconst groups_1 = require(\"./groups\");\nexports.groupsObject = {};\ngroups_1.groups.forEach((e) => {\n    if (exports.groupsObject[e.symbol]) {\n        // eslint-disable-next-line no-console\n        console.log(`The symbol ${e.symbol} is used more than once`);\n    }\n    exports.groupsObject[e.symbol] = e;\n});\n//# sourceMappingURL=groupsObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.groupsToSequence = groupsToSequence;\nconst groupsObject_js_1 = require(\"./groupsObject.js\");\n/**\n * Recreate a one letter sequence\n * @param {object} mf\n */\nfunction groupsToSequence(mf) {\n    mf = mf.replaceAll(/\\([^(]*\\)/g, '');\n    let parts = mf.split(/(?=[ A-Z])/);\n    let usefulParts = [];\n    for (let part of parts) {\n        if (part === ' ') {\n            usefulParts.push(' ');\n            continue;\n        }\n        if (!part.match(/^[A-Z][a-z]{2,6}/))\n            continue;\n        if (groupsObject_js_1.groupsObject[part] && groupsObject_js_1.groupsObject[part].oneLetter) {\n            usefulParts.push(groupsObject_js_1.groupsObject[part].oneLetter);\n        }\n        else {\n            usefulParts.push('?');\n        }\n    }\n    return usefulParts.join('').replaceAll(/ +/g, ' ').trim();\n}\n//# sourceMappingURL=groupsToSequence.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isMF = isMF;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst chemical_groups_1 = require(\"chemical-groups\");\nfunction isMF(mf) {\n    let tmpMF = mf.replaceAll(/[^A-Za-z]/g, '');\n    let parts = tmpMF.replaceAll(/([A-Za-z])(?=[A-Z])/g, '$1 ').split(' ');\n    for (let i = 0; i < parts.length; i++) {\n        if (!chemical_elements_1.elementsObject[parts[i]] && !chemical_groups_1.groupsObject[parts[i]]) {\n            return false;\n        }\n    }\n    return true;\n}\n//# sourceMappingURL=isMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Style = void 0;\nexports.Style = {\n    SUPERIMPOSE: 'flex-direction: column;display: inline-flex;justify-content: center;text-align: left;vertical-align: middle;',\n    SUPERIMPOSE_SUP_SUB: 'line-height: 1; font-size: 70%',\n};\n//# sourceMappingURL=Style.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toHtml = toHtml;\nconst Format_1 = require(\"../Format\");\nconst Style_1 = require(\"../Style\");\nfunction toHtml(lines) {\n    let html = [];\n    for (let line of lines) {\n        switch (line.kind) {\n            case Format_1.Format.SUBSCRIPT:\n                html.push(`<sub>${line.value}</sub>`);\n                break;\n            case Format_1.Format.SUPERSCRIPT:\n                html.push(`<sup>${line.value}</sup>`);\n                break;\n            case Format_1.Format.SUPERIMPOSE:\n                html.push(`<span style=\"${Style_1.Style.SUPERIMPOSE}\">`, `<sup style=\"${Style_1.Style.SUPERIMPOSE_SUP_SUB}\">${line.over}</sup>`, `<sub style=\"${Style_1.Style.SUPERIMPOSE_SUP_SUB}\">${line.under}</sub>`, '</span>');\n                break;\n            default:\n                html.push(line.value);\n        }\n    }\n    return html.join('');\n}\n//# sourceMappingURL=toHtml.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ensureCase = ensureCase;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst elements = new Set(Object.keys(chemical_elements_1.elementsObject).sort((a, b) => b.length - a.length));\n/**\n * Ensure that the mf has been entered with capital letters and not only lowercase\n * If there is only lowercase we try to capitalize the mf\n * @param {string} mf\n */\nfunction ensureCase(mf) {\n    for (let i = 0; i < mf.length; i++) {\n        // eslint-disable-next-line unicorn/prefer-code-point\n        if (mf.charCodeAt(i) > 64 && mf.charCodeAt(i) < 91) {\n            return mf;\n        }\n    }\n    let parts = mf.replaceAll(/([a-z]*)([^a-z]*)/g, '$1 $2 ').split(/ +/);\n    for (let i = 0; i < parts.length; i++) {\n        if (parts[i].match(/^[a-z]$/)) {\n            parts[i] = parts[i].toUpperCase();\n        }\n        else if (parts[i].match(/^[a-z]+$/)) {\n            let newPart = '';\n            for (let j = 0; j < parts[i].length; j++) {\n                let two = parts[i].slice(j, j + 2);\n                let one = parts[i].charAt(j).toUpperCase();\n                if (['c', 'h', 'o', 'n'].includes(two.charAt(0)) &&\n                    ['h', 'o', 'n'].includes(two.charAt(1))) {\n                    newPart += two.toUpperCase();\n                    j++;\n                }\n                else {\n                    two = two.charAt(0).toUpperCase() + two.charAt(1);\n                    if (elements.has(two)) {\n                        newPart += two;\n                        j++;\n                    }\n                    else if (elements.has(one)) {\n                        newPart += one;\n                    }\n                    else {\n                        return mf;\n                    }\n                }\n            }\n            parts[i] = newPart;\n        }\n    }\n    return parts.join('');\n}\n//# sourceMappingURL=ensureCase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatten = flatten;\n/**\n * @param parsed\n * @param options\n * @return {string[]}\n */\nfunction flatten(parsed, options = {}) {\n    const { groupIdentical = false, limit = 100000 } = options;\n    if (parsed.length === 0)\n        return [''];\n    let parts = [];\n    let parenthesisLevel = 0;\n    let currentPart;\n    let comments = [];\n    for (const entry of parsed) {\n        if ((entry.kind === 'atom' ||\n            entry.kind === 'charge' ||\n            entry.kind === 'isotope' ||\n            entry.kind === 'openingParenthesis' ||\n            !currentPart) &&\n            parenthesisLevel === 0) {\n            currentPart = {\n                mf: '',\n                min: 1,\n                max: 1,\n            };\n            parts.push(currentPart);\n        }\n        switch (entry.kind) {\n            case 'atom':\n                currentPart.mf += entry.value;\n                break;\n            case 'isotope':\n                currentPart.mf += `[${entry.value.isotope}${entry.value.atom}]`;\n                break;\n            case 'multiplier':\n                currentPart.mf += entry.value;\n                break;\n            case 'multiplierRange':\n                if (parenthesisLevel !== 0) {\n                    throw new Error('Range definition inside parenthesis is not allowed.');\n                }\n                currentPart.min = entry.value.from;\n                currentPart.max = entry.value.to;\n                break;\n            case 'openingParenthesis':\n                parenthesisLevel++;\n                currentPart.mf += entry.value;\n                break;\n            case 'charge':\n                if (entry.value === 1) {\n                    currentPart.mf += '+';\n                }\n                else if (entry.value > 1) {\n                    currentPart.mf += `(+${entry.value})`;\n                }\n                else if (entry.value < 0) {\n                    currentPart.mf += `(${entry.value})`;\n                }\n                break;\n            case 'closingParenthesis':\n                parenthesisLevel--;\n                currentPart.mf += entry.value;\n                break;\n            case 'comment':\n                comments.push(entry.value);\n                break;\n            case 'text':\n                break;\n            default:\n                throw new Error(`Could not flatten the parsed MF. Unknown kind: ${entry.kind}`);\n        }\n    }\n    if (groupIdentical) {\n        parts = optimizeRanges(parts);\n    }\n    const mfs = createMFs(parts, comments.join(' '), limit);\n    return mfs;\n}\n/**\n * If we have many times the same mf we can combine them\n * This should only be applied if there are acutally some ranges\n */\nfunction optimizeRanges(parts) {\n    let newParts = [];\n    let mfsObject = {};\n    let hasRange = false;\n    for (const mf of parts) {\n        if (mf.min !== mf.max) {\n            hasRange = true;\n            break;\n        }\n    }\n    if (!hasRange)\n        return parts;\n    for (const mf of parts) {\n        if (!mfsObject[mf.mf]) {\n            mfsObject[mf.mf] = {\n                mf: mf.mf,\n                min: mf.min,\n                max: mf.max,\n            };\n            newParts.push(mfsObject[mf.mf]);\n        }\n        else {\n            mfsObject[mf.mf].min = mfsObject[mf.mf].min + mf.min;\n            mfsObject[mf.mf].max = mfsObject[mf.mf].max + mf.max;\n        }\n    }\n    return newParts;\n}\nfunction createMFs(parts, comment, limit) {\n    const currents = new Array(parts.length);\n    for (let i = 0; i < currents.length; i++) {\n        currents[i] = parts[i].min;\n    }\n    /** @type {string[]} */\n    const mfs = [];\n    let position = 0;\n    while (position < currents.length) {\n        if (currents[position] < parts[position].max) {\n            mfs.push(getMF(parts, currents, comment));\n            currents[position]++;\n            for (let i = 0; i < position; i++) {\n                currents[i] = parts[i].min;\n            }\n            position = 0;\n        }\n        else {\n            position++;\n        }\n        if (mfs.length > limit) {\n            throw new Error(`MF.flatten generates too many fragments (over ${limit})`);\n        }\n    }\n    mfs.push(getMF(parts, currents, comment));\n    return mfs;\n}\nfunction getMF(parts, currents, comment) {\n    let mf = '';\n    for (let i = 0; i < parts.length; i++) {\n        if (currents[i] === 0) {\n            continue;\n        }\n        mf += parts[i].mf;\n        if (currents[i] !== 1) {\n            mf += currents[i];\n        }\n    }\n    if (comment)\n        mf += `$${comment}`;\n    return mf;\n}\n//# sourceMappingURL=flatten.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIsotopeRatioInfo = getIsotopeRatioInfo;\nconst chemical_elements_1 = require(\"chemical-elements\");\nfunction getIsotopeRatioInfo(value) {\n    let result = { mass: 0, monoisotopicMass: 0 };\n    let element = chemical_elements_1.elementsAndStableIsotopesObject[value.atom];\n    if (!element)\n        throw new Error(`Element not found: ${value.atom}`);\n    let isotopesArray = element.isotopes;\n    let ratios = normalize(value.ratio);\n    let max = Math.max(...ratios);\n    if (ratios.length > isotopesArray.length) {\n        throw new Error(`the number of specified ratios is bigger that the number of stable isotopes: ${value.atom}`);\n    }\n    for (let i = 0; i < ratios.length; i++) {\n        result.mass += ratios[i] * isotopesArray[i].mass;\n        if (max === ratios[i] && result.monoisotopicMass === 0) {\n            result.monoisotopicMass = isotopesArray[i].mass;\n        }\n    }\n    return result;\n}\nfunction normalize(array) {\n    let sum = array.reduce((prev, current) => prev + current, 0);\n    return array.map((a) => a / sum);\n}\n//# sourceMappingURL=getIsotopeRatioInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEA = getEA;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst Kind_1 = require(\"../Kind\");\nconst getIsotopeRatioInfo_1 = require(\"./getIsotopeRatioInfo\");\n/**\n * @param {*} parts\n */\nfunction getEA(parts) {\n    let results = {};\n    for (let part of parts) {\n        for (let line of part) {\n            switch (line.kind) {\n                case Kind_1.Kind.ISOTOPE: {\n                    let isotope = chemical_elements_1.isotopesObject[line.value.isotope + line.value.atom];\n                    if (!isotope) {\n                        throw new Error(`Unknown isotope: ${line.value.isotope}${line.value.atom}`);\n                    }\n                    addMass(results, line.value.atom, isotope.mass * line.multiplier);\n                    break;\n                }\n                case Kind_1.Kind.ISOTOPE_RATIO: {\n                    let isotopeRatioInfo = (0, getIsotopeRatioInfo_1.getIsotopeRatioInfo)(line.value);\n                    addMass(results, line.value.atom, isotopeRatioInfo.mass * line.multiplier);\n                    break;\n                }\n                case Kind_1.Kind.ATOM: {\n                    let element = chemical_elements_1.elementsObject[line.value];\n                    if (!element) {\n                        element = chemical_groups_1.groupsObject[line.value];\n                        if (!element)\n                            throw new Error(`Unknown element: ${line.value}`);\n                        // need to explode group ????\n                    }\n                    addMass(results, line.value, element.mass * line.multiplier);\n                    break;\n                }\n                case Kind_1.Kind.CHARGE:\n                    break;\n                default:\n                    throw new Error('partToMF unhandled Kind: ', line.kind);\n            }\n        }\n    }\n    let eas = [];\n    let sum = 0;\n    for (let key in results) {\n        sum += results[key];\n        eas.push({\n            element: key,\n            mass: results[key],\n        });\n    }\n    for (const ea of eas) {\n        ea.ratio = ea.mass / sum;\n    }\n    return eas;\n}\nfunction addMass(results, atom, mass) {\n    if (!results[atom])\n        results[atom] = 0;\n    results[atom] += mass;\n}\n//# sourceMappingURL=getEA.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getElements = getElements;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst Kind_1 = require(\"../Kind\");\n/**\n * @param {*} parts\n */\nfunction getElements(parts) {\n    const elements = [];\n    for (const part of parts) {\n        for (const line of part) {\n            let number = line.multiplier;\n            switch (line.kind) {\n                case Kind_1.Kind.ATOM: {\n                    let symbol = line.value;\n                    let element = chemical_elements_1.elementsObject[symbol];\n                    if (!element) {\n                        throw new Error(`element unknown: ${symbol} - ${line}`);\n                    }\n                    addElement(elements, { symbol, number });\n                    break;\n                }\n                case Kind_1.Kind.ISOTOPE: {\n                    let element = chemical_elements_1.elementsAndIsotopesObject[line.value.atom];\n                    if (!element) {\n                        throw new Error(`element unknown: ${part.value.atom} - ${line}`);\n                    }\n                    let isotope = element.isotopes.find((a) => a.nominal === line.value.isotope);\n                    if (!isotope) {\n                        throw new Error(`isotope unknown: ${line.value.isotope} - ${line}`);\n                    }\n                    addElement(elements, {\n                        symbol: line.value.atom,\n                        number,\n                        isotope: line.value.isotope,\n                    });\n                    break;\n                }\n                default:\n                    throw new Error(`unknown type: ${line.kind}`);\n            }\n        }\n    }\n    return elements;\n}\nfunction addElement(elements, newElement) {\n    for (let element of elements) {\n        if (element.symbol === newElement.symbol &&\n            element.isotope === newElement.isotope) {\n            element.number += newElement.number;\n            return;\n        }\n    }\n    elements.push(newElement);\n}\n//# sourceMappingURL=getElements.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNumberOfIsotopologues = getNumberOfIsotopologues;\nconst chemical_elements_1 = require(\"chemical-elements\");\n/**\n * Returns the theoretical number of isotopologues for a given MF based on stable isotopes for each element.\n * This method will not take into account possible non natural isotopic composition (e.g. 13C enrichment)\n * If one element does not have any stable isotope, the result will be 0.\n * @param atoms\n * @returns\n */\nfunction getNumberOfIsotopologues(atoms) {\n    if (Object.keys(atoms).length === 0) {\n        return 0;\n    }\n    let result = 1;\n    for (const atom in atoms) {\n        const nbIsotopes = chemical_elements_1.elementsAndStableIsotopesObject[atom]?.isotopes.length;\n        if (!nbIsotopes) {\n            return 0;\n        }\n        const nbAtoms = atoms[atom];\n        result *= getNbCombinationsPerAtom(nbAtoms, nbIsotopes);\n    }\n    return result;\n}\n/**\n * Returns the number of isotopologues for one specific atom\n *\n * @param nbAtoms\n * @param nbIsotopes\n * @returns\n */\nfunction getNbCombinationsPerAtom(nbAtoms, nbIsotopes) {\n    let result = 1;\n    for (let i = nbAtoms + 1; i < nbAtoms + nbIsotopes; i++) {\n        result *= i;\n    }\n    for (let i = 2; i < nbIsotopes; i++) {\n        result /= i;\n    }\n    return result;\n}\n//# sourceMappingURL=getNumberOfIsotopologues.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partToAtoms = partToAtoms;\nconst Kind_js_1 = require(\"../Kind.js\");\n/** @typedef {import('./partToAtoms.types').AtomsMap} AtomsMap */\n/**\n * Convert a MF part to a map of atoms\n * This procedure will suppress the isotopes !\n * This is mainly used to make queries\n * @returns {AtomsMap}\n */\nfunction partToAtoms(part) {\n    /** @type {AtomsMap} */\n    const atoms = {};\n    for (let line of part) {\n        switch (line.kind) {\n            case Kind_js_1.Kind.ISOTOPE:\n                if (!atoms[line.value.atom])\n                    atoms[line.value.atom] = 0;\n                atoms[line.value.atom] += line.multiplier;\n                break;\n            case Kind_js_1.Kind.ISOTOPE_RATIO:\n                if (!atoms[line.value.atom])\n                    atoms[line.value.atom] = 0;\n                atoms[line.value.atom] += line.multiplier;\n                break;\n            case Kind_js_1.Kind.ATOM:\n                if (!atoms[line.value])\n                    atoms[line.value] = 0;\n                atoms[line.value] += line.multiplier;\n                break;\n            case Kind_js_1.Kind.CHARGE:\n                break;\n            case Kind_js_1.Kind.ANCHOR:\n                break;\n            default:\n                throw new Error('partToMF unhandled Kind: ', line.kind);\n        }\n    }\n    return atoms;\n}\n//# sourceMappingURL=partToAtoms.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partToMF = partToMF;\nconst Kind_1 = require(\"../Kind\");\nfunction partToMF(part, options = {}) {\n    let mf = [];\n    for (let line of part) {\n        switch (line.kind) {\n            case Kind_1.Kind.ISOTOPE:\n                if (line.multiplier !== 0) {\n                    mf.push(`[${line.value.isotope}${line.value.atom}]${line.multiplier !== 1 ? line.multiplier : ''}`);\n                }\n                break;\n            case Kind_1.Kind.ISOTOPE_RATIO:\n                if (line.multiplier !== 0) {\n                    mf.push(`${line.value.atom}{${line.value.ratio.join(',')}}${line.multiplier !== 1 ? line.multiplier : ''}`);\n                }\n                break;\n            case Kind_1.Kind.ATOM:\n                if (line.multiplier !== 0) {\n                    mf.push(line.value + (line.multiplier !== 1 ? line.multiplier : ''));\n                }\n                break;\n            case Kind_1.Kind.CHARGE:\n                if (line.value === 0 || options.neutral)\n                    break;\n                mf.push(`(${line.value > 0 ? `+${line.value}` : line.value})`);\n                break;\n            default:\n        }\n    }\n    return mf.join('');\n}\n//# sourceMappingURL=partToMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInfoInternal = getInfoInternal;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst Kind_1 = require(\"../Kind\");\nconst getIsotopeRatioInfo_1 = require(\"./getIsotopeRatioInfo\");\nconst getNumberOfIsotopologues_1 = require(\"./getNumberOfIsotopologues\");\nconst partToAtoms_1 = require(\"./partToAtoms\");\nconst partToMF_1 = require(\"./partToMF\");\n/** @typedef {import('./getInfo.types').MFInfo} MFInfo */\n/** @typedef {import('./getInfo.types').MFInfoWithParts} MFInfoWithParts */\n/**\n *\n * @param {*} parts\n * @param {*} [options={}]\n * @returns {object|MFInfo|MFInfoWithParts}\n */\nfunction getInfoInternal(parts, options = {}) {\n    let { customUnsaturations = {}, emFieldName = 'monoisotopicMass', msemFieldName = 'observedMonoisotopicMass', } = options;\n    if (parts.length === 0)\n        return {};\n    if (parts.length === 1) {\n        let oneResult = getProcessedPart(parts[0], {\n            customUnsaturations,\n            emFieldName,\n            msemFieldName,\n        });\n        oneResult.nbIsotopologues = (0, getNumberOfIsotopologues_1.getNumberOfIsotopologues)(oneResult.atoms);\n        return oneResult;\n    }\n    let result = { parts: [] };\n    for (let part of parts) {\n        result.parts.push(getProcessedPart(part, {\n            customUnsaturations,\n            emFieldName,\n            msemFieldName,\n        }));\n    }\n    result[emFieldName] = 0;\n    result.mass = 0;\n    result.charge = 0;\n    result.unsaturation = 0;\n    result.atoms = {};\n    result.mf = result.parts.map((a) => a.mf).join('.');\n    for (const part of result.parts) {\n        result.mass += part.mass;\n        result[emFieldName] += part[emFieldName];\n        result.charge += part.charge;\n        result.unsaturation += part.unsaturation;\n        for (const atom in part.atoms) {\n            if (!result.atoms[atom]) {\n                result.atoms[atom] = 0;\n            }\n            result.atoms[atom] += part.atoms[atom];\n        }\n    }\n    result.nbIsotopologues = (0, getNumberOfIsotopologues_1.getNumberOfIsotopologues)(result.atoms);\n    return result;\n}\nfunction getProcessedPart(part, options) {\n    let { customUnsaturations, emFieldName, msemFieldName } = options;\n    /** @type {MFInfo} */\n    let currentPart = {\n        mass: 0,\n        charge: 0,\n        mf: '',\n        atoms: (0, partToAtoms_1.partToAtoms)(part),\n    };\n    currentPart[emFieldName] = 0;\n    let unsaturation = 0;\n    let validUnsaturation = true;\n    currentPart.mf = (0, partToMF_1.partToMF)(part);\n    for (let line of part) {\n        let currentElement = '';\n        switch (line.kind) {\n            case Kind_1.Kind.ATOM: {\n                currentElement = line.value;\n                let element = chemical_elements_1.elementsAndIsotopesObject[line.value];\n                // todo should we have a kind GROUP ?\n                if (!element) {\n                    element = chemical_groups_1.groupsObject[line.value];\n                    if (!element)\n                        throw new Error(`Unknown element: ${line.value}`);\n                    if (!customUnsaturations[line.value]) {\n                        customUnsaturations[line.value] = element.unsaturation;\n                    }\n                }\n                if (!element)\n                    throw new Error(`Unknown element: ${line.value}`);\n                currentPart[emFieldName] += element.monoisotopicMass * line.multiplier;\n                currentPart.mass += element.mass * line.multiplier;\n                break;\n            }\n            case Kind_1.Kind.ISOTOPE: {\n                currentElement = line.value.atom;\n                let isotope = chemical_elements_1.isotopesObject[line.value.isotope + line.value.atom];\n                if (!isotope) {\n                    throw new Error(`Unknown isotope: ${line.value.isotope}${line.value.atom}`);\n                }\n                currentPart[emFieldName] += isotope.mass * line.multiplier;\n                currentPart.mass += isotope.mass * line.multiplier;\n                break;\n            }\n            case Kind_1.Kind.ISOTOPE_RATIO: {\n                currentElement = line.value.atom;\n                let isotopeRatioInfo = (0, getIsotopeRatioInfo_1.getIsotopeRatioInfo)(line.value);\n                currentPart[emFieldName] +=\n                    isotopeRatioInfo[emFieldName] * line.multiplier;\n                currentPart.mass += isotopeRatioInfo.mass * line.multiplier;\n                break;\n            }\n            case Kind_1.Kind.CHARGE:\n                currentPart.charge = line.value;\n                if (validUnsaturation) {\n                    unsaturation -= line.value;\n                }\n                break;\n            default:\n                throw new Error('Unimplemented Kind in getInfo', line.kind);\n        }\n        if (currentElement) {\n            if (customUnsaturations[currentElement] !== undefined) {\n                unsaturation += customUnsaturations[currentElement] * line.multiplier;\n            }\n            else if (chemical_elements_1.unsaturationsObject[currentElement] !== undefined) {\n                unsaturation += chemical_elements_1.unsaturationsObject[currentElement] * line.multiplier;\n            }\n            else {\n                validUnsaturation = false;\n            }\n        }\n    }\n    // need to calculate the observedMonoisotopicMass\n    if (currentPart.charge) {\n        currentPart[msemFieldName] =\n            (currentPart[emFieldName] - currentPart.charge * chemical_elements_1.ELECTRON_MASS) /\n                Math.abs(currentPart.charge);\n    }\n    if (validUnsaturation) {\n        currentPart.unsaturation = unsaturation / 2 + 1;\n    }\n    return currentPart;\n}\n//# sourceMappingURL=getInfoInternal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIsotopesInfo = getIsotopesInfo;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst Kind_1 = require(\"../Kind\");\n/** @typedef {import('./getIsotopesInfo.types').IsotopesInfo} IsotopesInfo\n\n/**\n *\n * @param {*} parts\n * @returns {[]|IsotopesInfo}\n */\nfunction getIsotopesInfo(parts) {\n    if (parts.length === 0)\n        return [];\n    if (parts.length > 1) {\n        throw new Error('getIsotopesInfo can not be applied on multipart MF');\n    }\n    return getProcessedPart(parts[0]);\n}\n/**\n * @returns {IsotopesInfo}\n */\nfunction getProcessedPart(part) {\n    /** @type {IsotopesInfo} */\n    let result = {\n        charge: 0,\n        isotopes: [],\n    };\n    for (let line of part) {\n        switch (line.kind) {\n            case Kind_1.Kind.ISOTOPE: {\n                let isotope = chemical_elements_1.isotopesObject[line.value.isotope + line.value.atom];\n                if (!isotope) {\n                    throw new Error('unknown isotope:', line.value.atom, line.value.isotope);\n                }\n                result.isotopes.push({\n                    atom: line.value.atom,\n                    number: line.multiplier,\n                    distribution: [{ x: isotope.mass, y: 1 }],\n                });\n                break;\n            }\n            case Kind_1.Kind.ISOTOPE_RATIO:\n                {\n                    let element = chemical_elements_1.elementsAndStableIsotopesObject[line.value.atom];\n                    if (!element)\n                        throw new Error('unknown element:', line.value);\n                    let distribution = getDistribution(element.isotopes, line.value.ratio);\n                    result.isotopes.push({\n                        atom: line.value.atom,\n                        number: line.multiplier,\n                        distribution,\n                    });\n                }\n                break;\n            case Kind_1.Kind.ATOM: {\n                let element = chemical_elements_1.elementsAndStableIsotopesObject[line.value];\n                if (!element)\n                    throw new Error('unknown element:', line.value);\n                result.isotopes.push({\n                    atom: line.value,\n                    number: line.multiplier,\n                    distribution: element.isotopes.map((e) => ({\n                        x: e.mass,\n                        y: e.abundance,\n                    })),\n                });\n                break;\n            }\n            case Kind_1.Kind.CHARGE:\n                result.charge += line.value;\n                break;\n            default:\n                throw new Error('partToMF unhandled Kind: ', line.kind);\n        }\n    }\n    return result;\n}\nfunction getDistribution(isotopesArray, ratio) {\n    let ratios = normalize(ratio);\n    let result = [];\n    if (ratios.length > isotopesArray.length) {\n        throw new Error(`the number of specified ratios is bigger that the number of stable isotopes: ${chemical_elements_1.isotopesObject}`);\n    }\n    for (let i = 0; i < ratios.length; i++) {\n        result.push({\n            x: isotopesArray[i].mass,\n            y: ratios[i],\n        });\n    }\n    return result;\n}\nfunction normalize(array) {\n    let sum = array.reduce((prev, current) => prev + current, 0);\n    return array.map((a) => a / sum);\n}\n//# sourceMappingURL=getIsotopesInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partsToDisplay = partsToDisplay;\nconst Kind_1 = require(\"../Kind\");\nconst toDisplay_js_1 = require(\"./toDisplay.js\");\n/**\n * Converts an array of mf elements to an array of formatting information\n * @param {Array<Object>} result of the parse method\n */\nfunction partsToDisplay(parts) {\n    let lines = [];\n    for (let part of parts) {\n        if (lines.length > 0)\n            lines.push({ kind: Kind_1.Kind.SALT, value: '•' });\n        for (let partLine of part) {\n            lines.push(partLine);\n            if (partLine.multiplier) {\n                lines.push({\n                    kind: Kind_1.Kind.MULTIPLIER,\n                    value: partLine.multiplier,\n                });\n            }\n        }\n    }\n    return (0, toDisplay_js_1.toDisplay)(lines);\n}\n//# sourceMappingURL=partsToDisplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partsToMF = partsToMF;\nconst partToMF_1 = require(\"./partToMF\");\nfunction partsToMF(parts, options) {\n    let mf = [];\n    for (let part of parts) {\n        mf.push((0, partToMF_1.partToMF)(part, options));\n    }\n    return mf.join(' . ');\n}\n//# sourceMappingURL=partsToMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.atomSorter = atomSorter;\n/**\n * Implementation of the Hill system for sorting atoms\n * https://en.wikipedia.org/wiki/Chemical_formula#Hill_system\n * @param a - first atom to compare\n * @param b - second atom to compare\n * @returns A value suitable for use in Array.prototype.sort.\n */\nfunction atomSorter(a, b) {\n    if (a === b)\n        return 0;\n    if (a === 'C')\n        return -1;\n    if (b === 'C')\n        return 1;\n    if (a === 'H')\n        return -1;\n    if (b === 'H')\n        return 1;\n    if (a < b)\n        return -1;\n    return 1;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toParts = toParts;\nconst atom_sorter_1 = require(\"atom-sorter\");\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst Kind_1 = require(\"../Kind\");\n/**\n *\n * @param {*} lines\n * @param {object} [options={}]\n * @param {boolean} [options.expand=true] - Should we expand the groupsObject\n */\nfunction toParts(lines, options = {}) {\n    const { expand: shouldExpandgroupsObject = true } = options;\n    let parts = [];\n    let currentPart = createNewPart();\n    let previousKind = Kind_1.Kind.BEGIN;\n    parts.push(currentPart);\n    for (let line of lines) {\n        switch (line.kind) {\n            case Kind_1.Kind.ATOM:\n            case Kind_1.Kind.ISOTOPE_RATIO:\n            case Kind_1.Kind.ISOTOPE:\n            case Kind_1.Kind.CHARGE:\n                currentPart.lines.push({ ...line, multiplier: 1 });\n                break;\n            case Kind_1.Kind.OPENING_PARENTHESIS:\n                openingParenthesis(currentPart);\n                break;\n            case Kind_1.Kind.CLOSING_PARENTHESIS:\n                closingParenthesis(currentPart);\n                break;\n            case Kind_1.Kind.PRE_MULTIPLIER:\n                preMultiplier(currentPart, line);\n                break;\n            case Kind_1.Kind.MULTIPLIER:\n                postMultiplier(currentPart, line.value, previousKind);\n                break;\n            case Kind_1.Kind.SALT:\n                globalPartMultiplier(currentPart);\n                currentPart = createNewPart();\n                parts.push(currentPart);\n                break;\n            case Kind_1.Kind.ANCHOR: // we ignore anchors to create the parts and canonized MF\n                break;\n            case Kind_1.Kind.COMMENT: // we ignore comments to create the parts and canonized MF\n                break;\n            case Kind_1.Kind.TEXT:\n                break;\n            default:\n                throw new Error(`Can not process mf having: ${line.kind}`);\n        }\n        previousKind = line.kind;\n    }\n    globalPartMultiplier(currentPart);\n    if (shouldExpandgroupsObject)\n        expandgroupsObject(parts);\n    return combineAtomsIsotopesCharges(parts);\n}\nfunction createNewPart() {\n    let currentMultiplier = { value: 1, fromIndex: 0 };\n    return { lines: [], multipliers: [currentMultiplier], currentMultiplier };\n}\nfunction openingParenthesis(currentPart) {\n    currentPart.currentMultiplier = {\n        value: 1,\n        fromIndex: currentPart.lines.length,\n    };\n    currentPart.multipliers.push(currentPart.currentMultiplier);\n}\nfunction closingParenthesis(currentPart) {\n    currentPart.currentMultiplier = currentPart.multipliers.pop();\n    if (currentPart.currentMultiplier !== 1) {\n        for (let i = currentPart.currentMultiplier.fromIndex; i < currentPart.lines.length; i++) {\n            currentPart.lines[i].multiplier *= currentPart.currentMultiplier.value;\n        }\n    }\n}\nfunction preMultiplier(currentPart, line) {\n    currentPart.currentMultiplier.value *= line.value;\n}\nfunction globalPartMultiplier(currentPart) {\n    for (let i = currentPart.multipliers[0].fromIndex; i < currentPart.lines.length; i++) {\n        currentPart.lines[i].multiplier *= currentPart.multipliers[0].value;\n    }\n}\nfunction postMultiplier(currentPart, value, previousKind) {\n    if (previousKind === Kind_1.Kind.CLOSING_PARENTHESIS) {\n        // need to apply to everything till the previous parenthesis\n        for (let i = currentPart.currentMultiplier.fromIndex; i < currentPart.lines.length; i++) {\n            currentPart.lines[i].multiplier *= value;\n        }\n    }\n    else {\n        // just applies to the previous element\n        currentPart.lines.at(-1).multiplier *= value;\n    }\n}\nfunction expandgroupsObject(parts) {\n    for (let part of parts) {\n        let expanded = false;\n        for (let i = 0; i < part.lines.length; i++) {\n            let line = part.lines[i];\n            if (line.kind === Kind_1.Kind.ATOM) {\n                let group = chemical_groups_1.groupsObject[line.value];\n                if (group) {\n                    expanded = true;\n                    for (let element of group.elements) {\n                        if (element.isotope) {\n                            part.lines.push({\n                                kind: 'isotope',\n                                value: { atom: element.symbol, isotope: element.isotope },\n                                multiplier: line.multiplier * element.number,\n                            });\n                        }\n                        else {\n                            part.lines.push({\n                                kind: 'atom',\n                                value: element.symbol,\n                                multiplier: line.multiplier * element.number,\n                            });\n                        }\n                    }\n                    part.lines[i] = undefined;\n                }\n            }\n        }\n        if (expanded)\n            part.lines = part.lines.filter(Boolean);\n    }\n}\nfunction combineAtomsIsotopesCharges(parts) {\n    let results = [];\n    for (let part of parts) {\n        let result = [];\n        results.push(result);\n        calculateAndSortKeys(part);\n        let currentKey = '';\n        for (let key of part.keys) {\n            if (key.key === Kind_1.Kind.CHARGE) {\n                if (currentKey !== key.key) {\n                    result.push({\n                        kind: Kind_1.Kind.CHARGE,\n                        value: key.value.value * key.value.multiplier,\n                    });\n                }\n                else {\n                    result.at(-1).value += key.value.value * key.value.multiplier;\n                }\n            }\n            else if (currentKey !== key.key) {\n                result.push(key.value);\n            }\n            else {\n                result.at(-1).multiplier += key.value.multiplier;\n            }\n            currentKey = key.key;\n        }\n        result.sort((a, b) => {\n            if (a.kind === Kind_1.Kind.CHARGE)\n                return 1;\n            if (b.kind === Kind_1.Kind.CHARGE)\n                return -1;\n            let atomA = a.kind === Kind_1.Kind.ATOM ? a.value : a.value.atom;\n            let atomB = b.kind === Kind_1.Kind.ATOM ? b.value : b.value.atom;\n            if (atomA !== atomB)\n                return (0, atom_sorter_1.atomSorter)(atomA, atomB);\n            // same atome but some isotopes ...\n            if (a.kind === Kind_1.Kind.ATOM)\n                return -1;\n            if (b.kind === Kind_1.Kind.ATOM)\n                return 1;\n            if (a.kind === Kind_1.Kind.ISOTOPE)\n                return -1;\n            if (b.kind === Kind_1.Kind.ISOTOPE)\n                return 1;\n            if (a.kind === Kind_1.Kind.ISOTOPE_RATIO)\n                return -1;\n            if (b.kind === Kind_1.Kind.ISOTOPE_RATIO)\n                return 1;\n            return 0;\n        });\n    }\n    return results;\n}\nfunction calculateAndSortKeys(part) {\n    part.keys = [];\n    for (let line of part.lines) {\n        part.keys.push({ key: getKey(line), value: line });\n    }\n    part.keys.sort((a, b) => stringComparator(a.key, b.key));\n}\nfunction getKey(line) {\n    let key = [line.kind];\n    switch (line.kind) {\n        case Kind_1.Kind.CHARGE:\n            break;\n        default:\n            if (typeof line.value === 'string') {\n                key.push(line.value);\n            }\n            else {\n                for (let prop of Object.keys(line.value).sort()) {\n                    key.push(line.value[prop]);\n                }\n            }\n    }\n    return key.join('-');\n}\nfunction stringComparator(a, b) {\n    if (a < b)\n        return -1;\n    if (a > b)\n        return 1;\n    return 0;\n}\n//# sourceMappingURL=toParts.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toText = toText;\nconst Format_1 = require(\"../Format\");\nconst subSuperscript_1 = require(\"./subSuperscript\");\nfunction toText(lines) {\n    let text = [];\n    for (let line of lines) {\n        switch (line.kind) {\n            case Format_1.Format.SUBSCRIPT:\n                {\n                    const value = String(line.value);\n                    for (let i = 0; i < value.length; i++) {\n                        const char = value[i];\n                        if (subSuperscript_1.subscript[char]) {\n                            text.push(subSuperscript_1.subscript[char]);\n                        }\n                        else {\n                            throw new Error(`Subscript problem with: ${char}`);\n                        }\n                    }\n                }\n                break;\n            case Format_1.Format.SUPERSCRIPT: {\n                const value = String(line.value);\n                for (let i = 0; i < value.length; i++) {\n                    const char = value[i];\n                    if (subSuperscript_1.superscript[char]) {\n                        text.push(subSuperscript_1.superscript[char]);\n                    }\n                    else {\n                        throw new Error(`Superscript problem with: ${char}`);\n                    }\n                }\n                break;\n            }\n            case Format_1.Format.SUPERIMPOSE: {\n                const under = String(line.under);\n                for (let i = 0; i < under.length; i++) {\n                    const char = under[i];\n                    if (subSuperscript_1.subscript[char]) {\n                        text.push(subSuperscript_1.subscript[char]);\n                    }\n                    else {\n                        throw new Error(`Subscript problem with: ${char}`);\n                    }\n                }\n                const over = String(line.over);\n                for (let i = 0; i < over.length; i++) {\n                    const char = over[i];\n                    if (subSuperscript_1.superscript[char]) {\n                        text.push(subSuperscript_1.superscript[char]);\n                    }\n                    else {\n                        throw new Error(`Superscript problem with: ${char}`);\n                    }\n                }\n                break;\n            }\n            default:\n                text.push(line.value);\n        }\n    }\n    return text.join('');\n}\n//# sourceMappingURL=toText.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MFInternal = void 0;\nconst ensureCase_1 = require(\"./ensureCase\");\nconst parse_1 = require(\"./parse\");\nconst flatten_1 = require(\"./util/flatten\");\nconst getEA_1 = require(\"./util/getEA\");\nconst getElements_1 = require(\"./util/getElements\");\nconst getInfo_1 = require(\"./util/getInfo\");\nconst getIsotopesInfo_1 = require(\"./util/getIsotopesInfo\");\nconst partsToDisplay_1 = require(\"./util/partsToDisplay\");\nconst partsToMF_1 = require(\"./util/partsToMF\");\nconst toDisplay_1 = require(\"./util/toDisplay\");\nconst toHtml_1 = require(\"./util/toHtml\");\nconst toParts_1 = require(\"./util/toParts\");\nconst toText_1 = require(\"./util/toText\");\n/** @typedef {import('./util/getIsotopesInfo.types').IsotopesInfo} IsotopesInfo */\n/** @typedef {import('./util/getInfo.types').MFInfo} MFInfo */\n/** @typedef {import('./util/getInfo.types').MFInfoWithParts} MFInfoWithParts */\n/**\n * Class allowing to deal with molecular formula and derived information\n */\nclass MFInternal {\n    constructor(mf, options = {}) {\n        if (options.ensureCase) {\n            mf = (0, ensureCase_1.ensureCase)(mf);\n        }\n        this.parsed = (0, parse_1.parse)(mf);\n        this.cache = {};\n    }\n    /**\n     * Returns an array of objects with kind and value that can be used to easily\n     * display the molecular formula.\n     * @returns {{kind: string, value: string}[]}\n     */\n    toDisplay() {\n        if (!this.cache.displayed)\n            this.cache.displayed = (0, toDisplay_1.toDisplay)(this.parsed);\n        return this.cache.displayed;\n    }\n    /**\n     * Returns a string that represents the molecular formula adding subscript and superscript in HTML.\n     * @returns {string}\n     */\n    toHtml() {\n        if (!this.cache.html) {\n            this.toDisplay();\n            this.cache.html = (0, toHtml_1.toHtml)(this.cache.displayed);\n        }\n        return this.cache.html;\n    }\n    /**\n     * Returns a string that represents the molecular formula adding subscript and superscript\n     * using Unicode characters. This can not be parsed anymore so kind of dead end ...\n     * @returns {string}\n     */\n    toText() {\n        if (!this.cache.text) {\n            this.toDisplay();\n            this.cache.text = (0, toText_1.toText)(this.cache.displayed);\n        }\n        return this.cache.text;\n    }\n    /**\n     * Similar to toText but returns a canonic string in which the atoms are sorted using the Hill system\n     * @returns {string}\n     */\n    toCanonicText() {\n        if (!this.cache.canonicText) {\n            this.cache.canonicText = new MFInternal(this.toMF()).toText();\n        }\n        return this.cache.canonicText;\n    }\n    toParts(options) {\n        if (options) {\n            return (0, toParts_1.toParts)(this.parsed, options);\n        }\n        // we don't want to cache the parts if we are using options\n        if (!this.cache.parts) {\n            this.cache.parts = (0, toParts_1.toParts)(this.parsed, options);\n        }\n        return this.cache.parts;\n    }\n    /**\n     * Returns an object with the global MF, global charge, monoisotopic mass and mass\n     * as well as the same information for all the parts\n     * @param {object} [options={}] options\n     * @param {object} [options.customUnsaturations={}] custom unsaturations\n     * @param {string} [options.emFieldName='monoisotopicMass'] name of the monoisotopic mass field\n     * @param {string} [options.msemFieldName='observedMonoisotopicMass'] name of the observed monoisotopic mass field\n     * @returns {MFInfo|MFInfoWithParts}\n     */\n    getInfo(options = {}) {\n        if (!this.cache.info) {\n            this.toParts();\n            this.cache.info = (0, getInfo_1.getInfo)(this.cache.parts, options);\n        }\n        return this.cache.info;\n    }\n    /**\n     * Returns an object with the elemental analysis\n     * @returns {*[]}\n     */\n    getEA() {\n        if (!this.cache.ea) {\n            this.toParts();\n            this.cache.ea = (0, getEA_1.getEA)(this.cache.parts);\n        }\n        return this.cache.ea;\n    }\n    /**\n     * Get the different elements for each part\n     * @returns {*[]}\n     */\n    getElements() {\n        if (!this.cache.elements) {\n            this.toParts();\n            this.cache.elements = (0, getElements_1.getElements)(this.cache.parts);\n        }\n        return this.cache.elements;\n    }\n    /**\n     * Returns an array with each atom and isotopic composition\n     * @returns {IsotopesInfo}\n     */\n    getIsotopesInfo(options = {}) {\n        if (!this.cache.isotopesInfo) {\n            this.toParts();\n            this.cache.isotopesInfo = (0, getIsotopesInfo_1.getIsotopesInfo)(this.cache.parts, options);\n        }\n        return this.cache.isotopesInfo;\n    }\n    /**\n     * Get a canonized MF\n     * @returns {string}\n     */\n    toMF() {\n        if (!this.cache.mf) {\n            this.toParts();\n            this.cache.mf = (0, partsToMF_1.partsToMF)(this.cache.parts);\n        }\n        return this.cache.mf;\n    }\n    /**\n     * Get a canonized MF\n     * @returns {string}\n     */\n    toNeutralMF() {\n        if (!this.cache.neutralMF) {\n            this.toParts();\n            this.cache.neutralMF = (0, partsToMF_1.partsToMF)(this.cache.parts, { neutral: true });\n        }\n        return this.cache.neutralMF;\n    }\n    canonize() {\n        this.toParts();\n        this.cache.displayed = (0, partsToDisplay_1.partsToDisplay)(this.cache.parts);\n        this.cache.html = undefined;\n    }\n    flatten(options) {\n        return (0, flatten_1.flatten)(this.parsed, options);\n    }\n}\nexports.MFInternal = MFInternal;\n//# sourceMappingURL=MFInternal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MF = void 0;\nconst MFInternal_1 = require(\"./MFInternal\");\nclass MF {\n    internal;\n    constructor(mf, options = {}) {\n        this.internal = new MFInternal_1.MFInternal(mf, options);\n    }\n    /**\n     * Returns an array of objects with kind and value that can be used to easily\n     * display the molecular formula.\n     */\n    toDisplay() {\n        return this.internal.toDisplay();\n    }\n    /**\n     * Returns a string that represents the molecular formula adding subscript and superscript in HTML.\n     */\n    toHtml() {\n        return this.internal.toHtml();\n    }\n    /**\n     * Returns a string that represents the molecular formula adding subscript and superscript\n     * using Unicode characters. This can not be parsed anymore so kind of dead end ...\n     */\n    toText() {\n        return this.internal.toText();\n    }\n    /**\n     * Similar to toText but returns a canonic string in which the atoms are sorted using the Hill system\n     */\n    toCanonicText() {\n        return this.internal.toCanonicText();\n    }\n    toParts(options) {\n        return this.internal.toParts(options);\n    }\n    /**\n     * Returns an object with the global MF, global charge, monoisotopic mass and mass\n     * as well as the same information for all the parts\n     */\n    getInfo(options) {\n        return this.internal.getInfo(options);\n    }\n    /**\n     * Returns an object with the elemental analysis\n     */\n    getEA() {\n        return this.internal.getEA();\n    }\n    /**\n     * Get the different elements for each part\n     */\n    getElements() {\n        return this.internal.getElements();\n    }\n    /**\n     * Returns an array with each atom and isotopic composition\n     */\n    getIsotopesInfo(options = {}) {\n        return this.internal.getIsotopesInfo(options);\n    }\n    /**\n     * Get a canonized parsable Molecule Formula\n     */\n    toMF() {\n        return this.internal.toMF();\n    }\n    /**\n     * Get a canonized MF\n     */\n    toNeutralMF() {\n        return this.internal.toNeutralMF();\n    }\n    canonize() {\n        return this.internal.canonize();\n    }\n    flatten(options) {\n        return this.internal.flatten(options);\n    }\n}\nexports.MF = MF;\n//# sourceMappingURL=MF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseToHtml = parseToHtml;\nconst parse_js_1 = require(\"./parse.js\");\nconst toDisplay_js_1 = require(\"./util/toDisplay.js\");\nconst toHtml_js_1 = require(\"./util/toHtml.js\");\n/**\n * Parse a molecular formula and converts it to an HTML code\n * @param {String} mf String containing the molecular formula\n */\nfunction parseToHtml(mf) {\n    let parsed = (0, parse_js_1.parse)(mf);\n    let display = (0, toDisplay_js_1.toDisplay)(parsed);\n    return (0, toHtml_js_1.toHtml)(display);\n}\n//# sourceMappingURL=parseToHtml.js.map","\"use strict\";\n/**\n * @param {object}   [entry={}]\n * @param {object}   [options={}]\n * @param {number}   [options.min=-Infinity] - Minimal unsaturation\n * @param {number}   [options.max=+Infinity] - Maximal unsaturation\n * @param {boolean}   [options.onlyInteger=false] - Integer unsaturation\n * @param {boolean}   [options.onlyNonInteger=false] - Non integer unsaturation\n * @return {boolean}\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsaturationMatcher = unsaturationMatcher;\nfunction unsaturationMatcher(entry, options = {}) {\n    const { min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER, onlyInteger, onlyNonInteger, } = options;\n    if (entry.unsaturation !== undefined) {\n        if (entry.unsaturation < min || entry.unsaturation > max)\n            return false;\n        if (onlyInteger && !Number.isInteger(entry.unsaturation))\n            return false;\n        if (onlyNonInteger && Number.isInteger(entry.unsaturation))\n            return false;\n    }\n    return true;\n}\n//# sourceMappingURL=unsaturationMatcher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generalMatcher = generalMatcher;\nconst unsaturationMatcher_js_1 = require(\"./unsaturationMatcher.js\");\n/**\n * Returns true if the entry containing MF information match\n * @param {object}   [entry={}] - object containing mw, ...\n * @param {object}   [options={}]\n * @param {number}   [options.minMW=0] - Minimal molecular weight\n * @param {number}   [options.maxMW=+Infinity] - Maximal molecular weight\n * @param {number}   [options.minEM=0] - Minimal monoisotopic mass\n * @param {number}   [options.maxEM=+Infinity] - Maximal monoisotopic mass\n * @param {number}   [options.minCharge=-Infinity] - Minimal charge\n * @param {number}   [options.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}  [options.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object}   [options.unsaturation={}]\n * @param {number}   [options.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}   [options.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean}   [options.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean}   [options.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}   [options.atoms] - object of atom:{min, max}\n * @return {boolean}\n */\nfunction generalMatcher(entry, options = {}) {\n    const { minMW = 0, maxMW = +Infinity, minEM = 0, maxEM = +Infinity, minCharge = Number.MIN_SAFE_INTEGER, maxCharge = Number.MAX_SAFE_INTEGER, absoluteCharge = false, unsaturation = {}, atoms, } = options;\n    if (entry.mw !== undefined && (entry.mw < minMW || entry.mw > maxMW)) {\n        return false;\n    }\n    if (entry.em !== undefined && (entry.em < minEM || entry.em > maxEM)) {\n        return false;\n    }\n    if (entry.charge !== undefined) {\n        let charge = absoluteCharge ? Math.abs(entry.charge) : entry.charge;\n        if (charge < minCharge || charge > maxCharge)\n            return false;\n    }\n    if (unsaturation !== undefined &&\n        entry.unsaturation !== undefined &&\n        !(0, unsaturationMatcher_js_1.unsaturationMatcher)(entry, unsaturation)) {\n        return false;\n    }\n    if (entry.atoms !== undefined && atoms) {\n        // all the atoms of the entry must fit in the range\n        for (let atom in entry.atoms) {\n            if (!atoms[atom])\n                return false;\n            if (entry.atoms[atom] < atoms[atom].min)\n                return false;\n            if (entry.atoms[atom] > atoms[atom].max)\n                return false;\n        }\n    }\n    return true;\n}\n//# sourceMappingURL=generalMatcher.js.map","\"use strict\";\n/**\n * Ensure that the sequence is in uppercase taking into account possible modifications\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ensureUppercaseSequence = ensureUppercaseSequence;\nfunction ensureUppercaseSequence(sequence) {\n    let parenthesisCounter = 0;\n    let parts = [];\n    let part = '';\n    for (let i = 0; i < sequence.length; i++) {\n        let currentSymbol = sequence[i];\n        if (currentSymbol === '(' && parenthesisCounter === 0 && part) {\n            parts.push(part);\n            part = currentSymbol;\n        }\n        else if (currentSymbol === ')' && parenthesisCounter === 0) {\n            part += currentSymbol;\n            parts.push(part);\n            part = '';\n        }\n        else {\n            part += currentSymbol;\n        }\n    }\n    if (part)\n        parts.push(part);\n    for (let i = 0; i < parts.length; i++) {\n        if (!parts[i].startsWith('(') && parts[i].match(/^[a-z]+$/)) {\n            parts[i] = parts[i].toUpperCase();\n        }\n    }\n    return parts.join('');\n}\n//# sourceMappingURL=ensureUppercaseSequence.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEutrophicationPotential = getEutrophicationPotential;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction getEutrophicationPotential(mfString) {\n    let parsed = new mf_parser_1.MF(mfString);\n    let info = parsed.getInfo();\n    let mf = info.mf;\n    let mw = info.mass;\n    let nC = info.atoms.C || 0;\n    let nO = info.atoms.O || 0;\n    let nN = info.atoms.N || 0;\n    let nP = info.atoms.P || 0;\n    let nH = info.atoms.H || 0;\n    let atoms = Object.keys(info.atoms);\n    for (let atom of atoms) {\n        if (!['C', 'H', 'N', 'O', 'P'].includes(atom)) {\n            return {\n                log: `EP can not be calculated because the MF contains the element: ${atom}`,\n            };\n        }\n    }\n    let vRef = 1;\n    let mwRef = 94.97;\n    let thOD = nC + (nH - 3 * nN) / 4 - nO / 2;\n    let v = nP + nN / 16 + thOD / 138;\n    let ep = v / mw / (vRef / mwRef);\n    return {\n        v,\n        thOD,\n        ep,\n        mf,\n        mw,\n        log: 'Successful calculation',\n    };\n}\n//# sourceMappingURL=getEutrophicationPotential.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMsem = getMsem;\nconst chemical_elements_1 = require(\"chemical-elements\");\nfunction getMsem(em, charge) {\n    if (charge > 0) {\n        return em / charge - chemical_elements_1.ELECTRON_MASS;\n    }\n    else if (charge < 0) {\n        return em / (charge * -1) + chemical_elements_1.ELECTRON_MASS;\n    }\n    else {\n        return 0;\n    }\n}\n//# sourceMappingURL=getMsem.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMsInfo = getMsInfo;\nconst getMsem_1 = require(\"./getMsem\");\n/**\n * Returns an object containing:\n * {ms: {em, charge, ionization}, ionization: {}}\n * We return the ionization in order to know which one has been selected\n */\nfunction getMsInfo(entry, options = {}) {\n    const { allowNeutralMolecules, ionization = { mf: '', em: 0, charge: 0 }, forceIonization = false, targetMass, } = options;\n    let realIonization = ionization;\n    if (!forceIonization && entry.ionization && entry.ionization.mf !== '') {\n        realIonization = entry.ionization;\n    }\n    let ms = {\n        ionization: realIonization.mf,\n        em: 0,\n        charge: entry.charge + realIonization.charge,\n    };\n    if (ms.charge !== 0) {\n        ms.em = (0, getMsem_1.getMsem)(entry.em + realIonization.em, ms.charge);\n    }\n    else if (allowNeutralMolecules) {\n        ms.em = entry.em + realIonization.em;\n    }\n    if (targetMass) {\n        ms.delta = targetMass - ms.em;\n        ms.ppm = ((targetMass - ms.em) / ms.em) * 1e6;\n    }\n    return {\n        ms,\n        ionization: realIonization,\n    };\n}\n//# sourceMappingURL=getMsInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRangesForFragment = getRangesForFragment;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction getRangesForFragment(ranges) {\n    ranges = structuredClone(ranges);\n    if (typeof ranges === 'string') {\n        // need to convert to ranges\n        let parsed = (0, mf_parser_1.parse)(ranges.replaceAll(/[\\t\\n\\r ]/g, ''));\n        let newRanges = [];\n        // example ClBr2(CH2)0-2NO\n        // the idea is that as long as we don't have a range we don't really care\n        // there is a limitation is that the range has to be first level of parenthesis\n        let parenthesisLevel = 0;\n        let currentMF = ''; // start at an atom first level or a parenthesis\n        for (let item of parsed) {\n            switch (item.kind) {\n                case mf_parser_1.Kind.ATOM:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        newRanges.push({\n                            mf: currentMF,\n                        });\n                        currentMF = '';\n                    }\n                    currentMF += item.value;\n                    break;\n                case mf_parser_1.Kind.ISOTOPE:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        newRanges.push({\n                            mf: currentMF,\n                        });\n                        currentMF = '';\n                    }\n                    currentMF += `[${item.value.isotope}${item.value.atom}]`;\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        newRanges.push({\n                            mf: currentMF,\n                            max: item.value,\n                        });\n                        currentMF = '';\n                    }\n                    else {\n                        currentMF += item.value;\n                    }\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER_RANGE:\n                    if (parenthesisLevel !== 0) {\n                        throw new Error('Range multiplier can only be at the first level');\n                    }\n                    newRanges.push({\n                        mf: currentMF,\n                        min: item.value.from,\n                        max: item.value.to,\n                    });\n                    currentMF = '';\n                    break;\n                case mf_parser_1.Kind.OPENING_PARENTHESIS:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        newRanges.push({\n                            mf: currentMF,\n                        });\n                        currentMF = '';\n                    }\n                    parenthesisLevel++;\n                    currentMF += '(';\n                    break;\n                case mf_parser_1.Kind.CLOSING_PARENTHESIS:\n                    parenthesisLevel--;\n                    currentMF += ')';\n                    break;\n                default:\n                    throw new Error(`can not preprocess ${ranges}`);\n            }\n        }\n        if (currentMF) {\n            newRanges.push({ mf: currentMF });\n        }\n        ranges = newRanges;\n    }\n    let possibilities = [];\n    for (const range of ranges) {\n        if (range.max === 0)\n            continue;\n        let max = range.max === undefined ? 1 : range.max;\n        possibilities.push(`${range.mf}0-${max}`);\n    }\n    return possibilities.join(' ');\n}\n//# sourceMappingURL=getRangesForFragment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfDiff = mfDiff;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction mfDiff(mfString1, mfString2) {\n    let mf1 = new mf_parser_1.MF(mfString1).getInfo().atoms;\n    let mf2 = new mf_parser_1.MF(mfString2).getInfo().atoms;\n    let atoms = Object.keys(mf1);\n    for (const atom of Object.keys(mf2)) {\n        if (!atoms.includes(atom))\n            atoms.push(atom);\n    }\n    let mf = '';\n    for (let atom of atoms) {\n        let diff = (mf1[atom] || 0) - (mf2[atom] || 0);\n        if (diff)\n            mf += atom + diff;\n    }\n    return new mf_parser_1.MF(mf).toMF();\n}\n//# sourceMappingURL=mfDiff.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.preprocessIonizations = preprocessIonizations;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction preprocessIonizations(ionizationsString = '') {\n    if (Array.isArray(ionizationsString))\n        return ionizationsString;\n    const ionizations = ionizationsString.split(/ *[\\t\\n\\r,.;]+ */);\n    // it is allowed to have ranges in Ionizations. We need to explode them.\n    const results = [];\n    for (const ionization of ionizations) {\n        const parts = new mf_parser_1.MF(ionization).flatten();\n        for (const part of parts) {\n            const info = new mf_parser_1.MF(part).getInfo();\n            results.push({\n                mf: part,\n                em: info.monoisotopicMass,\n                charge: info.charge,\n                atoms: info.atoms,\n            });\n        }\n    }\n    return results;\n}\n//# sourceMappingURL=preprocessIonizations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.preprocessRanges = preprocessRanges;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction preprocessRanges(ranges) {\n    ranges = structuredClone(ranges);\n    if (typeof ranges === 'string') {\n        // need to convert to ranges\n        let parsed = (0, mf_parser_1.parse)(ranges.replaceAll(/[\\t\\n\\r ]/g, ''));\n        let newRanges = [];\n        let current = {\n            mf: '',\n            min: 1,\n            max: 1,\n        };\n        // example ClBr2(CH2)0-2NO\n        // the idea is that has long as we don't have a range we don't really care\n        // but the range should only applied on the previous atom, group or parenthesis\n        // there is a limitation is that the range has to be first level of parenthesis\n        let parenthesisLevel = 0;\n        let currentMF = ''; // start at an atom first level or a parenthesis\n        for (let item of parsed) {\n            switch (item.kind) {\n                case mf_parser_1.Kind.ATOM:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    currentMF += item.value;\n                    break;\n                case mf_parser_1.Kind.ISOTOPE:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    currentMF += `[${item.value.isotope}${item.value.atom}]`;\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF + item.value;\n                        currentMF = '';\n                    }\n                    else {\n                        currentMF += item.value;\n                    }\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER_RANGE:\n                    if (parenthesisLevel !== 0) {\n                        throw new Error('Range multiplier can only be at the first level');\n                    }\n                    newRanges.push({\n                        mf: currentMF,\n                        min: item.value.from,\n                        max: item.value.to,\n                    });\n                    currentMF = '';\n                    break;\n                case mf_parser_1.Kind.OPENING_PARENTHESIS:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    parenthesisLevel++;\n                    currentMF += '(';\n                    break;\n                case mf_parser_1.Kind.CLOSING_PARENTHESIS:\n                    parenthesisLevel--;\n                    currentMF += ')';\n                    break;\n                default:\n                    throw new Error(`can not preprocess ${ranges}`);\n            }\n        }\n        if (currentMF) {\n            current.mf += currentMF;\n        }\n        if (current.mf) {\n            newRanges.push(current);\n        }\n        ranges = newRanges;\n    }\n    let possibilities = [];\n    for (let i = 0; i < ranges.length; i++) {\n        let range = ranges[i];\n        let min = range.min === undefined ? 0 : range.min;\n        let max = range.max === undefined ? 1 : range.max;\n        let possibility = {\n            mf: range.mf,\n            originalMinCount: min, // value defined by the user\n            originalMaxCount: max, // value defined by the user\n            currentMinCount: min,\n            currentMaxCount: max,\n            currentCount: min,\n            currentMonoisotopicMass: 0,\n            currentCharge: 0,\n            currentUnsaturation: 0,\n            initialOrder: i,\n            minInnerMass: 0,\n            maxInnerMass: 0,\n            minInnerCharge: 0,\n            maxInnerCharge: 0,\n            minCharge: 0,\n            maxCharge: 0,\n            minMass: 0,\n            maxMass: 0,\n            innerCharge: false,\n        };\n        possibilities.push(possibility);\n        let info = new mf_parser_1.MF(range.mf).getInfo();\n        possibility.em = range.em || info.monoisotopicMass;\n        possibility.charge = range.charge || info.charge;\n        possibility.unsaturation =\n            range.unsaturation === undefined\n                ? (info.unsaturation - 1) * 2\n                : range.unsaturation;\n        possibility.atoms = info.atoms;\n        if (possibility.mf !== info.mf) {\n            possibility.isGroup = true;\n        }\n    }\n    possibilities = possibilities.filter((r) => r.originalMinCount !== 0 || r.originalMaxCount !== 0);\n    // we will sort the way we analyse the data\n    // 1. The one possibility parameter\n    // 2. The charged part\n    // 3. Decreasing em\n    possibilities.sort((a, b) => {\n        if (a.originalMinCount === a.originalMaxCount)\n            return -1; // should be in front, they are 'static'\n        if (b.originalMinCount === b.originalMaxCount)\n            return 1;\n        if (a.charge && b.charge) {\n            if (Math.abs(a.charge) > Math.abs(b.charge))\n                return -1;\n            if (Math.abs(a.charge) < Math.abs(b.charge))\n                return 1;\n            return b.em - a.em;\n        }\n        if (a.charge)\n            return -1;\n        if (b.charge)\n            return 1;\n        return b.em - a.em;\n    });\n    // we calculate couple of fixed values\n    for (let i = 0; i < possibilities.length; i++) {\n        for (let j = i; j < possibilities.length; j++) {\n            let possibility = possibilities[j];\n            if (possibility.em > 0) {\n                possibilities[i].minMass +=\n                    possibility.em * possibility.originalMinCount;\n                possibilities[i].maxMass +=\n                    possibility.em * possibility.originalMaxCount;\n            }\n            else {\n                possibilities[i].minMass +=\n                    possibility.em * possibility.originalMaxCount;\n                possibilities[i].maxMass +=\n                    possibility.em * possibility.originalMinCount;\n            }\n            if (possibility.charge > 0) {\n                possibilities[i].minCharge +=\n                    possibility.charge * possibility.originalMinCount;\n                possibilities[i].maxCharge +=\n                    possibility.charge * possibility.originalMaxCount;\n            }\n            else {\n                possibilities[i].minCharge +=\n                    possibility.charge * possibility.originalMaxCount;\n                possibilities[i].maxCharge +=\n                    possibility.charge * possibility.originalMinCount;\n            }\n        }\n    }\n    for (let i = 0; i < possibilities.length; i++) {\n        if (i < possibilities.length - 1) {\n            let possibility = possibilities[i];\n            let innerPossibility = possibilities[i + 1];\n            possibility.minInnerMass = innerPossibility.minMass;\n            possibility.maxInnerMass = innerPossibility.maxMass;\n            possibility.minInnerCharge = innerPossibility.minCharge;\n            possibility.maxInnerCharge = innerPossibility.maxCharge;\n            if (possibility.minInnerCharge || possibility.maxInnerCharge) {\n                possibility.innerCharge = true;\n            }\n        }\n    }\n    return possibilities;\n}\n//# sourceMappingURL=preprocessRanges.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.msemMatcher = msemMatcher;\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nconst unsaturationMatcher_js_1 = require(\"./unsaturationMatcher.js\");\n/**\n * @typedef {object} MSEMFilterOptions\n * @property {object}         [ionization={ mf: '', em: 0, charge: 0 }] - ionization method\n * @property {boolean}        [forceIonization=false] - If true ignore existing ionizations\n * @property {number}         [precision=1000] - The precision on the experimental mass\n * @property {number}         [targetMass] - Target mass, allows to calculate error and filter results\n * @property {number[]}       [targetMasses] - Target masses: SORTED array of numbers\n * @property {number[]}       [targetIntensities] - Target intensities: SORTED array of numbers\n * @property {number}         [minMW=-Infinity] - Minimal monoisotopic mass\n * @property {number}         [maxMW=+Infinity] - Maximal monoisotopic mass\n * @property {number}         [minEM=-Infinity] - Minimal monoisotopic mass\n * @property {number}         [maxEM=+Infinity] - Maximal monoisotopic mass\n * @property {number}         [minMSEM=-Infinity] - Minimal monoisotopic mass observed by mass\n * @property {number}         [maxMSEM=+Infinity] - Maximal monoisotopic mass observed by mass\n * @property {number}         [minCharge=-Infinity] - Minimal charge\n * @property {number}         [maxCharge=+Infinity] - Maximal charge\n * @property {boolean}        [absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @property {boolean}        [allowNegativeAtoms=false] - Allow to have negative number of atoms\n * @property {object}         [unsaturation={}]\n * @property {number}         [unsaturation.min=-Infinity] - Minimal unsaturation\n * @property {number}         [unsaturation.max=+Infinity] - Maximal unsaturation\n * @property {boolean}        [unsaturation.onlyInteger=false] - Integer unsaturation\n * @property {boolean}        [unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @property {boolean}        [atoms] - object of atom:{min, max}\n * @property {Function}       [callback] - a function that contains information about the current MF\n */\n/**\n * @param {object}             [entry={}]\n * @param {MSEMFilterOptions}  [options={}]\n * @return {boolean}\n */\n/**\n * We always recalculate msem\n */\nfunction msemMatcher(entry, options = {}) {\n    const { ionization = { mf: '', em: 0, charge: 0, atoms: {} }, forceIonization = false, precision = 1000, minCharge = Number.MIN_SAFE_INTEGER, maxCharge = Number.MAX_SAFE_INTEGER, absoluteCharge = false, unsaturation = {}, targetMass, // if present we will calculate the errors\n    targetMasses, // if present we will calculate the smallest error\n    targetIntensities, // if present it will be added in the report\n    minEM = -Infinity, maxEM = +Infinity, minMSEM = -Infinity, maxMSEM = +Infinity, minMW = -Infinity, maxMW = +Infinity, allowNegativeAtoms = false, atoms, callback, } = options;\n    if (entry.mw !== undefined && (entry.mw < minMW || entry.mw > maxMW)) {\n        return false;\n    }\n    let msInfo = (0, mf_utilities_1.getMsInfo)(entry, {\n        ionization,\n        forceIonization,\n        targetMass,\n    });\n    let ms = msInfo.ms;\n    if (entry.em !== undefined && (entry.em < minEM || entry.em > maxEM)) {\n        return false;\n    }\n    if (ms.em !== undefined && (ms.em < minMSEM || ms.em > maxMSEM)) {\n        return false;\n    }\n    if (targetMass && Math.abs(ms.ppm) > precision) {\n        return false;\n    }\n    if (ms.charge !== undefined) {\n        let charge = absoluteCharge ? Math.abs(ms.charge) : ms.charge;\n        if (charge < minCharge || charge > maxCharge)\n            return false;\n    }\n    if (unsaturation !== undefined &&\n        entry.unsaturation !== undefined &&\n        !(0, unsaturationMatcher_js_1.unsaturationMatcher)(entry, unsaturation)) {\n        return false;\n    }\n    if (entry.atoms !== undefined && atoms) {\n        // all the atoms of the entry must fit in the range\n        for (let atom in entry.atoms) {\n            if (!atoms[atom])\n                return false;\n            if (entry.atoms[atom] < atoms[atom].min)\n                return false;\n            if (entry.atoms[atom] > atoms[atom].max)\n                return false;\n        }\n    }\n    if (entry.atoms !== undefined && !allowNegativeAtoms) {\n        const ionizationAtoms = (msInfo.ionization && msInfo.ionization.atoms) || {};\n        const atomKeys = new Set(Object.keys(ionizationAtoms).concat(Object.keys(entry.atoms)));\n        for (let atom of atomKeys) {\n            if ((entry.atoms[atom] || 0) + (ionizationAtoms[atom] || 0) < 0) {\n                return false;\n            }\n        }\n    }\n    if (targetMasses && targetMasses.length > 0) {\n        let index = (0, ml_spectra_processing_1.xFindClosestIndex)(targetMasses, ms.em);\n        let closestMass = targetMasses[index];\n        msInfo = (0, mf_utilities_1.getMsInfo)(entry, {\n            ionization,\n            forceIonization,\n            targetMass: closestMass,\n        });\n        msInfo.ms.target = { mass: closestMass };\n        if (targetIntensities) {\n            msInfo.ms.target.intensity = targetIntensities[index];\n        }\n        // need to find the closest targetMasses\n        if (Math.abs(msInfo.ms.ppm) > precision)\n            return false;\n    }\n    if (callback && !callback(entry))\n        return false;\n    return msInfo;\n}\n//# sourceMappingURL=msemMatcher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TargetMassCache = void 0;\nconst chemical_elements_1 = require(\"chemical-elements\");\n/**\n * returns all the possible neutral mass for a defined experimental (targetMass) mass\n */\nclass TargetMassCache {\n    /**\n     * @param {number} targetMass\n     * @param {Array} possibilities\n     * @param {object} [options={}]\n     * @param {boolean} [options.allowNeutral=false]\n     * @param {number} [options.charge=0]\n     * @param {number} [options.precision=100]\n     * @param {object} [options.filter={}]\n     * @param {number} [options.filter.minCharge=Number.MIN_SAFE_INTEGER]\n     * @param {number} [options.filter.maxCharge=Number.MAX_SAFE_INTEGER]\n     * @returns\n     */\n    constructor(targetMass, possibilities, options = {}) {\n        const { allowNeutral = false, // msem because em in this case !\n        filter = {}, charge = 0, precision = 100, } = options;\n        const { minCharge = Number.MIN_SAFE_INTEGER, maxCharge = Number.MAX_SAFE_INTEGER, } = filter;\n        if (!possibilities || possibilities.length === 0)\n            return;\n        let firstPossibility = possibilities[0];\n        let currentMinCharge = Math.max(minCharge, firstPossibility.minCharge + charge);\n        let currentMaxCharge = Math.min(maxCharge, firstPossibility.maxCharge + charge);\n        this.minCharge = currentMinCharge;\n        this.maxCharge = currentMaxCharge;\n        let size = this.maxCharge - this.minCharge + 1;\n        this.data = [];\n        let minMass = 0;\n        let maxMass = 0;\n        let range = (targetMass * precision) / 1e6;\n        for (let i = 0; i < size; i++) {\n            let currentCharge = i + this.minCharge;\n            if (currentCharge === 0) {\n                if (allowNeutral) {\n                    minMass = targetMass - range;\n                    maxMass = targetMass + range;\n                }\n                else {\n                    minMass = Number.MAX_SAFE_INTEGER;\n                    maxMass = Number.MIN_SAFE_INTEGER;\n                }\n            }\n            else {\n                minMass =\n                    (targetMass - range) * Math.abs(currentCharge) +\n                        chemical_elements_1.ELECTRON_MASS * currentCharge;\n                maxMass =\n                    (targetMass + range) * Math.abs(currentCharge) +\n                        chemical_elements_1.ELECTRON_MASS * currentCharge;\n            }\n            this.data.push({\n                charge: currentCharge,\n                minMass,\n                maxMass,\n            });\n        }\n    }\n    getMinMass(charge) {\n        return this.data[charge - this.minCharge]\n            ? this.data[charge - this.minCharge].minMass\n            : Number.MAX_SAFE_INTEGER;\n    }\n    getMaxMass(charge) {\n        return this.data[charge - this.minCharge]\n            ? this.data[charge - this.minCharge].maxMass\n            : Number.MIN_SAFE_INTEGER;\n    }\n}\nexports.TargetMassCache = TargetMassCache;\n//# sourceMappingURL=TargetMassCache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findMFsSync = findMFsSync;\nconst atom_sorter_1 = require(\"atom-sorter\");\nconst mf_matcher_1 = require(\"mf-matcher\");\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst TargetMassCache_1 = require(\"./TargetMassCache\");\n/**\n * @param {number}        targetMass - Monoisotopic mass\n * @param {object}        [options={}]\n * @param {number}        [options.maxIterations=10000000] - Maximum number of iterations\n * @param {boolean}       [options.allowNeutral=true]\n * @param {boolean}       [options.uniqueMFs=true]\n * @param {number}        [options.limit=1000] - Maximum number of results\n * @param {string}        [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {string|{mf:string,min:number,max:number}[]}        [options.ranges='C0-100 H0-100 O0-100 N0-100'] - range of mfs to search\n * @param {number}        [options.precision=100] - Allowed mass range based on precision\n * @param {import('mf-matcher').MSEMFilterOptions}        [options.filter={}]\n * @returns {object}\n */\nfunction findMFsSync(targetMass, options = {}) {\n    const { filter = {}, maxIterations = 1e8, limit = 1000, allowNeutral = true, // if there is no msem we use em !\n    uniqueMFs = false, // if there is no msem we use em !\n    ranges = [\n        { mf: 'C', min: 0, max: 100 },\n        { mf: 'H', min: 0, max: 100 },\n        { mf: 'O', min: 0, max: 100 },\n        { mf: 'N', min: 0, max: 100 },\n    ], } = options;\n    let targetMassCache;\n    const { minCharge = Number.MIN_SAFE_INTEGER, maxCharge = Number.MAX_SAFE_INTEGER, unsaturation = {}, } = filter;\n    let filterUnsaturation = !!unsaturation;\n    // we calculate not the real unsaturation but the one before dividing by 2 + 1\n    let fakeMinUnsaturation = unsaturation.min === undefined\n        ? Number.MIN_SAFE_INTEGER\n        : (unsaturation.min - 1) * 2;\n    let fakeMaxUnsaturation = unsaturation.max === undefined\n        ? Number.MAX_SAFE_INTEGER\n        : (unsaturation.max - 1) * 2;\n    let filterCharge = minCharge !== Number.MIN_SAFE_INTEGER ||\n        maxCharge !== Number.MAX_SAFE_INTEGER;\n    let advancedFilter;\n    if (filter.atoms || filter.callback) {\n        advancedFilter = {\n            atoms: filter.atoms,\n            callback: filter.callback,\n        };\n    }\n    let result = {\n        mfs: [],\n        info: {\n            numberMFEvaluated: 0,\n            numberResults: 0,\n        },\n    };\n    let orderMapping = []; // used to sort the atoms\n    // we need to make the processing for all the ionizations\n    let ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n    for (let ionization of ionizations) {\n        let currentIonization = {\n            currentMonoisotopicMass: ionization.em || 0,\n            currentCharge: ionization.charge,\n            currentUnsaturation: 0, // we don't take into account the unsaturation of the ionization agent\n        };\n        // if (DEBUG) console.log('new ionization', ionization.mf, ionization.em, ionization.charge);\n        // ionization em and charge will be used to set the first atom value\n        let possibilities = (0, mf_utilities_1.preprocessRanges)(ranges);\n        orderMapping = getOrderMapping(possibilities);\n        if (possibilities.length === 0)\n            return { mfs: [] };\n        targetMassCache = new TargetMassCache_1.TargetMassCache(targetMass, possibilities, {\n            ...options,\n            charge: ionization.charge,\n        });\n        let theEnd = false;\n        let maxPosition = possibilities.length;\n        let lastPosition = possibilities.length - 1;\n        let currentPosition = 0;\n        let currentAtom;\n        let previousAtom;\n        let lastPossibility = possibilities[lastPosition];\n        initializePossibilities(possibilities, currentIonization, targetMassCache);\n        //  if (DEBUG) console.log('possibilities', possibilities.map((a) => `${a.mf + a.originalMinCount}-${a.originalMaxCount}`));\n        let isValid = false; // designed so that the first time it is not a valid solution\n        while (!theEnd) {\n            if (result.info.numberMFEvaluated++ > maxIterations) {\n                throw new Error(`Iteration number is over the current maximum of: ${maxIterations}`);\n            }\n            if (filterUnsaturation) {\n                let unsaturationValue = lastPossibility.currentUnsaturation;\n                let isOdd = Math.abs(unsaturationValue % 2);\n                if ((unsaturation.onlyInteger && isOdd === 1) ||\n                    (unsaturation.onlyNonInteger && isOdd === 0) ||\n                    fakeMinUnsaturation > unsaturationValue ||\n                    fakeMaxUnsaturation < unsaturationValue) {\n                    isValid = false;\n                }\n            }\n            if (filterCharge &&\n                (lastPossibility.currentCharge < minCharge ||\n                    lastPossibility.currentCharge > maxCharge)) {\n                isValid = false;\n            }\n            if (isValid) {\n                let minMass = targetMassCache.getMinMass(lastPossibility.currentCharge);\n                let maxMass = targetMassCache.getMaxMass(lastPossibility.currentCharge);\n                if (lastPossibility.currentMonoisotopicMass < minMass ||\n                    lastPossibility.currentMonoisotopicMass > maxMass) {\n                    isValid = false;\n                }\n            }\n            if (isValid) {\n                result.info.numberResults++;\n                let newResult = getResult(possibilities, targetMass, allowNeutral, ionization, orderMapping);\n                if (advancedFilter) {\n                    isValid = (0, mf_matcher_1.msemMatcher)(newResult, advancedFilter) !== false;\n                }\n                if (isValid) {\n                    result.mfs.push(newResult);\n                    if (result.mfs.length > 2 * limit) {\n                        if (uniqueMFs)\n                            ensureUniqueMF(result);\n                        result.mfs.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n                        result.mfs.length = limit;\n                    }\n                }\n            }\n            isValid = true;\n            // we need to set up all the arrays if possible\n            while (currentPosition < maxPosition && currentPosition >= 0) {\n                currentAtom = possibilities[currentPosition];\n                previousAtom =\n                    currentPosition === 0\n                        ? currentIonization\n                        : possibilities[currentPosition - 1];\n                if (currentAtom.currentCount < currentAtom.currentMaxCount) {\n                    currentAtom.currentCount++;\n                    updateCurrentAtom(currentAtom, previousAtom);\n                    if (currentPosition < lastPosition) {\n                        currentPosition++;\n                        setCurrentMinMax(possibilities[currentPosition], possibilities[currentPosition - 1], targetMassCache);\n                    }\n                    else {\n                        break;\n                    }\n                }\n                else {\n                    currentPosition--;\n                }\n            }\n            if (currentPosition < 0) {\n                theEnd = true;\n            }\n        }\n    }\n    if (uniqueMFs)\n        ensureUniqueMF(result);\n    result.mfs.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n    if (result.mfs.length > limit) {\n        result.mfs.length = limit;\n    }\n    for (const mf of result.mfs) {\n        delete mf.currentCounts;\n    }\n    return result;\n}\n/**\n * Ensure that we have only once the same MF\n * In order to improve the speed we just consider the em\n * @param {object} result\n */\nfunction ensureUniqueMF(result) {\n    result.mfs.sort((a, b) => a.em - b.em);\n    let previousEM = 0;\n    let bestCounts = [];\n    const mfs = [];\n    next: for (let current of result.mfs) {\n        if (current.em - previousEM > 1e-8) {\n            previousEM = current.em;\n            bestCounts = current.currentCounts;\n            mfs.push(current);\n        }\n        else {\n            for (let i = 0; i < current.currentCounts.length; i++) {\n                // better priority ???\n                if (current.currentCounts[i] > bestCounts[i]) {\n                    mfs.pop();\n                    mfs.push(current);\n                    bestCounts = current.currentCounts;\n                    continue;\n                }\n                else if (current.currentCounts[i] < bestCounts[i]) {\n                    continue next;\n                }\n            }\n        }\n    }\n    result.mfs = mfs;\n}\nfunction updateCurrentAtom(currentAtom, previousAtom) {\n    currentAtom.currentMonoisotopicMass =\n        previousAtom.currentMonoisotopicMass +\n            currentAtom.em * currentAtom.currentCount;\n    currentAtom.currentCharge =\n        previousAtom.currentCharge + currentAtom.charge * currentAtom.currentCount;\n    currentAtom.currentUnsaturation =\n        previousAtom.currentUnsaturation +\n            currentAtom.unsaturation * currentAtom.currentCount;\n}\nfunction getResult(possibilities, targetMass, allowNeutralMolecules, ionization, orderMapping) {\n    let lastPossibility = possibilities.at(-1);\n    let result = {\n        em: lastPossibility.currentMonoisotopicMass - ionization.em,\n        unsaturation: lastPossibility.currentUnsaturation,\n        mf: '',\n        charge: lastPossibility.currentCharge - ionization.charge,\n        ionization,\n        atoms: {},\n        groups: {},\n        currentCounts: possibilities.map((possibility) => possibility.currentCount),\n    };\n    // we check that the first time we meet the ionization group it does not end\n    // in the final result\n    for (let i = 0; i < possibilities.length; i++) {\n        let possibility = possibilities[orderMapping[i]];\n        if (possibility.currentCount !== 0) {\n            if (possibility.isGroup) {\n                if (possibility.currentCount === 1) {\n                    result.mf += `${possibility.mf}`;\n                }\n                else if (possibility.mf.match(/^\\([^()]*\\)$/)) {\n                    result.mf += `${possibility.mf}${possibility.currentCount}`;\n                }\n                else {\n                    result.mf += `(${possibility.mf})${possibility.currentCount}`;\n                }\n                if (result.groups[possibility.mf]) {\n                    result.groups[possibility.mf] += possibility.currentCount;\n                }\n                else {\n                    result.groups[possibility.mf] = possibility.currentCount;\n                }\n            }\n            else {\n                result.mf += possibility.mf;\n                if (possibility.currentCount !== 1) {\n                    result.mf += possibility.currentCount;\n                }\n            }\n            for (let atom in possibility.atoms) {\n                if (result.atoms[atom]) {\n                    result.atoms[atom] +=\n                        possibility.atoms[atom] * possibility.currentCount;\n                }\n                else {\n                    result.atoms[atom] =\n                        possibility.atoms[atom] * possibility.currentCount;\n                }\n            }\n        }\n    }\n    result.unsaturation = (result.unsaturation + Math.abs(result.charge)) / 2 + 1;\n    result.ms = (0, mf_utilities_1.getMsInfo)(result, { targetMass, allowNeutralMolecules }).ms;\n    return result;\n}\nfunction setCurrentMinMax(currentAtom, previousAtom, targetMassCache) {\n    // the current min max can only be optimize if the charge will not change anymore\n    // and the currentAtom.em >= 0\n    if (currentAtom.innerCharge === true ||\n        currentAtom.charge !== 0 ||\n        currentAtom.em < 0) {\n        currentAtom.currentMinCount = currentAtom.originalMinCount;\n        currentAtom.currentMaxCount = currentAtom.originalMaxCount;\n        currentAtom.currentCount = currentAtom.currentMinCount - 1;\n    }\n    else {\n        // no more change of charge, we can optimize\n        let currentMass = previousAtom !== undefined ? previousAtom.currentMonoisotopicMass : 0;\n        let currentCharge = previousAtom !== undefined ? previousAtom.currentCharge : 0;\n        currentAtom.currentMinCount = Math.max(Math.floor((targetMassCache.getMinMass(currentCharge) -\n            currentMass -\n            currentAtom.maxInnerMass) /\n            currentAtom.em), currentAtom.originalMinCount);\n        currentAtom.currentMaxCount = Math.min(Math.floor((targetMassCache.getMaxMass(currentCharge) -\n            currentMass -\n            currentAtom.minInnerMass) /\n            currentAtom.em), currentAtom.originalMaxCount);\n        currentAtom.currentCount = currentAtom.currentMinCount - 1;\n    }\n}\nfunction initializePossibilities(possibilities, currentIonization, targetMassCache) {\n    for (let i = 0; i < possibilities.length; i++) {\n        if (i === 0) {\n            updateCurrentAtom(possibilities[i], currentIonization);\n            setCurrentMinMax(possibilities[i], currentIonization, targetMassCache);\n        }\n        else {\n            updateCurrentAtom(possibilities[i], possibilities[i - 1]);\n        }\n    }\n}\n// eslint-disable-next-line no-unused-vars\nfunction possibilitiesToString(possibilities) {\n    return possibilities.map((a) => [\n        `mf:${a.mf}`,\n        `current:${a.currentCount}`,\n        `min:${a.currentMinCount}`,\n        `max:${a.currentMaxCount}`,\n        `charge:${a.currentCharge}`,\n    ]);\n}\nfunction getOrderMapping(possibilities) {\n    let mapping = possibilities.map((p, i) => ({ atom: p.mf, index: i }));\n    mapping.sort((a, b) => {\n        return (0, atom_sorter_1.atomSorter)(a.atom, b.atom);\n    });\n    return mapping.map((a) => a.index);\n}\n//# sourceMappingURL=findMFsSync.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findMFs = findMFs;\nconst findMFsSync_1 = require(\"./findMFsSync\");\n/** @typedef {import('./types').MFResult} MFResult */\n/** @typedef {import('./types').MFFinderOptions} MFFinderOptions */\n/**\n * @param {number} targetMass - Monoisotopic mass\n * @param {MFFinderOptions} [options={}]\n * @returns {Promise<MFResult[]>}\n */\nasync function findMFs(targetMass, options = {}) {\n    return (0, findMFsSync_1.findMFsSync)(targetMass, options);\n}\n//# sourceMappingURL=findMFs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfIncluded = mfIncluded;\nconst mf_parser_1 = require(\"mf-parser\");\nconst findMFsSync_js_1 = require(\"./findMFsSync.js\");\n/**\n * @param {string}        mf - the molecular formula to check\n * @param {string}        range - the range of MF to explore\n * @param {object}        [options={}]\n * @param {number}        [options.maxIterations=10000000] - Maximum number of iterations\n * @param {boolean}       [options.allowNeutral=true]\n * @param {string}        [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {object}        [options.filter={}]\n * @param {number}        [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}        [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}       [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object}        [options.filter.unsaturation={}]\n * @param {number}        [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}        [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean}       [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean}       [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}        [options.filter.atoms] - object of atom:{min, max}\n * @param {function}      [options.filter.callback] - a function to filter the MF\n * @returns {boolean}\n */\nfunction mfIncluded(mf, range, options = {}) {\n    let targetEM = new mf_parser_1.MF(mf).getInfo().monoisotopicMass;\n    let results = (0, findMFsSync_js_1.findMFsSync)(targetEM, {\n        allowNeutral: true,\n        ...options,\n        ranges: range,\n        precision: 0.0000001,\n        limit: 1,\n    });\n    return results.mfs.length > 0;\n}\n//# sourceMappingURL=mfIncluded.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMonoisotopicMass = fromMonoisotopicMass;\nconst mf_finder_1 = require(\"mf-finder\");\n/**\n * Generates a database 'monoisotopic' from a monoisotopic mass and various options\n * @param {number|string|array}    masses - Monoisotopic mass\n * @param {object}    [options={}]\n * @param {number}    [options.maxIterations=10000000] - Maximum number of iterations\n * @param {function}  [options.onStep] - Callback to do after each step\n * @param {boolean}   [options.allowNeutral=true]\n * @param {boolean}   [options.uniqueMFs=true]\n * @param {number}    [options.limit=1000] - Maximum number of results\n * @param {string}    [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {string}    [options.ranges='C0-100 H0-100 O0-100 N0-100'] - range of mfs to search\n * @param {number}    [options.precision=100] - Allowed mass range based on precision\n * @param {object}    [options.filter={}]\n * @param {number}    [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}    [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}   [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object}    [options.filter.unsaturation={}]\n * @param {number}    [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}    [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean}    [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean}    [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {object}    [options.filter.atoms] - object of atom:{min, max}\n * @param {function}  [options.filter.callback] - a function to filter the MF\n * @returns {Promise}\n */\nasync function fromMonoisotopicMass(masses, options = {}) {\n    if (typeof masses === 'string') {\n        masses = masses.split(/[\\t\\n\\r ,;]/).map(Number);\n    }\n    if (typeof masses === 'number') {\n        masses = [masses];\n    }\n    let results = [];\n    for (let mass of masses) {\n        results.push(await (0, mf_finder_1.findMFs)(mass, options));\n    }\n    return {\n        mfs: results.flatMap((entry) => entry.mfs),\n        info: {\n            numberMFEvaluated: results.reduce((sum, current) => sum + current.info.numberMFEvaluated, 0),\n            numberResults: results.reduce((sum, current) => sum + current.info.numberResults, 0),\n        },\n    };\n}\n//# sourceMappingURL=fromMonoisotopicMass.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPeaks = getPeaks;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Filter the array of peaks\n * @param {array} peaks - array of all the peaks\n * @param {object} [options={}]\n * @param {number} [options.from] - min X value of the window to consider\n * @param {number} [options.to] - max X value of the window to consider\n * @param {number} [options.threshold=0.01] - minimal intensity compare to base peak\n * @param {number} [options.limit=undefined] - maximal number of peaks (based on intensity)\n * @param {number} [options.sumValue] // if sumValue is defined, maxValue is ignored\n * @returns {array} - copy of peaks with 'close' annotation\n */\nfunction getPeaks(peaks, options = {}) {\n    const { from = (0, ml_spectra_processing_1.xyObjectMinXPoint)(peaks).x, to = (0, ml_spectra_processing_1.xyObjectMaxXPoint)(peaks).x, threshold = 0.01, limit, sumValue, } = options;\n    let maxY = Number.MIN_SAFE_INTEGER;\n    for (let peak of peaks) {\n        if (peak.y > maxY)\n            maxY = peak.y;\n    }\n    let minY = maxY * threshold;\n    peaks = peaks.filter((peak) => peak.x >= from && peak.x <= to && peak.y >= minY);\n    if (limit && peaks.length > limit) {\n        peaks.sort((a, b) => b.y - a.y);\n        peaks = peaks.slice(0, limit);\n    }\n    if (sumValue) {\n        peaks = structuredClone(peaks);\n        const currentSum = (0, ml_spectra_processing_1.xyObjectSumY)(peaks);\n        const ratio = sumValue / currentSum;\n        for (const peak of peaks) {\n            peak.y *= ratio;\n        }\n    }\n    return peaks.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=getPeaks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFragmentPeaks = getFragmentPeaks;\nconst mf_parser_1 = require(\"mf-parser\");\nconst fromMonoisotopicMass_1 = require(\"./from/fromMonoisotopicMass\");\nconst getPeaks_js_1 = require(\"./getPeaks.js\");\n/**\n * Filter the array of peaks\n * @param {array} peaks - array of all the peaks\n * @param {string} mf - Molecular formula of the parent molecule\n * @param {object} [options={}]\n * @param {number} [options.from] - min X value of the window to consider\n * @param {number} [options.to] - max X value of the window to consider\n * @param {number} [options.threshold=0.01] - minimal intensity compare to base peak\n * @param {number} [options.limit=undefined] - maximal number of peaks (based on intensity)\n * @param {string} [options.ionizations]\n * @param {number} [options.precision]\n * @returns {array} - copy of peaks with 'close' annotation\n */\nasync function getFragmentPeaks(peaks, mf, options = {}) {\n    const { ionizations = '', precision } = options;\n    const mfInfo = new mf_parser_1.MF(mf).getInfo();\n    const ranges = Object.keys(mfInfo.atoms)\n        .map((key) => `${key}0-${mfInfo.atoms[key]}`)\n        .join(' ');\n    peaks = (0, getPeaks_js_1.getPeaks)(peaks, options);\n    for (let peak of peaks) {\n        const { mfs } = await (0, fromMonoisotopicMass_1.fromMonoisotopicMass)(peak.x, {\n            precision,\n            ranges,\n            ionizations,\n        });\n        peak.mfs = mfs;\n    }\n    peaks = peaks.filter((peak) => peak.mfs.length > 0);\n    return peaks;\n}\n//# sourceMappingURL=getFragmentPeaks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMassRemainder = getMassRemainder;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Remove an integer number of time the specifiedd monoisotopic mass\n * Mass remainder analysis (MARA): https://doi.org/10.1021/acs.analchem.7b04730\n * @param {object} spectrum\n * @param {number} mass\n * @param {object} [options={}\n * @param {number} [options.delta=0.001]\n */\nfunction getMassRemainder(spectrum, mass, options = {}) {\n    const { delta = 0.001 } = options;\n    const x = spectrum.x.slice();\n    const y = spectrum.y;\n    for (let i = 0; i < x.length; i++) {\n        const factor = Math.floor(x[i] / mass);\n        x[i] = x[i] - factor * mass;\n    }\n    // we sort and join\n    return (0, ml_spectra_processing_1.xyJoinX)((0, ml_spectra_processing_1.xySortX)({ x, y }), { delta });\n}\n//# sourceMappingURL=getMassRemainder.js.map","export function calculateOverlapFromDiff(diffs) {\n    if (diffs[1].length === 0)\n        return 0;\n    let sumPos = 0;\n    for (let i = 0; i < diffs[1].length; i++) {\n        sumPos += Math.abs(diffs[1][i]);\n    }\n    return 1 - sumPos;\n}\n//# sourceMappingURL=calculateOverlapFromDiff.js.map","/**\n * This code requires the use of an array like  [[x1,y1],[x2,y2], ...]\n * If it is not the right format, we will just convert it\n * Otherwise we return the correct format\n * @param {Peaks} peaks\n * @returns [number[], number[]]\n */\nexport function checkPeaks(peaks) {\n    // if it is already a 2D array of points, we just return them\n    if (Array.isArray(peaks) && Array.isArray(peaks[0]) && peaks.length === 2) {\n        return peaks;\n    }\n    if (Array.isArray(peaks.x) && Array.isArray(peaks.y)) {\n        return [peaks.x, peaks.y];\n    }\n    const x = new Array(peaks.length);\n    const y = new Array(peaks.length);\n    for (let i = 0; i < peaks.length; i++) {\n        x[i] = peaks[i][0];\n        y[i] = peaks[i][1];\n    }\n    return [x, y];\n}\n//# sourceMappingURL=checkPeaks.js.map","export function extract(array, from, to) {\n    const newArray = [[], []];\n    let j = 0;\n    const length = array[0] ? array[0].length : 0;\n    for (let i = 0; i < length; i++) {\n        if ((!from || array[0][i] >= from) && (!to || array[0][i] <= to)) {\n            newArray[0][j] = array[0][i];\n            newArray[1][j] = array[1][i];\n            j++;\n        }\n    }\n    return newArray;\n}\n//# sourceMappingURL=extract.js.map","// returns an new array based on array1 where there is a peak of array2 at a distance under width/2\nexport function getCommonArray(array1, array2, width) {\n    const newArray = [[], []];\n    let pos2 = 0;\n    width /= 2;\n    let j = 0;\n    const array1Length = array1[0] ? array1[0].length : 0;\n    const array2Length = array2[0] ? array2[0].length : 0;\n    for (let i = 0; i < array1Length; i++) {\n        while (pos2 < array2Length && array1[0][i] > array2[0][pos2] + width) {\n            pos2++;\n        }\n        if (pos2 < array2Length && array1[0][i] > array2[0][pos2] - width) {\n            newArray[0][j] = array1[0][i];\n            newArray[1][j] = array1[1][i];\n            j++;\n        }\n    }\n    return newArray;\n}\n//# sourceMappingURL=getCommonArray.js.map","'use strict';\n\nfunction compareNumbers(a, b) {\n    return a - b;\n}\n\n/**\n * Computes the sum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.sum = function sum(values) {\n    var sum = 0;\n    for (var i = 0; i < values.length; i++) {\n        sum += values[i];\n    }\n    return sum;\n};\n\n/**\n * Computes the maximum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.max = function max(values) {\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] > max) max = values[i];\n    }\n    return max;\n};\n\n/**\n * Computes the minimum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.min = function min(values) {\n    var min = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n    }\n    return min;\n};\n\n/**\n * Computes the min and max of the given values\n * @param {Array} values\n * @returns {{min: number, max: number}}\n */\nexports.minMax = function minMax(values) {\n    var min = values[0];\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n        if (values[i] > max) max = values[i];\n    }\n    return {\n        min: min,\n        max: max\n    };\n};\n\n/**\n * Computes the arithmetic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.arithmeticMean = function arithmeticMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        sum += values[i];\n    }\n    return sum / l;\n};\n\n/**\n * {@link arithmeticMean}\n */\nexports.mean = exports.arithmeticMean;\n\n/**\n * Computes the geometric mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.geometricMean = function geometricMean(values) {\n    var mul = 1;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        mul *= values[i];\n    }\n    return Math.pow(mul, 1 / l);\n};\n\n/**\n * Computes the mean of the log of the given values\n * If the return value is exponentiated, it gives the same result as the\n * geometric mean.\n * @param {Array} values\n * @returns {number}\n */\nexports.logMean = function logMean(values) {\n    var lnsum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        lnsum += Math.log(values[i]);\n    }\n    return lnsum / l;\n};\n\n/**\n * Computes the weighted grand mean for a list of means and sample sizes\n * @param {Array} means - Mean values for each set of samples\n * @param {Array} samples - Number of original values for each set of samples\n * @returns {number}\n */\nexports.grandMean = function grandMean(means, samples) {\n    var sum = 0;\n    var n = 0;\n    var l = means.length;\n    for (var i = 0; i < l; i++) {\n        sum += samples[i] * means[i];\n        n += samples[i];\n    }\n    return sum / n;\n};\n\n/**\n * Computes the truncated mean of the given values using a given percentage\n * @param {Array} values\n * @param {number} percent - The percentage of values to keep (range: [0,1])\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.truncatedMean = function truncatedMean(values, percent, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var k = Math.floor(l * percent);\n    var sum = 0;\n    for (var i = k; i < (l - k); i++) {\n        sum += values[i];\n    }\n    return sum / (l - 2 * k);\n};\n\n/**\n * Computes the harmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.harmonicMean = function harmonicMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        if (values[i] === 0) {\n            throw new RangeError('value at index ' + i + 'is zero');\n        }\n        sum += 1 / values[i];\n    }\n    return l / sum;\n};\n\n/**\n * Computes the contraharmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.contraHarmonicMean = function contraHarmonicMean(values) {\n    var r1 = 0;\n    var r2 = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        r1 += values[i] * values[i];\n        r2 += values[i];\n    }\n    if (r2 < 0) {\n        throw new RangeError('sum of values is negative');\n    }\n    return r1 / r2;\n};\n\n/**\n * Computes the median of the given values\n * @param {Array} values\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.median = function median(values, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var half = Math.floor(l / 2);\n    if (l % 2 === 0) {\n        return (values[half - 1] + values[half]) * 0.5;\n    } else {\n        return values[half];\n    }\n};\n\n/**\n * Computes the variance of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.variance = function variance(values, unbiased) {\n    if (unbiased === undefined) unbiased = true;\n    var theMean = exports.mean(values);\n    var theVariance = 0;\n    var l = values.length;\n\n    for (var i = 0; i < l; i++) {\n        var x = values[i] - theMean;\n        theVariance += x * x;\n    }\n\n    if (unbiased) {\n        return theVariance / (l - 1);\n    } else {\n        return theVariance / l;\n    }\n};\n\n/**\n * Computes the standard deviation of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.standardDeviation = function standardDeviation(values, unbiased) {\n    return Math.sqrt(exports.variance(values, unbiased));\n};\n\nexports.standardError = function standardError(values) {\n    return exports.standardDeviation(values) / Math.sqrt(values.length);\n};\n\n/**\n * IEEE Transactions on biomedical engineering, vol. 52, no. 1, january 2005, p. 76-\n * Calculate the standard deviation via the Median of the absolute deviation\n *  The formula for the standard deviation only holds for Gaussian random variables.\n * @returns {{mean: number, stdev: number}}\n */\nexports.robustMeanAndStdev = function robustMeanAndStdev(y) {\n    var mean = 0, stdev = 0;\n    var length = y.length, i = 0;\n    for (i = 0; i < length; i++) {\n        mean += y[i];\n    }\n    mean /= length;\n    var averageDeviations = new Array(length);\n    for (i = 0; i < length; i++)\n        averageDeviations[i] = Math.abs(y[i] - mean);\n    averageDeviations.sort(compareNumbers);\n    if (length % 2 === 1) {\n        stdev = averageDeviations[(length - 1) / 2] / 0.6745;\n    } else {\n        stdev = 0.5 * (averageDeviations[length / 2] + averageDeviations[length / 2 - 1]) / 0.6745;\n    }\n\n    return {\n        mean: mean,\n        stdev: stdev\n    };\n};\n\nexports.quartiles = function quartiles(values, alreadySorted) {\n    if (typeof (alreadySorted) === 'undefined') alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n\n    var quart = values.length / 4;\n    var q1 = values[Math.ceil(quart) - 1];\n    var q2 = exports.median(values, true);\n    var q3 = values[Math.ceil(quart * 3) - 1];\n\n    return {q1: q1, q2: q2, q3: q3};\n};\n\nexports.pooledStandardDeviation = function pooledStandardDeviation(samples, unbiased) {\n    return Math.sqrt(exports.pooledVariance(samples, unbiased));\n};\n\nexports.pooledVariance = function pooledVariance(samples, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var sum = 0;\n    var length = 0, l = samples.length;\n    for (var i = 0; i < l; i++) {\n        var values = samples[i];\n        var vari = exports.variance(values);\n\n        sum += (values.length - 1) * vari;\n\n        if (unbiased)\n            length += values.length - 1;\n        else\n            length += values.length;\n    }\n    return sum / length;\n};\n\nexports.mode = function mode(values) {\n    var l = values.length,\n        itemCount = new Array(l),\n        i;\n    for (i = 0; i < l; i++) {\n        itemCount[i] = 0;\n    }\n    var itemArray = new Array(l);\n    var count = 0;\n\n    for (i = 0; i < l; i++) {\n        var index = itemArray.indexOf(values[i]);\n        if (index >= 0)\n            itemCount[index]++;\n        else {\n            itemArray[count] = values[i];\n            itemCount[count] = 1;\n            count++;\n        }\n    }\n\n    var maxValue = 0, maxIndex = 0;\n    for (i = 0; i < count; i++) {\n        if (itemCount[i] > maxValue) {\n            maxValue = itemCount[i];\n            maxIndex = i;\n        }\n    }\n\n    return itemArray[maxIndex];\n};\n\nexports.covariance = function covariance(vector1, vector2, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var mean1 = exports.mean(vector1);\n    var mean2 = exports.mean(vector2);\n\n    if (vector1.length !== vector2.length)\n        throw 'Vectors do not have the same dimensions';\n\n    var cov = 0, l = vector1.length;\n    for (var i = 0; i < l; i++) {\n        var x = vector1[i] - mean1;\n        var y = vector2[i] - mean2;\n        cov += x * y;\n    }\n\n    if (unbiased)\n        return cov / (l - 1);\n    else\n        return cov / l;\n};\n\nexports.skewness = function skewness(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n\n    var s2 = 0, s3 = 0, l = values.length;\n    for (var i = 0; i < l; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s3 += dev * dev * dev;\n    }\n    var m2 = s2 / l;\n    var m3 = s3 / l;\n\n    var g = m3 / (Math.pow(m2, 3 / 2.0));\n    if (unbiased) {\n        var a = Math.sqrt(l * (l - 1));\n        var b = l - 2;\n        return (a / b) * g;\n    } else {\n        return g;\n    }\n};\n\nexports.kurtosis = function kurtosis(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n    var n = values.length, s2 = 0, s4 = 0;\n\n    for (var i = 0; i < n; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s4 += dev * dev * dev * dev;\n    }\n    var m2 = s2 / n;\n    var m4 = s4 / n;\n\n    if (unbiased) {\n        var v = s2 / (n - 1);\n        var a = (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3));\n        var b = s4 / (v * v);\n        var c = ((n - 1) * (n - 1)) / ((n - 2) * (n - 3));\n\n        return a * b - 3 * c;\n    } else {\n        return m4 / (m2 * m2) - 3;\n    }\n};\n\nexports.entropy = function entropy(values, eps) {\n    if (typeof (eps) === 'undefined') eps = 0;\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * Math.log(values[i] + eps);\n    return -sum;\n};\n\nexports.weightedMean = function weightedMean(values, weights) {\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * weights[i];\n    return sum;\n};\n\nexports.weightedStandardDeviation = function weightedStandardDeviation(values, weights) {\n    return Math.sqrt(exports.weightedVariance(values, weights));\n};\n\nexports.weightedVariance = function weightedVariance(values, weights) {\n    var theMean = exports.weightedMean(values, weights);\n    var vari = 0, l = values.length;\n    var a = 0, b = 0;\n\n    for (var i = 0; i < l; i++) {\n        var z = values[i] - theMean;\n        var w = weights[i];\n\n        vari += w * (z * z);\n        b += w;\n        a += w * w;\n    }\n\n    return vari * (b / (b * b - a));\n};\n\nexports.center = function center(values, inPlace) {\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n\n    var result = values;\n    if (!inPlace)\n        result = [].concat(values);\n\n    var theMean = exports.mean(result), l = result.length;\n    for (var i = 0; i < l; i++)\n        result[i] -= theMean;\n};\n\nexports.standardize = function standardize(values, standardDev, inPlace) {\n    if (typeof (standardDev) === 'undefined') standardDev = exports.standardDeviation(values);\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n    var l = values.length;\n    var result = inPlace ? values : new Array(l);\n    for (var i = 0; i < l; i++)\n        result[i] = values[i] / standardDev;\n    return result;\n};\n\nexports.cumulativeSum = function cumulativeSum(array) {\n    var l = array.length;\n    var result = new Array(l);\n    result[0] = array[0];\n    for (var i = 1; i < l; i++)\n        result[i] = result[i - 1] + array[i];\n    return result;\n};\n","'use strict';\n\nexports.array = require('./array');\nexports.matrix = require('./matrix');\n","import { array as StatArray } from 'ml-stat';\nexport function normalize(array) {\n    const min = StatArray.min(array[1]);\n    const max = StatArray.max(array[1]);\n    const sum = StatArray.sum(array[1]);\n    const length = array[1] ? array[1].length : 0;\n    if (sum !== 0) {\n        for (let i = 0; i < length; i++) {\n            array[1][i] /= sum;\n        }\n    }\n    return {\n        sum,\n        min,\n        max,\n    };\n}\n//# sourceMappingURL=normalize.js.map","import { extract } from './extract';\nimport { getCommonArray } from './getCommonArray';\nimport { normalize } from './normalize';\nimport { COMMON_SECOND, COMMON_FIRST } from './index';\n// this method will systematically take care of both array\nexport function commonExtractAndNormalize(array1, array2, width, from, to, common) {\n    if (!Array.isArray(array1) || !Array.isArray(array2)) {\n        return {\n            info: undefined,\n            data: undefined,\n        };\n    }\n    const extract1 = extract(array1, from, to);\n    const extract2 = extract(array2, from, to);\n    let common1, common2, info1, info2;\n    if (common & COMMON_SECOND) {\n        common1 = getCommonArray(extract1, extract2, width);\n        info1 = normalize(common1);\n    }\n    else {\n        common1 = extract1;\n        info1 = normalize(common1);\n    }\n    if (common & COMMON_FIRST) {\n        common2 = getCommonArray(extract2, extract1, width);\n        info2 = normalize(common2);\n    }\n    else {\n        common2 = extract2;\n        info2 = normalize(common2);\n    }\n    return {\n        info1,\n        info2,\n        data1: common1,\n        data2: common2,\n    };\n}\n//# sourceMappingURL=commonExtractAndNormalize.js.map","import { extract } from './extract';\nimport { normalize } from './normalize';\nexport function extractAndNormalize(array, from, to) {\n    if (!Array.isArray(array)) {\n        return {\n            info: undefined,\n            data: undefined,\n        };\n    }\n    const newArray = extract(array, from, to);\n    const info = normalize(newArray);\n    return {\n        info,\n        data: newArray,\n    };\n}\n//# sourceMappingURL=extractAndNormalize.js.map","// Adapted from: http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nexport function getIntersection(segment1, segment2) {\n    const p0X = segment1[0][0];\n    const p0Y = segment1[0][1];\n    const p1X = segment1[1][0];\n    const p1Y = segment1[1][1];\n    const p2X = segment2[0][0];\n    const p2Y = segment2[0][1];\n    const p3X = segment2[1][0];\n    const p3Y = segment2[1][1];\n    const s1X = p1X - p0X;\n    const s1Y = p1Y - p0Y;\n    const s2X = p3X - p2X;\n    const s2Y = p3Y - p2Y;\n    const s = (-s1Y * (p0X - p2X) + s1X * (p0Y - p2Y)) / (-s2X * s1Y + s1X * s2Y);\n    const t = (s2X * (p0Y - p2Y) - s2Y * (p0X - p2X)) / (-s2X * s1Y + s1X * s2Y);\n    if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n        return {\n            x: p0X + t * s1X,\n            y: p0Y + t * s1Y,\n        };\n    }\n    return null; // No collision\n}\n//# sourceMappingURL=getIntersection.js.map","import { calculateOverlapFromDiff } from './calculateOverlapFromDiff';\nimport { checkPeaks } from './checkPeaks';\nimport { commonExtractAndNormalize } from './commonExtractAndNormalize';\nimport { extract } from './extract';\nimport { extractAndNormalize } from './extractAndNormalize';\nimport { getCommonArray } from './getCommonArray.js';\nimport { getIntersection } from './getIntersection';\nimport { normalize } from './normalize';\nexport const COMMON_NO = 0;\nexport const COMMON_FIRST = 1;\nexport const COMMON_SECOND = 2;\nexport const COMMON_BOTH = 3;\n/**\n * A number, or a string containing a number.\n * @typedef {([number[],number[]]|[number,number][]|{x:number[],y:number[]})} Peaks\n */\n/**\n * Create a comparator class\n * {object} [options={}]\n * {string} [options.common=''] should we take only common peaks 'first', 'second', 'both', ''\n * {number} [options.widthBottom=2] bottom trapezoid width for similarity evaluation\n * {number} [options.widthTop=1] top trapezoid width for similarity evaluation\n * {number} [options.from] from region used for similarity calculation\n * {number} [options.to] to region used for similarity calculation\n */\nexport class Comparator {\n    constructor(options = {}) {\n        this.array1 = [];\n        this.array2 = [];\n        this.setOptions(options);\n    }\n    /*\n       2 formats are allowed:\n       [[x1,x2,...],[y1,y2,...]] or [[x1,y1],[x2,y2], ...]\n      */\n    setOptions(options = {}) {\n        if (typeof options.common === 'string') {\n            if (options.common.toLowerCase() === 'first') {\n                this.common = COMMON_FIRST;\n            }\n            else if (options.common.toLowerCase() === 'second') {\n                this.common = COMMON_SECOND;\n            }\n            else if (options.common.toLowerCase() === 'both') {\n                this.common = COMMON_BOTH;\n            }\n            else {\n                this.common = COMMON_NO;\n            }\n        }\n        else if (options.common === true) {\n            this.common = COMMON_BOTH;\n        }\n        else {\n            this.common = COMMON_NO;\n        }\n        this.trapezoid = options.trapezoid;\n        this.commonFactor = options.commonFactor || this.commonFactor || 4;\n        const { widthBottom = this.widthBottom || 2, widthTop = this.widthTop || 1, from = this.from, to = this.to, } = options;\n        this.setTrapezoid(widthBottom, widthTop);\n        this.setFromTo(from, to);\n    }\n    /**\n     *\n     * @param {Peaks} peaks\n     */\n    setPeaks1(peaks) {\n        this.array1 = checkPeaks(peaks);\n        if (this.common) {\n            const extracts = commonExtractAndNormalize(this.array1, this.array2, this.widthBottom, this.from, this.to, this.common);\n            this.array1Extract = extracts.data1;\n            this.array1ExtractInfo = extracts.info1;\n            this.array2Extract = extracts.data2;\n            this.array2ExtractInfo = extracts.info2;\n        }\n        else {\n            const extract = extractAndNormalize(this.array1, this.from, this.to);\n            this.array1Extract = extract.data;\n            this.array1ExtractInfo = extract.info;\n        }\n    }\n    /**\n     *\n     * @param {Peaks} peaks\n     */\n    setPeaks2(peaks) {\n        this.array2 = checkPeaks(peaks);\n        if (this.common) {\n            const extracts = commonExtractAndNormalize(this.array1, this.array2, this.widthBottom, this.from, this.to, this.common);\n            this.array1Extract = extracts.data1;\n            this.array1ExtractInfo = extracts.info1;\n            this.array2Extract = extracts.data2;\n            this.array2ExtractInfo = extracts.info2;\n        }\n        else {\n            const extract = extractAndNormalize(this.array2, this.from, this.to);\n            this.array2Extract = extract.data;\n            this.array2ExtractInfo = extract.info;\n        }\n    }\n    getExtract1() {\n        return this.array1Extract;\n    }\n    getExtract2() {\n        return this.array2Extract;\n    }\n    getExtractInfo1() {\n        return this.array1ExtractInfo;\n    }\n    getExtractInfo2() {\n        return this.array2ExtractInfo;\n    }\n    /**\n     * Set the new bottom and top width of the trapezoid\n     * @param {number} newWidthBottom\n     * @param {number} newWidthTop\n     */\n    setTrapezoid(newWidthBottom, newWidthTop) {\n        this.widthTop = newWidthTop;\n        this.widthBottom = newWidthBottom;\n        this.widthSlope = (this.widthBottom - this.widthTop) / 2;\n        if (this.widthBottom < this.widthTop) {\n            throw new Error('widthBottom has to be larger than widthTop');\n        }\n    }\n    /**\n     * Set the from / to for comparison\n     * @param {number} newFrom - set the new from value\n     * @param {number} newTo - set the new to value\n     * @returns\n     */\n    setFromTo(newFrom, newTo) {\n        if (newFrom === this.from && newTo === this.to)\n            return;\n        this.from = newFrom;\n        this.to = newTo;\n        if (this.common) {\n            const extracts = commonExtractAndNormalize(this.array1, this.array2, this.widthBottom, this.from, this.to, this.common, this.commonFactor);\n            this.array1Extract = extracts.data1;\n            this.array1ExtractInfo = extracts.info1;\n            this.array2Extract = extracts.data2;\n            this.array2ExtractInfo = extracts.info2;\n        }\n        else {\n            let extract1 = extractAndNormalize(this.array1, this.from, this.to);\n            this.array1Extract = extract1.data;\n            this.array1ExtractInfo = extract1.info;\n            let extract2 = extractAndNormalize(this.array2, this.from, this.to);\n            this.array2Extract = extract2.data;\n            this.array2ExtractInfo = extract2.info;\n        }\n    }\n    /**\n     *\n     * @param {number} x1\n     * @param {number} y1\n     * @param {number} x2\n     * @param {number} y2\n     * @returns\n     */\n    getOverlap(x1, y1, x2, y2) {\n        if (y1 === 0 || y2 === 0)\n            return 0;\n        // TAKE CARE !!! We multiply the diff by 2 !!!\n        const diff = Math.abs(x1 - x2) * 2;\n        if (diff > this.widthBottom)\n            return 0;\n        if (diff <= this.widthTop) {\n            return Math.min(y1, y2);\n        }\n        const maxValue = (Math.max(y1, y2) * (this.widthBottom - diff)) /\n            (this.widthBottom - this.widthTop);\n        return Math.min(y1, y2, maxValue);\n    }\n    /**\n     * This is the old trapezoid similarity\n     * @param {number} x1\n     * @param {number} y1\n     * @param {number} x2\n     * @param {number} y2\n     * @param {number} widthTop\n     * @param {number} widthBottom\n     * @returns\n     */\n    getOverlapTrapezoid(x1, y1, x2, y2, widthTop, widthBottom) {\n        // eslint-disable-next-line no-console\n        console.error('getOverlapTrapezoid should not be used anymore');\n        const factor = 2 / (widthTop + widthBottom); // correction for surface=1\n        if (y1 === 0 || y2 === 0)\n            return 0;\n        if (x1 === x2) {\n            // they have the same position\n            return Math.min(y1, y2);\n        }\n        const diff = Math.abs(x1 - x2);\n        if (diff >= widthBottom)\n            return 0;\n        if (y1 === y2) {\n            // do they have the same height ???\n            // we need to find the common length\n            if (diff <= widthTop) {\n                return ((widthTop + widthBottom) / 2 - diff) * y1 * factor;\n            }\n            else if (diff <= widthBottom) {\n                return ((((((widthBottom - diff) * y1) / 2) * (diff - widthTop)) /\n                    (widthBottom - widthTop)) *\n                    factor);\n            }\n            return 0;\n        }\n        else {\n            // the height are different and not the same position ...\n            // we need to consider only one segment to find its intersection\n            const small = Math.min(y1, y2);\n            const big = Math.max(y1, y2);\n            const targets = [\n                [\n                    [0, 0],\n                    [this.widthSlope, small],\n                ],\n                [\n                    [this.widthSlope, small],\n                    [this.widthSlope + widthTop, small],\n                ],\n                [\n                    [widthTop + this.widthSlope, small],\n                    [widthBottom, 0],\n                ],\n            ];\n            let segment;\n            if ((x1 > x2 && y1 > y2) || (x1 < x2 && y1 < y2)) {\n                segment = [\n                    [diff, 0],\n                    [diff + this.widthSlope, big],\n                ];\n            }\n            else {\n                segment = [\n                    [diff + this.widthSlope, big],\n                    [diff, 0],\n                ];\n            }\n            for (let i = 0; i < 3; i++) {\n                const intersection = getIntersection(targets[i], segment);\n                if (intersection) {\n                    switch (i) {\n                        case 0:\n                            return small - ((diff * intersection.y) / 2) * factor;\n                        case 1: // to simplify ...\n                            //     console.log(\"           \",widthSlope,small,big,intersection.x)\n                            return ((((this.widthSlope * small) / (2 * big)) * small +\n                                (widthTop + this.widthSlope - intersection.x) * small +\n                                (this.widthSlope * small) / 2) *\n                                factor);\n                        case 2:\n                            return (((widthBottom - diff) * intersection.y) / 2) * factor;\n                        default:\n                            throw new Error(`unexpected intersection value: ${i}`);\n                    }\n                }\n            }\n        }\n        return NaN;\n    }\n    /**\n     * This method calculates the total diff. The sum of positive value will yield to overlap\n     * @returns\n     */\n    calculateDiff() {\n        // we need to take 2 pointers\n        // and travel progressively between them ...\n        const newFirst = [\n            this.array1Extract[0].slice(),\n            this.array1Extract[1].slice(),\n        ];\n        const newSecond = [\n            this.array2Extract[0].slice(),\n            this.array2Extract[1].slice(),\n        ];\n        const array1Length = this.array1Extract[0]\n            ? this.array1Extract[0].length\n            : 0;\n        const array2Length = this.array2Extract[0]\n            ? this.array2Extract[0].length\n            : 0;\n        let pos1 = 0;\n        let pos2 = 0;\n        let previous2 = 0;\n        while (pos1 < array1Length) {\n            const diff = newFirst[0][pos1] - this.array2Extract[0][pos2];\n            if (Math.abs(diff) < this.widthBottom) {\n                // there is some overlap\n                let overlap;\n                if (this.trapezoid) {\n                    // old trapezoid overlap similarity\n                    overlap = this.getOverlapTrapezoid(newFirst[0][pos1], newFirst[1][pos1], newSecond[0][pos2], newSecond[1][pos2], this.widthTop, this.widthBottom);\n                }\n                else {\n                    overlap = this.getOverlap(newFirst[0][pos1], newFirst[1][pos1], newSecond[0][pos2], newSecond[1][pos2], this.widthTop, this.widthBottom);\n                }\n                newFirst[1][pos1] -= overlap;\n                newSecond[1][pos2] -= overlap;\n                if (pos2 < array2Length - 1) {\n                    pos2++;\n                }\n                else {\n                    pos1++;\n                    pos2 = previous2;\n                }\n            }\n            else if (diff > 0 && pos2 < array2Length - 1) {\n                pos2++;\n                previous2 = pos2;\n            }\n            else {\n                pos1++;\n                pos2 = previous2;\n            }\n        }\n        return newSecond;\n    }\n    /**\n     * Set the new peaks and return info\n     * @param {Peaks} newPeaks1\n     * @param {Peaks} newPeaks2\n     * @returns\n     */\n    getSimilarity(newPeaks1, newPeaks2) {\n        if (newPeaks1)\n            this.setPeaks1(newPeaks1);\n        if (newPeaks2)\n            this.setPeaks2(newPeaks2);\n        const diff = this.calculateDiff();\n        return {\n            diff,\n            extract1: this.getExtract1(),\n            extract2: this.getExtract2(),\n            extractInfo1: this.getExtractInfo1(),\n            extractInfo2: this.getExtractInfo2(),\n            similarity: calculateOverlapFromDiff(diff),\n            widthBottom: this.widthBottom,\n            widthTop: this.widthTop,\n        };\n    }\n    /**\n     * This works mainly when you have a array1 that is fixed\n     * newPeaks2 have to be normalized ! (sum to 1)\n     * @param {Peaks} newPeaks2\n     * @param {number} from\n     * @param {number} to\n     * @returns\n     */\n    fastSimilarity(newPeaks2, from, to) {\n        this.array1Extract = extract(this.array1, from, to);\n        this.array2Extract = newPeaks2;\n        if (this.common & COMMON_SECOND) {\n            this.array1Extract = getCommonArray(this.array1Extract, this.array2Extract, this.widthBottom);\n        }\n        normalize(this.array1Extract);\n        const diff = this.calculateDiff();\n        return calculateOverlapFromDiff(diff);\n    }\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPeakChargeBySimilarity = getPeakChargeBySimilarity;\nconst peaks_similarity_1 = require(\"peaks-similarity\");\n/**\n * @param {object}   [options={}]\n * @param {number}   [options.minCharge=1]\n * @param {number}   [options.maxCharge=10]\n * @param {object}   [options.similarity={}]\n * @param {number}   [options.similarity.widthBottom]\n * @param {number}   [options.similarity.widthTop]\n * @param {object}   [options.similarity.widthFunction] - function called with mass that should return an object width containing top and bottom\n * @param {object}   [options.similarity.zone={}]\n * @param {number}   [options.similarity.zone.low=-0.5] - window shift based on observed monoisotopic mass\n * @param {number}   [options.similarity.zone.high=2.5] - to value for the comparison window\n * @param {string}   [options.similarity.common]\n */\nconst NEUTRON_MASS = 1;\nfunction getPeakChargeBySimilarity(spectrum, targetMass, options = {}) {\n    let { similarity = {}, minCharge = 1, maxCharge = 10 } = options;\n    let { zone = {}, widthFunction } = similarity;\n    let { low = -0.5, high = 2.5 } = zone;\n    if (!spectrum || spectrum.data.x.length === 0) {\n        throw new Error('You need to add an experimental spectrum first using setMassSpectrum');\n    }\n    let width = {\n        bottom: similarity.widthBottom,\n        top: similarity.widthTop,\n    };\n    similarity = structuredClone(similarity);\n    similarity.common = 'second';\n    let experimentalData = spectrum.data;\n    let similarityProcessor = new peaks_similarity_1.Comparator(similarity);\n    similarityProcessor.setPeaks1([experimentalData.x, experimentalData.y]);\n    if (widthFunction && typeof widthFunction === 'string') {\n        // eslint-disable-next-line no-new-func\n        widthFunction = new Function('mass', widthFunction);\n        let checkTopBottom = widthFunction(123);\n        if (!checkTopBottom.bottom || !checkTopBottom.top) {\n            throw new Error('widthFunction should return an object with bottom and top properties');\n        }\n    }\n    let fromCharge = minCharge * maxCharge > 0\n        ? Math.round(Math.min(Math.abs(minCharge), Math.abs(maxCharge)))\n        : 1;\n    let toCharge = Math.round(Math.max(Math.abs(minCharge), Math.abs(maxCharge)));\n    let fromIsotope = Math.ceil(low);\n    let toIsotope = Math.floor(high);\n    let isotopeHeight = 1 / (toIsotope - fromIsotope + 1);\n    let results = [];\n    for (let charge = fromCharge; charge < toCharge + 1; charge++) {\n        let isotopePositions = { x: [], y: [] };\n        for (let isotopePosition = fromIsotope; isotopePosition < toIsotope + 1; isotopePosition++) {\n            isotopePositions.x.push(targetMass + (isotopePosition * NEUTRON_MASS) / charge);\n            isotopePositions.y.push(isotopeHeight);\n        }\n        let from = targetMass + low / Math.abs(charge);\n        let to = targetMass + high / Math.abs(charge);\n        similarityProcessor.setFromTo(from, to);\n        if (widthFunction) {\n            width = widthFunction(targetMass);\n            similarityProcessor.setTrapezoid(width.bottom, width.top);\n        }\n        similarityProcessor.setPeaks2([isotopePositions.x, isotopePositions.y]);\n        let result = similarityProcessor.getSimilarity();\n        results.push({ charge, similarity: result.similarity });\n    }\n    return results.sort((a, b) => b.similarity - a.similarity)[0].charge;\n}\n//# sourceMappingURL=getPeakChargeBySimilarity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPeaksWithCharge = getPeaksWithCharge;\n// We can not really take the real value of the neutron because it varies from one element to another.\nconst NEUTRON_MASS = 1;\n/**\n *\n * @param {Array} selectedPeaks\n * @param {Array} allPeaks\n * @param {object} [options={}]\n * @param {number} [options.min=1]\n * @param {number} [options.max=10]\n * @param {number} [options.low=-1]\n * @param {number} [options.high=1]\n * @param {number} [options.precision=30]\n * @returns\n */\nfunction getPeaksWithCharge(selectedPeaks, allPeaks, options = {}) {\n    let { precision = 100, low = -1, high = 1, min: minCharge = 1, max: maxCharge = 10, } = options;\n    let fromCharge = minCharge * maxCharge > 0\n        ? Math.round(Math.min(Math.abs(minCharge), Math.abs(maxCharge)))\n        : 1;\n    let toCharge = Math.round(Math.max(Math.abs(minCharge), Math.abs(maxCharge)));\n    let fromIsotope = Math.ceil(low);\n    let toIsotope = Math.floor(high);\n    let numberIsotopes = toIsotope - fromIsotope + 1;\n    let isotopeIntensity = 1 / numberIsotopes;\n    let fromIndex = 0;\n    let localFromIndex = 0;\n    let localToIndex = 0;\n    const peaksWithCharge = [];\n    for (const peak of selectedPeaks) {\n        let targetMass = peak.x;\n        localFromIndex = fromIndex;\n        let bestCharge = fromCharge;\n        let bestChargeMatch = 0;\n        for (let charge = fromCharge; charge < toCharge + 1; charge++) {\n            let theoreticalPositions = {\n                x: [],\n                y: new Array(numberIsotopes).fill(isotopeIntensity),\n            };\n            let massRange = precision * 1e-6 * targetMass;\n            for (let isotopePosition = fromIsotope; isotopePosition < toIsotope + 1; isotopePosition++) {\n                theoreticalPositions.x.push(targetMass + (isotopePosition * NEUTRON_MASS) / charge);\n            }\n            let fromMass = targetMass + low / Math.abs(charge) - massRange;\n            let toMass = targetMass + high / Math.abs(charge) + massRange;\n            if (charge === 1) {\n                // we may move the fromIndex\n                while (allPeaks[fromIndex].x < fromMass) {\n                    fromIndex++;\n                }\n            }\n            /*\n             * Find the from / to index for the specific peak and specific charge\n             */\n            while (allPeaks[localFromIndex].x < fromMass) {\n                localFromIndex++;\n            }\n            localToIndex = localFromIndex;\n            let localHeightSum = 0;\n            while (localToIndex < allPeaks.length &&\n                allPeaks[localToIndex].x < toMass) {\n                localHeightSum += allPeaks[localToIndex].y;\n                localToIndex++;\n            }\n            localToIndex--;\n            //  console.log({ localFromIndex, localToIndex });\n            /*\n              Calculate the overlap for a specific peak and specific charge\n            */\n            let currentTheoreticalPosition = 0;\n            let theoreticalMaxValue = 1 / numberIsotopes;\n            let totalMatch = 0;\n            for (let index = localFromIndex; index <= localToIndex; index++) {\n                let minMass = theoreticalPositions.x[currentTheoreticalPosition] -\n                    massRange / charge;\n                let maxMass = theoreticalPositions.x[currentTheoreticalPosition] +\n                    massRange / charge;\n                while (maxMass < allPeaks[index].x) {\n                    currentTheoreticalPosition++;\n                    theoreticalMaxValue = 1 / numberIsotopes;\n                    minMass =\n                        theoreticalPositions.x[currentTheoreticalPosition] -\n                            massRange / charge;\n                    maxMass =\n                        theoreticalPositions.x[currentTheoreticalPosition] +\n                            massRange / charge;\n                }\n                while (index < allPeaks.length && allPeaks[index].x < minMass) {\n                    index++;\n                }\n                //    console.log({ index, minMass, maxMass, massRange, localHeightSum });\n                if (index < allPeaks.length && allPeaks[index].x <= maxMass) {\n                    while (index < allPeaks.length && allPeaks[index].x <= maxMass) {\n                        if (allPeaks[index].x >= minMass && allPeaks[index].x <= maxMass) {\n                            let value = allPeaks[index].y / localHeightSum;\n                            //      console.log({ theoreticalMaxValue, value });\n                            value = Math.min(theoreticalMaxValue, value);\n                            theoreticalMaxValue -= value;\n                            totalMatch += value;\n                        }\n                        index++;\n                    }\n                    index--;\n                }\n                if (totalMatch > bestChargeMatch) {\n                    bestCharge = charge;\n                    bestChargeMatch = totalMatch;\n                }\n            }\n        }\n        peaksWithCharge.push({ ...peak, charge: bestCharge });\n    }\n    return peaksWithCharge;\n}\n//# sourceMappingURL=getPeaksWithCharge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isContinuous = isContinuous;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * When a spectrum is continous ?\n * - has more than 100 points\n * - deltaX change can not be more than a factor 2\n * - deltaX may not be larger than 0.1\n * - if y is zero it does not count\n * @param {object} spectrum\n * @param {object} [options={}]\n * @param {number} [options.minLength=100]\n * @param {number} [options.relativeHeightThreshold=0.001] // Under this value the\n * @param {number} [options.maxDeltaRatio=3]\n */\nfunction isContinuous(spectrum, options = {}) {\n    const { minLength = 100, maxDeltaRatio = 3, relativeHeightThreshold = 0.001, } = options;\n    const minHeight = (0, ml_spectra_processing_1.xMaxValue)(spectrum.data.y) * relativeHeightThreshold;\n    const minRadio = 1 / maxDeltaRatio;\n    const maxRatio = 1 * maxDeltaRatio;\n    if (spectrum.continuous === undefined) {\n        let xs = spectrum.data.x;\n        let ys = spectrum.data.y;\n        if (xs.length < minLength) {\n            spectrum.continuous = false;\n        }\n        else {\n            let previousDelta = xs[1] - xs[0];\n            spectrum.continuous = true;\n            let success = 0;\n            let failed = 0;\n            for (let i = 0; i < xs.length - 1; i++) {\n                if (ys[i] < minHeight || ys[i + 1] < minHeight) {\n                    previousDelta = 0;\n                    continue;\n                }\n                let delta = xs[i + 1] - xs[i];\n                if (previousDelta) {\n                    let ratio = delta / previousDelta;\n                    if ((Math.abs(delta) > 0.1 || ratio < minRadio || ratio > maxRatio) &&\n                        ys[i] !== 0 &&\n                        ys[i + 1] !== 0) {\n                        failed++;\n                    }\n                    else {\n                        success++;\n                    }\n                }\n                previousDelta = delta;\n            }\n            if (success / failed < 10) {\n                spectrum.continuous = false;\n            }\n        }\n    }\n    return spectrum.continuous;\n}\n//# sourceMappingURL=isContinuous.js.map","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n","import { isAnyArray } from 'is-any-array';\n/**\n * Apply Savitzky Golay algorithm\n * @param [ys] Array of y values\n * @param [xs] Array of X or deltaX\n * @return  Array containing the new ys (same length)\n */\nexport function sgg(ys, xs, options = {}) {\n    const { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n    if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n        throw new RangeError('Invalid window size (should be odd and at least 5 integer number)');\n    }\n    if (!isAnyArray(ys)) {\n        throw new TypeError('Y values must be an array');\n    }\n    if (typeof xs === 'undefined') {\n        throw new TypeError('X must be defined');\n    }\n    if (windowSize > ys.length) {\n        throw new RangeError(`Window size is higher than the data length ${windowSize}>${ys.length}`);\n    }\n    if (derivative < 0 || !Number.isInteger(derivative)) {\n        throw new RangeError('Derivative should be a positive integer');\n    }\n    if (polynomial < 1 || !Number.isInteger(polynomial)) {\n        throw new RangeError('Polynomial should be a positive integer');\n    }\n    if (polynomial >= 6) {\n        // eslint-disable-next-line no-console\n        console.warn('You should not use polynomial grade higher than 5 if you are' +\n            ' not sure that your data arises from such a model. Possible polynomial oscillation problems');\n    }\n    const half = Math.floor(windowSize / 2);\n    const np = ys.length;\n    const ans = new Float64Array(np);\n    const weights = fullWeights(windowSize, polynomial, derivative);\n    let hs = 0;\n    let constantH = true;\n    if (isAnyArray(xs)) {\n        constantH = false;\n    }\n    else {\n        hs = xs ** derivative;\n    }\n    //For the borders\n    for (let i = 0; i < half; i++) {\n        const wg1 = weights[half - i - 1];\n        const wg2 = weights[half + i + 1];\n        let d1 = 0;\n        let d2 = 0;\n        for (let l = 0; l < windowSize; l++) {\n            d1 += wg1[l] * ys[l];\n            d2 += wg2[l] * ys[np - windowSize + l];\n        }\n        if (constantH) {\n            ans[half - i - 1] = d1 / hs;\n            ans[np - half + i] = d2 / hs;\n        }\n        else {\n            hs = getHs(xs, half - i - 1, half, derivative);\n            ans[half - i - 1] = d1 / hs;\n            hs = getHs(xs, np - half + i, half, derivative);\n            ans[np - half + i] = d2 / hs;\n        }\n    }\n    //For the internal points\n    const wg = weights[half];\n    for (let i = windowSize; i <= np; i++) {\n        let d = 0;\n        for (let l = 0; l < windowSize; l++)\n            d += wg[l] * ys[l + i - windowSize];\n        if (!constantH) {\n            hs = getHs(xs, i - half - 1, half, derivative);\n        }\n        ans[i - half - 1] = d / hs;\n    }\n    return ans;\n}\nfunction getHs(h, center, half, derivative) {\n    let hs = 0;\n    let count = 0;\n    for (let i = center - half; i < center + half; i++) {\n        if (i >= 0 && i < h.length - 1) {\n            hs += h[i + 1] - h[i];\n            count++;\n        }\n    }\n    return (hs / count) ** derivative;\n}\nfunction gramPoly(i, m, k, s) {\n    let Grampoly = 0;\n    if (k > 0) {\n        Grampoly =\n            ((4 * k - 2) / (k * (2 * m - k + 1))) *\n                (i * gramPoly(i, m, k - 1, s) + s * gramPoly(i, m, k - 1, s - 1)) -\n                (((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *\n                    gramPoly(i, m, k - 2, s);\n    }\n    else if (k === 0 && s === 0) {\n        Grampoly = 1;\n    }\n    else {\n        Grampoly = 0;\n    }\n    return Grampoly;\n}\nfunction genFact(a, b) {\n    let gf = 1;\n    if (a >= b) {\n        for (let j = a - b + 1; j <= a; j++) {\n            gf *= j;\n        }\n    }\n    return gf;\n}\nfunction weight(i, t, m, n, s) {\n    let sum = 0;\n    for (let k = 0; k <= n; k++) {\n        sum +=\n            (2 * k + 1) *\n                (genFact(2 * m, k) / genFact(2 * m + k + 1, k + 1)) *\n                gramPoly(i, m, k, 0) *\n                gramPoly(t, m, k, s);\n    }\n    return sum;\n}\n/**\n * @private\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n    const weights = new Array(m);\n    const np = Math.floor(m / 2);\n    for (let t = -np; t <= np; t++) {\n        weights[t + np] = new Float64Array(m);\n        for (let j = -np; j <= np; j++) {\n            weights[t + np][j + np] = weight(j, t, np, n, s);\n        }\n    }\n    return weights;\n}\n//# sourceMappingURL=index.js.map","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n//# sourceMappingURL=constants.js.map","import { ROOT_2LN2, GAUSSIAN_EXP_FACTOR, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport erfinv from '../../../util/erfinv';\nexport class Gaussian {\n    constructor(options = {}) {\n        const { fwhm = 500, sd } = options;\n        this.fwhm = sd ? gaussianWidthToFWHM(2 * sd) : fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return gaussianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return gaussianWidthToFWHM(width);\n    }\n    fct(x) {\n        return gaussianFct(x, this.fwhm);\n    }\n    getArea(height = calculateGaussianHeight({ fwhm: this.fwhm })) {\n        return getGaussianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getGaussianFactor(area);\n    }\n    getData(options = {}) {\n        return getGaussianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateGaussianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport function calculateGaussianHeight(options) {\n    let { fwhm = 500, area = 1, sd } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (2 * area) / ROOT_PI_OVER_LN2 / fwhm;\n}\n/**\n * Calculate the height of the gaussian function of a specific width (fwhm) at a speicifc\n * x position (the gaussian is centered on x=0)\n * @param x\n * @param fwhm\n * @returns y\n */\nexport function gaussianFct(x, fwhm) {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n}\nexport function gaussianWidthToFWHM(width) {\n    return width * ROOT_2LN2;\n}\nexport function gaussianFwhmToWidth(fwhm) {\n    return fwhm / ROOT_2LN2;\n}\nexport function getGaussianArea(options) {\n    let { fwhm = 500, sd, height = 1 } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n}\nexport function getGaussianFactor(area = 0.9999) {\n    return Math.sqrt(2) * erfinv(area);\n}\nexport function getGaussianData(shape = {}, options = {}) {\n    let { fwhm = 500, sd } = shape;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    let { length, factor = getGaussianFactor(), height = calculateGaussianHeight({ fwhm }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = gaussianFct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Gaussian.js.map","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\nexport default function erfinv(x) {\n    let a = 0.147;\n    if (x === 0)\n        return 0;\n    let ln1MinusXSqrd = Math.log(1 - x * x);\n    let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n    let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n    let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n    return secondSqrt * (x > 0 ? 1 : -1);\n}\n//# sourceMappingURL=erfinv.js.map","import { ROOT_THREE } from '../../../util/constants';\nexport class Lorentzian {\n    constructor(options = {}) {\n        const { fwhm = 500 } = options;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return lorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return lorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return lorentzianFct(x, this.fwhm);\n    }\n    getArea(height = 1) {\n        return getLorentzianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getLorentzianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateLorentzianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport const calculateLorentzianHeight = ({ fwhm = 1, area = 1 }) => {\n    return (2 * area) / Math.PI / fwhm;\n};\nexport const getLorentzianArea = (options) => {\n    const { fwhm = 500, height = 1 } = options;\n    return (height * Math.PI * fwhm) / 2;\n};\nexport const lorentzianFct = (x, fwhm) => {\n    return fwhm ** 2 / (4 * x ** 2 + fwhm ** 2);\n};\nexport const lorentzianWidthToFWHM = (width) => {\n    return width * ROOT_THREE;\n};\nexport const lorentzianFwhmToWidth = (fwhm) => {\n    return fwhm / ROOT_THREE;\n};\nexport const getLorentzianFactor = (area = 0.9999) => {\n    if (area >= 1) {\n        throw new Error('area should be (0 - 1)');\n    }\n    const halfResidual = (1 - area) * 0.5;\n    const quantileFunction = (p) => Math.tan(Math.PI * (p - 0.5));\n    return ((quantileFunction(1 - halfResidual) - quantileFunction(halfResidual)) / 2);\n};\nexport const getLorentzianData = (shape = {}, options = {}) => {\n    let { fwhm = 500 } = shape;\n    let { length, factor = getLorentzianFactor(), height = calculateLorentzianHeight({ fwhm, area: 1 }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = lorentzianFct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=Lorentzian.js.map","import { GAUSSIAN_EXP_FACTOR, ROOT_2LN2_MINUS_ONE, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport { gaussianFct, getGaussianFactor } from '../gaussian/Gaussian';\nimport { lorentzianFct, getLorentzianFactor } from '../lorentzian/Lorentzian';\nexport class PseudoVoigt {\n    constructor(options = {}) {\n        const { fwhm = 500, mu = 0.5 } = options;\n        this.mu = mu;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n        return pseudoVoigtFwhmToWidth(fwhm, mu);\n    }\n    widthToFWHM(width, mu = this.mu) {\n        return pseudoVoigtWidthToFWHM(width, mu);\n    }\n    fct(x) {\n        return pseudoVoigtFct(x, this.fwhm, this.mu);\n    }\n    getArea(height = 1) {\n        return getPseudoVoigtArea({ fwhm: this.fwhm, height, mu: this.mu });\n    }\n    getFactor(area) {\n        return getPseudoVoigtFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor, height = calculatePseudoVoigtHeight({\n            fwhm: this.fwhm,\n            mu: this.mu,\n            area: 1,\n        }), } = options;\n        return getPseudoVoigtData(this, { factor, length, height });\n    }\n    calculateHeight(area = 1) {\n        return calculatePseudoVoigtHeight({ fwhm: this.fwhm, mu: this.mu, area });\n    }\n    getParameters() {\n        return ['fwhm', 'mu'];\n    }\n}\nexport const calculatePseudoVoigtHeight = (options = {}) => {\n    let { fwhm = 1, mu = 0.5, area = 1 } = options;\n    return (2 * area) / (fwhm * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI));\n};\nexport const pseudoVoigtFct = (x, fwhm, mu) => {\n    return (1 - mu) * lorentzianFct(x, fwhm) + mu * gaussianFct(x, fwhm);\n};\nexport const pseudoVoigtWidthToFWHM = (width, mu = 0.5) => {\n    return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const pseudoVoigtFwhmToWidth = (fwhm, mu = 0.5) => {\n    return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const getPseudoVoigtArea = (options) => {\n    const { fwhm = 500, height = 1, mu = 0.5 } = options;\n    return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\nexport const getPseudoVoigtFactor = (area = 0.9999, mu = 0.5) => {\n    return mu < 1 ? getLorentzianFactor(area) : getGaussianFactor(area);\n};\nexport const getPseudoVoigtData = (shape = {}, options = {}) => {\n    let { fwhm = 500, mu = 0.5 } = shape;\n    let { length, factor = getPseudoVoigtFactor(0.999, mu), height = calculatePseudoVoigtHeight({ fwhm, mu, area: 1 }), } = options;\n    if (!height) {\n        height =\n            1 /\n                ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                    ((1 - mu) * fwhm * Math.PI) / 2);\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = pseudoVoigtFct(i - center, fwhm, mu) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=PseudoVoigt.js.map","import { ROOT_THREE } from '../../../util/constants';\n/**\n * This shape is a linear combination of rational function (n|n+2), for n = 0 (lorentzian function) and n = 2\n * the parameter that combines those two functions is `gamma` and it is called the kurtosis parameter, it is an\n * implementation of generalized lorentzian shape published by Stanislav Sykora in the SMASH 2010. DOI:10.3247/SL3nmr10.006\n * @link http://www.ebyte.it/stan/Talk_ML_UserMeeting_SMASH_2010_GeneralizedLorentzian.html\n */\nexport class GeneralizedLorentzian {\n    constructor(options = {}) {\n        const { fwhm = 500, gamma = 0.5 } = options;\n        this.fwhm = fwhm;\n        this.gamma = gamma;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return generalizedLorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return generalizedLorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return generalizedLorentzianFct(x, this.fwhm, this.gamma);\n    }\n    getArea(height = 1) {\n        return getGeneralizedLorentzianArea({\n            fwhm: this.fwhm,\n            height,\n            gamma: this.gamma,\n        });\n    }\n    getFactor(area) {\n        return getGeneralizedLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getGeneralizedLorentzianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        const { gamma, fwhm } = this;\n        return calculateGeneralizedLorentzianHeight({ fwhm, area, gamma });\n    }\n    getParameters() {\n        return ['fwhm', 'gamma'];\n    }\n}\nexport const calculateGeneralizedLorentzianHeight = ({ fwhm = 1, gamma = 1, area = 1, }) => {\n    return (area / fwhm / (3.14159 - 0.420894 * gamma)) * 2;\n};\n/**\n * expression of integral generated by Mathematica of the function\n */\nexport const getGeneralizedLorentzianArea = (options) => {\n    const { fwhm = 500, height = 1, gamma = 1 } = options;\n    return (height * fwhm * (3.14159 - 0.420894 * gamma)) / 2;\n};\nexport const generalizedLorentzianFct = (x, fwhm, gamma) => {\n    const u = ((2 * x) / fwhm) ** 2;\n    return (1 - gamma) / (1 + u) + (gamma * (1 + u / 2)) / (1 + u + u ** 2);\n};\nexport const generalizedLorentzianWidthToFWHM = (width) => {\n    return width * ROOT_THREE;\n};\nexport const generalizedLorentzianFwhmToWidth = (fwhm) => {\n    return fwhm / ROOT_THREE;\n};\nexport const getGeneralizedLorentzianFactor = (area = 0.9999) => {\n    if (area >= 1) {\n        throw new Error('area should be (0 - 1)');\n    }\n    const halfResidual = (1 - area) * 0.5;\n    const quantileFunction = (p) => Math.tan(Math.PI * (p - 0.5));\n    return ((quantileFunction(1 - halfResidual) - quantileFunction(halfResidual)) / 2);\n};\nexport const getGeneralizedLorentzianData = (shape = {}, options = {}) => {\n    let { fwhm = 500, gamma = 1 } = shape;\n    let { length, factor = getGeneralizedLorentzianFactor(), height = calculateGeneralizedLorentzianHeight({ fwhm, area: 1, gamma }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = generalizedLorentzianFct(i - center, fwhm, gamma) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=GeneralizedLorentzian.js.map","import { GAUSSIAN_EXP_FACTOR } from '../../../util/constants';\nimport { getGaussianFactor, gaussianFwhmToWidth, gaussianWidthToFWHM, } from '../../1d/gaussian/Gaussian';\nexport class Gaussian2D {\n    constructor(options = {}) {\n        let { fwhm = 20, sd } = options;\n        fwhm = ensureFWHM2D(fwhm, sd);\n        this.fwhmX = fwhm.x;\n        this.fwhmY = fwhm.y;\n    }\n    fct(x, y) {\n        return gaussian2DFct(x, y, this.fwhmX, this.fwhmY);\n    }\n    getData(options = {}) {\n        return getGaussian2DData({\n            fwhm: { x: this.fwhmX, y: this.fwhmY },\n        }, options);\n    }\n    getFactor(volume = 1) {\n        return getGaussianFactor(volume);\n    }\n    getVolume(height = calculateGaussian2DHeight({\n        fwhm: { x: this.fwhmX, y: this.fwhmY },\n        volume: 1,\n    })) {\n        return getGaussian2DVolume({\n            fwhm: { x: this.fwhmX, y: this.fwhmY },\n            height,\n        });\n    }\n    widthToFWHM(width) {\n        return gaussianWidthToFWHM(width);\n    }\n    fwhmToWidth(fwhm) {\n        return gaussianFwhmToWidth(fwhm);\n    }\n    calculateHeight(volume = 1) {\n        return calculateGaussian2DHeight({\n            volume,\n            fwhm: { x: this.fwhmX, y: this.fwhmY },\n        });\n    }\n    set fwhm(fwhm) {\n        fwhm = ensureXYNumber(fwhm);\n        this.fwhmX = fwhm.x;\n        this.fwhmY = fwhm.y;\n    }\n}\nexport const gaussian2DFct = (x, y, xFWHM, yFWHM) => {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * (Math.pow(x / xFWHM, 2) + Math.pow(y / yFWHM, 2)));\n};\nexport const getGaussian2DData = (shape, options = {}) => {\n    let { fwhm = 50, sd } = shape;\n    fwhm = ensureFWHM2D(fwhm, sd);\n    let { factor = getGaussianFactor(), length = { x: 0, y: 0 }, height = calculateGaussian2DHeight({ fwhm, volume: 1 }), } = options;\n    factor = ensureXYNumber(factor);\n    length = ensureXYNumber(length);\n    for (const axis of ['x', 'y']) {\n        if (!length[axis]) {\n            length[axis] = Math.min(Math.ceil(fwhm[axis] * factor[axis]), Math.pow(2, 25) - 1);\n            if (length[axis] % 2 === 0)\n                length[axis]++;\n        }\n    }\n    const xCenter = (length.x - 1) / 2;\n    const yCenter = (length.y - 1) / 2;\n    const data = new Array(length.x);\n    for (let i = 0; i < length.x; i++) {\n        data[i] = new Float64Array(length.y);\n    }\n    for (let i = 0; i < length.x; i++) {\n        for (let j = 0; j < length.y; j++) {\n            data[i][j] =\n                gaussian2DFct(i - xCenter, j - yCenter, fwhm.x, fwhm.y) * height;\n        }\n    }\n    return data;\n};\nexport const calculateGaussian2DHeight = (options = {}) => {\n    let { volume = 1, fwhm = 50, sd } = options;\n    fwhm = ensureFWHM2D(fwhm, sd);\n    return (volume * Math.LN2 * 4) / (Math.PI * fwhm.y * fwhm.x);\n};\nexport const getGaussian2DVolume = (options = {}) => {\n    let { fwhm = 50, height = 1, sd } = options;\n    fwhm = ensureFWHM2D(fwhm, sd);\n    return (height * Math.PI * fwhm.y * fwhm.x) / Math.LN2 / 4;\n};\nfunction ensureXYNumber(input) {\n    return typeof input !== 'object' ? { x: input, y: input } : { ...input };\n}\nfunction ensureFWHM2D(fwhm, sd) {\n    if (sd !== undefined) {\n        let sdObject = ensureXYNumber(sd);\n        return {\n            x: gaussianWidthToFWHM(2 * sdObject.x),\n            y: gaussianWidthToFWHM(2 * sdObject.y),\n        };\n    }\n    else if (fwhm !== undefined) {\n        return ensureXYNumber(fwhm);\n    }\n    else {\n        throw new Error('ensureFWHM2D must have either fwhm or sd defined');\n    }\n}\n//# sourceMappingURL=Gaussian2D.js.map","import { Gaussian } from './gaussian/Gaussian';\nimport { GeneralizedLorentzian } from './generalizedLorentzian/GeneralizedLorentzian';\nimport { Lorentzian } from './lorentzian/Lorentzian';\nimport { PseudoVoigt } from './pseudoVoigt/PseudoVoigt';\n/**\n * Generate a instance of a specific kind of shape.\n */\nexport function getShape1D(shape) {\n    const { kind } = shape;\n    switch (kind) {\n        case 'gaussian':\n            return new Gaussian(shape);\n        case 'lorentzian':\n            return new Lorentzian(shape);\n        case 'pseudoVoigt':\n            return new PseudoVoigt(shape);\n        case 'generalizedLorentzian':\n            return new GeneralizedLorentzian(shape);\n        default: {\n            throw Error(`Unknown distribution ${kind}`);\n        }\n    }\n}\n//# sourceMappingURL=getShape1D.js.map","import { Gaussian2D } from './gaussian2D/Gaussian2D';\n/**\n * Generate a instance of a specific kind of shape.\n */\nexport function getShape2D(shape) {\n    const { kind } = shape;\n    switch (kind) {\n        case 'gaussian':\n            return new Gaussian2D(shape);\n        default: {\n            const unHandled = kind;\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            throw Error(`Unknown distribution ${unHandled}`);\n        }\n    }\n}\n//# sourceMappingURL=getShape2D.js.map","/**\n * Asserts that value is truthy.\n *\n * @param value - Value to check.\n * @param message - Optional error message to throw.\n */\nexport function assert(value, message) {\n    if (!value) {\n        throw new Error(message ? message : 'unreachable');\n    }\n}\n//# sourceMappingURL=assert.js.map","export const DefaultParameters = {\n    x: {\n        init: (peak) => peak.x,\n        min: (peak, peakShape) => peak.x - peakShape.fwhm * 2,\n        max: (peak, peakShape) => peak.x + peakShape.fwhm * 2,\n        gradientDifference: (peak, peakShape) => peakShape.fwhm * 2e-3,\n    },\n    y: {\n        init: (peak) => peak.y,\n        min: (peak) => (peak.y < 0 ? -1.1 : 0),\n        max: (peak) => (peak.y < 0 ? 0 : 1.1),\n        gradientDifference: () => 1e-3,\n    },\n    fwhm: {\n        init: (peak, peakShape) => peakShape.fwhm,\n        min: (peak, peakShape) => peakShape.fwhm * 0.25,\n        max: (peak, peakShape) => peakShape.fwhm * 4,\n        gradientDifference: (peak, peakShape) => peakShape.fwhm * 2e-3,\n    },\n    mu: {\n        init: (peak, peakShape) => peakShape.mu,\n        min: () => 0,\n        max: () => 1,\n        gradientDifference: () => 0.01,\n    },\n    gamma: {\n        init: (peak, peakShape) => peakShape.gamma || 0.5,\n        min: () => -1,\n        max: () => 2,\n        gradientDifference: () => 0.01,\n    },\n};\n//# sourceMappingURL=DefaultParameters.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nimport { assert } from '../assert';\nimport { DefaultParameters } from './DefaultParameters';\nconst properties = ['init', 'min', 'max', 'gradientDifference'];\n/**\n * Return an array of internalPeaks that contains the exact init, min, max values based on the options\n * @param peaks\n * @param options\n * @returns\n */\nexport function getInternalPeaks(peaks, minMaxY, options = {}) {\n    let index = 0;\n    const internalPeaks = [];\n    const { baseline: shiftValue = minMaxY.min } = options;\n    const normalizedPeaks = peaks.map((peak) => {\n        return {\n            ...peak,\n            y: (peak.y - shiftValue) / minMaxY.range,\n        };\n    });\n    for (const peak of normalizedPeaks) {\n        const { id, shape = options.shape ? options.shape : { kind: 'gaussian' } } = peak;\n        const shapeFct = getShape1D(shape);\n        const parameters = ['x', 'y', ...shapeFct.getParameters()];\n        const propertiesValues = {\n            min: [],\n            max: [],\n            init: [],\n            gradientDifference: [],\n        };\n        for (const parameter of parameters) {\n            for (const property of properties) {\n                // check if the property is specified in the peak\n                let propertyValue = peak?.parameters?.[parameter]?.[property];\n                if (propertyValue) {\n                    propertyValue = getNormalizedValue(propertyValue, parameter, property, minMaxY, options.baseline);\n                    propertiesValues[property].push(propertyValue);\n                    continue;\n                }\n                // check if there are some global option, it could be a number or a callback\n                let generalParameterValue = options?.parameters?.[parameter]?.[property];\n                if (generalParameterValue) {\n                    if (typeof generalParameterValue === 'number') {\n                        generalParameterValue = getNormalizedValue(generalParameterValue, parameter, property, minMaxY, options.baseline);\n                        propertiesValues[property].push(generalParameterValue);\n                        continue;\n                    }\n                    else {\n                        let value = generalParameterValue(peak);\n                        value = getNormalizedValue(value, parameter, property, minMaxY, options.baseline);\n                        propertiesValues[property].push(value);\n                        continue;\n                    }\n                }\n                // we just need to take the default parameters\n                assert(DefaultParameters[parameter], `No default parameter for ${parameter}`);\n                const defaultParameterValues = DefaultParameters[parameter][property];\n                //@ts-expect-error should never happen\n                propertiesValues[property].push(defaultParameterValues(peak, shapeFct));\n            }\n        }\n        const fromIndex = index;\n        const toIndex = fromIndex + parameters.length - 1;\n        index += toIndex - fromIndex + 1;\n        internalPeaks.push({\n            id,\n            shape,\n            shapeFct,\n            parameters,\n            propertiesValues,\n            fromIndex,\n            toIndex,\n        });\n    }\n    return internalPeaks;\n}\nfunction getNormalizedValue(value, parameter, property, minMaxY, baseline) {\n    if (parameter === 'y') {\n        if (property === 'gradientDifference') {\n            return value;\n        }\n        else {\n            return baseline !== undefined\n                ? (value - baseline) / minMaxY.range\n                : (value - minMaxY.min) / minMaxY.range;\n        }\n    }\n    return value;\n}\n//# sourceMappingURL=getInternalPeaks.js.map","/**\n * the sum of the weighted squares of the errors (or weighted residuals) between the data.y\n * and the curve-fit function.\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {ArrayLike<number>} parameters - Array of current parameter values\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {ArrayLike<number>} weightSquare - Square of weights\n * @return {number}\n */\nexport default function errorCalculation(data, parameters, parameterizedFunction, weightSquare) {\n    let error = 0;\n    const func = parameterizedFunction(parameters);\n    for (let i = 0; i < data.x.length; i++) {\n        error += Math.pow(data.y[i] - func(data.x[i]), 2) / weightSquare[i];\n    }\n    return error;\n}\n//# sourceMappingURL=errorCalculation.js.map","import { inverse, Matrix } from 'ml-matrix';\nimport gradientFunction from './gradientFunction';\n/**\n * Matrix function over the samples\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {ArrayLike<number>} evaluatedData - Array of previous evaluated function values\n * @return {Matrix}\n */\nfunction matrixFunction(data, evaluatedData) {\n    const m = data.x.length;\n    let ans = new Matrix(m, 1);\n    for (let point = 0; point < m; point++) {\n        ans.set(point, 0, data.y[point] - evaluatedData[point]);\n    }\n    return ans;\n}\n/**\n * Iteration for Levenberg-Marquardt\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number} damping - Levenberg-Marquardt parameter\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n */\nexport default function step(data, params, damping, gradientDifference, parameterizedFunction, centralDifference, weights) {\n    let value = damping;\n    let identity = Matrix.eye(params.length, params.length, value);\n    const func = parameterizedFunction(params);\n    let evaluatedData = new Float64Array(data.x.length);\n    for (let i = 0; i < data.x.length; i++) {\n        evaluatedData[i] = func(data.x[i]);\n    }\n    let gradientFunc = gradientFunction(data, evaluatedData, params, gradientDifference, parameterizedFunction, centralDifference);\n    let residualError = matrixFunction(data, evaluatedData);\n    let inverseMatrix = inverse(identity.add(gradientFunc.mmul(gradientFunc.transpose().scale('row', { scale: weights }))));\n    let jacobianWeightResidualError = gradientFunc.mmul(residualError.scale('row', { scale: weights }));\n    let perturbations = inverseMatrix.mmul(jacobianWeightResidualError);\n    return {\n        perturbations,\n        jacobianWeightResidualError,\n    };\n}\n//# sourceMappingURL=step.js.map","import { Matrix } from 'ml-matrix';\n/**\n * Difference of the matrix function over the parameters\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {ArrayLike<number>} evaluatedData - Array of previous evaluated function values\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} paramFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Matrix}\n */\nexport default function gradientFunction(data, evaluatedData, params, gradientDifference, paramFunction, centralDifference) {\n    const nbParams = params.length;\n    const nbPoints = data.x.length;\n    let ans = Matrix.zeros(nbParams, nbPoints);\n    let rowIndex = 0;\n    for (let param = 0; param < nbParams; param++) {\n        if (gradientDifference[param] === 0)\n            continue;\n        let delta = gradientDifference[param];\n        let auxParams = params.slice();\n        auxParams[param] += delta;\n        let funcParam = paramFunction(auxParams);\n        if (!centralDifference) {\n            for (let point = 0; point < nbPoints; point++) {\n                ans.set(rowIndex, point, (evaluatedData[point] - funcParam(data.x[point])) / delta);\n            }\n        }\n        else {\n            auxParams = params.slice();\n            auxParams[param] -= delta;\n            delta *= 2;\n            let funcParam2 = paramFunction(auxParams);\n            for (let point = 0; point < nbPoints; point++) {\n                ans.set(rowIndex, point, (funcParam2(data.x[point]) - funcParam(data.x[point])) / delta);\n            }\n        }\n        rowIndex++;\n    }\n    return ans;\n}\n//# sourceMappingURL=gradientFunction.js.map","import checkOptions from './checkOptions';\nimport errorCalculation from './errorCalculation';\nimport step from './step';\n/**\n * Curve fitting algorithm\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {function} parameterizedFunction - Takes an array of parameters and returns a function with the independent variable as its sole argument\n * @param {object} options - Options object\n * @param {ArrayLike<number>} options.initialValues - Array of initial parameter values\n * @param {number|ArrayLike<number>} [options.weights = 1] - weighting vector, if the length does not match with the number of data points, the vector is reconstructed with first value.\n * @param {number} [options.damping = 1e-2] - Levenberg-Marquardt parameter, small values of the damping parameter λ result in a Gauss-Newton update and large\nvalues of λ result in a gradient descent update\n * @param {number} [options.dampingStepDown = 9] - factor to reduce the damping (Levenberg-Marquardt parameter) when there is not an improvement when updating parameters.\n * @param {number} [options.dampingStepUp = 11] - factor to increase the damping (Levenberg-Marquardt parameter) when there is an improvement when updating parameters.\n * @param {number} [options.improvementThreshold = 1e-3] - the threshold to define an improvement through an update of parameters\n * @param {number|ArrayLike<number>} [options.gradientDifference = 10e-2] - The step size to approximate the jacobian matrix\n * @param {boolean} [options.centralDifference = false] - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {ArrayLike<number>} [options.minValues] - Minimum allowed values for parameters\n * @param {ArrayLike<number>} [options.maxValues] - Maximum allowed values for parameters\n * @param {number} [options.maxIterations = 100] - Maximum of allowed iterations\n * @param {number} [options.errorTolerance = 10e-3] - Minimum uncertainty allowed for each point.\n * @param {number} [options.timeout] - maximum time running before throw in seconds.\n * @return {{parameterValues: Array<number>, parameterError: number, iterations: number}}\n */\nexport function levenbergMarquardt(data, parameterizedFunction, options) {\n    let { checkTimeout, minValues, maxValues, parameters, weightSquare, damping, dampingStepUp, dampingStepDown, maxIterations, errorTolerance, centralDifference, gradientDifference, improvementThreshold, } = checkOptions(data, parameterizedFunction, options);\n    let error = errorCalculation(data, parameters, parameterizedFunction, weightSquare);\n    let optimalError = error;\n    let optimalParameters = parameters.slice();\n    let converged = error <= errorTolerance;\n    let iteration = 0;\n    for (; iteration < maxIterations && !converged; iteration++) {\n        let previousError = error;\n        let { perturbations, jacobianWeightResidualError } = step(data, parameters, damping, gradientDifference, parameterizedFunction, centralDifference, weightSquare);\n        for (let k = 0; k < parameters.length; k++) {\n            parameters[k] = Math.min(Math.max(minValues[k], parameters[k] - perturbations.get(k, 0)), maxValues[k]);\n        }\n        error = errorCalculation(data, parameters, parameterizedFunction, weightSquare);\n        if (isNaN(error))\n            break;\n        if (error < optimalError - errorTolerance) {\n            optimalError = error;\n            optimalParameters = parameters.slice();\n        }\n        let improvementMetric = (previousError - error) /\n            perturbations\n                .transpose()\n                .mmul(perturbations.mul(damping).add(jacobianWeightResidualError))\n                .get(0, 0);\n        if (improvementMetric > improvementThreshold) {\n            damping = Math.max(damping / dampingStepDown, 1e-7);\n        }\n        else {\n            damping = Math.min(damping * dampingStepUp, 1e7);\n        }\n        if (checkTimeout()) {\n            throw new Error(`The execution time is over to ${options.timeout} seconds`);\n        }\n        converged = error <= errorTolerance;\n    }\n    return {\n        parameterValues: optimalParameters,\n        parameterError: optimalError,\n        iterations: iteration,\n    };\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\nexport default function checkOptions(data, parameterizedFunction, options) {\n    let { timeout, minValues, maxValues, initialValues, weights = 1, damping = 1e-2, dampingStepUp = 11, dampingStepDown = 9, maxIterations = 100, errorTolerance = 1e-7, centralDifference = false, gradientDifference = 10e-2, improvementThreshold = 1e-3, } = options;\n    if (damping <= 0) {\n        throw new Error('The damping option must be a positive number');\n    }\n    else if (!data.x || !data.y) {\n        throw new Error('The data parameter must have x and y elements');\n    }\n    else if (!isAnyArray(data.x) ||\n        data.x.length < 2 ||\n        !isAnyArray(data.y) ||\n        data.y.length < 2) {\n        throw new Error('The data parameter elements must be an array with more than 2 points');\n    }\n    else if (data.x.length !== data.y.length) {\n        throw new Error('The data parameter elements must have the same size');\n    }\n    if (!(initialValues && initialValues.length > 0)) {\n        throw new Error('The initialValues option is mandatory and must be an array');\n    }\n    let parameters = initialValues;\n    let nbPoints = data.y.length;\n    let parLen = parameters.length;\n    maxValues = maxValues || new Array(parLen).fill(Number.MAX_SAFE_INTEGER);\n    minValues = minValues || new Array(parLen).fill(Number.MIN_SAFE_INTEGER);\n    if (maxValues.length !== minValues.length) {\n        throw new Error('minValues and maxValues must be the same size');\n    }\n    if (typeof gradientDifference === 'number') {\n        gradientDifference = new Array(parameters.length).fill(gradientDifference);\n    }\n    else if (isAnyArray(gradientDifference)) {\n        if (gradientDifference.length !== parLen) {\n            gradientDifference = new Array(parLen).fill(gradientDifference[0]);\n        }\n    }\n    else {\n        throw new Error('gradientDifference should be a number or array with length equal to the number of parameters');\n    }\n    let filler;\n    if (typeof weights === 'number') {\n        let value = 1 / weights ** 2;\n        filler = () => value;\n    }\n    else if (isAnyArray(weights)) {\n        if (weights.length < data.x.length) {\n            let value = 1 / weights[0] ** 2;\n            filler = () => value;\n        }\n        else {\n            filler = (i) => 1 / weights[i] ** 2;\n        }\n    }\n    else {\n        throw new Error('weights should be a number or array with length equal to the number of data points');\n    }\n    let checkTimeout;\n    if (timeout !== undefined) {\n        if (typeof timeout !== 'number') {\n            throw new Error('timeout should be a number');\n        }\n        let endTime = Date.now() + timeout * 1000;\n        checkTimeout = () => Date.now() > endTime;\n    }\n    else {\n        checkTimeout = () => false;\n    }\n    let weightSquare = new Array(data.x.length);\n    for (let i = 0; i < nbPoints; i++) {\n        weightSquare[i] = filler(i);\n    }\n    return {\n        checkTimeout,\n        minValues,\n        maxValues,\n        parameters,\n        weightSquare,\n        damping,\n        dampingStepUp,\n        dampingStepDown,\n        maxIterations,\n        errorTolerance,\n        centralDifference,\n        gradientDifference,\n        improvementThreshold,\n    };\n}\n//# sourceMappingURL=checkOptions.js.map","/**\n * Preparata, F. P., & Shamos, M. I. (2012). Computational geometry: an introduction. Springer Science & Business Media.\n * @param {Array} x - The array with x coordinates of the points.\n * @param {Array} y - The array with y coordinates of the points.\n * @return {Array} The indices of the points of anticlockwise lower convex hull\n * @private\n */\nexport default function antiLowerConvexHull(x, y) {\n  if (x.length !== y.length) {\n    throw new RangeError('X and Y vectors has different dimensions');\n  }\n\n  const nbPoints = x.length - 1;\n  if (nbPoints === 0) return [0];\n  if (nbPoints === 1) return [0, 1];\n\n  let currentPoint = 0;\n  let result = new Array(x.length).fill(true);\n  while (true) {\n    const a = currentPoint;\n    const b = moveOn(currentPoint, nbPoints, result);\n    const c = moveOn(moveOn(currentPoint, nbPoints, result), nbPoints, result);\n\n    const det =\n      x[c] * (y[a] - y[b]) + x[a] * (y[b] - y[c]) + x[b] * (y[c] - y[a]);\n\n    const leftTurn = det >= 0;\n\n    if (leftTurn) {\n      currentPoint = b;\n    } else {\n      result[b] = false;\n      currentPoint = moveBack(currentPoint, nbPoints, result);\n    }\n    if (c === nbPoints) break;\n  }\n\n  return result\n    .map((item, index) => (item === false ? false : index))\n    .filter((item) => item !== false);\n}\n\n/**\n * @param {number} currentPoint - The index of the current point to make the move\n * @param {number} nbPoints - The total number of points in the array\n * @param {Array} vector - The array with the points\n * @return {number} the index of the point after the move\n * @private\n */\n\nfunction moveBack(currentPoint, nbPoints, vector) {\n  let counter = currentPoint - 1;\n  while (vector[counter] === false) counter--;\n  return currentPoint === 0 ? nbPoints : counter;\n}\n\nfunction moveOn(currentPoint, nbPoints, vector) {\n  let counter = currentPoint + 1;\n  while (vector[counter] === false) counter++;\n  return currentPoint === nbPoints ? 0 : counter;\n}\n","import { xNorm, xMaxValue, xMinValue } from 'ml-spectra-processing';\n\nimport antiLowerConvexHull from './util/antiLowerConvexHull';\n\n/**\n * Performs a global optimization of required parameters\n * It will return an object containing:\n * - `minFunctionValue`: The minimum value found for the objetive function\n * - `optima`: Array of Array of values for all the variables where the function reach its minimum value\n * - `iterations`: Number of iterations performed in the process\n * - `finalState`: Internal state allowing to continue optimization (initialState)\n * @param {function} objectiveFunction Function to evaluate. It should accept an array of variables\n * @param {Array} lowerBoundaries Array containing for each variable the lower boundary\n * @param {Array} upperBoundaries Array containing for each variable the higher boundary\n * @param {Object} [options={}]\n * @param {number} [options.iterations] - Number of iterations.\n * @param {number} [options.epsilon] - Tolerance to choose best current value.\n * @param {number} [options.tolerance] - Minimum tollerance of the function.\n * @param {number} [options.tolerance2] - Minimum tollerance of the function.\n * @param {Object} [options.initialState={}}] - finalState of previous optimization.\n * @return {Object} {finalState, iterations, minFunctionValue}\n * */\n\nexport default function direct(\n  objectiveFunction,\n  lowerBoundaries,\n  upperBoundaries,\n  options = {},\n) {\n  const {\n    iterations = 50,\n    epsilon = 1e-4,\n    tolerance = 1e-16,\n    tolerance2 = 1e-12,\n    initialState = {},\n  } = options;\n\n  if (\n    objectiveFunction === undefined ||\n    lowerBoundaries === undefined ||\n    upperBoundaries === undefined\n  ) {\n    throw new RangeError('There is something undefined');\n  }\n\n  lowerBoundaries = new Float64Array(lowerBoundaries);\n  upperBoundaries = new Float64Array(upperBoundaries);\n\n  if (lowerBoundaries.length !== upperBoundaries.length) {\n    throw new Error(\n      'Lower bounds and Upper bounds for x are not of the same length',\n    );\n  }\n\n  //-------------------------------------------------------------------------\n  //                        STEP 1. Initialization\n  //-------------------------------------------------------------------------\n  let n = lowerBoundaries.length;\n  let diffBorders = upperBoundaries.map((x, i) => x - lowerBoundaries[i]);\n\n  let {\n    numberOfRectangles = 0,\n    totalIterations = 0,\n    unitaryCoordinates = [new Float64Array(n).fill(0.5)],\n    middlePoint = new Float64Array(n).map((value, index) => {\n      return (\n        lowerBoundaries[index] +\n        unitaryCoordinates[0][index] * diffBorders[index]\n      );\n    }),\n    bestCurrentValue = objectiveFunction(middlePoint),\n    fCalls = 1,\n    smallerDistance = 0,\n    edgeSizes = [new Float64Array(n).fill(0.5)],\n    diagonalDistances = [Math.sqrt(n * 0.5 ** 2)],\n    functionValues = [bestCurrentValue],\n    differentDistances = diagonalDistances,\n    smallerValuesByDistance = [bestCurrentValue],\n    choiceLimit = undefined,\n  } = initialState;\n  if (\n    initialState.originalCoordinates &&\n    initialState.originalCoordinates.length > 0\n  ) {\n    bestCurrentValue = xMinValue(functionValues);\n    choiceLimit =\n      epsilon * Math.abs(bestCurrentValue) > 1e-8\n        ? epsilon * Math.abs(bestCurrentValue)\n        : 1e-8;\n\n    smallerDistance = getMinIndex(\n      functionValues,\n      diagonalDistances,\n      choiceLimit,\n      bestCurrentValue,\n    );\n\n    unitaryCoordinates = initialState.originalCoordinates.slice();\n    for (let j = 0; j < unitaryCoordinates.length; j++) {\n      for (let i = 0; i < lowerBoundaries.length; i++) {\n        unitaryCoordinates[j][i] =\n          (unitaryCoordinates[j][i] - lowerBoundaries[i]) / diffBorders[i];\n      }\n    }\n  }\n\n  let iteration = 0;\n  //-------------------------------------------------------------------------\n  //                          Iteration loop\n  //-------------------------------------------------------------------------\n\n  while (iteration < iterations) {\n    //----------------------------------------------------------------------\n    //  STEP 2. Identify the set S of all potentially optimal rectangles\n    //----------------------------------------------------------------------\n\n    let S1 = [];\n    let idx = differentDistances.findIndex(\n      // eslint-disable-next-line no-loop-func\n      (e) => e === diagonalDistances[smallerDistance],\n    );\n    let counter = 0;\n    for (let i = idx; i < differentDistances.length; i++) {\n      for (let f = 0; f < functionValues.length; f++) {\n        if (\n          (functionValues[f] === smallerValuesByDistance[i]) &\n          (diagonalDistances[f] === differentDistances[i])\n        ) {\n          S1[counter++] = f;\n        }\n      }\n    }\n\n    let optimumValuesIndex, S3;\n    if (differentDistances.length - idx > 1) {\n      let a1 = diagonalDistances[smallerDistance];\n      let b1 = functionValues[smallerDistance];\n      let a2 = differentDistances[differentDistances.length - 1];\n      let b2 = smallerValuesByDistance[differentDistances.length - 1];\n      let slope = (b2 - b1) / (a2 - a1);\n      let constant = b1 - slope * a1;\n      let S2 = new Uint32Array(counter);\n      counter = 0;\n      for (let i = 0; i < S2.length; i++) {\n        let j = S1[i];\n        if (\n          functionValues[j] <=\n          slope * diagonalDistances[j] + constant + tolerance2\n        ) {\n          S2[counter++] = j;\n        }\n      }\n\n      let xHull = [];\n      let yHull = [];\n      for (let i = 0; i < counter; i++) {\n        xHull.push(diagonalDistances[S2[i]]);\n        yHull.push(functionValues[S2[i]]);\n      }\n\n      let lowerIndexHull = antiLowerConvexHull(xHull, yHull);\n\n      S3 = [];\n      for (let i = 0; i < lowerIndexHull.length; i++) {\n        S3.push(S2[lowerIndexHull[i]]);\n      }\n    } else {\n      S3 = S1.slice(0, counter);\n    }\n    optimumValuesIndex = S3;\n    //--------------------------------------------------------------\n    // STEPS 3,5: Select any rectangle j in S\n    //--------------------------------------------------------------\n    for (let k = 0; k < optimumValuesIndex.length; k++) {\n      let j = optimumValuesIndex[k];\n      let largerSide = xMaxValue(edgeSizes[j]);\n      let largeSidesIndex = new Uint32Array(edgeSizes[j].length);\n      counter = 0;\n      for (let i = 0; i < edgeSizes[j].length; i++) {\n        if (Math.abs(edgeSizes[j][i] - largerSide) < tolerance) {\n          largeSidesIndex[counter++] = i;\n        }\n      }\n      let delta = (2 * largerSide) / 3;\n      let bestFunctionValues = [];\n      for (let r = 0; r < counter; r++) {\n        let i = largeSidesIndex[r];\n        let firstMiddleCenter = unitaryCoordinates[j].slice();\n        let secondMiddleCenter = unitaryCoordinates[j].slice();\n        firstMiddleCenter[i] += delta;\n        secondMiddleCenter[i] -= delta;\n        let firstMiddleValue = new Float64Array(firstMiddleCenter.length);\n        let secondMiddleValue = new Float64Array(secondMiddleCenter.length);\n        for (let i = 0; i < firstMiddleCenter.length; i++) {\n          firstMiddleValue[i] =\n            lowerBoundaries[i] + firstMiddleCenter[i] * diffBorders[i];\n          secondMiddleValue[i] =\n            lowerBoundaries[i] + secondMiddleCenter[i] * diffBorders[i];\n        }\n        let firstMinValue = objectiveFunction(firstMiddleValue);\n        let secondMinValue = objectiveFunction(secondMiddleValue);\n        fCalls += 2;\n        bestFunctionValues.push({\n          minValue: Math.min(firstMinValue, secondMinValue),\n          index: r,\n        });\n        // [Math.min(firstMinValue, secondMinValue), r];\n        unitaryCoordinates.push(firstMiddleCenter, secondMiddleCenter);\n        functionValues.push(firstMinValue, secondMinValue);\n      }\n\n      let b = bestFunctionValues.sort((a, b) => a.minValue - b.minValue);\n      for (let r = 0; r < counter; r++) {\n        let u = largeSidesIndex[b[r].index];\n        let ix1 = numberOfRectangles + 2 * (b[r].index + 1) - 1;\n        let ix2 = numberOfRectangles + 2 * (b[r].index + 1);\n        edgeSizes[j][u] = delta / 2;\n        edgeSizes[ix1] = edgeSizes[j].slice();\n        edgeSizes[ix2] = edgeSizes[j].slice();\n        diagonalDistances[j] = xNorm(edgeSizes[j]);\n        diagonalDistances[ix1] = diagonalDistances[j];\n        diagonalDistances[ix2] = diagonalDistances[j];\n      }\n      numberOfRectangles += 2 * counter;\n    }\n\n    //--------------------------------------------------------------\n    //                  Update\n    //--------------------------------------------------------------\n\n    bestCurrentValue = xMinValue(functionValues);\n\n    choiceLimit =\n      epsilon * Math.abs(bestCurrentValue) > 1e-8\n        ? epsilon * Math.abs(bestCurrentValue)\n        : 1e-8;\n\n    smallerDistance = getMinIndex(\n      functionValues,\n      diagonalDistances,\n      choiceLimit,\n      bestCurrentValue,\n      iteration,\n    );\n\n    differentDistances = Array.from(new Set(diagonalDistances));\n    differentDistances = differentDistances.sort((a, b) => a - b);\n\n    smallerValuesByDistance = [];\n    for (let i = 0; i < differentDistances.length; i++) {\n      let minIndex;\n      let minValue = Number.POSITIVE_INFINITY;\n      for (let k = 0; k < diagonalDistances.length; k++) {\n        if (diagonalDistances[k] === differentDistances[i]) {\n          if (functionValues[k] < minValue) {\n            minValue = functionValues[k];\n            minIndex = k;\n          }\n        }\n      }\n      smallerValuesByDistance.push(functionValues[minIndex]);\n    }\n\n    let currentMin = [];\n    for (let j = 0; j < functionValues.length; j++) {\n      if (functionValues[j] === bestCurrentValue) {\n        let temp = [];\n        for (let i = 0; i < lowerBoundaries.length; i++) {\n          temp.push(\n            lowerBoundaries[i] + unitaryCoordinates[j][i] * diffBorders[i],\n          );\n        }\n        currentMin.push(temp);\n      }\n    }\n    iteration += 1;\n  }\n  //--------------------------------------------------------------\n  //                  Saving results\n  //--------------------------------------------------------------\n\n  let result = {};\n  result.minFunctionValue = bestCurrentValue;\n  result.iterations = iteration;\n  let originalCoordinates = [];\n  for (let j = 0; j < numberOfRectangles + 1; j++) {\n    let pair = [];\n    for (let i = 0; i < lowerBoundaries.length; i++) {\n      pair.push(lowerBoundaries[i] + unitaryCoordinates[j][i] * diffBorders[i]);\n    }\n    originalCoordinates.push(pair);\n  }\n\n  result.finalState = {\n    numberOfRectangles,\n    totalIterations: (totalIterations += iterations),\n    originalCoordinates,\n    middlePoint,\n    fCalls,\n    smallerDistance,\n    edgeSizes,\n    diagonalDistances,\n    functionValues,\n    differentDistances,\n    smallerValuesByDistance,\n    choiceLimit,\n  };\n\n  let minimizer = [];\n  for (let i = 0; i < functionValues.length; i++) {\n    if (functionValues[i] === bestCurrentValue) {\n      minimizer.push(originalCoordinates[i]);\n    }\n  }\n\n  result.optima = minimizer;\n  return result;\n}\n\nfunction getMinIndex(\n  functionValues,\n  diagonalDistances,\n  choiceLimit,\n  bestCurrentValue,\n) {\n  let item = [];\n  for (let i = 0; i < functionValues.length; i++) {\n    item[i] =\n      Math.abs(functionValues[i] - (bestCurrentValue + choiceLimit)) /\n      diagonalDistances[i];\n  }\n  const min = xMinValue(item);\n  let result = item.findIndex((x) => x === min);\n  return result;\n}\n","import direct from 'ml-direct';\nexport function directOptimization(data, sumOfShapes, options) {\n    const { minValues, maxValues, maxIterations, epsilon, tolerance, tolerance2, initialState, } = options;\n    const objectiveFunction = getObjectiveFunction(data, sumOfShapes);\n    const result = direct(objectiveFunction, minValues, maxValues, {\n        iterations: maxIterations,\n        epsilon,\n        tolerance,\n        tolerance2,\n        initialState,\n    });\n    const { optima } = result;\n    return {\n        parameterError: result.minFunctionValue,\n        iterations: result.iterations,\n        parameterValues: optima[0],\n    };\n}\nfunction getObjectiveFunction(data, sumOfShapes) {\n    const { x, y } = data;\n    const nbPoints = x.length;\n    return (parameters) => {\n        const fct = sumOfShapes(parameters);\n        let error = 0;\n        for (let i = 0; i < nbPoints; i++) {\n            error += (y[i] - fct(x[i])) ** 2;\n        }\n        return error;\n    };\n}\n//# sourceMappingURL=directOptimization.js.map","import { xMinMaxValues } from 'ml-spectra-processing';\nimport { getSumOfShapes } from './shapes/getSumOfShapes';\nimport { getInternalPeaks } from './util/internalPeaks/getInternalPeaks';\nimport { selectMethod } from './util/selectMethod';\n/**\n * Fits a set of points to the sum of a set of bell functions.\n *\n * @param data - An object containing the x and y data to be fitted.\n * @param peaks - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param options - Options for optimize\n * @returns - An object with fitting error and the list of optimized parameters { parameters: [ {x, y, width} ], error } if the kind of shape is pseudoVoigt mu parameter is optimized.\n */\nexport function optimize(data, peaks, options = {}) {\n    // rescale data\n    const temp = xMinMaxValues(data.y);\n    const minMaxY = { ...temp, range: temp.max - temp.min };\n    const internalPeaks = getInternalPeaks(peaks, minMaxY, options);\n    // need to rescale what is related to Y\n    const { baseline: shiftValue = minMaxY.min } = options;\n    const normalizedY = new Float64Array(data.y.length);\n    for (let i = 0; i < data.y.length; i++) {\n        normalizedY[i] = (data.y[i] - shiftValue) / minMaxY.range;\n    }\n    const nbParams = internalPeaks[internalPeaks.length - 1].toIndex + 1;\n    const minValues = new Float64Array(nbParams);\n    const maxValues = new Float64Array(nbParams);\n    const initialValues = new Float64Array(nbParams);\n    const gradientDifferences = new Float64Array(nbParams);\n    let index = 0;\n    for (const peak of internalPeaks) {\n        for (let i = 0; i < peak.parameters.length; i++) {\n            minValues[index] = peak.propertiesValues.min[i];\n            maxValues[index] = peak.propertiesValues.max[i];\n            initialValues[index] = peak.propertiesValues.init[i];\n            gradientDifferences[index] = peak.propertiesValues.gradientDifference[i];\n            index++;\n        }\n    }\n    const { algorithm, optimizationOptions } = selectMethod(options.optimization);\n    const sumOfShapes = getSumOfShapes(internalPeaks);\n    const fitted = algorithm({ x: data.x, y: normalizedY }, sumOfShapes, {\n        minValues,\n        maxValues,\n        initialValues,\n        gradientDifference: gradientDifferences,\n        ...optimizationOptions,\n    });\n    const fittedValues = fitted.parameterValues;\n    const newPeaks = [];\n    for (const peak of internalPeaks) {\n        const { id, shape, parameters, fromIndex } = peak;\n        let newPeak = { x: 0, y: 0, shape };\n        if (id) {\n            newPeak = { ...newPeak, id };\n        }\n        newPeak.x = fittedValues[fromIndex];\n        newPeak.y = fittedValues[fromIndex + 1] * minMaxY.range + shiftValue;\n        for (let i = 2; i < parameters.length; i++) {\n            //@ts-expect-error should be fixed once\n            newPeak.shape[parameters[i]] = fittedValues[fromIndex + i];\n        }\n        newPeaks.push(newPeak);\n    }\n    return {\n        error: fitted.parameterError,\n        iterations: fitted.iterations,\n        peaks: newPeaks,\n    };\n}\n//# sourceMappingURL=index.js.map","import { levenbergMarquardt } from 'ml-levenberg-marquardt';\nimport { directOptimization } from './wrappers/directOptimization';\n/** Algorithm to select the method.\n * @param optimizationOptions - Optimization options\n * @returns - The algorithm and optimization options\n */\nexport function selectMethod(optimizationOptions = {}) {\n    const { kind = 'lm', options } = optimizationOptions;\n    switch (kind) {\n        case 'lm':\n        case 'levenbergMarquardt':\n            return {\n                algorithm: levenbergMarquardt,\n                optimizationOptions: {\n                    damping: 1.5,\n                    maxIterations: 100,\n                    errorTolerance: 1e-8,\n                    ...options,\n                },\n            };\n        case 'direct': {\n            return {\n                algorithm: directOptimization,\n                optimizationOptions: {\n                    iterations: 20,\n                    epsilon: 1e-4,\n                    tolerance: 1e-16,\n                    tolerance2: 1e-12,\n                    initialState: {},\n                    ...options,\n                },\n            };\n        }\n        default:\n            throw new Error(`Unknown fitting algorithm`);\n    }\n}\n//# sourceMappingURL=selectMethod.js.map","/**\n * This function returns the sumOfShapes function\n * This function gives sumOfShapes access to the peak list and the associated data\n * @param parameters - parameters\n */\nexport function getSumOfShapes(internalPeaks) {\n    return function sumOfShapes(parameters) {\n        return (x) => {\n            let totalY = 0;\n            for (const peak of internalPeaks) {\n                const peakX = parameters[peak.fromIndex];\n                const y = parameters[peak.fromIndex + 1];\n                for (let i = 2; i < parameters.length; i++) {\n                    //@ts-expect-error Not simply to solve the issue\n                    peak.shapeFct[peak.parameters[i]] = parameters[peak.fromIndex + i];\n                }\n                totalY += y * peak.shapeFct.fct(x - peakX);\n            }\n            return totalY;\n        };\n    };\n}\n//# sourceMappingURL=getSumOfShapes.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nconst { parse, stringify } = JSON;\n/**\n * add missing property if it does not exist in the peak,\n * if shape exists but fwhm doesn't, it will be calculated from peak.width\n */\nexport function addMissingShape(peaks, options = {}) {\n    const { shape = { kind: 'gaussian' }, output = parse(stringify(peaks)) } = options;\n    const shapeInstance = getShape1D(shape);\n    return output.map((peak) => {\n        if (hasShape(peak)) {\n            if (!('fwhm' in peak.shape)) {\n                const shapeInstance = getShape1D(peak.shape);\n                peak.shape.fwhm = shapeInstance.widthToFWHM(peak.width);\n            }\n            return peak;\n        }\n        return {\n            ...peak,\n            shape: { fwhm: shapeInstance.widthToFWHM(peak.width), ...shape },\n        };\n    });\n}\nfunction hasShape(peak) {\n    return 'shape' in peak;\n}\n//# sourceMappingURL=addMissingShape.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nimport { optimize } from 'ml-spectra-fitting';\nimport { xGetFromToIndex } from 'ml-spectra-processing';\nimport { addMissingShape } from '../utils/addMissingShape';\nimport { groupPeaks } from '../utils/groupPeaks';\n/**\n * Optimize the position (x), max intensity (y), full width at half maximum (fwhm)\n * and the ratio of gaussian contribution (mu) if it's required. It currently supports three kind of shapes: gaussian, lorentzian and pseudovoigt\n * @param data - An object containing the x and y data to be fitted.\n * @param peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n */\nexport function optimizePeaksWithLogs(data, peakList, options = {}) {\n    const { fromTo = {}, baseline, shape = { kind: 'gaussian' }, groupingFactor = 1, factorLimits = 2, optimization = {\n        kind: 'lm',\n        options: {\n            timeout: 10,\n        },\n    }, } = options;\n    /*\n    The optimization algorithm will take some group of peaks.\n    We can not simply optimize everything because there would be too many variables to optimize\n    and it would be too time consuming.\n  */\n    const groups = groupPeaks(peakList, { factor: groupingFactor });\n    const logs = [];\n    const results = [];\n    groups.forEach((peakGroup) => {\n        const start = Date.now();\n        // In order to make optimization we will add fwhm and shape on all the peaks\n        const peaks = addMissingShape(peakGroup, { shape });\n        const firstPeak = peaks[0];\n        const lastPeak = peaks[peaks.length - 1];\n        const { from = firstPeak.x - firstPeak.width * factorLimits, to = lastPeak.x + lastPeak.width * factorLimits, } = fromTo;\n        const { fromIndex, toIndex } = xGetFromToIndex(data.x, { from, to });\n        const x = data.x instanceof Float64Array\n            ? data.x.subarray(fromIndex, toIndex)\n            : data.x.slice(fromIndex, toIndex);\n        const y = data.y instanceof Float64Array\n            ? data.y.subarray(fromIndex, toIndex)\n            : data.y.slice(fromIndex, toIndex);\n        const log = {\n            range: { from, to },\n            parameters: optimization,\n            groupSize: peakGroup.length,\n            time: Date.now() - start,\n        };\n        if (x.length > 5) {\n            const { iterations, error, peaks: optimizedPeaks, } = optimize({ x, y }, peaks, {\n                shape,\n                baseline,\n                optimization,\n            });\n            for (let i = 0; i < peaks.length; i++) {\n                results.push({\n                    ...optimizedPeaks[i],\n                    width: getShape1D(peaks[i].shape).fwhmToWidth(optimizedPeaks[i].shape.fwhm),\n                });\n            }\n            logs.push({\n                ...log,\n                iterations,\n                error,\n                message: 'optimization successful',\n            });\n        }\n        else {\n            results.push(...peaks);\n            logs.push({\n                ...log,\n                iterations: 0,\n                message: 'x length too small for optimization',\n            });\n        }\n    });\n    return { logs, optimizedPeaks: results };\n}\n//# sourceMappingURL=optimizePeaksWithLogs.js.map","/**\n * Group peaks based on factor\n * In order to group peaks we only need the x and width value. This means that\n * in the current implementation we don't take into account the asymmetry of peaks\n */\nexport function groupPeaks(peaks, options = {}) {\n    if (peaks && peaks.length === 0)\n        return [];\n    const { factor = 1 } = options;\n    peaks = JSON.parse(JSON.stringify(peaks));\n    peaks.sort((a, b) => a.x - b.x);\n    let previousPeak = peaks[0];\n    let currentGroup = [previousPeak];\n    const groups = [currentGroup];\n    for (let i = 1; i < peaks.length; i++) {\n        const peak = peaks[i];\n        if ((peak.x - previousPeak.x) / ((peak.width + previousPeak.width) / 2) <=\n            factor) {\n            currentGroup.push(peak);\n        }\n        else {\n            currentGroup = [peak];\n            groups.push(currentGroup);\n        }\n        previousPeak = peak;\n    }\n    return groups;\n}\n//# sourceMappingURL=groupPeaks.js.map","import { v4 as generateID } from '@lukeed/uuid';\nconst { parse, stringify } = JSON;\nexport function addMissingIDs(peaks, options = {}) {\n    const { output = parse(stringify(peaks)) } = options;\n    for (const peak of output) {\n        if (!('id' in peak)) {\n            peak.id = generateID();\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=addMissingIDs.js.map","import { v4 as generateID } from '@lukeed/uuid';\nimport { addMissingIDs } from '../utils/addMissingIDs';\nimport { addMissingShape } from '../utils/addMissingShape';\nimport { optimizePeaksWithLogs, } from './optimizePeaksWithLogs';\nexport function joinBroadPeaks(peakList, options = {}) {\n    const { shape = { kind: 'gaussian' }, optimization = { kind: 'lm', options: { timeout: 10 } }, broadWidth = 0.25, broadRatio = 0.0025, } = options;\n    let max = 0;\n    let maxI = 0;\n    let count = 1;\n    const broadLines = [];\n    if (peakList.length < 2) {\n        return addMissingIDs(addMissingShape(peakList.map(getGSDPeakOptimizedStructure), { shape }));\n    }\n    let maxDdy = peakList[0].ddY;\n    for (let i = 1; i < peakList.length; i++) {\n        if (Math.abs(peakList[i].ddY) > maxDdy)\n            maxDdy = Math.abs(peakList[i].ddY);\n    }\n    const newPeaks = [];\n    for (const peak of peakList) {\n        if (Math.abs(peak.ddY) <= broadRatio * maxDdy) {\n            broadLines.push(peak);\n        }\n        else {\n            newPeaks.push(getGSDPeakOptimizedStructure(peak));\n        }\n    }\n    //@ts-expect-error Push a feke peak\n    broadLines.push({ x: Number.MAX_VALUE, y: 0 });\n    let candidates = {\n        x: [broadLines[0].x],\n        y: [broadLines[0].y],\n    };\n    let indexes = [0];\n    for (let i = 1; i < broadLines.length; i++) {\n        if (Math.abs(broadLines[i - 1].x - broadLines[i].x) < broadWidth) {\n            candidates.x.push(broadLines[i].x);\n            candidates.y.push(broadLines[i].y);\n            if (broadLines[i].y > max) {\n                max = broadLines[i].y;\n                maxI = i;\n            }\n            indexes.push(i);\n            count++;\n        }\n        else {\n            if (count > 2) {\n                const initialWidth = Math.abs(candidates.x[candidates.x.length - 1] - candidates.x[0]);\n                const { logs, optimizedPeaks } = optimizePeaksWithLogs(candidates, [\n                    {\n                        id: generateID(),\n                        x: broadLines[maxI].x,\n                        y: max,\n                        width: initialWidth,\n                        parameters: {\n                            width: { max: initialWidth * 4, min: initialWidth * 0.8 },\n                        },\n                    },\n                ], { shape: { kind: 'pseudoVoigt' }, optimization });\n                [max, maxI] = [0, 0];\n                const log = logs.find((l) => l.message === 'optimization successful');\n                if (log) {\n                    const { error } = log;\n                    if (error < 0.2) {\n                        newPeaks.push(optimizedPeaks[0]);\n                    }\n                    else {\n                        pushBackPeaks(broadLines, indexes, newPeaks);\n                    }\n                }\n                else {\n                    pushBackPeaks(broadLines, indexes, newPeaks);\n                }\n            }\n            else {\n                pushBackPeaks(broadLines, indexes, newPeaks);\n            }\n            candidates = { x: [broadLines[i].x], y: [broadLines[i].y] };\n            indexes = [i];\n            max = broadLines[i].y;\n            maxI = i;\n            count = 1;\n        }\n    }\n    newPeaks.sort((a, b) => {\n        return a.x - b.x;\n    });\n    return addMissingIDs(newPeaks, { output: newPeaks });\n}\nfunction pushBackPeaks(broadLines, indexes, peaks) {\n    for (const index of indexes) {\n        peaks.push(getGSDPeakOptimizedStructure(broadLines[index]));\n    }\n}\nfunction getGSDPeakOptimizedStructure(peak) {\n    const { id, shape, x, y, width } = peak;\n    const newPeak = {\n        x,\n        y,\n        width,\n        shape,\n    };\n    if (id)\n        newPeak.id = id;\n    return newPeak;\n}\n//# sourceMappingURL=joinBroadPeaks.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nconst { parse, stringify } = JSON;\n/**\n * Append 2 properties to the peaks, shape and fwhm\n */\nexport function setShape(peaks, options = {}) {\n    const { shape = { kind: 'gaussian' }, output = parse(stringify(peaks)), } = options;\n    const shapeInstance = getShape1D(shape);\n    return output.map((peak) => ({\n        ...peak,\n        shape: { fwhm: shapeInstance.widthToFWHM(peak.width), ...shape },\n    }));\n}\n//# sourceMappingURL=setShape.js.map","import { getShape1D } from 'ml-peak-shape-generator';\n/**\n * This method will allow to enlarge peaks while preventing overlap between peaks\n * A typical application in chromatography peak picking.\n * We should not make the hypothesis that x is equidistant\n * Because peaks may not be symmetric after we add 2 properties, from and to.\n * @return {Array} peakList\n */\nexport function broadenPeaks(peakList, options = {}) {\n    const { factor = 2, overlap = false } = options;\n    const peaks = mapPeaks(peakList, factor);\n    if (!overlap) {\n        for (let i = 0; i < peaks.length - 1; i++) {\n            const peak = peaks[i];\n            const nextPeak = peaks[i + 1];\n            if (peak.to.x > nextPeak.from.x) {\n                // we do it proportional to the width of the peaks\n                peak.to.x =\n                    (peak.width / (nextPeak.width + peak.width)) * (nextPeak.x - peak.x) +\n                        peak.x;\n                nextPeak.from.x = peak.to.x;\n            }\n        }\n    }\n    for (const peak of peaks) {\n        peak.width = peak.to.x - peak.from.x;\n        if (peak.shape) {\n            const { shape, width } = peak;\n            if (shape.fwhm !== undefined) {\n                const shapeFct = getShape1D(shape);\n                peak.shape.fwhm = shapeFct.widthToFWHM(width);\n            }\n        }\n    }\n    return peaks;\n}\nfunction mapPeaks(peaks, factor) {\n    return peaks.map((peak) => {\n        const { id, shape } = peak;\n        const xFrom = peak.x - (peak.x - peak.inflectionPoints.from.x) * factor;\n        const xTo = peak.x + (peak.inflectionPoints.to.x - peak.x) * factor;\n        let result = {\n            x: peak.x,\n            y: peak.y,\n            index: peak.index,\n            width: xTo - xFrom,\n            from: { x: xFrom },\n            to: { x: xTo },\n        };\n        if (id) {\n            result = { ...result, id };\n        }\n        if (shape) {\n            result = { ...result, shape };\n        }\n        return result;\n    });\n}\n//# sourceMappingURL=broadenPeaks.js.map","import { v4 as generateID } from '@lukeed/uuid';\nimport { sgg } from 'ml-savitzky-golay-generalized';\nimport { xIsEquallySpaced, xIsMonotonic, xNoiseStandardDeviation, xMinMaxValues, } from 'ml-spectra-processing';\nimport { optimizeTop } from './utils/optimizeTop';\n/**\n * Global spectra deconvolution\n * @param  data - Object data with x and y arrays. Values in x has to be growing\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\n\n */\nexport function gsd(data, options = {}) {\n    let { noiseLevel } = options;\n    const { sgOptions = {\n        windowSize: 9,\n        polynomial: 3,\n    }, smoothY = false, maxCriteria = true, minMaxRatio = 0.00025, realTopDetection = false, } = options;\n    const { x } = data;\n    let { y } = data;\n    if (xIsMonotonic(x) !== 1) {\n        throw new Error('GSD only accepts monotone increasing x values');\n    }\n    //rescale;\n    y = y.slice();\n    // If the max difference between delta x is less than 5%, then,\n    // we can assume it to be equally spaced variable\n    const equallySpaced = xIsEquallySpaced(x);\n    if (noiseLevel === undefined) {\n        if (equallySpaced) {\n            const noiseInfo = xNoiseStandardDeviation(y);\n            if (maxCriteria) {\n                noiseLevel = noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n            else {\n                noiseLevel = -noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n        }\n        else {\n            noiseLevel = 0;\n        }\n    }\n    else if (!maxCriteria) {\n        noiseLevel *= -1;\n    }\n    if (!maxCriteria) {\n        for (let i = 0; i < y.length; i++) {\n            y[i] *= -1;\n        }\n    }\n    if (noiseLevel !== undefined) {\n        for (let i = 0; i < y.length; i++) {\n            if (y[i] < noiseLevel) {\n                y[i] = noiseLevel;\n            }\n        }\n    }\n    const xValue = equallySpaced ? x[1] - x[0] : x;\n    const yData = smoothY\n        ? sgg(y, xValue, {\n            ...sgOptions,\n            derivative: 0,\n        })\n        : y;\n    const dY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 1,\n    });\n    const ddY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 2,\n    });\n    const { min: minY, max: maxY } = xMinMaxValues(yData);\n    if (minY > maxY || minY === maxY)\n        return [];\n    const yThreshold = minY + (maxY - minY) * minMaxRatio;\n    const dX = x[1] - x[0];\n    let lastMax = null;\n    let lastMin = null;\n    const minddY = [];\n    const intervalL = [];\n    const intervalR = [];\n    // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n    for (let i = 1; i < yData.length - 1; ++i) {\n        if ((dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n            (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])) {\n            lastMin = {\n                x: x[i],\n                index: i,\n            };\n            if (dX > 0 && lastMax !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Maximum in first derivative\n        if ((dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n            (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])) {\n            lastMax = {\n                x: x[i],\n                index: i,\n            };\n            if (dX < 0 && lastMin !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    let lastK = -1;\n    const peaks = [];\n    for (const minddYIndex of minddY) {\n        const deltaX = x[minddYIndex];\n        let possible = -1;\n        let k = lastK + 1;\n        let minDistance = Number.POSITIVE_INFINITY;\n        let currentDistance = 0;\n        while (possible === -1 && k < intervalL.length) {\n            currentDistance = Math.abs(deltaX - (intervalL[k].x + intervalR[k].x) / 2);\n            if (currentDistance < (intervalR[k].x - intervalL[k].x) / 2) {\n                possible = k;\n                lastK = k;\n            }\n            ++k;\n            // Not getting closer?\n            if (currentDistance >= minDistance) {\n                break;\n            }\n            minDistance = currentDistance;\n        }\n        if (possible !== -1) {\n            if (yData[minddYIndex] > yThreshold) {\n                const width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n                peaks.push({\n                    id: generateID(),\n                    x: deltaX,\n                    y: yData[minddYIndex],\n                    width,\n                    index: minddYIndex,\n                    ddY: ddY[minddYIndex],\n                    inflectionPoints: {\n                        from: intervalL[possible],\n                        to: intervalR[possible],\n                    },\n                });\n            }\n        }\n    }\n    if (realTopDetection) {\n        optimizeTop({ x, y: yData }, peaks);\n    }\n    peaks.forEach((peak) => {\n        if (!maxCriteria) {\n            peak.y *= -1;\n            peak.ddY = peak.ddY * -1;\n        }\n    });\n    peaks.sort((a, b) => {\n        return a.x - b.x;\n    });\n    return peaks;\n}\n//# sourceMappingURL=gsd.js.map","/**\n * Correction of the x and y coordinates using a quadratic optimizations with the peak and its 3 closest neighbors to determine the true x,y values of the peak.\n * This process is done in place and is very fast.\n * @param data\n * @param peaks\n */\nexport function optimizeTop(data, peaks) {\n    const { x, y } = data;\n    for (const peak of peaks) {\n        let currentIndex = peak.index;\n        // The detected peak could be moved 1 or 2 units to left or right.\n        if (y[currentIndex - 1] >= y[currentIndex - 2] &&\n            y[currentIndex - 1] >= y[currentIndex]) {\n            currentIndex--;\n        }\n        else if (y[currentIndex + 1] >= y[currentIndex] &&\n            y[currentIndex + 1] >= y[currentIndex + 2]) {\n            currentIndex++;\n        }\n        else if (y[currentIndex - 2] >= y[currentIndex - 3] &&\n            y[currentIndex - 2] >= y[currentIndex - 1]) {\n            currentIndex -= 2;\n        }\n        else if (y[currentIndex + 2] >= y[currentIndex + 1] &&\n            y[currentIndex + 2] >= y[currentIndex + 3]) {\n            currentIndex += 2;\n        }\n        // interpolation to a sin() function\n        if (y[currentIndex - 1] > 0 &&\n            y[currentIndex + 1] > 0 &&\n            y[currentIndex] >= y[currentIndex - 1] &&\n            y[currentIndex] >= y[currentIndex + 1] &&\n            (y[currentIndex] !== y[currentIndex - 1] ||\n                y[currentIndex] !== y[currentIndex + 1])) {\n            const alpha = 20 * Math.log10(y[currentIndex - 1]);\n            const beta = 20 * Math.log10(y[currentIndex]);\n            const gamma = 20 * Math.log10(y[currentIndex + 1]);\n            const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n            peak.x = x[currentIndex] + (x[currentIndex] - x[currentIndex - 1]) * p;\n            peak.y =\n                y[currentIndex] -\n                    0.25 * (y[currentIndex - 1] - y[currentIndex + 1]) * p;\n        }\n    }\n}\n//# sourceMappingURL=optimizeTop.js.map","import { optimizePeaksWithLogs } from './optimizePeaksWithLogs';\n/**\n * Optimize the position (x), max intensity (y), full width at half maximum (fwhm)\n * and the ratio of gaussian contribution (mu) if it's required. It currently supports three kind of shapes: gaussian, lorentzian and pseudovoigt\n * @param data - An object containing the x and y data to be fitted.\n * @param peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n */\nexport function optimizePeaks(data, peakList, options = {}) {\n    return optimizePeaksWithLogs(data, peakList, options).optimizedPeaks;\n}\n//# sourceMappingURL=optimizePeaks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.peakPicking = peakPicking;\nconst ml_gsd_1 = require(\"ml-gsd\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Filter the array of peaks\n * @param {import('./Spectrum')} spectrum - array of all the peaks\n * @returns {array}\n */\nfunction peakPicking(spectrum) {\n    if (!spectrum.peaks || spectrum.peaks.length === 0) {\n        spectrum.peaks = [];\n        const keys = Object.keys(spectrum.data).filter((key) => key !== 'x' && key !== 'y');\n        if (spectrum.isContinuous()) {\n            // some experimental data are really problematic and we need to add this line\n            const data = (0, ml_spectra_processing_1.xyEnsureGrowingX)(spectrum.data);\n            const gsdPeaks = (0, ml_gsd_1.gsd)(data, {\n                minMaxRatio: spectrum.options.threshold || 0.00025, // Threshold to determine if a given peak should be considered as a noise\n                realTopDetection: true,\n                smoothY: false,\n                sgOptions: { windowSize: 7, polynomial: 3 },\n            });\n            for (let gsdPeak of gsdPeaks) {\n                const peak = { x: gsdPeak.x, y: gsdPeak.y, width: gsdPeak.width };\n                for (let key of keys) {\n                    peak[key] = spectrum.data[key][gsdPeak.index];\n                }\n                spectrum.peaks.push(peak);\n            }\n        }\n        else {\n            spectrum.peaks = [];\n            let data = spectrum.data;\n            for (let i = 0; i < data.x.length; i++) {\n                const peak = {\n                    x: data.x[i],\n                    y: data.y[i],\n                    width: 0,\n                };\n                for (let key of keys) {\n                    peak[key] = spectrum.data[key][i];\n                }\n                spectrum.peaks.push(peak);\n            }\n        }\n    }\n    return spectrum.peaks;\n}\n//# sourceMappingURL=peakPicking.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Check that x and y are arrays with the same length.\n * @param x - first array\n * @param y - second array\n * @throws if x or y are not the same length, or if they are not arrays\n */\nexport function checkArrayLength(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y)) {\n        throw new TypeError('x and y must be arrays');\n    }\n    if (x.length !== y.length) {\n        throw new RangeError('x and y arrays must have the same length');\n    }\n}\n//# sourceMappingURL=checkArrayLength.js.map","import { isAnyArray } from 'is-any-array';\nimport { checkArrayLength } from './checkArrayLength';\nexport class BaseRegression {\n    constructor() {\n        if (new.target === BaseRegression) {\n            throw new Error('BaseRegression must be subclassed');\n        }\n    }\n    predict(x) {\n        if (typeof x === 'number') {\n            return this._predict(x);\n        }\n        else if (isAnyArray(x)) {\n            const y = [];\n            for (const xVal of x) {\n                y.push(this._predict(xVal));\n            }\n            return y;\n        }\n        else {\n            throw new TypeError('x must be a number or array');\n        }\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _predict(x) {\n        throw new Error('_predict must be implemented');\n    }\n    train() {\n        // Do nothing for this package\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toString(precision) {\n        return '';\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toLaTeX(precision) {\n        return '';\n    }\n    /**\n     * Return the correlation coefficient of determination (r) and chi-square.\n     * @param x - explanatory variable\n     * @param y - response variable\n     * @return - Object with further statistics.\n     */\n    score(x, y) {\n        checkArrayLength(x, y);\n        const n = x.length;\n        const y2 = new Array(n);\n        for (let i = 0; i < n; i++) {\n            y2[i] = this._predict(x[i]);\n        }\n        let xSum = 0;\n        let ySum = 0;\n        let chi2 = 0;\n        let rmsd = 0;\n        let xSquared = 0;\n        let ySquared = 0;\n        let xY = 0;\n        for (let i = 0; i < n; i++) {\n            xSum += y2[i];\n            ySum += y[i];\n            xSquared += y2[i] * y2[i];\n            ySquared += y[i] * y[i];\n            xY += y2[i] * y[i];\n            if (y[i] !== 0) {\n                chi2 += ((y[i] - y2[i]) * (y[i] - y2[i])) / y[i];\n            }\n            rmsd += (y[i] - y2[i]) * (y[i] - y2[i]);\n        }\n        const r = (n * xY - xSum * ySum) /\n            Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n        return {\n            r,\n            r2: r * r,\n            chi2,\n            rmsd: Math.sqrt(rmsd / n),\n        };\n    }\n}\n//# sourceMappingURL=BaseRegression.js.map","/**\n * Cast `number` to string. Optionally `digits` specifies significant figures.\n * @param number\n * @param figures\n * @returns - A string representation of `number`.\n */\nexport function maybeToPrecision(number, figures) {\n    if (number < 0) {\n        number = 0 - number;\n        if (typeof figures === 'number') {\n            return `- ${number.toPrecision(figures)}`;\n        }\n        else {\n            return `- ${number.toString()}`;\n        }\n    }\n    else if (typeof figures === 'number') {\n        return number.toPrecision(figures);\n    }\n    else {\n        return number.toString();\n    }\n}\n//# sourceMappingURL=maybeToPrecision.js.map","import { BaseRegression, checkArrayLength, maybeToPrecision, } from 'ml-regression-base';\n/**\n * Class representing simple linear regression.\n * The regression uses OLS to calculate intercept and slope.\n */\nexport class SimpleLinearRegression extends BaseRegression {\n    /**\n     * @param x - explanatory variable\n     * @param y - response variable\n     */\n    constructor(x, y) {\n        super();\n        // @ts-expect-error internal use of the constructor, from `this.load`\n        if (x === true) {\n            // @ts-expect-error internal use of the constructor, from `this.load`\n            const yObj = y;\n            this.slope = yObj.slope;\n            this.intercept = yObj.intercept;\n            this.coefficients = [yObj.intercept, yObj.slope];\n        }\n        else {\n            checkArrayLength(x, y);\n            const result = regress(x, y);\n            this.slope = result.slope;\n            this.intercept = result.intercept;\n            this.coefficients = [result.intercept, result.slope];\n        }\n    }\n    /**\n     * Get the parameters and model name in JSON format\n     * @returns\n     */\n    toJSON() {\n        return {\n            name: 'simpleLinearRegression',\n            slope: this.slope,\n            intercept: this.intercept,\n        };\n    }\n    _predict(x) {\n        return this.slope * x + this.intercept;\n    }\n    /**\n     * Finds x for the given y value.\n     * @param y - response variable value\n     * @returns - x value\n     */\n    computeX(y) {\n        return (y - this.intercept) / this.slope;\n    }\n    /**\n     * Strings the linear function in the form 'f(x) = ax + b'\n     * @param precision - number of significant figures.\n     * @returns\n     */\n    toString(precision) {\n        let result = 'f(x) = ';\n        if (this.slope !== 0) {\n            const xFactor = maybeToPrecision(this.slope, precision);\n            result += `${xFactor === '1' ? '' : `${xFactor} * `}x`;\n            if (this.intercept !== 0) {\n                const absIntercept = Math.abs(this.intercept);\n                const operator = absIntercept === this.intercept ? '+' : '-';\n                result += ` ${operator} ${maybeToPrecision(absIntercept, precision)}`;\n            }\n        }\n        else {\n            result += maybeToPrecision(this.intercept, precision);\n        }\n        return result;\n    }\n    /**\n     * Strings the linear function in the form 'f(x) = ax + b'\n     * @param precision - number of significant figures.\n     * @returns\n     */\n    toLaTeX(precision) {\n        return this.toString(precision);\n    }\n    /**\n     * Class instance from a JSON Object.\n     * @param json\n     * @returns\n     */\n    static load(json) {\n        if (json.name !== 'simpleLinearRegression') {\n            throw new TypeError('not a SLR model');\n        }\n        // @ts-expect-error internal use of the constructor\n        return new SimpleLinearRegression(true, json);\n    }\n}\n/**\n * Internal  function.\n * It determines the parameters (slope, intercept) of the line that best fit the `x,y` vector-data (simple linear regression).\n * @param x - explanatory variable\n * @param y - response variable\n * @returns - slope and intercept of the best fit line\n */\nfunction regress(x, y) {\n    const n = x.length;\n    let xSum = 0;\n    let ySum = 0;\n    let xSquared = 0;\n    let xY = 0;\n    for (let i = 0; i < n; i++) {\n        xSum += x[i];\n        ySum += y[i];\n        xSquared += x[i] * x[i];\n        xY += x[i] * y[i];\n    }\n    const numerator = n * xY - xSum * ySum;\n    const slope = numerator / (n * xSquared - xSum * xSum);\n    return {\n        slope,\n        intercept: (1 / n) * ySum - slope * (1 / n) * xSum,\n    };\n}\n//# sourceMappingURL=index.js.map","import {\n  BaseRegression,\n  checkArrayLength,\n  maybeToPrecision,\n} from 'ml-regression-base';\nimport { SimpleLinearRegression } from 'ml-regression-simple-linear';\n\nexport class PowerRegression extends BaseRegression {\n  constructor(x, y) {\n    super();\n    if (x === true) {\n      // reloading model\n      this.A = y.A;\n      this.B = y.B;\n    } else {\n      checkArrayLength(x, y);\n      regress(this, x, y);\n    }\n  }\n\n  _predict(newInputs) {\n    return this.A * newInputs ** this.B;\n  }\n\n  toJSON() {\n    return {\n      name: 'powerRegression',\n      A: this.A,\n      B: this.B,\n    };\n  }\n\n  toString(precision) {\n    return `f(x) = ${maybeToPrecision(\n      this.A,\n      precision,\n    )} * x^${maybeToPrecision(this.B, precision)}`;\n  }\n\n  toLaTeX(precision) {\n    let latex = '';\n    if (this.B >= 0) {\n      latex = `f(x) = ${maybeToPrecision(\n        this.A,\n        precision,\n      )}x^{${maybeToPrecision(this.B, precision)}}`;\n    } else {\n      latex = `f(x) = \\\\frac{${maybeToPrecision(\n        this.A,\n        precision,\n      )}}{x^{${maybeToPrecision(-this.B, precision)}}}`;\n    }\n    latex = latex.replace(/e([+-]?[0-9]+)/g, 'e^{$1}');\n    return latex;\n  }\n\n  static load(json) {\n    if (json.name !== 'powerRegression') {\n      throw new TypeError('not a power regression model');\n    }\n    return new PowerRegression(true, json);\n  }\n}\n\nfunction regress(pr, x, y) {\n  const n = x.length;\n  const xl = new Array(n);\n  const yl = new Array(n);\n  for (let i = 0; i < n; i++) {\n    xl[i] = Math.log(x[i]);\n    yl[i] = Math.log(y[i]);\n  }\n\n  const linear = new SimpleLinearRegression(xl, yl);\n  pr.A = Math.exp(linear.intercept);\n  pr.B = linear.slope;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.peaksWidth = peaksWidth;\nconst ml_regression_power_1 = require(\"ml-regression-power\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nfunction peaksWidth(peaks) {\n    let xs = peaks.map((peak) => peak.x);\n    let widths = peaks.map((peak) => peak.width);\n    if (xs.length < 2) {\n        throw new Error(`peaksWidth: not enough peaks (less than 2) for automatic width calculation: ${xs.length}`);\n    }\n    let regression = new ml_regression_power_1.PowerRegression(xs, widths);\n    if (Number.isNaN(regression.A) || Number.isNaN(regression.B)) {\n        throw new Error('peaksWidth: can not calculate regression');\n    }\n    let from = (0, ml_spectra_processing_1.xMinValue)(xs);\n    let to = (0, ml_spectra_processing_1.xMaxValue)(xs);\n    let regressionChart = { x: [], y: [] };\n    for (let x = from; x <= to; x += (to - from) / 1000) {\n        regressionChart.x.push(x);\n        regressionChart.y.push(regression.predict(x));\n    }\n    return {\n        widths: {\n            x: xs,\n            y: widths,\n        },\n        fit: regressionChart,\n        score: regression.score(xs, widths),\n        predictFct: regression.predict.bind(regression),\n        tex: regression.toLaTeX(3),\n        A: regression.A,\n        B: regression.B,\n        predictFctString: `${regression.A} * mass ** ${regression.B}`,\n    };\n}\n//# sourceMappingURL=peaksWidth.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Spectrum = void 0;\nexports.fromPeaks = fromPeaks;\nexports.fromText = fromText;\nconst is_any_array_1 = require(\"is-any-array\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nconst xy_parser_1 = require(\"xy-parser\");\nconst getBestPeaks_js_1 = require(\"./getBestPeaks.js\");\nconst getFragmentPeaks_js_1 = require(\"./getFragmentPeaks.js\");\nconst getMassRemainder_js_1 = require(\"./getMassRemainder.js\");\nconst getPeakChargeBySimilarity_js_1 = require(\"./getPeakChargeBySimilarity.js\");\nconst getPeaks_js_1 = require(\"./getPeaks.js\");\nconst getPeaksWithCharge_js_1 = require(\"./getPeaksWithCharge.js\");\nconst isContinuous_js_1 = require(\"./isContinuous.js\");\nconst peakPicking_js_1 = require(\"./peakPicking.js\");\nconst peaksWidth_js_1 = require(\"./peaksWidth.js\");\nconst defaultData = { x: [], y: [] };\n/**\n * Class dealing with mass spectra and peak picking\n */\nclass Spectrum {\n    /**\n     *\n     * @param {import('cheminfo-types').DataXY} data\n     * @param {object} [options={}]\n     * @param {number} [options.threshold=0.00025]\n     */\n    constructor(data = defaultData, options = {}) {\n        if (typeof data !== 'object' ||\n            !(0, is_any_array_1.isAnyArray)(data.x) ||\n            !(0, is_any_array_1.isAnyArray)(data.y)) {\n            throw new TypeError('Spectrum data must be an object with x:[], y:[]');\n        }\n        this.data = { ...data };\n        this.options = { threshold: 0.00025, ...options };\n        Object.defineProperty(this.data, 'xOriginal', {\n            enumerable: false,\n            writable: true,\n        });\n        if (this.data && this.data.x.length > 0) {\n            this.info = {\n                minX: (0, ml_spectra_processing_1.xMinValue)(this.data.x),\n                maxX: (0, ml_spectra_processing_1.xMaxValue)(this.data.x),\n                minY: (0, ml_spectra_processing_1.xMinValue)(this.data.y),\n                maxY: (0, ml_spectra_processing_1.xMaxValue)(this.data.y),\n            };\n        }\n        else {\n            this.info = {\n                minX: Number.NaN,\n                maxX: Number.NaN,\n                minY: Number.NaN,\n                maxY: Number.NaN,\n            };\n        }\n        this.cache = {};\n        /**\n         * someProperty is an example property that is set to `true`\n         * @type {array}\n         * @public\n         */\n        this.peaks = [];\n    }\n    minMaxX() {\n        return (0, ml_spectra_processing_1.xMinMaxValues)(this.data.x);\n    }\n    /**\n     *\n     * @param {import('ml-spectra-processing').XYMaxYOptions} options\n     * @returns\n     */\n    maxY(options) {\n        return (0, ml_spectra_processing_1.xyMaxY)(this.data, options);\n    }\n    sumY() {\n        if (!this.cache.sumY) {\n            this.cache.sumY = (0, ml_spectra_processing_1.xSum)(this.data.y);\n        }\n        return this.cache.sumY;\n    }\n    scaleY(intensity = 1) {\n        this.data.y = Array.from((0, ml_spectra_processing_1.xNormed)(this.data.y, { value: intensity, algorithm: 'max' }));\n        return this;\n    }\n    rescaleX(callback) {\n        this.ensureOriginalX();\n        for (let i = 0; i < this.data.x.length; i++) {\n            this.data.x[i] = callback(this.data.xOriginal[i]);\n        }\n        return this;\n    }\n    ensureOriginalX() {\n        if (!this.data.xOriginal) {\n            this.data.xOriginal = this.data.x.slice(0);\n        }\n    }\n    normedY(total = 1) {\n        this.data.y = (0, ml_spectra_processing_1.xNormed)(this.data.y, { value: total });\n        return this;\n    }\n    peakPicking() {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return this.peaks;\n    }\n    peaksWidth() {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return (0, peaksWidth_js_1.peaksWidth)(this.peaks);\n    }\n    getBestPeaks(options) {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return (0, getBestPeaks_js_1.getBestPeaks)(this.peaks, options);\n    }\n    /**\n     * This is a very intensive function so better to calculate it on a selection of peaks\n     * @param {Array} selectedPeaks\n     * @param {object} [options={}]\n     * @param {number} [options.min=1]\n     * @param {number} [options.max=10]\n     * @param {number} [options.low=-1]\n     * @param {number} [options.high=1]\n     * @param {number} [options.precision=30]\n     * @returns\n     */\n    getSelectedPeaksWithCharge(selectedPeaks, options) {\n        return (0, getPeaksWithCharge_js_1.getPeaksWithCharge)(selectedPeaks, this.peaks, options);\n    }\n    getPeakChargeBySimilarity(targetMass, options) {\n        return (0, getPeakChargeBySimilarity_js_1.getPeakChargeBySimilarity)(this, targetMass, options);\n    }\n    getPeaks(options) {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return (0, getPeaks_js_1.getPeaks)(this.peaks, options);\n    }\n    getPeaksAsDataXY(options) {\n        (0, peakPicking_js_1.peakPicking)(this);\n        const peaks = (0, getPeaks_js_1.getPeaks)(this.peaks, options);\n        return {\n            x: peaks.map((peak) => peak.x),\n            y: peaks.map((peak) => peak.y),\n        };\n    }\n    /**\n     * Returns also peaks possible for a specific molecular formula\n     * @example\n     *  const spectrum = new Spectrum({x:[], y:[]})\n     *  await spectrum.getFragmentPeaks();\n     * @param {string} mf\n     * @param {object} options\n     * @returns\n     */\n    getFragmentPeaksFct(mf, options) {\n        (0, peakPicking_js_1.peakPicking)(this);\n        return (0, getFragmentPeaks_js_1.getFragmentPeaks)(this.peaks, mf, options);\n    }\n    isContinuous() {\n        return (0, isContinuous_js_1.isContinuous)(this);\n    }\n    /**\n     * Remove an integer number of time the specifiedd monoisotopic mass\n     * Mass remainder analysis (MARA): https://doi.org/10.1021/acs.analchem.7b04730\n     */\n    getMassRemainderFct(mass, options = {}) {\n        return (0, getMassRemainder_js_1.getMassRemainder)(this.data, mass, options);\n    }\n}\nexports.Spectrum = Spectrum;\nfunction fromPeaks(peaks) {\n    if (peaks.length === 0)\n        return new Spectrum();\n    const data = {};\n    for (let key of Object.keys(peaks[0])) {\n        data[key] = peaks.map((peak) => peak[key]);\n    }\n    return new Spectrum(data);\n}\nfunction fromText(text, options) {\n    const data = (0, xy_parser_1.parseXY)(text);\n    return new Spectrum(data, options);\n}\n//# sourceMappingURL=Spectrum.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MSComparator = void 0;\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nclass MSComparator {\n    /**\n     * Create a class that will be able to get the similarity between 2 spectra\n     * The similarity is based on 'cosine' similarity. The goal is 2 prepare 2 vectors\n     * on which the similarity is calculated.\n     * The vectors are created by taking the mass and the intensity of the peaks.\n     * @param {object} [options={}]\n     * @param {number} [options.nbPeaks] - Before comparing spectra how many peaks should be kept\n     * @param {number} [options.minNbCommonPeaks] - Minimum number of peaks in common to consider any similarity\n     * @param {number} [options.minIntensity] - What is the minimal relative intensity to keep a peak\n     * @param {number} [options.massPower=3] - High power will give more weight to the mass. If you would prefer to observe fragments you should use a number less than 1\n     * @param {number} [options.intensityPower=0.6] - How important is the intensity. By default we don't give to much importance to it\n     * @param {number[]} [options.selectedMasses] - List of allowed masses.\n     * @param {number|Function} [options.delta=0.1] - Tolerance in Da (u) to consider 2 peaks as aligned. If a function is provided it will be called with the mass of the peak\n     */\n    constructor(options = {}) {\n        this.options = {\n            massPower: 3,\n            intensityPower: 0.6,\n            delta: 0.1,\n            ...options,\n        };\n        this.cache = new WeakMap();\n    }\n    /**\n     * Get the similarity between a spectrum and a list of masses.\n     * The main issue is that we don't have the intensity of the peaks.\n     * So we will use the intensity of the closest peak.\n     * @param {import('cheminfo-types').DataXY} dataXY\n     * @param {number[]} masses\n     */\n    getSimilarityToMasses(dataXY, masses) {\n        const data1 = normalizeAndCacheData(this.cache, dataXY, this.options);\n        const data2 = {\n            x: Float64Array.from(masses),\n            y: new Float64Array(masses.length).fill(1),\n        };\n        let aligned;\n        if (this.options.selectedMasses?.length > 0) {\n            aligned = (0, ml_spectra_processing_1.xyArrayAlign)([\n                data1,\n                data2,\n                {\n                    // this allows to force the selection of some specific masses\n                    x: Float64Array.from(this.options.selectedMasses),\n                    y: new Float64Array(this.options.selectedMasses.length).fill(1),\n                },\n            ], {\n                delta: this.options.delta,\n                requiredY: true,\n            });\n        }\n        else {\n            aligned = (0, ml_spectra_processing_1.xyArrayAlign)([data1, data2], {\n                delta: this.options.delta,\n            });\n        }\n        // because we don't have any idea of the intensity we will use the intensity of the experimental peak\n        // and otherwise we ignore the theoretical peak\n        for (let i = 0; i < aligned.ys[0].length; i++) {\n            if (aligned.ys[0][i] === 0) {\n                aligned.ys[1][i] = 0;\n            }\n            if (aligned.ys[0][i] > 0 && aligned.ys[1][i] !== 0) {\n                aligned.ys[1][i] = aligned.ys[0][i];\n            }\n        }\n        return returnSimilarity(aligned, this.options);\n    }\n    /**\n     *\n     * @param {import('cheminfo-types').DataXY} dataXY1\n     * @param {import('cheminfo-types').DataXY} dataXY2\n     */\n    getSimilarity(dataXY1, dataXY2) {\n        const data1 = normalizeAndCacheData(this.cache, dataXY1, this.options);\n        const data2 = normalizeAndCacheData(this.cache, dataXY2, this.options);\n        let aligned;\n        if (this.options.selectedMasses?.length > 0) {\n            aligned = (0, ml_spectra_processing_1.xyArrayAlign)([\n                data1,\n                data2,\n                {\n                    // this allows to force the selection of some specific masses\n                    x: Float64Array.from(this.options.selectedMasses),\n                    y: new Float64Array(this.options.selectedMasses.length).fill(1),\n                },\n            ], {\n                delta: this.options.delta,\n                requiredY: true,\n            });\n        }\n        else {\n            aligned = (0, ml_spectra_processing_1.xyArrayAlign)([data1, data2], {\n                delta: this.options.delta,\n            });\n        }\n        return returnSimilarity(aligned, this.options);\n    }\n}\nexports.MSComparator = MSComparator;\n/**\n *\n * @param {WeakMap} cache\n * @param {import('cheminfo-types').DataXY} dataXY\n * @param {object} [options={}]\n * @param {number} [options.nbPeaks]\n * @param {number} [options.minIntensity]\n */\nfunction normalizeAndCacheData(cache, dataXY, options = {}) {\n    const { nbPeaks, minIntensity } = options;\n    if (cache.has(dataXY))\n        return cache.get(dataXY);\n    let data = { ...dataXY };\n    if ((0, ml_spectra_processing_1.xIsMonotonic)(data.x) !== 1) {\n        data = (0, ml_spectra_processing_1.xySortX)(data);\n    }\n    if (minIntensity !== undefined) {\n        data = (0, ml_spectra_processing_1.xyFilterMinYValue)(data, minIntensity);\n    }\n    if (nbPeaks !== undefined) {\n        data = (0, ml_spectra_processing_1.xyFilterTopYValues)(data, nbPeaks);\n    }\n    cache.set(dataXY, data);\n    return data;\n}\n/**\n *\n * @param {*} aligned\n * @param {object} [options={}]\n * @param {number} [options.massPower]\n * @param {number} [options.intensityPower]\n * @param {number} [options.minNbCommonPeaks]\n\n * @returns\n */\nfunction returnSimilarity(aligned, options = {}) {\n    const { massPower, intensityPower, minNbCommonPeaks } = options;\n    let nbCommonPeaks = 0;\n    let nbPeaks1 = 0;\n    let nbPeaks2 = 0;\n    for (let i = 0; i < aligned.ys[0].length; i++) {\n        if (aligned.ys[0][i] !== 0) {\n            nbPeaks1++;\n        }\n        if (aligned.ys[1][i] !== 0) {\n            nbPeaks2++;\n        }\n        if (aligned.ys[0][i] !== 0 && aligned.ys[1][i] !== 0) {\n            nbCommonPeaks++;\n        }\n    }\n    if (nbCommonPeaks === 0 ||\n        (minNbCommonPeaks && nbCommonPeaks < minNbCommonPeaks)) {\n        return {\n            nbCommonPeaks,\n            nbPeaks1,\n            nbPeaks2,\n            tanimoto: 0,\n            cosine: 0,\n        };\n    }\n    const vector1 = new Float64Array(aligned.x.length);\n    const vector2 = new Float64Array(aligned.x.length);\n    for (let i = 0; i < aligned.x.length; i++) {\n        vector1[i] = aligned.x[i] ** massPower * aligned.ys[0][i] ** intensityPower;\n        vector2[i] = aligned.x[i] ** massPower * aligned.ys[1][i] ** intensityPower;\n    }\n    return {\n        nbCommonPeaks,\n        nbPeaks1,\n        nbPeaks2,\n        tanimoto: nbCommonPeaks / (nbPeaks1 + nbPeaks2 - nbCommonPeaks),\n        cosine: cosineSimilarity(vector1, vector2),\n    };\n}\n/**\n * Returns the average of cosine distances between vectors a and b\n * Copied from https://github.com/mljs/distance/blob/0b15acd6476413f4111cb4852ca1bec9edaa2805/src/similarities/cosine.ts\n * @param a {import('cheminfo-types').NumberArray} - first vector\n * @param b {import('cheminfo-types').NumberArray} - second vector\n * @returns {number} - cosine similarity\n */\nfunction cosineSimilarity(a, b) {\n    let p = 0;\n    let p2 = 0;\n    let q2 = 0;\n    for (let i = 0; i < a.length; i++) {\n        p += a[i] * b[i];\n        p2 += a[i] * a[i];\n        q2 += b[i] * b[i];\n    }\n    return p / (Math.sqrt(p2) * Math.sqrt(q2));\n}\n//# sourceMappingURL=MSComparator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPeaksAnnotation = getPeaksAnnotation;\nconst fromMonoisotopicMass_1 = require(\"../from/fromMonoisotopicMass\");\n/**\n *\n * @param {array} bestPeaks\n * @param {object} [options={}]\n * @param {number} [options.numberDigits=5]\n * @param {number} [options.numberMFs=0]\n * @param {boolean} [options.showMF=false]\n * @param {array} [options.mfColors={}]\n * @param {number} [options.charge=1]\n * @param {number} [options.shift=0]\n * @param {object} [options.mfPrefs]\n * @param {number} [options.displayCharge=true]\n * @param {number} [options.displayProperties=[]] Array of properties name to display\n * @returns {Promise}\n */\nasync function getPeaksAnnotation(bestPeaks, options = {}) {\n    let { numberDigits = 5, shift = 0, showMF = false, numberMFs = 0, charge = 1, mfPrefs = {}, displayCharge = true, displayProperties = [], mfColors = [\n        { limit: 3, color: 'green' },\n        { limit: 20, color: 'lightgreen' },\n        { limit: 50, color: 'lightorange' },\n    ], } = options;\n    if (showMF && !numberMFs)\n        numberMFs = 1;\n    let annotations = [];\n    bestPeaks.sort((a, b) => (a.close ? -1 : b.close ? 1 : 0));\n    for (let peak of bestPeaks) {\n        let textLine = 0;\n        let annotation;\n        if (peak.close) {\n            annotation = {\n                type: 'line',\n                _highlight: peak._highlight,\n                info: peak,\n                position: [\n                    {\n                        y: peak.y,\n                        dy: '-5px',\n                        x: peak.x,\n                    },\n                    {\n                        y: peak.y,\n                        dy: '-15px',\n                        x: peak.x,\n                    },\n                ],\n            };\n            annotations.push(annotation);\n            annotation = {\n                type: 'ellipse',\n                _highlight: peak._highlight,\n                info: peak,\n                position: [\n                    {\n                        y: peak.y,\n                        dy: '-15px',\n                        x: peak.x,\n                    },\n                ],\n                props: {\n                    rx: '3px',\n                    ry: '3px',\n                    fillOpacity: 0.3,\n                },\n            };\n        }\n        else {\n            annotation = {\n                type: 'line',\n                _highlight: peak._highlight,\n                position: [\n                    {\n                        y: peak.y,\n                        dy: '-5px',\n                        x: peak.x,\n                    },\n                    {\n                        y: peak.y,\n                        dy: '-25px',\n                        x: peak.x,\n                    },\n                ],\n                labels: [\n                    {\n                        text: (peak.x + shift).toFixed(numberDigits),\n                        color: 'red',\n                        position: {\n                            x: peak.x,\n                            y: peak.y,\n                            dy: `${textLine++ * -13 - 17}px`,\n                            dx: '2px',\n                        },\n                    },\n                ],\n            };\n            if (displayCharge && peak.charge !== undefined) {\n                annotation.labels.push({\n                    text: `Z:${peak.charge}`,\n                    color: 'grey',\n                    position: {\n                        x: peak.x,\n                        y: peak.y,\n                        dy: '-4px',\n                        dx: '2px',\n                    },\n                });\n            }\n            let mfs = [];\n            if (numberMFs) {\n                // we have 2 cases. Either there is a shift and we deal with differences\n                // otherwise it is absolute\n                // if there is a shift we consider only a neutral loss and the parameter charge is important\n                // we also check that the selected peak (for relative mass) is not the current peak\n                if (shift && Math.abs(peak.x + shift) > Number.EPSILON) {\n                    // neutral loss\n                    let currentMfPrefs = {\n                        ...mfPrefs,\n                        allowNeutral: true,\n                        ionizations: '',\n                    };\n                    // we need to deal with the precision and increase it\n                    currentMfPrefs.precision =\n                        (currentMfPrefs.precision / Math.max(Math.abs(peak.x + shift), 1)) *\n                            peak.x;\n                    ({ mfs } = await (0, fromMonoisotopicMass_1.fromMonoisotopicMass)(Math.abs((peak.x + shift) * charge), currentMfPrefs));\n                }\n                else {\n                    ({ mfs } = await (0, fromMonoisotopicMass_1.fromMonoisotopicMass)(Math.abs(peak.x * charge), mfPrefs));\n                }\n                let numberOfMFS = Math.min(mfs.length, numberMFs);\n                for (let i = 0; i < numberOfMFS; i++) {\n                    let mf = mfs[i];\n                    let ppm = shift ? (mf.ms.ppm / shift) * mfs[0].ms.em : mf.ms.ppm;\n                    annotation.labels.push({\n                        text: mf.mf,\n                        color: getColor(mfColors, Math.abs(ppm)),\n                        position: {\n                            x: peak.x,\n                            y: peak.y,\n                            dy: `${textLine++ * -13 - 17}px`,\n                            dx: '2px',\n                        },\n                    });\n                }\n            }\n            if (displayProperties.length > 0) {\n                for (let property of displayProperties) {\n                    annotation.labels.push({\n                        text: peak[property],\n                        color: 'red',\n                        position: {\n                            x: peak.x,\n                            y: peak.y,\n                            dy: `${textLine++ * -13 - 17}px`,\n                            dx: '2px',\n                        },\n                    });\n                }\n            }\n        }\n        annotations.push(annotation);\n    }\n    return annotations;\n}\nfunction getColor(colors, value) {\n    for (let color of colors) {\n        if (value < color.limit)\n            return color.color;\n    }\n    return 'lightgrey';\n}\n//# sourceMappingURL=getPeaksAnnotation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsGraph = void 0;\nconst getPeaksAnnotation_js_1 = require(\"./getPeaksAnnotation.js\");\nexports.JsGraph = {\n    getPeaksAnnotation: getPeaksAnnotation_js_1.getPeaksAnnotation,\n};\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendFragmentsInfo = appendFragmentsInfo;\nconst mf_finder_1 = require(\"mf-finder\");\n/**\n *\n * @param {object}   experimentalSpectrum\n * @param {object}   database\n * @param {object}   [options={}]\n * @param {function} [options.onStep] - Callback to do after each step\n * @param {string}   [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {number}   [options.precision=100] - Allowed mass range based on precision\n */\nasync function appendFragmentsInfo(experimentalSpectrum, database, options = {}) {\n    const { ionizations, onStep, precision } = options;\n    if (!experimentalSpectrum) {\n        throw new Error('Experimental spectrum is not defined');\n    }\n    if (!database) {\n        throw new Error('Database is not defined');\n    }\n    const peaks = experimentalSpectrum.getPeaks({ sumValue: 1 });\n    for (let entry of database) {\n        const ranges = Object.keys(entry.atoms)\n            .map((atom) => `${atom}0-${entry.atoms[atom]}`)\n            .join(' ');\n        entry.fragments = {\n            nbFound: 0,\n            intensityFound: 0,\n            assignments: [],\n        };\n        for (let i = 0; i < peaks.length; i++) {\n            if (onStep)\n                await onStep(i);\n            const peak = peaks[i];\n            const possibleMFs = await (0, mf_finder_1.findMFs)(peak.x, {\n                ionizations,\n                precision,\n                ranges,\n            });\n            if (possibleMFs.mfs.length > 0) {\n                entry.fragments.nbFound++;\n                entry.fragments.intensityFound += peak.y;\n                entry.fragments.assignments.push({\n                    peak,\n                    bestMF: possibleMFs.mfs[0],\n                });\n            }\n        }\n    }\n}\n//# sourceMappingURL=appendFragmentsInfo.js.map","'use strict';\n\n/**\n * Modify object a to join it with b and make the sum of each of the keys\n * @param {*} a\n * @param {*} source1\n *\n * @return {object}\n */\n\nfunction sum(target) {\n    for (var i = 1; i < arguments.length; i++) {\n        let toSum = arguments[i];\n        for (var key of Object.keys(toSum)) {\n            if (target[key]) {\n                target[key] += toSum[key];\n            } else {\n                target[key] = toSum[key];\n            }\n        }\n    }\n    return target;\n}\n\nmodule.exports = sum;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateMFs = generateMFs;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst mf_matcher_1 = require(\"mf-matcher\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst sum_object_keys_1 = __importDefault(require(\"sum-object-keys\"));\n/**\n * Generate all the possible combinations of molecular formula and calculate\n * for each of them the monoisotopic mass and observed monoisotopic mass (m/z)\n * In the molecular formula there may be a comment after the '$' symbol\n *\n * @param {Array}         ranges\n * @param {object}        [options={}]\n * @param {number}        [options.limit=10000000] - Maximum number of results\n * @param {boolean}       [options.estimate=false] - estimate the number of MF without filters\n * @param {boolean}       [options.canonizeMF=true] - Canonize molecular formula\n * @param {boolean}       [options.uniqueMFs=true] - Force canonization and make MF unique\n * @param {string}        [options.ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n * @param {function}      [options.onStep] - Callback to do after each step\n * @param {import('mf-matcher').MSEMFilterOptions}        [options.filter={}]\n * @param {string}        [options.filterFct]\n * @param {object}        [options.links]\n * @param {boolean}       [options.links.filter] We filter all the MF that do not match the '*X'\n * @returns {Promise}\n */\nasync function generateMFs(ranges, options = {}) {\n    if (!Array.isArray(ranges)) {\n        throw new Error('Ranges must be an array of string or object');\n    }\n    options = { ...options };\n    let { limit = 100000, uniqueMFs = true, estimate = false, onStep } = options;\n    options.filterFctVariables = {};\n    for (let i = 0; i < ranges.length; i++) {\n        const range = ranges[i];\n        if (typeof range === 'object' && range.name) {\n            options.filterFctVariables[range.name] = i;\n            ranges[i] = range.value;\n        }\n    }\n    if (options.filterFct) {\n        // we create a real javascript function\n        let variables = Object.keys(options.filterFctVariables);\n        variables.push('mm', 'mz', 'charge', 'unsaturation', 'atoms');\n        // eslint-disable-next-line no-new-func\n        options.filterFct = new Function(...variables, `return ${options.filterFct}`);\n    }\n    if (uniqueMFs === true)\n        options.canonizeMF = true;\n    if (options.canonizeMF === undefined)\n        options.canonizeMF = true;\n    options.ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n    // we allow String delimited by \". or ;\" instead of an array\n    for (let i = 0; i < ranges.length; i++) {\n        if (!Array.isArray(ranges[i])) {\n            ranges[i] = ranges[i].split(/[,.]/);\n        }\n    }\n    // we allow ranges in a string ...\n    // problem with ranges is that we need to know to what the range applies\n    for (let i = 0; i < ranges.length; i++) {\n        let parts = ranges[i];\n        let newParts = [];\n        for (let j = 0; j < parts.length; j++) {\n            let part = parts[j];\n            if (part.match(/\\d-[\\d-]/)) {\n                // deal with negative numbers\n                // there are ranges ... we are in trouble !\n                newParts = newParts.concat(new mf_parser_1.MF(part).flatten({ groupIdentical: false, limit }));\n            }\n            else {\n                newParts.push(parts[j]); // the part with the comments !\n            }\n        }\n        ranges[i] = newParts;\n    }\n    if (estimate) {\n        let total = ranges.reduce((previous, current) => previous * current.length, 1);\n        return total * options.ionizations.length;\n    }\n    let results = [];\n    let sizes = [];\n    let currents = [];\n    for (let i = 0; i < ranges.length; i++) {\n        sizes.push(ranges[i].length - 1);\n        currents.push(0);\n    }\n    let position = 0;\n    let evolution = 0;\n    while (position < currents.length) {\n        if (currents[position] < sizes[position]) {\n            if (onStep)\n                await onStep(evolution);\n            evolution++;\n            appendResult(results, currents, ranges, options);\n            currents[position]++;\n            for (let i = 0; i < position; i++) {\n                currents[i] = 0;\n            }\n            position = 0;\n        }\n        else {\n            position++;\n        }\n        if (evolution > limit) {\n            throw new Error(`You have reached the limit of ${limit}. You could still change this value using the limit option but it is likely to crash.`);\n        }\n    }\n    appendResult(results, currents, ranges, options);\n    if (uniqueMFs) {\n        let uniqueMFsObject = {};\n        for (const result of results) {\n            uniqueMFsObject[result.mf + result.ionization.mf] = result;\n        }\n        results = Object.keys(uniqueMFsObject).map((k) => uniqueMFsObject[k]);\n    }\n    results.sort((a, b) => a.em - b.em);\n    return results;\n}\nlet ems = {};\n// internal method used as a cache\nfunction getMonoisotopicMass(mfString) {\n    if (!ems[mfString]) {\n        // we need to calculate based on the mf but not very often ...\n        let mf = new mf_parser_1.MF(mfString);\n        let info = mf.getInfo();\n        ems[mfString] = {\n            em: info.monoisotopicMass,\n            charge: info.charge,\n            mw: info.mass,\n            unsaturation: (info.unsaturation - 1) * 2,\n            atoms: info.atoms,\n        };\n    }\n    return ems[mfString];\n}\nfunction getEMFromParts(parts, currents, ionization) {\n    let charge = 0;\n    let em = 0;\n    let mw = 0;\n    let unsaturation = 0;\n    let validUnsaturation = true;\n    let atoms = {};\n    for (let i = 0; i < parts.length; i++) {\n        let part = parts[i][currents[i]];\n        if (part) {\n            let info = getMonoisotopicMass(part);\n            charge += info.charge;\n            em += info.em;\n            mw += info.mw;\n            (0, sum_object_keys_1.default)(atoms, info.atoms);\n            if (info.unsaturation && validUnsaturation) {\n                unsaturation += info.unsaturation;\n            }\n        }\n    }\n    return {\n        charge,\n        em,\n        mw,\n        ionization,\n        unsaturation: validUnsaturation ? unsaturation / 2 + 1 : undefined,\n        atoms,\n    };\n}\nfunction appendResult(results, currents, keys, options = {}) {\n    const { canonizeMF, filter, ionizations, links = {} } = options;\n    // this script is designed to combine molecular formula\n    // that may contain comments after a \"$\" sign\n    // therefore we should put all the comments at the ned\n    if (links.filter) {\n        let sharps = [];\n        for (let i = 0; i < keys.length; i++) {\n            let anchors = keys[i][currents[i]].match(/#\\d+/g);\n            if (anchors)\n                sharps.push(...anchors);\n        }\n        if (sharps.length % 2 === 1)\n            return;\n        sharps = sharps.sort();\n        for (let i = 0; i < sharps.length; i += 2) {\n            if (sharps[i] !== sharps[i + 1])\n                return;\n        }\n    }\n    for (let ionization of ionizations) {\n        let result = getEMFromParts(keys, currents, ionization);\n        if (options.filterFct) {\n            let variables = [];\n            for (let key in options.filterFctVariables) {\n                variables.push(currents[options.filterFctVariables[key]]);\n            }\n            variables.push(result.em, (result.em + ionization.em - ionization.charge * chemical_elements_1.ELECTRON_MASS) /\n                Math.abs(ionization.charge), result.charge + result.ionization.charge, result.unsaturation, result.atoms);\n            if (!options.filterFct.apply(null, variables))\n                continue;\n        }\n        result.parts = [];\n        result.mf = '';\n        let comments = [];\n        for (let i = 0; i < keys.length; i++) {\n            let key = keys[i][currents[i]];\n            if (key) {\n                if (key.includes('$')) {\n                    comments.push(key.replace(/^[^$]*\\$/, ''));\n                    key = key.replace(/\\$.*/, '');\n                }\n                result.parts[i] = key;\n                result.mf += key;\n            }\n        }\n        if (comments.length > 0) {\n            result.comment = comments.join(' ');\n        }\n        let match = (0, mf_matcher_1.msemMatcher)(result, filter);\n        if (!match)\n            continue;\n        result.ms = match.ms;\n        result.ionization = match.ionization;\n        if (canonizeMF) {\n            result.mf = new mf_parser_1.MF(result.mf).toMF();\n        }\n        results.push(result);\n    }\n}\n//# sourceMappingURL=generateMFs.js.map","let xAtomicNumber = 0;\n/**\n * Returns the atomic number of the X atom\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @returns\n */\nexport function getXAtomicNumber(molecule) {\n    if (!xAtomicNumber) {\n        const OCL = molecule.getOCL();\n        xAtomicNumber = OCL.Molecule.getAtomicNoFromLabel('X', OCL.Molecule.cPseudoAtomX);\n    }\n    return xAtomicNumber;\n}\n//# sourceMappingURL=getXAtomicNumber.js.map","/**\n * Check if a specific atom is a sp3 carbon\n * @param {import('openchemlib').Molecule} molecule\n * @param {number} atomID\n */\nexport function isCsp3(molecule, atomID) {\n    if (molecule.getAtomicNo(atomID) !== 6)\n        return false;\n    if (molecule.getAtomCharge(atomID) !== 0)\n        return false;\n    if (molecule.getImplicitHydrogens(atomID) + molecule.getConnAtoms(atomID) !==\n        4) {\n        return false;\n    }\n    return true;\n}\n//# sourceMappingURL=isCsp3.js.map","/**\n * This method put all the chiral centers in the molecule in the same group and racemic\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @param {object} [options={}]\n * @param {object} [options.OCL] - openchemlib library\n */\nexport function makeRacemic(molecule) {\n    const { Molecule } = molecule.getOCL();\n    // if we don't calculate this we have 2 epimers\n    molecule.ensureHelperArrays(Molecule.cHelperCIP);\n    // we need to make one group \"AND\" for chiral (to force to racemic, this means diastereotopic and not enantiotopic)\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomParity(i) !== Molecule.cAtomParityNone) {\n            molecule.setAtomESR(i, Molecule.cESRTypeAnd, 0); // changed to group 0; TLS 9.Nov.2015\n        }\n    }\n    // after the change we need to recalculate the CIP\n    molecule.ensureHelperArrays(Molecule.cHelperCIP);\n}\n//# sourceMappingURL=makeRacemic.js.map","import { getXAtomicNumber } from './getXAtomicNumber';\n/**\n * Tag an atom to be able to visualize it\n * @param molecule\n * @param iAtom\n */\nexport function tagAtom(molecule, iAtom) {\n    const customLabel = `${molecule.getAtomLabel(iAtom)}*`;\n    molecule.setAtomCustomLabel(iAtom, customLabel);\n    if (molecule.getAtomicNo(iAtom) === 1) {\n        molecule.setAtomicNo(iAtom, getXAtomicNumber(molecule));\n    }\n    else {\n        // we can not use X because we would have problems with valencies if it is\n        // expanded hydrogens or not\n        // we can not only use a custom label because it does not count for the canonisation\n        molecule.setAtomMass(iAtom, molecule.getAtomMass(iAtom) + 5);\n    }\n    return customLabel;\n}\n//# sourceMappingURL=tagAtom.js.map","import { getXAtomicNumber } from '../util/getXAtomicNumber.js';\nimport { isCsp3 } from '../util/isCsp3.js';\nimport { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from '../util/tagAtom';\nexport const FULL_HOSE_CODE = 1;\nexport const HOSE_CODE_CUT_C_SP3_SP3 = 2;\n/**\n * Returns the hose code for specific atom numbers\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule with expandedImplicitHydrogens and ensureHeterotopicChiralBonds\n * @param {object} [options={}]\n * @param {string[]} [options.allowedCustomLabels] - Array of the custom labels that are considered as root atoms. By default all atoms having a customLabel\n * @param {number} [options.minSphereSize=0] - Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] - Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] - Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtomsInternal(molecule, options = {}) {\n    const fragments = getHoseCodesForAtomsAsFragments(molecule, options);\n    const OCL = molecule.getOCL();\n    const hoses = [];\n    for (const fragment of fragments) {\n        hoses.push(fragment.getCanonizedIDCode(OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS));\n    }\n    return hoses;\n}\nexport function getHoseCodesForAtomsAsFragments(molecule, options = {}) {\n    const OCL = molecule.getOCL();\n    const { allowedCustomLabels, minSphereSize = 0, maxSphereSize = 4, kind = FULL_HOSE_CODE, tagAtoms = [], tagAtomFct = tagAtom, } = options;\n    const rootAtoms = options.rootAtoms ? options.rootAtoms.slice() : [];\n    molecule = molecule.getCompactCopy();\n    if (tagAtoms.length > 0) {\n        internalTagAtoms(molecule, tagAtoms, rootAtoms, tagAtomFct);\n    }\n    else {\n        // this force reordering of atoms in order to have hydrogens at the end\n        molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    }\n    if (rootAtoms.length === 0) {\n        for (let j = 0; j < molecule.getAllAtoms(); j++) {\n            if (allowedCustomLabels?.includes(molecule.getAtomCustomLabel(j)) ||\n                molecule.getAtomCustomLabel(j)) {\n                rootAtoms.push(j);\n            }\n        }\n    }\n    const fragments = [];\n    const fragment = new OCL.Molecule(0, 0);\n    // keep track of the atoms when creating the fragment\n    const mappings = [];\n    let min = 0;\n    let max = 0;\n    const atomMask = new Uint8Array(molecule.getAllAtoms());\n    const atomList = new Uint8Array(molecule.getAllAtoms());\n    for (let sphere = 0; sphere <= maxSphereSize; sphere++) {\n        if (max === 0) {\n            for (const rootAtom of rootAtoms) {\n                atomList[max] = rootAtom;\n                atomMask[rootAtom] = true;\n                max++;\n            }\n        }\n        else {\n            let newMax = max;\n            for (let i = min; i < max; i++) {\n                const atom = atomList[i];\n                for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n                    const connAtom = molecule.getConnAtom(atom, j);\n                    if (!atomMask[connAtom]) {\n                        switch (kind) {\n                            case FULL_HOSE_CODE:\n                                atomMask[connAtom] = true;\n                                atomList[newMax++] = connAtom;\n                                break;\n                            case HOSE_CODE_CUT_C_SP3_SP3:\n                                if (!(isCsp3(molecule, atom) && isCsp3(molecule, connAtom))) {\n                                    atomMask[connAtom] = true;\n                                    atomList[newMax++] = connAtom;\n                                }\n                                break;\n                            default:\n                                throw new Error('getHoseCoesForAtom unknown kind');\n                        }\n                    }\n                }\n            }\n            min = max;\n            max = newMax;\n        }\n        if (sphere >= minSphereSize) {\n            molecule.copyMoleculeByAtoms(fragment, atomMask, true, mappings);\n            // we using atomMapNo field in order to keep track of the original atom number even if we remove hydrogens\n            for (let i = 0; i < fragment.getAllAtoms(); i++) {\n                fragment.setAtomMapNo(i, mappings.indexOf(i) + 1);\n            }\n            fragment.removeExplicitHydrogens();\n            makeRacemic(fragment);\n            // we encode atom characteristics in the query features\n            addQueryFeaturesAndRemoveMapNo(fragment, molecule);\n            fragments.push(fragment.getCompactCopy());\n        }\n    }\n    return fragments;\n}\n/**\n * If the atom is not an halogen, X or an hydrogen\n * we add query features to the atom\n * This includes aromaticity, ring size, number of hydrogens\n * @param {import('openchemlib').Molecule} fragment\n * @param {import('openchemlib').Molecule} molecule\n */\nfunction addQueryFeaturesAndRemoveMapNo(fragment, molecule) {\n    const Molecule = molecule.getOCL().Molecule;\n    for (let i = 0; i < fragment.getAllAtoms(); i++) {\n        const mapping = fragment.getAtomMapNo(i) - 1;\n        fragment.setAtomMapNo(i, 0);\n        if ([1, 9, 17, 35, 53, getXAtomicNumber(molecule)].includes(fragment.getAtomicNo(i))) {\n            continue;\n        }\n        // aromaticity\n        const isAromatic = molecule.isAromaticAtom(mapping);\n        if (isAromatic) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFAromatic, true);\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNotAromatic, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFAromatic, false);\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNotAromatic, true);\n        }\n        // cycles\n        const smallestRing = molecule.getAtomRingSize(mapping);\n        switch (smallestRing) {\n            case 0:\n                break;\n            case 3:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize3, true);\n                break;\n            case 4:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize4, true);\n                break;\n            case 5:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize5, true);\n                break;\n            case 6:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize6, true);\n                break;\n            case 7:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSize7, true);\n                break;\n            default:\n                fragment.setAtomQueryFeature(i, Molecule.cAtomQFRingSizeLarge, true);\n        }\n        const nbHydrogens = molecule.getAllHydrogens(mapping);\n        if (nbHydrogens === 0) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot0Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot0Hydrogen, true);\n        }\n        if (nbHydrogens === 1) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot1Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot1Hydrogen, true);\n        }\n        if (nbHydrogens === 2) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot2Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot2Hydrogen, true);\n        }\n        if (nbHydrogens === 3) {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot3Hydrogen, false);\n        }\n        else {\n            fragment.setAtomQueryFeature(i, Molecule.cAtomQFNot3Hydrogen, true);\n        }\n    }\n}\n// tagging atoms may change the order of the atoms because hydrogens must be at the end of the file\n// in order to remember the rootAtoms we will tag before\nfunction internalTagAtoms(molecule, tagAtoms, rootAtoms, tagAtomFct) {\n    const OCL = molecule.getOCL();\n    if (tagAtoms) {\n        for (let i = 0; i < molecule.getAllAtoms(); i++) {\n            molecule.setAtomMapNo(i, i + 1);\n        }\n        if (tagAtoms.length > 0) {\n            for (const atom of tagAtoms) {\n                tagAtomFct(molecule, atom);\n            }\n        }\n    }\n    // this force reordering of atoms in order to have hydrogens at the end\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    if (rootAtoms.length > 0) {\n        const mapping = new Int32Array(molecule.getAllAtoms());\n        for (let i = 0; i < molecule.getAllAtoms(); i++) {\n            mapping[molecule.getAtomMapNo(i) - 1] = i;\n        }\n        for (let i = 0; i < rootAtoms.length; i++) {\n            rootAtoms[i] = mapping[rootAtoms[i]];\n        }\n    }\n}\n//# sourceMappingURL=getHoseCodesForAtomsInternal.js.map","import { floydWarshall } from 'ml-floyd-warshall';\nimport { Matrix } from 'ml-matrix';\n/**\n * Returns a connectivity matrix\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {boolean} [options.pathLength=false] - get the path length between atoms\n * @param {boolean} [options.mass=false] - set the nominal mass of the atoms on diagonal\n * @param {boolean} [options.atomicNo=false] - set the atomic number of the atom on diagonal\n * @param {boolean} [options.negativeAtomicNo=false] - set the atomic number * -1 of the atom on diagonal\n * @param {boolean} [options.sdt=false] - set 1, 2 or 3 depending if single, double or triple bond\n * @param {boolean} [options.sdta=false] - set 1, 2, 3 or 4 depending if single, double, triple or aromatic  bond\n */\nexport function getConnectivityMatrix(molecule, options = {}) {\n    const OCL = molecule.getOCL();\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    const nbAtoms = molecule.getAllAtoms();\n    let result = new Array(nbAtoms).fill();\n    result = result.map(() => new Array(nbAtoms).fill(0));\n    if (!options.pathLength) {\n        if (options.atomicNo) {\n            for (let i = 0; i < nbAtoms; i++) {\n                result[i][i] = molecule.getAtomicNo(i);\n            }\n        }\n        else if (options.negativeAtomicNo) {\n            for (let i = 0; i < nbAtoms; i++) {\n                result[i][i] = -molecule.getAtomicNo(i);\n            }\n        }\n        else if (options.mass) {\n            for (let i = 0; i < nbAtoms; i++) {\n                result[i][i] = OCL.Molecule.cRoundedMass[molecule.getAtomicNo(i)];\n            }\n        }\n        else {\n            for (let i = 0; i < nbAtoms; i++) {\n                result[i][i] = 1;\n            }\n        }\n    }\n    if (options.sdt) {\n        for (let i = 0; i < nbAtoms; i++) {\n            const l = molecule.getAllConnAtoms(i);\n            for (let j = 0; j < l; j++) {\n                result[i][molecule.getConnAtom(i, j)] = molecule.getConnBondOrder(i, j);\n            }\n        }\n    }\n    else if (options.sdta) {\n        for (let i = 0; i < nbAtoms; i++) {\n            const l = molecule.getAllConnAtoms(i);\n            for (let j = 0; j < l; j++) {\n                const bondNumber = molecule.getConnBond(i, j);\n                if (molecule.isAromaticBond(bondNumber)) {\n                    result[i][molecule.getConnAtom(i, j)] = 4;\n                }\n                else {\n                    result[i][molecule.getConnAtom(i, j)] = molecule.getConnBondOrder(i, j);\n                }\n            }\n        }\n    }\n    else {\n        for (let i = 0; i < nbAtoms; i++) {\n            const l = molecule.getAllConnAtoms(i);\n            for (let j = 0; j < l; j++) {\n                result[i][molecule.getConnAtom(i, j)] = 1;\n            }\n        }\n    }\n    if (options.pathLength) {\n        result = floydWarshall(new Matrix(result)).to2DArray();\n    }\n    return result;\n}\n//# sourceMappingURL=getConnectivityMatrix.js.map","import { Matrix } from 'ml-matrix';\n/**\n * Algorithm that finds the shortest distance from one node to the other\n * @param {Matrix} adjMatrix - A squared adjacency matrix\n * @return {Matrix} - Distance from a node to the other, -1 if the node is unreachable\n */\nexport function floydWarshall(adjMatrix) {\n    if (Matrix.isMatrix(adjMatrix) && adjMatrix.columns !== adjMatrix.rows) {\n        throw new TypeError('The adjacency matrix should be squared');\n    }\n    const numVertices = adjMatrix.columns;\n    let distMatrix = new Matrix(numVertices, numVertices);\n    distMatrix.apply((row, column) => {\n        // principal diagonal is 0\n        if (row === column) {\n            distMatrix.set(row, column, 0);\n        }\n        else {\n            let val = adjMatrix.get(row, column);\n            if (val || Object.is(val, -0)) {\n                // edges values remain the same\n                distMatrix.set(row, column, val);\n            }\n            else {\n                // 0 values become infinity\n                distMatrix.set(row, column, Number.POSITIVE_INFINITY);\n            }\n        }\n    });\n    for (let k = 0; k < numVertices; ++k) {\n        for (let i = 0; i < numVertices; ++i) {\n            for (let j = 0; j < numVertices; ++j) {\n                let dist = distMatrix.get(i, k) + distMatrix.get(k, j);\n                if (distMatrix.get(i, j) > dist) {\n                    distMatrix.set(i, j, dist);\n                }\n            }\n        }\n    }\n    // When there's no connection the value is -1\n    distMatrix.apply((row, column) => {\n        if (distMatrix.get(row, column) === Number.POSITIVE_INFINITY) {\n            distMatrix.set(row, column, -1);\n        }\n    });\n    return distMatrix;\n}\n//# sourceMappingURL=index.js.map","import { getXAtomicNumber } from '../util/getXAtomicNumber.js';\n/**\n * Returns the atoms that are chiral or pseudo chiral.\n * There could be some issues if the original molecule lacks chiral bonds.\n * The function will add them and this could lead to some issues in the case of pseudochiral atoms.\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number[]}\n */\nexport function getChiralOrHeterotopicCarbons(molecule) {\n    const { Molecule } = molecule.getOCL();\n    const xAtomicNumber = getXAtomicNumber(molecule);\n    const internalMolecule = molecule.getCompactCopy();\n    // hydrogens may be diastereotopic, we need to add them\n    internalMolecule.addImplicitHydrogens();\n    for (let i = 0; i < internalMolecule.getAllAtoms(); i++) {\n        // hydrogens are not taken into account during canonization, we need to change them with an atom with a valence of 1\n        if (internalMolecule.getAtomicNo(i) === 1) {\n            internalMolecule.setAtomicNo(i, xAtomicNumber);\n        }\n    }\n    addPossibleChiralBonds(internalMolecule);\n    internalMolecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    const atoms = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (internalMolecule.getAtomicNo(i) === xAtomicNumber) {\n            continue;\n        }\n        if (molecule.getAtomicNo(i) !== internalMolecule.getAtomicNo(i)) {\n            throw new Error('getChiralOrHeterotopicCarbons: mismatching atomic numbers');\n        }\n        if (internalMolecule.getAtomicNo(i) !== 6) {\n            continue;\n        }\n        const neighbourSymmetries = getNeighbourSymmetries(internalMolecule, i);\n        if (neighbourSymmetries.length === 4) {\n            atoms.push(i);\n        }\n    }\n    return atoms;\n}\nfunction addPossibleChiralBonds(molecule) {\n    const { Molecule } = molecule.getOCL();\n    molecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    for (let i = 0; i < molecule.getAtoms(); i++) {\n        if (molecule.getAtomicNo(i) !== 6)\n            continue;\n        if (molecule.getStereoBond(i) >= 0)\n            continue;\n        const neighbourSymmetries = getNeighbourSymmetries(molecule, i);\n        if (neighbourSymmetries.length <= 2)\n            continue;\n        const stereoBond = molecule.getAtomPreferredStereoBond(i);\n        if (stereoBond !== -1) {\n            molecule.setBondType(stereoBond, Molecule.cBondTypeUp);\n            if (molecule.getBondAtom(1, stereoBond) === i) {\n                const connAtom = molecule.getBondAtom(0, stereoBond);\n                molecule.setBondAtom(0, stereoBond, i);\n                molecule.setBondAtom(1, stereoBond, connAtom);\n            }\n            // To me it seems that we have to add all stereo centers into AND group 0. TLS 9.Nov.2015\n            molecule.setAtomESR(i, Molecule.cESRTypeAnd, 0);\n        }\n    }\n}\nfunction getNeighbourSymmetries(molecule, iAtom) {\n    const neighbourSymmetries = [];\n    for (let j = 0; j < molecule.getAllConnAtoms(iAtom); j++) {\n        const connAtom = molecule.getConnAtom(iAtom, j);\n        const symmetryRank = molecule.getSymmetryRank(connAtom);\n        if (!neighbourSymmetries.includes(symmetryRank)) {\n            neighbourSymmetries.push(molecule.getSymmetryRank(connAtom));\n        }\n    }\n    return neighbourSymmetries;\n}\n//# sourceMappingURL=getChiralOrHeterotopicCarbons.js.map","import { getChiralOrHeterotopicCarbons } from './getChiralOrHeterotopicCarbons.js';\n/**\n * This function will add missing chiral bonds on carbons ensure that all enantiotopic\n * or diastereotopic atoms can be identified uniquely\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {number} [options.esrType=Molecule.cESRTypeAnd]\n * @param {boolean} [options.atLeastThreeAtoms=true] - if true, only carbons with at least three atoms will be considered\n */\nexport function ensureHeterotopicChiralBonds(molecule, options = {}) {\n    const { Molecule } = molecule.getOCL();\n    const { esrType = Molecule.cESRTypeAnd, atLeastThreeAtoms = true } = options;\n    molecule.ensureHelperArrays(Molecule.cHelperBitNeighbours);\n    const heterotopicCarbons = getChiralOrHeterotopicCarbons(molecule);\n    for (const i of heterotopicCarbons) {\n        if (atLeastThreeAtoms && molecule.getAllConnAtoms(i) < 3)\n            continue;\n        if (molecule.getStereoBond(i) === -1) {\n            const stereoBond = molecule.getAtomPreferredStereoBond(i);\n            if (stereoBond !== -1) {\n                molecule.setBondType(stereoBond, Molecule.cBondTypeUp);\n                if (molecule.getBondAtom(1, stereoBond) === i) {\n                    const connAtom = molecule.getBondAtom(0, stereoBond);\n                    molecule.setBondAtom(0, stereoBond, i);\n                    molecule.setBondAtom(1, stereoBond, connAtom);\n                }\n                // To me it seems that we have to add all stereo centers into AND group 0. TLS 9.Nov.2015\n                molecule.setAtomESR(i, esrType, 0);\n            }\n        }\n    }\n}\n//# sourceMappingURL=ensureHeterotopicChiralBonds.js.map","import { getHoseCodesForAtomsAsFragments } from '../hose/getHoseCodesForAtomsInternal.js';\nimport { getAllAtomsPaths } from '../path/getAllAtomsPaths.js';\nimport { getConnectivityMatrix } from '../util/getConnectivityMatrix.js';\nimport { getCanonizedDiaIDs } from './getCanonizedDiaIDs';\nimport { getCanonizedHoseCodes } from './getCanonizedHoseCodes';\nimport { getDiaIDsAndInfo } from './getDiaIDsAndInfo';\nimport { getHeterotopicSymmetryRanks, getFinalRanks, } from './getHeterotopicSymmetryRanks';\nimport { getMoleculeWithH } from './getMoleculeWithH';\nimport { getXMolecule } from './getXMolecule';\n/**\n * This class deals with topicity information and hose codes\n * It is optimized to avoid recalculation of the same information\n */\nexport class TopicMolecule {\n    constructor(molecule, options = {}) {\n        this.originalMolecule = molecule;\n        this.options = {\n            maxPathLength: 5,\n            maxNbAtoms: 250,\n            logger: console,\n            ...options,\n        };\n        this.idCode = molecule.getIDCode();\n        this.molecule = this.originalMolecule.getCompactCopy();\n        this.molecule.ensureHelperArrays(molecule.getOCL().Molecule.cHelperNeighbours);\n        this.molecule.ensureHelperArrays(this.molecule.getOCL().Molecule.cHelperNeighbours);\n        this.cache = {};\n    }\n    /**\n     * This method ensures that all the atoms have a mapNo corresponding to the atom number.\n     * It will enforce mapNo in molecule and moleculeWithH\n     * We start numbering the atoms at 1\n     */\n    setAtomNoInMapNo() {\n        const molecules = [this.molecule, this.moleculeWithH];\n        for (const molecule of molecules) {\n            for (let i = 0; i < molecule.getAllAtoms(); i++) {\n                molecule.setAtomMapNo(i, i + 1, false);\n            }\n        }\n    }\n    /**\n     * This method ensures that all the atoms have a mapNo in the molecule (and not the moleculeWithH! )\n     */\n    ensureMapNo() {\n        const existingMapNo = {};\n        for (let i = 0; i < this.molecule.getAllAtoms(); i++) {\n            const mapNo = this.molecule.getAtomMapNo(i);\n            if (mapNo) {\n                if (existingMapNo[mapNo]) {\n                    throw new Error('The molecule contains several atoms with the same mapNo');\n                }\n                existingMapNo[mapNo] = true;\n            }\n        }\n        let nextMapNo = 1;\n        for (let i = 0; i < this.molecule.getAllAtoms(); i++) {\n            const mapNo = this.molecule.getAtomMapNo(i);\n            if (!mapNo) {\n                while (existingMapNo[nextMapNo]) {\n                    nextMapNo++;\n                }\n                existingMapNo[nextMapNo] = true;\n                this.molecule.setAtomMapNo(i, nextMapNo, false);\n            }\n        }\n    }\n    getHoseFragment(rootAtoms, options = {}) {\n        const { sphereSize = 2, tagAtoms = rootAtoms, tagAtomFct } = options;\n        const fragments = getHoseCodesForAtomsAsFragments(this.moleculeWithH, {\n            rootAtoms,\n            minSphereSize: sphereSize,\n            maxSphereSize: sphereSize,\n            tagAtoms,\n            tagAtomFct,\n        });\n        return fragments[0];\n    }\n    getAtomPathsFrom(atom, options = {}) {\n        const { minPathLength = 1, maxPathLength = this.options.maxPathLength, toAtomicNo, } = options;\n        if (maxPathLength > this.options.maxPathLength) {\n            throw new Error('The maxPathLength is too long, you should increase the maxPathLength when instantiating the TopicMolecule');\n        }\n        const atomPaths = this.atomsPaths[atom];\n        const paths = [];\n        for (let i = minPathLength; i <= maxPathLength; i++) {\n            for (const atomPath of atomPaths[i]) {\n                if (!toAtomicNo ||\n                    this.moleculeWithH.getAtomicNo(atomPath.path.at(-1)) ===\n                        toAtomicNo) {\n                    paths.push(atomPath.path);\n                }\n            }\n        }\n        return paths;\n    }\n    getAtomPaths(atom1, atom2, options = {}) {\n        const { pathLength } = options;\n        if (pathLength !== undefined && pathLength > this.options.maxPathLength) {\n            throw new Error('The distance is too long, you should increase the maxPathLength when instantiating the TopicMolecule');\n        }\n        const atomPaths = this.atomsPaths[atom1];\n        const minDistance = pathLength || 0;\n        const maxDistance = pathLength || this.options.maxPathLength;\n        const paths = [];\n        for (let i = minDistance; i <= maxDistance; i++) {\n            for (const atomPath of atomPaths[i]) {\n                if (atomPath.path.at(-1) === atom2) {\n                    paths.push(atomPath.path);\n                }\n            }\n        }\n        return paths;\n    }\n    get atomsPaths() {\n        if (this.cache.atomsPaths)\n            return this.cache.atomsPaths;\n        this.cache.atomsPaths = getAllAtomsPaths(this.moleculeWithH, {\n            maxPathLength: this.options.maxPathLength,\n        });\n        return this.cache.atomsPaths;\n    }\n    toMolfile(options = {}) {\n        const { version = 2 } = options;\n        if (version === 2) {\n            return this.molecule.toMolfile();\n        }\n        return this.molecule.toMolfileV3();\n    }\n    getMolecule() {\n        return this.molecule;\n    }\n    /**\n     * Returns a new TopicMolecule but will copy precalculated information\n     * if possible (same idCode). This is very practical when expanding hydrogens\n     * for example.\n     * @param molecule\n     * @returns\n     */\n    fromMolecule(molecule) {\n        const idCode = molecule.getIDCode();\n        if (idCode !== this.idCode) {\n            // no way for optimisation\n            return new TopicMolecule(molecule);\n        }\n        const topicMolecule = new TopicMolecule(molecule);\n        topicMolecule.cache = {\n            canonizedDiaIDs: this.cache.canonizedDiaIDs,\n            canonizedHoseCodes: this.cache.canonizedHoseCodes,\n        };\n        return topicMolecule;\n    }\n    /**\n     * Returns a molecule with all the hydrogens added. The order is NOT canonized\n     */\n    get moleculeWithH() {\n        if (this.cache.moleculeWithH)\n            return this.cache.moleculeWithH;\n        this.cache.moleculeWithH = getMoleculeWithH(this.molecule, {\n            maxNbAtoms: this.options.maxNbAtoms,\n            logger: this.options.logger,\n        });\n        return this.cache.moleculeWithH;\n    }\n    get xMolecule() {\n        if (this.cache.xMolecule)\n            return this.cache.xMolecule;\n        this.cache.xMolecule = getXMolecule(this.moleculeWithH);\n        return this.cache.xMolecule;\n    }\n    /**\n     * This is related to the current moleculeWithH. The order is NOT canonized\n     */\n    get diaIDs() {\n        if (this.cache.diaIDs)\n            return this.cache.diaIDs;\n        const diaIDs = [];\n        if (this.moleculeWithH.getAllAtoms() > this.options.maxNbAtoms) {\n            this.options.logger.warn(`too many atoms to evaluate heterotopicity: ${this.moleculeWithH.getAllAtoms()} > ${this.options.maxNbAtoms}`);\n        }\n        else {\n            for (let i = 0; i < this.moleculeWithH.getAllAtoms(); i++) {\n                diaIDs.push(this.canonizedDiaIDs[this.finalRanks[i]]);\n            }\n        }\n        this.cache.diaIDs = diaIDs;\n        return diaIDs;\n    }\n    /**\n     * We return the atomIDs corresponding to the specified diaID as well has the attached hydrogens or heavy atoms\n     * @param diaID\n     * @returns\n     */\n    getDiaIDsObject() {\n        if (!this.diaIDs)\n            return undefined;\n        return groupDiastereotopicAtomIDsAsObject(this.diaIDs, this.molecule, this.moleculeWithH);\n    }\n    /**\n     * This is related to the current moleculeWithH. The order is NOT canonized\n     */\n    get hoseCodes() {\n        if (this.cache.hoseCodes)\n            return this.cache.hoseCodes;\n        const hoseCodes = [];\n        for (let i = 0; i < this.moleculeWithH.getAllAtoms(); i++) {\n            hoseCodes.push(this.canonizedHoseCodes[this.finalRanks[i]]);\n        }\n        this.cache.hoseCodes = hoseCodes;\n        return hoseCodes;\n    }\n    get canonizedDiaIDs() {\n        if (this.cache.canonizedDiaIDs)\n            return this.cache.canonizedDiaIDs;\n        this.cache.canonizedDiaIDs = getCanonizedDiaIDs(this, {\n            maxNbAtoms: this.options.maxNbAtoms,\n            logger: this.options.logger,\n        });\n        return this.cache.canonizedDiaIDs;\n    }\n    get canonizedHoseCodes() {\n        if (this.cache.canonizedHoseCodes) {\n            return this.cache.canonizedHoseCodes;\n        }\n        this.cache.canonizedHoseCodes = getCanonizedHoseCodes(this);\n        return this.cache.canonizedHoseCodes;\n    }\n    /**\n     * Returns the distance matrix for the current moleculeWithH\n     */\n    get distanceMatrix() {\n        return getConnectivityMatrix(this.moleculeWithH, { pathLength: true });\n    }\n    get diaIDsAndInfo() {\n        if (this.cache.diaIDsAndInfo) {\n            return this.cache.diaIDsAndInfo;\n        }\n        this.cache.diaIDsAndInfo = getDiaIDsAndInfo(this, this.canonizedDiaIDs);\n        return this.cache.diaIDsAndInfo;\n    }\n    /**\n     * Returns symmetryRanks for all the atoms including hydrogens. Those ranks\n     * deals with topicity and is related to the current moleculeWithH.\n     * In order to calculate the ranks we replace all the\n     * hydrogens with a X atom.\n     */\n    get heterotopicSymmetryRanks() {\n        if (this.cache.heterotopicSymmetryRanks) {\n            return this.cache.heterotopicSymmetryRanks;\n        }\n        this.cache.heterotopicSymmetryRanks = getHeterotopicSymmetryRanks(this.xMolecule);\n        return [...this.cache.heterotopicSymmetryRanks];\n    }\n    /**\n     * Returns finalRanks for all the atoms including hydrogens. Those ranks\n     * deals with topicity and is related to the current moleculeWithH.\n     * All the atoms have a unique identifier.j\n     * In order to calculate the ranks we replace all the\n     * hydrogens with a X atom.\n     */\n    get finalRanks() {\n        if (this.cache.finalRanks)\n            return this.cache.finalRanks;\n        this.cache.finalRanks = getFinalRanks(this.xMolecule);\n        return this.cache.finalRanks;\n    }\n    toMolfileWithH(options = {}) {\n        const { version = 2 } = options;\n        if (version === 2) {\n            return this.moleculeWithH.toMolfile();\n        }\n        return this.moleculeWithH.toMolfileV3();\n    }\n    toMolfileWithoutH(options = {}) {\n        const molecule = this.molecule.getCompactCopy();\n        molecule.removeExplicitHydrogens(false);\n        const { version = 2 } = options;\n        if (version === 2) {\n            return molecule.toMolfile();\n        }\n        return molecule.toMolfileV3();\n    }\n    /**\n     * Returns an array of objects containing the oclID and the corresponding hydrogens and atoms\n     * for the specified atomLabel (if any)\n     * This always applied to the molecule with expanded hydrogens and chirality\n     * @param options\n     * @returns\n     */\n    getGroupedDiastereotopicAtomIDs(options = {}) {\n        if (!this.diaIDs)\n            return undefined;\n        return groupDiastereotopicAtomIDs(this.diaIDs, this.moleculeWithH, options);\n    }\n    /**\n     * This method returns a mapping between the diaIDs of the current molecule.\n     * It expects that the initial molfile and the final molfile contains atomMapNo\n     * in order to track which atom becomes which one.\n     * @param molecule\n     */\n    getDiaIDsMapping(molecule) {\n        const topicMolecule = new TopicMolecule(molecule);\n        const originalDiaIDs = this.diaIDsAndInfo.filter((diaID) => diaID.atomMapNo);\n        const destinationDiaIDs = topicMolecule.diaIDsAndInfo.filter((diaID) => diaID.atomMapNo);\n        const mapping = {};\n        // we first check all the atoms present in the molfile\n        for (const destinationDiaID of destinationDiaIDs) {\n            const originalDiaID = originalDiaIDs.find((diaID) => diaID.atomMapNo === destinationDiaID.atomMapNo);\n            const newIDCode = destinationDiaID.idCode;\n            const oldIDCode = originalDiaID.idCode;\n            if (oldIDCode in mapping) {\n                if (mapping[oldIDCode] !== newIDCode) {\n                    mapping[oldIDCode] = undefined;\n                }\n            }\n            else {\n                mapping[oldIDCode] = newIDCode;\n            }\n        }\n        // we now check all the attached hydrogens that are not defined in the molfile and were not yet mapped\n        for (const destinationDiaID of destinationDiaIDs) {\n            const originalDiaID = originalDiaIDs.find((diaID) => diaID.atomMapNo === destinationDiaID.atomMapNo);\n            for (let i = 0; i < originalDiaID.attachedHydrogensIDCodes.length; i++) {\n                const oldHydrogenIDCode = originalDiaID.attachedHydrogensIDCodes[i];\n                if (mapping[oldHydrogenIDCode])\n                    continue;\n                const newHydrogenIDCode = destinationDiaID.attachedHydrogensIDCodes[i];\n                if (oldHydrogenIDCode && newHydrogenIDCode) {\n                    if (oldHydrogenIDCode in mapping) {\n                        if (mapping[oldHydrogenIDCode] !== newHydrogenIDCode) {\n                            mapping[oldHydrogenIDCode] = undefined;\n                        }\n                    }\n                    else {\n                        mapping[oldHydrogenIDCode] = newHydrogenIDCode;\n                    }\n                }\n            }\n        }\n        return mapping;\n    }\n}\nexport function groupDiastereotopicAtomIDs(diaIDs, molecule, options = {}) {\n    const diaIDsObject = groupDiastereotopicAtomIDsAsObject(diaIDs, molecule, molecule, options);\n    return Object.keys(diaIDsObject).map((key) => diaIDsObject[key]);\n}\nfunction groupDiastereotopicAtomIDsAsObject(diaIDs, molecule, moleculeWithH, options = {}) {\n    const { atomLabel } = options;\n    const diaIDsObject = {};\n    for (let i = 0; i < diaIDs.length; i++) {\n        if (!atomLabel || moleculeWithH.getAtomLabel(i) === atomLabel) {\n            const diaID = diaIDs[i];\n            if (!diaIDsObject[diaID]) {\n                diaIDsObject[diaID] = {\n                    counter: 0,\n                    atoms: [],\n                    oclID: diaID,\n                    atomLabel: moleculeWithH.getAtomLabel(i),\n                    heavyAtoms: [],\n                    attachedHydrogens: [],\n                    existingAtoms: [],\n                };\n            }\n            if (moleculeWithH.getAtomicNo(i) === 1) {\n                const connected = moleculeWithH.getConnAtom(i, 0);\n                if (!diaIDsObject[diaID].heavyAtoms.includes(connected)) {\n                    diaIDsObject[diaID].heavyAtoms.push(connected);\n                }\n                if (molecule.getAtomicNo(i)) {\n                    diaIDsObject[diaID].existingAtoms.push(i);\n                }\n                else if (!diaIDsObject[diaID].existingAtoms.includes(connected)) {\n                    diaIDsObject[diaID].existingAtoms.push(connected);\n                }\n            }\n            else {\n                for (let j = 0; j < moleculeWithH.getAllConnAtoms(i); j++) {\n                    const connected = moleculeWithH.getConnAtom(i, j);\n                    if (moleculeWithH.getAtomicNo(connected) === 1) {\n                        diaIDsObject[diaID].attachedHydrogens.push(connected);\n                    }\n                }\n                diaIDsObject[diaID].existingAtoms.push(i);\n            }\n            diaIDsObject[diaID].counter++;\n            diaIDsObject[diaID].atoms.push(i);\n        }\n    }\n    for (const diaID in diaIDsObject) {\n        diaIDsObject[diaID].existingAtoms.sort((a, b) => a - b);\n        diaIDsObject[diaID].attachedHydrogens.sort((a, b) => a - b);\n    }\n    return diaIDsObject;\n}\n//# sourceMappingURL=TopicMolecule.js.map","/**\n * We need to create an array of atoms\n * that contains an array of pathLength\n * that contains an array of object\n * @param molecule\n * @param options\n * @returns\n */\nexport function getAllAtomsPaths(molecule, options = {}) {\n    const { maxPathLength = 5 } = options;\n    const allAtomsPaths = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const oneAtomPaths = [];\n        allAtomsPaths.push(oneAtomPaths);\n        let atomPaths = [];\n        atomPaths.push({ path: [i], pathLength: 0 });\n        oneAtomPaths.push(atomPaths);\n        let nextIndexes = [0];\n        let nextAtoms = [i];\n        for (let sphere = 1; sphere <= maxPathLength; sphere++) {\n            atomPaths = [];\n            oneAtomPaths.push(atomPaths);\n            const currentIndexes = nextIndexes;\n            const currentAtoms = nextAtoms;\n            nextIndexes = [];\n            nextAtoms = [];\n            for (let i = 0; i < currentIndexes.length; i++) {\n                const atom = currentAtoms[i];\n                const index = currentIndexes[i];\n                const previousPath = oneAtomPaths[sphere - 1][index].path;\n                for (let conn = 0; conn < molecule.getAllConnAtoms(atom); conn++) {\n                    const connectedAtom = molecule.getConnAtom(atom, conn);\n                    if (previousPath.includes(connectedAtom))\n                        continue;\n                    nextIndexes.push(atomPaths.length);\n                    nextAtoms.push(connectedAtom);\n                    atomPaths.push({\n                        path: [...previousPath, connectedAtom],\n                        pathLength: sphere,\n                    });\n                }\n            }\n        }\n    }\n    return allAtomsPaths;\n}\n//# sourceMappingURL=getAllAtomsPaths.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\n/**\n * Expand all the implicit hydrogens and ensure chiral bonds on heterotopic bonds\n * @param molecule\n * @param options\n * @returns\n */\nexport function getMoleculeWithH(molecule, options) {\n    const { logger, maxNbAtoms } = options;\n    const moleculeWithH = molecule.getCompactCopy();\n    moleculeWithH.addImplicitHydrogens();\n    if (moleculeWithH.getAllAtoms() > maxNbAtoms) {\n        logger.warn(`too many atoms to evaluate heterotopic chiral bonds: ${moleculeWithH.getAllAtoms()} > ${maxNbAtoms}`);\n    }\n    else {\n        ensureHeterotopicChiralBonds(moleculeWithH);\n    }\n    return moleculeWithH;\n}\n//# sourceMappingURL=getMoleculeWithH.js.map","import { getXAtomicNumber } from '../util/getXAtomicNumber.js';\n/**\n * In order to be able to give a unique ID to all the atoms we are replacing the H by X\n * @param moleculeWithH\n * @returns\n */\nexport function getXMolecule(moleculeWithH) {\n    const xAtomNumber = getXAtomicNumber(moleculeWithH);\n    const xMolecule = moleculeWithH.getCompactCopy();\n    for (let i = 0; i < xMolecule.getAllAtoms(); i++) {\n        // hydrogens are not taken into account during canonization, we need to change them with an atom with a valence of 1\n        if (xMolecule.getAtomicNo(i) === 1) {\n            xMolecule.setAtomicNo(i, xAtomNumber);\n        }\n    }\n    return xMolecule;\n}\n//# sourceMappingURL=getXMolecule.js.map","import { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from '../util/tagAtom';\nexport function getCanonizedDiaIDs(diaMol, options) {\n    const { logger, maxNbAtoms } = options;\n    const moleculeWithH = diaMol.moleculeWithH;\n    if (moleculeWithH.getAllAtoms() > maxNbAtoms) {\n        logger.warn(`too many atoms to evaluate heterotopic chiral bonds: ${moleculeWithH.getAllAtoms()} > ${maxNbAtoms}`);\n        return [];\n    }\n    const heterotopicSymmetryRanks = diaMol.heterotopicSymmetryRanks;\n    const finalRanks = diaMol.finalRanks;\n    const canonizedDiaIDs = new Array(moleculeWithH.getAllAtoms());\n    moleculeWithH.ensureHelperArrays(diaMol.molecule.getOCL().Molecule.cHelperSymmetryStereoHeterotopicity);\n    const cache = {};\n    for (let i = 0; i < diaMol.moleculeWithH.getAllAtoms(); i++) {\n        const rank = heterotopicSymmetryRanks[i];\n        if (rank && cache[rank]) {\n            canonizedDiaIDs[finalRanks[i]] = cache[rank].diaID;\n            continue;\n        }\n        const tempMolecule = diaMol.moleculeWithH.getCompactCopy();\n        tagAtom(tempMolecule, i);\n        makeRacemic(tempMolecule);\n        const diaID = tempMolecule.getCanonizedIDCode(diaMol.molecule.getOCL().Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS);\n        canonizedDiaIDs[finalRanks[i]] = diaID;\n    }\n    return canonizedDiaIDs;\n}\n//# sourceMappingURL=getCanonizedDiaIDs.js.map","import { getHoseCodesForAtomsInternal } from '../hose/getHoseCodesForAtomsInternal.js';\nimport { tagAtom } from '../util/tagAtom';\nexport function getCanonizedHoseCodes(topicMolecule) {\n    const options = topicMolecule.options;\n    const heterotopicSymmetryRanks = topicMolecule.heterotopicSymmetryRanks;\n    const moleculeWithH = topicMolecule.moleculeWithH;\n    const finalRanks = topicMolecule.finalRanks;\n    const canonizedHoseCodes = new Array(moleculeWithH.getAllAtoms());\n    moleculeWithH.ensureHelperArrays(topicMolecule.molecule.getOCL().Molecule\n        .cHelperSymmetryStereoHeterotopicity);\n    const cache = {};\n    for (let i = 0; i < topicMolecule.moleculeWithH.getAllAtoms(); i++) {\n        const rank = heterotopicSymmetryRanks[i];\n        if (rank && cache[rank]) {\n            canonizedHoseCodes[finalRanks[i]] = cache[rank].diaID;\n            continue;\n        }\n        const tempMolecule = topicMolecule.moleculeWithH.getCompactCopy();\n        tagAtom(tempMolecule, i);\n        const hoses = getHoseCodesForAtomsInternal(tempMolecule, options);\n        canonizedHoseCodes[finalRanks[i]] = hoses;\n    }\n    return canonizedHoseCodes;\n}\n//# sourceMappingURL=getCanonizedHoseCodes.js.map","export function getDiaIDsAndInfo(diaMol, canonizedDiaIDs) {\n    const newDiaIDs = [];\n    const molecule = diaMol.moleculeWithH;\n    const counts = {};\n    for (const diaID of canonizedDiaIDs) {\n        if (!counts[diaID]) {\n            counts[diaID] = 0;\n        }\n        counts[diaID]++;\n    }\n    for (let i = 0; i < canonizedDiaIDs.length; i++) {\n        const diaID = canonizedDiaIDs[diaMol.finalRanks[i]];\n        const newDiaID = {\n            idCode: diaID,\n            attachedHydrogensIDCodes: [],\n            attachedHydrogens: [],\n            nbAttachedHydrogens: 0,\n            atomLabel: molecule.getAtomLabel(i),\n            nbEquivalentAtoms: counts[diaID],\n            heavyAtom: undefined,\n            atomMapNo: molecule.getAtomMapNo(i),\n        };\n        if (molecule.getAtomicNo(i) === 1) {\n            const atom = molecule.getConnAtom(i, 0);\n            newDiaID.heavyAtom = canonizedDiaIDs[diaMol.finalRanks[atom]];\n        }\n        for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n            const atom = molecule.getConnAtom(i, j);\n            if (molecule.getAtomicNo(atom) === 1) {\n                newDiaID.nbAttachedHydrogens++;\n                newDiaID.attachedHydrogens.push(atom);\n                const hydrogenDiaID = canonizedDiaIDs[diaMol.finalRanks[atom]];\n                if (!newDiaID.attachedHydrogensIDCodes.includes(hydrogenDiaID)) {\n                    newDiaID.attachedHydrogensIDCodes.push(hydrogenDiaID);\n                }\n            }\n        }\n        newDiaIDs.push(newDiaID);\n    }\n    return newDiaIDs;\n}\n//# sourceMappingURL=getDiaIDsAndInfo.js.map","/**\n * Get a unique atomic number for a X\n * @param xMolecule\n * @returns\n */\nexport function getHeterotopicSymmetryRanks(xMolecule) {\n    xMolecule.ensureHelperArrays(xMolecule.getOCL().Molecule.cHelperSymmetryStereoHeterotopicity);\n    const symmetryRanks = [];\n    for (let i = 0; i < xMolecule.getAllAtoms(); i++) {\n        symmetryRanks.push(xMolecule.getSymmetryRank(i));\n    }\n    return symmetryRanks;\n}\nexport function getFinalRanks(xMolecule) {\n    xMolecule.ensureHelperArrays(xMolecule.getOCL().Molecule.cHelperSymmetryStereoHeterotopicity);\n    return xMolecule.getFinalRanks(0).map((rank) => rank - 1);\n}\n//# sourceMappingURL=getHeterotopicSymmetryRanks.js.map","import { getXAtomicNumber } from './getXAtomicNumber.js';\n/**\n * Returns an array of symmetry ranks.\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @returns\n */\nexport function getSymmetryRanks(molecule) {\n    const { Molecule } = molecule.getOCL();\n    const xAtomNumber = getXAtomicNumber(molecule);\n    // most of the molecules have some symmetry\n    const internalMolecule = molecule.getCompactCopy();\n    for (let i = 0; i < internalMolecule.getAllAtoms(); i++) {\n        // hydrogens are not taken into account during canonization, we need to change them with an atom with a valence of 1\n        if (internalMolecule.getAtomicNo(i) === 1) {\n            internalMolecule.setAtomicNo(i, xAtomNumber);\n        }\n    }\n    internalMolecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    const symmetryRanks = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        symmetryRanks.push(internalMolecule.getSymmetryRank(i));\n    }\n    return symmetryRanks;\n}\n//# sourceMappingURL=getSymmetryRanks.js.map","import { getSymmetryRanks } from '../util/getSymmetryRanks';\nimport { makeRacemic } from '../util/makeRacemic';\nimport { tagAtom } from '../util/tagAtom';\nimport { ensureHeterotopicChiralBonds } from './ensureHeterotopicChiralBonds';\n/**\n * Returns an array of diastereotopic ID (as idCode)\n * @param {import('openchemlib').Molecule} molecule\n */\nexport function getDiastereotopicAtomIDs(molecule) {\n    const { Molecule } = molecule.getOCL();\n    ensureHeterotopicChiralBonds(molecule);\n    const symmetryRanks = getSymmetryRanks(molecule);\n    const numberAtoms = molecule.getAllAtoms();\n    const ids = [];\n    const cache = {};\n    for (let iAtom = 0; iAtom < numberAtoms; iAtom++) {\n        const rank = symmetryRanks[iAtom];\n        if (rank && cache[rank]) {\n            ids[iAtom] = cache[rank];\n            continue;\n        }\n        const tempMolecule = molecule.getCompactCopy();\n        tagAtom(tempMolecule, iAtom);\n        makeRacemic(tempMolecule);\n        // We need to ensure the helper array in order to get correctly the result of racemisation\n        ids[iAtom] = tempMolecule.getCanonizedIDCode(Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS);\n        cache[rank] = ids[iAtom];\n    }\n    return ids;\n}\n//# sourceMappingURL=getDiastereotopicAtomIDs.js.map","import { getDiastereotopicAtomIDs } from './getDiastereotopicAtomIDs';\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n */\nexport function getDiastereotopicAtomIDsAndH(molecule) {\n    const OCL = molecule.getOCL();\n    molecule = molecule.getCompactCopy();\n    molecule.addImplicitHydrogens();\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    const diaIDs = getDiastereotopicAtomIDs(molecule);\n    const newDiaIDs = [];\n    for (let i = 0; i < diaIDs.length; i++) {\n        const diaID = diaIDs[i];\n        const newDiaID = {\n            oclID: diaID,\n            hydrogenOCLIDs: [],\n            nbHydrogens: 0,\n        };\n        if (molecule.getAtomicNo(i) === 1) {\n            const atom = molecule.getConnAtom(i, 0);\n            newDiaID.heavyAtom = diaIDs[atom];\n        }\n        for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n            const atom = molecule.getConnAtom(i, j);\n            if (molecule.getAtomicNo(atom) === 1) {\n                newDiaID.nbHydrogens++;\n                if (!newDiaID.hydrogenOCLIDs.includes(diaIDs[atom])) {\n                    newDiaID.hydrogenOCLIDs.push(diaIDs[atom]);\n                }\n            }\n        }\n        newDiaIDs.push(newDiaID);\n    }\n    return newDiaIDs;\n}\n//# sourceMappingURL=getDiastereotopicAtomIDsAndH.js.map","import { getDiastereotopicAtomIDs } from './getDiastereotopicAtomIDs';\nimport { groupDiastereotopicAtomIDs } from './groupDiastereotopicAtomIDs';\n/**\n * This function groups the diasterotopic atomIds of the molecule based on equivalence of atoms. The output object contains\n * a set of chemically equivalent atoms(element.atoms) and the groups of magnetically equivalent atoms (element.magneticGroups)\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [options.atomLabel] - Select atoms of the given atomLabel. By default it returns all the explicit atoms in the molecule\n * @returns {Array}\n */\nexport function getGroupedDiastereotopicAtomIDs(molecule, options = {}) {\n    const diaIDs = getDiastereotopicAtomIDs(molecule);\n    return groupDiastereotopicAtomIDs(diaIDs, molecule, options);\n}\n//# sourceMappingURL=getGroupedDiastereotopicAtomIDs.js.map","export function groupDiastereotopicAtomIDs(diaIDs, molecule, options = {}) {\n    const { atomLabel } = options;\n    const diaIDsObject = {};\n    for (let i = 0; i < diaIDs.length; i++) {\n        if (!atomLabel || molecule.getAtomLabel(i) === atomLabel) {\n            const diaID = diaIDs[i];\n            if (!diaIDsObject[diaID]) {\n                diaIDsObject[diaID] = {\n                    counter: 0,\n                    atoms: [],\n                    oclID: diaID,\n                    atomLabel: molecule.getAtomLabel(i),\n                };\n            }\n            diaIDsObject[diaID].counter++;\n            diaIDsObject[diaID].atoms.push(i);\n        }\n    }\n    return Object.keys(diaIDsObject).map((key) => diaIDsObject[key]);\n}\n//# sourceMappingURL=groupDiastereotopicAtomIDs.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { tagAtom } from '../util/tagAtom';\nimport { getHoseCodesForAtomsInternal } from './getHoseCodesForAtomsInternal.js';\nexport const FULL_HOSE_CODE = 1;\nexport const HOSE_CODE_CUT_C_SP3_SP3 = 2;\n/**\n * Returns the hose code for specific atom numbers\n * @param {import('openchemlib').Molecule} originalMolecule - The OCL molecule to be fragmented\n * @param {number[]} rootAtoms\n * @param {object} [options={}]\n * @param {number} [options.minSphereSize=0] - Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] - Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] - Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtoms(originalMolecule, rootAtoms = [], options = {}) {\n    const { minSphereSize = 0, maxSphereSize = 4, kind = FULL_HOSE_CODE, } = options;\n    const molecule = originalMolecule.getCompactCopy();\n    // those 2 lines should be done only once\n    molecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(molecule);\n    const allowedCustomLabels = [];\n    for (const rootAtom of rootAtoms) {\n        allowedCustomLabels.push(tagAtom(molecule, rootAtom));\n    }\n    return getHoseCodesForAtomsInternal(molecule, {\n        minSphereSize,\n        maxSphereSize,\n        allowedCustomLabels,\n        kind,\n    });\n}\n//# sourceMappingURL=getHoseCodesForAtoms.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { makeRacemic } from '../util/makeRacemic';\nimport { tagAtom } from '../util/tagAtom';\nlet fragment;\n/**\n * Returns the hose code for a specific atom number\n * @param {import('openchemlib').Molecule} molecule\n * @param from\n * @param to\n * @param maxLength\n */\nexport function getHoseCodesForPath(molecule, from, to, maxLength) {\n    const OCL = molecule.getOCL();\n    const originalFrom = from;\n    const originalTo = to;\n    molecule = molecule.getCompactCopy();\n    const originalAtoms = []; // path before renumbering\n    molecule.getPath(originalAtoms, from, to, maxLength + 1);\n    let torsion;\n    if (originalAtoms.length === 4) {\n        torsion = molecule.calculateTorsion(originalAtoms);\n    }\n    const tag1 = tagAtom(molecule, from);\n    const tag2 = tagAtom(molecule, to);\n    molecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(molecule);\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n    from = -1;\n    to = -1;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (tag1 === tag2) {\n            if (molecule.getAtomCustomLabel(i) === tag1) {\n                if (from === -1) {\n                    from = i;\n                }\n                else {\n                    to = i;\n                }\n            }\n        }\n        else {\n            if (tag1 === molecule.getAtomCustomLabel(i)) {\n                from = i;\n            }\n            if (tag2 === molecule.getAtomCustomLabel(i)) {\n                to = i;\n            }\n        }\n    }\n    if (!fragment)\n        fragment = new OCL.Molecule(0, 0);\n    const atoms = [];\n    molecule.getPath(atoms, from, to, maxLength + 1);\n    let min = 0;\n    let max = 0;\n    const atomMask = new Array(molecule.getAllAtoms()).fill(false);\n    const atomList = new Array(molecule.getAllAtoms()).fill(-1);\n    const hoses = [];\n    for (let sphere = 0; sphere <= 2; sphere++) {\n        if (max === 0) {\n            for (const atom of atoms) {\n                atomMask[atom] = true;\n                atomList[max++] = atom;\n            }\n        }\n        else {\n            let newMax = max;\n            for (let i = min; i < max; i++) {\n                const atom = atomList[i];\n                for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n                    const connAtom = molecule.getConnAtom(atom, j);\n                    if (!atomMask[connAtom]) {\n                        atomMask[connAtom] = true;\n                        atomList[newMax++] = connAtom;\n                    }\n                }\n            }\n            min = max;\n            max = newMax;\n        }\n        const atomMap = [];\n        molecule.copyMoleculeByAtoms(fragment, atomMask, true, atomMap);\n        makeRacemic(fragment);\n        const oclID = fragment.getCanonizedIDCode(OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS);\n        hoses.push({\n            sphere,\n            oclID,\n        });\n    }\n    return {\n        atoms: originalAtoms,\n        from: originalFrom,\n        to: originalTo,\n        torsion,\n        hoses,\n        length: originalAtoms.length - 1,\n    };\n}\n//# sourceMappingURL=getHoseCodesForPath.js.map","/**\n * Create a polymer from a unit, alpha and omega groups\n * A unit must contain a R1 and a R2\n * An alpha end group must contain a R1\n * An omega end group must contain a R2\n * @param {import('openchemlib').Molecule} molecule - an instance of OCL.Molecule\n * @param unit\n * @param {object} options\n * @param {number} [options.count=10] - number of units\n * @param {boolean} [options.markMonomer=false] - mark the different units of the polymer in the atom map\n * @param {import('openchemlib').Molecule} [options.alpha] - alpha end group, default is an hydrogen\n * @param {import('openchemlib').Molecule} [options.gamma] - omega end group, default is an hydrogen\n */\nexport function createPolymer(unit, options = {}) {\n    const { count = 10 } = options;\n    checkEntity(unit, 'unit');\n    const { Molecule } = unit.getOCL();\n    const { alpha, gamma } = getAlphaGamma(unit, options);\n    checkEntity(alpha, 'alpha');\n    checkEntity(gamma, 'gamma');\n    const { r1AtomicNo, r2AtomicNo } = getR1R2AtomicNo(Molecule);\n    const polymer = alpha.getCompactCopy();\n    polymer.addMolecule(getUnit(unit, 1, options));\n    addBond(polymer, r1AtomicNo, r1AtomicNo);\n    for (let i = 0; i < count - 1; i++) {\n        polymer.addMolecule(getUnit(unit, i + 2, options));\n        addBond(polymer, r2AtomicNo, r1AtomicNo);\n    }\n    polymer.addMolecule(gamma);\n    addBond(polymer, r2AtomicNo, r2AtomicNo);\n    polymer.ensureHelperArrays(Molecule.cHelperNeighbours);\n    // encoding directly in atomNapNo didn't work out because it was removed when deleting atoms\n    for (let i = 0; i < polymer.getAtoms(); i++) {\n        polymer.setAtomMapNo(i, (polymer.getAtomCustomLabel(i) || '').replace(/monomer_/, ''));\n        polymer.setAtomCustomLabel(i, '');\n    }\n    return polymer;\n}\nfunction getUnit(unit, index, options) {\n    const { markMonomer = false } = options;\n    if (markMonomer) {\n        unit = unit.getCompactCopy();\n        unit.ensureHelperArrays(unit.getOCL().Molecule.cHelperNeighbours);\n        for (let j = 0; j < unit.getAtoms(); j++) {\n            unit.setAtomCustomLabel(j, `monomer_${index}`);\n        }\n    }\n    return unit;\n}\nfunction addBond(molecule, firstAtomicNo, secondAtomicNo) {\n    molecule.ensureHelperArrays(molecule.getOCL().Molecule.cHelperNeighbours);\n    let i, j;\n    loop: for (i = 0; i < molecule.getAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === firstAtomicNo) {\n            for (j = i + 1; j < molecule.getAtoms(); j++) {\n                if (molecule.getAtomicNo(j) === secondAtomicNo) {\n                    molecule.addBond(molecule.getConnAtom(i, 0), molecule.getConnAtom(j, 0), 1);\n                    break loop;\n                }\n            }\n        }\n    }\n    molecule.deleteAtoms([i, j]);\n}\nfunction checkEntity(unit, kind) {\n    let nbR1 = 1;\n    let nbR2 = 1;\n    switch (kind) {\n        case 'unit':\n            break;\n        case 'alpha':\n            nbR2 = 0;\n            break;\n        case 'gamma':\n            nbR1 = 0;\n            break;\n        default:\n            throw new Error('Unknown kind');\n    }\n    if (!unit) {\n        throw new Error('unit is required');\n    }\n    const { Molecule } = unit.getOCL();\n    // unit must contain ONE R1 and ONE R2\n    const { r1AtomicNo, r2AtomicNo } = getR1R2AtomicNo(Molecule);\n    let r1Count = 0;\n    let r2Count = 0;\n    for (let i = 0; i < unit.getAtoms(); i++) {\n        if (unit.getAtomicNo(i) === r1AtomicNo) {\n            r1Count++;\n        }\n        if (unit.getAtomicNo(i) === r2AtomicNo) {\n            r2Count++;\n        }\n    }\n    if (r1Count !== nbR1) {\n        throw new Error(`${kind} must contain ${nbR1} R1`);\n    }\n    if (r2Count !== nbR2) {\n        throw new Error(`${kind} must contain ${nbR2} R2`);\n    }\n}\nfunction getAlphaGamma(unit, options) {\n    let { alpha, gamma } = options;\n    const { Molecule } = unit.getOCL();\n    const { r1AtomicNo, r2AtomicNo } = getR1R2AtomicNo(Molecule);\n    if (!alpha) {\n        alpha = Molecule.fromSmiles('CC');\n        alpha.setAtomicNo(0, r1AtomicNo);\n        alpha.setAtomicNo(1, 1);\n    }\n    if (!gamma) {\n        gamma = Molecule.fromSmiles('CC');\n        gamma.setAtomicNo(0, r2AtomicNo);\n        gamma.setAtomicNo(1, 1);\n    }\n    return { alpha, gamma };\n}\nfunction getR1R2AtomicNo(Molecule) {\n    const r1AtomicNo = Molecule.getAtomicNoFromLabel('R1', Molecule.cPseudoAtomsRGroups);\n    const r2AtomicNo = Molecule.getAtomicNoFromLabel('R2', Molecule.cPseudoAtomsRGroups);\n    return { r1AtomicNo, r2AtomicNo };\n}\n//# sourceMappingURL=createPolymer.js.map","const MAX_R = 10;\n/**\n * Generate molecules and calculate predicted properties form a list of smiles and fragments\n * @param {string} coreSmiles\n * @param {Array} fragments - Array of {smiles,R1,R2,...}\n * @param {typeof import('openchemlib')} OCL - openchemlib library\n * @param {object} [options={}] - Options\n * @param {Function} [options.onStep] - method to execute each new molecules\n * @param {boolean} [options.complexity] - returns only the number of molecules to evaluate\n * @returns {Promise<any>} promise that resolves to molecules or complexity as a number\n */\nexport async function combineSmiles(coreSmiles, fragments, OCL, options = {}) {\n    const { complexity = false } = options;\n    const core = getCore(coreSmiles);\n    const rGroups = getRGroups(core, fragments);\n    if (complexity) {\n        return getComplexity(rGroups);\n    }\n    return generate(core, rGroups, OCL, options);\n}\nfunction getComplexity(rGroups) {\n    let complexity = 1;\n    for (const rGroup of rGroups) {\n        complexity *= rGroup.smiles.length;\n    }\n    return complexity;\n}\nasync function generate(core, rGroups, OCL, options = {}) {\n    const { onStep } = options;\n    const molecules = {};\n    const sizes = new Array(rGroups.length);\n    const currents = new Array(rGroups.length);\n    for (let i = 0; i < rGroups.length; i++) {\n        sizes[i] = rGroups[i].smiles.length - 1;\n        currents[i] = 0;\n    }\n    let position = 0;\n    let counter = 0;\n    while (true) {\n        counter++;\n        while (position < currents.length) {\n            if (currents[position] < sizes[position]) {\n                if (onStep) {\n                    // eslint-disable-next-line no-await-in-loop\n                    await onStep(counter);\n                }\n                appendMolecule(molecules, core, rGroups, currents, OCL);\n                currents[position]++;\n                for (let i = 0; i < position; i++) {\n                    currents[i] = 0;\n                }\n                position = 0;\n            }\n            else {\n                position++;\n            }\n        }\n        if ((position = currents.length)) {\n            if (onStep) {\n                // eslint-disable-next-line no-await-in-loop\n                await onStep(counter);\n            }\n            appendMolecule(molecules, core, rGroups, currents, OCL);\n            break;\n        }\n    }\n    return Object.keys(molecules)\n        .map((key) => molecules[key])\n        .sort((m1, m2) => m1.mw - m2.mw);\n}\nfunction appendMolecule(molecules, core, rGroups, currents, OCL) {\n    let newSmiles = core.smiles;\n    for (let i = 0; i < currents.length; i++) {\n        newSmiles += `.${rGroups[i].smiles[currents[i]]}`;\n    }\n    const currentMol = OCL.Molecule.fromSmiles(newSmiles);\n    const idCode = currentMol.getIDCode();\n    if (!molecules[idCode]) {\n        const molecule = {};\n        molecules[idCode] = molecule;\n        molecule.smiles = currentMol.toSmiles();\n        molecule.combinedSmiles = newSmiles;\n        molecule.idCode = idCode;\n        molecule.molfile = currentMol.toMolfile();\n        const props = new OCL.MoleculeProperties(currentMol);\n        molecule.nbHAcceptor = props.acceptorCount;\n        molecule.nbHDonor = props.donorCount;\n        molecule.logP = props.logP;\n        molecule.logS = props.logS;\n        molecule.PSA = props.polarSurfaceArea;\n        molecule.nbRottable = props.rotatableBondCount;\n        molecule.nbStereoCenter = props.stereoCenterCount;\n        const mf = currentMol.getMolecularFormula();\n        molecule.mf = mf.formula;\n        molecule.mw = mf.relativeWeight;\n    }\n}\nfunction getCore(coreSmiles) {\n    const core = {\n        originalSmiles: coreSmiles,\n        smiles: coreSmiles.replaceAll(/\\[R(?<group>[1-4])]/g, '%5$<group>'),\n    };\n    for (let i = 0; i < MAX_R; i++) {\n        if (core.originalSmiles.includes(`[R${i}]`))\n            core[`R${i}`] = true;\n    }\n    return core;\n}\nfunction getRGroups(core, fragments) {\n    const rGroups = {};\n    for (const fragment of fragments) {\n        if (fragment.smiles) {\n            const smiles = updateRPosition(fragment.smiles);\n            for (let i = 0; i < MAX_R; i++) {\n                if (core[`R${i}`] && // we only consider the R that are in the core\n                    fragment[`R${i}`]) {\n                    if (!rGroups[`R${i}`]) {\n                        rGroups[`R${i}`] = {\n                            group: `R${i}`,\n                            smiles: [],\n                        };\n                    }\n                    rGroups[`R${i}`].smiles.push(smiles.replace(/\\[R]/, `(%5${i})`));\n                }\n            }\n        }\n    }\n    return Object.keys(rGroups).map((key) => rGroups[key]);\n}\nfunction updateRPosition(smiles) {\n    // R group should not be at the beginning\n    if (smiles.indexOf('[R]') !== 0)\n        return smiles;\n    if (smiles.length === 3)\n        return '[H][R]';\n    // we are in trouble ... we need to move the R\n    const newSmiles = smiles.replace('[R]', '');\n    // we need to check where we should put the R group\n    let level = 0;\n    for (let j = 0; j < newSmiles.length; j++) {\n        const currentChar = newSmiles.charAt(j);\n        const currentSubstring = newSmiles.slice(j);\n        if (currentChar === '(') {\n            level++;\n        }\n        else if (currentChar === ')') {\n            level--;\n        }\n        else if (level === 0) {\n            if (currentSubstring.match(/^[a-z]/)) {\n                return `${newSmiles.slice(0, Math.max(0, j + 1))}([R])${newSmiles.slice(j + 1)}`;\n            }\n            else if (currentSubstring.match(/^[A-Z][a-z]/)) {\n                return `${newSmiles.slice(0, Math.max(0, j + 2))}([R])${newSmiles.slice(j + 2)}`;\n            }\n            else if (currentSubstring.match(/^[A-Z]/)) {\n                return `${newSmiles.slice(0, Math.max(0, j + 1))}([R])${newSmiles.slice(j + 1)}`;\n            }\n        }\n    }\n    return smiles;\n}\n//# sourceMappingURL=combineSmiles.js.map","export function parseColumnbProperties(lines) {\n    lines = lines.map((line) => {\n        const [key, value] = line.slice(1, -1).split('=');\n        return { key, value: value.slice(1, -1) };\n    });\n    const columnProperties = {};\n    let currentColumnName = '';\n    for (const line of lines) {\n        switch (line.key) {\n            case 'columnName':\n                currentColumnName = line.value;\n                columnProperties[currentColumnName] = {};\n                break;\n            case 'columnProperty':\n                {\n                    if (!currentColumnName) {\n                        throw new Error('This should not happen');\n                    }\n                    const [key, value] = line.value.split('\\t');\n                    columnProperties[currentColumnName][key] = value;\n                }\n                break;\n            default:\n                throw new Error('This should not happen');\n        }\n    }\n    for (const key in columnProperties) {\n        const columnPropery = columnProperties[key];\n        if (columnProperties[key].parent) {\n            const target = columnProperties[columnPropery.parent];\n            if (!target) {\n                throw new Error('Parent column not found');\n            }\n            if (!target.related) {\n                target.related = {};\n            }\n            target.related[columnPropery.specialType] = key;\n        }\n    }\n    return columnProperties;\n}\n//# sourceMappingURL=parseColumnbProperties.js.map","export function parseData(lines, options = {}) {\n    lines = lines.filter((line) => !line.match(/^\\s*$/));\n    const { columnProperties = {} } = options;\n    const headers = lines\n        .shift()\n        .split('\\t')\n        .map((header) => {\n        if (columnProperties[header]) {\n            return { label: header, ...columnProperties[header] };\n        }\n        return { label: header };\n    });\n    const entries = [];\n    const rawEntries = [];\n    for (const line of lines) {\n        const fields = line.split('\\t');\n        const rawEntry = {};\n        for (const [index, header] of headers.entries()) {\n            rawEntry[header.label] = fields[index];\n        }\n        rawEntries.push(rawEntry);\n        const entry = {};\n        for (const header of headers) {\n            if (header.parent)\n                continue;\n            entry[header.label] = valueEhnhancer(header, rawEntry);\n        }\n        entries.push(entry);\n    }\n    return { entries, rawEntries };\n}\nfunction valueEhnhancer(header, rawEntry) {\n    if (header?.specialType === 'rxncode') {\n        return `${rawEntry[header.label]}#${rawEntry[header.related.atomMapping]}#${rawEntry[header.related.idcoordinates2D]}`;\n    }\n    return rawEntry[header.label];\n}\n/*\nentry.rxnCode =\n*/\n//# sourceMappingURL=parseData.js.map","import { ensureString } from 'ensure-string';\nimport { getParts } from './utils/getParts';\nimport { parseColumnbProperties } from './utils/parseColumnbProperties';\nimport { parseData } from './utils/parseData';\n/**\n * Convert a DataWarrior database into a JSON object\n * @param {string} text\n * @returns\n */\nexport function parseDwar(text) {\n    text = ensureString(text);\n    const parts = getParts(text);\n    improveParts(parts);\n    return parts;\n}\nfunction improveParts(parts) {\n    for (const key in parts) {\n        switch (key) {\n            case 'columnProperties':\n                parts[key] = parseColumnbProperties(parts[key]);\n                break;\n            case 'data':\n                break;\n            default:\n                parts[key] = parseDefault(parts[key]);\n        }\n    }\n    const data = parseData(parts.data, {\n        columnProperties: parts.columnProperties,\n    });\n    parts.data = data.entries;\n    parts.rawData = data.rawEntries;\n}\nfunction parseDefault(lines) {\n    const result = {};\n    for (const line of lines) {\n        const [key, value] = line.slice(1, -1).split('=');\n        result[key] = value.slice(1, -1);\n    }\n    return result;\n}\n//# sourceMappingURL=parseDwar.js.map","import { getDiastereotopicAtomIDs } from '../diastereotopic/getDiastereotopicAtomIDs';\n/**\n * Returns various information about atoms in the molecule\n * @param {import('openchemlib').Molecule} [molecule]\n */\nexport function getAtomsInfo(molecule) {\n    const OCL = molecule.getOCL();\n    molecule.ensureHelperArrays(OCL.Molecule.cHelperRings);\n    const diaIDs = getDiastereotopicAtomIDs(molecule);\n    const results = [];\n    for (let i = 0; i < diaIDs.length; i++) {\n        const result = {\n            oclID: diaIDs[i],\n            extra: {\n                singleBonds: 0,\n                doubleBonds: 0,\n                tripleBonds: 0,\n                aromaticBonds: 0,\n                cnoHybridation: 0, // should be 1 (sp), 2 (sp2) or 3 (sp3)\n            },\n        };\n        const extra = result.extra;\n        results.push(result);\n        result.abnormalValence = molecule.getAtomAbnormalValence(i); // -1 is normal otherwise specified\n        result.charge = molecule.getAtomCharge(i);\n        result.cipParity = molecule.getAtomCIPParity(i);\n        result.color = molecule.getAtomColor(i);\n        result.customLabel = molecule.getAtomCustomLabel(i);\n        //        result.esrGroup=molecule.getAtomESRGroup(i);\n        //        result.esrType=molecule.getAtomESRType(i);\n        result.atomicNo = molecule.getAtomicNo(i);\n        result.label = molecule.getAtomLabel(i);\n        //        result.list=molecule.getAtomList(i);\n        //        result.listString=molecule.getAtomListString(i);\n        //        result.mapNo=molecule.getAtomMapNo(i);\n        result.mass = molecule.getAtomMass(i);\n        //        result.parity=molecule.getAtomParity(i);\n        //        result.pi=molecule.getAtomPi(i);\n        //        result.preferredStereoBond=molecule.getAtomPreferredStereoBond(i);\n        //        result.queryFeatures=molecule.getAtomQueryFeatures(i);\n        result.radical = molecule.getAtomRadical(i);\n        result.ringBondCount = molecule.getAtomRingBondCount(i);\n        //        result.ringCount=molecule.getAtomRingCount(i);\n        result.ringSize = molecule.getAtomRingSize(i);\n        result.x = molecule.getAtomX(i);\n        result.y = molecule.getAtomY(i);\n        result.z = molecule.getAtomZ(i);\n        result.allHydrogens = molecule.getAllHydrogens(i);\n        result.connAtoms = molecule.getConnAtoms(i);\n        result.allConnAtoms = molecule.getAllConnAtoms(i);\n        result.implicitHydrogens =\n            result.allHydrogens + result.connAtoms - result.allConnAtoms;\n        result.isAromatic = molecule.isAromaticAtom(i);\n        result.isAllylic = molecule.isAllylicAtom(i);\n        result.isStereoCenter = molecule.isAtomStereoCenter(i);\n        result.isRing = molecule.isRingAtom(i);\n        result.isSmallRing = molecule.isSmallRingAtom(i);\n        result.isStabilized = molecule.isStabilizedAtom(i);\n        // todo HACK to circumvent bug in OCL that consider than an hydrogen is connected to itself\n        result.extra.singleBonds =\n            result.atomicNo === 1 ? 0 : result.implicitHydrogens;\n        for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n            const bond = molecule.getConnBond(i, j);\n            const bondOrder = molecule.getBondOrder(bond);\n            if (molecule.isAromaticBond(bond)) {\n                extra.aromaticBonds++;\n            }\n            else if (bondOrder === 1) {\n                // not an hydrogen\n                extra.singleBonds++;\n            }\n            else if (bondOrder === 2) {\n                extra.doubleBonds++;\n            }\n            else if (bondOrder === 3) {\n                extra.tripleBonds++;\n            }\n        }\n        result.extra.totalBonds =\n            result.extra.singleBonds +\n                result.extra.doubleBonds +\n                result.extra.tripleBonds +\n                result.extra.aromaticBonds;\n        if (result.atomicNo === 6) {\n            result.extra.cnoHybridation = result.extra.totalBonds - 1;\n        }\n        else if (result.atomicNo === 7) {\n            result.extra.cnoHybridation = result.extra.totalBonds;\n        }\n        else if (result.atomicNo === 8) {\n            result.extra.cnoHybridation = result.extra.totalBonds + 1;\n        }\n        else if (result.atomicNo === 1) {\n            const connectedAtom = molecule.getAllConnAtoms(i) === 0\n                ? 0\n                : molecule.getAtomicNo(molecule.getConnAtom(i, 0));\n            result.extra.hydrogenOnAtomicNo = connectedAtom;\n            if (connectedAtom === 7 || connectedAtom === 8) {\n                result.extra.labileHydrogen = true;\n            }\n        }\n    }\n    return results;\n}\n//# sourceMappingURL=getAtomsInfo.js.map","export function getImplicitHydrogensCount(molecule, atomID) {\n    molecule.ensureHelperArrays(molecule.getOCL().Molecule.cHelperNeighbours);\n    return (molecule.getAllHydrogens(atomID) +\n        molecule.getConnAtoms(atomID) -\n        molecule.getAllConnAtoms(atomID));\n}\n//# sourceMappingURL=getImplicitHydrogensCount.js.map","import { atomSorter } from 'atom-sorter';\n/**\n * Calculate the molecular formula in 'chemcalc' notation taking into account fragments, isotopes and charges\n * @param {import('openchemlib').Molecule} molecule - an instance of OCL.Molecule\n * @returns {object}\n */\nexport function getMF(molecule) {\n    const entries = molecule.getFragments();\n    const result = {};\n    let parts = [];\n    const allAtoms = [];\n    for (const entry of entries) {\n        const mf = getFragmentMF(entry, allAtoms);\n        parts.push(mf);\n    }\n    const counts = {};\n    for (const part of parts) {\n        if (!counts[part])\n            counts[part] = 0;\n        counts[part]++;\n    }\n    parts = [];\n    for (const key of Object.keys(counts).sort()) {\n        if (counts[key] > 1) {\n            parts.push(counts[key] + key);\n        }\n        else {\n            parts.push(key);\n        }\n    }\n    result.parts = parts;\n    result.mf = toMFString(allAtoms);\n    return result;\n}\nfunction getFragmentMF(molecule, allAtoms) {\n    const atoms = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const atom = {};\n        atom.charge = molecule.getAtomCharge(i);\n        atom.label = molecule.getAtomLabel(i);\n        atom.mass = molecule.getAtomMass(i);\n        atom.implicitHydrogens = molecule.getImplicitHydrogens(i);\n        if (atom.label === '?')\n            atom.label = 'R';\n        atoms.push(atom);\n        allAtoms.push(atom);\n    }\n    return toMFString(atoms);\n}\nfunction toMFString(atoms) {\n    let charge = 0;\n    const mfs = {};\n    for (const atom of atoms) {\n        let label = atom.label;\n        charge += atom.charge;\n        if (atom.mass) {\n            label = `[${atom.mass}${label}]`;\n        }\n        const mfAtom = mfs[label];\n        if (!mfAtom) {\n            mfs[label] = 0;\n        }\n        mfs[label] += 1;\n        if (atom.implicitHydrogens) {\n            if (!mfs.H)\n                mfs.H = 0;\n            mfs.H += atom.implicitHydrogens;\n        }\n    }\n    let mf = '';\n    const keys = Object.keys(mfs).sort(atomSorter);\n    for (const key of keys) {\n        mf += key;\n        if (mfs[key] > 1)\n            mf += mfs[key];\n    }\n    if (charge > 0) {\n        mf += `(+${charge > 1 ? charge : ''})`;\n    }\n    else if (charge < 0) {\n        mf += `(${charge < -1 ? charge : '-'})`;\n    }\n    return mf;\n}\n//# sourceMappingURL=getMF.js.map","const unsaturationsObject = {\n    O: 0,\n    N: 1,\n    H: -1,\n    C: 2,\n    F: -1,\n    Si: 2,\n    Cl: -1,\n    Br: -1,\n    I: -1,\n};\n/**\n * Simplified version of the calculation in mf-parser\n * @param {string} mf\n * @returns\n */\nexport function getUnsaturation(mf) {\n    if (!mf)\n        return undefined;\n    // split a molecular formula into its elements\n    const elements = mf.match(/[A-Z][a-z]*\\d*/g);\n    if (!elements || elements.length === 0)\n        return undefined;\n    let unsaturation = 0;\n    for (let i = 0; i < elements.length; i++) {\n        const element = elements[i];\n        const matches = element.match(/([A-Z][a-z]?)(\\d*)/);\n        const symbol = matches[1];\n        const count = matches[2] ? Number.parseInt(matches[2], 10) : 1;\n        const elementObject = unsaturationsObject[symbol];\n        if (elementObject === undefined) {\n            return undefined;\n        }\n        unsaturation += unsaturationsObject[symbol] * count;\n    }\n    return unsaturation / 2 + 1;\n}\n//# sourceMappingURL=getUnsaturation.js.map","// this page allows to debug the hints: https://my.cheminfo.org/?viewURL=https%3A%2F%2Fmyviews.cheminfo.org%2Fdb%2Fvisualizer%2Fentry%2F108024089da99d0cb70a57724486d0c6%2Fview.json\nimport { TopicMolecule } from '../topic/TopicMolecule';\nimport { getUnsaturation } from './getUnsaturation';\nconst defaultPossibleHints = [\n    {\n        idCode: String.raw `eF@Hp\\pcc`,\n        message: 'What about a non-aromatic ring?',\n    },\n    {\n        idCode: 'eF@HpZpk|X`',\n        message: 'You should consider an aromatic ring.',\n    },\n    {\n        idCode: 'gFp@DiTt@@B',\n        message: 'Did you think about benzene derivatives?',\n    },\n    {\n        idCode: 'eFHBLFLYpB@QVE_cD',\n        message: 'An aromatic cycle can be an heterocycle.',\n    },\n    {\n        idCode: 'eMHJN`q[N@PBGN@PBJhjU~JU@',\n        anyMatches: ['gFx@@eJf`@@P', 'gKP@Di\\\\YZ@qas`D@`'],\n        message: 'There could be more than one heteroatom in an aromatic cycle.',\n    },\n    {\n        idCode: 'gFp@DiTvjhCYbKFuXUEIVTUUWxlTeZMX',\n        anyMatches: ['gKP@Di\\\\Zj@vhbqkPjJRlhj?FbdkQ`'],\n        message: 'Aromatic cycles can have 5 or 6 atoms.',\n        remarks: 'Proposed 5 and it is 6',\n    },\n    {\n        idCode: 'gKP@Di\\\\Zj@vhbqkPjJRlhj?FbdkQ`',\n        anyMatches: ['gFp@DiTvjhCYbKFuXUEIVTUUWxlTeZMX'],\n        message: 'Aromatic cycles can have 5 or 6 atoms.',\n        remarks: 'Proposed 6 and it is 5',\n    },\n    {\n        idCode: 'gFx@@eJf`@@P',\n        message: 'Did you think about pyridine derivatives?',\n    },\n    {\n        idCode: 'gNp@LdbLjj@vdrpqSdm_qhXiKT',\n        message: 'I would consider bicyclo products.',\n        remarks: 'One atom bridge',\n    },\n    {\n        idCode: 'eFHBJD',\n        message: 'Adding a carbonyl could help.',\n    },\n    {\n        idCode: 'eMHAIhMi}EqfFBmN?vP',\n        message: 'You should consider an alcohol.',\n    },\n    {\n        idCode: 'eMB@HRZCBKSFXXJt{?Y@',\n        message: 'You should consider a thiol.',\n    },\n    {\n        idCode: 'gJQ@@eKU@[KFJtLAa`sAUR]g_zlP',\n        message: 'You should consider an ether.',\n    },\n    {\n        idCode: 'gJQ@@eKU@[KFJtLAa`r`q?EAcuX`',\n        anyMatches: ['gJQ@@eKU@[KFJtLAa`?uX`'],\n        message: 'An ether can be in a cycle.',\n    },\n    {\n        idCode: 'gJPH@DIRuPFrqbmC@XXLpUTgYw~kD',\n        message: 'You should consider a thioether.',\n    },\n    {\n        idCode: 'gJPH@DIRuPFrqbmC@XXLhL_qPX}VH',\n        anyMatches: ['gJPH@DIRuPFrqbmC@XXO}VH'],\n        message: 'A thioether can be in a cycle.',\n    },\n    {\n        idCode: 'eM`AIhLHmLYa`kSo}d',\n        message: 'You should consider a primary amine.',\n        remarks: 'primary',\n    },\n    {\n        idCode: 'gJX@@eKU@XPVVLUhXCCAUIv]?jq@',\n        message: 'You should consider a secondary amine.',\n        remarks: 'secondary',\n    },\n    {\n        idCode: 'gNx@@eRmUPFDElZxxppVFAppUv\\\\WUw~xu`',\n        message: 'You should consider a tertiary amine.',\n        remarks: 'tertiary',\n    },\n    {\n        idCode: 'gJX@@eKU@XPVVLUhXCCAeAcUIv]~JCGjq@',\n        anyMatches: ['gJX@@eKU@XPVVLUhXCCAfBjd{N?uX`'],\n        message: 'A secondary amine can be in a cycle.',\n        remarks: 'secondary cyclic amine',\n    },\n    {\n        idCode: 'gNx@@eRmUPFDElZxxppVFAppYPXuv\\\\WUwxhL^xu`',\n        anyMatches: ['gNx@@eRmUPFDElZxxppVFAppY`j{NKj{?\\\\Zp'],\n        message: 'A tertiary amine can be in a cycle.',\n        remarks: 'tertiary cyclic amine',\n    },\n    {\n        idCode: 'gGP`@df]j`MekEZFBppUa]?ju@',\n        message: 'What about an ester?',\n    },\n    {\n        idCode: 'gGP`@df]j`MekEZFBppYdZpn?FQzmP',\n        anyMatches: ['gGP`@df]j`MekEZFBppUa]?ju@'],\n        message: 'An ester can be in a cycle.',\n    },\n    {\n        idCode: 'gGY@DDf]j`MekEZFBppUa]?ju@',\n        message: 'There is an amide function in the molecule.',\n    },\n    {\n        idCode: 'gGY@DDf]j`MekEZFBppYdZpn?FQzmP',\n        anyMatches: ['gGY@DDf]j`MekEZFBppUa]?ju@@'],\n        message: 'An amide can be in a cycle.',\n    },\n    {\n        idCode: 'gCi@DDfZ@~btl',\n        message: 'There is a primary amide in the molecule.',\n    },\n    {\n        idCode: 'gC``@dfZ@~bl',\n        message: 'You should think about carboxylic acids. The OH signal may be very wide.',\n    },\n    {\n        idCode: String.raw `eF@Hh\\q@`,\n        message: 'What about having an olefin?',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqC^LmV[m`',\n        anyMatches: ['gFp@DiTt@@CBqXwd@'],\n        message: 'Did you think about disubstituted aromatic rings?',\n        remarks: 'meta',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqB~LmWkM`',\n        anyMatches: ['gFp@DiTt@@CBqXwd@'],\n        message: 'Did you think about disubstituted aromatic rings?',\n        remarks: 'para',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqB^JoV[m',\n        anyMatches: ['gFp@DiTt@@CBqXwd@'],\n        message: 'Did you think about disubstituted aromatic rings?',\n        remarks: 'ortho',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqB^JoV[m',\n        anyMatches: ['gFp@DiTt@@CqC^LmV[m`', 'gFp@DiTt@@CqB~LmWkM`'],\n        message: 'Disubstituted aromatic ring can be ortho (1,2), meta (1,3) or para (1,4).',\n        remarks: 'ortho',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqC^LmV[m`',\n        anyMatches: ['gFp@DiTt@@CqB^JoV[m', 'gFp@DiTt@@CqB~LmWkM`'],\n        message: 'Disubstituted aromatic ring can be ortho (1,2), meta (1,3) or para (1,4).',\n        remarks: 'meta',\n    },\n    {\n        idCode: 'gFp@DiTt@@CqB~LmWkM`',\n        anyMatches: ['gFp@DiTt@@CqC^LmV[m`', 'gFp@DiTt@@CqB^JoV[m'],\n        message: 'Disubstituted aromatic ring can be ortho (1,2), meta (1,3) or para (1,4).',\n        remarks: 'para',\n    },\n    {\n        idCode: 'gGP`@df]j`H',\n        anyMatches: ['gGP`@dfUj`H'],\n        message: 'You should check the orientation of the ester.',\n    },\n    {\n        idCode: String.raw `gOq@@drm\\@@Aa@`,\n        message: 'Alcohols on aromatic ring may have surprising chemical shifts.',\n    },\n    {\n        idCode: String.raw `gOx@@drm\\@@A}A@`,\n        message: 'NH on aromatic ring may have surprising chemical shifts.',\n    },\n    {\n        idCode: 'eFHBJGuP',\n        message: 'Hydrogens on a carbonyl have very high chemical shifts.',\n    },\n];\n/**\n *\n * @param {import('openchemlib').Molecule} correct\n * @param {import('openchemlib').Molecule} proposed\n * @param {Record<string,any>} [options ={}]\n * @param {Array} [options.possibleHints=defaultPossibleHints]\n * @returns\n */\nexport function getNMRHints(correct, proposed, options = {}) {\n    const hints = [\n        ...checkMF(correct, proposed),\n        ...checkUnsaturation(correct, proposed),\n        ...checkStereoAndTautomer(correct, proposed),\n    ];\n    const { possibleHints = defaultPossibleHints } = options;\n    const OCL = correct.getOCL();\n    const searcherCorrect = new OCL.SSSearcher();\n    searcherCorrect.setMolecule(correct);\n    const searcherAnswer = new OCL.SSSearcher();\n    searcherAnswer.setMolecule(proposed);\n    for (const possibleHint of possibleHints) {\n        const { anyMatches } = possibleHint;\n        if (anyMatches) {\n            // we filter the molecules so they match at least one of the anyMatches\n            let match = false;\n            for (const anyMatch of anyMatches) {\n                const matchFragment = OCL.Molecule.fromIDCode(anyMatch);\n                searcherAnswer.setFragment(matchFragment);\n                if (searcherAnswer.isFragmentInMolecule()) {\n                    match = true;\n                    break;\n                }\n            }\n            if (!match)\n                continue;\n        }\n        const fragment = OCL.Molecule.fromIDCode(possibleHint.idCode);\n        searcherCorrect.setFragment(fragment);\n        searcherAnswer.setFragment(fragment);\n        if (searcherCorrect.isFragmentInMolecule() &&\n            !searcherAnswer.isFragmentInMolecule()) {\n            hints.push(possibleHint);\n        }\n    }\n    // we suggest symmetry only if MF is correct\n    if (isMFCorrect(correct, proposed)) {\n        hints.push(...checkSymmetry(correct, proposed));\n    }\n    return hints.map((hint) => ({\n        ...hint,\n        hash: getHash(JSON.stringify(hint)),\n    }));\n}\nfunction isMFCorrect(correct, answer) {\n    const mfCorrect = correct.getMolecularFormula().formula;\n    const mfAnswer = answer.getMolecularFormula().formula;\n    return mfCorrect === mfAnswer;\n}\nfunction checkMF(correct, answer) {\n    if (isMFCorrect(correct, answer))\n        return [];\n    return [\n        {\n            message: 'You should check the molecular formula.',\n        },\n    ];\n}\nfunction checkUnsaturation(correct, answer) {\n    const mfCorrect = correct.getMolecularFormula().formula;\n    const mfAnswer = answer.getMolecularFormula().formula;\n    if (mfCorrect !== mfAnswer) {\n        const unsaturationCorrect = getUnsaturation(mfCorrect);\n        const unsaturationAnswer = getUnsaturation(mfAnswer);\n        if (unsaturationCorrect === unsaturationAnswer ||\n            unsaturationAnswer === undefined ||\n            unsaturationCorrect === undefined) {\n            return [];\n        }\n        if (unsaturationCorrect > unsaturationAnswer) {\n            return [\n                {\n                    message: 'The proposed molecule has a double bond equivalent (DBE) that is too low.',\n                },\n            ];\n        }\n        else {\n            return [\n                {\n                    message: 'The proposed molecule has a double bond equivalent (DBE) that is too high.',\n                },\n            ];\n        }\n    }\n    return [];\n}\nfunction checkStereoAndTautomer(correct, answer) {\n    if (correct.getIDCode() === answer.getIDCode())\n        return [];\n    if (getNoStereoIDCode(correct) === getNoStereoIDCode(answer)) {\n        return [\n            {\n                message: 'There is only a problem with stereochemistry.',\n            },\n        ];\n    }\n    if (getTautomerIDCode(correct) === getTautomerIDCode(answer)) {\n        return [\n            {\n                message: \"Weird, you didn't draw the expected tautomer.\",\n            },\n        ];\n    }\n    return [];\n}\nfunction checkSymmetry(correct, answer) {\n    const nbCorrectRanks = Object.keys(new TopicMolecule(correct).getDiaIDsObject()).length;\n    const nbAnswerRanks = Object.keys(new TopicMolecule(answer).getDiaIDsObject()).length;\n    if (nbCorrectRanks === nbAnswerRanks)\n        return [];\n    if (nbCorrectRanks > nbAnswerRanks) {\n        return [\n            {\n                message: 'The proposed molecule is too symmetric.',\n            },\n        ];\n    }\n    else {\n        return [\n            {\n                message: 'The proposed molecule is not symmetric enough.',\n            },\n        ];\n    }\n}\nfunction getTautomerIDCode(molecule) {\n    const OCL = molecule.getOCL();\n    return OCL.CanonizerUtil.getIDCode(molecule, OCL.CanonizerUtil.TAUTOMER);\n}\nfunction getNoStereoIDCode(molecule) {\n    const OCL = molecule.getOCL();\n    return OCL.CanonizerUtil.getIDCode(molecule, OCL.CanonizerUtil.NOSTEREO);\n}\n/*\n    https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js\n    cyrb53a (c) 2023 bryc (github.com/bryc)\n    License: Public domain. Attribution appreciated.\n    The original cyrb53 has a slight mixing bias in the low bits of h1.\n    This shouldn't be a huge problem, but I want to try to improve it.\n    This new version should have improved avalanche behavior, but\n    it is not quite final, I may still find improvements.\n    So don't expect it to always produce the same output.\n*/\nfunction getHash(str, seed = 0) {\n    let h1 = 0xdeadbeef ^ seed;\n    let h2 = 0x41c6ce57 ^ seed;\n    for (let i = 0, ch; i < str.length; i++) {\n        ch = str.codePointAt(i);\n        h1 = Math.imul(h1 ^ ch, 0x85ebca77);\n        h2 = Math.imul(h2 ^ ch, 0xc2b2ae3d);\n    }\n    h1 ^= Math.imul(h1 ^ (h2 >>> 15), 0x735a2d97);\n    h2 ^= Math.imul(h2 ^ (h1 >>> 15), 0xcaf649a9);\n    h1 ^= h2 >>> 16;\n    h2 ^= h1 >>> 16;\n    return 2097152 * (h2 >>> 0) + (h1 >>> 11);\n}\n//# sourceMappingURL=getNMRHints.js.map","let toxicityPredictor;\nlet druglikenessPredictor;\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {boolean} [options.includeToxicities=false]\n * @param {boolean} [options.includeDruglikeness=false]\n */\nexport function getProperties(molecule, options = {}) {\n    const { includeToxicities = false, includeDruglikeness = false } = options;\n    const OCL = molecule.getOCL();\n    if (!OCL.MoleculeProperties) {\n        throw new Error('OCL.MoleculeProperties is not defined');\n    }\n    const props = new OCL.MoleculeProperties(molecule);\n    const moleculeFormula = molecule.getMolecularFormula();\n    const result = {\n        acceptorCount: props.acceptorCount,\n        donorCount: props.donorCount,\n        logP: props.logP,\n        logS: props.logS,\n        polarSurfaceArea: props.polarSurfaceArea,\n        rotatableBondCount: props.rotatableBondCount,\n        stereoCenterCount: props.stereoCenterCount,\n        mw: moleculeFormula.relativeWeight,\n        mf: moleculeFormula.formula,\n    };\n    if (includeToxicities) {\n        const { ToxicityPredictor } = molecule.getOCL();\n        if (!ToxicityPredictor) {\n            throw new Error('OCL.ToxicityPredictor is not defined');\n        }\n        if (!toxicityPredictor) {\n            toxicityPredictor = new ToxicityPredictor();\n        }\n        result.mutagenic = toxicityPredictor.assessRisk(molecule, ToxicityPredictor.TYPE_MUTAGENIC);\n        result.tumorigenic = toxicityPredictor.assessRisk(molecule, ToxicityPredictor.TYPE_TUMORIGENIC);\n        result.irritant = toxicityPredictor.assessRisk(molecule, ToxicityPredictor.TYPE_IRRITANT);\n        result.reproductiveEffective = toxicityPredictor.assessRisk(molecule, ToxicityPredictor.TYPE_REPRODUCTIVE_EFFECTIVE);\n    }\n    if (includeDruglikeness) {\n        const { DruglikenessPredictor } = molecule.getOCL();\n        if (!DruglikenessPredictor) {\n            throw new Error('OCL.DruglikenessPredictor is not defined');\n        }\n        if (!druglikenessPredictor) {\n            druglikenessPredictor = new DruglikenessPredictor();\n        }\n        result.drugLikeness = druglikenessPredictor.assessDruglikeness(molecule);\n    }\n    if (result.drugLikeness !== undefined && result.mutagenic !== undefined) {\n        result.drugScore = OCL.DrugScoreCalculator.calculate(result.logP, result.polarSurfaceArea, result.mw, result.drugLikeness, [\n            result.mutagenic,\n            result.tumurogenic,\n            result.irritant,\n            result.reproductiveEffective,\n        ]);\n    }\n    return result;\n}\n//# sourceMappingURL=getProperties.js.map","import { getHoseCodesForPath } from '../hose/getHoseCodesForPath';\nimport { getAtomsInfo } from '../util/getAtomsInfo';\nimport { getConnectivityMatrix } from '../util/getConnectivityMatrix';\nimport { getPathAndTorsion } from './getPathAndTorsion.js';\nlet fragment;\n/**\n *\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [options.fromLabel='H']\n * @param {string} [options.toLabel='H']\n * @param {number} [options.minLength=1]\n * @param {number} [options.maxLength=4]\n * @param {boolean} [options.withHOSES=false]\n */\nexport function getPathsInfo(molecule, options = {}) {\n    const { fromLabel = 'H', toLabel = 'H', minLength = 1, maxLength = 4, withHOSES = false, } = options;\n    const OCL = molecule.getOCL();\n    if (!fragment) {\n        fragment = new OCL.Molecule(0, 0);\n    }\n    const fromAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(fromLabel);\n    const toAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(toLabel);\n    // we need to find all the atoms 'fromLabel' and 'toLabel'\n    const atomsInfo = getAtomsInfo(molecule);\n    const pathLengthMatrix = getConnectivityMatrix(molecule, {\n        pathLength: true,\n    });\n    for (let from = 0; from < molecule.getAllAtoms(); from++) {\n        atomsInfo[from].paths = [];\n        for (let to = 0; to < molecule.getAllAtoms(); to++) {\n            if (from !== to &&\n                molecule.getAtomicNo(from) === fromAtomicNumber &&\n                molecule.getAtomicNo(to) === toAtomicNumber) {\n                const pathLength = pathLengthMatrix[from][to];\n                if (pathLength >= minLength && pathLength <= maxLength) {\n                    if (withHOSES) {\n                        atomsInfo[from].paths.push(getHoseCodesForPath(molecule, from, to, pathLength));\n                    }\n                    else {\n                        atomsInfo[from].paths.push(getPathAndTorsion(molecule, from, to, pathLength));\n                    }\n                }\n            }\n        }\n    }\n    return atomsInfo;\n}\n//# sourceMappingURL=getPathsInfo.js.map","/**\n * Calculate the molecular formula in 'chemcalc' notation taking into account fragments, isotopes and charges\n * @param {OCL.Molecule} [molecule] - an instance of OCL.Molecule\n * @returns {}\n */\nexport function getAtoms(molecule) {\n    const entries = molecule.getFragments();\n    const atoms = {};\n    const result = { atoms, parts: [] };\n    for (const entry of entries) {\n        const part = {};\n        result.parts.push(part);\n        appendAtomPart(entry, atoms, part);\n    }\n    return result;\n}\nfunction appendAtomPart(molecule, atoms, part) {\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const label = molecule.getAtomLabel(i);\n        if (!atoms[label]) {\n            atoms[label] = 0;\n        }\n        atoms[label] += 1;\n        if (!part[label]) {\n            part[label] = 0;\n        }\n        part[label] += 1;\n        const implicitHydrogens = molecule.getImplicitHydrogens(i);\n        if (implicitHydrogens) {\n            if (!atoms.H) {\n                atoms.H = 0;\n            }\n            atoms.H += implicitHydrogens;\n            if (!part.H) {\n                part.H = 0;\n            }\n            part.H += implicitHydrogens;\n        }\n    }\n}\n//# sourceMappingURL=getAtoms.js.map","/**\n * Calculates the path between 2 atoms\n * @param {import('openchemlib').Molecule} molecule\n * @param {number} from - index of the first atom\n * @param {number} to - index of the end atom\n * @param {number} maxLength - maximal length of the path\n */\nexport function getPathAndTorsion(molecule, from, to, maxLength) {\n    const originalAtoms = []; // path before renumbering\n    molecule.getPath(originalAtoms, from, to, maxLength + 1);\n    let torsion;\n    if (originalAtoms.length === 4) {\n        torsion = molecule.calculateTorsion(originalAtoms);\n    }\n    return {\n        atoms: originalAtoms,\n        from,\n        to,\n        torsion,\n        length: originalAtoms.length - 1,\n    };\n}\n//# sourceMappingURL=getPathAndTorsion.js.map","/* @license\nPapa Parse\nv5.5.2\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n((e,t)=>{\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()})(this,function r(){var n=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==n?n:{};var d,s=!n.document&&!!n.postMessage,a=n.IS_PAPA_WORKER||!1,o={},h=0,v={};function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=w(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new i(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(t,e){var i=parseInt(this._config.skipFirstNLines)||0;if(this.isFirstChunk&&0<i){let e=this._config.newline;e||(r=this._config.quoteChar||'\"',e=this._handle.guessLineEndings(t,r)),t=[...t.split(e).slice(i)].join(e)}this.isFirstChunk&&U(this._config.beforeFirstChunk)&&void 0!==(r=this._config.beforeFirstChunk(t))&&(t=r),this.isFirstChunk=!1,this._halted=!1;var i=this._partialLine+t,r=(this._partialLine=\"\",this._handle.parse(i,this._baseIndex,!this._finished));if(!this._handle.paused()&&!this._handle.aborted()){t=r.meta.cursor,i=(this._finished||(this._partialLine=i.substring(t-this._baseIndex),this._baseIndex=t),r&&r.data&&(this._rowCount+=r.data.length),this._finished||this._config.preview&&this._rowCount>=this._config.preview);if(a)n.postMessage({results:r,workerId:v.WORKER_ID,finished:i});else if(U(this._config.chunk)&&!e){if(this._config.chunk(r,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);this._completeResults=r=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(r.data),this._completeResults.errors=this._completeResults.errors.concat(r.errors),this._completeResults.meta=r.meta),this._completed||!i||!U(this._config.complete)||r&&r.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),i||r&&r.meta.paused||this._nextChunk(),r}this._halted=!0},this._sendError=function(e){U(this._config.error)?this._config.error(e):a&&this._config.error&&n.postMessage({workerId:v.WORKER_ID,error:e,finished:!1})}}function f(e){var r;(e=e||{}).chunkSize||(e.chunkSize=v.RemoteChunkSize),u.call(this,e),this._nextChunk=s?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),s||(r.onload=y(this._chunkLoaded,this),r.onerror=y(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!s),this._config.downloadRequestHeaders){var e,t=this._config.downloadRequestHeaders;for(e in t)r.setRequestHeader(e,t[e])}var i;this._config.chunkSize&&(i=this._start+this._config.chunkSize-1,r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i));try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}s&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize||r.responseText.length,this._finished=!this._config.chunkSize||this._start>=(e=>null!==(e=e.getResponseHeader(\"Content-Range\"))?parseInt(e.substring(e.lastIndexOf(\"/\")+1)):-1)(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){e=r.statusText||e;this._sendError(new Error(e))}}function l(e){(e=e||{}).chunkSize||(e.chunkSize=v.LocalChunkSize),u.call(this,e);var i,r,n=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,r=e.slice||e.webkitSlice||e.mozSlice,n?((i=new FileReader).onload=y(this._chunkLoaded,this),i.onerror=y(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input,t=(this._config.chunkSize&&(t=Math.min(this._start+this._config.chunkSize,this._input.size),e=r.call(e,this._start,t)),i.readAsText(e,this._config.encoding));n||this._chunkLoaded({target:{result:t}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function c(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){var e,t;if(!this._finished)return e=this._config.chunkSize,i=e?(t=i.substring(0,e),i.substring(e)):(t=i,\"\"),this._finished=!i,this.parseChunk(t)}}function p(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=y(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=y(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=y(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=y(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(m){var n,s,a,t,o=Math.pow(2,53),h=-o,u=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,d=/^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/,i=this,r=0,f=0,l=!1,e=!1,c=[],p={data:[],errors:[],meta:{}};function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){if(p&&a&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+v.DefaultDelimiter+\"'\"),a=!1),m.skipEmptyLines&&(p.data=p.data.filter(function(e){return!y(e)})),_()){if(p)if(Array.isArray(p.data[0])){for(var e=0;_()&&e<p.data.length;e++)p.data[e].forEach(t);p.data.splice(0,1)}else p.data.forEach(t);function t(e,t){U(m.transformHeader)&&(e=m.transformHeader(e,t)),c.push(e)}}function i(e,t){for(var i=m.header?{}:[],r=0;r<e.length;r++){var n=r,s=e[r],s=((e,t)=>(e=>(m.dynamicTypingFunction&&void 0===m.dynamicTyping[e]&&(m.dynamicTyping[e]=m.dynamicTypingFunction(e)),!0===(m.dynamicTyping[e]||m.dynamicTyping)))(e)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&((e=>{if(u.test(e)){e=parseFloat(e);if(h<e&&e<o)return 1}})(t)?parseFloat(t):d.test(t)?new Date(t):\"\"===t?null:t):t)(n=m.header?r>=c.length?\"__parsed_extra\":c[r]:n,s=m.transform?m.transform(s,n):s);\"__parsed_extra\"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s}return m.header&&(r>c.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+c.length+\" fields but parsed \"+r,f+t):r<c.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+c.length+\" fields but parsed \"+r,f+t)),i}var r;p&&(m.header||m.dynamicTyping||m.transform)&&(r=1,!p.data.length||Array.isArray(p.data[0])?(p.data=p.data.map(i),r=p.data.length):p.data=i(p.data,0),m.header&&p.meta&&(p.meta.fields=c),f+=r)}function _(){return m.header&&0===c.length}function k(e,t,i,r){e={type:e,code:t,message:i};void 0!==r&&(e.row=r),p.errors.push(e)}U(m.step)&&(t=m.step,m.step=function(e){p=e,_()?g():(g(),0!==p.data.length&&(r+=e.data.length,m.preview&&r>m.preview?s.abort():(p.data=p.data[0],t(p,i))))}),this.parse=function(e,t,i){var r=m.quoteChar||'\"',r=(m.newline||(m.newline=this.guessLineEndings(e,r)),a=!1,m.delimiter?U(m.delimiter)&&(m.delimiter=m.delimiter(e),p.meta.delimiter=m.delimiter):((r=((e,t,i,r,n)=>{var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",v.RECORD_SEP,v.UNIT_SEP];for(var u=0;u<n.length;u++){for(var d,f=n[u],l=0,c=0,p=0,g=(o=void 0,new E({comments:r,delimiter:f,newline:t,preview:10}).parse(e)),_=0;_<g.data.length;_++)i&&y(g.data[_])?p++:(d=g.data[_].length,c+=d,void 0===o?o=d:0<d&&(l+=Math.abs(d-o),o=d));0<g.data.length&&(c/=g.data.length-p),(void 0===a||l<=a)&&(void 0===h||h<c)&&1.99<c&&(a=l,s=f,h=c)}return{successful:!!(m.delimiter=s),bestDelimiter:s}})(e,m.newline,m.skipEmptyLines,m.comments,m.delimitersToGuess)).successful?m.delimiter=r.bestDelimiter:(a=!0,m.delimiter=v.DefaultDelimiter),p.meta.delimiter=m.delimiter),w(m));return m.preview&&m.header&&r.preview++,n=e,s=new E(r),p=s.parse(n,t,i),g(),l?{meta:{paused:!0}}:p||{meta:{paused:!1}}},this.paused=function(){return l},this.pause=function(){l=!0,s.abort(),n=U(m.chunk)?\"\":n.substring(s.getCharIndex())},this.resume=function(){i.streamer._halted?(l=!1,i.streamer.parseChunk(n,!0)):setTimeout(i.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,s.abort(),p.meta.aborted=!0,U(m.complete)&&m.complete(p),n=\"\"},this.guessLineEndings=function(e,t){e=e.substring(0,1048576);var t=new RegExp(P(t)+\"([^]*?)\"+P(t),\"gm\"),i=(e=e.replace(t,\"\")).split(\"\\r\"),t=e.split(\"\\n\"),e=1<t.length&&t[0].length<i[0].length;if(1===i.length||e)return\"\\n\";for(var r=0,n=0;n<i.length;n++)\"\\n\"===i[n][0]&&r++;return r>=i.length/2?\"\\r\\n\":\"\\r\"}}function P(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function E(C){var S=(C=C||{}).delimiter,O=C.newline,x=C.comments,I=C.step,A=C.preview,T=C.fastMode,D=null,L=!1,F=null==C.quoteChar?'\"':C.quoteChar,j=F;if(void 0!==C.escapeChar&&(j=C.escapeChar),(\"string\"!=typeof S||-1<v.BAD_DELIMITERS.indexOf(S))&&(S=\",\"),x===S)throw new Error(\"Comment character same as delimiter\");!0===x?x=\"#\":(\"string\"!=typeof x||-1<v.BAD_DELIMITERS.indexOf(x))&&(x=!1),\"\\n\"!==O&&\"\\r\"!==O&&\"\\r\\n\"!==O&&(O=\"\\n\");var z=0,M=!1;this.parse=function(i,t,r){if(\"string\"!=typeof i)throw new Error(\"Input must be a string\");var n=i.length,e=S.length,s=O.length,a=x.length,o=U(I),h=[],u=[],d=[],f=z=0;if(!i)return b();if(T||!1!==T&&-1===i.indexOf(F)){for(var l=i.split(O),c=0;c<l.length;c++){if(d=l[c],z+=d.length,c!==l.length-1)z+=O.length;else if(r)return b();if(!x||d.substring(0,a)!==x){if(o){if(h=[],k(d.split(S)),R(),M)return b()}else k(d.split(S));if(A&&A<=c)return h=h.slice(0,A),b(!0)}}return b()}for(var p=i.indexOf(S,z),g=i.indexOf(O,z),_=new RegExp(P(j)+P(F),\"g\"),m=i.indexOf(F,z);;)if(i[z]===F)for(m=z,z++;;){if(-1===(m=i.indexOf(F,m+1)))return r||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:z}),E();if(m===n-1)return E(i.substring(z,m).replace(_,F));if(F===j&&i[m+1]===j)m++;else if(F===j||0===m||i[m-1]!==j){-1!==p&&p<m+1&&(p=i.indexOf(S,m+1));var y=v(-1===(g=-1!==g&&g<m+1?i.indexOf(O,m+1):g)?p:Math.min(p,g));if(i.substr(m+1+y,e)===S){d.push(i.substring(z,m).replace(_,F)),i[z=m+1+y+e]!==F&&(m=i.indexOf(F,z)),p=i.indexOf(S,z),g=i.indexOf(O,z);break}y=v(g);if(i.substring(m+1+y,m+1+y+s)===O){if(d.push(i.substring(z,m).replace(_,F)),w(m+1+y+s),p=i.indexOf(S,z),m=i.indexOf(F,z),o&&(R(),M))return b();if(A&&h.length>=A)return b(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:z}),m++}}else if(x&&0===d.length&&i.substring(z,z+a)===x){if(-1===g)return b();z=g+s,g=i.indexOf(O,z),p=i.indexOf(S,z)}else if(-1!==p&&(p<g||-1===g))d.push(i.substring(z,p)),z=p+e,p=i.indexOf(S,z);else{if(-1===g)break;if(d.push(i.substring(z,g)),w(g+s),o&&(R(),M))return b();if(A&&h.length>=A)return b(!0)}return E();function k(e){h.push(e),f=z}function v(e){var t=0;return t=-1!==e&&(e=i.substring(m+1,e))&&\"\"===e.trim()?e.length:t}function E(e){return r||(void 0===e&&(e=i.substring(z)),d.push(e),z=n,k(d),o&&R()),b()}function w(e){z=e,k(d),d=[],g=i.indexOf(O,z)}function b(e){if(C.header&&!t&&h.length&&!L){var s=h[0],a={},o=new Set(s);let n=!1;for(let r=0;r<s.length;r++){let i=s[r];if(a[i=U(C.transformHeader)?C.transformHeader(i,r):i]){let e,t=a[i];for(;e=i+\"_\"+t,t++,o.has(e););o.add(e),s[r]=e,a[i]++,n=!0,(D=null===D?{}:D)[e]=i}else a[i]=1,s[r]=i;o.add(i)}n&&console.warn(\"Duplicate headers found and renamed.\"),L=!0}return{data:h,errors:u,meta:{delimiter:S,linebreak:O,aborted:M,truncated:!!e,cursor:f+(t||0),renamedHeaders:D}}}function R(){I(b()),h=[],u=[]}},this.abort=function(){M=!0},this.getCharIndex=function(){return z}}function g(e){var t=e.data,i=o[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,_(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:m,resume:m};if(U(i.userStep)){for(var s=0;s<t.results.data.length&&(i.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!r);s++);delete t.results}else U(i.userChunk)&&(i.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!r&&_(t.workerId,t.results)}function _(e,t){var i=o[e];U(i.userComplete)&&i.userComplete(t),i.terminate(),delete o[e]}function m(){throw new Error(\"Not implemented.\")}function w(e){if(\"object\"!=typeof e||null===e)return e;var t,i=Array.isArray(e)?[]:{};for(t in e)i[t]=w(e[t]);return i}function y(e,t){return function(){e.apply(t,arguments)}}function U(e){return\"function\"==typeof e}return v.parse=function(e,t){var i=(t=t||{}).dynamicTyping||!1;U(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!U(t.transform)&&t.transform,!t.worker||!v.WORKERS_SUPPORTED)return i=null,v.NODE_STREAM_INPUT,\"string\"==typeof e?(e=(e=>65279!==e.charCodeAt(0)?e:e.slice(1))(e),i=new(t.download?f:c)(t)):!0===e.readable&&U(e.read)&&U(e.on)?i=new p(t):(n.File&&e instanceof File||e instanceof Object)&&(i=new l(t)),i.stream(e);(i=(()=>{var e;return!!v.WORKERS_SUPPORTED&&(e=(()=>{var e=n.URL||n.webkitURL||null,t=r.toString();return v.BLOB_URL||(v.BLOB_URL=e.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \",\"(\",t,\")();\"],{type:\"text/javascript\"})))})(),(e=new n.Worker(e)).onmessage=g,e.id=h++,o[e.id]=e)})()).userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=U(t.step),t.chunk=U(t.chunk),t.complete=U(t.complete),t.error=U(t.error),delete t.worker,i.postMessage({input:e,config:t,workerId:i.id})},v.unparse=function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null,o=!1,h=((()=>{if(\"object\"==typeof t){if(\"string\"!=typeof t.delimiter||v.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter),\"boolean\"!=typeof t.quotes&&\"function\"!=typeof t.quotes&&!Array.isArray(t.quotes)||(n=t.quotes),\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines),\"string\"==typeof t.newline&&(y=t.newline),\"string\"==typeof t.quoteChar&&(s=t.quoteChar),\"boolean\"==typeof t.header&&(_=t.header),Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s),t.escapeFormulae instanceof RegExp?o=t.escapeFormulae:\"boolean\"==typeof t.escapeFormulae&&t.escapeFormulae&&(o=/^[=+\\-@\\t\\r].*$/)}})(),new RegExp(P(s),\"g\"));\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u(null,e,i);if(\"object\"==typeof e[0])return u(r||Object.keys(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||r),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),u(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function u(e,t,i){var r=\"\",n=(\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t)),Array.isArray(e)&&0<e.length),s=!Array.isArray(t[0]);if(n&&_){for(var a=0;a<e.length;a++)0<a&&(r+=m),r+=k(e[a],a);0<t.length&&(r+=y)}for(var o=0;o<t.length;o++){var h=(n?e:t[o]).length,u=!1,d=n?0===Object.keys(t[o]).length:0===t[o].length;if(i&&!n&&(u=\"greedy\"===i?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===i&&n){for(var f=[],l=0;l<h;l++){var c=s?e[l]:l;f.push(t[o][c])}u=\"\"===f.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!d&&(r+=m);var g=n&&s?e[p]:p;r+=k(t[o][g],p)}o<t.length-1&&(!i||0<h&&!d)&&(r+=y)}}return r}function k(e,t){var i,r;return null==e?\"\":e.constructor===Date?JSON.stringify(e).slice(1,25):(r=!1,o&&\"string\"==typeof e&&o.test(e)&&(e=\"'\"+e,r=!0),i=e.toString().replace(h,a),(r=r||!0===n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||((e,t)=>{for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1})(i,v.BAD_DELIMITERS)||-1<i.indexOf(m)||\" \"===i.charAt(0)||\" \"===i.charAt(i.length-1))?s+i+s:i)}},v.RECORD_SEP=String.fromCharCode(30),v.UNIT_SEP=String.fromCharCode(31),v.BYTE_ORDER_MARK=\"\\ufeff\",v.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',v.BYTE_ORDER_MARK],v.WORKERS_SUPPORTED=!s&&!!n.Worker,v.NODE_STREAM_INPUT=1,v.LocalChunkSize=10485760,v.RemoteChunkSize=5242880,v.DefaultDelimiter=\",\",v.Parser=E,v.ParserHandle=i,v.NetworkStreamer=f,v.FileStreamer=l,v.StringStreamer=c,v.ReadableStreamStreamer=p,n.jQuery&&((d=n.jQuery).fn.parse=function(o){var i=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&n.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},i)})}),e(),this;function e(){if(0===h.length)U(o.complete)&&o.complete();else{var e,t,i,r,n=h[0];if(U(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,i=n.inputElem,r=s.reason,void(U(o.error)&&o.error({name:e},t,i,r));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){U(a)&&a(e,n.file,n.inputElem),u()},v.parse(n.file,n.instanceConfig)}}function u(){h.splice(0,1),e()}}),a&&(n.onmessage=function(e){e=e.data;void 0===v.WORKER_ID&&e&&(v.WORKER_ID=e.workerId);\"string\"==typeof e.input?n.postMessage({workerId:v.WORKER_ID,results:v.parse(e.input,e.config),finished:!0}):(n.File&&e.input instanceof File||e.input instanceof Object)&&(e=v.parse(e.input,e.config))&&n.postMessage({workerId:v.WORKER_ID,results:e,finished:!0})}),(f.prototype=Object.create(u.prototype)).constructor=f,(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(c.prototype)).constructor=c,(p.prototype=Object.create(u.prototype)).constructor=p,v});","export default function getMoleculeCreators(OCL) {\n    const fields = new Map();\n    fields.set('oclid', OCL.Molecule.fromIDCode);\n    fields.set('idcode', OCL.Molecule.fromIDCode);\n    fields.set('smiles', OCL.Molecule.fromSmiles);\n    fields.set('molfile', OCL.Molecule.fromMolfile);\n    fields.set('smarts', (smarts) => {\n        const smilesParser = new OCL.SmilesParser({ smartsMode: 'smarts' });\n        return smilesParser.parseMolecule(smarts);\n    });\n    return fields;\n}\n//# sourceMappingURL=getMoleculeCreators.js.map","import { ensureString } from 'ensure-string';\nimport Papa from 'papaparse';\nimport getMoleculeCreators from './getMoleculeCreators';\nconst defaultCSVOptions = {\n    header: true,\n    dynamicTyping: true,\n    skipEmptyLines: true,\n};\nexport default async function appendCSV(moleculesDB, csv, options = {}) {\n    const { onStep } = options;\n    csv = ensureString(csv);\n    const moleculeCreators = getMoleculeCreators(moleculesDB.OCL);\n    if (typeof csv !== 'string') {\n        throw new TypeError('csv must be a string');\n    }\n    options = { ...defaultCSVOptions, ...options };\n    const parsed = Papa.parse(csv, options);\n    const fields = parsed.meta.fields;\n    const stats = new Array(fields.length);\n    const firstElement = parsed.data[0];\n    let moleculeCreator, moleculeField;\n    for (let i = 0; i < fields.length; i++) {\n        stats[i] = {\n            label: fields[i],\n            isNumeric: typeof firstElement[fields[i]] === 'number',\n        };\n        const lowerField = fields[i].toLowerCase();\n        if (moleculeCreators.has(lowerField)) {\n            moleculeCreator = moleculeCreators.get(lowerField);\n            moleculeField = fields[i];\n        }\n    }\n    if (!moleculeCreator) {\n        throw new Error('this document does not contain any molecule field');\n    }\n    moleculesDB.statistics = stats;\n    for (let i = 0; i < parsed.data.length; i++) {\n        moleculesDB.pushEntry(moleculeCreator(parsed.data[i][moleculeField]), parsed.data[i]);\n        if (onStep) {\n            // eslint-disable-next-line no-await-in-loop\n            await onStep(i + 1, parsed.data.length);\n        }\n    }\n}\n//# sourceMappingURL=appendCSV.js.map","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// index.ts\nvar isObject = /* @__PURE__ */ __name((v) => v !== null && typeof v === \"object\", \"isObject\");\nvar join = /* @__PURE__ */ __name((segs, joinChar, options) => {\n  if (typeof options.join === \"function\") {\n    return options.join(segs);\n  }\n  return segs[0] + joinChar + segs[1];\n}, \"join\");\nvar split = /* @__PURE__ */ __name((path, splitChar, options) => {\n  if (typeof options.split === \"function\") {\n    return options.split(path);\n  }\n  return path.split(splitChar);\n}, \"split\");\nvar isValid = /* @__PURE__ */ __name((key, target = {}, options) => {\n  if (typeof options?.isValid === \"function\") {\n    return options.isValid(key, target);\n  }\n  return true;\n}, \"isValid\");\nvar isValidObject = /* @__PURE__ */ __name((v) => {\n  return isObject(v) || typeof v === \"function\";\n}, \"isValidObject\");\nvar getValue = /* @__PURE__ */ __name((target, path, options = {}) => {\n  if (!isObject(options)) {\n    options = { default: options };\n  }\n  if (!isValidObject(target)) {\n    return typeof options.default !== \"undefined\" ? options.default : target;\n  }\n  if (typeof path === \"number\") {\n    path = String(path);\n  }\n  const pathIsArray = Array.isArray(path);\n  const pathIsString = typeof path === \"string\";\n  const splitChar = options.separator || \".\";\n  const joinChar = options.joinChar || (typeof splitChar === \"string\" ? splitChar : \".\");\n  if (!pathIsString && !pathIsArray) {\n    return target;\n  }\n  if (target[path] !== void 0) {\n    return isValid(path, target, options) ? target[path] : options.default;\n  }\n  const segs = pathIsArray ? path : split(path, splitChar, options);\n  const len = segs.length;\n  let idx = 0;\n  do {\n    let prop = segs[idx];\n    if (typeof prop !== \"string\") {\n      prop = String(prop);\n    }\n    while (prop && prop.slice(-1) === \"\\\\\") {\n      prop = join([prop.slice(0, -1), segs[++idx] || \"\"], joinChar, options);\n    }\n    if (target[prop] !== void 0) {\n      if (!isValid(prop, target, options)) {\n        return options.default;\n      }\n      target = target[prop];\n    } else {\n      let hasProp = false;\n      let n = idx + 1;\n      while (n < len) {\n        prop = join([prop, segs[n++]], joinChar, options);\n        if (hasProp = target[prop] !== void 0) {\n          if (!isValid(prop, target, options)) {\n            return options.default;\n          }\n          target = target[prop];\n          idx = n - 1;\n          break;\n        }\n      }\n      if (!hasProp) {\n        return options.default;\n      }\n    }\n  } while (++idx < len && isValidObject(target));\n  if (idx === len) {\n    return target;\n  }\n  return options.default;\n}, \"getValue\");\nvar index_default = getValue;\nexport {\n  index_default as default\n};\n/*!\n * get-value <https://github.com/jonschlinkert/get-value>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n//# sourceMappingURL=index.mjs.map","/**\n * Parse the molfile and the properties with > < labels >\n * @param {string} sdfPart\n * @param {*} labels\n * @param {*} currentLabels\n * @param {object} options\n * @returns\n */\nexport function getMolecule(sdfPart, labels, currentLabels, options) {\n  let parts = sdfPart.split(`${options.eol}>`);\n  if (parts.length === 0 || parts[0].length <= 5) return;\n  let molecule = {};\n  molecule.molfile = parts[0] + options.eol;\n  for (let j = 1; j < parts.length; j++) {\n    let lines = parts[j].split(options.eol);\n    let from = lines[0].indexOf('<');\n    let to = lines[0].indexOf('>');\n    let label = lines[0].slice(from + 1, to);\n    currentLabels.push(label);\n    if (!labels[label]) {\n      labels[label] = {\n        counter: 0,\n        isNumeric: options.dynamicTyping,\n        keep: false,\n      };\n      if (\n        (!options.exclude || !options.exclude.includes(label)) &&\n        (!options.include || options.include.includes(label))\n      ) {\n        labels[label].keep = true;\n        if (options.modifiers[label]) {\n          labels[label].modifier = options.modifiers[label];\n        }\n        if (options.forEach[label]) {\n          labels[label].forEach = options.forEach[label];\n        }\n      }\n    }\n    if (labels[label].keep) {\n      for (let k = 1; k < lines.length - 1; k++) {\n        if (molecule[label]) {\n          molecule[label] += options.eol + lines[k];\n        } else {\n          molecule[label] = lines[k];\n        }\n      }\n      if (labels[label].modifier) {\n        let modifiedValue = labels[label].modifier(molecule[label]);\n        if (modifiedValue === undefined || modifiedValue === null) {\n          delete molecule[label];\n        } else {\n          molecule[label] = modifiedValue;\n        }\n      }\n      if (\n        labels[label].isNumeric &&\n        (!Number.isFinite(+molecule[label]) || molecule[label].match(/^0[0-9]/))\n      ) {\n        labels[label].isNumeric = false;\n      }\n    }\n  }\n  return molecule;\n}\n","import { ensureString } from 'ensure-string';\nimport { parse } from 'sdf-parser';\nexport default async function appendSDF(moleculesDB, sdf, options = {}) {\n    const { onStep } = options;\n    sdf = ensureString(sdf);\n    if (typeof sdf !== 'string') {\n        throw new TypeError('sdf must be a string');\n    }\n    const parsed = parse(sdf);\n    moleculesDB.statistics = parsed.statistics;\n    for (let i = 0; i < parsed.molecules.length; i++) {\n        const molecule = parsed.molecules[i];\n        moleculesDB.pushEntry(moleculesDB.OCL.Molecule.fromMolfile(molecule.molfile), molecule);\n        if (onStep) {\n            // eslint-disable-next-line no-await-in-loop\n            await onStep(i + 1, parsed.molecules.length);\n        }\n    }\n}\n//# sourceMappingURL=appendSDF.js.map","import { ensureString } from 'ensure-string';\n\nimport { getEntriesBoundaries } from './getEntriesBoundaries';\nimport { getMolecule } from './util/getMolecule';\n/**\n *  Parse a SDF file\n * @param {string|ArrayBuffer|Uint8Array} sdf - SDF file to parse\n * @param {object} [options={}]\n * @param {string[]} [options.include] - List of fields to include\n * @param {string[]} [options.exclude] - List of fields to exclude\n * @param {Function} [options.filter] - Callback allowing to filter the molecules\n * @param {boolean} [options.dynamicTyping] - Dynamically type the data\n * @param {object} [options.modifiers] - Object containing callbacks to apply on some specific fields\n * @param {boolean} [options.mixedEOL=false] - Set to true if you know there is a mixture between \\r\\n and \\n\n * @param {string} [options.eol] - Specify the end of line character. Default will be the one found in the file\n * @returns {object} - Object containing the molecules, the labels and the statistics\n */\nexport function parse(sdf, options = {}) {\n  options = { ...options };\n  if (options.modifiers === undefined) options.modifiers = {};\n  if (options.forEach === undefined) options.forEach = {};\n  if (options.dynamicTyping === undefined) options.dynamicTyping = true;\n\n  sdf = ensureString(sdf);\n  if (typeof sdf !== 'string') {\n    throw new TypeError('Parameter \"sdf\" must be a string');\n  }\n\n  if (options.eol === undefined) {\n    options.eol = '\\n';\n    if (options.mixedEOL) {\n      sdf = sdf.replaceAll('\\r\\n', '\\n');\n      sdf = sdf.replaceAll('\\r', '\\n');\n    } else {\n      // we will find the delimiter in order to be much faster and not use regular expression\n      let header = new Set(sdf.slice(0, 1000));\n      if (header.has('\\r\\n')) {\n        options.eol = '\\r\\n';\n      } else if (header.has('\\r')) {\n        options.eol = '\\r';\n      }\n    }\n  }\n\n  let entriesBoundaries = getEntriesBoundaries(\n    sdf,\n    `${options.eol}$$$$`,\n    options.eol,\n  );\n  let molecules = [];\n  let labels = {};\n\n  let start = Date.now();\n\n  for (let i = 0; i < entriesBoundaries.length; i++) {\n    let sdfPart = sdf.slice(...entriesBoundaries[i]);\n    if (sdfPart.length < 40) continue;\n    let currentLabels = [];\n    const molecule = getMolecule(sdfPart, labels, currentLabels, options);\n    if (!molecule) continue;\n    if (!options.filter || options.filter(molecule)) {\n      molecules.push(molecule);\n      // only now we can increase the counter\n      for (let j = 0; j < currentLabels.length; j++) {\n        labels[currentLabels[j]].counter++;\n      }\n    }\n  }\n  // all numeric fields should be converted to numbers\n  for (let label in labels) {\n    let currentLabel = labels[label];\n    if (currentLabel.isNumeric) {\n      currentLabel.minValue = Infinity;\n      currentLabel.maxValue = -Infinity;\n      for (let j = 0; j < molecules.length; j++) {\n        if (molecules[j][label]) {\n          let value = Number.parseFloat(molecules[j][label]);\n          molecules[j][label] = value;\n          if (value > currentLabel.maxValue) {\n            currentLabel.maxValue = value;\n          }\n          if (value < currentLabel.minValue) {\n            currentLabel.minValue = value;\n          }\n        }\n      }\n    }\n  }\n\n  // we check that a label is in all the records\n  for (let key in labels) {\n    if (labels[key].counter === molecules.length) {\n      labels[key].always = true;\n    } else {\n      labels[key].always = false;\n    }\n  }\n\n  let statistics = [];\n  for (let key in labels) {\n    let statistic = labels[key];\n    statistic.label = key;\n    statistics.push(statistic);\n  }\n\n  return {\n    time: Date.now() - start,\n    molecules,\n    labels: Object.keys(labels),\n    statistics,\n  };\n}\n","/**\n *\n * @param {*} string\n * @param {*} substring\n * @param {*} eol\n * @returns\n */\nexport function getEntriesBoundaries(string, substring, eol) {\n  const res = [];\n  let previous = 0;\n  let next = 0;\n  while (next !== -1) {\n    next = string.indexOf(substring, previous);\n    if (next !== -1) {\n      res.push([previous, next]);\n      const nextMatch = string.indexOf(eol, next + substring.length);\n      if (nextMatch === -1) {\n        next = -1;\n      } else {\n        previous = nextMatch + eol.length;\n        next = previous;\n      }\n    } else {\n      res.push([previous, string.length]);\n    }\n  }\n  return res;\n}\n","export async function noWait() {\n    return new Promise((resolve) => {\n        if (typeof setImmediate === 'function') {\n            setImmediate(() => resolve());\n        }\n        else {\n            // didn't find a better way to do it in the browser\n            setTimeout(() => resolve(), 0);\n        }\n    });\n}\n//# sourceMappingURL=noWait.js.map","import { noWait } from '../../util/noWait.js';\nimport { MoleculesDB } from '../MoleculesDB.js';\nimport getMoleculeCreators from './getMoleculeCreators';\nclass AbortError extends Error {\n    constructor() {\n        super(...arguments);\n        this.name = 'AbortError';\n        this.code = 20;\n    }\n}\nfunction getQuery(moleculesDB, query, options) {\n    const { format = 'idCode' } = options;\n    if (typeof query === 'string') {\n        const moleculeCreators = getMoleculeCreators(moleculesDB.OCL);\n        query = moleculeCreators.get(format.toLowerCase())(query);\n    }\n    else if (!(query instanceof moleculesDB.OCL.Molecule)) {\n        throw new TypeError('toSearch must be a Molecule or string');\n    }\n    return query;\n}\n/**\n * Internal function to search in the database\n * @param {MoleculesDB} moleculesDB\n * @param {string} query\n * @param {Record<string, any>} [options={}]\n * @param {'exact'|'substructure'|'substructureOR'|'similarity'} [options.mode='substructure']\n * @returns\n */\nexport function search(moleculesDB, query = '', options = {}) {\n    const { mode = 'substructure' } = options;\n    query = getQuery(moleculesDB, query, options);\n    let result;\n    switch (mode.toLowerCase()) {\n        case 'exact':\n            result = exactSearch(moleculesDB, query);\n            break;\n        case 'substructure':\n            result = substructureSearch(moleculesDB, query);\n            break;\n        case 'substructureor':\n            result = substructureSearchOR(moleculesDB, query);\n            break;\n        case 'similarity':\n            result = similaritySearch(moleculesDB, query);\n            break;\n        default:\n            throw new Error(`unknown search mode: ${options.mode}`);\n    }\n    return processResult(result, options);\n}\nexport async function searchAsync(moleculesDB, query = '', options = {}) {\n    const { mode = 'substructure' } = options;\n    query = getQuery(moleculesDB, query, options);\n    let result;\n    switch (mode.toLowerCase()) {\n        case 'exact':\n            result = exactSearch(moleculesDB, query);\n            break;\n        case 'substructure':\n            result = await subStructureSearchAsync(moleculesDB, query, options);\n            break;\n        case 'substructureor':\n            result = substructureSearchOR(moleculesDB, query);\n            break;\n        case 'similarity':\n            result = similaritySearch(moleculesDB, query);\n            break;\n        default:\n            throw new Error(`unknown search mode: ${options.mode}`);\n    }\n    return processResult(result, options);\n}\nfunction exactSearch(moleculesDB, query) {\n    query = query.getCompactCopy();\n    query.setFragment(false);\n    const queryIDCode = query.getIDCode();\n    const searchResult = moleculesDB.db[queryIDCode]\n        ? [moleculesDB.db[queryIDCode]]\n        : [];\n    return searchResult;\n}\n/**\n * No atoms in the query, we return all the molecules\n * @param {MoleculesDB} moleculesDB\n * @param {import('openchemlib').Molecule} query\n * @returns\n */\nfunction substructureSearchBegin(moleculesDB, query) {\n    const searchResult = [];\n    if (query.getAllAtoms() === 0) {\n        for (const idCode in moleculesDB.db) {\n            searchResult.push(moleculesDB.db[idCode]);\n        }\n    }\n    return { searchResult };\n}\nfunction substructureSearchEnd(searchResult, queryMW) {\n    searchResult.sort((a, b) => {\n        return (Math.abs(queryMW - a.properties.mw) - Math.abs(queryMW - b.properties.mw));\n    });\n    return searchResult;\n}\n/**\n * Search by substructure in the database\n * If the substructure is composed of many fragments all the fragments must be present\n * @param {*} moleculesDB\n * @param {*} query\n * @returns\n */\nfunction substructureSearch(moleculesDB, query) {\n    const queryMW = getMW(query);\n    const { searchResult } = substructureSearchBegin(moleculesDB, query);\n    if (searchResult.length === 0) {\n        query = query.getCompactCopy();\n        query.setFragment(true);\n        const queryIndex = query.getIndex();\n        const searcher = moleculesDB.searcher;\n        searcher.setFragment(query, queryIndex);\n        for (const idCode in moleculesDB.db) {\n            const entry = moleculesDB.db[idCode];\n            searcher.setMolecule(entry.molecule, entry.index);\n            if (searcher.isFragmentInMolecule()) {\n                searchResult.push(entry);\n            }\n        }\n    }\n    return substructureSearchEnd(searchResult, queryMW);\n}\n/**\n * Search by substructure in the database\n * If the substructure is composed of many fragments only one fragment must be present\n * @param {*} moleculesDB\n * @param {import('openchemlib').Molecule} query\n * @returns\n */\nfunction substructureSearchOR(moleculesDB, query) {\n    const queryMW = getMW(query);\n    const { searchResult } = substructureSearchBegin(moleculesDB, query);\n    if (searchResult.length === 0) {\n        query = query.getCompactCopy();\n        query.setFragment(true);\n        const queries = [];\n        for (const fragment of query.getFragments()) {\n            queries.push({\n                fragment,\n                queryIndex: fragment.getIndex(),\n            });\n        }\n        const searcher = moleculesDB.searcher;\n        molecule: for (const idCode in moleculesDB.db) {\n            const entry = moleculesDB.db[idCode];\n            searcher.setMolecule(entry.molecule, entry.index);\n            for (const { fragment, queryIndex } of queries) {\n                searcher.setFragment(fragment, queryIndex);\n                if (searcher.isFragmentInMolecule()) {\n                    searchResult.push(entry);\n                    continue molecule;\n                }\n            }\n        }\n    }\n    return substructureSearchEnd(searchResult, queryMW);\n}\nasync function subStructureSearchAsync(moleculesDB, query, options = {}) {\n    const queryMW = getMW(query); // we\n    query = query.getCompactCopy();\n    query.setFragment(true);\n    const { interval = 100, onStep, controller } = options;\n    let shouldAbort = false;\n    if (controller) {\n        const abortEventListener = () => {\n            shouldAbort = true;\n        };\n        controller.signal.addEventListener('abort', abortEventListener);\n    }\n    const { searchResult } = substructureSearchBegin(moleculesDB, query);\n    let begin = performance.now();\n    if (searchResult.length === 0) {\n        const queryIndex = query.getIndex();\n        const searcher = moleculesDB.searcher;\n        searcher.setFragment(query, queryIndex);\n        let index = 0;\n        const length = Object.keys(moleculesDB.db).length;\n        for (const idCode in moleculesDB.db) {\n            if (shouldAbort) {\n                throw new AbortError('Query aborted');\n            }\n            const entry = moleculesDB.db[idCode];\n            searcher.setMolecule(entry.molecule, entry.index);\n            if (searcher.isFragmentInMolecule()) {\n                searchResult.push(entry);\n            }\n            if ((onStep || controller) && performance.now() - begin >= interval) {\n                begin = performance.now();\n                if (onStep) {\n                    onStep(index, length);\n                }\n                if (controller && !onStep) {\n                    // eslint-disable-next-line no-await-in-loop\n                    await noWait();\n                }\n            }\n            index++;\n        }\n    }\n    return substructureSearchEnd(searchResult, queryMW);\n}\nfunction similaritySearch(moleculesDB, query) {\n    const queryIndex = query.getIndex();\n    const queryMW = getMW(query);\n    const queryIdCode = query.getIDCode();\n    const searchResult = [];\n    let similarity;\n    for (const idCode in moleculesDB.db) {\n        const entry = moleculesDB.db[idCode];\n        if (entry.idCode === queryIdCode) {\n            similarity = Number.MAX_SAFE_INTEGER;\n        }\n        else {\n            similarity =\n                moleculesDB.OCL.SSSearcherWithIndex.getSimilarityTanimoto(queryIndex, entry.index) *\n                    1000000 -\n                    Math.abs(queryMW - entry.properties.mw) / 10000;\n        }\n        searchResult.push({ similarity, entry });\n    }\n    searchResult.sort((a, b) => {\n        return b.similarity - a.similarity;\n    });\n    return searchResult.map((entry) => entry.entry);\n}\nfunction getMW(query) {\n    const copy = query.getCompactCopy();\n    copy.setFragment(false);\n    return copy.getMolecularFormula().relativeWeight;\n}\nfunction processResult(entries, options = {}) {\n    const { flattenResult = true, keepMolecule = false, limit = Number.MAX_SAFE_INTEGER, } = options;\n    const results = [];\n    if (flattenResult) {\n        for (const entry of entries) {\n            for (const data of entry.data) {\n                const result = {\n                    data,\n                    idCode: entry.idCode,\n                    properties: entry.properties,\n                };\n                if (keepMolecule) {\n                    result.molecule = entry.molecule;\n                }\n                results.push(result);\n            }\n        }\n    }\n    else {\n        for (const entry of entries) {\n            results.push({\n                data: entry.data,\n                idCode: entry.idCode,\n                properties: entry.properties,\n                molecule: keepMolecule ? entry.molecule : undefined,\n            });\n        }\n    }\n    if (limit < results.length)\n        results.length = limit;\n    return results;\n}\n//# sourceMappingURL=search.js.map","let rAtomicNumber = 0;\n/**\n * Returns the atomic number of the X atom\n * @param {import('openchemlib').Molecule} molecule - An instance of a molecule\n * @returns\n */\nexport function getRAtomicNumber(molecule) {\n    if (!rAtomicNumber) {\n        const OCL = molecule.getOCL();\n        rAtomicNumber = OCL.Molecule.getAtomicNoFromLabel('R', OCL.Molecule.cPseudoAtomR);\n    }\n    return rAtomicNumber;\n}\n//# sourceMappingURL=getRAtomicNumber.js.map","/**\n *\n * @param {*} processedMolecules\n * @param {import('openchemlib').Molecule|string} molecule\n * @param {*} options\n * @returns\n */\nexport function checkIfExistsOrAddInfo(processedMolecules, molecule, options) {\n    const { moleculeInfoCallback, asReagent, asProduct } = options;\n    const idCode = typeof molecule === 'string' ? idCode : molecule.getIDCode();\n    if (processedMolecules.has(idCode)) {\n        const entry = processedMolecules.get(idCode);\n        let exists = false;\n        if (asReagent) {\n            if (entry.asReagent) {\n                exists = true;\n            }\n            else {\n                entry.asReagent = true;\n            }\n        }\n        if (asProduct) {\n            if (entry.asProduct) {\n                exists = true;\n            }\n            else {\n                entry.asProduct = true;\n            }\n        }\n        return { exists, info: entry };\n    }\n    else {\n        let info = {\n            idCode,\n            asReagent,\n            asProduct,\n            info: {},\n        };\n        if (moleculeInfoCallback) {\n            info.info = moleculeInfoCallback(molecule);\n        }\n        processedMolecules.set(idCode, info);\n        return { exists: false, info };\n    }\n}\n//# sourceMappingURL=checkIfExistsOrAddInfo.js.map","import { checkIfExistsOrAddInfo } from './checkIfExistsOrAddInfo';\n/**\n * @description apply one reaction to one reactant\n * @param {import('openchemlib').Molecule[]} reactants\n * @param tree\n * @param {Array<object>} reactions - rxnCode of the reaction\n * @param {object} options - options to apply the reaction\n * @param {number} options.currentDepth - current depth of the recursion\n * @param {number} options.maxDepth - max depth of the recursion\n * @param {number} options.maxCurrentDepth - max depth of the recursion for this set of reactions\n * @param {number} options.limitReactions - limit the number of reactions\n * @param {object} options.stats - stats of the recursion\n * @param {number} options.stats.counter - number of reactions\n * @param {Map} options.processedMolecules - set of processed molecules\n * @param {Array} options.trees - array of trees of previous recursions\n * @param {object} options.OCL - OCL object\n * @returns {Array} array of results\n */\nexport function applyOneReactantReactions(tree, reactions, options) {\n    const { currentDepth, maxDepth, maxCurrentDepth, processedMolecules, OCL, logger, } = options;\n    if (tree.molecules.length !== 1) {\n        logger?.warn('applyOneReactantReactions:tree.reactants.length!==1', tree.reactants.length);\n        return [];\n    }\n    const reactant = OCL.Molecule.fromIDCode(tree.molecules[0].idCode);\n    const todoNextDepth = [];\n    // if the current depth is greater than the max depth, we stop the recursion and return an empty array\n    if (currentDepth > maxCurrentDepth || tree.depth >= maxDepth) {\n        return [];\n    }\n    const existsAndInfo = checkIfExistsOrAddInfo(processedMolecules, reactant, {\n        ...options,\n        asReagent: true,\n    });\n    // check if the reactant has already been processed\n    if (existsAndInfo.exists) {\n        return [];\n    }\n    for (const reaction of reactions) {\n        if (options.stats.counter >= options.limitReactions) {\n            return [];\n        }\n        const reactor = new OCL.Reactor(reaction.oclReaction);\n        // isMatching is true if the reactant is matching the reaction else we continue to the next reaction\n        const isMatching = Boolean(reactor.setReactant(0, reactant));\n        if (isMatching) {\n            options.stats.counter++;\n            // get the products of the reaction\n            const oneReactionProducts = reactor.getProducts();\n            for (const oneReactionProduct of oneReactionProducts) {\n                for (const reactionProduct of oneReactionProduct) {\n                    // get the info of the product (idCode, mf)\n                    const productExistsAndInfo = checkIfExistsOrAddInfo(processedMolecules, reactionProduct, { ...options, asProduct: true });\n                    // if the product has not been processed yet, we add it to the list of products and we add it to the list of todoNextDepth\n                    if (!productExistsAndInfo.exists) {\n                        // eslint-disable-next-line no-unused-vars\n                        const { oclReaction, needToBeCharged, ...reactionWithoutOCL } = reaction;\n                        const oneReaction = {\n                            reaction: reactionWithoutOCL,\n                            depth: tree.depth + 1,\n                            isValid: true,\n                            currentDepth,\n                            molecules: [\n                                checkIfExistsOrAddInfo(processedMolecules, reactionProduct, options).info,\n                            ],\n                        };\n                        if (!tree.children)\n                            tree.children = [];\n                        tree.children.push(oneReaction);\n                        todoNextDepth.push(() => {\n                            return applyOneReactantReactions(oneReaction, reactions, {\n                                ...options,\n                                currentDepth: options.currentDepth + 1,\n                            });\n                        });\n                    }\n                }\n            }\n        }\n    }\n    // by returning todoNextDepth, we make sure that the recursion will continue\n    return todoNextDepth;\n}\n//# sourceMappingURL=applyOneReactantReactions.js.map","export function getFilteredTrees(reactions, options = {}) {\n    const { filter = () => true } = options;\n    const nodesToKeep = reactions.getNodes().filter(filter);\n    const parentMap = reactions.getParentMap();\n    for (let currentNode of nodesToKeep) {\n        const parent = parentMap.get(currentNode);\n        if (parent && nodesToKeep.includes(parent) === false) {\n            nodesToKeep.push(parent);\n        }\n    }\n    return getValidChildren(reactions.trees, { nodesToKeep });\n}\nfunction getValidChildren(nodes, options) {\n    const { nodesToKeep } = options;\n    const validNodes = nodes\n        .filter((node) => nodesToKeep.includes(node))\n        .map((node) => ({ ...node }));\n    for (const node of validNodes) {\n        if (node.children) {\n            const validChildren = node.children.filter((child) => nodesToKeep.includes(child));\n            if (validChildren.length > 0) {\n                node.children = getValidChildren(validChildren, { nodesToKeep });\n            }\n            else {\n                delete node.children;\n            }\n        }\n    }\n    return validNodes;\n}\n//# sourceMappingURL=getFilteredTrees.js.map","export function getLeaves(trees) {\n    const leaves = [];\n    for (const tree of trees) {\n        appendLeavesSS(leaves, tree);\n    }\n    return leaves;\n}\nfunction appendLeavesSS(leaves, currentBranch) {\n    if (!currentBranch.children || currentBranch.children.length === 0) {\n        leaves.push(currentBranch);\n        return;\n    }\n    for (const child of currentBranch.children) {\n        appendLeavesSS(leaves, child);\n    }\n}\n//# sourceMappingURL=getLeaves.js.map","export function getNodes(trees) {\n    const nodes = [];\n    for (const tree of trees) {\n        getNodesSS(nodes, tree);\n    }\n    return nodes;\n}\nfunction getNodesSS(nodes, currentBranch) {\n    nodes.push(currentBranch);\n    for (const child of currentBranch?.children || []) {\n        getNodesSS(nodes, child);\n    }\n}\n//# sourceMappingURL=getNodes.js.map","import { appendOCLReaction } from './utils/appendOCLReaction.js';\nimport { applyOneReactantReactions } from './utils/applyOneReactantReactions.js';\nimport { checkIfExistsOrAddInfo } from './utils/checkIfExistsOrAddInfo.js';\nimport { getFilteredTrees } from './utils/getFilteredTrees.js';\nimport { getLeaves } from './utils/getLeaves.js';\nimport { getNodes } from './utils/getNodes.js';\nexport class Reactions {\n    /**\n     *\n     * @param OCL\n     * @param {object} [options={}]\n     * @param {import('cheminfo-types').Logger} logger\n     * @param {number} [options.maxDepth=5]\n     * @param {Function} [options.moleculeInfoCallback]\n     * @param {boolean} [options.skipProcessed=true]\n     */\n    constructor(OCL, options = {}) {\n        this.moleculeInfoCallback = options.moleculeInfoCallback;\n        this.maxDepth = options.maxDepth ?? 5;\n        this.limitReactions = options.limitReactions ?? 200;\n        this.skipProcessed = options.skipProcessed ?? true;\n        this.logger = options.logger;\n        this.processedMolecules = new Map();\n        this.OCL = OCL;\n        this.trees = [];\n        this.moleculeInfo = {}; // a cache containing molecule information like mw, etc.\n    }\n    /**\n     * We need to call this method for all the reactants on which we want to apply the reactions.\n     * If there is only one reactant, we call this method with an array of one reactant.\n     * If there are multiple reactants, we call this method with an array of the reactants.\n     * This method has to be called for all the reactants\n     * @param {import('openchemlib').Molecule[]|string[]} molecules\n     * @param moleculesOrIDCodes\n     */\n    appendHead(moleculesOrIDCodes) {\n        if (!Array.isArray(moleculesOrIDCodes)) {\n            throw new TypeError('reactants must be an array');\n        }\n        const molecules = moleculesOrIDCodes.map((molecule) => checkIfExistsOrAddInfo(this.processedMolecules, molecule, {\n            moleculeInfoCallback: this.moleculeInfoCallback,\n        }).info);\n        const tree = {\n            molecules,\n            depth: 0,\n            isValid: true, // this node could be implied in reactions\n        };\n        this.trees.push(tree);\n    }\n    /**\n     * Returns all the leaves of the trees\n     * @returns\n     */\n    getLeaves() {\n        return getLeaves(this.trees);\n    }\n    /**\n     * Returns all the nodes of the trees\n     * @returns\n     */\n    getNodes() {\n        return getNodes(this.trees);\n    }\n    getParentMap() {\n        const parentMap = new Map();\n        const nodes = this.getNodes();\n        for (const node of nodes) {\n            if (node.children) {\n                for (const child of node.children) {\n                    parentMap.set(child, node);\n                }\n            }\n        }\n        return parentMap;\n    }\n    /**\n     * When applying reactions some branches may be dead because it can not be implied in any reaction.\n     * This is the case when we specify a 'min' reaction depth.\n     * This will returno only the valid nodes\n     * @returns\n     */\n    getValidNodes() {\n        return this.getNodes().filter((node) => node.isValid);\n    }\n    /**\n     *\n     * @param {object} [options={}]\n     * @param {(object):boolean} [options.filter] - a function that will be called for each node and return true if the node should be kept\n     */\n    getFilteredReactions(options = {}) {\n        const filteredReactions = new Reactions();\n        filteredReactions.moleculeInfoCallback = this.moleculeInfoCallback;\n        filteredReactions.maxDepth = this.maxDepth;\n        filteredReactions.limitReactions = this.limitReactions;\n        filteredReactions.skipProcessed = this.skipProcessed;\n        filteredReactions.logger = this.logger;\n        filteredReactions.processedMolecules = this.processedMolecules;\n        filteredReactions.OCL = this.OCL;\n        filteredReactions.moleculeInfo = this.moleculeInfo; // a cache containing molecule information like mw, etc.\n        filteredReactions.trees = getFilteredTrees(this, options);\n        return filteredReactions;\n    }\n    /**\n     *\n     * @param {object[]} reactions - array of reactions that should be applied\n     * @param {object} [options={}]\n     * @param {number} [options.min=0] - min depth of the reaction\n     * @param {number} [options.max=3] - max depth of the reaction\n     */\n    applyOneReactantReactions(reactions, options = {}) {\n        const { min = 0, max = 3 } = options;\n        clearAsFromProcessedMolecules(this.processedMolecules);\n        const nodes = this.getNodes().filter((node) => node.isValid);\n        for (const node of nodes) {\n            node.currentDepth = 0;\n        }\n        reactions = appendOCLReaction(reactions, this.OCL);\n        const stats = { counter: 0 };\n        // Start the recursion by applying the first level of reactions\n        for (const node of nodes) {\n            let todoCurrentLevel = applyOneReactantReactions(node, reactions, {\n                OCL: this.OCL,\n                currentDepth: 1,\n                processedMolecules: this.processedMolecules,\n                moleculeInfoCallback: this.moleculeInfoCallback,\n                maxDepth: this.maxDepth,\n                maxCurrentDepth: max,\n                stats,\n                limitReactions: this.limitReactions,\n            });\n            do {\n                const nexts = [];\n                for (const todo of todoCurrentLevel) {\n                    nexts.push(todo());\n                }\n                todoCurrentLevel = nexts.flat();\n            } while (todoCurrentLevel.length > 0);\n        }\n        const newNodes = this.getNodes().filter((node) => node.isValid);\n        for (const node of newNodes) {\n            if (node.currentDepth < min || node.currentDepth > max) {\n                node.isValid = false;\n            }\n            delete node.currentDepth;\n        }\n    }\n}\nfunction clearAsFromProcessedMolecules(processedMolecules) {\n    for (const [, value] of processedMolecules) {\n        if (value.asReagent) {\n            value.asReagent = false;\n        }\n        if (value.asProduct) {\n            value.asProduct = false;\n        }\n    }\n}\n//# sourceMappingURL=Reactions.js.map","/**\n * @description Append the OCL reaction to the reaction object\n * @param {Array} reactions - array of reactions objects with rxnCode and label\n * @param {typeof import('openchemlib')} OCL - OCL object\n * @param {object} [options={}]\n * @param {import('cheminfo-types').Logger} [options.logger]\n * @returns {Array} array of reactions objects with rxnCode, label and oclReaction (a decoded version of rxnCode reaction)\n */\nexport function appendOCLReaction(reactions, OCL, options = {}) {\n    const { logger } = options;\n    const newReactions = [];\n    for (const reaction of reactions) {\n        if (reaction.rxnCode) {\n            newReactions.push({\n                ...reaction,\n                oclReaction: OCL.ReactionEncoder.decode(reaction.rxnCode),\n            });\n        }\n        else if (logger) {\n            logger.warn(reaction, 'Reaction without rxnCode');\n        }\n    }\n    return newReactions;\n}\n//# sourceMappingURL=appendOCLReaction.js.map","import appendCSV from './utils/appendCSV';\nimport appendColor from './utils/appendColor';\nimport appendEntries from './utils/appendEntries.js';\nimport appendSDF from './utils/appendSDF';\nimport appendSmilesList from './utils/appendSmilesList';\nimport pushEntry from './utils/pushEntry';\nimport pushMoleculeInfo from './utils/pushMoleculeInfo';\nimport { search, searchAsync } from './utils/search';\n/*\n    this.db is an object with properties 'oclID' that has as value\n    an object that contains the following properties:\n    * molecule: an OCL molecule instance\n    * index: OCL index used for substructure searching\n    * properties: all the calculates properties\n    * data: array containing free data associated with this molecule\n  */\nexport class MoleculesDB {\n    /**\n     *\n     * @param {typeof import('openchemlib')} OCL - openchemlib library\n     * @param {object} [options={}] - Options.\n     * @param {boolean} [options.computeProperties=false]\n     * @param {boolean} [options.keepEmptyMolecules=false]\n     */\n    constructor(OCL, options = {}) {\n        const { computeProperties = false, keepEmptyMolecules = false } = options;\n        this.OCL = OCL;\n        this.db = {};\n        this.statistics = null;\n        this.computeProperties = computeProperties;\n        this.keepEmptyMolecules = keepEmptyMolecules;\n        this.searcher = new OCL.SSSearcherWithIndex();\n    }\n    /**\n     * Append an array of entries to the current database. An entry is an object that by default should contain a 'ocl' property containing idCode and optionally index and coordinates\n     * @param {*} moleculesDB\n     * @param {object[]} entries\n     * @param {object} [options={}]\n     * @param {string} [options.idCodePath='ocl.idCode']\n     * @param {string} [options.indexPath='ocl.index']\n     * @param {string} [options.coordinatesPath='ocl.coordinates']\n     * @param {string} [options.mwPath='mw']\n     * @param {string} [options.smilesPath]\n     * @param {string} [options.molfilePath]\n     * @param {Function} [options.onStep] - call back to execute after each molecule\n     */\n    appendEntries(entries, options) {\n        return appendEntries(this, entries, {\n            computeProperties: this.computeProperties,\n            ...options,\n        });\n    }\n    /**\n     * append to the current database a CSV file\n     * @param {string|ArrayBuffer} csv - text file containing the comma separated value file\n     * @param {object} [options={}]\n     * @param {boolean} [options.header=true]\n     * @param {boolean} [options.dynamicTyping=true]\n     * @param {boolean} [options.skipEmptyLines=true]\n     * @param {Function} [options.onStep] - call back to execute after each molecule\n     */\n    appendCSV(csv, options) {\n        return appendCSV(this, csv, {\n            computeProperties: this.computeProperties,\n            ...options,\n        });\n    }\n    /**\n     * Append a SDF to the current database\n     * @param {string|ArrayBuffer} sdf - text file containing the sdf\n     * @param {object} [options={}] - Options.\n     * @param {Function} [options.onStep] - call back to execute after each molecule\n     * @returns {Promise<void>}\n     */\n    appendSDF(sdf, options) {\n        return appendSDF(this, sdf, {\n            computeProperties: this.computeProperties,\n            ...options,\n        });\n    }\n    /**\n     * Append a list of SMILES to the current database.\n     * @param {string|ArrayBuffer} smiles - text file containing a list of smiles\n     * @param {object} [options={}] - Options\n     * @param {Function} [options.onStep] - call back to execute after each molecule\n     * @returns {Promise<void>}\n     */\n    appendSmilesList(smiles, options) {\n        return appendSmilesList(this, smiles, {\n            computeProperties: this.computeProperties,\n            ...options,\n        });\n    }\n    /**\n     * Add a molecule to the current database.\n     * @param {import('openchemlib').Molecule} molecule - The molecule to append.\n     * @param {object} [data={}] - Options.\n     * @param {object} [moleculeInfo={}] - May contain precalculated index and mw.\n     */\n    pushEntry(molecule, data, moleculeInfo) {\n        pushEntry(this, molecule, data, moleculeInfo);\n    }\n    /**\n     * Add an entry in the database.\n     * @param {object} moleculeInfo - a molecule as a JSON that may contain the following properties: molfile, smiles, idCode, mf, index\n     * @param {object} [data={}]\n     */\n    pushMoleculeInfo(moleculeInfo, data) {\n        return pushMoleculeInfo(this, moleculeInfo, data);\n    }\n    /**\n     * Search in a MoleculesDB\n     * Inside the database all the same molecules are group together\n     * @param {string|import('openchemlib').Molecule} [query] - smiles, molfile, idlCode or instance of Molecule to look for\n     * @param {object} [options={}] - Options\n     * @param {'smiles'|'idCode'|'smarts'|'molfile'} [options.format='idCode'] - query format\n     * @param {string} [options.mode='substructure'] - search by 'substructure', 'exact' or 'similarity'\n     * @param {boolean} [options.flattenResult=true] - The database group the data for the same product. This allows to flatten the result\n     * @param {boolean} [options.keepMolecule=false] - keep the OCL.Molecule object in the result\n     * @param {number} [options.limit=Number.MAX_SAFE_INTEGER] - maximal number of result\n     * @returns {Array} array of object of the type {(molecule), idCode, data, properties}\n     */\n    search(query, options) {\n        return search(this, query, options);\n    }\n    /**\n     * Search in a MoleculesDB\n     * Inside the database all the same molecules are group together\n     * @param {string|import('openchemlib').Molecule} [query] - smiles, molfile, idCode or instance of Molecule to look for\n     * @param {object} [options={}] - Options.\n     * @param {'smiles'|'idCode'|'smarts'|'molfile'} [options.format='idCode'] - query format\n     * @param {string} [options.mode='substructure'] - search by 'substructure', 'exact' or 'similarity'\n     * @param {boolean} [options.flattenResult=true] - The database group the data for the same product. This allows to flatten the result\n     * @param {boolean} [options.keepMolecule=false] - keep the OCL.Molecule object in the result\n     * @param {number} [options.limit=Number.MAX_SAFE_INTEGER] - maximal number of result\n     * @param {number} [options.interval=100] - interval in ms to call the onStep callback\n     * @param {Function} [options.onStep] - callback to execute after each interval\n     * @param {AbortController} [options.controler] - callback to execute to check if the search should be aborted\n     * @returns {Promise<Array>} array of object of the type {(molecule), idCode, data, properties}\n     */\n    searchAsync(query, options) {\n        return searchAsync(this, query, options);\n    }\n    /**\n     * Returns an array with the current database\n     * @returns\n     */\n    getDB() {\n        return Object.keys(this.db).map((key) => this.db[key]);\n    }\n    /**\n     * Append the property `data.color` to each entry based on a data or property label\n     * {object} [options={}]\n     * {string} [options.dataLabel] name of the property from `data` to use\n     * {string} [options.propertyLabel] name of the property from `properties` to use\n     * {number} [options.colorLabel='color'] name of the property to add in data that will contain the color\n     * {number} [options.minValue]\n     * {number} [options.maxValue]\n     * {number} [options.minHue=0]\n     * {number} [options.maxHue=360]\n     * {number} [options.saturation=65] percent of color saturation\n     * {number} [options.lightness=65] percent of color lightness\n     * @param options\n     */\n    appendColor(options) {\n        appendColor(this, options);\n    }\n}\n//# sourceMappingURL=MoleculesDB.js.map","import get from 'get-value';\n/**\n * Append an array of entries to the current database. An entry is an object that by default should contain a 'ocl' property containing idCode and optionally index and coordinates\n * @param {*} moleculesDB\n * @param {object[]} entries\n * @param {object} [options={}]\n * @param {string} [options.idCodePath='ocl.idCode']\n * @param {string} [options.indexPath='ocl.index']\n * @param {string} [options.coordinatesPath='ocl.coordinates']\n * @param {string} [options.mwPath='mw']\n * @param {string} [options.smilesPath]\n * @param {string} [options.molfilePath]\n * @param {Function} [options.onStep] - call back to execute after each molecule\n * @returns\n */\nexport default async function appendEntries(moleculesDB, entries, options = {}) {\n    const { onStep, idCodePath = 'ocl.idCode', indexPath = 'ocl.index', coordinatesPath = 'ocl.coordinates', mwPath = 'mw', smilesPath, molfilePath, } = options;\n    const Molecule = moleculesDB.OCL.Molecule;\n    for (let i = 0; i < entries.length; i++) {\n        let idCode;\n        const entry = entries[i];\n        let molecule;\n        if (smilesPath) {\n            molecule = Molecule.fromSmiles(get(entry, smilesPath));\n        }\n        if (molfilePath && !molecule) {\n            molecule = Molecule.fromMolfile(get(entry, molfilePath));\n        }\n        if (!molecule) {\n            idCode = get(entry, idCodePath);\n            if (idCode) {\n                const coordinates = get(entry, coordinatesPath);\n                molecule = Molecule.fromIDCode(idCode, coordinates || false);\n            }\n        }\n        const index = get(entry, indexPath);\n        const mw = get(entry, mwPath);\n        if (onStep) {\n            // eslint-disable-next-line no-await-in-loop\n            await onStep(i + 1, entries.length);\n        }\n        if (!moleculesDB.keepEmptyMolecules &&\n            (!molecule || molecule.getAllAtoms() === 0)) {\n            continue;\n        }\n        else if (!molecule) {\n            molecule = new moleculesDB.OCL.Molecule(0, 0);\n        }\n        if (molecule) {\n            moleculesDB.pushEntry(molecule, entry, { index, mw });\n        }\n    }\n}\n//# sourceMappingURL=appendEntries.js.map","import { ensureString } from 'ensure-string';\nexport default async function appendSmilesList(moleculesDB, text, options = {}) {\n    const { onStep } = options;\n    text = ensureString(text);\n    if (typeof text !== 'string') {\n        throw new TypeError('text must be a string');\n    }\n    const smilesArray = text\n        .split(/\\r?\\n/)\n        .map((line) => line.trim())\n        .filter(Boolean);\n    for (let i = 0; i < smilesArray.length; i++) {\n        const oneSmiles = smilesArray[i];\n        moleculesDB.pushEntry(moleculesDB.OCL.Molecule.fromSmiles(oneSmiles));\n        if (onStep) {\n            // eslint-disable-next-line no-await-in-loop\n            await onStep(i + 1, smilesArray.length);\n        }\n    }\n}\n//# sourceMappingURL=appendSmilesList.js.map","import { v4 } from '@lukeed/uuid';\n/**\n *\n * @param {MoleculesDB} moleculesDB\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} data\n * @param {object} [moleculeInfo]\n * @param {string} [moleculeInfo.idCode]\n * @param {number[]} [moleculeInfo.index]\n */\nexport default function pushEntry(moleculesDB, molecule, data = {}, moleculeInfo = {}) {\n    // the following line could be the source of problems if the idCode version\n    // changes\n    const moleculeIDCode = getMoleculeIDCode(molecule, moleculeInfo);\n    const id = moleculeIDCode || v4();\n    let entry = moleculesDB.db[id];\n    if (!entry) {\n        // a new molecule\n        entry = { molecule, properties: {}, data: [], idCode: moleculeIDCode };\n        moleculesDB.db[id] = entry;\n        // ensure helper arrays needed for substructure search\n        molecule.ensureHelperArrays(moleculesDB.OCL.Molecule.cHelperRings);\n        if (!moleculeInfo.index) {\n            entry.index = molecule.getIndex();\n        }\n        else {\n            entry.index = moleculeInfo.index;\n        }\n        let molecularFormula;\n        if (!moleculeInfo.mw) {\n            molecularFormula = molecule.getMolecularFormula();\n            entry.properties.mw = molecularFormula.relativeWeight;\n        }\n        else {\n            entry.properties.mw = moleculeInfo.mw;\n        }\n        if (moleculesDB.computeProperties) {\n            if (!molecularFormula) {\n                molecularFormula = molecule.getMolecularFormula();\n            }\n            const properties = new moleculesDB.OCL.MoleculeProperties(molecule);\n            entry.properties.em = molecularFormula.absoluteWeight;\n            entry.properties.mf = molecularFormula.formula;\n            entry.properties.acceptorCount = properties.acceptorCount;\n            entry.properties.donorCount = properties.donorCount;\n            entry.properties.logP = properties.logP;\n            entry.properties.logS = properties.logS;\n            entry.properties.polarSurfaceArea = properties.polarSurfaceArea;\n            entry.properties.rotatableBondCount = properties.rotatableBondCount;\n            entry.properties.stereoCenterCount = properties.stereoCenterCount;\n        }\n    }\n    entry.data.push(data);\n}\nfunction getMoleculeIDCode(molecule, moleculeInfo) {\n    let idCode = moleculeInfo.idCode;\n    if (!idCode) {\n        idCode = molecule.getIDCode();\n    }\n    if (idCode === 'd@')\n        return ''; // empty molecule\n    return idCode;\n}\n//# sourceMappingURL=pushEntry.js.map","export default function pushMoleculeInfo(moleculesDB, moleculeInfo, data = {}) {\n    if (typeof moleculeInfo !== 'object') {\n        throw new Error('pushMoleculeInfo requires an object as first parameter');\n    }\n    const Molecule = moleculesDB.OCL.Molecule;\n    let molecule;\n    if (moleculeInfo.molfile) {\n        molecule = Molecule.fromMolfile(moleculeInfo.molfile);\n    }\n    if (moleculeInfo.smiles)\n        molecule = Molecule.fromSmiles(moleculeInfo.smiles);\n    if (moleculeInfo.idCode) {\n        if (moleculesDB.db[moleculeInfo.idCode]) {\n            molecule = moleculesDB.db[moleculeInfo.idCode].molecule;\n        }\n        else {\n            molecule = Molecule.fromIDCode(moleculeInfo.idCode, moleculeInfo.coordinates || false);\n        }\n    }\n    if (molecule) {\n        moleculesDB.pushEntry(molecule, data, moleculeInfo);\n    }\n}\n//# sourceMappingURL=pushMoleculeInfo.js.map","export default function appendColor(moleculesDB, options = {}) {\n    const { dataLabel, propertyLabel, minValue, maxValue, minHue = 0, maxHue = 360, saturation = 65, lightness = 65, colorLabel = 'color', } = options;\n    const db = moleculesDB.getDB();\n    let values;\n    if (dataLabel) {\n        values = db.flatMap((result) => result.data.map((datum) => ({ value: datum[dataLabel], data: datum })));\n    }\n    else if (propertyLabel) {\n        values = db.flatMap((result) => result.data.map((datum) => ({\n            value: result.properties[propertyLabel],\n            data: datum,\n        })));\n    }\n    else {\n        values = db.flatMap((result) => result.data.map((datum) => ({ value: undefined, data: datum })));\n    }\n    if (minValue !== undefined) {\n        for (const value of values) {\n            if (value.value !== undefined && value.value < minValue) {\n                value.value = minValue;\n            }\n        }\n    }\n    if (maxValue !== undefined) {\n        for (const value of values) {\n            if (value.value !== undefined && value.value > maxValue) {\n                value.value = maxValue;\n            }\n        }\n    }\n    const definedValues = values.filter((value) => value.value !== undefined);\n    const min = Math.min(...definedValues.map((value) => value.value));\n    const max = Math.max(...definedValues.map((value) => value.value));\n    for (const value of values) {\n        if (value.value !== undefined) {\n            value.data[colorLabel] = `hsl(${Math.floor(((value.value - min) / (max - min)) * (maxHue - minHue) + minHue)},${saturation}%,${lightness}%)`;\n        }\n        else {\n            value.data.color = 'black';\n        }\n    }\n}\n//# sourceMappingURL=appendColor.js.map","import { getMF } from '../util/getMF';\nimport { getRAtomicNumber } from '../util/getRAtomicNumber.js';\nexport function fragmentAcyclicSingleBonds(molecule) {\n    const OCL = molecule.getOCL();\n    const atoms = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const atom = {};\n        atoms.push(atom);\n        atom.i = i;\n        atom.links = []; // we will store connected atoms of broken bonds\n    }\n    const bonds = [];\n    for (let i = 0; i < molecule.getAllBonds(); i++) {\n        const bond = {};\n        bonds.push(bond);\n        bond.i = i;\n        bond.order = molecule.getBondOrder(i);\n        bond.atom1 = molecule.getBondAtom(0, i);\n        bond.atom2 = molecule.getBondAtom(1, i);\n        bond.type = molecule.getBondType(i);\n        bond.isAromatic = molecule.isAromaticBond(i);\n        bond.isRingBond = molecule.isRingBond(i);\n        if (!bond.isAromatic && (bond.type & 0b11) === 1 && !bond.isRingBond) {\n            bond.selected = true;\n            atoms[bond.atom1].links.push(bond.atom2);\n            atoms[bond.atom2].links.push(bond.atom1);\n        }\n    }\n    const brokenMolecule = molecule.getCompactCopy();\n    for (const bond of bonds) {\n        if (bond.selected) {\n            brokenMolecule.markBondForDeletion(bond.i);\n        }\n    }\n    brokenMolecule.deleteMarkedAtomsAndBonds();\n    const fragmentMap = [];\n    const nbFragments = brokenMolecule.getFragmentNumbers(fragmentMap);\n    const results = [];\n    for (let i = 0; i < nbFragments; i++) {\n        const result = {};\n        result.atomMap = [];\n        const includeAtom = fragmentMap.map((id) => {\n            return id === i;\n        });\n        const fragment = new OCL.Molecule(0, 0);\n        const atomMap = [];\n        brokenMolecule.copyMoleculeByAtoms(fragment, includeAtom, false, atomMap);\n        // we will add some R groups at the level of the broken bonds\n        for (let j = 0; j < atomMap.length; j++) {\n            if (atomMap[j] > -1) {\n                result.atomMap.push(j);\n                if (atoms[j].links.length > 0) {\n                    for (let k = 0; k < atoms[j].links.length; k++) {\n                        fragment.addBond(atomMap[j], fragment.addAtom(getRAtomicNumber(brokenMolecule)), 1);\n                    }\n                }\n            }\n        }\n        fragment.setFragment(false);\n        result.idCode = fragment.getIDCode();\n        result.mf = getMF(fragment).mf.replace(/R[1-9]?/, '');\n        results.push(result);\n    }\n    return results;\n}\n//# sourceMappingURL=fragmentAcyclicSingleBonds.js.map","import { makeRacemic } from '../util/makeRacemic';\nexport function getAtomFeatures(originalMolecule, options = {}) {\n    const OCL = originalMolecule.getOCL();\n    const { sphere = 1 } = options;\n    const fragment = new OCL.Molecule(0, 0);\n    const results = [];\n    for (let rootAtom = 0; rootAtom < originalMolecule.getAllAtoms(); rootAtom++) {\n        let min = 0;\n        let max = 0;\n        const atomMask = new Array(originalMolecule.getAtoms());\n        const atomList = new Array(originalMolecule.getAtoms());\n        const molecule = originalMolecule.getCompactCopy();\n        for (let currentSphere = 0; currentSphere <= sphere; currentSphere++) {\n            if (max === 0) {\n                atomList[max] = rootAtom;\n                atomMask[rootAtom] = true;\n                max++;\n            }\n            else {\n                let newMax = max;\n                for (let i = min; i < max; i++) {\n                    const atom = atomList[i];\n                    for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n                        const connAtom = molecule.getConnAtom(atom, j);\n                        if (!atomMask[connAtom]) {\n                            atomMask[connAtom] = true;\n                            atomList[newMax++] = connAtom;\n                        }\n                    }\n                }\n                min = max;\n                max = newMax;\n            }\n            molecule.copyMoleculeByAtoms(fragment, atomMask, true, null);\n            if (currentSphere === sphere) {\n                makeRacemic(fragment);\n                results.push(fragment.getCanonizedIDCode());\n            }\n        }\n    }\n    const atoms = {};\n    for (const result of results) {\n        if (!atoms[result]) {\n            atoms[result] = 1;\n        }\n        else {\n            atoms[result]++;\n        }\n    }\n    return atoms;\n}\n//# sourceMappingURL=getAtomFeatures.js.map","/**\n * Returns the charge of a molecule\n * @param {import('openchemlib').Molecule} molecule - an instance of OCL.Molecule\n * @returns {number}\n */\nexport function getCharge(molecule) {\n    let charge = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        charge += molecule.getAtomCharge(i);\n    }\n    return charge;\n}\n//# sourceMappingURL=getCharge.js.map","import { getDiastereotopicAtomIDsAndH } from './getDiastereotopicAtomIDsAndH.js';\n/**\n * Parse a molfile and returns an object containing the molecule, the map and the diaIDs\n * The map allows to reload properties assigned to the atom molfile\n * Please take care than numbering of atoms starts at 0 !\n * @param {typeof import('openchemlib')} OCL - openchemlib library\n * @param {string} molfile\n * @returns\n */\nexport function getDiastereotopicAtomIDsFromMolfile(OCL, molfile) {\n    const { map, molecule } = OCL.Molecule.fromMolfileWithAtomMap(molfile);\n    const diaIDsArray = getDiastereotopicAtomIDsAndH(molecule);\n    const diaIDs = {};\n    for (let i = 0; i < map.length; i++) {\n        diaIDs[map[i]] = { source: map[i], destination: i, ...diaIDsArray[i] };\n    }\n    return { map: diaIDs, molecule, diaIDs: diaIDsArray };\n}\n//# sourceMappingURL=getDiastereotopicAtomIDsFromMolfile.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { tagAtom } from '../util/tagAtom';\nimport { getHoseCodesForAtomsInternal } from './getHoseCodesForAtomsInternal.js';\n/**\n * Returns the hose codes for all atoms in the molecule\n * @param {*} molecule\n * @param {object} [options={}]\n * @param {string[]} [options.atomLabels]\n * @param {number} [options.minSphereSize=0]\n * @param {number} [options.maxSphereSize=4]\n * @returns\n */\nexport function getHoseCodes(molecule, options = {}) {\n    const { atomLabels, minSphereSize, maxSphereSize } = options;\n    const { Molecule } = molecule.getOCL();\n    const atomicNumbers = atomLabels?.map((label) => Molecule.getAtomicNoFromLabel(label));\n    const internalMolecule = molecule.getCompactCopy();\n    internalMolecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(internalMolecule);\n    const hoses = [];\n    for (let i = 0; i < internalMolecule.getAllAtoms(); i++) {\n        if (atomicNumbers &&\n            !atomicNumbers.includes(internalMolecule.getAtomicNo(i))) {\n            hoses.push(undefined);\n        }\n        else {\n            const tempMolecule = internalMolecule.getCompactCopy();\n            tagAtom(tempMolecule, i);\n            hoses.push(getHoseCodesForAtomsInternal(tempMolecule, {\n                minSphereSize,\n                maxSphereSize,\n            }));\n        }\n    }\n    return hoses;\n}\n//# sourceMappingURL=getHoseCodes.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { getConnectivityMatrix } from '../util/getConnectivityMatrix.js';\nimport { getSymmetryRanks } from '../util/getSymmetryRanks.js';\nimport { makeRacemic } from '../util/makeRacemic.js';\nimport { tagAtom } from '../util/tagAtom';\nimport { getHoseCodesForAtomsInternal } from './getHoseCodesForAtomsInternal.js';\n/**\n * Returns an object containing a molfile, molfile with hydrogens, hoses codes and optionally the diaIDs\n * and the diaIDs\n * The map allows to reload properties assigned to the atom molfile\n * Please take care than numbering of atoms starts at 0 !\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string[]} [options.atomLabels]\n * @param {boolean} [options.calculateDiastereotopicIDs=true]\n * @param {number} [options.minSphereSize=0]\n * @param {number} [options.maxSphereSize=4]\n * @returns\n */\nexport function getHoseCodesAndInfo(molecule, options = {}) {\n    const { minSphereSize, maxSphereSize, calculateDiastereotopicIDs = true, } = options;\n    const { Molecule } = molecule.getOCL();\n    molecule = molecule.getCompactCopy();\n    // this will force reordering of the hydrogens to the end, just to have the same order as in the molfile\n    molecule.ensureHelperArrays(Molecule.cHelperNeighbours);\n    const newMolfile = molecule.toMolfile();\n    molecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(molecule);\n    molecule.ensureHelperArrays(Molecule.cHelperSymmetryStereoHeterotopicity);\n    const newMolfileWithH = molecule.toMolfile();\n    const symmetryRanks = getSymmetryRanks(molecule);\n    const cache = {};\n    const hoses = [];\n    const diaIDs = [];\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        const rank = symmetryRanks[i];\n        if (rank && cache[rank]) {\n            diaIDs.push(cache[rank].diaID);\n            hoses.push(cache[rank].hose);\n            continue;\n        }\n        const tempMolecule = molecule.getCompactCopy();\n        tagAtom(tempMolecule, i);\n        let diaID;\n        if (calculateDiastereotopicIDs) {\n            makeRacemic(tempMolecule);\n            diaID = tempMolecule.getCanonizedIDCode(Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS);\n            diaIDs.push(diaID);\n        }\n        const hose = getHoseCodesForAtomsInternal(tempMolecule, {\n            minSphereSize,\n            maxSphereSize,\n        });\n        hoses.push(hose);\n        cache[rank] = { diaID, hose };\n    }\n    const distanceMatrix = getConnectivityMatrix(molecule, { pathLength: true });\n    return {\n        molfile: newMolfile,\n        molfileWithH: newMolfileWithH,\n        hoses,\n        diaIDs: calculateDiastereotopicIDs ? diaIDs : undefined,\n        moleculeWithHydrogens: molecule,\n        distanceMatrix,\n    };\n}\n//# sourceMappingURL=getHoseCodesAndInfo.js.map","import { getHoseCodesForAtoms } from './getHoseCodesForAtoms.js';\n/**\n * Returns the hose code for a specific atom number\n * @param {import('openchemlib').Molecule} originalMolecule\n * @param {number} rootAtom\n * @param {object} [options={}]\n * @param {boolean} [options.isTagged] - Specify is the atom is already tagged\n * @param {number} [options.minSphereSize=0] - Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] - Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] - Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtom(originalMolecule, rootAtom, options = {}) {\n    return getHoseCodesForAtoms(originalMolecule, [rootAtom], options);\n}\n//# sourceMappingURL=getHoseCodesForAtom.js.map","import { ensureHeterotopicChiralBonds } from '../diastereotopic/ensureHeterotopicChiralBonds.js';\nimport { getHoseCodesForAtomsInternal } from './getHoseCodesForAtomsInternal.js';\n/**\n * Returns the hose code for a specific marked atom\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} options\n */\nexport function getHoseCodesFromDiastereotopicID(molecule, options = {}) {\n    molecule.addImplicitHydrogens();\n    ensureHeterotopicChiralBonds(molecule);\n    return getHoseCodesForAtomsInternal(molecule, options);\n}\n//# sourceMappingURL=getHoseCodesFromDiastereotopicID.js.map","/**\n * We have 2 molfiles and we would like to map the atom number from one to the other.\n * We expect that both molfiles contain the same atoms that can be in a different order.\n * @param {typeof import('openchemlib')} OCL - openchemlib library\n * @param {string} from\n * @param {string} to\n * @returns {{fromTo: number[], toFrom: number[]}} - fromTo is an array of the same length as the number of atoms in the from molfile. Each element is the index of the corresponding atom in the to molfile. toFrom is the opposite.\n */\nexport function getMolfilesMapping(OCL, from, to) {\n    const { Molecule } = OCL;\n    const fromF = from.replaceAll(' H ', ' X ');\n    const toF = to.replaceAll(' H ', ' X ');\n    // we may ignore mapping because we should not have hydrogens anymore\n    const fromMoleculeF = Molecule.fromMolfile(fromF);\n    const toMoleculeF = Molecule.fromMolfile(toF);\n    if (fromMoleculeF.getIDCode() !== toMoleculeF.getIDCode()) {\n        // only a problem of hydrogens ?\n        const fromMolecule = Molecule.fromMolfile(from);\n        const toMolecule = Molecule.fromMolfile(to);\n        if (fromMolecule.getIDCode() === toMolecule.getIDCode()) {\n            throw new Error('Molecules do not have the same explicit hydrogens');\n        }\n        else {\n            throw new Error('Molecules are different');\n        }\n    }\n    const fromFinalRanks = [...fromMoleculeF.getFinalRanks()];\n    const toFinalRanks = [...toMoleculeF.getFinalRanks()];\n    // need now to create the mapping\n    const fromTo = [];\n    const toFrom = [];\n    for (let i = 0; i < fromFinalRanks.length; i++) {\n        const fromRank = fromFinalRanks[i];\n        const toRank = toFinalRanks.indexOf(fromRank);\n        if (toRank === -1) {\n            throw new Error('Rank not found. This should never happen.');\n        }\n        fromTo[i] = toRank;\n        toFrom[toRank] = i;\n    }\n    return { fromTo, toFrom };\n}\n//# sourceMappingURL=getMolfilesMapping.js.map","import { getNMRHints } from './getNMRHints.js';\n/**\n *\n * @param {import('openchemlib').Molecule} correct\n * @param {import('openchemlib').Molecule} proposed\n * @param {Array} providedHints\n */\nexport function getNextNMRHint(correct, proposed, providedHints) {\n    const hints = getNMRHints(correct, proposed);\n    const possibleHints = hints.filter((possibleHint) => !providedHints.some((providedHint) => possibleHint.hash === providedHint.hash));\n    if (possibleHints.length === 0)\n        return undefined;\n    return {\n        ...possibleHints[0],\n        idCode: proposed.getIDCode(),\n    };\n}\n//# sourceMappingURL=getNextNMRHint.js.map","/**\n * Get the shortest path between each pair of atoms in the molecule\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [opions.fromLabel='H']\n * @param {string} [opions.toLabel='H']\n * @param {string} [opions.maxLength=4]\n * @returns {Array<Array>} A matrix containing on each cell (i,j) the shortest path from atom i to atom j\n */\nexport function getShortestPaths(molecule, options = {}) {\n    const OCL = molecule.getOCL();\n    const { fromLabel = '', toLabel = '', maxLength = 3 } = options;\n    const fromAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(fromLabel);\n    const toAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(toLabel);\n    const nbAtoms = molecule.getAllAtoms();\n    const allShortestPaths = new Array(nbAtoms);\n    for (let i = 0; i < nbAtoms; i++) {\n        allShortestPaths[i] = new Array(nbAtoms);\n    }\n    for (let from = 0; from < nbAtoms; from++) {\n        allShortestPaths[from][from] = [from];\n        for (let to = from + 1; to < nbAtoms; to++) {\n            if ((fromAtomicNumber === 0 ||\n                molecule.getAtomicNo(from) === fromAtomicNumber) &&\n                (toAtomicNumber === 0 || molecule.getAtomicNo(to) === toAtomicNumber)) {\n                const path = [];\n                molecule.getPath(path, from, to, maxLength);\n                if (path.length > 0) {\n                    allShortestPaths[from][to] = path.slice();\n                    allShortestPaths[to][from] = path.reverse();\n                }\n                else {\n                    allShortestPaths[from][to] = null;\n                    allShortestPaths[to][from] = null;\n                }\n            }\n            else {\n                allShortestPaths[from][to] = null;\n                allShortestPaths[to][from] = null;\n            }\n        }\n    }\n    return allShortestPaths;\n}\n//# sourceMappingURL=getShortestPaths.js.map","/**\n * Return the number of Carbonyl groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Carbonyl groups'\n */\nexport function nbCHO(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        // if there is not at least one hydrogen in the carbon atom there can not be a carbonyl group\n        if (molecule.getAtomicNo(i) === 6 && molecule.getAllHydrogens(i) > 0) {\n            let carbonyl = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 8) {\n                    if (molecule.getBondOrder(neighbourBond) === 2) {\n                        // If there is more than one carbonyl group on the same carbon atom they are not counted as carbonyl groups\n                        if (carbonyl) {\n                            carbonyl = false;\n                            break;\n                        }\n                        carbonyl = true;\n                    }\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Carbonyl group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (carbonyl && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbCHO.js.map","/**\n * Return the number of Nitrile groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Nitrile groups'\n */\nexport function nbCN(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === 6) {\n            let cn = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 7 &&\n                    molecule.getBondOrder(neighbourBond) === 3) {\n                    // If there is more than one Nitrile group in the same carbon atome they are not counted as Nitrile groups\n                    if (cn) {\n                        cn = false;\n                        break;\n                    }\n                    cn = true;\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Nitrile group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (cn && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbCN.js.map","/**\n * Return the number of Carboxyl groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Carboxyl groups'\n */\nexport function nbCOOH(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === 6) {\n            let carbonyl = false;\n            let hydroxyl = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 8) {\n                    if (molecule.getBondOrder(neighbourBond) === 1 &&\n                        molecule.getAllHydrogens(neighbourAtom) > 0) {\n                        // If there is more than a Hydroxyl in the same carbon atom it is not couted as Carboxyl group\n                        if (hydroxyl) {\n                            hydroxyl = false;\n                            break;\n                        }\n                        hydroxyl = true;\n                    }\n                    else if (molecule.getBondOrder(neighbourBond) === 2) {\n                        // If there is more than one carbonyl in the same carbon atom it is not count as Carboxyl group\n                        if (carbonyl) {\n                            carbonyl = false;\n                            break;\n                        }\n                        carbonyl = true;\n                    }\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Carboxyl group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (carbonyl && hydroxyl && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbCOOH.js.map","/**\n * Return the number of labile protons being either on O, N, Br, Cl, F, I or S\n * @param {import('openchemlib').Molecule} molecule\n * @param {object} [options={}]\n * @param {Array<number>} [options.atomicNumbers=[7, 8, 9, 16, 17, 35, 53]] - atomic numbers of the labile protons\n * @returns {number} 'Number of labile protons'\n */\nexport function nbLabileH(molecule, options = {}) {\n    const { atomicNumbers = [7, 8, 9, 16, 17, 35, 53] } = options;\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (atomicNumbers.includes(molecule.getAtomicNo(i))) {\n            counter += molecule.getAllHydrogens(i);\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbLabileH.js.map","/**\n * Return the number of Primary amine groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Primary amine groups'\n */\nexport function nbNH2(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === 6) {\n            let amine = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 7 &&\n                    molecule.getBondOrder(neighbourBond) === 1 &&\n                    molecule.getAllHydrogens(neighbourAtom) > 1) {\n                    // If there is more than a Primary amine in the same carbon atom they are not couted as Primary amines groups\n                    if (amine) {\n                        amine = false;\n                        break;\n                    }\n                    amine = true;\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Primary amine group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (amine && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbNH2.js.map","/**\n * Return the number of Hydroxyl groups in a molecule or fragment\n * @param {import('openchemlib').Molecule} molecule\n * @returns {number} 'Number of Hydroxyl groups'\n */\nexport function nbOH(molecule) {\n    let counter = 0;\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        if (molecule.getAtomicNo(i) === 6) {\n            let carbonyl = false;\n            let hydroxyl = false;\n            let carbonOrHydrogen = true;\n            for (let neighbour = 0; neighbour < molecule.getConnAtoms(i); neighbour++) {\n                const neighbourAtom = molecule.getConnAtom(i, neighbour);\n                const neighbourBond = molecule.getConnBond(i, neighbour);\n                if (molecule.getAtomicNo(neighbourAtom) === 8) {\n                    if (molecule.getBondOrder(neighbourBond) === 1 &&\n                        molecule.getAllHydrogens(neighbourAtom) > 0) {\n                        // If there is more than a Hydroxyl in the same carbon atome they are not couted as Hydroxyl groups\n                        if (hydroxyl) {\n                            hydroxyl = false;\n                            break;\n                        }\n                        hydroxyl = true;\n                    }\n                    else if (molecule.getBondOrder(neighbourBond) === 2) {\n                        // If there is Carbonyl group on the same carbon atom it is not couted as Hydroxyl group\n                        carbonyl = true;\n                    }\n                }\n                else if (\n                // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Hydroxyl group\n                molecule.getAtomicNo(neighbourAtom) !== 6 &&\n                    molecule.getAtomicNo(neighbourAtom) !== 1) {\n                    carbonOrHydrogen = false;\n                }\n            }\n            if (!carbonyl && hydroxyl && carbonOrHydrogen)\n                counter++;\n        }\n    }\n    return counter;\n}\n//# sourceMappingURL=nbOH.js.map","import { getCamelCase } from './getCamelCase';\nexport function getParts(text) {\n    const lines = text.split(/\\r?\\n/);\n    const parts = { data: [] };\n    let currentPart = parts.data;\n    let currentLabel = '';\n    for (const line of lines) {\n        if (line.startsWith('</')) {\n            // close existing part\n            if (currentLabel !== line.slice(2, -1)) {\n                throw new Error('This should not happen');\n            }\n            currentLabel = '';\n            currentPart = parts.data;\n        }\n        else if (line.startsWith('<') && !line.includes('=')) {\n            // open new part\n            if (currentLabel) {\n                throw new Error('This should not happen');\n            }\n            currentLabel = line.slice(1, -1);\n            const target = getCamelCase(currentLabel);\n            parts[target] = [];\n            currentPart = parts[target];\n        }\n        else if (currentLabel) {\n            // add line to current part\n            currentPart.push(line);\n        }\n        else {\n            //data lines\n            currentPart.push(line);\n        }\n    }\n    return parts;\n}\n//# sourceMappingURL=getParts.js.map","/**\n * Converts a string to camel case.\n * @param {string} name\n * @returns {string}\n */\nexport function getCamelCase(name) {\n    return name.replaceAll(/[ -][a-z]/g, (string) => string[1].toUpperCase());\n}\n//# sourceMappingURL=getCamelCase.js.map","import { getDiastereotopicAtomIDsAndH } from './getDiastereotopicAtomIDsAndH';\n/**\n * Returns a SVG\n * @param {*} molecule\n * @param {*} [options={}]\n */\nexport function toDiastereotopicSVG(molecule, options = {}) {\n    const { width = 300, height = 200, prefix = 'ocl', heavyAtomHydrogen = false, } = options;\n    let svg = options.svg;\n    let diaIDs = [];\n    const hydrogenInfo = {};\n    for (const line of getDiastereotopicAtomIDsAndH(molecule)) {\n        hydrogenInfo[line.oclID] = line;\n    }\n    if (heavyAtomHydrogen) {\n        for (let i = 0; i < molecule.getAtoms(); i++) {\n            diaIDs.push([]);\n        }\n        const groupedDiaIDs = molecule.getGroupedDiastereotopicAtomIDs();\n        for (const diaID of groupedDiaIDs) {\n            if (hydrogenInfo[diaID.oclID] &&\n                hydrogenInfo[diaID.oclID].nbHydrogens > 0) {\n                for (const atom of diaID.atoms) {\n                    for (const id of hydrogenInfo[diaID.oclID].hydrogenOCLIDs) {\n                        if (!diaIDs[atom * 1].includes(id))\n                            diaIDs[atom].push(id);\n                    }\n                }\n            }\n        }\n    }\n    else {\n        diaIDs = molecule.getDiastereotopicAtomIDs().map((a) => [a]);\n    }\n    if (!svg)\n        svg = molecule.toSVG(width, height, prefix);\n    svg = svg.replaceAll(/Atom:\\d+\"/g, (value) => {\n        const atom = value.replaceAll(/\\D/g, '');\n        return `${value} data-diaid=\"${diaIDs[atom].join(',')}\"`;\n    });\n    return svg;\n}\n//# sourceMappingURL=toDiastereotopicSVG.js.map","import { getDiastereotopicAtomIDsAndH } from '../diastereotopic/getDiastereotopicAtomIDsAndH';\nimport { getGroupedDiastereotopicAtomIDs } from '../diastereotopic/getGroupedDiastereotopicAtomIDs';\nexport function toVisualizerMolfile(molecule, options = {}) {\n    const { diastereotopic, heavyAtomHydrogen } = options;\n    let highlight = [];\n    let atoms = {};\n    if (diastereotopic) {\n        const hydrogenInfo = {};\n        const extendedIDs = getDiastereotopicAtomIDsAndH(molecule);\n        for (const line of extendedIDs) {\n            hydrogenInfo[line.oclID] = line;\n        }\n        const diaIDs = getGroupedDiastereotopicAtomIDs(molecule);\n        for (const diaID of diaIDs) {\n            atoms[diaID.oclID] = diaID.atoms;\n            highlight.push(diaID.oclID);\n            if (heavyAtomHydrogen &&\n                hydrogenInfo[diaID.oclID] &&\n                hydrogenInfo[diaID.oclID].nbHydrogens > 0) {\n                for (const id of hydrogenInfo[diaID.oclID].hydrogenOCLIDs) {\n                    highlight.push(id);\n                    atoms[id] = diaID.atoms;\n                }\n            }\n        }\n    }\n    else {\n        const size = molecule.getAllAtoms();\n        highlight = new Array(size).fill(0).map((a, index) => index);\n        atoms = highlight.map((a) => [a]);\n    }\n    const molfile = {\n        type: 'mol2d',\n        value: molecule.toMolfile(),\n        _highlight: highlight,\n        _atoms: atoms,\n    };\n    return molfile;\n}\n//# sourceMappingURL=toVisualizerMolfile.js.map","import { getImplicitHydrogensCount } from './getImplicitHydrogensCount';\n/**\n * Toggle presence of implicity hydrogens on/off\n * @param molecule\n * @param atomID\n */\nexport function toggleHydrogens(molecule, atomID) {\n    if (getImplicitHydrogensCount(molecule, atomID) === 0) {\n        const atomsToDelete = [];\n        for (let i = 0; i < molecule.getAllConnAtoms(atomID); i++) {\n            const connectedAtom = molecule.getConnAtom(atomID, i);\n            if (molecule.getAtomicNo(connectedAtom) === 1) {\n                atomsToDelete.push(connectedAtom);\n            }\n        }\n        molecule.deleteAtoms(atomsToDelete);\n    }\n    else {\n        molecule.addImplicitHydrogens(atomID);\n    }\n}\n//# sourceMappingURL=toggleHydrogens.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragmentAcyclicBonds = fragmentAcyclicBonds;\nconst mf_parser_1 = require(\"mf-parser\");\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\n/**\n * The function performs the fragmentation of all single linear bonds\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @param {object} [options={}]\n * @param {boolean} [options.calculateHoseCodes=false] - calculating hose code for bonds is quite time consuming\n * @param {string} [options.parentIDCode=molecule.getIDCode()]\n * @returns Results fragmentation of acyclic bonds\n */\nfunction fragmentAcyclicBonds(molecule, options = {}) {\n    const { Molecule } = molecule.getOCL();\n    const { calculateHoseCodes, parentIDCode = molecule.getIDCode() } = options;\n    let atoms = [];\n    // Prepare object with lenght equal to number of atoms\n    for (let i = 0; i < molecule.getAllAtoms(); i++) {\n        let atom = {};\n        atoms.push(atom);\n        atom.i = i;\n        atom.links = [];\n    }\n    let bonds = [];\n    for (let i = 0; i < molecule.getAllBonds(); i++) {\n        let bond = {};\n        // get informations of bonds\n        bond.index = i;\n        bond.order = molecule.getBondOrder(i); // dative, single , double, triple\n        bond.atom1 = molecule.getBondAtom(0, i); // atom 1 index\n        bond.atom2 = molecule.getBondAtom(1, i); // atom 2 index\n        bond.type = molecule.getBondType(i); // cBondTypeSingle,cBondTypeDouble,cBondTypeTriple,cBondTypeDelocalized\n        bond.isAromatic = molecule.isAromaticBond(i);\n        bond.isRingBond = molecule.isRingBond(i);\n        // Mapping of bonds to be fragmented, only if they are single bond not aromatic and cyclic the mapping occurs\n        if (bond.isAromatic ||\n            bond.type > 1 ||\n            bond.isRingBond ||\n            bond.order !== 1) {\n            continue;\n        }\n        else {\n            bond.selected = true;\n            atoms[bond.atom1].links.push(bond.atom2);\n            atoms[bond.atom2].links.push(bond.atom1);\n        }\n        bonds.push(bond);\n    }\n    let brokenMolecule = {};\n    let fragmentMap = [];\n    let nbFragments = [];\n    let results = [];\n    for (let bond of bonds) {\n        if (bond.selected) {\n            // if bond.selected is true (line 46) the molecule will be fragmented\n            brokenMolecule[bond.index] = molecule.getCompactCopy(); // get a copy of the molecule\n            brokenMolecule[bond.index].setAtomCustomLabel(bond.atom1, '*');\n            brokenMolecule[bond.index].setAtomCustomLabel(bond.atom2, '*');\n            brokenMolecule[bond.index].markBondForDeletion(bond.index); //mark bond to be deleted\n            // the function returns an array of map\n            brokenMolecule[bond.index].deleteMarkedAtomsAndBonds(); // delete marked bonds\n        }\n        nbFragments = brokenMolecule[bond.index].getFragmentNumbers(fragmentMap);\n        // only if there are 2 fragments code can continue\n        if (nbFragments === 2) {\n            for (let i = 0; i < nbFragments; i++) {\n                const result = {};\n                if (calculateHoseCodes) {\n                    result.hoses = (0, openchemlib_utils_1.getHoseCodesForAtoms)(molecule, [\n                        bond.atom1,\n                        bond.atom2,\n                    ]);\n                }\n                result.atomMap = [];\n                // assign fragment id to index of for loop\n                let includeAtom = fragmentMap.map((id) => {\n                    return id === i;\n                });\n                let fragment = new Molecule(100, 100);\n                let atomMap = [];\n                brokenMolecule[bond.index].copyMoleculeByAtoms(fragment, includeAtom, false, atomMap);\n                for (let j = 0; j < atomMap.length; j++) {\n                    if (fragment.getAtomCustomLabel(atomMap[j]) === '*') {\n                        result.atomMap.push(j);\n                        if (atoms[j].links.length > 0) {\n                            fragment.addBond(atomMap[j], fragment.addAtom(154));\n                        }\n                    }\n                }\n                fragment.removeAtomCustomLabels();\n                fragment.setFragment(false);\n                result.idCode = fragment.getIDCode();\n                result.parentIDCode = parentIDCode;\n                result.cleavedBonds = [\n                    {\n                        index: bond.index,\n                        order: bond.order,\n                        atom1: bond.atom1,\n                        atom2: bond.atom2,\n                    },\n                ];\n                result.mfInfo = new mf_parser_1.MF((0, openchemlib_utils_1.getMF)(fragment).mf.replace(/R[1-9]?/, '')).getInfo();\n                result.fragmentType = 'acyclic';\n                results.push(result);\n            }\n        }\n    }\n    // sort result in order fragment 1-2; 3-4; ...\n    results = results.sort((a, b) => {\n        return a.mfInfo.monoisotopicMass - b.mfInfo.monoisotopicMass;\n    });\n    return results;\n}\n//# sourceMappingURL=fragmentAcyclicBonds.js.map","\"use strict\";\n/**\n * This function returns ringBond, and object that contains information about the bonds of each ring\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @returns Information of ring bonds for each ring in the molecule\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRingsInfo = getRingsInfo;\nfunction getRingsInfo(molecule) {\n    const ringSet = molecule.getRingSet();\n    let ringBonds = [];\n    // create a new array with the length of the number of bonds in the molecule and fills it with 0\n    let nbRingForBonds = new Array(molecule.getAllBonds()).fill(0);\n    for (let i = 0; i < ringSet.getSize(); i++) {\n        for (let bond of ringSet.getRingBonds(i)) {\n            nbRingForBonds[bond]++;\n        }\n    }\n    for (let i = 0; i < ringSet.getSize(); i++) {\n        ringBonds.push({\n            bonds: ringSet.getRingBonds(i).map((bondIndex) => ({\n                index: bondIndex,\n                ringIndex: i,\n                nbRings: nbRingForBonds[bondIndex], // in how many rings this bond is included\n                order: molecule.getBondOrder(bondIndex),\n                isAromatic: ringSet.isAromatic(i),\n                atom1: molecule.getBondAtom(0, bondIndex),\n                atom2: molecule.getBondAtom(1, bondIndex),\n            })),\n        });\n    }\n    return ringBonds;\n}\n//# sourceMappingURL=getRingsInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFragmentableRings = getFragmentableRings;\nconst getRingsInfo_js_1 = require(\"./getRingsInfo.js\");\n/**\n * This function returns an array of objects with all combination of 2 bonds who can be fragmented in the same ring\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @returns All combination of 2 bonds who can be fragmented in the same ring\n */\nfunction getFragmentableRings(molecule) {\n    let ringsInfo = (0, getRingsInfo_js_1.getRingsInfo)(molecule);\n    let fragmentableRingBonds = [];\n    for (let ring = 0; ring < ringsInfo.length; ring++) {\n        let bonds = ringsInfo[ring].bonds;\n        // we prevent to consecutive bonds to be cleaved\n        for (let first = 0; first < bonds.length; first++) {\n            let end = first === 0 ? bonds.length - 1 : bonds.length;\n            for (let second = first + 2; second < end; second++) {\n                if (bonds[first].order === 1 &&\n                    bonds[second].order === 1 &&\n                    !bonds[first].isAromatic &&\n                    !bonds[second].isAromatic &&\n                    bonds[first].nbRings < 2 &&\n                    bonds[second].nbRings < 2) {\n                    fragmentableRingBonds.push({ bonds: [bonds[first], bonds[second]] });\n                }\n            }\n        }\n    }\n    return fragmentableRingBonds;\n}\n//# sourceMappingURL=getFragmentableRings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragmentRings = fragmentRings;\nconst mf_parser_1 = require(\"mf-parser\");\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\nconst getFragmentableRings_js_1 = require(\"./utils/getFragmentableRings.js\");\n/**\n * The function performs the fragmentation of all single ring bonds not belonging to aromatic rings\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @param {object} [options={}]\n * @param {boolean} [options.calculateHoseCodes=false] - calculating hose code for bonds is quite time consuming\n * @param {string} [options.parentIDCode=molecule.getIDCode()]\n * @returns  Array with results for the fragmentation of ring bonds\n */\nfunction fragmentRings(molecule, options = {}) {\n    const { Molecule } = molecule.getOCL();\n    const { calculateHoseCodes, parentIDCode = molecule.getIDCode() } = options;\n    const fragmentableRingBonds = (0, getFragmentableRings_js_1.getFragmentableRings)(molecule);\n    let fragmentationResults = [];\n    for (let ringBonds of fragmentableRingBonds) {\n        const brokenMolecule = molecule.getCompactCopy();\n        let fragmentMap = [];\n        let atoms = [];\n        let rLinks = {};\n        for (let bond of ringBonds.bonds) {\n            brokenMolecule.markBondForDeletion(bond.index);\n            brokenMolecule.setAtomCustomLabel(bond.atom1, '*');\n            brokenMolecule.setAtomCustomLabel(bond.atom2, '*');\n            atoms.push(bond.atom1, bond.atom2);\n            rLinks[bond.atom1] = bond.atom2;\n            rLinks[bond.atom2] = bond.atom1;\n        }\n        brokenMolecule.deleteMarkedAtomsAndBonds();\n        const nbFragments = brokenMolecule.getFragmentNumbers(fragmentMap);\n        for (let i = 0; i < nbFragments; i++) {\n            const result = {};\n            if (calculateHoseCodes) {\n                result.hoses = (0, openchemlib_utils_1.getHoseCodesForAtoms)(molecule, atoms);\n            }\n            result.atomMap = [];\n            let includeAtom = fragmentMap.map((id) => {\n                return id === i;\n            });\n            let fragment = new Molecule(0, 0);\n            let atomMap = [];\n            brokenMolecule.copyMoleculeByAtoms(fragment, includeAtom, false, atomMap);\n            // if includeAtom has more then 3 true all true should become false and all false should become true\n            for (let j = 0; j < atomMap.length; j++) {\n                if (fragment.getAtomCustomLabel(atomMap[j]) === '*') {\n                    result.atomMap.push(j);\n                    if (rLinks[j] !== undefined) {\n                        fragment.addBond(atomMap[j], fragment.addAtom(154));\n                    }\n                }\n            }\n            fragment.removeAtomCustomLabels();\n            fragment.setFragment(false);\n            //      console.log(fragment.getIDCode(), getMF(fragment).mf);\n            result.idCode = fragment.getIDCode();\n            result.parentIDCode = parentIDCode;\n            result.cleavedBonds = ringBonds.bonds;\n            result.mfInfo = new mf_parser_1.MF((0, openchemlib_utils_1.getMF)(fragment).mf.replace(/R[1-9]?/, '')).getInfo();\n            result.fragmentType = 'cyclic';\n            fragmentationResults.push(result);\n        }\n    }\n    fragmentationResults = fragmentationResults.sort((a, b) => {\n        return a.mfInfo.monoisotopicMass - b.mfInfo.monoisotopicMass;\n    });\n    return fragmentationResults;\n}\n//# sourceMappingURL=fragmentRings.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragment = fragment;\nconst mf_parser_1 = require(\"mf-parser\");\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\nconst fragmentAcyclicBonds_js_1 = require(\"./fragmentAcyclicBonds.js\");\nconst fragmentRings_js_1 = require(\"./fragmentRings.js\");\n/**\n * This function fragment both acyclic and cyclic bonds of the molecule\n * @param {import('openchemlib').Molecule} molecule - The OCL molecule to be fragmented\n * @param {object} [options={}]\n * @param {boolean} [options.calculateHoseCodes=false] - calculating hose code for bonds is quite time consuming\n * @param {boolean} [options.cyclic=true] - calculate cyclic fragmentation\n * @param {boolean} [options.acyclic=true] - calculate acyclic fragmentation\n * @param {boolean} [options.full=true] - calculate the molecular formula of the full molecule\n * @returns {object} In-Silico fragmentation results\n */\nfunction fragment(molecule, options = {}) {\n    const { cyclic = true, acyclic = true, full = true, calculateHoseCodes = false, } = options;\n    const parentIDCode = molecule.getIDCode();\n    let molecularIon = full\n        ? [\n            {\n                idCode: parentIDCode,\n                parentIDCode,\n                mfInfo: new mf_parser_1.MF((0, openchemlib_utils_1.getMF)(molecule).mf).getInfo(),\n                fragmentType: 'molecule',\n            },\n        ]\n        : [];\n    let acyclicBonds = acyclic\n        ? (0, fragmentAcyclicBonds_js_1.fragmentAcyclicBonds)(molecule, { calculateHoseCodes, parentIDCode })\n        : [];\n    let cyclicBonds = cyclic\n        ? (0, fragmentRings_js_1.fragmentRings)(molecule, { calculateHoseCodes, parentIDCode })\n        : [];\n    let result = [...molecularIon, ...acyclicBonds, ...cyclicBonds];\n    return result.sort((a, b) => a.mfInfo.monoisotopicMass - b.mfInfo.monoisotopicMass);\n}\n//# sourceMappingURL=fragment.js.map","/**\n * openchemlib - Manipulate molecules\n * @version v8.19.0\n * @date 2025-03-14T08:06:29.834Z\n * @link https://github.com/cheminfo/openchemlib-js\n * @license BSD-3-Clause\n*/\n(function (root) {\n  'use strict';\n\n  function getExports($wnd) {\n\n    var $doc = $wnd.document;\n    var $gwt = {};\n    var navigator = {\n      userAgent: 'webkit'\n    };\n\n    function noop(){}\n\n    var __gwtModuleFunction = noop;\n    __gwtModuleFunction.__moduleStartupDone = noop;\n    var $sendStats = noop;\n    var $moduleName, $moduleBase;\n\n    // Start GWT code \nvar osb='object',psb='anonymous',qsb='fnStack',rsb='\\n',ssb={4:1,10:1,5:1,8:1},tsb='Unknown',usb='boolean',vsb='number',wsb='string',xsb=2147483647,ysb='For input string: \"',zsb='null',Asb='__noinit__',Bsb={4:1,5:1,8:1},Csb={4:1,15:1,26:1,23:1},Dsb=' (copy)',Esb={4:1,10:1,32:1,5:1,17:1,8:1,30:1},Fsb=65536,Gsb=65535,Hsb=10000,Isb='fromIndex: ',Jsb=' > toIndex: ',Ksb=', toIndex: ',Lsb=', length: ',Msb='Index: ',Nsb=', Size: ',Osb={12:1,4:1,5:1},Psb={4:1},Qsb={7:1,4:1,5:1},Rsb=16777215,Ssb=65280,Tsb=0.30000001192092896,Usb=545460846592,Vsb=4294967296,Wsb=8589934592,Xsb=17179869184,Ysb=34359738368,Zsb=68719476736,$sb=137438953472,_sb=274877906944,atb='<line x1=\"',btb='\" ',ctb='y1=\"',dtb='x2=\"',etb='y2=\"',ftb='stroke=\"',gtb='stroke-width=\"',htb='\" />',itb={11:1,4:1,5:1},jtb=536870912,ktb=2.617993878,ltb=3.665191429,mtb=6.283185307179586,ntb=3.141592653589793,otb=1.5707963267948966,ptb=16384,qtb=4096,rtb={l:0,m:0,h:1},stb={l:0,m:0,h:2},ttb={l:0,m:0,h:4},utb=1920,vtb=1024,wtb=234881024,xtb=167772160,ytb=100663296,ztb=201326592,Atb=114688,Btb=4063232,Ctb=3538944,Dtb=3014656,Etb=2097152,Ftb=393216,Gtb=917504,Htb=1966080,Itb=17042430230528,Jtb=16492674416640,Ktb=15942918602752,Ltb=14843406974976,Mtb=12644383719424,Ntb=8796093022208,Otb=549755813888,Ptb=1649267441664,Qtb=3848290697216,Rtb=8246337208320,Stb=29360128,Ttb=268435456,Utb=8192,Vtb=2048,Wtb=-1.5707963267948966,Xtb=130560,Ytb=6291456,Ztb=1.0471975511965976,$tb=0.5235987755982988,_tb=786432,aub=524288,bub=262144,cub=-16777216,dub=16711680,eub=-32768,fub='<DrawingObject type=\"',gub='><\\/DrawingObject>',hub={4:1,5:1,13:1},iub={4:1,5:1},jub='unsupported atomicNo:',kub=2.8415926535897933,lub={25:1,4:1,10:1,5:1,8:1},mub={4:1,5:1,17:1,8:1},nub={9:1,4:1,5:1},oub=131072,pub={l:6,m:0,h:4},qub=1048576,rub=3221225472,tub={l:0,m:0,h:3},uub=8388608,vub=-65536,wub={33:1,42:1,36:1},xub={4:1,10:1,5:1,17:1,8:1},yub={33:1,42:1,77:1,36:1,72:1},zub={4:1,5:1,33:1,42:1,77:1,18:1,36:1,72:1,108:1},Aub='??',Bub=2013265920,Cub=32505856,Dub=31744,Eub=1.7976931348623157E308,Fub={113:1,4:1,10:1,5:1,17:1,8:1},Gub=33554432,Hub=67108864,Iub=32768,Jub=-131073,Kub=-33554433,Lub=-33292289,Mub=-3.141592653589793,Nub=4194303,Oub=3072,Pub={40:1,4:1,5:1},Qub=0.7853981633974483,Rub=3.061592653589793,Sub=1073741824,Tub=541165879296,Uub={14:1,4:1,5:1,8:1},Vub=281.17,Wub=289.19,Xub=294.21,Yub='0.0000',Zub='M  END\\n',$ub='ATOMS',_ub=-2147483648,avb='M  END',bvb='$$$$',cvb='M  V30 ',dvb='M  V30 COUNTS ',evb=')\\n',fvb='M  V30 MDLV30/STEREL',gvb='M  V30 MDLV30/STERAC',hvb=3.4028234663852886E38,ivb={l:2,m:0,h:4},jvb=4194304,kvb={l:4179966,m:4063288,h:7},lvb={l:4194302,m:4193343,h:7},mvb={126:1,111:1,112:1,4:1,10:1,5:1,8:1},nvb='class=\"event\" ',ovb='opacity=\"0\" />',pvb=\"' position:\",qvb=\"'. Position:\",rvb=1099511627776,svb=2199023255552,tvb=4398046511104,uvb=\"', position:\",vvb='Assignment of aromatic double bonds failed',wvb=2147483646,xvb='Members of ESR groups must only be stereo centers with known configuration.',yvb='Over- or under-specified stereo feature or more than one racemic type bond',zvb='Ambiguous configuration at stereo center because of 2 parallel bonds',Avb={101:1,85:1,27:1,4:1},Bvb=100000,Cvb=3.1415927410125732,Dvb=1.5707963705062866,Evb=0.029999999329447746,Fvb=6.2831854820251465,Gvb=1.9106119871139526,Hvb=2.2639999389648438,Ivb=2.16759991645813,Jvb=2.0662999153137207,Kvb=2.3561999797821045,Lvb=2.2844998836517334,Mvb=1.9106120066311025,Nvb=2.094395160675049,Ovb=0.6000000238418579,Pvb=1.7999999523162842,Qvb=0.05000000074505806,Rvb={4:1,10:1,5:1,8:1,31:1},Svb=0.2617993950843811,Tvb=2.0943951023931953,Uvb=1.2000000476837158,Vvb=1.4299999475479126,Wvb=1.659999966621399,Xvb=1.4600000381469727,Yvb=1.8200000524520874,Zvb=2.4600000381469727,$vb=2.4200000762939453,_vb=2.450000047683716,awb=2.440000057220459,bwb=2.4000000953674316,cwb=2.319999933242798,dwb=2.2899999618530273,ewb=1.8600000143051147,fwb=2.5299999713897705,gwb=2.490000009536743,hwb=2.4700000286102295,iwb=2.880000114440918,jwb=2.9200000762939453,kwb=2.869999885559082,lwb=2.8299999237060547,mwb=2.7899999618530273,nwb=2.809999942779541,owb=2.799999952316284,pwb=3.049999952316284,qwb=1.3300000429153442,rwb=1.600000023841858,swb=1.3899999856948853,twb=1.159999966621399,uwb=1.1100000143051147,vwb=1.0700000524520874,wwb=1.9600000381469727,xwb=1.7100000381469727,ywb=1.3600000143051147,zwb=1.340000033378601,Awb=1.2200000286102295,Bwb=1.2400000095367432,Cwb=1.2100000381469727,Dwb=1.850000023841858,Ewb=1.6299999952316284,Fwb=1.4700000286102295,Gwb=1.2799999713897705,Hwb=1.440000057220459,Iwb=1.399999976158142,Jwb=1.7599999904632568,Kwb=1.7300000190734863,Lwb=1.7200000286102295,Mwb=1.6799999475479126,Nwb=1.690000057220459,Owb=1.6699999570846558,Pwb=1.649999976158142,Qwb=1.7000000476837158,Rwb=1.6200000047683716,Swb=1.3700000047683716,Twb=1.2899999618530273,Uwb=1.4500000476837158,Vwb=1.5700000524520874,Wwb=-0.5235987755982988,Xwb=-1.0471975511965976,Ywb=-0.7853981633974483,Zwb=0.017453292519943295,$wb=0.17453292519943295,_wb=1.0E-4,axb={123:1},bxb=57.29577951308232,cxb=0.021922173386725217,dxb=1.0E-8,exb=2.5120960256267386,fxb=1.0E-5,gxb='MMFF94s+',hxb='nonbonded cutoff',ixb='dielectric constant',jxb='dielectric model',kxb='angle bend',lxb='bond stretch',mxb='electrostatic',nxb='out of plane',oxb='stretch bend',pxb='torsion angle',qxb='van der waals',rxb=0.07000000000000006,sxb=0.1200000000000001,txb=-7.840000000000001,uxb='OCL_RXN_V1.0:',vxb=\"'$MOL' tag not found\",wxb=\"'M  END' not found\",xxb='\\nActelion Java MolfileCreator 2.0\\n\\n  0  0  0  0  0  0              0 V3000\\n',yxb='M  V30 END CTAB',zxb=2475109711874,Axb=2475109711875,Bxb=2887426572290,Cxb=2887426572291,Dxb=2887627898882,Exb=2887627898883,Fxb=2887627997186,Gxb=3437182386178,Hxb=3437182386179,Ixb=3437383712770,Jxb=3437383811074,Kxb=3437652148226,Lxb=3437652377602,Mxb=4674132967426,Nxb=4674334294018,Oxb=4674334392322,Pxb=4674602729474,Qxb=4674602958850,Rxb=5086449827842,Sxb=5086449827848,Txb=5086651154434,Uxb=5086651252738,Vxb=5086651252743,Wxb=5086919589890,Xxb=5086919688194,Yxb=5636406968322,Zxb=5636407066626,$xb=5636675502082,_xb={l:589826,m:590112,h:4},ayb={l:589827,m:590112,h:4},byb={l:589826,m:590160,h:4},cyb={l:589827,m:590160,h:4},dyb={l:688130,m:590160,h:4},eyb={l:589826,m:590224,h:4},fyb={l:589827,m:590224,h:4},gyb={l:819203,m:590224,h:4},hyb={l:589826,m:590368,h:4},iyb={l:688130,m:590368,h:4},jyb={l:819202,m:590368,h:4},kyb={l:819208,m:590368,h:4},lyb={l:589826,m:590416,h:4},myb={l:589832,m:590416,h:4},nyb={l:688130,m:590416,h:4},oyb={l:819202,m:590416,h:4},pyb={l:589826,m:598304,h:4},qyb={l:589827,m:598304,h:4},ryb={l:688130,m:598304,h:4},syb={l:1114114,m:598304,h:4},tyb={l:1212418,m:598304,h:4},uyb={l:589826,m:598308,h:4},vyb={l:589826,m:688416,h:4},wyb={l:589826,m:688464,h:4},xyb={l:589826,m:688720,h:4},yyb={l:688130,m:688720,h:4},zyb={l:589826,m:590112,h:288},Ayb={l:589826,m:590112,h:336},Byb={l:589826,m:688416,h:336},Cyb={l:589826,m:688464,h:336},Dyb={l:688130,m:688464,h:336},Eyb={l:589826,m:590112,h:400},Fyb={l:589826,m:688416,h:400},Gyb={l:589826,m:688464,h:400},Hyb={l:688130,m:688464,h:400},Iyb={l:589826,m:819488,h:400},Jyb={l:589826,m:819536,h:400},Kyb={l:589826,m:819600,h:400},Lyb={l:688130,m:819600,h:400},Myb={l:819202,m:819600,h:400},Nyb={l:589831,m:688416,h:592},Oyb={l:589831,m:688464,h:592},Pyb={l:688135,m:688464,h:592},Qyb={l:589831,m:819536,h:592},Ryb={l:688135,m:819536,h:592},Syb={l:688135,m:819600,h:592},Tyb={l:589832,m:1212704,h:592},Uyb={l:589832,m:1212752,h:592},Vyb={l:688136,m:1212752,h:592},Wyb={l:589831,m:688464,h:656},Xyb={l:589826,m:590112,h:8480},Yyb={l:589826,m:688416,h:8480},Zyb={l:589826,m:688464,h:8480},$yb={l:688130,m:688464,h:8480},_yb={l:819202,m:819600,h:8480},azb={l:688135,m:1212752,h:8480},bzb={l:589832,m:1213008,h:8480},czb={l:688136,m:1213008,h:8480},dzb={l:589826,m:590112,h:8484},ezb={l:589826,m:590160,h:8484},fzb={l:688130,m:598304,h:8484},gzb=0.6262000203132629,hzb=-1.3825000524520874,izb=0.33169999718666077,jzb=-1.4915000200271606,kzb=0.3540000021457672,lzb=0.38179999589920044,mzb=-0.6019999980926514,nzb=-0.7379999756813049,ozb='Atom-types are 64-bit numbers describing atoms and their near surrounding.',pzb='Recognized atom types and their contributions are:',qzb='Druglikeness predictor not properly initialized.',rzb=3.009999990463257,szb=-0.17000000178813934,tzb=-0.1809999942779541,uzb=-0.2029999941587448,vzb=2147483648,wzb='MMFF94',xzb='MMFF94s',yzb='117\\nint,int,int,int,float\\n0,2,0,0,0.020\\n1,2,1,2,0.030\\n1,2,2,2,0.027\\n1,2,2,3,0.026\\n1,2,2,5,0.013\\n1,2,2,37,0.032\\n2,2,2,5,0.013\\n2,2,3,5,0.012\\n2,2,5,5,0.006\\n2,2,5,6,0.027\\n2,2,5,37,0.017\\n2,2,5,40,0.012\\n2,2,5,41,0.008\\n0,3,0,0,0.130\\n1,3,1,7,0.146\\n1,3,2,7,0.138\\n1,3,3,7,0.134\\n1,3,5,7,0.122\\n1,3,6,7,0.141\\n1,3,7,10,0.129\\n1,3,7,37,0.138\\n2,3,5,7,0.113\\n2,3,5,9,0.081\\n2,3,6,7,0.127\\n2,3,7,10,0.116\\n3,3,5,7,0.113\\n3,3,6,7,0.127\\n5,3,5,7,0.103\\n5,3,5,9,0.074\\n5,3,5,54,0.078\\n5,3,6,7,0.119\\n5,3,7,10,0.102\\n5,3,9,40,0.067\\n6,3,7,37,0.127\\n7,3,10,10,0.113\\n7,3,20,20,0.151\\n9,3,40,40,0.057\\n0,8,0,0,0.000\\n0,10,0,0,0.015\\n1,10,1,3,0.015\\n1,10,3,6,0.015\\n1,10,3,28,0.015\\n3,10,3,28,0.015\\n3,10,28,28,0.015\\n0,17,0,0,0.000\\n0,26,0,0,0.000\\n0,30,0,0,0.010\\n5,30,20,30,0.008\\n0,37,0,0,0.035\\n1,37,37,37,0.040\\n2,37,37,37,0.031\\n3,37,37,37,0.027\\n5,37,37,37,0.015\\n5,37,37,38,0.046\\n5,37,37,63,0.008\\n5,37,37,64,0.012\\n5,37,37,69,0.016\\n5,37,38,38,0.084\\n6,37,37,37,0.048\\n15,37,37,37,0.025\\n37,37,37,40,0.046\\n0,39,0,0,0.020\\n1,39,63,63,0.012\\n23,39,63,63,-0.014\\n23,39,63,65,0.021\\n23,39,65,65,0.062\\n0,40,0,0,0.030\\n1,40,28,37,0.030\\n2,40,28,28,0.030\\n3,40,28,28,0.030\\n28,40,28,37,0.030\\n0,41,0,0,0.180\\n1,41,32,32,0.178\\n2,41,32,32,0.161\\n5,41,32,32,0.158\\n0,43,0,0,0.000\\n0,45,0,0,0.150\\n0,49,0,0,0.000\\n50,49,50,50,0.000\\n0,54,0,0,0.020\\n1,54,3,36,0.016\\n3,54,36,36,0.018\\n0,55,0,0,0.020\\n1,55,36,57,0.020\\n36,55,36,57,0.020\\n0,56,0,0,0.020\\n1,56,36,57,0.020\\n36,56,36,57,0.020\\n0,57,0,0,0.080\\n5,57,55,55,0.038\\n56,57,56,56,0.158\\n0,58,0,0,0.025\\n0,63,0,0,0.050\\n5,63,39,64,0.019\\n5,63,39,66,0.068\\n5,63,44,64,0.014\\n5,63,44,66,0.055\\n5,63,59,64,0.033\\n5,63,59,66,0.085\\n37,63,39,64,0.010\\n0,64,0,0,0.040\\n5,64,63,64,0.006\\n5,64,63,66,0.043\\n5,64,64,65,0.052\\n5,64,65,66,0.094\\n37,64,63,64,-0.01\\n0,67,0,0,0.070\\n0,69,0,0,0.070\\n32,69,37,37,0.067\\n0,73,0,0,0.000\\n0,78,0,0,0.045\\n5,78,78,81,0.046\\n0,80,0,0,0.080\\n5,80,81,81,0.057\\n0,81,0,0,0.025\\n36,81,78,80,0.016\\n0,82,0,0,0.000\\n',zzb={140:1,4:1,5:1,8:1},Azb='undefined',Bzb=0.08726646502812703,Czb=0.003921568859368563,Dzb='Too many percent/per mille characters in pattern \"',Ezb=1048575,Fzb=17592186044416,Gzb=1000000000,Hzb=-17592186044416,Izb='CSS1Compat',Jzb=5.56,Kzb=11.12,Lzb=13.34,Mzb=14.44,Nzb=0.3010299956639812,Ozb='BigInteger divide by zero',Pzb=4294967295,Qzb={l:0,m:0,h:524288},Rzb={28:1,96:1},Szb={94:1},Tzb={33:1,42:1,36:1,74:1},Uzb=16777619,Vzb={33:1,36:1,74:1},Wzb='delete',Xzb=15525485,Yzb=5.960464477539063E-8,Zzb=16777216,$zb={4:1,28:1,49:1,69:1},_zb='Invalid UTF8 sequence',aAb=0.20000000298023224,bAb=' distance:',cAb='gGP`@dfyjidNcGI[WQCP`<',dAb={45:1};var Drb={};var Erb={};var Frb={};var Grb={};var Hrb={};var Irb={};var Jrb={};var Krb={};var Lrb={};var Mrb={};var Nrb={};var Orb={};var Prb={};var Qrb={};var Rrb={};var Srb={};var Trb={};var Urb={};var Vrb={};var Wrb={};var Xrb={};var Yrb={};var Zrb={};var $rb={};var _rb={};var asb={};var bsb={};var csb={};var dsb={};var esb={};var fsb={};var gsb={};var hsb={};var isb={};var jsb={};var ksb={};var lsb={};var msb={};var nsb={};var _;var W3;var Q3;var d3=-1;Drb.e3=function e3(){};function V3(a,b){typeof window===osb&&typeof window['$gwt']===osb&&(window['$gwt'][a]=b)}\nfunction U3(b,c,d,e){Drb.T3();var f=Q3;$moduleName=c;$moduleBase=d;d3=e;function g(){for(var a=0;a<f.length;a++){f[a]()}}\nif(b){try{Crb(g)()}catch(a){b(c,a)}}else{Crb(g)()}}\nDrb.T3=function T3(){Q3==null&&(Q3=[])};function S3(){Drb.T3();var a=Q3;for(var b=0;b<arguments.length;b++){a.push(arguments[b])}}\nDrb.R3=function R3(){};function f4(){}\nfunction e4(a){if(Array.isArray(a)&&a.Dc===f4){return Erb.Rc(a)}return a.toString()}\nfunction d4(a,b){var c=$wnd;if(a===''){return c}var d=a.split('.');!(d[0] in c)&&c.execScript&&c.execScript('var '+d[0]);if(b){var e=b.prototype.Bc;e.e=b}for(var f;d.length&&(f=d.shift());){c=c[f]=c[f]||!d.length&&b||{}}return c}\nDrb.c4=function c4(a){function b(){}\n;b.prototype=a||{};return new b};Drb.b4=function b4(a){return a instanceof Array?a[0]:null};function a4(a,b,c){var d=function(){return a.apply(d,arguments)};b.apply(d,c);return d}\nfunction _3(){}\nfunction $3(a,b){for(var c in b){b[c]['configurable']=true}Object.defineProperties(a,b)}\nfunction Z3(a,b,c){var d=W3;var e=d[a];var f=Drb.b4(e);if(e&&!f){_=e}else{_=Drb.Y3(b);_.Cc=c;!b&&(_.Dc=f4);d[a]=_}for(var g=3;g<arguments.length;++g){arguments[g].prototype=_}f&&(_.Bc=f)}\nDrb.Y3=function Y3(a){var b=a&&a.prototype;!b&&(b=W3[a]);return Drb.c4(b)};Drb.X3=function X3(){};$wnd.goog=$wnd.goog||{};$wnd.goog.global=$wnd.goog.global||$wnd;W3={};Erb.Gc=function Gc(a,b){return HY(a)===HY(b)};Erb.Hc=function Hc(a){return a.Bc};Erb.Ic=function Ic(a){return Hrb.$mb(a)};function Jc(){}\nErb.Lc=function Lc(a,b){return EY(a)?Erb.k7(a,b):BY(a)?Erb._5(a,b):AY(a)?Erb.U4(a,b):yY(a)?a.jb(b):vX(a)?Erb.Gc(a,b):Frb.FU(a,b)};Erb.Nc=function Nc(a){return EY(a)?Erb.m7():BY(a)?Erb.a6():AY(a)?Erb.V4():yY(a)?a.Bc:vX(a)?Erb.Hc(a):Frb.GU(a)};Erb.Pc=function Pc(a){return EY(a)?Erb.n7(a):BY(a)?Erb.b6(a):AY(a)?Erb.W4(a):yY(a)?a.lb():vX(a)?Erb.Ic(a):Frb.HU(a)};Erb.Rc=function Rc(a){var b;return Erb.v5(Erb.Nc(a))+'@'+(b=Hrb.rnb(Hrb.qnb(Erb.Pc(a))),b.toString(16))};Z3(1,null,{},Jc);_.jb=function Kc(a){return Erb.Gc(this,a)};_.kb=function Mc(){return Erb.Hc(this)};_.lb=function Oc(){return Erb.Ic(this)};_.mb=function Qc(){var a;return Erb.v5(Erb.Nc(this))+'@'+(a=Hrb.rnb(Hrb.qnb(Erb.Pc(this))),a.toString(16))};_.equals=function(a){return this.jb(a)};_.hashCode=function(){return this.lb()};_.toString=function(){return this.mb()};Frb.FU=function FU(a,b){return Frb.LU(a)?Frb.IU(a,b):HY(a)===HY(b)};Frb.GU=function GU(a){return a.Bc||Array.isArray(a)&&nX(Drb.H_,1)||Drb.H_};Frb.HU=function HU(a){return Frb.MU(a)?Frb.JU(a):Hrb.$mb(a)};Frb.IU=function IU(a,b){return a.equals(b)};Frb.JU=function JU(a){return a.hashCode()};Frb.KU=function KU(){return []};Frb.LU=function LU(a){return !!a&&!!a.equals};Frb.MU=function MU(a){return !!a&&!!a.hashCode};Frb.NU=function NU(a){return a.toString?a.toString():'[JavaScriptObject]'};Grb.oW=function oW(){Grb.oW=_3;var a,b;b=!Grb.xW();a=new Grb.GW;Grb.nW=b?new Grb.yW:a};Grb.pW=function pW(a){Grb.oW();Grb.nW.Xb(a)};Grb.qW=function qW(a){Grb.oW();var b;b=Grb.nW.Yb(a);return Grb.rW(b)};Grb.rW=function rW(a){var b,c,d,e;b='pW';c='Wz';e=$wnd.Math.min(a.length,5);for(d=e-1;d>=0;d--){if(Erb.k7(a[d].d,b)||Erb.k7(a[d].d,c)){a.length>=d+1&&Hrb.rnb(a).splice(0,d+1);break}}return a};Grb.sW=function sW(a){var b=/function(?:\\s+([\\w$]+))?\\s*\\(/;var c=b.exec(a);return c&&c[1]||psb};Grb.tW=function tW(a){Grb.oW();return a&&a[qsb]?a[qsb]:[]};Grb.uW=function uW(a){Grb.oW();return a.name||(a.name=Grb.sW(a.toString()))};Grb.vW=function vW(a){Grb.oW();return parseInt(a)||-1};Grb.wW=function wW(a){Grb.oW();var b=a.backingJsObject;if(b&&b.stack){var c=b.stack;var d=b+rsb;c.substring(0,d.length)==d&&(c=c.substring(d.length));return c.split(rsb)}return []};Grb.xW=function xW(){if(Error.stackTraceLimit>0){$wnd.Error.stackTraceLimit=Error.stackTraceLimit=64;return true}return 'stack' in new Error};Z3(376,1,{});Grb.yW=function yW(){};Z3(255,376,{},Grb.yW);_.Xb=function zW(a){var b={};var c=[];a[qsb]=c;var d=arguments.callee.caller;while(d){var e=Grb.uW(d);c.push(e);var f=':'+e;var g=b[f];if(g){var h,i;for(h=0,i=g.length;h<i;h++){if(g[h]===d){return}}}(g||(b[f]=[])).push(d);d=d.caller}};_.Yb=function AW(a){var b,c,d,e;d=Grb.tW(a);c=Frb.QV(d);e=tX(Drb.x0,ssb,75,c,0,1);for(b=0;b<c;b++){e[b]=new Erb.$6(Frb.PV(d,b),null,-1)}return e};Grb.BW=function BW(a,b){var c,d,e,f,g,h,i,j,k;j='';if(Hrb.rnb(b).length==0){return a.Zb(tsb,psb,-1,-1)}k=Erb.y7(b);Erb.k7(Hrb.rnb(k).substr(0,3),'at ')&&(k=(Hrb.mnb(3,Hrb.rnb(k).length+1),Hrb.rnb(k).substr(3)));k=Grb.CW(k);g=Hrb.rnb(k).indexOf('(');if(g==-1){g=Hrb.rnb(k).indexOf('@');if(g==-1){j=k;k=''}else{j=Erb.y7((Hrb.mnb(g+1,Hrb.rnb(k).length+1),Hrb.rnb(k).substr(g+1)));k=Erb.y7((Hrb.lnb(0,g,Hrb.rnb(k).length),Hrb.rnb(k).substr(0,g)))}}else{c=Hrb.rnb(k).indexOf(')',g);j=(Hrb.lnb(g+1,c,Hrb.rnb(k).length),Hrb.rnb(k).substr(g+1,c-(g+1)));k=Erb.y7((Hrb.lnb(0,g,Hrb.rnb(k).length),Hrb.rnb(k).substr(0,g)))}g=Erb.o7(k,A7(46));g!=-1&&(k=(Hrb.mnb(g+1,Hrb.rnb(k).length+1),Hrb.rnb(k).substr(g+1)));(Hrb.rnb(k).length==0||Erb.k7(k,'Anonymous function'))&&(k=psb);h=Erb.r7(j,A7(58));e=Erb.s7(j,A7(58),h-1);i=-1;d=-1;f=tsb;if(h!=-1&&e!=-1){f=(Hrb.lnb(0,e,Hrb.rnb(j).length),Hrb.rnb(j).substr(0,e));i=Grb.vW((Hrb.lnb(e+1,h,Hrb.rnb(j).length),Hrb.rnb(j).substr(e+1,h-(e+1))));d=Grb.vW((Hrb.mnb(h+1,Hrb.rnb(j).length+1),Hrb.rnb(j).substr(h+1)))}return a.Zb(f,k,i,d)};Grb.CW=function CW(a){return a.replace(/\\[.*?\\]/g,'')};Z3(377,376,{});_.Xb=function DW(a){};_.Zb=function EW(a,b,c,d){return new Erb.$6(b,a+'@'+d,c<0?-1:c)};_.Yb=function FW(a){var b,c,d,e,f,g;e=Grb.wW(a);f=tX(Drb.x0,ssb,75,0,0,1);b=0;d=Frb.QV(e);if(d==0){return f}g=Grb.BW(this,Frb.PV(e,0));Erb.k7(g.d,psb)||(f[b++]=g);for(c=1;c<d;c++){f[b++]=Grb.BW(this,Frb.PV(e,c))}return f};Grb.GW=function GW(){};Z3(256,377,{},Grb.GW);_.Zb=function HW(a,b,c,d){return new Erb.$6(b,a,-1)};Drb.mX=function mX(a){return a};function nX(a,b){return Drb.oX(a,b)}\nDrb.oX=function oX(a,b){return Erb.G5(a,b)};Drb.pX=function pX(a){return a.__elementTypeCategory$==null?10:a.__elementTypeCategory$};Drb.qX=function qX(a){return a.__elementTypeId$};function rX(a,b,c,d,e,f){return Drb.sX(a,b,c,d,e,0,f)}\nDrb.sX=function sX(a,b,c,d,e,f,g){var h,i,j,k,l;k=e[f];j=f==g-1;h=j?d:0;l=Drb.uX(h,k);d!=10&&BX(nX(a,g-f),b[f],c[f],h,l);if(!j){++f;for(i=0;i<k;++i){Drb.wX(l,i,Drb.sX(a,b,c,d,e,f,g))}}return l};function tX(a,b,c,d,e,f){var g;g=Drb.uX(e,d);e!=10&&BX(nX(a,f),b,c,e,g);return g}\nDrb.uX=function uX(a,b){var c=new Array(b);var d;switch(a){case 14:case 15:d=0;break;case 16:d=false;break;default:return c;}for(var e=0;e<b;++e){c[e]=d}return c};function vX(a){return Array.isArray(a)&&a.Dc===f4}\nDrb.wX=function wX(a,b,c){return a[b]=c};function xX(a,b,c){return Drb.wX(a,b,c)}\nDrb.yX=function yX(a,b){a.Bc=b};Drb.zX=function zX(a,b){a.__elementTypeCategory$=b};Drb.AX=function AX(a,b){a.__elementTypeId$=b};function BX(a,b,c,d,e){Drb.yX(e,a);e.Cc=b;e.Dc=f4;Drb.AX(e,c);Drb.zX(e,d);return e}\nDrb.CX=function CX(a,b){Drb.pX(b)!=10&&BX(Erb.Nc(b),b.Cc,Drb.qX(b),Drb.pX(b),a);return Drb.mX(a)};function xY(a,b){if(EY(a)){return !!wY[b]}else if(a.Cc){return !!a.Cc[b]}else if(BY(a)){return !!vY[b]}else if(AY(a)){return !!uY[b]}return false}\nfunction yY(a){return !Array.isArray(a)&&a.Dc===f4}\nfunction zY(a,b){return a!=null&&xY(a,b)}\nfunction AY(a){return typeof a===usb}\nfunction BY(a){return typeof a===vsb}\nfunction CY(a){return a!=null&&Drb.FY(a)&&!(a.Dc===f4)}\nfunction DY(a,b){return Drb.GY(a,b)}\nfunction EY(a){return typeof a===wsb}\nDrb.FY=function FY(a){return typeof a===osb||typeof a==='function'};Drb.GY=function GY(a,b){return a&&b&&a instanceof b};function HY(a){return a==null?null:a}\nfunction IY(a){return Math.max(Math.min(a,xsb),-2147483648)|0}\nvar uY;var vY;var wY;Drb.f3=function f3(a){return a&&a.__java$exception};function g3(a){var b;if(zY(a,23)){return a}b=Drb.f3(a);if(!b){b=new Frb.FV(a);Grb.pW(b)}return b}\nfunction h3(a){return a.backingJsObject}\nfunction x4(a){var b;if(a==null){return false}b=typeof(a);return Erb.k7(b,usb)||Erb.k7(b,vsb)||Erb.k7(b,wsb)||a.$implements__java_io_Serializable||Array.isArray(a)}\nfunction R5(a){var b;b=typeof(a);if(Erb.k7(b,usb)||Erb.k7(b,vsb)||Erb.k7(b,wsb)){return true}return a!=null&&a.$implements__java_lang_Comparable}\nErb.Q4=function Q4(){Erb.Q4=_3;P4=Hrb.rnb(false);Hrb.rnb(true)};Erb.R4=function R4(a){return Hrb.snb((Hrb.gnb(a),a))};Erb.S4=function S4(a,b){return Y4(Hrb.snb((Hrb.gnb(a),a)),Hrb.snb((Hrb.gnb(b),b)))};Erb.T4=function T4(a,b){return Erb.S4(a,b)};Erb.U4=function U4(a,b){return Hrb.gnb(a),HY(a)===HY(b)};Erb.V4=function V4(){return Drb.f0};Erb.W4=function W4(a){return Hrb.snb((Hrb.gnb(a),a))?1231:1237};function X4(a){Erb.Q4();return Erb.k7(usb,typeof(a))}\nfunction Y4(a,b){Erb.Q4();return a==b?0:a?1:-1}\nErb.Z4=function Z4(a,b){Erb.Q4();return EY(a)?Erb.d7(a,b):BY(a)?Erb.Z5(a,b):AY(a)?Erb.T4(a,b):a.rb(b)};uY={4:1,249:1,28:1};var P4;function $4(a){if(Erb.k7(typeof(a),wsb)){return true}return a!=null&&a.$implements__java_lang_CharSequence}\nErb.t5=function t5(a){a.i=s5++};Erb.u5=function u5(a){if(a.n!=null){return}Erb.K5(a)};Erb.v5=function v5(a){Erb.u5(a);return a.n};Erb.w5=function w5(a){return (a.f&4)!=0};Erb.x5=function x5(a){return (a.f&1)!=0};Erb.y5=function y5(){Erb.t5(this);this.n=null;this.j=null;this.g=null;this.d=null;this.b=null;this.k=null;this.a=null};Erb.A5=function A5(a){var b;b=new Erb.y5;b.n='Class$'+(a?'S'+a:''+b.i);b.b=b.n;b.j=b.n;return b};function B5(a){var b;b=Erb.A5(a);Erb.O5(a,b);return b}\nfunction C5(a,b){var c;c=Erb.A5(a);Erb.O5(a,c);c.f=b?8:0;return c}\nfunction D5(){var a;a=Erb.A5(null);a.f=2;return a}\nfunction E5(a){var b;b=Erb.A5(a);b.k=a;b.f=1;return b}\nErb.G5=function G5(a,b){var c=a.a=a.a||[];return c[b]||(c[b]=a.$b(b))};function I5(a){if(a.dc()){return null}var b=a.k;return W3[b]}\nErb.K5=function K5(a){if(a.cc()){var b=a.c;b.dc()?(a.n='['+b.k):!b.cc()?(a.n='[L'+b.ac()+';'):(a.n='['+b.ac());a.b=b._b()+'[]';a.j=b.bc()+'[]';return}var c=a.g;var d=a.d;d=d.split('/');a.n=Erb.N5('.',[c,Erb.N5('$',d)]);a.b=Erb.N5('.',[c,Erb.N5('.',d)]);a.j=d[d.length-1]};Erb.N5=function N5(a,b){var c=0;while(!b[c]||b[c]==''){c++}var d=b[c++];for(;c<b.length;c++){if(!b[c]||b[c]==''){continue}d+=a+b[c]}return d};Erb.O5=function O5(a,b){var c;if(!a){return}b.k=a;var d=I5(b);if(!d){W3[a]=[b];return}d.Bc=b};Z3(173,1,{},Erb.y5);_.$b=function z5(a){var b;b=new Erb.y5;b.f=4;a>1?(b.c=Erb.G5(this,a-1)):(b.c=this);return b};_._b=function F5(){Erb.u5(this);return this.b};_.ac=function H5(){return Erb.v5(this)};_.bc=function J5(){Erb.u5(this);return this.j};_.cc=function L5(){return Erb.w5(this)};_.dc=function M5(){return Erb.x5(this)};_.mb=function P5(){return ((this.f&2)!=0?'interface ':(this.f&1)!=0?'':'class ')+(Erb.u5(this),this.n)};_.f=0;_.i=0;var s5=1;Erb.T5=function T5(a){return Erb.k7(vsb,typeof(a))||DY(a,$wnd.java.lang.Number$impl)};Erb.U5=function U5(a){Erb.S5==null&&(Erb.S5=new RegExp('^\\\\s*[+-]?(NaN|Infinity|((\\\\d+\\\\.?\\\\d*)|(\\\\.\\\\d+))([eE][+-]?\\\\d+)?[dDfF]?)\\\\s*$'));if(!Erb.S5.test(a)){throw h3(new Erb.Z6(ysb+a+'\"'))}return parseFloat(a)};Erb.V5=function V5(a,b,c){var d,e,f,g,h;if(a==null){throw h3(new Erb.Z6(zsb))}f=Hrb.rnb(a).length;g=f>0&&(Hrb.mnb(0,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(0)==45||(Hrb.mnb(0,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(0)==43))?1:0;for(d=g;d<f;d++){if(e5((Hrb.mnb(d,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(d)))==-1){throw h3(new Erb.Z6(ysb+a+'\"'))}}h=parseInt(a,10);e=h<b;if(isNaN(h)){throw h3(new Erb.Z6(ysb+a+'\"'))}else if(e||h>c){throw h3(new Erb.Z6(ysb+a+'\"'))}return h};Erb.W5=function W5(a){return BY(a)?Erb.$5(a):a.ec()};Erb.X5=function X5(a){return BY(a)?Erb.c6(a):a.fc()};Z3(104,1,{4:1,104:1});Erb.Y5=function Y5(a,b){return e6(Hrb.tnb((Hrb.gnb(a),a)),Hrb.tnb((Hrb.gnb(b),b)))};Erb.Z5=function Z5(a,b){return Erb.Y5(a,b)};Erb.$5=function $5(a){return Hrb.tnb((Hrb.gnb(a),a))};Erb._5=function _5(a,b){return Hrb.gnb(a),HY(a)===HY(b)};Erb.a6=function a6(){return Drb.i0};Erb.b6=function b6(a){return IY(Hrb.tnb((Hrb.gnb(a),a)))};Erb.c6=function c6(a){return IY(Hrb.tnb((Hrb.gnb(a),a)))};function d6(a){return Erb.k7(vsb,typeof(a))}\nfunction e6(a,b){if(a<b){return -1}if(a>b){return 1}if(a==b){return a==0?e6(1/a,1/b):0}return isNaN(a)?isNaN(b)?0:1:-1}\nfunction f6(a){if(isNaN(a)){return {l:0,m:0,h:524160}}return Hrb.nnb(a)}\nvY={4:1,28:1,250:1,104:1};Erb.Dz=function Dz(a){a.g=tX(Drb.x0,ssb,75,0,0,1)};Erb.Ez=function Ez(a){Grb.pW(a)};Erb.Fz=function Fz(a){return Grb.qW(a)};Erb.Gz=function Gz(a){if(a.j){a.backingJsObject!==Asb&&a.Kb();a.g=null}return a};Erb.Hz=function Hz(a){return a.e};Erb.Iz=function Iz(d,b){if(b instanceof Object){try{b.__java$exception=d;if(navigator.userAgent.toLowerCase().indexOf('msie')!=-1&&$doc.documentMode<9){return}var c=d;Object.defineProperties(b,{cause:{get:function(){var a=c.Ib();return a&&a.Gb()}},suppressed:{get:function(){return c.Hb()}}})}catch(a){}}};Erb.Jz=function Jz(a,b,c){var d,e,f,g,h;String.fromCharCode(10);Erb.Kz(a);for(e=(a.i==null&&(a.i=tX(Drb.C0,ssb,23,0,0,1)),a.i),f=0,g=e.length;f<g;++f){d=e[f];Erb.Jz(d,b,'\\t'+c)}h=a.e;!!h&&Erb.Jz(h,b,c)};Erb.Kz=function Kz(a){var b,c,d;for(b=(a.g==null&&(a.g=Erb.Fz(a)),a.g),c=0,d=b.length;c<d;++c){String.fromCharCode(10)}};Erb.Lz=function Lz(a,b){a.backingJsObject=b;Erb.Iz(a,b)};Erb.Mz=function Mz(a){return Erb.Nz(a,a.Jb())};Erb.Nz=function Nz(a,b){var c;c=Erb.v5(a.Bc);return b==null?c:c+': '+b};Erb.Oz=function Oz(){Erb.Dz(this);Erb.Gz(this);this.Kb()};Erb.Pz=function Pz(a){Erb.Dz(this);this.f=a;Erb.Gz(this);this.Kb()};Erb.Rz=function Rz(b){if(!('stack' in b)){try{throw b}catch(a){}}return b};function Xz(a){var b;if(a!=null){b=a.__java$exception;if(b){return b}}return DY(a,TypeError)?new Erb.W6(a):new Erb.xV(a)}\nZ3(23,1,{4:1,23:1});_.Fb=function Qz(a){return new Error(a)};_.Gb=function Sz(){return this.backingJsObject};_.Hb=function Tz(){var a,b,c;c=(this.i==null&&(this.i=tX(Drb.C0,ssb,23,0,0,1)),this.i);b=tX(Drb.v0,Bsb,1,c.length,5,1);for(a=0;a<c.length;a++){b[a]=c[a].backingJsObject}return b};_.Ib=function Uz(){return Erb.Hz(this)};_.Jb=function Vz(){return this.f};_.Kb=function Wz(){Erb.Lz(this,Erb.Rz(this.Fb(Erb.Nz(this,this.f))));Erb.Ez(this)};_.mb=function Yz(){return Erb.Mz(this)};_.backingJsObject=Asb;_.j=true;Erb.Zz=function Zz(){Erb.Oz.call(this)};Erb.$z=function $z(a){Erb.Dz(this);Erb.Gz(this);this.backingJsObject=a;Erb.Iz(this,a);this.f=a==null?zsb:e4(a)};Erb._z=function _z(a){Erb.Pz.call(this,a)};Z3(15,23,{4:1,15:1,23:1},Erb._z);Erb.aA=function aA(){Erb.Zz.call(this)};Erb.bA=function bA(a){Erb.$z.call(this,a)};Erb.cA=function cA(a){Erb._z.call(this,a)};Z3(26,15,Csb);Erb.L4=function L4(){Erb.aA.call(this)};Erb.M4=function M4(a){Erb.cA.call(this,a)};Z3(68,26,Csb,Erb.L4,Erb.M4);Erb.wV=function wV(){Erb.aA.call(this)};Erb.xV=function xV(a){Erb.bA.call(this,a)};Erb.yV=function yV(a){Erb.cA.call(this,a)};Z3(109,26,Csb,Erb.xV);Erb.V6=function V6(){Erb.wV.call(this)};Erb.W6=function W6(a){Erb.xV.call(this,a)};Erb.X6=function X6(a){Erb.yV.call(this,a)};Z3(63,109,Csb,Erb.V6,Erb.W6,Erb.X6);_.Fb=function Y6(a){return new TypeError(a)};Erb.c7=function c7(a,b){Hrb.mnb(b,Hrb.rnb(a).length);return Hrb.rnb(a).charCodeAt(b)};Erb.d7=function d7(a,b){return Erb.e7(a,b)};Erb.e7=function e7(a,b){var c,d;c=Erb.$5(Hrb.rnb(a));d=Erb.$5(Hrb.rnb(b));return c==d?0:c<d?-1:1};Erb.f7=function f7(a,b){return Erb.e7(Hrb.rnb(a).toLowerCase(),Hrb.rnb(b).toLowerCase())};Erb.g7=function g7(a,b){return Hrb.gnb(a),a+(''+(Hrb.gnb(b),b))};Erb.h7=function h7(a){var b;return Erb.D7(Hrb.Smb(a,0,(b=a.length,Hrb.Pmb(),b)))};Erb.i7=function i7(a){return Erb.D7(Hrb.Smb(a,0,a.length))};Erb.j7=function j7(a){var b;b=Hrb.rnb(Dsb).length;return Erb.k7(Hrb.rnb(a).substr(Hrb.rnb(a).length-b,b),Dsb)};Erb.k7=function k7(a,b){return Hrb.gnb(a),HY(a)===HY(b)};Erb.l7=function l7(a,b){Hrb.gnb(a);if(b==null){return false}if(Erb.k7(a,b)){return true}return Hrb.rnb(a).length==Hrb.rnb(b).length&&Erb.k7(Hrb.rnb(a).toLowerCase(),Hrb.rnb(b).toLowerCase())};Erb.m7=function m7(){return Drb.B0};Erb.n7=function n7(a){var b,c;b=0;for(c=0;c<Hrb.rnb(a).length;c++){b=(b<<5)-b+(Hrb.mnb(c,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(c))|0}return b};Erb.o7=function o7(a,b){return Hrb.rnb(a).indexOf(b)};Erb.p7=function p7(a,b,c){return Hrb.rnb(a).indexOf(b,c)};function q7(a){return Erb.k7(wsb,typeof(a))}\nErb.r7=function r7(a,b){return Hrb.rnb(a).lastIndexOf(b)};Erb.s7=function s7(a,b,c){return Hrb.rnb(a).lastIndexOf(b,c)};Erb.t7=function t7(a,b){var c;c=Erb.u7(b,'([/\\\\\\\\\\\\.\\\\*\\\\+\\\\?\\\\|\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}$^])','\\\\\\\\$1');return Erb.u7(a,c,'')};Erb.u7=function u7(a,b,c){c=Erb.C7(c);return Hrb.rnb(a).replace(new RegExp(b,'g'),c)};Erb.v7=function v7(a,b){var c,d,e,f,g,h,i,j;c=new RegExp(b,'g');i=tX(Drb.B0,Esb,2,0,6,1);d=0;j=a;f=null;while(true){h=c.exec(j);if(h==null||j==''){i[d]=j;break}else{g=h.index;i[d]=(Hrb.lnb(0,g,Hrb.rnb(j).length),Hrb.rnb(j).substr(0,g));j=Erb.x7(j,g+Hrb.rnb(Hrb.rnb(h)[0]).length,Hrb.rnb(j).length);c.lastIndex=0;if(f==j){i[d]=(Hrb.lnb(0,1,Hrb.rnb(j).length),Hrb.rnb(j).substr(0,1));j=(Hrb.mnb(1,Hrb.rnb(j).length+1),Hrb.rnb(j).substr(1))}f=j;++d}}if(Hrb.rnb(a).length>0){e=i.length;while(e>0&&i[e-1]==''){--e}e<i.length&&(Hrb.rnb(i).length=e)}return i};Erb.w7=function w7(a,b){Hrb.mnb(b,Hrb.rnb(a).length+1);return Hrb.rnb(a).substr(b)};Erb.x7=function x7(a,b,c){Hrb.lnb(b,c,Hrb.rnb(a).length);return Hrb.rnb(a).substr(b,c-b)};Erb.y7=function y7(a){var b,c,d;c=Hrb.rnb(a).length;d=0;while(d<c&&(Hrb.mnb(d,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(d)<=32)){++d}b=c;while(b>d&&(Hrb.mnb(b-1,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(b-1)<=32)){--b}return d>0||b<c?(Hrb.lnb(d,b,Hrb.rnb(a).length),Hrb.rnb(a).substr(d,b-d)):a};Erb.z7=function z7(a){return String.fromCharCode.apply(null,a)};function A7(a){var b,c;if(a>=Fsb){b=55296+(a-Fsb>>10&1023)&Gsb;c=56320+(a-Fsb&1023)&Gsb;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&Gsb)}}\nErb.B7=function B7(a){var b,c,d,e,f;f=new Krb.ejb;for(c=a,d=0,e=c.length;d<e;++d){b=c[d];!f.a?(f.a=new Erb.U7(f.d)):Erb.P7(f.a,f.b);Erb.O7(f.a,b)}return !f.a?f.c:Hrb.rnb(f.e).length==0?f.a.a:f.a.a+(''+f.e)};Erb.C7=function C7(a){var b;b=0;while(0<=(b=Hrb.rnb(a).indexOf('\\\\',b))){Hrb.mnb(b+1,Hrb.rnb(a).length);Hrb.rnb(a).charCodeAt(b+1)==36?(a=(Hrb.lnb(0,b,Hrb.rnb(a).length),Hrb.rnb(a).substr(0,b)+'$'+Erb.w7(a,++b))):(a=(Hrb.lnb(0,b,Hrb.rnb(a).length),Hrb.rnb(a).substr(0,b)+(''+Erb.w7(a,++b))))}return a};Erb.D7=function D7(a){return Erb.E7(a,0,a.length)};\nErb.E7=function E7(a,b,c){var d,e,f,g;f=b+c;Hrb.lnb(b,f,a.length);g='';for(e=b;e<f;){d=$wnd.Math.min(e+Hsb,f);g+=Erb.z7(Hrb.rnb(a).slice(e,d));e=d}return g};wY={4:1,175:1,28:1,2:1};Erb.V7=function V7(a){Erb.M4.call(this,a)};Z3(196,68,Csb,Erb.V7);Hrb.Emb=function Emb(a){var b;b=Hrb.rnb(a).slice();return Hrb.Omb(b,a)};Hrb.Fmb=function Fmb(a,b,c,d,e,f){var g,h,i,j,k;if(e==0){return}if(HY(a)===HY(c)){a=Hrb.rnb(a).slice(b,b+e);b=0}i=Hrb.rnb(c);for(h=b,j=b+e;h<j;){g=$wnd.Math.min(h+Hsb,j);e=g-h;k=Hrb.rnb(a).slice(h,g);Hrb.rnb(k).splice(0,0,Hrb.rnb(d),Hrb.rnb(f?e:0));Array.prototype.splice.apply(i,k);h=g;d+=e}};Hrb.Gmb=function Gmb(a,b){return Hrb.Omb(new Array(b),a)};Hrb.Hmb=function Hmb(a,b,c){Hrb.rnb(a).splice(b,0,c)};Hrb.Imb=function Imb(a,b,c){Hrb.Fmb(c,0,a,b,c.length,false)};Hrb.Jmb=function Jmb(a,b){Hrb.rnb(a).push(b)};Hrb.Kmb=function Kmb(a,b){Hrb.rnb(a).push(b)};Hrb.Lmb=function Lmb(a,b,c){Hrb.rnb(a).splice(b,c)};Hrb.Mmb=function Mmb(a,b){Hrb.rnb(a).length=b};Hrb.Nmb=function Nmb(a,b){Hrb.rnb(a).sort(b)};Z3(429,1,{});Hrb.Xmb=function Xmb(){};Hrb.Ymb=function Ymb(a){switch(typeof(a)){case wsb:return Erb.n7(Hrb.rnb(a));case vsb:return Erb.b6(Hrb.rnb(a));case usb:return Erb.W4(Hrb.rnb(a));default:return a==null?0:Hrb.$mb(a);}};Hrb.Zmb=function Zmb(){return ++Hrb.Wmb};Hrb.$mb=function $mb(a){return a.$H||(a.$H=Hrb.Zmb())};Z3(374,1,{},Hrb.Xmb);Hrb.Wmb=0;Hrb._mb=function _mb(a){if(!a){throw h3(new Erb.h6)}};Hrb.anb=function anb(a,b){if(!a){throw h3(new Erb.i6(b))}};Hrb.bnb=function bnb(a,b,c){if(a>b){throw h3(new Erb.i6(Isb+a+Jsb+b))}if(a<0||b>c){throw h3(new Erb.O4(Isb+a+Ksb+b+Lsb+c))}};Hrb.cnb=function cnb(a){if(a<0){throw h3(new Erb.U6('Negative array size: '+a))}};Hrb.dnb=function dnb(a,b){if(a!=b){throw h3(new Krb.qhb)}};Hrb.enb=function enb(a){if(!a){throw h3(new Krb.Jib)}};Hrb.fnb=function fnb(a,b){if(a<0||a>=b){throw h3(new Erb.M4(Msb+a+Nsb+b))}};Hrb.gnb=function gnb(a){if(a==null){throw h3(new Erb.V6)}return a};Hrb.hnb=function hnb(a,b){if(a==null){throw h3(new Erb.X6(b))}};Hrb.inb=function inb(a,b){if(a<0||a>b){throw h3(new Erb.M4(Msb+a+Nsb+b))}};Hrb.jnb=function jnb(a,b,c){if(a<0||b>c){throw h3(new Erb.M4(Isb+a+Ksb+b+', size: '+c))}if(a>b){throw h3(new Erb.i6(Isb+a+Jsb+b))}};Hrb.knb=function knb(a){if(!a){throw h3(new Erb.j6)}};Hrb.lnb=function lnb(a,b,c){if(a<0||b>c||b<a){throw h3(new Erb.V7(Isb+a+Ksb+b+Lsb+c))}};Hrb.mnb=function mnb(a,b){if(a<0||a>=b){throw h3(new Erb.V7(Msb+a+Nsb+b))}};Hrb.nnb=function nnb(a){var b,c;b=new ArrayBuffer(8);Hrb.rnb(new Float64Array(b))[0]=a;c=Hrb.rnb(new Uint32Array(b));return Hrb.unb(c[0]|0,c[1]|0)};Hrb.onb=function onb(a,b){return a[b]};Hrb.pnb=function pnb(a){return a===undefined};Hrb.qnb=function qnb(a){return a>>>0};Hrb.rnb=function rnb(a){return a};Hrb.snb=function snb(a){return a};Hrb.tnb=function tnb(a){return a};Z3(375,1,{});Drb.v0=B5(1);Drb.H_=B5(0);Drb.O_=B5(376);Drb.L_=B5(255);Drb.N_=B5(377);Drb.M_=B5(256);Drb.f0=B5(249);Drb.h0=B5(173);Drb.u0=B5(104);Drb.i0=B5(250);Drb.C0=B5(23);Drb.k0=B5(15);Drb.w0=B5(26);Drb.n0=B5(68);Drb.p0=B5(109);Drb.s0=B5(63);Drb.B0=B5(2);Drb.A0=B5(196);Drb.y2=B5(374);Drb.z2=B5(375);Irb.Sc=function Sc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q;this.c=a.length;this.d=a[0].length;G=$wnd.Math.min(this.c,this.d);this.e=tX(Drb.LY,Osb,6,$wnd.Math.min(this.c+1,this.d),15,1);this.a=rX(Drb.LY,[ssb,Osb],[12,6],15,[this.c,G],2);this.b=rX(Drb.LY,[ssb,Osb],[12,6],15,[this.d,this.d],2);e=tX(Drb.LY,Osb,6,this.d,15,1);Q=tX(Drb.LY,Osb,6,this.c,15,1);D=$wnd.Math.min(this.c-1,this.d);F=$wnd.Math.max(0,$wnd.Math.min(this.d-2,this.c));for(v=0;v<$wnd.Math.max(D,F);v++){if(v<D){this.e[v]=0;for(l=v;l<this.c;l++){this.e[v]=Irb.Tc(this.e[v],a[l][v])}if(this.e[v]!=0){a[v][v]<0&&(this.e[v]=-this.e[v]);for(k=v;k<this.c;k++){a[k][v]/=this.e[v]}a[v][v]+=1}this.e[v]=-this.e[v]}for(q=v+1;q<this.d;q++){if(v<D&this.e[v]!=0){P=0;for(l=v;l<this.c;l++){P+=a[l][v]*a[l][q]}P=-P/a[v][v];for(k=v;k<this.c;k++){a[k][q]+=P*a[k][v]}}e[q]=a[v][q]}if(true&v<D){for(k=v;k<this.c;k++){this.a[k][v]=a[k][v]}}if(v<F){e[v]=0;for(l=v+1;l<this.d;l++){e[v]=Irb.Tc(e[v],e[l])}if(e[v]!=0){e[v+1]<0&&(e[v]=-e[v]);for(m=v+1;m<this.d;m++){e[m]/=e[v]}e[v+1]+=1}e[v]=-e[v];if(v+1<this.c&e[v]!=0){for(m=v+1;m<this.c;m++){Q[m]=0}for(r=v+1;r<this.d;r++){for(n=v+1;n<this.c;n++){Q[n]+=e[r]*a[n][r]}}for(s=v+1;s<this.d;s++){P=-e[s]/e[v+1];for(n=v+1;n<this.c;n++){a[n][s]+=P*Q[n]}}}for(k=v+1;k<this.d;k++){this.b[k][v]=e[k]}}}H=$wnd.Math.min(this.d,this.c+1);D<this.d&&(this.e[D]=a[D][D]);this.c<H&&(this.e[H-1]=0);F+1<H&&(e[F]=a[F][H-1]);e[H-1]=0;for(t=D;t<G;t++){for(k=0;k<this.c;k++){this.a[k][t]=0}this.a[t][t]=1}for(w=D-1;w>=0;w--){if(this.e[w]!=0){for(p=w+1;p<G;p++){P=0;for(l=w;l<this.c;l++){P+=this.a[l][w]*this.a[l][p]}P=-P/this.a[w][w];for(m=w;m<this.c;m++){this.a[m][p]+=P*this.a[m][w]}}for(n=w;n<this.c;n++){this.a[n][w]=-this.a[n][w]}this.a[w][w]=1+this.a[w][w];for(k=0;k<w-1;k++){this.a[k][w]=0}}else{for(k=0;k<this.c;k++){this.a[k][w]=0}this.a[w][w]=1}}for(A=this.d-1;A>=0;A--){if(A<F&e[A]!=0){for(p=A+1;p<G;p++){P=0;for(l=A+1;l<this.d;l++){P+=this.b[l][A]*this.b[l][p]}P=-P/this.b[A+1][A];for(m=A+1;m<this.d;m++){this.b[m][p]+=P*this.b[m][A]}}}for(k=0;k<this.d;k++){this.b[k][A]=0}this.b[A][A]=1}I=H-1;o=0;h=$wnd.Math.pow(2,-52);while(H>0){for(u=H-2;u>=-1;u--){if(u==-1){break}if($wnd.Math.abs(e[u])<=h*($wnd.Math.abs(this.e[u])+$wnd.Math.abs(this.e[u+1]))){e[u]=0;break}}if(u==H-2){B=4}else{for(C=H-1;C>=u;C--){if(C==u){break}P=(C!=H?$wnd.Math.abs(e[C]):0)+(C!=u+1?$wnd.Math.abs(e[C-1]):0);if($wnd.Math.abs(this.e[C])<=h*P){this.e[C]=0;break}}if(C==u){B=3}else if(C==H-1){B=1}else{B=2;u=C}}++u;switch(B){case 1:{i=e[H-2];e[H-2]=0;for(p=H-2;p>=u;p--){P=Irb.Tc(this.e[p],i);d=this.e[p]/P;M=i/P;this.e[p]=P;if(p!=u){i=-M*e[p-1];e[p-1]=d*e[p-1]}for(k=0;k<this.d;k++){P=d*this.b[k][p]+M*this.b[k][H-1];this.b[k][H-1]=-M*this.b[k][p]+d*this.b[k][H-1];this.b[k][p]=P}}}break;case 2:{i=e[u-1];e[u-1]=0;for(p=u;p<H;p++){P=Irb.Tc(this.e[p],i);d=this.e[p]/P;M=i/P;this.e[p]=P;i=-M*e[p];e[p]=d*e[p];for(k=0;k<this.c;k++){P=d*this.a[k][p]+M*this.a[k][u-1];this.a[k][u-1]=-M*this.a[k][p]+d*this.a[k][u-1];this.a[k][p]=P}}}break;case 3:{J=$wnd.Math.max($wnd.Math.max($wnd.Math.max($wnd.Math.max($wnd.Math.abs(this.e[H-1]),$wnd.Math.abs(this.e[H-2])),$wnd.Math.abs(e[H-2])),$wnd.Math.abs(this.e[u])),$wnd.Math.abs(e[u]));N=this.e[H-1]/J;O=this.e[H-2]/J;g=e[H-2]/J;L=this.e[u]/J;f=e[u]/J;b=((O+N)*(O-N)+g*g)/2;c=N*g*(N*g);K=0;if(b!=0|c!=0){K=$wnd.Math.sqrt(b*b+c);b<0&&(K=-K);K=c/(b+K)}i=(L+N)*(L-N)+K;j=L*f;for(p=u;p<H-1;p++){P=Irb.Tc(i,j);d=i/P;M=j/P;p!=u&&(e[p-1]=P);i=d*this.e[p]+M*e[p];e[p]=d*e[p]-M*this.e[p];j=M*this.e[p+1];this.e[p+1]=d*this.e[p+1];for(l=0;l<this.d;l++){P=d*this.b[l][p]+M*this.b[l][p+1];this.b[l][p+1]=-M*this.b[l][p]+d*this.b[l][p+1];this.b[l][p]=P}P=Irb.Tc(i,j);d=i/P;M=j/P;this.e[p]=P;i=d*e[p]+M*this.e[p+1];this.e[p+1]=-M*e[p]+d*this.e[p+1];j=M*e[p+1];e[p+1]=d*e[p+1];if(p<this.c-1){for(k=0;k<this.c;k++){P=d*this.a[k][p]+M*this.a[k][p+1];this.a[k][p+1]=-M*this.a[k][p]+d*this.a[k][p+1];this.a[k][p]=P}}}e[H-2]=i;o=o+1}break;case 4:{if(this.e[u]<=0){this.e[u]=this.e[u]<0?-this.e[u]:0;for(k=0;k<=I;k++){this.b[k][u]=-this.b[k][u]}}while(u<I){if(this.e[u]>=this.e[u+1]){break}P=this.e[u];this.e[u]=this.e[u+1];this.e[u+1]=P;if(u<this.d-1){for(k=0;k<this.d;k++){P=this.b[k][u+1];this.b[k][u+1]=this.b[k][u];this.b[k][u]=P}}if(u<this.c-1){for(k=0;k<this.c;k++){P=this.a[k][u+1];this.a[k][u+1]=this.a[k][u];this.a[k][u]=P}}++u}o=0;--H}}}};Irb.Tc=function Tc(a,b){var c;if($wnd.Math.abs(a)>$wnd.Math.abs(b)){c=b/a;c=$wnd.Math.abs(a)*$wnd.Math.sqrt(1+c*c)}else if(b!=0){c=a/b;c=$wnd.Math.abs(b)*$wnd.Math.sqrt(1+c*c)}else{c=0}return c};Z3(171,1,Psb,Irb.Sc);_.c=0;_.d=0;Drb.PY=B5(171);Jrb.Vc=function Vc(){Jrb.Vc=_3;Jrb.Uc=BX(nX(Drb.NY,1),Qsb,6,15,[0,Rsb,14286847,13402367,12779264,16758197,9474192,3166456,16715021,9494608,11789301,11230450,9109248,12560038,15780000,16744448,16777008,2093087,8442339,9388244,4062976,15132390,12567239,10921643,9083335,10255047,14706227,15765664,5296208,13140019,8224944,12750735,6721423,12419299,16752896,10889513,6076625,7351984,Ssb,9764863,9756896,7586505,5551541,3907230,2396047,687500,27013,12632256,16767375,10909043,6717568,10380213,13924864,9699476,4366000,5707663,51456,7394559,16777159,14286791,13107143,10747847,9437127,6422471,4587463,3211207,2097095,65436,58997,54354,48952,43812,5096191,5089023,2200790,2522539,2516630,1528967,13684960,16765219,12105936,10900557,5724513,10375093,11230208,7688005,4358806,4325478,32000,7384058,47871,41471,36863,33023,27647,5528818,7888099,9064419,10565332,11739092,11739066,11734438,12389767,13041766,13369433,13697103,14221381,14680120,15073326,15400998,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13158600,1334015,56540,15075850,15132160,56540,15075850,15461355,8553170,1016335,1016335,1334015,15132160,3289770,14456450,16422400,16422400,11819700,3289770,1016335])};Jrb.Wc=function Wc(a){a.v=new Wrb.KG};Jrb.Xc=function Xc(a){var b,c;if((a.F&32)!=0)return;c=Jrb.ru(a.K);if(c!=null){if(a.w.a==0&&a.w.b==0){b=a.Q.c*Jrb.Ek(a.K);a.v=Jrb.Qd(a);Jrb.gd(a,b);Jrb.Nd(a,null,b,0)}Jrb.at(a,IY(a.A));a.K.O!=1&&Jrb.Od(a,448);Jrb.Ws(a,c,a.w.a,a.w.b+Tsb*a.A)}};Jrb.Yc=function Yc(a,b){return a==null?b:b==null?a:a+','+b};Jrb.Zc=function Zc(a){var b;b=a.Q.c*(a.r!=0?a.r:Jrb.Ek(a.K));a.X=b*0.06;a.S=b*0.15;a.R=b*0.38;a.V=b*0.47;a.W=IY(b*a.I*0.6+0.5);a.U=b*0.12;a.Y=b*0.4;a.A=b*0.5+0.5};Jrb.$c=function $c(a){var b,c;a=j3(a,Usb);for(c=0;c<(Vrb.AG(),Vrb.zG).length;c++)if(t3(a,Vrb.zG[c]))return Vrb.yG[c];b=new Erb.U7('R');E3(j3(a,Vsb),0)&&(b.a+='0',b);E3(j3(a,Wsb),0)&&(b.a+='3',b);E3(j3(a,Xsb),0)&&(b.a+='4',b);E3(j3(a,Ysb),0)&&(b.a+='5',b);E3(j3(a,Zsb),0)&&(b.a+='6',b);E3(j3(a,$sb),0)&&(b.a+='7',b);E3(j3(a,_sb),0)&&(b.a+='8',b);return b.a};Jrb._c=function _c(a,b,c,d){var e,f,g;e=new Jrb.Wd;f=new Jrb.Wd;e.a=b.a;e.c=b.c;e.b=(b.a+b.b)/2;e.d=(b.c+b.d)/2;f.a=e.b;f.c=e.d;f.b=b.b;f.d=b.d;if(Jrb.Kd(a,e)){Jrb.Od(a,a.p[c]);g=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.a),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,g)}if(Jrb.Kd(a,f)){Jrb.Od(a,a.p[d]);g=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(f.a),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(f.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(f.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(f.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,g)}Jrb.Od(a,a.P)};Jrb.ad=function ad(a,b,c,d){var e,f,g,h,i,j,k,l,m;l=(b.b-b.a)/10;m=(b.d-b.c)/10;e=new Jrb.Wd;if(Jrb.ml(a.K,Jrb.Dn(a.K,c,d))){f=-3;g=-3}else{f=a.p[c];g=a.p[d]}Jrb.Od(a,f);e.a=b.a;e.c=b.c;e.b=b.a+l*2;e.d=b.c+m*2;i=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.a),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,i);e.a=b.a+l*4;e.c=b.c+m*4;e.b=b.a+l*5;e.d=b.c+m*5;j=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.a),gsb.xab)))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,j);Jrb.Od(a,g);e.a=b.a+l*5;e.c=b.c+m*5;e.b=b.a+l*6;e.d=b.c+m*6;k=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.a),gsb.xab)))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,k);e.a=b.a+l*8;e.c=b.c+m*8;e.b=b.b;e.d=b.d;h=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.a),gsb.xab)))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,h);Jrb.Od(a,a.P)};Jrb.bd=function bd(a,b,c){Jrb.Xs(a,b-a.U/2,c-a.U/2,a.U)};Jrb.cd=function cd(a,b,c,d){var e;if(Jrb.ml(a.K,Jrb.Dn(a.K,c,d))){Jrb.Od(a,-3);e=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.a),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,e);Jrb.Od(a,a.P)}else if(a.p[c]!=a.p[d]){Jrb._c(a,b,c,d)}else if(a.p[c]!=0){Jrb.Od(a,a.p[c]);e=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.a),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,e);Jrb.Od(a,a.P)}else{e=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.a),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,e)}};Jrb.dd=function dd(a,b,c,d,e,f,g){g.a=b.a+e;g.c=b.c+f;g.b=b.b+e;g.d=b.d+f;Jrb.cd(a,g,c,d)};Jrb.ed=function ed(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p;l=b.b-b.a;o=b.d-b.c;i=$wnd.Math.sqrt(l*l+o*o);j=2*N3(u3($wnd.Math.round(i/(4*a.X))));m=l/(j-1);p=o/(j-1);if(Jrb.ml(a.K,Jrb.Dn(a.K,c,d))){e=-3;f=-3}else{e=a.p[c];f=a.p[d]}k=b.a-a.X/2;n=b.c-a.X/2;Jrb.Od(a,e);for(h=0;h<(j/2|0);h++){Jrb.Xs(a,k,n,a.X);k+=m;n+=p}Jrb.Od(a,f);for(g=0;g<(j/2|0);g++){Jrb.Xs(a,k,n,a.X);k+=m;n+=p}Jrb.Od(a,a.P)};Jrb.fd=function fd(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;i=(b.c-b.d)/9;n=(b.b-b.a)/9;j=b.b+i;o=b.d+n;k=b.b-i;p=b.d-n;l=(b.a+j)/2;q=(b.c+o)/2;m=(b.a+k)/2;r=(b.c+p)/2;g=new Wrb.FG(3);h=new Wrb.FG(4);Wrb.EG(g,b.a,b.c);Wrb.EG(g,l,q);Wrb.EG(g,m,r);Wrb.EG(h,m,r);Wrb.EG(h,l,q);Wrb.EG(h,j,o);Wrb.EG(h,k,p);if(Jrb.ml(a.K,Jrb.Dn(a.K,c,d))){e=-3;f=-3}else{e=a.p[c];f=a.p[d];if(a.K.O!=1){f=Jrb.jd(a,c);e==Jrb.nk(a.K,c)&&(e=f)}}Jrb.Od(a,e);Jrb.Vs(a,g);Jrb.Od(a,f);Jrb.Vs(a,h);Jrb.Od(a,a.P)};Jrb.gd=function gd(a,b){var c,d;for(d=0;d<a.Z.a.length;d++)a.v=Wrb.JG(a.v,Krb.Ji(a.Z,d));Jrb.hd(a,b);c=0.1*b;a.v.c-=c;a.v.d-=c;a.v.b+=2*c;a.v.a+=2*c};Jrb.hd=function hd(a,b){var c,d,e,f,g,h,i;e=tX(Drb.c3,itb,6,a.K.q,16,1);for(d=0;d<a.K.r;d++){if(Jrb.kl(a.K,d)){e[Jrb.Ik(a.K,0,d)]=true;e[Jrb.Ik(a.K,1,d)]=true}}g=new Wrb.KG;for(c=0;c<a.K.q;c++){f=E3(j3(Jrb.yk(a.K,c),jtb),0)?b*0.47:e[c]?b*0.38:0;if(f!=0){h=Jrb.Qh(a.Q,Jrb.Ak(a.K,c));i=Jrb.Rh(a.Q,Jrb.Bk(a.K,c));Wrb.IG(g,h-f,i-f,f*2,f*2);a.v=Wrb.JG(a.v,g)}}};Jrb.jd=function jd(a,b){var c,d;if((a.F&4224)!=0)return a.p[b];d=Jrb.kd(a,b);if(d==-1){c=Jrb.ln(a.K,b);if(c!=-1){b=c;d=Jrb.kd(a,b)}}if(d==-1)return a.p[b];switch(d&255){case 1:return 384;case 2:return 64;default:return 448;}};Jrb.kd=function kd(a,b){var c,d,e;e=-1;d=-1;if((a.F&128)!=0)return e;if(Jrb.il(a.K,b)){e=Jrb.rk(a.K,b);d=Jrb.qk(a.K,b)}c=Jrb.nn(a.K,b);if(c!=-1){e=Jrb.Nk(a.K,c);d=Jrb.Mk(a.K,c)}e!=-1&&e!=0&&(e|=d<<8);return e};Jrb.ld=function ld(a){var b,c,d,e,f;Jrb.$s(a,2*a.R);e=new Jrb.Wd;for(d=0;d<a.K.r;d++){b=Jrb.Ik(a.K,0,d);c=Jrb.Ik(a.K,1,d);if(Jrb.kl(a.K,d)){e.a=Jrb.Qh(a.Q,Jrb.Ak(a.K,b));e.c=Jrb.Rh(a.Q,Jrb.Bk(a.K,b));e.b=Jrb.Qh(a.Q,Jrb.Ak(a.K,c));e.d=Jrb.Rh(a.Q,Jrb.Bk(a.K,c));Jrb.Od(a,-2);f=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.a),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,f)}}};Jrb.md=function md(a){var b,c,d,e,f,g,h;if(a.K.K){g=a.V;Jrb.Od(a,-7);for(b=0;b<a.K.f;b++)E3(j3(Jrb.yk(a.K,b),jtb),0)&&Jrb.Xs(a,Jrb.Qh(a.Q,Jrb.Ak(a.K,b))-g,Jrb.Rh(a.Q,Jrb.Bk(a.K,b))-g,2*g);Jrb.$s(a,2*a.V);f=new Jrb.Wd;for(e=0;e<a.K.r;e++){c=Jrb.Ik(a.K,0,e);d=Jrb.Ik(a.K,1,e);if(E3(j3(j3(Jrb.yk(a.K,c),Jrb.yk(a.K,d)),jtb),0)){f.a=Jrb.Qh(a.Q,Jrb.Ak(a.K,c));f.c=Jrb.Rh(a.Q,Jrb.Bk(a.K,c));f.b=Jrb.Qh(a.Q,Jrb.Ak(a.K,d));f.d=Jrb.Rh(a.Q,Jrb.Bk(a.K,d));h=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(f.a),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(f.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(f.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(f.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,h)}}}};Jrb.nd=function nd(a){var b,c,d,e;if(a.K.K){Jrb.Od(a,320);if((a.F&8)!=0)for(b=0;b<a.K.f;b++)E3(j3(Jrb.yk(a.K,b),-536870913),0)&&Jrb.Xs(a,Jrb.Qh(a.Q,Jrb.Ak(a.K,b))-a.Y/2,Jrb.Rh(a.Q,Jrb.Bk(a.K,b))-a.Y/2,a.Y);for(e=0;e<a.K.g;e++){if(Jrb.Sk(a.K,e)!=0){c=Jrb.Ik(a.K,0,e);d=Jrb.Ik(a.K,1,e);Jrb.Xs(a,(Jrb.Qh(a.Q,Jrb.Ak(a.K,c))+Jrb.Qh(a.Q,Jrb.Ak(a.K,d))-a.Y)/2,(Jrb.Rh(a.Q,Jrb.Bk(a.K,c))+Jrb.Rh(a.Q,Jrb.Bk(a.K,d))-a.Y)/2,a.Y)}}}};Jrb.od=function od(a){a.I=1;a.Q=new Jrb.Sh;a.Z=new Krb.Yi;a.T=new Krb.Yi;a.s=tX(Drb.c3,itb,6,a.K.q,16,1);a.w=new Wrb.BG;a.P=0;a.B=-1;Jrb.Sd(a)};Jrb.pd=function pd(a,b){var c;if(Jrb.rn(a.K,b)==0)return false;for(c=0;c<Jrb.rn(a.K,b);c++)if(!Jrb.ml(a.K,Jrb.Hn(a.K,b,c)))return false;return true};Jrb.qd=function qd(a){var b;a.q=tX(Drb.c3,itb,6,a.K.q,16,1);for(b=0;b<a.K.r;b++){a.q[Jrb.Ik(a.K,0,b)]=true;a.q[Jrb.Ik(a.K,1,b)]=true}};Jrb.rd=function rd(a,b){var c;if(Jrb.Gn(a.K,b)!=2)return false;for(c=0;c<2;c++)if(Jrb.In(a.K,b,c)!=2)return false;return true};Jrb.sd=function sd(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o;m=false;e.a=0;e.b=0;d>0?(f=ktb):(f=ltb);o=Jrb.Hk(a.K,b,c);for(k=0;k<Jrb.Gn(a.K,b);k++){g=Jrb.Hn(a.K,b,k);h=o;Jrb.Ik(a.K,0,g)==b?(l=Jrb.Ik(a.K,1,g)):(l=Jrb.Ik(a.K,0,g));if(l==c)continue;n=Jrb.Hk(a.K,b,l);h<n&&(h+=mtb);i=h-n;if(d>0){i<ntb&&(m=true);i>ktb&&(i=ktb);i<0.523598776&&(i=0.523598776);if(i<=f){f=i;j=a.S*$wnd.Math.tan(f-otb)/2;e.a=-(j*$wnd.Math.sin(h));e.b=-(j*$wnd.Math.cos(h))}}else{i>=ntb&&(m=true);i<ltb&&(i=ltb);i>5.759586531&&(i=5.759586531);if(i>=f){f=i;j=a.S*$wnd.Math.tan(4.712388981-f)/2;e.a=-(j*$wnd.Math.sin(h));e.b=-(j*$wnd.Math.cos(h))}}}return m};Jrb.td=function td(a,b,c,d){var e;if(b==0){c<0?(d.a=a.S):(d.a=-a.S);d.b=0;return}e=$wnd.Math.atan(c/b);b<0&&(e+=ntb);d.a=-(a.S*$wnd.Math.sin(e));d.b=a.S*$wnd.Math.cos(e)};Jrb.ud=function ud(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p;e=new Jrb.Wd;i=new Jrb.Wd;k=new Wrb.BG;j=new Wrb.BG;g=Jrb.Ik(a.K,0,c);h=Jrb.Ik(a.K,1,c);if(d){m=b.a;b.a=b.b;b.b=m;m=b.c;b.c=b.d;b.d=m;n=g;g=h;h=n}if(!Jrb.Kd(a,b))return;if(Jrb.Mo(a.K,c)){e.a=b.a;e.c=b.c;e.b=b.b;e.d=b.d;l=d?-Jrb.io(a.K,c):Jrb.io(a.K,c);l==0&&(l=1);Jrb.td(a,b.b-b.a,b.d-b.c,k);if(l>0){i.a=b.a+k.a;i.c=b.c+k.b;i.b=b.b+k.a;i.d=b.d+k.b;if(Jrb.sd(a,g,h,1,j)||Jrb.Gn(a.K,g)>1){i.a+=j.a+k.b;i.c+=j.b-k.a}}else{i.a=b.a-k.a;i.c=b.c-k.b;i.b=b.b-k.a;i.d=b.d-k.b;if(Jrb.sd(a,g,h,-1,j)||Jrb.Gn(a.K,g)>1){i.a+=j.a+k.b;i.c+=j.b-k.a}}Jrb.Tk(a.K,c)==386&&Jrb.Jd(e,i);Jrb.Kd(a,e)&&Jrb.cd(a,e,g,h);Jrb.Tk(a.K,c)==8?Jrb.Kd(a,i)&&Jrb.ad(a,i,g,h):Jrb.Kd(a,i)&&Jrb.cd(a,i,g,h)}else{Jrb.td(a,b.b-b.a,b.d-b.c,k);o=k.a/2;p=k.b/2;f=false;e.a=b.a+o;e.c=b.c+p;e.b=b.b+o;e.d=b.d+p;if(Jrb.Gn(a.K,g)>1){if(Jrb.sd(a,g,h,1,j)){e.a+=j.a;e.c+=j.b;if(Jrb.Gn(a.K,g)==2){if(j.a!=0||j.b!=0){e.a+=k.b;e.c-=k.a}}}else{a.o[g]=new Wrb.CG(e.a,e.c)}}i.a=b.a-o;i.c=b.c-p;i.b=b.b-o;i.d=b.d-p;if(Jrb.Gn(a.K,g)>1){if(Jrb.sd(a,g,h,0,j)){i.a+=j.a;i.c+=j.b;if(Jrb.Gn(a.K,g)==2){if(j.a!=0||j.b!=0){i.a+=k.b;i.c-=k.a}}}else{a.o[g]=new Wrb.CG(i.a,i.c);f=true}}Jrb.Tk(a.K,c)==386&&Jrb.Jd(e,i);if(Jrb.Tk(a.K,c)==8){if(f){Jrb.ad(a,e,g,h);Jrb.cd(a,i,g,h)}else{Jrb.cd(a,e,g,h);Jrb.ad(a,i,g,h)}}else{Jrb.cd(a,e,g,h);Jrb.cd(a,i,g,h)}}};Jrb.vd=function vd(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;k=a.P;l=a.D;if((a.F&ptb)!=0){a.P=-6;a.D=-8355712;Jrb.Od(a,1)}a.o=tX(Drb.e_,Bsb,52,a.K.q,0,1);for(i=0;i<a.K.r;i++)(Jrb.Tk(a.K,i)==2||Jrb.Tk(a.K,i)==386||Jrb.Tk(a.K,i)==8)&&Jrb.yd(a,i);for(j=0;j<a.K.r;j++)Jrb.Tk(a.K,j)!=2&&Jrb.Tk(a.K,j)!=386&&Jrb.Tk(a.K,j)!=8&&Jrb.yd(a,j);if((a.F&64)==0){for(h=0;h<a.K.r;h++){if(Jrb.Lk(a.K,h)!=0){e=null;Jrb.Lk(a.K,h)==1||Jrb.Lk(a.K,h)==2?(Jrb.Qk(a.K,h)==2||Jrb.Nk(a.K,h)==0||b[Jrb.Nk(a.K,h)][Jrb.Mk(a.K,h)]>1)&&(Jrb.Lk(a.K,h)==1?(e=Jrb.Qk(a.K,h)==2?'E':Jrb.ol(a.K,h)?'p':'P'):(e=Jrb.Qk(a.K,h)==2?'Z':Jrb.ol(a.K,h)?'m':'M')):(e='?');if(e!=null){Jrb.at(a,(a.W*2+1)/3|0);Jrb.Od(a,Jrb.ml(a.K,h)?-3:a.K.O==1||(a.F&qtb)!=0?a.P:448);c=Jrb.Ik(a.K,0,h);d=Jrb.Ik(a.K,1,h);n=(Jrb.Qh(a.Q,Jrb.Ak(a.K,c))+Jrb.Qh(a.Q,Jrb.Ak(a.K,d)))/2;o=(Jrb.Rh(a.Q,Jrb.Bk(a.K,c))+Jrb.Rh(a.Q,Jrb.Bk(a.K,d)))/2;f=(Jrb.Qh(a.Q,Jrb.Ak(a.K,c))-Jrb.Qh(a.Q,Jrb.Ak(a.K,d)))/3;g=(Jrb.Rh(a.Q,Jrb.Bk(a.K,c))-Jrb.Rh(a.Q,Jrb.Bk(a.K,d)))/3;Jrb.Bd(a,n+g,o-f,e,true);Jrb.Od(a,a.P);Jrb.at(a,a.W)}}}}if((a.F&4)!=0){Jrb.at(a,(a.W*2+1)/3|0);Jrb.Od(a,384);for(h=0;h<a.K.r;h++){c=Jrb.Ik(a.K,0,h);d=Jrb.Ik(a.K,1,h);m=Jrb.Do(a.K,h)?'d':Jrb.zo(a.K,h)?'a':'';n=(Jrb.Qh(a.Q,Jrb.Ak(a.K,c))+Jrb.Qh(a.Q,Jrb.Ak(a.K,d)))/2;o=(Jrb.Rh(a.Q,Jrb.Bk(a.K,c))+Jrb.Rh(a.Q,Jrb.Bk(a.K,d)))/2;Jrb.Bd(a,n,o,m+(''+h),true)}Jrb.Od(a,a.P);Jrb.at(a,a.W)}if((a.F&ptb)!=0){a.P=k;a.D=l}};Jrb.wd=function wd(a){var b,c;for(c=new Krb.ueb(a.T);c.a<c.c.a.length;){b=Krb.teb(c);Jrb.Od(a,b.a);Jrb.bd(a,b.b,b.c)}Jrb.Od(a,a.P)};Jrb.xd=function xd(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$;a.J||Jrb.Ys(a,b,(Jrb.sk(a.K,b),Jrb.Qh(a.Q,Jrb.Ak(a.K,b))),Jrb.Rh(a.Q,Jrb.Bk(a.K,b)));M=null;if(Jrb.mk(a.K,b)!=0){U=$wnd.Math.abs(Jrb.mk(a.K,b))==1?'':''+$wnd.Math.abs(Jrb.mk(a.K,b));M=Jrb.mk(a.K,b)<0?U+'-':U+'+'}D=null;N=Jrb.yk(a.K,b);if(o3(N,0)!=0){E3(j3(N,rtb),0)&&(D=D==null?'*':D+','+'*');E3(j3(N,stb),0)&&(D=D==null?'!*':D+','+'!*');E3(j3(N,ttb),0)?(D=D==null?'ha':D+','+'ha'):E3(j3(N,2),0)?(D=D==null?'a':D+','+'a'):E3(j3(N,4),0)&&(D=D==null?'!a':D+','+'!a');E3(j3(N,qtb),0)&&(D=D==null?'s':D+','+'s');if(E3(j3(N,utb),0)){w=j3(N,utb);o3(w,1792)==0?(D=D==null?'h0':D+','+'h0'):o3(w,1664)==0?(D=D==null?'h1':D+','+'h1'):o3(w,1408)==0?(D=D==null?'h2':D+','+'h2'):o3(w,128)==0?(D=D==null?'h>0':D+','+'h>0'):o3(w,384)==0?(D=D==null?'h>1':D+','+'h>1'):o3(w,896)==0?(D=D==null?'h>2':D+','+'h>2'):o3(w,vtb)==0?(D=D==null?'h<3':D+','+'h<3'):o3(w,1536)==0?(D=D==null?'h<2':D+','+'h<2'):o3(w,1152)==0&&(D=D==null?'h1-2':D+','+'h1-2')}if(E3(j3(N,wtb),0)){i=j3(N,wtb);o3(i,xtb)==0?(D=D==null?'c0':D+','+'c0'):o3(i,ytb)==0?(D=D==null?'c+':D+','+'c+'):o3(i,ztb)==0&&(D=D==null?'c-':D+','+'c-')}if(E3(j3(N,Atb),0)){L=j3(N,Atb);o3(L,98304)==0?(D=D==null?'pi0':D+','+'pi0'):o3(L,81920)==0?(D=D==null?'pi1':D+','+'pi1'):o3(L,49152)==0?(D=D==null?'pi2':D+','+'pi2'):o3(L,ptb)==0&&(D=D==null?'pi>0':D+','+'pi>0')}if(E3(j3(N,Btb),0)){K=j3(N,Btb);o3(K,3801088)==0?(D=D==null?'n1':D+','+'n1'):o3(K,Ctb)==0?(D=D==null?'n2':D+','+'n2'):o3(K,Dtb)==0?(D=D==null?'n3':D+','+'n3'):o3(K,3145728)==0?(D=D==null?'n<3':D+','+'n<3'):o3(K,Etb)==0?(D=D==null?'n<4':D+','+'n<4'):o3(K,Ftb)==0?(D=D==null?'n>1':D+','+'n>1'):o3(K,Gtb)==0?(D=D==null?'n>2':D+','+'n>2'):o3(K,Htb)==0?(D=D==null?'n>3':D+','+'n>3'):o3(K,3276800)==0?(D=D==null?'n1-2':D+','+'n1-2'):o3(K,2228224)==0?(D=D==null?'n1-3':D+','+'n1-3'):o3(K,2490368)==0&&(D=D==null?'n2-3':D+','+'n2-3')}if(E3(j3(N,Itb),0)){o=j3(N,Itb);o3(o,Jtb)==0?(D=D==null?'e0':D+','+'e0'):o3(o,Ktb)==0?(D=D==null?'e1':D+','+'e1'):o3(o,Ltb)==0?(D=D==null?'e2':D+','+'e2'):o3(o,Mtb)==0?(D=D==null?'e3':D+','+'e3'):o3(o,15393162788864)==0?(D=D==null?'e<2':D+','+'e<2'):o3(o,13194139533312)==0?(D=D==null?'e<3':D+','+'e<3'):o3(o,Ntb)==0?(D=D==null?'e<4':D+','+'e<4'):o3(o,Otb)==0?(D=D==null?'e>0':D+','+'e>0'):o3(o,Ptb)==0?(D=D==null?'e>1':D+','+'e>1'):o3(o,Qtb)==0?(D=D==null?'e>2':D+','+'e>2'):o3(o,Rtb)==0?(D=D==null?'e>3':D+','+'e>3'):o3(o,13743895347200)==0?(D=D==null?'e1-2':D+','+'e1-2'):o3(o,9345848836096)==0?(D=D==null?'e1-3':D+','+'e1-3'):o3(o,10445360463872)==0&&(D=D==null?'e2-3':D+','+'e2-3')}if(E3(j3(N,120),0)){Q=j3(N,120);o3(Q,112)==0?(D=D==null?'!r':D+','+'!r'):o3(Q,8)==0?(D=D==null?'r':D+','+'r'):o3(Q,96)==0?(D=D==null?'rb<3':D+','+'rb<3'):o3(Q,104)==0?(D=D==null?'rb2':D+','+'rb2'):o3(Q,88)==0?(D=D==null?'rb3':D+','+'rb3'):o3(Q,56)==0&&(D=D==null?'rb4':D+','+'rb4')}E3(j3(N,Stb),0)&&(D=D==null?'r'+O3(I3(j3(N,Stb),22)):D+','+('r'+O3(I3(j3(N,Stb),22))));E3(j3(N,Usb),0)&&(D=Jrb.Yc(D,Jrb.$c(N)));E3(j3(N,Ttb),0)&&(D=D==null?'f':D+','+'f')}Jrb.wk(a.K,b)!=0&&(D=Jrb.Yc(D,''+Jrb.wk(a.K,b)));T=0;if(Jrb.zk(a.K,b)!=0){switch(Jrb.zk(a.K,b)){case 16:M=M==null?'|':M+','+'|';break;case 32:T=1;break;case 48:T=2;}}l=null;if((a.F&64)==0){if(Jrb.fl(a.K,b))l='?';else if(Jrb.lk(a.K,b)!=0){if(Jrb.rk(a.K,b)==0||c==null||c[Jrb.rk(a.K,b)][Jrb.qk(a.K,b)]>1){if(Jrb.Gn(a.K,b)==2){switch(Jrb.lk(a.K,b)){case 2:l=Jrb.hl(a.K,b)?'p':'P';break;case 1:l=Jrb.hl(a.K,b)?'m':'M';break;default:l='*';}}else{switch(Jrb.lk(a.K,b)){case 1:l=Jrb.hl(a.K,b)?'r':'R';break;case 2:l=Jrb.hl(a.K,b)?'s':'S';break;default:l='*';}}}}}(a.F&768)!=0&&(l=Jrb.Yc(l,''+Jrb.zu(a.K,b)));I=null;(a.F&16)!=0&&Jrb.vk(a.K,b)!=0&&(I=''+Jrb.vk(a.K,b));q=null;if(Jrb.no(a.K,b)!=-1){p=Jrb.kd(a,b);p!=-1&&(q=p==0?'abs':((p&255)==1?'&':'or')+(1+(p>>8)))}A=0;(a.F&Utb)==0&&(a.K.K?E3(j3(Jrb.yk(a.K,b),Vtb),0)&&(A=Jrb.Wn(a.K,b)):(Jrb.Dk(a.K,b)!=6||Jrb.wk(a.K,b)!=0||!a.q[b]||Jrb.zk(a.K,b)!=0)&&(A=Jrb.Wn(a.K,b)));H=false;f=Jrb.ok(a.K,b);if(f!=null&&Erb.k7(Hrb.rnb(f).substr(0,1),']')){D=Jrb.Yc((Hrb.mnb(1,Hrb.rnb(f).length+1),Hrb.rnb(f).substr(1)),D);f=null;H=true}if(f!=null){A=0}else if(Jrb.tk(a.K,b)!=null){e=E3(j3(Jrb.yk(a.K,b),1),0)?'[!':'[';f=e+Jrb.uk(a.K,b)+']';Hrb.rnb(f).length>5&&(f=e+Jrb.tk(a.K,b).length+']');E3(j3(Jrb.yk(a.K,b),Vtb),0)&&(A=-1)}else if(E3(j3(Jrb.yk(a.K,b),1),0)){f='?';E3(j3(Jrb.yk(a.K,b),Vtb),0)&&(A=-1)}else (Jrb.Dk(a.K,b)!=6||M!=null||D!=null||A>0||!a.q[b])&&(f=Jrb.sk(a.K,b));G=0;!Jrb.xl(a.K,b)&E3(j3(Jrb.yk(a.K,b),jtb),0)&&Jrb.Od(a,-8);if(f!=null){G=(O=(V=dsb.m4(a.e,f),new esb.s4(V)).b,O);Jrb.Bd(a,Jrb.Qh(a.Q,Jrb.Ak(a.K,b)),Jrb.Rh(a.Q,Jrb.Bk(a.K,b)),f,true);a.s[b]=true}else Jrb.rd(a,b)&&Jrb.Ad(a,Jrb.Qh(a.Q,Jrb.Ak(a.K,b)),Jrb.Rh(a.Q,Jrb.Bk(a.K,b)),b);if(M!=null){Jrb.at(a,(a.W*2+1)/3|0);X=Jrb.Qh(a.Q,Jrb.Ak(a.K,b))+((G+(O=(V=dsb.m4(a.e,M),new esb.s4(V)).b,O))/2+1);Z=Jrb.Rh(a.Q,Jrb.Bk(a.K,b))-((a.k*4-4)/8|0);Jrb.Bd(a,X,Z,M,true);Jrb.at(a,a.W)}(a.F&2)!=0&&(D=''+b);if(D!=null){H?Jrb.at(a,(a.W*5+1)/6|0):Jrb.at(a,(a.W*2+1)/3|0);X=Jrb.Qh(a.Q,Jrb.Ak(a.K,b))-(G+(O=(V=dsb.m4(a.e,D),new esb.s4(V)).b,O))/2;Z=Jrb.Rh(a.Q,Jrb.Bk(a.K,b))-((a.k*4-4)/8|0);Jrb.Bd(a,X,Z,D,true);Jrb.at(a,a.W)}if(l!=null){Jrb.at(a,(a.W*2+1)/3|0);X=Jrb.Qh(a.Q,Jrb.Ak(a.K,b))-(G+(O=(V=dsb.m4(a.e,l),new esb.s4(V)).b,O))/2;Z=Jrb.Rh(a.Q,Jrb.Bk(a.K,b))+((a.k*4+4)/8|0);S=a.B;a.K.O!=1&&(a.F&qtb)==0&&Jrb.Od(a,448);Jrb.Bd(a,X,Z,l,false);Jrb.Od(a,S);Jrb.at(a,a.W)}if(I!=null){Jrb.at(a,(a.W*2+1)/3|0);X=Jrb.Qh(a.Q,Jrb.Ak(a.K,b))+((G+(O=(V=dsb.m4(a.e,I),new esb.s4(V)).b,O))/2+1);Z=Jrb.Rh(a.Q,Jrb.Bk(a.K,b))+((a.k*4+4)/8|0);S=a.B;Jrb.Od(a,Jrb.jl(a.K,b)?384:448);Jrb.Bd(a,X,Z,I,true);Jrb.Od(a,S);Jrb.at(a,a.W)}if(q!=null){d=Jrb.Fd(a,b);Jrb.at(a,(a.W*2+1)/3|0);X=Jrb.Qh(a.Q,Jrb.Ak(a.K,b))+0.7*a.k*$wnd.Math.sin(d);Z=Jrb.Rh(a.Q,Jrb.Bk(a.K,b))+0.7*a.k*$wnd.Math.cos(d);S=a.B;!a.J&&a.K.O!=1&&Jrb.Od(a,Jrb.jd(a,b));Jrb.Bd(a,X,Z,q,false);Jrb.Od(a,S);Jrb.at(a,a.W)}if(A==0&&T==0){a.B==-8&&Jrb.Od(a,-9);return}u=tX(Drb.LY,Osb,6,4,15,1);for(C=0;C<Jrb.sn(a.K,b);C++){h=Jrb.Hn(a.K,b,C);for(F=0;F<2;F++){if(Jrb.Ik(a.K,F,h)==b){R=Jrb.Hk(a.K,Jrb.Ik(a.K,F,h),Jrb.Ik(a.K,1-F,h));if(R<Wtb){u[0]-=R+otb;u[3]+=R+ntb}else if(R<0){u[2]+=R+otb;u[3]-=R}else if(R<otb){u[1]+=R;u[2]+=otb-R}else{u[0]+=R-otb;u[1]+=ntb-R}}}}Jrb.Gn(a.K,b)==0?Jrb.ql(a.K,b)?(u[3]-=0.2):(u[1]-=0.2):(u[1]-=0.1);(M!=null||I!=null)&&(u[1]+=10);(D!=null||l!=null)&&(u[3]+=10);s='';if(A!=0){v=(P=(W=dsb.m4(a.e,'H'),new esb.s4(W)).b,P);t=0;r=a.k;if(A==-1){s='n';Jrb.at(a,(a.W*2+1)/3|0);t=(O=(V=dsb.m4(a.e,s),new esb.s4(V)).b,O)}else if(A>1){s=''+A;Jrb.at(a,(a.W*2+1)/3|0);t=(O=(V=dsb.m4(a.e,s),new esb.s4(V)).b,O)}if(u[1]<0.6||u[3]<0.6){k=Jrb.Rh(a.Q,Jrb.Bk(a.K,b));if(u[1]<=u[3]){u[1]+=10;j=Jrb.Qh(a.Q,Jrb.Ak(a.K,b))+(G+v)/2}else{u[3]+=10;j=Jrb.Qh(a.Q,Jrb.Ak(a.K,b))-(G+v)/2-t}}else{j=Jrb.Qh(a.Q,Jrb.Ak(a.K,b));if(u[0]<u[2]){u[0]+=10;k=Jrb.Rh(a.Q,Jrb.Bk(a.K,b))-r}else{u[2]+=10;k=Jrb.Rh(a.Q,Jrb.Bk(a.K,b))+r}}if(t>0){X=j+(v+t)/2;Z=k+((a.k*4+4)/8|0);Jrb.Bd(a,X,Z,s,true);Jrb.at(a,a.W)}Jrb.Bd(a,j,k,'H',true)}g=0;if(T!=0){J=50;m=0;for(B=0;B<4;B++){n=B>1?B-2:B+2;if(u[B]<J){g=B;J=u[B];m=u[n]}else if(u[B]==J){if(u[n]>m){g=B;m=u[n]}}}switch(g){case 0:j=Jrb.Qh(a.Q,Jrb.Ak(a.K,b));k=Jrb.Rh(a.Q,Jrb.Bk(a.K,b))-a.U-G/2;break;case 1:j=Jrb.Qh(a.Q,Jrb.Ak(a.K,b))+a.U+G/2;k=Jrb.Rh(a.Q,Jrb.Bk(a.K,b));break;case 2:j=Jrb.Qh(a.Q,Jrb.Ak(a.K,b));k=Jrb.Rh(a.Q,Jrb.Bk(a.K,b))+a.U+G/2;break;default:j=Jrb.Qh(a.Q,Jrb.Ak(a.K,b))-a.U-G/2;k=Jrb.Rh(a.Q,Jrb.Bk(a.K,b));}if(T==1){Krb.Ei(a.Z,new Wrb.LG(j-a.U,k-a.U,2*a.U,2*a.U));a.J||Krb.Ei(a.T,new Jrb.Vd(j,k,Jrb.pd(a,b)?-3:a.p[b]))}else{switch(g){case 2:case 0:Y=2*a.U;$=0;j-=a.U;break;case 1:Y=0;$=2*a.U;k-=a.U;break;default:Y=0;$=2*a.U;k-=a.U;}Krb.Ei(a.Z,new Wrb.LG(j-a.U,k-a.U,2*a.U,2*a.U));a.J||Krb.Ei(a.T,new Jrb.Vd(j,k,Jrb.pd(a,b)?-3:a.p[b]));Krb.Ei(a.Z,new Wrb.LG(j+Y-a.U,k+$-a.U,2*a.U,2*a.U));a.J||Krb.Ei(a.T,new Jrb.Vd(j+Y,k+$,Jrb.pd(a,b)?-3:a.p[b]))}}a.B==-8&&Jrb.Od(a,-9)};\nJrb.yd=function yd(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;u=new Jrb.Wd;c=new Jrb.Wd;g=new Jrb.Wd;q=new Wrb.BG;p=new Wrb.BG;e=Jrb.Ik(a.K,0,b);f=Jrb.Ik(a.K,1,b);Jrb.Zs(a,b,Jrb.Qh(a.Q,Jrb.Ak(a.K,e)),Jrb.Rh(a.Q,Jrb.Bk(a.K,e)),Jrb.Qh(a.Q,Jrb.Ak(a.K,f)),Jrb.Rh(a.Q,Jrb.Bk(a.K,f)));!Jrb.xl(a.K,e)&&!Jrb.xl(a.K,f)&&E3(j3(G3(Jrb.yk(a.K,e),Jrb.yk(a.K,f)),jtb),0)&&Jrb.Od(a,-8);if(!a.o[e]){u.a=Jrb.Qh(a.Q,Jrb.Ak(a.K,e));u.c=Jrb.Rh(a.Q,Jrb.Bk(a.K,e))}else{u.a=a.o[e].a;u.c=a.o[e].b}if(!a.o[f]){u.b=Jrb.Qh(a.Q,Jrb.Ak(a.K,f));u.d=Jrb.Rh(a.Q,Jrb.Bk(a.K,f))}else{u.b=a.o[f].a;u.d=a.o[f].b}if((Jrb.Sk(a.K,b)&Xtb)!=0){Jrb.Kd(a,u)&&Jrb.Us(a,u);Jrb.Od(a,-9);return}h=Jrb.Tk(a.K,b)==8?0:Jrb.Tk(a.K,b)==16?1:Jrb.Qk(a.K,b);switch(h){case 1:i=Jrb.Tk(a.K,b);if((a.F&128)!=0&&(i==257||i==129)){t=Jrb.Ik(a.K,0,b);n=Jrb.rk(a.K,t);if(n!=0){m=Jrb.qk(a.K,t);l=0;for(d=0;d<a.K.f;d++)Jrb.rk(a.K,d)==n&&Jrb.qk(a.K,d)==m&&++l;l==1&&(i=1)}}switch(i){case 1:Jrb.Kd(a,u)&&Jrb.cd(a,u,e,f);break;case 257:Jrb.Hd(a,u,e,f);break;case 129:v=u.b-u.a;w=u.d-u.c;if(Jrb.ml(a.K,Jrb.Dn(a.K,e,f))){j=-3;k=-3}else{j=a.p[e];k=Jrb.jd(a,e);j==Jrb.nk(a.K,e)&&(j=k)}for(o=2;o<17;o+=2){c.a=u.a+o*v/17-o*w/128;c.c=u.c+o*w/17+o*v/128;c.b=u.a+o*v/17+o*w/128;c.d=u.c+o*w/17-o*v/128;if(Jrb.Kd(a,c)){Jrb.Od(a,o<9?j:k);r=atb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(c.a),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(c.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(c.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(c.d),gsb.xab)))+btb+ftb+a.d+btb+gtb+a.j+htb;Jrb.dt(a,r);Jrb.Od(a,a.P)}}break;case 16:Jrb.Kd(a,u)&&Jrb.ed(a,u,e,f);}break;case 0:case 2:if((a.s[e]||Jrb.wn(a.K,e)==2)&&(a.s[f]||Jrb.wn(a.K,f)==2)&&!Jrb.Mo(a.K,b)&&h==2){if(!Jrb.Kd(a,u))break;Jrb.td(a,u.b-u.a,u.d-u.c,q);v=q.a/2;w=q.b/2;c.a=u.a+v;c.c=u.c+w;c.b=u.b+v;c.d=u.d+w;g.a=u.a-v;g.c=u.c-w;g.b=u.b-v;g.d=u.d-w;Jrb.Tk(a.K,b)==386&&Jrb.Jd(c,g);Jrb.cd(a,c,e,f);h==2?Jrb.cd(a,g,e,f):Jrb.ad(a,g,e,f)}else if((a.s[f]||Jrb.wn(a.K,f)==2)&&h==2){Jrb.ud(a,u,b,false)}else if((a.s[e]||Jrb.wn(a.K,e)==2)&&h==2){Jrb.ud(a,u,b,true)}else{s=Jrb.io(a.K,b);s==0&&(s=1);c.a=u.a;c.c=u.c;c.b=u.b;c.d=u.d;Jrb.td(a,u.b-u.a,u.d-u.c,q);if(s>0){g.a=u.a+q.a;g.c=u.c+q.b;g.b=u.b+q.a;g.d=u.d+q.b;if(Jrb.sd(a,e,f,1,p)||Jrb.Gn(a.K,e)>1){g.a+=p.a+q.b;g.c+=p.b-q.a}if(Jrb.sd(a,f,e,-1,p)||Jrb.Gn(a.K,f)>1){g.b+=p.a-q.b;g.d+=p.b+q.a}}else{g.a=u.a-q.a;g.c=u.c-q.b;g.b=u.b-q.a;g.d=u.d-q.b;if(Jrb.sd(a,e,f,-1,p)||Jrb.Gn(a.K,e)>1){g.a+=p.a+q.b;g.c+=p.b-q.a}if(Jrb.sd(a,f,e,1,p)||Jrb.Gn(a.K,f)>1){g.b+=p.a-q.b;g.d+=p.b+q.a}}Jrb.Tk(a.K,b)==386&&Jrb.Jd(c,g);Jrb.Kd(a,c)&&Jrb.cd(a,c,e,f);h==2?Jrb.Kd(a,g)&&Jrb.cd(a,g,e,f):Jrb.Kd(a,g)&&Jrb.ad(a,g,e,f)}break;case 3:if(Jrb.Kd(a,u)){Jrb.cd(a,u,e,f);Jrb.td(a,u.b-u.a,u.d-u.c,q);Jrb.dd(a,u,e,f,q.a,q.b,c);Jrb.dd(a,u,e,f,-q.a,-q.b,c)}break;case 4:if(Jrb.Kd(a,u)){Jrb.td(a,u.b-u.a,u.d-u.c,q);Jrb.dd(a,u,e,f,1.5*q.a,1.5*q.b,c);Jrb.dd(a,u,e,f,0.5*q.a,0.5*q.b,c);Jrb.dd(a,u,e,f,-0.5*q.a,-0.5*q.b,c);Jrb.dd(a,u,e,f,-1.5*q.a,-1.5*q.b,c)}break;case 5:if(Jrb.Kd(a,u)){Jrb.cd(a,u,e,f);Jrb.td(a,u.b-u.a,u.d-u.c,q);Jrb.dd(a,u,e,f,2*q.a,2*q.b,c);Jrb.dd(a,u,e,f,q.a,q.b,c);Jrb.dd(a,u,e,f,-q.a,-q.b,c);Jrb.dd(a,u,e,f,-2*q.a,-2*q.b,c)}}a.B==-8&&Jrb.Od(a,-9)};Jrb.zd=function zd(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;o=false;for(d=0;d<a.K.g;d++){j=null;if(Jrb.ll(a.K,d)){l=Jrb.Kk(a.K,d);k=Jrb.Jk(a.K,d);j=l==k?'['+l+']':'['+l+':'+k+']'}else (Jrb.Sk(a.K,d)&Ytb)!=0?(j=(Jrb.Sk(a.K,d)&Ytb)==Etb?'a':(Jrb.Sk(a.K,d)&384)==256?'r!a':'!a'):(Jrb.Sk(a.K,d)&384)!=0&&(j=(Jrb.Sk(a.K,d)&384)==256?'r':'!r');n=(Jrb.Sk(a.K,d)&Gtb)>>17;n!=0&&(j=(j==null?'':j)+n);if(j!=null){b=Jrb.Ik(a.K,0,d);c=Jrb.Ik(a.K,1,d);if(!o){Jrb.at(a,(a.W*2+1)/3|0);o=true}q=(Jrb.Qh(a.Q,Jrb.Ak(a.K,b))+Jrb.Qh(a.Q,Jrb.Ak(a.K,c)))/2;r=(Jrb.Rh(a.Q,Jrb.Bk(a.K,b))+Jrb.Rh(a.Q,Jrb.Bk(a.K,c)))/2;f=Jrb.Qh(a.Q,Jrb.Ak(a.K,c))-Jrb.Qh(a.Q,Jrb.Ak(a.K,b));g=Jrb.Rh(a.Q,Jrb.Bk(a.K,c))-Jrb.Rh(a.Q,Jrb.Bk(a.K,b));e=$wnd.Math.sqrt(f*f+g*g);i=(m=(p=dsb.m4(a.e,j),new esb.s4(p)).b,0.6*m);h=0.55*a.k;e!=0&&(f>0?Jrb.Bd(a,q+i*g/e,r-h*f/e,j,true):Jrb.Bd(a,q-i*g/e,r+h*f/e,j,true))}}o&&Jrb.at(a,a.W)};Jrb.Ad=function Ad(a,b,c,d){Krb.Ei(a.Z,new Wrb.LG(b-a.U,c-a.U,2*a.U,2*a.U));a.J||Krb.Ei(a.T,new Jrb.Vd(b,c,Jrb.pd(a,d)?-3:a.p[d]))};Jrb.Bd=function Bd(a,b,c,d,e){var f,g,h,i,j;if(e){g=(f=(h=dsb.m4(a.e,d),new esb.s4(h)).b,f);i=g/2+(a.k/8|0);j=a.k/2|0;(d=='+'||d=='-')&&(j=j*2/3);Krb.Ei(a.Z,new Wrb.LG(b-i,c-j,2*i,2*j))}a.J||Jrb.Ws(a,d,b,c)};Jrb.Cd=function Cd(a){var b;b=a.a;a.a=a.b;a.b=b;b=a.c;a.c=a.d;a.d=b};Jrb.Dd=function Dd(a,b,c){var d;d=b==0?mtb+a[0]-a[a.length-1]:a[b]-a[b-1];c>-2.0943951023931953&&c<Ztb?(d-=2*$wnd.Math.cos(c+$tb)):(d-=0.5*$wnd.Math.cos(c+$tb));return d};Jrb.Ed=function Ed(a){var b;b=new Wrb.KG;if(a.a<=a.b){b.c=a.a;b.b=a.b-a.a}else{b.c=a.b;b.b=a.a-a.b}if(a.c<=a.d){b.d=a.c;b.a=a.d-a.c}else{b.d=a.d;b.a=a.c-a.d}return b};Jrb.Fd=function Fd(a,b){var c,d,e,f,g,h,i;c=tX(Drb.LY,Osb,6,Jrb.rn(a.K,b),15,1);for(e=0;e<Jrb.rn(a.K,b);e++)c[e]=Jrb.Hk(a.K,b,Jrb.Fn(a.K,b,e));Hrb.Nmb(c,Hrb.rnb(a4(Krb.$eb.prototype.pc,Krb.$eb,[])));f=Jrb.Gd(c,0);g=Jrb.Dd(c,0,f);for(d=1;d<c.length;d++){h=Jrb.Gd(c,d);i=Jrb.Dd(c,d,h);if(g<i){g=i;f=h}}return f};Jrb.Gd=function Gd(a,b){var c;if(b>0)return (a[b]+a[b-1])/2;c=ntb+(a[0]+a[a.length-1])/2;return c>ntb?c-mtb:c};Jrb.Hd=function Hd(a,b,c,d){var e,f,g,h;h=new Jrb.Wd;if(b.a==b.b&&b.c==b.d)return;h.a=b.a;h.c=b.c;h.b=b.b;h.d=b.d;g=Jrb.Ed(h);for(e=0;e<a.Z.a.length;e++){f=Krb.Ji(a.Z,e);if(f.c>g.c+g.b||f.d>g.d+g.a||g.c>f.c+f.b||g.d>f.d+f.a)continue;if(Jrb.Id(a,h.a,h.c,e)){if(Jrb.Id(a,h.b,h.d,e))return;Jrb.Ld(a,h,0,e);Jrb.Hd(a,h,c,d);return}if(Jrb.Id(a,h.b,h.d,e)){Jrb.Ld(a,h,1,e);Jrb.Hd(a,h,c,d);return}}Jrb.fd(a,h,c,d)};Jrb.Id=function Id(a,b,c,d){var e;if((a.F&1)!=0)return false;e=Krb.Ji(a.Z,d);return b>e.c&&b<e.c+e.b&&c>e.d&&c<e.d+e.a};Jrb.Jd=function Jd(a,b){var c;c=a.b;a.b=b.b;b.b=c;c=a.d;a.d=b.d;b.d=c};Jrb.Kd=function Kd(a,b){var c,d,e,f,g,h;if(b.a==b.b&&b.c==b.d){for(g=new Krb.ueb(a.Z);g.a<g.c.a.length;){f=Krb.teb(g);if(Wrb.GG(f,b.a,b.c))return false}return true}h=Jrb.Ed(b);c=false;if(b.a>b.b){Jrb.Cd(b);c=true}for(d=0;d<a.Z.a.length;d++){f=Krb.Ji(a.Z,d);if(f.c>h.c+h.b||f.d>h.d+h.a||h.c>f.c+f.b||h.d>f.d+f.a)continue;if(Jrb.Id(a,b.a,b.c,d)){if(Jrb.Id(a,b.b,b.d,d)){c&&Jrb.Cd(b);return false}Jrb.Ld(a,b,0,d);e=Jrb.Kd(a,b);c&&Jrb.Cd(b);return e}if(Jrb.Id(a,b.b,b.d,d)){Jrb.Ld(a,b,1,d);e=Jrb.Kd(a,b);c&&Jrb.Cd(b);return e}}c&&Jrb.Cd(b);return true};Jrb.Ld=function Ld(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o;if(c==0){l=b.a;n=b.c;m=b.b;o=b.d}else{l=b.b;n=b.d;m=b.a;o=b.c}k=Krb.Ji(a.Z,d);i=m>l?k.c+k.b:k.c;j=o>n?k.d+k.a:k.d;e=m-l;f=o-n;if($wnd.Math.abs(e)>$wnd.Math.abs(f)){if(n==o){g=i;h=n}else{g=l+e*(j-n)/f;if(m>l==i>g){h=j}else{g=i;h=n+f*(i-l)/e}}}else{if(l==m){g=l;h=j}else{h=n+f*(i-l)/e;if(o>n==j>h){g=i}else{g=l+e*(j-n)/f;h=j}}}if(c==0){b.a=g;b.c=h}else{b.b=g;b.d=h}};Jrb.Md=function Md(a){var b,c,d,e,f,g;if(a.K.q==0)return;Jrb.ou(a.K,(a.F&256)!=0?63:(a.F&512)!=0?95:31);Jrb.Zc(a);d=Jrb.tu(a.K);e=false;a.p=tX(Drb.NY,Qsb,6,a.K.q,15,1);for(b=0;b<a.K.q;b++){a.p[b]=Jrb.nk(a.K,b);a.p[b]!=0&&(e=true);Jrb.xl(a.K,b)&&(a.p[b]=128);Jrb.al(a.K,b)&&(a.F&Vtb)==0&&(a.p[b]=256)}Jrb.Od(a,-10);Jrb.md(a);Jrb.ld(a);Jrb.nd(a);Jrb.Xc(a);Jrb.at(a,a.W);Jrb.$s(a,a.X);Jrb.Od(a,a.P);Jrb.qd(a);Hrb.Mmb(a.T.a,0);Hrb.Mmb(a.Z.a,0);if((a.F&1)!=0){Jrb.vd(a,d);Jrb.wd(a);Jrb.zd(a)}for(f=0;f<a.K.q;f++){if(Jrb.pd(a,f)){Jrb.Od(a,-3);Jrb.xd(a,f,d);Jrb.Od(a,a.P)}else if(a.p[f]!=0){Jrb.Od(a,a.p[f]);Jrb.xd(a,f,d);Jrb.Od(a,a.P)}else if(!e&&a.K.O!=1&&Jrb.Dk(a.K,f)!=1&&Jrb.Dk(a.K,f)!=6&&(a.F&vtb)==0&&Jrb.tk(a.K,f)==null&&Jrb.Dk(a.K,f)<Jrb.Uc.length&&Jrb.Uc[Jrb.Dk(a.K,f)]!=0){g=Jrb.Uc[Jrb.Dk(a.K,f)];Jrb.Pd(a,(c=a.L!=0?a.L:a.C!=0?a.C:-1,Zrb._U(g,c)));Jrb.xd(a,f,d);Jrb.Od(a,a.P)}else{Jrb.xd(a,f,d)}}if((a.F&1)==0){Jrb.wd(a);Jrb.zd(a);Jrb.vd(a,d)}};Jrb.Nd=function Nd(a,b,c,d){var e;e=c/2;switch(d&_tb){case _tb:if(b){a.w.a=b.c+b.b/2;a.w.b=b.d+b.a-e;break}case 0:a.w.a=a.v.c+a.v.b/2;a.w.b=a.v.d+a.v.a+e;!!b&&a.w.b>b.d+b.a-e&&(a.w.b=b.d+b.a-e);break;case aub:if(b){a.w.a=b.c+b.b/2;a.w.b=b.d+e;break}case bub:a.w.a=a.v.c+a.v.b/2;a.w.b=a.v.d-e;!!b&&a.w.b<b.d+e&&(a.w.b=b.d+e);}};Jrb.Od=function Od(a,b){if(a.J)return;if(b==-10){a.B=-999;b=a.P}b!=-2&&b!=-7&&a.M!=0&&(b=-4);if(b==a.B)return;if(a.B==-8&&b!=-9)return;b==-8&&(a.N=a.B);b==-9&&(b=a.N);a.B=b;switch(b){case 0:Jrb._s(a,a.D==0?cub:a.D);break;case -6:Jrb._s(a,a.D);break;case -4:Jrb._s(a,a.M);break;case -2:Jrb._s(a,a.t);break;case -3:Jrb._s(a,a.u);break;case -7:Jrb._s(a,a.G);break;case -8:Jrb._s(a,a.H);break;case -5:Jrb._s(a,a.O);break;case 64:a.d='rgb(32,96,255)';break;case 128:a.d='rgb(255,0,0)';break;case 256:a.d='rgb(192,0,255)';break;case 192:a.d='rgb(0,255,0)';break;case 320:a.d='rgb(255,160,0)';break;case 384:a.d='rgb(0,128,0)';break;case 448:a.d='rgb(160,0,0)';break;case 1:a.d='rgb(128,128,128)';break;default:a.d='rgb(0,0,0)';}};Jrb.Pd=function Pd(a,b){if(a.M!=0){if(a.B!=-4){a.B=-4;Jrb._s(a,a.M)}return}a.B=-5;a.O=b;a.d='rgb('+((b&dub)>>16)+','+((b&Ssb)>>8)+','+(b&255)+')'};Jrb.Qd=function Qd(a){var b,c,d,e,f;e=Jrb.Qh(a.Q,Jrb.Ak(a.K,0));c=Jrb.Qh(a.Q,Jrb.Ak(a.K,0));f=Jrb.Rh(a.Q,Jrb.Bk(a.K,0));d=Jrb.Rh(a.Q,Jrb.Bk(a.K,0));for(b=0;b<a.K.q;b++){e>Jrb.Qh(a.Q,Jrb.Ak(a.K,b))&&(e=Jrb.Qh(a.Q,Jrb.Ak(a.K,b)));c<Jrb.Qh(a.Q,Jrb.Ak(a.K,b))&&(c=Jrb.Qh(a.Q,Jrb.Ak(a.K,b)));f>Jrb.Rh(a.Q,Jrb.Bk(a.K,b))&&(f=Jrb.Rh(a.Q,Jrb.Bk(a.K,b)));d<Jrb.Rh(a.Q,Jrb.Bk(a.K,b))&&(d=Jrb.Rh(a.Q,Jrb.Bk(a.K,b)))}return new Wrb.LG(e,f,c-e,d-f)};Jrb.Rd=function Rd(a,b){var c,d;if(a.K.q==0)return null;a.v=Jrb.Qd(a);c=a.Q.c*Jrb.Ek(a.K);d=new Jrb.Th(a.v,b,c);if(d.c==1&&d.a==0&&d.b==0){d=null}else{Jrb.Mh(d,a.Q);Jrb.Oh(d,a.v)}Jrb.Nd(a,b,c,Fsb);return d};Jrb.Sd=function Sd(a){var b;b=a.L!=0?a.L:a.C!=0?a.C:-1;a.t=Zrb.aV(b);a.u=Zrb._U(eub,b);a.G=-24321;a.H=-6291392};Jrb.Td=function Td(a,b){var c,d,e,f;if(a.K.q==0)return null;e=Jrb.bt(a,b);Jrb.ou(a.K,(a.F&256)!=0?63:(a.F&512)!=0?95:31);Jrb.qd(a);Hrb.Mmb(a.T.a,0);Hrb.Mmb(a.Z.a,0);Jrb.Zc(a);Jrb.at(a,a.W);a.J=true;for(d=0;d<a.K.q;d++)Jrb.xd(a,d,null);a.J=false;c=a.Q.c*Jrb.Ek(a.K);Jrb.gd(a,c);Jrb.Nd(a,b,c,Fsb);if(Wrb.HG(b,a.v))return e;f=new Jrb.Th(a.v,b,c);Jrb.Mh(f,a.Q);Jrb.Oh(f,a.v);Jrb.Nh(f,a.w);if(!e)return f;Jrb.Mh(f,e);return e};Jrb.Ud=function Ud(a,b){Jrb.Wc(this);this.K=a;this.F=b;Jrb.od(this)};Z3(263,1,{});_.r=0;_.t=0;_.u=0;_.A=0;_.B=0;_.C=0;_.D=0;_.F=0;_.G=0;_.H=0;_.I=0;_.J=false;_.L=0;_.M=0;_.N=0;_.O=0;_.P=0;_.R=0;_.S=0;_.U=0;_.V=0;_.W=0;_.X=0;_.Y=0;Drb.SY=B5(263);Jrb.Vd=function Vd(a,b,c){this.b=a;this.c=b;this.a=c};Z3(119,1,{119:1},Jrb.Vd);_.a=0;_.b=0;_.c=0;Drb.QY=B5(119);Jrb.Wd=function Wd(){};Z3(62,1,{},Jrb.Wd);_.a=0;_.b=0;_.c=0;_.d=0;Drb.RY=B5(62);Z3(169,1,{169:1});_.mb=function Xd(){var a;a=new Erb.I7;Erb.H7(a,fub+this.pb()+'\"'+this.ob()+gub);return a.a};_.d=false;Drb.TY=B5(169);Jrb.Yd=function Yd(a,b,c){if(a.f[b])return 0;if(Jrb.Dk(a.k,b)==7){if(Jrb.rn(a.k,b)==3)return 6;else if(Jrb.Gn(a.k,b)==2)return a.a?0:4}else if(Jrb.Dk(a.k,b)==8){return 10}else if(Jrb.Dk(a.k,b)==15||Jrb.Dk(a.k,b)==33){if(Jrb.Gn(a.k,b)==3)return 8}else if(Jrb.Dk(a.k,b)==16||Jrb.Dk(a.k,b)==34||Jrb.Dk(a.k,b)==52){if(Jrb.Gn(a.k,b)==2)return 11;if(Jrb.Gn(a.k,b)==3){if(Jrb.mk(a.k,b)==1)return 12;c&&Jrb.Sl(a.k,b,1);return 5}}else if(Jrb.Dk(a.k,b)==6){if(Jrb.mk(a.k,b)==-1)return Jrb.rn(a.k,b)==3?16:Jrb.sn(a.k,b)==3?15:14;c&&Jrb.Sl(a.k,b,-1);return Jrb.rn(a.k,b)!=Jrb.sn(a.k,b)?2:3}return 0};Jrb.Zd=function Zd(a,b,c){if(a.f[b])return 0;if(a.a){if(Jrb.rn(a.k,b)!=3)return 0}else{if(Jrb.rn(a.k,b)>3)return 0}if(Jrb.Dk(a.k,b)==6){c&&Jrb.Sl(a.k,b,1);return 2}if(Jrb.Dk(a.k,b)==5){return 4}return 0};Jrb.$d=function $d(a,b,c){if(Jrb.mk(a.k,b)!=0)return 0;if(a.a){if(Jrb.Dk(a.k,b)==5){if(Jrb.ao(a.k,b)!=2)return 0;c&&Jrb.Sl(a.k,b,1);return 1}if(Jrb.Dk(a.k,b)==7){if(Jrb.ao(a.k,b)!=2)return 0;c&&Jrb.Sl(a.k,b,-1);return Jrb.be(a,b)?6:3}if(Jrb.Dk(a.k,b)==8){if(Jrb.ao(a.k,b)!=1)return 0;c&&Jrb.Sl(a.k,b,-1);return Jrb.be(a,b)?7:4}if(Jrb.Dk(a.k,b)==16){if(Jrb.ao(a.k,b)!=1)return 0;c&&Jrb.Sl(a.k,b,-1);return Jrb.be(a,b)?5:2}if(Jrb.Dk(a.k,b)==34){if(Jrb.ao(a.k,b)!=1)return 0;c&&Jrb.Sl(a.k,b,-1);return Jrb.be(a,b)?4:1}}else{if(Jrb.Dk(a.k,b)==5){if(Jrb.ao(a.k,b)>2)return 0;c&&Jrb.Sl(a.k,b,1);return 1}if(Jrb.Dk(a.k,b)==7){if(Jrb.ao(a.k,b)>2)return 0;c&&Jrb.Sl(a.k,b,-1);return Jrb.be(a,b)?5:3}if(Jrb.Dk(a.k,b)==8){if(Jrb.ao(a.k,b)>1)return 0;c&&Jrb.Sl(a.k,b,-1);return Jrb.be(a,b)?7:4}if(Jrb.Dk(a.k,b)==16){if(Jrb.ao(a.k,b)>1)return 0;c&&Jrb.Sl(a.k,b,-1);return Jrb.be(a,b)?5:2}}return 0};Jrb._d=function _d(a,b,c){var d,e,f;d=Jrb.Dk(a.k,b);if(d>=5&&d<=8||d==15||d==16||d==33||d==34||d==52){f=Jrb.Xn(a.k,b);if(f!=0)return true;e=Jrb.mk(a.k,b);if(d==5&&e>=0){c&&Jrb.Sl(a.k,b,e-1);return true}if(d!=5&&e<=0){c&&Jrb.Sl(a.k,b,e+1);return true}}return false};Jrb.ae=function ae(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;for(b=0;b<a.k.f;b++){Jrb.ou(a.k,1);if(a.d[b]){g=false;h=tX(Drb.NY,Qsb,6,a.k.f,15,1);o=tX(Drb.NY,Qsb,6,a.k.f,15,1);i=tX(Drb.NY,Qsb,6,a.k.f,15,1);h[0]=b;o[b]=-1;i[b]=1;e=0;j=0;while(e<=j&&!g){f=h[e];for(k=0;k<Jrb.Gn(a.k,f)&&!g;k++){l=(i[f]&1)==1^Jrb.Qk(a.k,Jrb.Hn(a.k,f,k))>1;d=Jrb.Fn(a.k,f,k);if(i[d]==0&&l){if(a.d[d]){if((i[f]&1)==1){a.d[b]=false;a.d[d]=false;a.n+=2;n=f;for(m=0;m<i[f];m++){c=Jrb.Dn(a.k,d,n);if(a.e[c]){a.e[c]=false;--a.c}Jrb.pm(a.k,c,Jrb.Qk(a.k,c)==1?2:Jrb.Qk(a.k,c)-1);d=n;n=o[d]}g=true}}else{h[++j]=d;o[d]=f;i[d]=i[f]+1}}}++e}}}};Jrb.be=function be(a,b){var c;for(c=0;c<Jrb.Gn(a.k,b);c++)if(Jrb.tl(a.k,Jrb.Fn(a.k,b,c)))return true;return false};Jrb.ce=function ce(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;if(b!=null){a.e=b}else{a.e=tX(Drb.c3,itb,6,a.k.g,16,1);for(m=0;m<a.k.g;m++){if(Jrb.Tk(a.k,m)==8){a.e[m]=true;Jrb.tm(a.k,m,1)}}}for(n=0;n<a.k.g;n++)a.e[n]&&++a.c;a.d=tX(Drb.c3,itb,6,a.k.f,16,1);a.f=tX(Drb.c3,itb,6,a.k.f,16,1);for(h=0;h<a.k.f;h++){o=0;for(p=0;p<Jrb.Gn(a.k,h);p++)a.e[Jrb.Hn(a.k,h,p)]&&++o;if(o>0){a.d[h]=true;++a.b;o==3&&(a.f[h]=true)}}a.i=tX(Drb.c3,itb,6,c.i.a.length,16,1);for(r=0;r<c.i.a.length;r++){a.i[r]=true;for(j=Krb.Ji(c.j,r),k=0,l=j.length;k<l;++k){i=j[k];if(!a.e[i]){a.i[r]=false;break}}}a.j=tX(Drb.c3,itb,6,a.k.f,16,1);a.g=tX(Drb.c3,itb,6,a.k.f,16,1);for(q=0;q<c.i.a.length;q++){if(a.i[q]&&Krb.Ji(c.j,q).length!=6){for(e=Krb.Ji(c.i,q),f=0,g=e.length;f<g;++f){d=e[f];Krb.Ji(c.j,q).length==5?(a.g[d]=true):(a.j[d]=true)}}}a.n=0};Jrb.de=function de(a,b,c){var d,e,f,g;Jrb.ou(a.k,1);g=new Jrb.Tr(a.k,1);Jrb.ce(a,b,g);if(a.c==0)return true;if(c)for(e=0;e<a.k.f;e++)a.d[e]&&Jrb.Dk(a.k,e)==7&&Jrb.Gn(a.k,e)==3&&Jrb.Sl(a.k,e,1);a.a=false;Jrb.oe(a,c);a.k.K&&Jrb.ge(a);Jrb.pe(a,g);Jrb.le(a,g);Jrb.ne(a);Jrb.he(a);while(Jrb.je(a,g,c))Jrb.he(a);Jrb.ke(a,g,c)&&Jrb.he(a);while(Jrb.ie(a,g,c))Jrb.he(a);while(a.c!=0){for(f=0;f<a.k.g;f++){if(a.e[f]){Jrb.fe(a,f);Jrb.he(a)}}}a.b-a.n>=2&&Jrb.ae(a);for(d=0;d<a.k.f;d++){if(a.d[d]&&Jrb.Wn(a.k,d)!=0){c&&(Jrb.mk(a.k,d)==1&&Jrb.ql(a.k,d)||Jrb.mk(a.k,d)==-1&&Jrb.Dk(a.k,d)==5)?Jrb.Sl(a.k,d,0):Jrb.dm(a.k,d,32);++a.n}}return a.b==a.n};Jrb.ee=function ee(a,b){return a==b-1?0:a+1};Jrb.fe=function fe(a,b){var c,d,e,f;if(Jrb.Tk(a.k,b)==1){Jrb.tm(a.k,b,2);a.n+=2}for(e=0;e<2;e++){c=Jrb.Ik(a.k,e,b);a.d[c]=false;for(f=0;f<Jrb.Gn(a.k,c);f++){d=Jrb.Hn(a.k,c,f);if(a.e[d]){a.e[d]=false;--a.c}}}};Jrb.ge=function ge(a){var b,c,d,e,f,g,h,i;for(c=0;c<a.k.g;c++){if(a.e[c]){for(e=0;e<2;e++){h=Jrb.Ik(a.k,e,c);b=false;for(g=0;g<Jrb.Gn(a.k,h);g++){if(c!=Jrb.Hn(a.k,h,g)&&a.e[Jrb.Hn(a.k,h,g)]){b=true;break}}if(!b){i=c;d=Jrb.Ik(a.k,1-e,c);while(i!=-1){a.d[h]=false;a.e[i]=false;--a.c;Jrb.tm(a.k,i,8);i=-1;h=d;for(f=0;f<Jrb.Gn(a.k,h);f++){if(a.e[Jrb.Hn(a.k,h,f)]){if(i==-1){i=Jrb.Hn(a.k,h,f);d=Jrb.Fn(a.k,h,f)}else{h=-1;i=-1;break}}}}h!=-1&&(a.d[d]=false);break}}}}};Jrb.he=function he(a){var b,c,d,e,f,g,h;do{h=false;for(c=0;c<a.k.g;c++){if(a.e[c]){f=false;for(e=0;e<2;e++){d=Jrb.Ik(a.k,e,c);b=false;for(g=0;g<Jrb.Gn(a.k,d);g++){if(c!=Jrb.Hn(a.k,d,g)&&a.e[Jrb.Hn(a.k,d,g)]){b=true;break}}if(!b){f=true;break}}if(f){h=true;Jrb.fe(a,c)}}}}while(h)};Jrb.ie=function ie(a,b,c){var d,e,f,g,h,i,j,k,l,m;for(k=0;k<b.i.a.length;k++){if(Krb.Ji(b.j,k).length!=6&&a.i[k]){i=true;m=Krb.Ji(b.j,k);for(h=0;h<m.length;h++){if(!a.e[m[h]]){i=false;break}}if(i){e=-1;f=0;l=Krb.Ji(b.i,k);for(g=0;g<l.length;g++){d=l[g];j=a.g[d]?Jrb.Yd(a,d,false):Jrb.Zd(a,d,false);if(f<j){f=j;e=g}}if(e!=-1){d=l[e];c&&(a.g[d]?Jrb.Yd(a,d,true):Jrb.Zd(a,d,true));Jrb.me(a,d);return true}}}}return false};Jrb.je=function je(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;s=tX(Drb.NY,Qsb,6,a.k.g,15,1);for(p=0;p<b.i.a.length;p++){r=Krb.Ji(b.j,p);l=true;for(i=0;i<r.length;i++){if(!a.e[r[i]]){l=false;break}}if(l)for(h=0;h<r.length;h++)++s[r[h]]}e=a.c;for(o=0;o<b.i.a.length;o++){g=false;q=Krb.Ji(b.i,o);r=Krb.Ji(b.j,o);for(h=0;h<r.length&&!g;h++){if(s[r[h]]>1){f=Jrb.ee(h,r.length);if(s[r[f]]==1){j=false;n=Jrb.ee(f,r.length);while(s[r[n]]==1){(!Jrb._d(a,q[n],false)||r.length!=6&&Jrb.Dk(a.k,q[n])!=6)&&(j=true);n=Jrb.ee(n,r.length)}if(!j){d=n>f?n-f:n+r.length-f;if(d>2&&(d&1)==1){for(m=1;m<d;m+=2){k=f+m<r.length?f+m:f+m-r.length;if(c){Jrb._d(a,q[k],true);Jrb._d(a,q[k==q.length-1?0:k+1],true)}Jrb.fe(a,r[k])}g=true}}}}}}return e!=a.c};Jrb.ke=function ke(a,b,c){var d,e,f,g,h,i,j,k;d=false;for(i=0;i<b.i.a.length;i++){if(Krb.Ji(b.j,i).length==6){h=true;j=Krb.Ji(b.i,i);k=Krb.Ji(b.j,i);for(f=0;f<6;f++){if(!Jrb._d(a,j[f],false)||!a.e[k[f]]){h=false;break}}if(h){if(c)for(g=0;g<6;g++)Jrb._d(a,j[g],true);for(e=0;e<6;e+=2)Jrb.fe(a,k[e]);d=true;break}}}return d};Jrb.le=function le(a,b){var c;for(c=0;c<a.k.g;c++){if(a.e[c]&&Jrb.Mr(b,c)){Jrb.me(a,Jrb.Ik(a.k,0,c));Jrb.me(a,Jrb.Ik(a.k,1,c))}}};Jrb.me=function me(a,b){var c,d;if(a.d[b]){a.d[b]=false;--a.b}for(d=0;d<Jrb.Gn(a.k,b);d++){c=Jrb.Hn(a.k,b,d);if(a.e[c]){a.e[c]=false;--a.c}}};Jrb.ne=function ne(a){var b,c,d,e,f;for(c=0;c<a.k.g;c++){if(Jrb.Qk(a.k,c)==2){for(e=0;e<2;e++){b=Jrb.Ik(a.k,e,c);if(Jrb.Dk(a.k,b)<=8){for(f=0;f<Jrb.Gn(a.k,b);f++){d=Jrb.Hn(a.k,b,f);if(a.e[d]){Jrb.me(a,b);break}}}}}}};Jrb.oe=function oe(a,b){var c;for(c=0;c<a.k.f;c++)a.d[c]&&Jrb.Xn(a.k,c)==0&&(!b||Jrb.Dk(a.k,c)==5&&Jrb.mk(a.k,c)<0||Jrb.Dk(a.k,c)==6||Jrb.Dk(a.k,c)==14||Jrb.ql(a.k,c)&&Jrb.mk(a.k,c)>0)&&Jrb.me(a,c)};Jrb.pe=function pe(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;t=tX(Drb.c3,itb,6,a.k.f,16,1);for(C=0;C<b.i.a.length;C++){D=Krb.Ji(b.j,C).length;if(D==3||D==5||D==6||D==7){if(a.i[C]){for(d=Krb.Ji(b.i,C),e=0,f=d.length;e<f;++e){c=d[e];t[c]=true}}}}m=tX(Drb.NY,Qsb,6,a.k.f,15,1);o=tX(Drb.c3,itb,6,a.k.f,16,1);for(j=0;j<a.k.g;j++){g=Jrb.Ik(a.k,0,j);h=Jrb.Ik(a.k,1,j);if(!t[g]&&!t[h]){if(a.e[j]){++m[g];++m[h]}if(Jrb.Tk(a.k,j)==16){o[g]=true;o[h]=true}}}B=tX(Drb.NY,Qsb,6,a.k.f,15,1);n=tX(Drb.NY,Qsb,6,a.k.f,15,1);for(G=0;G<a.k.f;G++){if(m[G]==1){n[0]=G;l=0;p=0;while(l<=p){for(q=0;q<Jrb.Gn(a.k,n[l]);q++){if(a.e[Jrb.Hn(a.k,n[l],q)]){k=Jrb.Fn(a.k,n[l],q);if((l==0||k!=n[l-1])&&m[k]!=0){n[++p]=k;if((m[k]&1)!=0){for(v=1;v<p;v+=2)B[n[v]]=-1;p=0}break}}}++l}}}i=tX(Drb.c3,itb,6,a.k.f,16,1);for(F=0;F<a.k.f;F++){if(!i[F]&&m[F]!=0){n[0]=F;i[F]=true;l=0;p=0;while(l<=p){for(q=0;q<Jrb.Gn(a.k,n[l]);q++){if(a.e[Jrb.Hn(a.k,n[l],q)]){k=Jrb.Fn(a.k,n[l],q);if(!i[k]){n[++p]=k;i[k]=true}}}++l}if((p&1)==0){for(r=0;r<=p;r++)B[n[r]]==0&&(B[n[r]]=Jrb.$d(a,n[r],false));u=true;for(s=0;s<=p;s++){if(B[n[s]]<=0){if(!Jrb._d(a,n[s],false)){u=false;break}}}if(u){A=0;w=-1;for(q=0;q<=p;q++){if(A<B[n[q]]){A=B[n[q]];w=n[q]}}if(A>0){Jrb.$d(a,w,true);Jrb.me(a,w)}}}}}};Jrb.qe=function qe(a){this.k=a};Z3(86,1,{},Jrb.qe);_.a=false;_.b=0;_.c=0;_.n=0;Drb.UY=B5(86);Jrb.re=function re(a,b){var c,d;c=0;for(d=0;d<a.j[b];d++)a.n[b][d]==2&&(Jrb.Dk(a,a.i[b][d])==7||Jrb.Dk(a,a.i[b][d])==8||Jrb.Dk(a,a.i[b][d])==16)&&++c;return c};Jrb.se=function se(a,b){var c,d,e,f,g,h;if(a.s[b]==0){return false}h=true;c=a.s[b];f=a.j[b];g=0;for(d=0;d<f;d++){e=a.i[b][d];g+=a.s[e]}$wnd.Math.abs(c)<=$wnd.Math.abs(g)&&Erb.T6(c)!=Erb.T6(g)&&(h=false);return h};Jrb.te=function te(a,b){var c,d,e,f,g,h,i;if(a.C[b]!=8||a.s[b]!=0||a.j[b]!=1||a.n[b][0]!=1)return false;c=a.i[b][0];if(a.C[c]==6){g=a.j[c];for(d=0;d<g;d++){e=a.i[c][d];if(e==b){continue}if(a.C[e]!=8){continue}f=Jrb.Dn(a,c,e);if(a.H[f]==2)return true}}else if(a.C[c]==7){if(a.s[c]==1)return true}else if(a.C[c]==16){h=a.j[c];i=0;for(d=0;d<h;d++){e=a.i[c][d];if(e==b)continue;if(a.C[e]!=8)continue;f=Jrb.Dn(a,c,e);a.H[f]==2&&++i}if(i==2)return true}else if(Jrb.ue(a,b))return true;return false};Jrb.ue=function ue(a,b){var c,d,e,f,g;if(a.C[b]!=8)return false;if(a.j[b]!=1)return false;c=a.i[b][0];if(a.C[c]==15){g=a.j[c];for(d=0;d<g;d++){e=a.i[c][d];if(e==b)continue;if(a.C[e]!=8)continue;f=Jrb.Dn(a,c,e);if(a.H[f]==2)return true}}return false};Jrb.ve=function ve(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;if(a.C[b]!=7||a.s[b]!=0||a.j[b]+a.o[b]>3)return false;if(b<a.f&&Jrb.Fr(a.p,b)){if(a.o[b]!=1)return false;if(Jrb.zn(a,b,7)!=1)return false;u=(Jrb.ou(a,7),a.p);for(s=0;s<u.i.a.length;s++){if(Jrb.Hr(u,s,b)){if(Krb.Ji(u.j,s).length==5||Krb.Ji(u.j,s).length==6){v=Krb.Ji(u.i,s);q=-1;for(i=0;i<v.length;i++){if(v[i]==b){q=i;break}}e=0;r=null;p=null;if(v.length==5){r=tX(Drb.NY,Qsb,6,2,15,1);r[0]=v[q-1<0?q+4:q-1];r[1]=v[q-4<0?q+1:q-4];p=tX(Drb.NY,Qsb,6,2,15,1);p[0]=v[q-2<0?q+3:q-2];p[1]=v[q-3<0?q+2:q-3]}if(v.length==6){r=tX(Drb.NY,Qsb,6,3,15,1);r[0]=v[q-1<0?q+5:q-1];r[1]=v[q-3<0?q+3:q-3];r[2]=v[q-5<0?q+1:q-5];p=tX(Drb.NY,Qsb,6,2,15,1);p[0]=v[q-2<0?q+4:q-2];p[1]=v[q-4<0?q+2:q-4]}for(j=0;j<v.length;j++)b!=v[j]&&Jrb.Dk(a,v[j])==7&&Jrb.wn(a,v[j])==1&&--e;for(k=0;k<r.length;k++){f=-1;g=-1;for(o=0;o<Jrb.Gn(a,r[k]);o++){if(!Jrb.zo(a,Jrb.Hn(a,r[k],o))){f=Jrb.Fn(a,r[k],o);g=Jrb.Hn(a,r[k],o);break}}if(f!=-1){if(a.C[f]==7&&a.o[f]==0&&a.j[f]+a.o[f]<=3&&!Jrb.we(a,f,false)){++e;continue}if(a.C[f]==8&&a.j[f]==1){e+=2;continue}if(g<a.g&&Jrb.Gr(a.p,g)){for(w=0;w<u.i.a.length;w++){if(u.d[w]&&Jrb.Hr(u,w,f)){t=Krb.Ji(u.i,w);for(n=0;n<t.length;n++){if(Jrb.Dk(a,t[n])==7&&Jrb.wn(a,t[n])==1){--e;break}}break}}}}}for(l=0;l<p.length;l++){f=-1;for(n=0;n<Jrb.Gn(a,p[l]);n++)Jrb.zo(a,Jrb.Hn(a,p[l],n))||(f=Jrb.Fn(a,p[l],n));Jrb.Dk(a,p[l])==6?f!=-1&&Jrb.re(a,f)!=0&&--e:Jrb.Dk(a,p[l])==7&&Jrb.wn(a,p[l])==0&&(f==-1||!(f<a.f&&Jrb.Fr(a.p,f))&&Jrb.re(a,f)==0)&&++e}return e>0}break}}return false}if(a.o[b]>1)return false;if(a.o[b]==1){m=-1;A=0;for(i=0;i<a.j[b];i++){d=a.i[b][i];if(a.n[b][i]==2){if(a.C[d]!=6)return false;m=d;continue}if(a.C[d]==8)return false;if(a.C[d]==7){--A;Jrb.we(a,d,false)&&--A;continue}d<a.f&&Jrb.Fr(a.p,d)&&--A}if(m==-1)return false;c=0;for(j=0;j<a.j[m];j++){if(a.n[m][j]==1){d=a.i[m][j];if(Jrb.re(a,d)!=0)return false;d<a.f&&Jrb.Fr(a.p,d)&&++c;a.C[d]==7&&!Jrb.we(a,d,true)&&++A;(a.C[d]==8||a.C[d]==16)&&--A}}c==2&&--A;return A>=0}for(h=0;h<a.j[b];h++){d=a.i[b][h];if(d<a.f&&Jrb.Fr(a.p,d))return false;if(a.C[d]!=6)return false;if(Jrb.re(a,d)!=0)return false;if(a.o[d]!=0&&Jrb.xe(a,d))return false}return true};Jrb.we=function we(a,b,c){var d,e,f;d=false;for(f=0;f<a.j[b];f++){if(!Jrb.zo(a,a.k[b][f])&&a.n[b][f]==1){e=a.i[b][f];if(!(e<a.f&&Jrb.Fr(a.p,e))&&(a.C[e]==6&&Jrb.re(a,e)==1||a.C[e]==16&&Jrb.re(a,e)==2)){if(d||!c)return true;d=true}}}return false};Jrb.xe=function xe(a,b){var c,d,e;for(d=0;d<a.j[b];d++){if(a.n[b][d]!=1){c=a.i[b][d];for(e=0;e<a.j[c];e++)if(a.n[c][e]==1&&Jrb.re(a,a.i[c][e])!=0)return true}}return false};Jrb.Ae=function Ae(){Jrb.Ae=_3;Jrb.ye=BX(nX(Drb.b3,1),hub,6,15,[-1,-1,-1,0,0,1,2,3,4,5,-1,0,0,0,6,7,8,9,-1,0,0,10,10,10,10,10,10,10,10,10,10,1,11,11,12,13,-1,0,0,10,10,10,10,10,10,10,10,10,10,0,0,0,11,14,-1,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,10,10,10,10,10,10,10,10,1,1,1,1,-1,-1,-1,-1,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]);Jrb.ze=BX(nX(Drb.b3,1),hub,6,15,[-1,-1,-1,0,0,0,2,5,5,5,-1,0,0,0,0,9,9,9,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1])};Jrb.Be=function Be(a,b,c){Jrb.Ae();var d,e,f,g,h,i,j,k,l,m,n,o,p,q;Jrb.ou(a,7);n=tX(Drb.OY,iub,6,a.j[b],14,1);m=0;for(i=0;i<a.j[b];i++){e=a.i[b][i];if(a.C[e]==1)continue;g=0;if((c&32)!=0){f=v3(a.n[b][i]);c==32190?o3(f,3)<0&&Jrb.Do(a,a.k[b][i])&&a.o[b]==1&&(f=0):o3(f,3)<0&&Jrb.zo(a,a.k[b][i])&&(f=0);g=G3(g,H3(f,4))}if((c&128)!=0){if(Jrb.ye[a.C[e]]==-1)throw h3(new Erb._z(jub+a.C[e]));g=i3(g,v3(Jrb.ye[a.C[e]]))}else if((c&64)!=0){if(Jrb.ze[a.C[e]]==-1)throw h3(new Erb._z(jub+a.C[e]));g=i3(g,v3(Jrb.ze[a.C[e]]))}if((c&256)!=0){o=a.j[e]-1;o>3&&(o=3);(c&512)==0&&o>1&&(o=1);g=G3(g,Drb.r3(o<<6))}(c&vtb)!=0&&(a.u[e]&8)!=0&&(g=G3(g,256));(c&Vtb)!=0&&e<a.f&&Jrb.Fr(a.p,e)&&(g=G3(g,512));(c&ptb)!=0&&(a.u[e]&Utb)!=0&&(g=G3(g,vtb));k=0;while(o3(g,n[k])<0)++k;for(l=i;l>k;l--)n[l]=n[l-1];n[k]=g;++m}m>4&&(m=4);d=0;for(j=0;j<m;j++){d=H3(d,11);d=G3(d,n[j])}d=H3(d,15);if(Jrb.ye[a.C[b]]==-1)throw h3(new Erb._z(jub+a.C[b]));d=G3(d,v3(Jrb.ye[a.C[b]]));if((c&2)!=0){q=!!a.p&&b<a.f?Jrb.ur(a.p,b):0;q>9&&(q=9);q>2&&(q-=2);d=G3(d,Drb.r3(q<<4))}else (c&1)!=0&&(a.u[b]&8)!=0&&(d=G3(d,64));(c&4)!=0&&b<a.f&&Jrb.Fr(a.p,b)&&(d=G3(d,vtb));(c&8)!=0&&(a.u[b]&qtb)!=0&&(d=G3(d,Vtb));(c&16)!=0&&(a.u[b]&Utb)!=0&&(d=G3(d,qtb));if((c&qtb)!=0){Jrb.se(a,b)&&(d=G3(d,Utb));if(Jrb.ve(a,b)){for(h=0;h<a.f;h++){if(Jrb.te(a,h)){d=G3(d,ptb);break}}}}if((c&Utb)!=0){p=v3(Jrb.zn(a,b,10));d=G3(d,H3(p,7))}return d};Jrb.Ce=function Ce(a,b,c,d,e,f){var g,h,i,j;i=0;for(h=0;h<a.Q.f;h++)E3(j3(Jrb.yk(a.Q,a.A[h]),d),0)&&++i;if(i==0)return;Jrb.Af(a,b);Jrb.vf(a,Drb.r3(i),c);for(g=0;g<a.Q.f;g++){j=j3(Jrb.yk(a.Q,a.A[g]),d);if(o3(j,0)!=0){Jrb.vf(a,Drb.r3(g),c);e!=1&&Jrb.vf(a,I3(j,f),e)}}};Jrb.De=function De(a,b,c,d,e,f){var g,h,i,j;i=0;for(h=0;h<a.Q.g;h++)(Jrb.Sk(a.Q,a.B[h])&d)!=0&&++i;if(i==0)return;Jrb.Af(a,b);Jrb.vf(a,Drb.r3(i),c);for(g=0;g<a.Q.g;g++){j=Jrb.Sk(a.Q,a.B[g])&d;if(j!=0){Jrb.vf(a,Drb.r3(g),c);e!=1&&Jrb.vf(a,Drb.r3(j>>f),e)}}};Jrb.Ee=function Ee(a){var b,c,d,e,f,g;while(true){f=tX(Drb.c3,itb,6,a.T+1,16,1);d=-1;for(c=0;c<a.Q.f;c++){if(Jrb.Xn(a.Q,c)!=0){f[a.e[c]]&&d<a.e[c]&&(d=a.e[c]);f[a.e[c]]=true}}if(d==-1)break;e=0;for(b=0;b<a.Q.f;b++){g=0;a.e[b]==d&&(g=++e);Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c,v3(a.e[b]));Jrb.tg(a.d[b],8,Drb.r3(g))}a.T=Jrb.df(a)}};Jrb.Fe=function Fe(a){var b,c,d,e;for(c=0;c<a.Q.f;c++){Jrb.wg(a.d[c],c);Jrb.tg(a.d[c],2*a.c+4,H3(v3(a.e[c]),a.c+4))}e=false;for(b=0;b<a.Q.f;b++)e=e|Jrb.Se(a,b,3);for(d=0;d<a.Q.g;d++)e=e|Jrb.Ne(a,d,3);if(!e)return false;while(a.T<a.Q.f){e=Jrb.af(a);if(!e)break;Jrb.cf(a);!!a.O&&Jrb.Mg(a.O,a.e)}return true};Jrb.Ge=function Ge(a){var b,c,d,e,f;for(c=0;c<a.Q.f;c++){Jrb.wg(a.d[c],c);Jrb.tg(a.d[c],a.c+1,C3(2,v3(a.e[c])))}f=tX(Drb.NY,Qsb,6,a.T+1,15,1);for(d=0;d<a.Q.f;d++)++f[a.e[d]];e=1;while(f[e]==1)++e;for(b=0;b<a.Q.f;b++){if(a.e[b]==e){Jrb.ug(a.d[b],1);break}}a.T=Jrb.df(a)};Jrb.He=function He(a,b,c){var d,e,f,g,h;if(Jrb.Dk(a.Q,b)!=6&&Jrb.Dk(a.Q,b)!=7)return false;e=Jrb.Fn(a.Q,b,0);f=Jrb.Fn(a.Q,b,1);if(Jrb.wn(a.Q,e)!=1||Jrb.wn(a.Q,f)!=1)return false;if(Jrb.Gn(a.Q,e)==1||Jrb.Gn(a.Q,f)==1)return false;if(Jrb.rn(a.Q,e)>3||Jrb.rn(a.Q,f)>3)return false;g=new Jrb.wj(a.Q,a.e,b,e);if(g.f&&c==1)return false;h=new Jrb.wj(a.Q,a.e,b,f);if(h.f&&c==1)return false;if(g.f&&h.f)return false;if(c==3){g.f&&g.c&&(a.V[b]=true);h.f&&h.c&&(a.V[b]=true)}d=a.ib?Jrb.Je(a,g,h):Jrb.Ie(g,h);if(c==1){a.cb[b]=d}else if(c==2){g.f&&(d==1?Jrb.ug(a.d[g.b],v3(a.e[e])):Jrb.ug(a.d[g.d],v3(a.e[e])));h.f&&(d==2?Jrb.ug(a.d[h.b],v3(a.e[f])):Jrb.ug(a.d[h.d],v3(a.e[f])))}return true};Jrb.Ie=function Ie(a,b){var c,d,e;d=Jrb.vj(a);e=Jrb.vj(b);if(d==-1||e==-1||(d+e&1)==0)return 3;c=0;switch(d+e){case 3:case 7:c=2;break;case 5:c=1;}return c};Jrb.Je=function Je(a,b,c){var d,e;d=tX(Drb.NY,Qsb,6,4,15,1);d[0]=b.b;d[1]=b.a;d[2]=c.a;d[3]=c.b;e=Jrb.Sj(a.Q,d);if($wnd.Math.abs(e)<0.3||$wnd.Math.abs(e)>kub)return 3;return e<0?2:1};Jrb.Ke=function Ke(a,b,c){var d,e,f,g,h;if(!Jrb.Ao(a.Q,b))return false;d=Jrb.Ik(a.Q,0,b);e=Jrb.Ik(a.Q,1,b);g=new Jrb.wj(a.Q,a.e,d,e);if(g.f&&c==1)return false;h=new Jrb.wj(a.Q,a.e,e,d);if(h.f&&c==1)return false;if(g.f&&h.f)return false;if(c==3){g.f&&(a.U[b]=Jrb.Qf(a,e));h.f&&(a.U[b]=Jrb.Qf(a,d))}f=a.ib?Jrb.Me(a,g,h):Jrb.Le(g,h);if(c==1){a.n[b]=f}else if(c==2){g.f&&(f==2?Jrb.ug(a.d[g.b],v3(a.e[e])):Jrb.ug(a.d[g.d],v3(a.e[e])));h.f&&(f==2?Jrb.ug(a.d[h.b],v3(a.e[d])):Jrb.ug(a.d[h.d],v3(a.e[d])))}return true};Jrb.Le=function Le(a,b){var c,d,e;d=Jrb.vj(a);e=Jrb.vj(b);if(d==-1||e==-1||(d+e&1)==0)return 3;c=0;switch(d+e){case 3:case 7:c=1;break;case 5:c=2;}return c};Jrb.Me=function Me(a,b,c){var d,e;d=tX(Drb.NY,Qsb,6,4,15,1);d[0]=b.b;d[1]=b.a;d[2]=c.a;d[3]=c.b;e=Jrb.Sj(a.Q,d);if($wnd.Math.abs(e)<0.3||$wnd.Math.abs(e)>kub)return 3;return e<0?1:2};Jrb.Ne=function Ne(a,b,c){var d,e,f,g,h,i,j,k;if(a.n[b]!=0)return false;if(a.Q.K){for(j=0;j<2;j++){d=Jrb.Ik(a.Q,j,b);for(k=0;k<Jrb.rn(a.Q,d);k++)if(E3(j3(Jrb.yk(a.Q,Jrb.Fn(a.Q,d,k)),jtb),0))return false}}if(Jrb.Qk(a.Q,b)==1)return Jrb.Ke(a,b,c);if(Jrb.Qk(a.Q,b)!=2)return false;if(Jrb.zo(a.Q,b))return false;f=Jrb.Ik(a.Q,0,b);g=Jrb.Ik(a.Q,1,b);if(Jrb.Gn(a.Q,f)==1||Jrb.Gn(a.Q,g)==1)return false;if(Jrb.Gn(a.Q,f)>3||Jrb.Gn(a.Q,g)>3)return false;if(Jrb.wn(a.Q,f)==2||Jrb.wn(a.Q,g)==2)return false;h=new Jrb.wj(a.Q,a.e,g,f);if(h.f&&c==1)return false;i=new Jrb.wj(a.Q,a.e,f,g);if(i.f&&c==1)return false;if(h.f&&i.f)return false;if(c==3){h.f&&h.c&&(a.U[b]=true);i.f&&i.c&&(a.U[b]=true)}e=Jrb.pl(a.Q,b)?3:a.ib?Jrb.Pe(a,h,i):Jrb.Oe(h,i);if(c==1){a.n[b]=e}else if(c==2){h.f&&(e==1?Jrb.ug(a.d[h.b],v3(a.e[f])):e==2&&Jrb.ug(a.d[h.d],v3(a.e[f])));i.f&&(e==1?Jrb.ug(a.d[i.b],v3(a.e[g])):e==2&&Jrb.ug(a.d[i.d],v3(a.e[g])))}return true};Jrb.Oe=function Oe(a,b){if(Jrb.vj(a)==-1||Jrb.vj(b)==-1)return 3;if(((Jrb.vj(a)|Jrb.vj(b))&1)!=0)return 3;return Jrb.vj(a)==Jrb.vj(b)?1:2};\nJrb.Pe=function Pe(a,b,c){var d,e,f,g,h,i,j;f=tX(Drb.LY,Osb,6,3,15,1);f[0]=Jrb.Ak(a.Q,c.a)-Jrb.Ak(a.Q,b.a);f[1]=Jrb.Bk(a.Q,c.a)-Jrb.Bk(a.Q,b.a);f[2]=Jrb.Ck(a.Q,c.a)-Jrb.Ck(a.Q,b.a);i=tX(Drb.LY,Osb,6,3,15,1);i[0]=Jrb.Ak(a.Q,b.b)-Jrb.Ak(a.Q,b.a);i[1]=Jrb.Bk(a.Q,b.b)-Jrb.Bk(a.Q,b.a);i[2]=Jrb.Ck(a.Q,b.b)-Jrb.Ck(a.Q,b.a);j=tX(Drb.LY,Osb,6,3,15,1);j[0]=Jrb.Ak(a.Q,c.b)-Jrb.Ak(a.Q,c.a);j[1]=Jrb.Bk(a.Q,c.b)-Jrb.Bk(a.Q,c.a);j[2]=Jrb.Ck(a.Q,c.b)-Jrb.Ck(a.Q,c.a);g=tX(Drb.LY,Osb,6,3,15,1);g[0]=f[1]*i[2]-f[2]*i[1];g[1]=f[2]*i[0]-f[0]*i[2];g[2]=f[0]*i[1]-f[1]*i[0];h=tX(Drb.LY,Osb,6,3,15,1);h[0]=f[1]*g[2]-f[2]*g[1];h[1]=f[2]*g[0]-f[0]*g[2];h[2]=f[0]*g[1]-f[1]*g[0];d=(i[0]*h[0]+i[1]*h[1]+i[2]*h[2])/($wnd.Math.sqrt(i[0]*i[0]+i[1]*i[1]+i[2]*i[2])*$wnd.Math.sqrt(h[0]*h[0]+h[1]*h[1]+h[2]*h[2]));e=(j[0]*h[0]+j[1]*h[1]+j[2]*h[2])/($wnd.Math.sqrt(j[0]*j[0]+j[1]*j[1]+j[2]*j[2])*$wnd.Math.sqrt(h[0]*h[0]+h[1]*h[1]+h[2]*h[2]));return d<0^e<0?1:2};Jrb.Qe=function Qe(a,b){var c,d,e,f;c=Jrb.kk(a.Q,b);d=Jrb.Un(a.Q,b,false);e=Jrb.Un(a.Q,b,true);f=-1;if(d!=e){c!=-1&&c>d?(f=c<<24>>24):(f=d<<24>>24)}else if(c!=-1){(c>e||c<e&&c>=Jrb.ao(a.Q,b))&&(f=c<<24>>24)}else if(!Jrb.ep(a.Q,b)&&Jrb.Kn(a.Q,b)!=0){f=Jrb.ao(a.Q,b);f-=Jrb.Xk(a.Q,b,f)}Jrb.lf(a,b,f);return f};Jrb.Re=function Re(a){var b,c,d,e,f,g,h,i,j,k,l;d=tX(Drb.NY,Qsb,6,a.N,15,1);for(b=0;b<a.Q.f;b++){k=Jrb.Gn(a.Q,b)+Jrb.Zn(a.Q,b);j=0;for(f=0;f<Jrb.sn(a.Q,b);f++){if(f<Jrb.Gn(a.Q,b)||f>=Jrb.rn(a.Q,b)){l=2*a.e[Jrb.Fn(a.Q,b,f)];c=Jrb.Hn(a.Q,b,f);Jrb.Qk(a.Q,c)==2&&(Jrb.zo(a.Q,c)||++l);for(h=0;h<j;h++)if(l<d[h])break;for(i=j;i>h;i--)d[i]=d[i-1];d[h]=l;++j}}Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c,v3(a.e[b]));for(g=k;g<a.N;g++)Jrb.tg(a.d[b],a.c+1,0);for(e=0;e<k;e++)Jrb.tg(a.d[b],a.c+1,Drb.r3(d[e]))}};Jrb.Se=function Se(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(a.cb[b]!=0)return false;if(Jrb.Dk(a.Q,b)!=5&&Jrb.Dk(a.Q,b)!=6&&Jrb.Dk(a.Q,b)!=7&&Jrb.Dk(a.Q,b)!=14&&Jrb.Dk(a.Q,b)!=15&&Jrb.Dk(a.Q,b)!=16)return false;if(Jrb.wn(a.Q,b)!=0){if(Jrb.Bo(a.Q,b))return Jrb.He(a,b,c);if(Jrb.Dk(a.Q,b)!=15&&Jrb.Dk(a.Q,b)!=16)return false}if(Jrb.Gn(a.Q,b)<3||Jrb.rn(a.Q,b)>4)return false;if(Jrb.mk(a.Q,b)>0&&Jrb.Dk(a.Q,b)==6)return false;if(Jrb.Dk(a.Q,b)==5&&Jrb.rn(a.Q,b)!=4)return false;if(a.Q.K){if(E3(j3(Jrb.yk(a.Q,b),jtb),0))return false;for(h=0;h<Jrb.rn(a.Q,b);h++)if(E3(j3(Jrb.yk(a.Q,Jrb.Fn(a.Q,b,h)),jtb),0))return false}if(Jrb.Dk(a.Q,b)==7&&!a.R[b])return false;o=tX(Drb.NY,Qsb,6,4,15,1);p=tX(Drb.NY,Qsb,6,4,15,1);k=tX(Drb.c3,itb,6,4,16,1);for(i=0;i<Jrb.rn(a.Q,b);i++){f=-1;e=0;for(j=0;j<Jrb.rn(a.Q,b);j++){if(!k[j]){if(f<a.e[Jrb.Fn(a.Q,b,j)]){f=a.e[Jrb.Fn(a.Q,b,j)];e=j}}}o[i]=e;p[i]=f;k[e]=true}if(Jrb.rn(a.Q,b)==4&&p[0]==p[1]&&p[2]==p[3])return false;if(Jrb.rn(a.Q,b)==4&&(p[0]==p[2]||p[1]==p[3]))return false;if(Jrb.rn(a.Q,b)==3&&p[0]==p[2])return false;l=0;m=0;n=false;for(g=1;g<Jrb.rn(a.Q,b);g++){if(p[g-1]==p[g]){if(c==1||p[g]==0)return false;l=Jrb.Fn(a.Q,b,o[g-1]);m=Jrb.Fn(a.Q,b,o[g]);c==3&&Jrb.Mo(a.Q,Jrb.Hn(a.Q,b,o[g]))&&(a.V[b]=true);n=true}}if(c!=1&&!n)return false;d=a.ib?Jrb.Ue(a,b,o):Jrb.Te(a,b,o);c==1?(a.cb[b]=d):c==2&&(d==1?Jrb.ug(a.d[l],v3(a.e[b])):d==2&&Jrb.ug(a.d[m],v3(a.e[b])));return true};Jrb.Te=function Te(a,b,c){var d,e,f,g,h,i,j,k,l,m;m=BX(nX(Drb.NY,2),lub,7,0,[BX(nX(Drb.NY,1),Qsb,6,15,[2,1,2,1]),BX(nX(Drb.NY,1),Qsb,6,15,[1,2,2,1]),BX(nX(Drb.NY,1),Qsb,6,15,[1,1,2,2]),BX(nX(Drb.NY,1),Qsb,6,15,[2,1,1,2]),BX(nX(Drb.NY,1),Qsb,6,15,[2,2,1,1]),BX(nX(Drb.NY,1),Qsb,6,15,[1,2,1,2])]);d=tX(Drb.LY,Osb,6,Jrb.rn(a.Q,b),15,1);for(g=0;g<Jrb.rn(a.Q,b);g++)d[g]=Jrb.Hk(a.Q,Jrb.Fn(a.Q,b,c[g]),b);j=Jrb.Mn(a.Q,b,c,d,null)<<24>>24;if(j!=3)return j;k=0;l=0;for(h=0;h<Jrb.rn(a.Q,b);h++){e=Jrb.Hn(a.Q,b,c[h]);if(Jrb.Ik(a.Q,0,e)==b){if(Jrb.Tk(a.Q,e)==129){l!=0&&Jrb.Cm(a.Q,b);k=h;l=1}if(Jrb.Tk(a.Q,e)==257){l!=0&&Jrb.Cm(a.Q,b);k=h;l=2}}}if(l==0)return 3;for(f=1;f<Jrb.rn(a.Q,b);f++)d[f]<d[0]&&(d[f]+=mtb);if(Jrb.rn(a.Q,b)==3){switch(k){case 0:(d[1]<d[2]&&d[2]-d[1]<ntb||d[1]>d[2]&&d[1]-d[2]>ntb)&&(l=3-l);break;case 1:d[2]-d[0]>ntb&&(l=3-l);break;case 2:d[1]-d[0]<ntb&&(l=3-l);}return l==1?2:1}i=0;d[1]<=d[2]&&d[2]<=d[3]?(i=0):d[1]<=d[3]&&d[3]<=d[2]?(i=1):d[2]<=d[1]&&d[1]<=d[3]?(i=2):d[2]<=d[3]&&d[3]<=d[1]?(i=3):d[3]<=d[1]&&d[1]<=d[2]?(i=4):d[3]<=d[2]&&d[2]<=d[1]&&(i=5);return m[i][k]==l?2:1};Jrb.Ue=function Ue(a,b,c){var d,e,f,g,h,i;d=tX(Drb.NY,Qsb,6,4,15,1);for(h=0;h<Jrb.rn(a.Q,b);h++)d[h]=Jrb.Fn(a.Q,b,c[h]);Jrb.rn(a.Q,b)==3&&(d[3]=b);e=rX(Drb.LY,[ssb,Osb],[12,6],15,[3,3],2);for(g=0;g<3;g++){e[g][0]=Jrb.Ak(a.Q,d[g+1])-Jrb.Ak(a.Q,d[0]);e[g][1]=Jrb.Bk(a.Q,d[g+1])-Jrb.Bk(a.Q,d[0]);e[g][2]=Jrb.Ck(a.Q,d[g+1])-Jrb.Ck(a.Q,d[0])}i=tX(Drb.LY,Osb,6,3,15,1);i[0]=e[0][1]*e[1][2]-e[0][2]*e[1][1];i[1]=e[0][2]*e[1][0]-e[0][0]*e[1][2];i[2]=e[0][0]*e[1][1]-e[0][1]*e[1][0];f=(e[2][0]*i[0]+e[2][1]*i[1]+e[2][2]*i[2])/($wnd.Math.sqrt(e[2][0]*e[2][0]+e[2][1]*e[2][1]+e[2][2]*e[2][2])*$wnd.Math.sqrt(i[0]*i[0]+i[1]*i[1]+i[2]*i[2]));return f>0?1:2};Jrb.Ve=function Ve(a){var b,c;b=0;Krb.Web(a.d);for(c=0;c<a.d.length;c++){(c==0||Jrb.vg(a.d[c],a.d[c-1])!=0)&&++b;a.e[a.d[c].a]=b}return b};Jrb.We=function We(a){var b,c,d,e,f,g,h,i,j,k,l,m;if(a.w)return;a.w=new Krb.Yi;k=0;l=tX(Drb.NY,Qsb,6,a.Q.f,15,1);g=tX(Drb.NY,Qsb,6,a.Q.f,15,1);i=tX(Drb.NY,Qsb,6,a.Q.g,15,1);for(b=0;b<a.Q.f;b++){if(l[b]==0&&(Jrb.Lo(a.Q,b)||Jrb.wn(a.Q,b)==1)){g[0]=b;h=1;j=0;l[b]=++k;c=tX(Drb.c3,itb,6,a.Q.g,16,1);for(f=0;f<h;f++){for(m=0;m<Jrb.Gn(a.Q,g[f]);m++){e=Jrb.Hn(a.Q,g[f],m);if(Jrb.Mo(a.Q,e)||Jrb.Qk(a.Q,e)==2||Jrb.Ao(a.Q,e)){d=Jrb.Fn(a.Q,g[f],m);if(!c[e]){i[j++]=e;c[e]=true}if(l[d]==0){g[h++]=d;l[d]=k}}}}Krb.Ei(a.w,new Jrb.Cg(g,h,i,j))}}};Jrb.Xe=function Xe(a){var b;a.R=tX(Drb.c3,itb,6,a.Q.f,16,1);for(b=0;b<a.Q.f;b++){if(Jrb.Dk(a.Q,b)==7){if(Jrb.Gn(a.Q,b)==4){a.R[b]=true;continue}if(Jrb.Gn(a.Q,b)==3){if(Jrb.An(a.Q,b)==3){a.R[b]=true;continue}if(Jrb.mk(a.Q,b)==1){a.R[b]=true;continue}if(Jrb.Fo(a.Q,b,true))continue;if((a.P&32)!=0){a.R[b]=true;continue}if(Jrb.Ko(a.Q,b)){a.R[b]=true;continue}}}}};Jrb.Ye=function Ye(a,b){var c,d,e,f;e=false;for(d=0;d<a.Q.g;d++)if(Jrb.Ne(a,d,1)){a.p[d]=a.K;b&&Jrb.mf(a,d);e=true}f=false;for(c=0;c<a.Q.f;c++)if(Jrb.Se(a,c,1)){a.hb[c]=a.K;b&&Jrb.nf(a,c);f=true}f&&(a.K=!a.K);return e||f};Jrb.Ze=function Ze(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B;s=tX(Drb.c3,itb,6,a.Q.f,16,1);t=tX(Drb.c3,itb,6,a.Q.g,16,1);b=0;v=false;if((a.P&128)!=0){a.X=tX(Drb.NY,Qsb,6,a.Q.f,15,1);a.W=tX(Drb.NY,Qsb,6,a.Q.g,15,1)}for(d=0;d<a.Q.f;d++){if(a.V[d]){if(!a.eb[d]){if(Jrb.Se(a,d,1)){a.eb[d]=true;s[d]=true;++b}}}}for(f=0;f<a.Q.g;f++){if(a.U[f]){if(!a.o[f]){if(Jrb.Ne(a,f,1)){a.o[f]=true;t[f]=true;++b}}}}if(b==1){for(c=0;c<a.Q.f;c++){if(s[c]){a.cb[c]=0;break}}for(e=0;e<a.Q.g;e++){if(t[e]){a.n[e]=0;break}}}else if(b>1){Jrb.We(a);a.S=0;for(h=new Krb.ueb(a.w);h.a<h.c.a.length;){g=Krb.teb(h);u=0;w=0;k=0;j=0;l=-1;i=-1;for(o=0;o<g.a.length;o++){if(s[g.a[o]]){++u;if(a.cb[g.a[o]]==1||a.cb[g.a[o]]==2){++w;v=true;if(l<a.e[g.a[o]]){l=a.e[g.a[o]];k=g.a[o]}}}}for(p=0;p<g.b.length;p++){if(t[g.b[p]]){++u;A=a.e[Jrb.Ik(a.Q,0,g.b[p])];B=a.e[Jrb.Ik(a.Q,1,g.b[p])];m=A>B?(A<<16)+B:(B<<16)+A;if(a.n[g.b[p]]==1||a.n[g.b[p]]==2){++w;v=true;if(i<m){i=m;j=g.b[p]}}}}if(u==0)continue;if(u==1){for(q=0;q<g.a.length;q++)s[g.a[q]]&&(a.cb[g.a[q]]=0);for(n=0;n<g.b.length;n++)t[g.b[n]]&&(a.n[g.b[n]]=0)}else{if(w==1){for(q=0;q<g.a.length;q++)s[g.a[q]]&&(a.cb[g.a[q]]=3);for(n=0;n<g.b.length;n++)t[g.b[n]]&&(a.n[g.b[n]]=3)}else{if((a.P&128)!=0){++a.S;for(q=0;q<g.a.length;q++)s[g.a[q]]&&(a.X[g.a[q]]=a.S);for(n=0;n<g.b.length;n++)t[g.b[n]]&&(a.W[g.b[n]]=a.S)}r=false;l!=-1?a.cb[k]==2&&(r=true):a.n[j]==2&&(r=true);if(r){for(q=0;q<g.a.length;q++){if(s[g.a[q]]){switch(a.cb[g.a[q]]){case 1:a.cb[g.a[q]]=2;break;case 2:a.cb[g.a[q]]=1;}}}for(n=0;n<g.b.length;n++){if(t[g.b[n]]){switch(a.n[g.b[n]]){case 1:a.n[g.b[n]]=2;break;case 2:a.n[g.b[n]]=1;}}}}}}}}return v};Jrb.$e=function $e(a,b){var c,d,e,f,g,h,i,j,k,l,m;f=rX(Drb.NY,[lub,Qsb],[7,6],15,[2,32],2);for(g=0;g<2;g++){c=tX(Drb.NY,lub,7,32,0,2);m=0;for(e=0;e<32;e++){if(b[g][e]!=null){k=b[g][e].length;c[e]=tX(Drb.NY,Qsb,6,k,15,1);for(h=0;h<k;h++)c[e][h]=a.e[b[g][e][h]];Hrb.Nmb(c[e],Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));++m}}for(l=m;l>0;l--){j=0;i=null;for(d=0;d<32;d++){if(c[d]!=null){if(i==null||i.length<c[d].length){i=c[d];j=d}else if(i.length==c[d].length){for(h=i.length-1;h>=0;h--){if(i[h]<c[d][h]){i=c[d];j=d;break}}}}}f[g][j]=l;c[j]=null}}return f};Jrb._e=function _e(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;l=false;if(a.Q.K){for(j=0;j<a.Q.g;j++){if(Jrb.Sk(a.Q,j)!=0){l=true;break}}}a.N=2;for(c=0;c<a.Q.f;c++)a.N=$wnd.Math.max(a.N,Jrb.Gn(a.Q,c)+Jrb.Zn(a.Q,c));i=$wnd.Math.max(2,l?(62+a.c+a.N*(a.c+23))/63|0:(62+a.c+a.N*(a.c+5))/63|0);a.e=tX(Drb.NY,Qsb,6,a.Q.q,15,1);a.d=tX(Drb.ZY,mub,118,a.Q.f,0,1);for(d=0;d<a.Q.f;d++)a.d[d]=new Jrb.xg(i);h=false;for(e=0;e<a.Q.f;e++){Jrb.wg(a.d[e],e);E3(j3(Jrb.yk(a.Q,e),1),0)||Jrb.tk(a.Q,e)!=null?Jrb.tg(a.d[e],8,6):Jrb.tg(a.d[e],8,v3(Jrb.Dk(a.Q,e)));Jrb.tg(a.d[e],8,v3(Jrb.wk(a.Q,e)));Jrb.tg(a.d[e],2,v3(Jrb.wn(a.Q,e)));Jrb.tg(a.d[e],4,v3(Jrb.Gn(a.Q,e)+Jrb.Zn(a.Q,e)));E3(j3(Jrb.yk(a.Q,e),1),0)?Jrb.tg(a.d[e],4,8):Jrb.tg(a.d[e],4,v3(8+Jrb.mk(a.Q,e)));Jrb.tg(a.d[e],5,v3($wnd.Math.min(31,Jrb.An(a.Q,e))));Jrb.tg(a.d[e],4,v3(Jrb.Qe(a,e)+1));Jrb.tg(a.d[e],2,v3(Jrb.zk(a.Q,e)>>4));if(a.Q.K){Jrb.tg(a.d[e],46,Jrb.yk(a.Q,e));Jrb.tk(a.Q,e)!=null&&(h=true)}}a.T=Jrb.df(a);if(a.T<a.Q.f){for(b=0;b<a.Q.f;b++){Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c,v3(a.e[b]));m=tX(Drb.NY,Qsb,6,Jrb.Gn(a.Q,b),15,1);for(o=0;o<Jrb.Gn(a.Q,b);o++){m[o]=a.e[Jrb.Fn(a.Q,b,o)]<<5;m[o]|=$wnd.Math.min(31,Jrb.En(a.Q,Jrb.Hn(a.Q,b,o)))}Hrb.Nmb(m,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));for(p=a.N;p>m.length;p--)Jrb.tg(a.d[b],a.c+5,0);for(n=m.length-1;n>=0;n--)Jrb.tg(a.d[b],a.c+5,Drb.r3(m[n]))}a.T=Jrb.df(a)}if(h&&a.T<a.Q.f){for(b=0;b<a.Q.f;b++){Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c,v3(a.e[b]));g=Jrb.tk(a.Q,b);s=g==null?0:$wnd.Math.min(12,g.length);for(o=12;o>s;o--)Jrb.tg(a.d[b],8,0);for(n=s-1;n>=0;n--)Jrb.tg(a.d[b],8,Drb.r3(g[n]))}a.T=Jrb.df(a)}if(l&&a.T<a.Q.f){for(b=0;b<a.Q.f;b++){Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c,v3(a.e[b]));k=tX(Drb.OY,iub,6,Jrb.Gn(a.Q,b)+Jrb.Zn(a.Q,b),14,1);q=0;for(o=0;o<Jrb.sn(a.Q,b);o++){if(o<Jrb.Gn(a.Q,b)||o>=Jrb.rn(a.Q,b)){k[q]=v3(a.e[Jrb.Fn(a.Q,b,o)]);k[q]=H3(k[q],23);k[q]=G3(k[q],v3(Jrb.Sk(a.Q,Jrb.Hn(a.Q,b,o))));++q}}Hrb.Nmb(k,Hrb.rnb(a4(Krb.bfb.prototype.qc,Krb.bfb,[])));for(p=a.N;p>k.length;p--)Jrb.tg(a.d[b],a.c+23,0);for(n=k.length-1;n>=0;n--)Jrb.tg(a.d[b],a.c+23,k[n])}a.T=Jrb.df(a)}if((a.P&8)!=0&&a.T<a.Q.f){r=new Jrb.ku;for(f=0;f<a.Q.f;f++)Jrb.ok(a.Q,f)!=null&&Jrb.iu(r,Jrb.ok(a.Q,f));for(b=0;b<a.Q.f;b++){t=Jrb.ok(a.Q,b)==null?0:1+Jrb.ju(r,Jrb.ok(a.Q,b));Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c,v3(a.e[b]));Jrb.tg(a.d[b],a.c,Drb.r3(t))}a.T=Jrb.df(a)}if((a.P&16)!=0&&a.T<a.Q.f){for(b=0;b<a.Q.f;b++){Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c,v3(a.e[b]));Jrb.tg(a.d[b],1,v3(Jrb.xl(a.Q,b)?1:0))}a.T=Jrb.df(a)}(a.P&512)!=0&&a.Q.K&&Jrb.Ee(a)};Jrb.af=function af(a){var b,c,d,e,f,g,h,i,j;for(c=0;c<a.Q.f;c++){Jrb.wg(a.d[c],c);Jrb.tg(a.d[c],2*a.c+4,H3(v3(a.e[c]),a.c+4))}for(i=1;i<=a.T;i++){e=false;for(d=0;d<a.Q.f;d++)a.e[d]==i&&(e=e|Jrb.Se(a,d,2));if(e){h=a.T;a.T=Jrb.df(a);if(a.T!=h)return true;for(b=0;b<a.Q.f;b++){Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],2*a.c+4,H3(v3(a.e[b]),a.c+4))}}}j=tX(Drb.$Y,mub,151,a.Q.g,0,1);for(g=0;g<j.length;g++)j[g]=new Jrb.Ag(a.e[Jrb.Ik(a.Q,0,g)],a.e[Jrb.Ik(a.Q,1,g)],g);Krb.Ueb(j,0,j.length,null);for(f=0;f<j.length;f++){if(Jrb.Ne(a,j[f].a,2)){while(f+1<j.length&&Jrb.zg(j[f],j[f+1])==0)Jrb.Ne(a,j[++f].a,2);h=a.T;a.T=Jrb.df(a);if(a.T!=h)return true;for(b=0;b<a.Q.f;b++){Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],2*a.c+4,H3(v3(a.e[b]),a.c+4))}}}return false};Jrb.bf=function bf(a){var b,c,d,e,f,g,h,i,j,k;f=0;for(c=0;c<a.Q.f;c++)a.ab[c]!=0&&(a.ab[c]!=2||(a.P&256)==0)&&++f;if(f==0)return;k=tX(Drb.NY,Qsb,6,f,15,1);f=0;for(d=0;d<a.Q.f;d++){if(a.ab[d]!=0&&(a.ab[d]!=2||(a.P&256)==0)){k[f]=a.ab[d]<<29|a._[d]<<24|a.e[d]<<12|d;++f}}Hrb.Nmb(k,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));g=0;j=0;h=k[0]&cub;while(true){++j;if(j==k.length||h!=(k[j]&cub)){e=tX(Drb.NY,Qsb,6,j-g,15,1);for(i=g;i<j;i++){b=k[i]&4095;e[i-g]=b;a.fb[b]=true}Krb.Ei(a.gb,e);if(j==k.length)break;h=k[j]&cub;g=j}}};Jrb.cf=function cf(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;h=false;for(i=0;i<a.gb.a.length;i++){g=Krb.Ji(a.gb,i);b=true;n=-1;j=false;for(l=0;l<g.length;l++){c=g[l];if(a.cb[c]==0){b=false;break}if(a.cb[c]!=3){k=true;for(m=0;m<g.length;m++){if(m!=l&&a.e[c]==a.e[g[m]]){k=false;break}}if(k&&n<a.e[c]){n=a.e[c];j=a.cb[c]==1}}}if(b&&n!=-1){for(d=g,e=0,f=d.length;e<f;++e){c=d[e];(a.cb[c]==1||a.cb[c]==2)&&(a.db[c]=j);a.fb[c]=false}Krb.Ri(a.gb,g);h=true;--i}}return h};Jrb.df=function df(a){var b,c;b=Jrb.Ve(a);do{c=b;Jrb.Re(a);b=Jrb.Ve(a)}while(c!=b);return b};Jrb.ef=function ef(a){(a.P&1)!=0&&(a.P&2)==0&&(a.f=Krb.Ceb(a.e,a.Q.f));if((a.P&Vtb)==0){a.V=tX(Drb.c3,itb,6,a.Q.f,16,1);a.U=tX(Drb.c3,itb,6,a.Q.g,16,1);if(a.T<a.Q.f){Jrb.Fe(a);if((a.P&Vtb)==0){Jrb.cf(a);!!a.O&&Jrb.Mg(a.O,a.e)}}}a.f==null&&(a.P&1)!=0&&(a.P&2)!=0&&(a.f=Krb.Ceb(a.e,a.Q.f));while(a.T<a.Q.f){Jrb.Ge(a);if((a.P&Vtb)==0){Jrb.cf(a);!!a.O&&Jrb.Mg(a.O,a.e)}}if((a.P&Vtb)==0){Jrb.cf(a);Jrb.Ze(a);Jrb.Df(a)}};Jrb.ff=function ff(a){var b,c,d,e,f;f=a.T;e=Krb.Ceb(a.e,a.Q.f);if(!a.Q.K){Jrb.hf(a);Jrb.Vf(a,f,e)}a.ab=tX(Drb.JY,nub,6,a.Q.f,15,1);a._=tX(Drb.JY,nub,6,a.Q.f,15,1);for(c=0;c<a.Q.f;c++){a.ab[c]=Jrb.rk(a.Q,c)<<24>>24;a._[c]=Jrb.qk(a.Q,c)<<24>>24}a.k=tX(Drb.JY,nub,6,a.Q.g,15,1);a.j=tX(Drb.JY,nub,6,a.Q.g,15,1);for(d=0;d<a.Q.g;d++){a.k[d]=Jrb.Nk(a.Q,d)<<24>>24;a.j[d]=Jrb.Mk(a.Q,d)<<24>>24}Jrb.gf(a);a.Y=false;a.L=tX(Drb.c3,itb,6,a.Q.f,16,1);for(b=0;b<a.Q.f;b++){if(a.cb[b]!=0){a.L[b]=true;a.Y=true}}Jrb.kf(a);a.O=null;a.bb=tX(Drb.c3,itb,6,a.Q.f,16,1);if(a.Y){a.O=new Jrb.Sg(a.Q,e,a.L,a.cb,a.n,a.ab,a._,a.hb,a.p,a.bb);Jrb.Ng(a.O)}a.db=tX(Drb.c3,itb,6,a.Q.f,16,1);a.fb=tX(Drb.c3,itb,6,a.Q.f,16,1);a.gb=new Krb.Yi;!!a.O&&Jrb.Mg(a.O,a.e);Jrb.bf(a);Jrb.Vf(a,f,e);Jrb.jf(a);!!a.O&&(a.J=Jrb.Jg(a.O));Jrb.uf(a)};Jrb.gf=function gf(a){var b,c,d,e,f,g;a.K=true;f=Jrb.Ye(a,false);while(a.T<a.Q.f&&f){for(b=0;b<a.Q.f;b++){Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c,v3(a.e[b]));g=a.cb[b]<<7;if((a.cb[b]==1||a.cb[b]==2)&&a.ab[b]!=0){g|=a.ab[b]<<5;g|=a._[b]}Jrb.tg(a.d[b],18,H3(Drb.r3(g),9))}for(c=0;c<a.Q.g;c++){d=a.n[c]<<7;if((a.n[c]==1||a.n[c]==2)&&Jrb.Tk(a.Q,c)==1&&a.k[c]!=0){d|=a.k[c]<<5;d|=a.j[c]}Jrb.ug(a.d[Jrb.Ik(a.Q,0,c)],Drb.r3(d));Jrb.ug(a.d[Jrb.Ik(a.Q,1,c)],Drb.r3(d))}e=Jrb.df(a);if(a.T==e)break;a.T=e;f=Jrb.Ye(a,false)}};Jrb.hf=function hf(a){var b,c,d,e;a.K=true;a.Z=tX(Drb.JY,nub,6,a.Q.f,15,1);a.g=tX(Drb.JY,nub,6,a.Q.g,15,1);e=Jrb.Ye(a,true);while(a.T<a.Q.f&&e){for(b=0;b<a.Q.f;b++){Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c+4,G3(H3(v3(a.e[b]),4),v3(a.cb[b]<<2)))}for(c=0;c<a.Q.g;c++){Jrb.ug(a.d[Jrb.Ik(a.Q,0,c)],v3(a.n[c]));Jrb.ug(a.d[Jrb.Ik(a.Q,1,c)],v3(a.n[c]))}d=Jrb.df(a);if(a.T==d)break;a.T=d;e=Jrb.Ye(a,true)}};Jrb.jf=function jf(a){var b,c,d,e,f,g,h;a.K=true;d=Jrb.tf(a);!!a.O&&Jrb.Mg(a.O,a.e)&&(d=Jrb.tf(a));Jrb.Ye(a,false)&&Jrb.cf(a);g=true;while(a.T<a.Q.f&&g){e=Jrb.$e(a,d);for(b=0;b<a.Q.f;b++){Jrb.wg(a.d[b],b);Jrb.tg(a.d[b],a.c,v3(a.e[b]));Jrb.tg(a.d[b],20,0);!a.bb[b]&&a.ab[b]!=0&&Jrb.ug(a.d[b],i3(v3(a.ab[b]<<18),H3(v3(e[a.ab[b]==1?0:1][a._[b]]),8)));h=a.cb[b];a.db[b]&&(h==1?(h=2):h==2&&(h=1));Jrb.ug(a.d[b],Drb.r3(h<<4))}for(c=0;c<a.Q.g;c++){Jrb.ug(a.d[Jrb.Ik(a.Q,0,c)],v3(a.n[c]));Jrb.ug(a.d[Jrb.Ik(a.Q,1,c)],v3(a.n[c]))}f=Jrb.df(a);if(a.T==f)break;a.T=f;g=false;if(!!a.O&&Jrb.Mg(a.O,a.e)){g=true;d=Jrb.tf(a)}if(Jrb.Ye(a,false)){g=true;Jrb.cf(a)}}};Jrb.kf=function kf(a){var b,c;for(b=0;b<a.Q.f;b++)(!a.L[b]||a.cb[b]==3)&&(a.ab[b]=0);for(c=0;c<a.Q.g;c++)(Jrb.Tk(a.Q,c)!=1||a.n[c]==0||a.n[c]==3)&&(a.k[c]=0)};Jrb.lf=function lf(a,b,c){if(a.a==null){a.a=tX(Drb.JY,nub,6,a.Q.f,15,1);Krb.Feb(a.a)}a.a[b]=c<<24>>24};Jrb.mf=function mf(b,c){var d,e,f,g,h,i;if((b.n[c]==1||b.n[c]==2)&&!Jrb.Po(b.Q,c)){h=false;try{for(g=0;g<2;g++){d=Jrb.Ik(b.Q,g,c);if(Jrb.Gn(b.Q,d)==3){e=tX(Drb.NY,Qsb,6,2,15,1);f=0;for(i=0;i<Jrb.Gn(b.Q,d);i++)Jrb.Hn(b.Q,d,i)!=c&&(e[f++]=Jrb.Fn(b.Q,d,i));b.e[e[0]]>b.e[e[1]]^Jrb.of(b,d,e[0],e[1])&&(h=!h)}}}catch(a){a=g3(a);if(zY(a,15)){b.g[c]=3;return}else throw h3(a)}b.n[c]==1^h?(b.g[c]=1):(b.g[c]=2)}};Jrb.nf=function nf(b,c){var d,e,f,g,h,i,j;if(b.cb[c]==1||b.cb[c]==2){i=false;if(Jrb.wn(b.Q,c)==2&&Jrb.Gn(b.Q,c)==2){try{for(h=0;h<2;h++){d=Jrb.Fn(b.Q,c,h);if(Jrb.Gn(b.Q,d)==3){f=tX(Drb.NY,Qsb,6,2,15,1);g=0;for(j=0;j<Jrb.Gn(b.Q,d);j++)Jrb.In(b.Q,d,j)==1&&(f[g++]=Jrb.Fn(b.Q,d,j));b.e[f[0]]>b.e[f[1]]^Jrb.of(b,d,f[0],f[1])&&(i=!i)}}}catch(a){a=g3(a);if(zY(a,15)){b.Z[c]=3;return}else throw h3(a)}}else{try{e=Jrb.qf(b,c)}catch(a){a=g3(a);if(zY(a,15)){b.Z[c]=3;return}else throw h3(a)}for(h=1;h<e.length;h++)for(j=0;j<h;j++)b.e[e[h]]<b.e[e[j]]&&(i=!i)}b.cb[c]==1^i?(b.Z[c]=1):(b.Z[c]=2)}};Jrb.of=function of(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L;if(Jrb.Dk(a.Q,c)!=Jrb.Dk(a.Q,d))return Jrb.Dk(a.Q,c)>Jrb.Dk(a.Q,d);if(Jrb.wk(a.Q,c)!=Jrb.wk(a.Q,d)){H=Jrb.ul(a.Q,c)?(Jrb.Ej(),Jrb.Cj)[Jrb.Dk(a.Q,c)]:Jrb.wk(a.Q,c);I=Jrb.ul(a.Q,d)?(Jrb.Ej(),Jrb.Cj)[Jrb.Dk(a.Q,d)]:Jrb.wk(a.Q,d);return H>I}w=a.Q.f;s=tX(Drb.NY,Qsb,6,w,15,1);u=tX(Drb.NY,Qsb,6,w,15,1);v=tX(Drb.NY,Qsb,6,w,15,1);t=tX(Drb.c3,itb,6,w,16,1);i=tX(Drb.c3,itb,6,a.Q.q,16,1);s[0]=b;s[1]=c;s[2]=d;u[0]=-1;u[1]=0;u[2]=0;i[b]=true;i[c]=true;i[d]=true;m=1;A=2;G=tX(Drb.NY,Qsb,6,64,15,1);G[1]=1;G[2]=3;o=2;while(m<=A){while(m<G[o]){n=s[m];if(!t[m]){p=0;q=0;for(C=0;C<Jrb.Gn(a.Q,n);C++){k=Jrb.Fn(a.Q,n,C);if(A+Jrb.In(a.Q,n,C)+1>=w){w+=a.Q.f;s=Jrb.Zf(s,w);u=Jrb.Zf(u,w);v=Jrb.Zf(v,w);t=Jrb.$f(t,w)}if(Jrb.Do(a.Q,Jrb.Hn(a.Q,n,C))){++p;q+=Jrb.Dk(a.Q,k)}else if(k!=b){for(F=1;F<Jrb.In(a.Q,n,C);F++){++A;s[A]=k;u[A]=m;t[A]=true}}K=u[m];if(k==s[K])continue;h=false;if(i[k]){J=u[K];while(J!=-1){if(k==s[J]){h=true;break}J=u[J]}}if(h){++A;s[A]=k;u[A]=m;t[A]=true}else{++A;s[A]=k;u[A]=m;i[k]=true}}if(p!=0){++A;v[A]=(q<<2)/p|0;u[A]=m;t[A]=true}}++m;if(m==Hsb){throw h3(new Erb._z('Emergency break in while loop.'))}}G.length==o+1&&(G=Jrb.Zf(G,G.length+64));G[o+1]=A+1;for(B=G[o];B<G[o+1];B++){v[B]==0&&(v[B]=(Jrb.Dk(a.Q,s[B])==151?1:Jrb.Dk(a.Q,s[B])==152?1:Jrb.Dk(a.Q,s[B]))<<2);v[B]+=v[u[B]]<<16}Jrb.sf(a,t,v,u,s,G,o);if(v[1]!=v[2])return v[1]>v[2];o>1&&Jrb.pf(v,u,G,o);++o}l=tX(Drb.NY,Qsb,6,a.Q.f,15,1);D=false;for(f=0;f<a.Q.f;f++){if(i[f]&&!Jrb.ul(a.Q,f)){D=true;break}}if(D){for(g=0;g<a.Q.f;g++)l[g]=Jrb.ul(a.Q,g)?(Jrb.Ej(),Jrb.Cj)[Jrb.Dk(a.Q,g)]:Jrb.wk(a.Q,g);if(Jrb.rf(a,t,v,u,s,l,G,o))return v[1]>v[2]}Krb.Meb(l,l.length,0);r=false;for(j=0;j<a.Q.g;j++){if(i[Jrb.Ik(a.Q,0,j)]||i[Jrb.Ik(a.Q,1,j)]){if(a.g[j]==1){l[Jrb.Ik(a.Q,0,j)]=1;l[Jrb.Ik(a.Q,1,j)]=1;r=true}else if(a.g[j]==2){l[Jrb.Ik(a.Q,0,j)]=2;l[Jrb.Ik(a.Q,1,j)]=2;r=true}}}if(r&&Jrb.rf(a,t,v,u,s,l,G,o))return v[1]>v[2];Krb.Meb(l,l.length,0);L=false;for(e=0;e<a.Q.f;e++){if(i[e]){if(a.Z[e]==2){l[e]=1;L=true}else if(a.Z[e]==1){l[e]=2;L=true}}}if(L&&Jrb.rf(a,t,v,u,s,l,G,o))return v[1]>v[2];throw h3(new Erb._z('no distinction applying CIP rules'))};Jrb.pf=function pf(a,b,c,d){var e,f,g,h,i,j,k,l,m;l=c[d];g=c[d+1]-l;m=tX(Drb.XY,Bsb,153,g,0,1);for(i=0;i<g;i++){m[i]=new Jrb.sg;m[i].c=a[i+l];m[i].b=b[i+l];m[i].a=i+l}e=new Jrb.pg;for(k=d;k>1;k--){for(j=0;j<g;j++){m[j].c+=a[m[j].b]<<16;m[j].b=b[m[j].b]}Krb.Ueb(m,0,m.length,e);f=1;for(h=0;h<g;h++){a[m[h].a]=f;h!=g-1&&Jrb.og(m[h],m[h+1])!=0&&++f}}};Jrb.qf=function qf(a,b){var c,d,e,f,g,h,i;g=Jrb.rn(a.Q,b);h=tX(Drb.NY,Qsb,6,g,15,1);for(e=0;e<g;e++)h[e]=Jrb.Fn(a.Q,b,e);for(d=g;d>1;d--){c=false;for(f=1;f<d;f++){if(Jrb.of(a,b,h[f-1],h[f])){c=true;i=h[f-1];h[f-1]=h[f];h[f]=i}}if(!c)break}return h};Jrb.rf=function rf(a,b,c,d,e,f,g,h){var i,j;for(j=1;j<h;j++){for(i=g[j];i<g[j+1];i++)c[i]=f[e[i]]+(c[d[i]]<<8);Jrb.sf(a,b,c,d,e,g,j);if(c[1]!=c[2])return true;j>1&&Jrb.pf(c,d,g,j)}return false};Jrb.sf=function sf(a,b,c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r;for(l=g;l>1;l--){p=f[l]-f[l-1];r=tX(Drb.VY,Bsb,152,p,0,1);h=f[l];for(o=0;o<p;o++){q=f[l-1]+o;m=h;while(m<f[l+1]&&d[m]==q)++m;r[o]=new Jrb.mg;r[o].c=q;r[o].d=c[q];r[o].b=b[q]?0:Jrb.ho(a.Q,e[q]);r[o].a=tX(Drb.NY,Qsb,6,m-h,15,1);for(k=h;k<m;k++)r[o].a[k-h]=c[k];Hrb.Nmb(r[o].a,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));h=m}i=new Jrb.jg;Krb.Ueb(r,0,r.length,i);j=1;for(n=0;n<p;n++){c[r[n].c]=j;n!=p-1&&Jrb.ig(r[n],r[n+1])!=0&&++j}}};Jrb.tf=function tf(a){var b,c;c=rX(Drb.NY,[ssb,lub],[25,7],0,[2,32],2);for(b=0;b<a.Q.f;b++){a.L[b]&&(a.ab[b]==1?(c[0][a._[b]]=Jrb.Tg(c[0][a._[b]],b)):a.ab[b]==2&&(c[1][a._[b]]=Jrb.Tg(c[0][a._[b]],b)))}return c};Jrb.uf=function uf(a){var b,c,d,e,f,g,h,i,j,k,l,m;f=0;k=0;g=0;h=0;i=0;j=0;l=0;m=false;b=tX(Drb.c3,itb,6,32,16,1);for(c=0;c<a.Q.f;c++){if(a.cb[c]!=0){++f;if(a.cb[c]==3){++k}else{if(a.ab[c]==0){++g;!!a.O&&Jrb.Ig(a.O,c)&&++h}else if(a.ab[c]==2){a._[c]==0&&++j}else if(a.ab[c]==1){e=a._[c];if(!b[e]){++l;b[e]=true}a._[c]==0&&++i;!!a.O&&Jrb.Ig(a.O,c)&&(m=true)}}}}for(d=0;d<a.Q.g;d++){if(a.n[d]!=0&&Jrb.Tk(a.Q,d)==1){++f;if(a.n[d]==3){++k}else{if(a.k[d]==0){++g;!!a.O&&Jrb.Ig(a.O,Jrb.Ik(a.Q,0,d))&&Jrb.Ig(a.O,Jrb.Ik(a.Q,1,d))&&++h}else if(a.k[d]==2){a.j[d]==0&&++j}else if(a.k[d]==1){e=a.j[d];if(!b[e]){++l;b[e]=true}a.j[d]==0&&++i;!!a.O&&Jrb.Ig(a.O,Jrb.Ik(a.Q,0,d))&&Jrb.Ig(a.O,Jrb.Ik(a.Q,1,d))&&(m=true)}}}}if(f==0){Jrb.um(a.Q,Fsb);return}if(k!=0){Jrb.um(a.Q,0);return}if(a.J){Jrb.um(a.Q,oub+(1<<l));return}i+h==f&&!m?Jrb.um(a.Q,196608):g==f?Jrb.um(a.Q,bub):j==f?Jrb.um(a.Q,327680):g==f-1&&i==1?Jrb.um(a.Q,Ftb):Jrb.um(a.Q,458752+(1<<l))};Jrb.vf=function vf(a,b,c){while(c!=0){if(a.s==0){(!a.q||a.u!=63)&&(a.u+=64);Erb.L7(a.t,a.u&Gsb);a.s=6;a.u=0}a.u<<=1;a.u=N3(G3(v3(a.u),j3(b,1)));b=I3(b,1);--c;--a.s}};Jrb.wf=function wf(a){a.u<<=a.s;(!a.q||a.u!=63)&&(a.u+=64);Erb.L7(a.t,a.u&Gsb);return a.t.a};Jrb.xf=function xf(a,b){a.t=new Erb.S7;a.s=6;a.u=0;a.q=b};Jrb.yf=function yf(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q;if(a.Q.f==0){a.r='';return}l=a.ib&a.b;q=a.ib?16:8;Jrb.xf(a,true);Erb.L7(a.t,l?35:33);Jrb.vf(a,v3(a.ib?1:0),1);Jrb.vf(a,Drb.r3(b?1:0),1);Jrb.vf(a,Drb.r3(q>>1),4);o=0;for(i=1;i<a.Q.f;i++)o=Jrb.Lf(a,a.A[i],a.D[i]==-1?-1:a.A[a.D[i]],o,c);if(l){for(j=0;j<a.Q.f;j++){d=a.A[j];for(n=Jrb.Gn(a.Q,d);n<Jrb.rn(a.Q,d);n++)o=Jrb.Lf(a,Jrb.Fn(a.Q,d,n),d,o,c)}}if(a.Q.f>1&&o==0){a.r='';return}g=1<<q;m=o/((g>>1)-1);p=o+0.5*m;for(k=1;k<a.Q.f;k++)Jrb.zf(a,a.A[k],a.D[k]==-1?-1:a.A[a.D[k]],p,m,q,c);if(l){for(h=0;h<a.Q.f;h++){d=a.A[h];for(n=Jrb.Gn(a.Q,d);n<Jrb.rn(a.Q,d);n++)Jrb.zf(a,Jrb.Fn(a.Q,d,n),d,p,m,q,c)}}if(b){f=a.ib?1.5:(Jrb.Ej(),Jrb.Ej(),Jrb.Dj);e=Jrb.Gk(a.Q,l?a.Q.q:a.Q.f,l?a.Q.r:a.Q.g,f,c);Jrb.vf(a,v3($wnd.Math.min(g-1,$wnd.Math.max(0,IY(0.5+$wnd.Math.log(e/0.1)*$wnd.Math.LOG10E/($wnd.Math.log(2000)*$wnd.Math.LOG10E)*(g-1))))),q);Jrb.vf(a,v3(Jrb.Cf(c[a.A[0]].a/e,g)),q);Jrb.vf(a,v3(Jrb.Cf(c[a.A[0]].b/e,g)),q);a.ib&&Jrb.vf(a,v3(Jrb.Cf(c[a.A[0]].c/e,g)),q)}a.r=Jrb.wf(a)};Jrb.zf=function zf(a,b,c,d,e,f,g){var h,i,j;h=c==-1?(g[b].a-g[a.A[0]].a)/8:g[b].a-g[c].a;i=c==-1?(g[b].b-g[a.A[0]].b)/8:g[b].b-g[c].b;Jrb.vf(a,v3(IY((d+h)/e)),f);Jrb.vf(a,v3(IY((d+i)/e)),f);if(a.ib){j=c==-1?(g[b].c-g[a.A[0]].c)/8:g[b].c-g[c].c;Jrb.vf(a,v3(IY((d+j)/e)),f)}};Jrb.Af=function Af(a,b){var c;for(c=0;c<a.v;c++)b-=16;b<0&&(Erb.X7(),String.fromCharCode(10));while(b>15){Jrb.vf(a,1,1);Jrb.vf(a,15,4);b-=16;++a.v}Jrb.vf(a,1,1);Jrb.vf(a,Drb.r3(b),4)};Jrb.Bf=function Bf(a){var b,c,d,e,f,g;if(a.Q.f==0){a.M='';return}f=0;d=false;e=false;for(c=0;c<a.Q.f;c++){f<Jrb.vk(a.Q,c)&&(f=Jrb.vk(a.Q,c));Jrb.jl(a.Q,c)?(d=true):(e=true)}if(f==0){a.M='';return}g=Jrb.gg(f);Jrb.xf(a,true);Jrb.vf(a,Drb.r3(g),4);Jrb.vf(a,Drb.r3(d?1:0),1);Jrb.vf(a,Drb.r3(e?1:0),1);for(b=0;b<a.Q.f;b++){Jrb.vf(a,v3(Jrb.vk(a.Q,a.A[b])),g);d&&e&&Jrb.vf(a,v3(Jrb.jl(a.Q,a.A[b])?1:0),1)}a.M=Jrb.wf(a)};Jrb.Cf=function Cf(a,b){var c,d,e,f;c=b/2|0;e=a<0;a=$wnd.Math.abs(a);f=b/32|0;d=$wnd.Math.min(c-1,N3(u3($wnd.Math.round(a*c/(a+f)))));return e?c+d:d};Jrb.Df=function Df(a){var b,c,d;for(b=0;b<a.Q.f;b++){a.cb[b]==3&&!Jrb.fl(a.Q,b)&&Jrb.Cm(a.Q,b);(Jrb.rk(a.Q,b)==1||Jrb.rk(a.Q,b)==2)&&a.cb[b]==3&&Jrb.Cm(a.Q,b);Jrb.fl(a.Q,b)&&a.cb[b]!=3&&!Jrb.Xf(a,b)&&Jrb.Cm(a.Q,b)}for(d=0;d<a.Q.r;d++)Jrb.zl(a.Q,d)&&!Jrb.Wf(a,d)&&Jrb.Cm(a.Q,Jrb.Ik(a.Q,0,d));for(c=0;c<a.Q.g;c++){if(Jrb.Qk(a.Q,c)==2){if(Jrb.pl(a.Q,c)&&(a.n[c]==1||a.n[c]==2)){a.n[c]=3;Jrb.tm(a.Q,c,386)}if(a.n[c]==3&&!a.o[c]){if(Jrb.Tk(a.Q,c)!=386){Jrb.Cm(a.Q,Jrb.Ik(a.Q,0,c));Jrb.Cm(a.Q,Jrb.Ik(a.Q,1,c))}}}if(Jrb.Tk(a.Q,c)==1&&a.n[c]==3&&!Jrb.fl(a.Q,Jrb.Ik(a.Q,0,c))&&!Jrb.fl(a.Q,Jrb.Ik(a.Q,1,c))){Jrb.Cm(a.Q,Jrb.Ik(a.Q,0,c));Jrb.Cm(a.Q,Jrb.Ik(a.Q,1,c))}if((Jrb.Nk(a.Q,c)==1||Jrb.Nk(a.Q,c)==2)&&(Jrb.Tk(a.Q,c)!=1||a.n[c]!=1&&a.n[c]!=2)){Jrb.Cm(a.Q,Jrb.Ik(a.Q,0,c));Jrb.Cm(a.Q,Jrb.Ik(a.Q,1,c))}}};Jrb.Ef=function Ef(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;if(a.Q.f==0)return;if(a.F)return;a.H=0;v=0;for(c=1;c<a.Q.f;c++)a.e[c]>a.e[v]&&(v=c);d=tX(Drb.c3,itb,6,a.Q.f,16,1);g=tX(Drb.c3,itb,6,a.Q.g,16,1);a.G=tX(Drb.NY,Qsb,6,a.Q.f,15,1);a.A=tX(Drb.NY,Qsb,6,a.Q.f,15,1);a.D=tX(Drb.NY,Qsb,6,a.Q.f,15,1);a.B=tX(Drb.NY,Qsb,6,a.Q.g,15,1);a.A[0]=v;a.G[v]=0;d[v]=true;e=1;i=0;j=1;k=0;while(i<a.Q.f){if(i<j){while(true){o=0;p=0;m=-1;b=a.A[i];for(q=0;q<Jrb.sn(a.Q,b);q++){if(q<Jrb.Gn(a.Q,b)||q>=Jrb.rn(a.Q,b)){h=Jrb.Fn(a.Q,b,q);if(!d[h]&&a.e[h]>m){o=h;p=Jrb.Hn(a.Q,b,q);m=a.e[h]}}}if(m==-1)break;a.G[o]=j;a.D[j]=i;a.A[j++]=o;a.B[k++]=p;d[o]=true;g[p]=true}++i}else{n=0;m=-1;for(b=0;b<a.Q.f;b++){if(!d[b]&&a.e[b]>m){n=b;m=a.e[b]}}++e;a.G[n]=j;a.D[j]=-1;a.A[j++]=n;d[n]=true}}a.C=tX(Drb.NY,Qsb,6,2*(a.Q.g-k),15,1);while(true){s=a.Q.M;t=a.Q.M;u=-1;for(f=0;f<a.Q.g;f++){if(!g[f]){if(a.G[Jrb.Ik(a.Q,0,f)]<a.G[Jrb.Ik(a.Q,1,f)]){r=a.G[Jrb.Ik(a.Q,0,f)];l=a.G[Jrb.Ik(a.Q,1,f)]}else{r=a.G[Jrb.Ik(a.Q,1,f)];l=a.G[Jrb.Ik(a.Q,0,f)]}if(r<s||r==s&&l<t){s=r;t=l;u=f}}}if(u==-1)break;g[u]=true;a.B[k++]=u;a.C[2*a.H]=s;a.C[2*a.H+1]=t;++a.H}a.F=true};Jrb.Ff=function Ff(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;i=null;o=Jrb.jo(a.Q);for(l=0;l<o.i.a.length;l++){if(o.e[l]){f=0;m=Krb.Ji(o.i,l);for(c=m,d=0,e=c.length;d<e;++d){b=c[d];Jrb.Rf(a,b)&&++f}if(f!=0){n=Krb.Ji(o.j,l);i==null&&(i=tX(Drb.c3,itb,6,a.Q.g,16,1));if(f==m.length){j=-1;k=xsb;for(g=0;g<m.length;g++){if(k>a.A[n[g]]){k=a.A[n[g]];j=g}}while(f>0){i[n[j]]=true;j=Jrb.dg(j+2,m.length);f-=2}}else{h=0;while(Jrb.Rf(a,m[h]))++h;while(!Jrb.Rf(a,m[h]))h=Jrb.dg(h+1,m.length);while(f>0){i[n[h]]=true;h=Jrb.dg(h+2,m.length);f-=2;while(!Jrb.Rf(a,m[h]))h=Jrb.dg(h+1,m.length)}}}}}return i};Jrb.Gf=function Gf(a,b){return a.n[b]};Jrb.Hf=function Hf(a){return Jrb.If(a,a.ib)};Jrb.If=function If(a,b){if(a.r==null){Jrb.Ef(a);Jrb.yf(a,b,a.Q.J)}return a.r};Jrb.Jf=function Jf(a){if(a.M==null){Jrb.Ef(a);Jrb.Bf(a)}return a.M};Jrb.Kf=function Kf(a){if(a.I==null){Jrb.Ef(a);if((a.P&Vtb)==0){Jrb.Tf(a);Jrb.Uf(a,1);Jrb.Uf(a,2)}Jrb.Sf(a)}return a.I};Jrb.Lf=function Lf(a,b,c,d,e){var f,g,h;f=c==-1?$wnd.Math.abs(e[b].a-e[a.A[0]].a)/8:$wnd.Math.abs(e[b].a-e[c].a);d<f&&(d=f);g=c==-1?$wnd.Math.abs(e[b].b-e[a.A[0]].b)/8:$wnd.Math.abs(e[b].b-e[c].b);d<g&&(d=g);if(a.ib){h=c==-1?$wnd.Math.abs(e[b].c-e[a.A[0]].c)/8:$wnd.Math.abs(e[b].c-e[c].c);d<h&&(d=h)}return d};Jrb.Mf=function Mf(a,b){return a.W[b]};Jrb.Nf=function Nf(a,b){return a.X[b]};Jrb.Of=function Of(a,b){return a.f==null?-1:a.f[b]};Jrb.Pf=function Pf(a,b){return a.cb[b]};Jrb.Qf=function Qf(a,b){var c,d,e,f,g,h,i;i=Jrb.jo(a.Q);for(c=0;c<i.i.a.length;c++){if(i.d[c]&&Jrb.Hr(i,c,b)){for(e=Krb.Ji(i.i,c),f=0,g=e.length;f<g;++f){d=e[f];if(d!=b)for(h=0;h<Jrb.Gn(a.Q,d);h++)if(Jrb.Ao(a.Q,Jrb.Hn(a.Q,d,h)))return true}return false}}return false};Jrb.Rf=function Rf(a,b){var c,d,e;if(Jrb.wn(a.Q,b)<2)return false;if(Jrb.Gn(a.Q,b)==2)return true;c=0;for(e=0;e<Jrb.Gn(a.Q,b);e++){d=Jrb.Hn(a.Q,b,e);Jrb.zo(a.Q,d)&&(c+=Jrb.Qk(a.Q,d)-1)}return c>1};\nJrb.Sf=function Sf(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb;Jrb.xf(a,false);Jrb.vf(a,9,4);Y=$wnd.Math.max(Jrb.gg(a.Q.f),Jrb.gg(a.Q.g));Jrb.vf(a,Drb.r3(Y),4);if(Y==0){Jrb.vf(a,v3(a.Q.K?1:0),1);Jrb.vf(a,0,1);a.I=Jrb.wf(a);return}Z=ab=$=H=0;for(i=0;i<a.Q.f;i++){if(t3(j3(Jrb.yk(a.Q,i),1),0)){switch(Jrb.Dk(a.Q,i)){case 6:break;case 7:++Z;break;case 8:++ab;break;default:++$;}Jrb.mk(a.Q,i)!=0&&++H}}Jrb.vf(a,v3(a.Q.f),Y);Jrb.vf(a,v3(a.Q.g),Y);Jrb.vf(a,Drb.r3(Z),Y);Jrb.vf(a,Drb.r3(ab),Y);Jrb.vf(a,Drb.r3($),Y);Jrb.vf(a,Drb.r3(H),Y);for(j=0;j<a.Q.f;j++)Jrb.Dk(a.Q,a.A[j])==7&&t3(j3(Jrb.yk(a.Q,a.A[j]),1),0)&&Jrb.vf(a,Drb.r3(j),Y);for(m=0;m<a.Q.f;m++)Jrb.Dk(a.Q,a.A[m])==8&&t3(j3(Jrb.yk(a.Q,a.A[m]),1),0)&&Jrb.vf(a,Drb.r3(m),Y);for(n=0;n<a.Q.f;n++)if(Jrb.Dk(a.Q,a.A[n])!=6&&Jrb.Dk(a.Q,a.A[n])!=7&&Jrb.Dk(a.Q,a.A[n])!=8&&t3(j3(Jrb.yk(a.Q,a.A[n]),1),0)){Jrb.vf(a,Drb.r3(n),Y);Jrb.vf(a,v3(Jrb.Dk(a.Q,a.A[n])),8)}for(o=0;o<a.Q.f;o++)if(Jrb.mk(a.Q,a.A[o])!=0&&t3(j3(Jrb.yk(a.Q,a.A[o]),1),0)){Jrb.vf(a,Drb.r3(o),Y);Jrb.vf(a,v3(8+Jrb.mk(a.Q,a.A[o])),4)}X=0;v=0;for(p=1;p<a.Q.f;p++){if(a.D[p]==-1){N=0}else{N=1+a.D[p]-v;v=a.D[p]}X<N&&(X=N)}M=Jrb.gg(X);Jrb.vf(a,Drb.r3(M),4);v=0;for(q=1;q<a.Q.f;q++){if(a.D[q]==-1){N=0}else{N=1+a.D[q]-v;v=a.D[q]}Jrb.vf(a,Drb.r3(N),M)}for(Q=0;Q<2*a.H;Q++)Jrb.vf(a,v3(a.C[Q]),Y);for(A=0;A<a.Q.g;A++){G=(Jrb.Sk(a.Q,a.B[A])&Xtb)!=0||Jrb.Tk(a.Q,a.B[A])==16?1:Jrb.Do(a.Q,a.B[A])?0:$wnd.Math.min(3,Jrb.Qk(a.Q,a.B[A]));Jrb.vf(a,Drb.r3(G),2)}c=0;if((a.P&Vtb)==0){for(r=0;r<a.Q.f;r++)a.$[a.A[r]]!=0&&a.$[a.A[r]]!=3&&++c}Jrb.vf(a,Drb.r3(c),Y);if((a.P&Vtb)==0){for(r=0;r<a.Q.f;r++){if(a.$[a.A[r]]!=0&&a.$[a.A[r]]!=3){Jrb.vf(a,Drb.r3(r),Y);if(a.ab[a.A[r]]==0){Jrb.vf(a,v3(a.$[a.A[r]]),3)}else{bb=a.$[a.A[r]]==1?a.ab[a.A[r]]==1?4:6:a.ab[a.A[r]]==1?5:7;Jrb.vf(a,Drb.r3(bb),3);Jrb.vf(a,v3(a._[a.A[r]]),3)}}}}b=0;if((a.P&Vtb)==0){for(B=0;B<a.Q.g;B++)a.i[a.B[B]]!=0&&a.i[a.B[B]]!=3&&(!Jrb.Po(a.Q,a.B[B])||Jrb.Tk(a.Q,a.B[B])==1)&&++b}Jrb.vf(a,Drb.r3(b),Y);if((a.P&Vtb)==0){for(B=0;B<a.Q.g;B++){if(a.i[a.B[B]]!=0&&a.i[a.B[B]]!=3&&(!Jrb.Po(a.Q,a.B[B])||Jrb.Tk(a.Q,a.B[B])==1)){Jrb.vf(a,Drb.r3(B),Y);if(Jrb.Tk(a.Q,a.B[B])==1){if(a.k[a.B[B]]==0){Jrb.vf(a,v3(a.i[a.B[B]]),3)}else{bb=a.i[a.B[B]]==1?a.k[a.B[B]]==1?4:6:a.k[a.B[B]]==1?5:7;Jrb.vf(a,Drb.r3(bb),3);Jrb.vf(a,v3(a.j[a.B[B]]),3)}}else{Jrb.vf(a,v3(a.i[a.B[B]]),2)}}}}Jrb.vf(a,v3(a.Q.K?1:0),1);K=0;for(s=0;s<a.Q.f;s++)Jrb.wk(a.Q,a.A[s])!=0&&++K;if(K!=0){Jrb.Af(a,1);Jrb.vf(a,Drb.r3(K),Y);for(r=0;r<a.Q.f;r++){if(Jrb.wk(a.Q,a.A[r])!=0){Jrb.vf(a,Drb.r3(r),Y);Jrb.vf(a,v3(Jrb.wk(a.Q,a.A[r])),8)}}}a.v=0;if(a.Q.K){Jrb.Ce(a,0,Y,Vtb,1,-1);Jrb.Ce(a,3,Y,qtb,1,-1);Jrb.Ce(a,4,Y,120,4,3);Jrb.Ce(a,5,Y,pub,2,1);Jrb.Ce(a,6,Y,1,1,-1);Jrb.Ce(a,7,Y,utb,4,7);K=0;for(r=0;r<a.Q.f;r++)Jrb.tk(a.Q,a.A[r])!=null&&++K;if(K>0){Jrb.Af(a,8);Jrb.vf(a,Drb.r3(K),Y);for(t=0;t<a.Q.f;t++){u=Jrb.tk(a.Q,a.A[t]);if(u!=null){Jrb.vf(a,Drb.r3(t),Y);Jrb.vf(a,v3(u.length),4);for(e=u,f=0,g=e.length;f<g;++f){d=e[f];Jrb.vf(a,Drb.r3(d),8)}}}}Jrb.De(a,9,Y,384,2,7);Jrb.De(a,10,Y,31,5,0);Jrb.Ce(a,11,Y,Utb,1,-1);Jrb.De(a,12,Y,Xtb,8,9);Jrb.Ce(a,13,Y,Atb,3,14);Jrb.Ce(a,14,Y,Btb,5,17);Jrb.Ce(a,16,Y,Stb,3,22)}K=0;for(k=0;k<a.Q.f;k++)a.a!=null&&a.a[a.A[k]]!=-1&&++K;if(K!=0){Jrb.Af(a,17);Jrb.vf(a,Drb.r3(K),Y);for(r=0;r<a.Q.f;r++){if(a.a!=null&&a.a[a.A[r]]!=-1){Jrb.vf(a,Drb.r3(r),Y);Jrb.vf(a,v3(a.a[a.A[r]]),4)}}}if((a.P&8)!=0||(a.P&vtb)!=0){K=0;W=0;for(r=0;r<a.Q.f;r++){U=Jrb.ok(a.Q,a.A[r]);if(U!=null){++K;W=$wnd.Math.max(W,Hrb.rnb(U).length)}}if(K!=0){V=Jrb.gg(W);Jrb.Af(a,18);Jrb.vf(a,Drb.r3(K),Y);Jrb.vf(a,Drb.r3(V),4);for(t=0;t<a.Q.f;t++){L=Jrb.ok(a.Q,a.A[t]);if(L!=null){Jrb.vf(a,Drb.r3(t),Y);Jrb.vf(a,v3(Hrb.rnb(L).length),V);for(P=0;P<Hrb.rnb(L).length;P++)Jrb.vf(a,(Hrb.mnb(P,Hrb.rnb(L).length),v3(Hrb.rnb(L).charCodeAt(P))),7)}}}}if(a.Q.K){Jrb.Ce(a,19,Y,wtb,3,25);Jrb.De(a,20,Y,Gtb,3,17)}K=0;for(l=0;l<a.Q.f;l++)Jrb.zk(a.Q,a.A[l])!=0&&++K;if(K!=0){Jrb.Af(a,21);Jrb.vf(a,Drb.r3(K),Y);for(h=0;h<a.Q.f;h++){if(Jrb.zk(a.Q,a.A[h])!=0){Jrb.vf(a,Drb.r3(h),Y);Jrb.vf(a,v3(Jrb.zk(a.Q,a.A[h])>>4),2)}}}if(a.Q.K){Jrb.Ce(a,22,Y,Ttb,1,-1);Jrb.De(a,23,Y,qub,1,-1);Jrb.De(a,24,Y,Ytb,2,21)}if((a.P&16)!=0){for(h=0;h<a.Q.f;h++){if(Jrb.xl(a.Q,a.A[h])){Jrb.Af(a,25);for(d=0;d<a.Q.f;d++)Jrb.vf(a,v3(Jrb.xl(a.Q,a.A[d])?1:0),1);break}}}S=Jrb.Ff(a);if(S!=null){K=0;for(B=0;B<a.Q.g;B++)S[a.B[B]]&&++K;Jrb.Af(a,26);Jrb.vf(a,Drb.r3(K),Y);for(C=0;C<a.Q.g;C++)S[a.B[C]]&&Jrb.vf(a,Drb.r3(C),Y)}a.Q.K&&Jrb.Ce(a,27,Y,jtb,1,-1);K=0;for(D=0;D<a.Q.g;D++)Jrb.Tk(a.Q,a.B[D])==16&&++K;if(K!=0){Jrb.Af(a,28);Jrb.vf(a,Drb.r3(K),Y);for(B=0;B<a.Q.g;B++)Jrb.Tk(a.Q,a.B[B])==16&&Jrb.vf(a,Drb.r3(B),Y)}if(a.Q.K){Jrb.Ce(a,29,Y,rub,2,30);Jrb.Ce(a,30,Y,Usb,7,32);Jrb.Ce(a,32,Y,tub,2,44);Jrb.Ce(a,33,Y,Itb,5,39);Jrb.Ce(a,34,Y,ttb,1,-1);Jrb.De(a,35,Y,uub,1,-1);Jrb.De(a,36,Y,96,2,5)}K=0;for(F=0;F<a.Q.g;F++)(Jrb.Tk(a.Q,a.B[F])==32||Jrb.Tk(a.Q,a.B[F])==64)&&++K;if(K!=0){Jrb.Af(a,37);Jrb.vf(a,Drb.r3(K),Y);for(w=0;w<a.Q.g;w++){if(Jrb.Tk(a.Q,a.B[w])==32||Jrb.Tk(a.Q,a.B[w])==64){Jrb.vf(a,Drb.r3(w),Y);Jrb.vf(a,v3(Jrb.Tk(a.Q,a.B[w])==32?0:1),1)}}}if(a.b&&(a.P&16)!=0){K=0;I=0;for(R=0;R<a.Q.f;R++){h=a.A[R];J=0;for(T=Jrb.Gn(a.Q,h);T<Jrb.rn(a.Q,h);T++){if(Jrb.xl(a.Q,Jrb.Fn(a.Q,h,T))){O=T-Jrb.Gn(a.Q,h);J|=1<<O;I=$wnd.Math.max(I,O+1)}}J!=0&&++K}if(K!=0){Jrb.Af(a,38);Jrb.vf(a,Drb.r3(K),Y);Jrb.vf(a,Drb.r3(I),3);for(P=0;P<a.Q.f;P++){h=a.A[P];J=0;for(T=Jrb.Gn(a.Q,h);T<Jrb.rn(a.Q,h);T++){if(Jrb.xl(a.Q,Jrb.Fn(a.Q,h,T))){O=T-Jrb.Gn(a.Q,h);J|=1<<O}}if(J!=0){Jrb.vf(a,Drb.r3(h),Y);Jrb.vf(a,Drb.r3(J),I)}}}}Jrb.vf(a,0,1);a.I=Jrb.wf(a)};Jrb.Tf=function Tf(a){var b,c,d,e,f,g,h,i,j,k,l;a.$=tX(Drb.JY,nub,6,a.Q.f,15,1);for(b=0;b<a.Q.f;b++){if(a.cb[b]==1||a.cb[b]==2){i=a.db[b];if(Jrb.Bo(a.Q,b)){for(h=0;h<Jrb.Gn(a.Q,b);h++){e=Jrb.Fn(a.Q,b,h);l=0;k=tX(Drb.NY,Qsb,6,3,15,1);for(j=0;j<Jrb.Gn(a.Q,e);j++){k[l]=Jrb.Fn(a.Q,e,j);k[l]!=b&&++l}l==2&&a.e[k[0]]>a.e[k[1]]^a.G[k[0]]<a.G[k[1]]&&(i=!i)}}else{for(h=1;h<Jrb.Gn(a.Q,b);h++){for(j=0;j<h;j++){f=Jrb.Fn(a.Q,b,h);g=Jrb.Fn(a.Q,b,j);a.e[f]>a.e[g]&&(i=!i);a.G[f]<a.G[g]&&(i=!i)}}}a.$[b]=a.cb[b]==1^i?1:2}else{a.$[b]=a.cb[b]}}a.i=tX(Drb.JY,nub,6,a.Q.g,15,1);for(c=0;c<a.Q.g;c++){if(a.n[c]==1||a.n[c]==2){i=false;for(h=0;h<2;h++){d=Jrb.Ik(a.Q,h,c);if(Jrb.Gn(a.Q,d)==3){k=tX(Drb.NY,Qsb,6,2,15,1);l=0;for(j=0;j<3;j++)Jrb.Fn(a.Q,d,j)!=Jrb.Ik(a.Q,1-h,c)&&(k[l++]=Jrb.Fn(a.Q,d,j));a.e[k[0]]>a.e[k[1]]&&(i=!i);a.G[k[0]]<a.G[k[1]]&&(i=!i)}}a.i[c]=a.n[c]==1^i?1:2}else{a.i[c]=a.n[c]}}};Jrb.Uf=function Uf(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;i=tX(Drb.NY,Qsb,6,32,15,1);j=0;for(d=0;d<a.Q.f;d++){if((a.$[d]==1||a.$[d]==2)&&a.ab[d]==b){h=a._[d];if(i[h]<a.e[d]){i[h]==0&&++j;i[h]=a.e[d]}}}for(f=0;f<a.Q.g;f++){if((a.i[f]==1||a.i[f]==2)&&a.k[f]==b&&Jrb.Tk(a.Q,f)==1){h=a.j[f];o=$wnd.Math.max(a.e[Jrb.Ik(a.Q,0,f)],a.e[Jrb.Ik(a.Q,1,f)]);if(i[h]<o){i[h]==0&&++j;i[h]=o}}}g=tX(Drb.JY,nub,6,32,15,1);for(k=0;k<j;k++){m=-1;n=0;for(l=0;l<32;l++){if(n<i[l]){n=i[l];m=l}}i[m]=0;g[m]=k<<24>>24}for(c=0;c<a.Q.f;c++)(a.$[c]==1||a.$[c]==2)&&a.ab[c]==b&&(a._[c]=g[a._[c]]);for(e=0;e<a.Q.g;e++)(a.i[e]==1||a.i[e]==2)&&a.k[e]==b&&Jrb.Tk(a.Q,e)==1&&(a.j[e]=g[a.j[e]])};Jrb.Vf=function Vf(a,b,c){var d,e;a.T=b;for(d=0;d<a.Q.f;d++){a.e[d]=c[d];a.cb[d]=0;a.hb[d]=false}for(e=0;e<a.Q.g;e++){a.n[e]=0;a.p[e]=false}};Jrb.Wf=function Wf(a,b){var c,d,e;c=Jrb.Ik(a.Q,0,b);if(c>=a.Q.f)return false;if(a.cb[c]==1||a.cb[c]==2)return true;if(a.cb[c]==3)return false;d=Jrb.nn(a.Q,c);if(d!=-1)return a.n[d]==1||a.n[d]==2;for(e=0;e<Jrb.Gn(a.Q,c);e++){if(Jrb.In(a.Q,c,e)==2){if(a.cb[Jrb.Fn(a.Q,c,e)]==1||a.cb[Jrb.Fn(a.Q,c,e)]==2)return true}}return false};Jrb.Xf=function Xf(a,b){var c;for(c=0;c<Jrb.Gn(a.Q,b);c++)if(a.n[Jrb.Hn(a.Q,b,c)]==3&&Jrb.In(a.Q,b,c)==1)return true;return false};Jrb.Yf=function Yf(a){var b,c,d,e,f,g,h;g=tX(Drb.NY,Qsb,6,a.T+1,15,1);for(c=0;c<a.Q.f;c++){Jrb.rk(a.Q,c)==0&&(a.cb[c]==1?++g[a.e[c]]:a.cb[c]==2&&--g[a.e[c]])}for(e=0;e<a.Q.g;e++){if(Jrb.Qk(a.Q,e)==1&&Jrb.Nk(a.Q,e)==0){if(a.n[e]==1){++g[a.e[Jrb.Ik(a.Q,0,e)]];++g[a.e[Jrb.Ik(a.Q,1,e)]]}else if(a.n[e]==2){--g[a.e[Jrb.Ik(a.Q,0,e)]];--g[a.e[Jrb.Ik(a.Q,1,e)]]}}}for(h=1;h<=a.T;h++){if(g[h]!=0){f=g[h]<0;if(f){for(b=0;b<a.Q.f;b++){Jrb.rk(a.Q,b)==0&&(a.cb[b]==1?(a.cb[b]=2):a.cb[b]==2&&(a.cb[b]=1))}for(d=0;d<a.Q.g;d++){Jrb.Qk(a.Q,d)==1&&Jrb.Nk(a.Q,d)==0&&(a.n[d]==1?(a.n[d]=2):a.n[d]==2&&(a.n[d]=1))}}return f}}return false};Jrb.Zf=function Zf(a,b){var c;c=tX(Drb.NY,Qsb,6,b,15,1);Erb.Y7(a,0,c,0,a.length);return c};Jrb.$f=function $f(a,b){var c;c=tX(Drb.c3,itb,6,b,16,1);Erb.Y7(a,0,c,0,a.length);return c};Jrb._f=function _f(a){var b,c;if(a.Z!=null)for(b=0;b<a.Q.f;b++)Jrb.Rl(a.Q,b,a.Z[b]);if(a.g!=null)for(c=0;c<a.Q.g;c++)Jrb.mm(a.Q,c,a.g[c])};Jrb.ag=function ag(a){var b,c,d,e,f,g,h,i,j,k,l;for(b=0;b<a.Q.f;b++){if(a.cb[b]==1||a.cb[b]==2){i=false;if(Jrb.Bo(a.Q,b)){for(h=0;h<Jrb.Gn(a.Q,b);h++){e=Jrb.Fn(a.Q,b,h);l=0;k=tX(Drb.NY,Qsb,6,3,15,1);for(j=0;j<Jrb.Gn(a.Q,e);j++){k[l]=Jrb.Fn(a.Q,e,j);k[l]!=b&&++l}l==2&&a.e[k[0]]>a.e[k[1]]^k[0]<k[1]&&(i=!i)}}else{for(h=1;h<Jrb.Gn(a.Q,b);h++){for(j=0;j<h;j++){f=Jrb.Fn(a.Q,b,h);g=Jrb.Fn(a.Q,b,j);a.e[f]>a.e[g]&&(i=!i);f<g&&(i=!i)}}}Jrb.bm(a.Q,b,a.cb[b]==1^i?1:2,a.eb[b])}else{Jrb.bm(a.Q,b,a.cb[b],a.eb[b])}}for(c=0;c<a.Q.g;c++){if(a.n[c]==1||a.n[c]==2){i=false;for(h=0;h<2;h++){d=Jrb.Ik(a.Q,h,c);if(Jrb.Gn(a.Q,d)==3){k=tX(Drb.NY,Qsb,6,2,15,1);l=0;for(j=0;j<3;j++)Jrb.Fn(a.Q,d,j)!=Jrb.Ik(a.Q,1-h,c)&&(k[l++]=Jrb.Fn(a.Q,d,j));a.e[k[0]]>a.e[k[1]]&&(i=!i);k[0]<k[1]&&(i=!i)}}Jrb.qm(a.Q,c,a.n[c]==1^i?1:2,a.o[c])}else{Jrb.qm(a.Q,c,a.n[c],a.o[c])}}};Jrb.bg=function bg(a){var b;for(b=0;b<a.Q.f;b++){Jrb.fm(a.Q,b,a.L[b])}};Jrb.cg=function cg(a){var b,c,d;for(b=0;b<a.Q.f;b++)!Jrb.fl(a.Q,b)&&a.cb[b]==3&&Jrb.Ul(a.Q,b,true);for(c=0;c<a.Q.g;c++){if(a.n[c]==3){d=Jrb.Qk(a.Q,c);d==1?Jrb.Ul(a.Q,Jrb.Ik(a.Q,0,c),true):d==2&&Jrb.tm(a.Q,c,386)}}};Jrb.dg=function dg(a,b){return a<b?a:a-b};Jrb.eg=function eg(a){Jrb.fg.call(this,a,0)};Jrb.fg=function fg(a,b){this.Q=a;this.P=b;Jrb.ou(this.Q,7);this.c=Jrb.gg(this.Q.f);(this.P&Vtb)==0&&Jrb.Xe(this);this.ib=(b&64)!=0||Jrb.el(this.Q);this.b=Jrb.Vn(this.Q)==0;if((this.P&Vtb)==0){this.cb=tX(Drb.JY,nub,6,this.Q.f,15,1);this.eb=tX(Drb.c3,itb,6,this.Q.f,16,1);this.hb=tX(Drb.c3,itb,6,this.Q.f,16,1);this.n=tX(Drb.JY,nub,6,this.Q.g,15,1);this.p=tX(Drb.c3,itb,6,this.Q.g,16,1);this.o=tX(Drb.c3,itb,6,this.Q.g,16,1)}Jrb._e(this);(this.P&Vtb)==0&&Jrb.ff(this);Jrb.ef(this)};Jrb.gg=function gg(a){var b;b=0;while(a>0){a>>=1;++b}return b};Z3(29,1,{},Jrb.eg,Jrb.fg);_.b=false;_.c=0;_.q=false;_.s=0;_.u=0;_.v=0;_.F=false;_.H=0;_.J=false;_.K=false;_.N=0;_.P=0;_.S=0;_.T=0;_.Y=false;_.ib=false;Drb.dZ=B5(29);Jrb.hg=function hg(a,b){var c,d,e,f;if(a.d!=b.d)return a.d>b.d?1:-1;e=a.a.length;f=b.a.length;c=$wnd.Math.min(e,f);for(d=0;d<c;d++){--e;--f;if(a.a[e]!=b.a[f])return a.a[e]>b.a[f]?1:-1}if(e!=f)return e>f?1:-1;if(a.b!=b.b)return a.b>b.b?1:-1;return 0};Jrb.ig=function ig(a,b){return Jrb.hg(a,b)};Jrb.jg=function jg(){};Z3(257,1,{},Jrb.jg);_.qb=function kg(a,b){return Jrb.ig(a,b)};_.jb=function lg(a){return this===a};Drb.WY=B5(257);Jrb.mg=function mg(){};Z3(152,1,{152:1},Jrb.mg);_.b=0;_.c=0;_.d=0;Drb.VY=B5(152);Jrb.ng=function ng(a,b){if(a.c!=b.c)return a.c>b.c?1:-1;return 0};Jrb.og=function og(a,b){return Jrb.ng(a,b)};Jrb.pg=function pg(){};Z3(258,1,{},Jrb.pg);_.qb=function qg(a,b){return Jrb.og(a,b)};_.jb=function rg(a){return this===a};Drb.YY=B5(258);Jrb.sg=function sg(){};Z3(153,1,{153:1},Jrb.sg);_.a=0;_.b=0;_.c=0;Drb.XY=B5(153);Jrb.tg=function tg(a,b,c){if(a.b==0){++a.c;a.b=63}if(a.b==63){a.d[a.c]=G3(a.d[a.c],c);a.b-=b}else{if(a.b>=b){a.d[a.c]=H3(a.d[a.c],b);a.d[a.c]=G3(a.d[a.c],c);a.b-=b}else{a.d[a.c]=H3(a.d[a.c],a.b);a.d[a.c]=G3(a.d[a.c],I3(c,b-a.b));b-=a.b;++a.c;a.b=63-b;a.d[a.c]=G3(a.d[a.c],j3(c,Drb.r3((1<<b)-1)))}}};Jrb.ug=function ug(a,b){a.d[a.c]=i3(a.d[a.c],b)};Jrb.vg=function vg(a,b){var c;for(c=0;c<a.c;c++)if(E3(a.d[c],b.d[c]))return z3(a.d[c],b.d[c])?-1:1;return t3(a.d[a.c],b.d[a.c])?0:z3(a.d[a.c],b.d[a.c])?-1:1};Jrb.wg=function wg(a,b){a.a=b;a.c=0;a.b=63;Krb.Heb(a.d)};Jrb.xg=function xg(a){this.d=tX(Drb.OY,iub,6,a,14,1)};Z3(118,1,{118:1,28:1},Jrb.xg);_.rb=function yg(a){return Jrb.vg(this,a)};_.a=0;_.b=0;_.c=0;Drb.ZY=B5(118);Jrb.zg=function zg(a,b){if(a.b!=b.b)return a.b>b.b?-1:1;if(a.c!=b.c)return a.c>b.c?-1:1;return 0};Jrb.Ag=function Ag(a,b,c){this.b=$wnd.Math.max(a,b);this.c=$wnd.Math.min(a,b);this.a=c};Z3(151,1,{151:1,28:1},Jrb.Ag);_.rb=function Bg(a){return Jrb.zg(this,a)};_.a=0;_.b=0;_.c=0;Drb.$Y=B5(151);Jrb.Cg=function Cg(a,b,c,d){this.a=(Hrb.cnb(b),Krb.Eeb(a,tX(Drb.NY,Qsb,6,b,15,1),0,b));this.b=(Hrb.cnb(d),Krb.Eeb(c,tX(Drb.NY,Qsb,6,d,15,1),0,d))};Z3(189,1,{189:1},Jrb.Cg);Drb._Y=B5(189);Jrb.Dg=function Dg(a,b){var c,d;for(d=0;d<a.g[b].length;d++){c=a.g[b][d];if(a.f[c]&&(a.o[c]==1||a.o[c]==2)&&a.k[c]==0)return true}return false};Jrb.Eg=function Eg(a,b,c){var d,e,f,g,h;e=0;g=0;for(h=0;h<a.g[b].length;h++){d=a.g[b][h];if(a.k[d]==c){f=1<<a.j[d];if((g&f)==0){g|=f;++e}}}return e};Jrb.Fg=function Fg(a){var b,c,d,e,f,g,h,i,j,k,l,m;k=new Krb.nkb;for(l=0;l<a.i.f;l++){if(Jrb.wn(a.i,l)<2||Jrb.Gn(a.i,l)>2){for(g=1;g<Jrb.Gn(a.i,l);g++){b=Jrb.Fn(a.i,l,g);for(h=0;h<g;h++){c=Jrb.Fn(a.i,l,h);Jrb.Kg(a,b,c)&&(i=Jrb.Rg(a,b,c),!!i&&Jrb.kq(i,a.f)&&Krb.pjb(k.a,i,(Erb.Q4(),P4))==null)}}}}for(m=0;m<a.i.g;m++){if(a.c[m]!=0){if(Jrb.Qk(a.i,m)!=2||a.c[m]!=2)continue}b=Jrb.Ik(a.i,0,m);c=Jrb.Ik(a.i,1,m);Jrb.Kg(a,b,c)&&(i=Jrb.Rg(a,b,c),!!i&&Jrb.kq(i,a.f)&&Krb.pjb(k.a,i,(Erb.Q4(),P4))==null)}a.g=tX(Drb.NY,lub,7,k.a.c,0,2);a.e=tX(Drb.c3,itb,6,a.i.f,16,1);f=0;for(j=(e=new Krb.Hjb((new Krb.Njb((new Krb.ydb(k.a)).a)).b),new Krb.Hdb(e));Krb.gcb(j.a.a);){i=(d=Krb.Fjb(j.a),d.mc());a.g[f++]=i.b;for(g=0;g<i.b.length;g++)a.e[i.b[g]]=true}};Jrb.Gg=function Gg(a,b,c,d){var e,f,g,h,i,j,k;e=tX(Drb.NY,Qsb,6,Jrb.Gn(a.i,c),15,1);h=0;for(g=0;g<Jrb.Gn(a.i,c);g++){e[h]=Jrb.Fn(a.i,c,g);!d[e[h]]&&Jrb.Kg(a,b,e[h])&&++h}if(h==0)return -1;if(h==1)return e[0];i=-1;j=xsb;for(f=0;f<h;f++){k=Jrb.go(a.i,b,e[f],xsb,d);if(k<j){j=k;i=e[f]}}return i};Jrb.Hg=function Hg(a,b){return a.f[b]&&(a.o[b]==1||a.o[b]==2)};Jrb.Ig=function Ig(a,b){return a.e[b]};Jrb.Jg=function Jg(a){var b,c;c=true;for(b=0;b<a.i.f;b++){if(a.o[b]!=0&&!a.e[b]){c=false;break}}return c};Jrb.Kg=function Kg(a,b,c){var d,e,f,g,h;if(b==c)return false;if(a.a[b]!=a.a[c])return false;if(a.o[b]!=0){if(a.o[b]==3||a.o[c]==3)return false;if(a.p[b]^a.o[b]!==a.o[c])return false;if(a.k[b]!==a.k[c]||a.j[b]!==a.j[c])return false}d=Jrb.Dn(a.i,b,c);if(d!=-1){if(Jrb.Qk(a.i,d)==1&&a.c[d]!=0)return false;if(Jrb.Qk(a.i,d)==2&&a.c[d]==1)return false}if(Jrb.wn(a.i,b)==1&&!Jrb.yo(a.i,b)){e=-1;for(h=0;h<Jrb.Gn(a.i,b);h++){if(Jrb.Fn(a.i,b,h)!=c&&Jrb.In(a.i,b,h)==2){e=Jrb.Hn(a.i,b,h);break}}f=-1;for(g=0;g<Jrb.Gn(a.i,c);g++){if(Jrb.Fn(a.i,c,g)!=b&&Jrb.In(a.i,c,g)==2){f=Jrb.Hn(a.i,c,g);break}}if(e!=-1&&a.c[e]!=0&&a.d[e]^a.c[e]===a.c[f])return false}return true};Jrb.Lg=function Lg(a,b,c,d,e){var f,g,h,i,j,k;i=null;f=null;for(k=0;k<a.g[b].length;k++){g=a.g[b][k];a.f[g]&&(a.o[g]==1||a.o[g]==2)&&(a.k[g]==0?(f=Jrb.Tg(f,(e[g]<<16)+g)):a.k[g]==d&&a.j[g]==c&&(i=Jrb.Tg(i,(e[g]<<16)+g)))}h=Jrb.gh(i,f);if(h==0)return false;if(h<0){for(j=0;j<a.g[b].length;j++){g=a.g[b][j];if(a.f[g]&&(a.o[g]==1||a.o[g]==2)){if(a.k[g]==0){a.k[g]=d<<24>>24;a.j[g]=c<<24>>24}else if(a.k[g]==d&&a.j[g]==c){a.k[g]=0;a.j[g]=-1}}}}return true};Jrb.Mg=function Mg(a,b){var c,d,e,f,g,h;if(!a.b)return false;e=false;for(f=a.b.a.length-1;f>=0;f--){d=false;g=Krb.Ji(a.b,f);g.a==2?(d=Jrb.Lg(a,g.b,g.c,g.d,b)):g.a==1&&(d=Jrb.Qg(a,g.b,b));if(d){Krb.Ri(a.b,g);for(h=0;h<a.g[g.b].length;h++){c=a.g[g.b][h];a.n[c]=false}e=true}}return e};Jrb.Ng=function Ng(a){var b,c,d,e,f,g,h,i;if(a.g!=null){g=new Jrb.fh(a);a.b=new Krb.Yi;for(e=0;e<a.g.length;e++){d=Jrb.Yg(g,e);if(d==0){Jrb.Ug(g,e);h=Jrb.Eg(a,e,2);b=Jrb.Eg(a,e,1);c=Jrb.Dg(a,e);if(h==1&&b==1&&!c){Jrb.Pg(a,e,g.a+g.f++);Krb.Ei(a.b,new Jrb.uj(e,1,-1,-1))}if(h>0){if(c){Jrb.Og(a,e,g.i+g.g++,2);++h}Krb.Ei(a.b,new Jrb.uj(e,1,-1,-1))}else if(b>0){c&&Jrb.Og(a,e,g.a+g.f++,1);Krb.Ei(a.b,new Jrb.uj(e,1,-1,-1))}else if(c){Jrb.Og(a,e,g.a+g.f++,1);Krb.Ei(a.b,new Jrb.uj(e,1,-1,-1))}}else if(d==1){if(Jrb.Dg(a,e)){f=Jrb.Xg(g,e);i=Jrb.Zg(g,e);Krb.Ei(a.b,new Jrb.uj(e,2,f,i))}else{Jrb.Ug(g,e);Krb.Ei(a.b,new Jrb.uj(e,1,-1,-1))}}}}};Jrb.Og=function Og(a,b,c,d){var e,f;for(f=0;f<a.g[b].length;f++){e=a.g[b][f];if(a.f[e]&&(a.o[e]==1||a.o[e]==2)&&a.k[e]==0){a.k[e]=d<<24>>24;a.j[e]=c<<24>>24}}};Jrb.Pg=function Pg(a,b,c){var d,e;for(e=0;e<a.g[b].length;e++){d=a.g[b][e];if(a.k[d]==2){a.k[d]=1;a.j[d]=c<<24>>24}}};Jrb.Qg=function Qg(a,b,c){var d,e,f,g,h,i,j,k;f=a.g[b];e=1;for(i=0;i<f.length;i++){d=f[i];if(a.f[d]&&a.k[d]==2){e=2;break}}g=tX(Drb.NY,lub,7,32,0,2);for(j=0;j<f.length;j++){d=f[j];a.f[d]&&a.k[d]==e&&(g[a.j[d]]=Jrb.Tg(g[a.j[d]],(c[d]<<16)+d))}for(k=0;k<32;k++)g[k]!=null&&Hrb.Nmb(g[k],Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));Krb.Yeb(g,new Jrb.hh);if(Jrb.gh(g[0],g[1])==0)return false;for(h=0;h<g[0].length;h++){d=g[0][h]&Gsb;a.k[d]=0;a.j[d]=-1}return true};Jrb.Rg=function Rg(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;i=tX(Drb.NY,Qsb,6,a.i.f,15,1);r=tX(Drb.NY,Qsb,6,a.i.f,15,1);o=tX(Drb.c3,itb,6,a.i.f,16,1);j=tX(Drb.c3,itb,6,a.i.f,16,1);s=new Jrb.lq(a.i.f);i[0]=b;r[b]=c;r[c]=-2;s.a[b]=true;s.a[c]=true;f=0;k=0;while(f<=k){g=i[f];if(r[g]==g){for(l=0;l<Jrb.Gn(a.i,g);l++){d=Jrb.Fn(a.i,g,l);if(!s.a[d]){if(Jrb.In(a.i,g,l)==2&&Jrb.Dk(a.i,d)<10){i[++k]=d;r[d]=d;j[d]=j[g]||Jrb.wn(a.i,d)==2;o[d]=j[g]&&!o[g];s.a[d]=true}else if(j[g]&&o[g]){t=Jrb.Gg(a,d,r[g],s.a);if(t==-1)return null;i[++k]=d;r[d]=t;r[t]=-2;j[d]=false;s.a[d]=true;s.a[t]=true}else if(Jrb.Mo(a.i,Jrb.Hn(a.i,g,l))){i[++k]=d;r[d]=d;j[d]=false;s.a[d]=true;if((Jrb.Dk(a.i,d)==6&&Jrb.wn(a.i,d)==0||Jrb.Dk(a.i,d)==7&&Jrb.mk(a.i,d)==1||Jrb.Dk(a.i,d)==14||Jrb.Dk(a.i,d)==15&&Jrb.Gn(a.i,d)>2||Jrb.Dk(a.i,d)==16&&Jrb.Gn(a.i,d)>2)&&Jrb.Gn(a.i,d)>2){h=false;for(p=1;p<Jrb.Gn(a.i,d);p++){u=Jrb.Fn(a.i,d,p);if(!s.a[u]){for(q=0;q<p;q++){v=Jrb.Fn(a.i,d,q);if(!s.a[v]){if(Jrb.Kg(a,u,v)){i[++k]=u;r[u]=v;r[v]=-2;j[u]=false;s.a[u]=true;s.a[v]=true;h=true}}}}}if(!h)return null}}}}}else{e=tX(Drb.c3,itb,6,Jrb.Gn(a.i,g),16,1);for(m=0;m<Jrb.Gn(a.i,g);m++){d=Jrb.Fn(a.i,g,m);if(s.a[d]){e[m]=r[d]==d}else{for(p=0;p<Jrb.Gn(a.i,d);p++){if(Jrb.Fn(a.i,d,p)==r[g]){e[m]=true;break}}}}for(n=0;n<Jrb.Gn(a.i,g);n++){if(e[n]){d=Jrb.Fn(a.i,g,n);if(s.a[d]){if(Jrb.Dn(a.i,d,r[g])==-1)return null}else{i[++k]=d;r[d]=d;o[d]=false;j[d]=true;s.a[d]=true}}}for(l=0;l<Jrb.Gn(a.i,g);l++){if(!e[l]){d=Jrb.Fn(a.i,g,l);if(!s.a[d]){t=Jrb.Gg(a,d,r[g],s.a);if(t==-1)return null;i[++k]=d;r[d]=t;r[t]=-2;j[d]=false;s.a[d]=true;s.a[t]=true}}}}++f}return s};Jrb.Sg=function Sg(a,b,c,d,e,f,g,h,i,j){this.i=a;this.a=b;this.f=c;this.o=d;this.c=e;this.k=f;this.j=g;this.p=h;this.d=i;this.n=j;Jrb.Fg(this)};Jrb.Tg=function Tg(a,b){var c,d;d=tX(Drb.NY,Qsb,6,a==null?1:a.length+1,15,1);for(c=0;c<d.length-1;c++)d[c]=a[c];d[d.length-1]=b;return d};Z3(307,1,{},Jrb.Sg);Drb.bZ=B5(307);Jrb.Ug=function Ug(a,b){var c,d,e,f,g,h;for(e=0;e<a.b;e++){if(a.e[e][b]&&a.c[e]!=-3){for(d=0;d<=a.j.g.length;d++){if(d!=b&&a.e[e][d]){a.e[e][b]=false;h=e<a.a?e:e<a.b?e-a.a:-1;g=Jrb.dh(a,e<a.a?1:e<a.b?2:0);for(f=0;f<a.j.g[b].length;f++){c=a.j.g[b][f];Jrb.Hg(a.j,c)&&a.j.j[c]==h&&(a.j.j[c]=g<<24>>24)}}}}}};Jrb.Vg=function Vg(a,b,c){var d,e,f,g,h;h=false;g=1;b[c]=g;d=true;while(d){d=false;for(e=0;e<a.b;e++){if(b[e]==g){for(f=0;f<a.b;f++){if(b[f]==0&&Jrb.bh(a,e,f)){if(a.c[f]==-2){b[f]=g+1;d=true}else if(a.c[f]!=a.c[c]){b[f]=g+1;h=true}}}}}++g}return h};Jrb.Wg=function Wg(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o;for(i=d+1;i<a.j.g.length;i++){if(i!=d&&a.e[b][i]&&a.e[c][i]){g=tX(Drb.NY,Qsb,6,2,15,1);g[0]=c;g[1]=b;return g}}o=tX(Drb.NY,Qsb,6,a.b,15,1);k=tX(Drb.NY,Qsb,6,a.b,15,1);j=tX(Drb.NY,Qsb,6,a.b,15,1);f=0;l=0;j[0]=b;k[b]=1;while(f<=l){for(m=0;m<a.d[j[f]].length;m++){e=a.d[j[f]][m];if(e==c){if(f==0)continue;h=k[j[f]]+1;g=tX(Drb.NY,Qsb,6,h,15,1);g[0]=e;g[1]=j[f];for(n=2;n<h;n++)g[n]=o[g[n-1]];return g}if(k[e]==0&&a.c[e]!=-3){k[e]=k[j[f]]+1;j[++l]=e;o[e]=j[f]}}++f}return null};Jrb.Xg=function Xg(a,b){var c;for(c=0;c<a.b;c++)if(a.e[c][b]&&a.c[c]==-3)return c<a.a?c:c<a.b?c-a.a:-1;return -1};Jrb.Yg=function Yg(a,b){var c,d;c=0;for(d=0;d<a.b;d++)a.e[d][b]&&a.c[d]==-3&&++c;return c};Jrb.Zg=function Zg(a,b){var c;for(c=0;c<a.b;c++)if(a.e[c][b]&&a.c[c]==-3)return c<a.a?1:c<a.b?2:0;return -1};Jrb.$g=function $g(a,b){return b<a.a?b:b<a.b?b-a.a:-1};Jrb._g=function _g(a,b){return b<a.a?1:b<a.b?2:0};Jrb.ah=function ah(a,b){var c,d;d=a.j.k[b];c=a.j.j[b];return d==0?a.b:d==1?c:a.a+c};Jrb.bh=function bh(a,b,c){var d;for(d=0;d<a.j.g.length;d++)if(a.e[b][d]&&a.e[c][d])return true;return false};Jrb.dh=function dh(a,b){return b==1?a.a+a.f++:a.i+a.g++};Jrb.eh=function eh(a,b){var c,d,e,f,g,h,i,j,k,l;k=xsb;i=-1;l=-1;j=-1;for(d=0;d<a.j.i.f;d++){if(Jrb.Hg(a.j,d)&&a.j.k[d]!=0){for(h=0;h<b.length;h++){e=Jrb.$g(a,b[h]);f=Jrb._g(a,b[h]);if(a.j.k[d]==f&&a.j.j[d]==e){if(k>a.j.a[d]+(f==1?Fsb:0)){k=a.j.a[d]+(f==1?Fsb:0);i=e;l=f;j=b[h]}}}}}for(c=0;c<a.j.i.f;c++){if(Jrb.Hg(a.j,c)&&a.j.k[c]==l&&a.j.j[c]==i){a.j.k[c]=0;a.j.j[c]=-1}}for(g=0;g<a.j.g.length;g++)a.e[j][g]=false};Jrb.fh=function fh(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;this.j=a;for(d=0;d<a.i.f;d++){a.f[d]&&(a.o[d]==1||a.o[d]==2)&&(a.k[d]==1?this.a<=a.j[d]&&(this.a=1+a.j[d]):a.k[d]==2&&this.i<=a.j[d]&&(this.i=1+a.j[d]))}this.b=this.a+this.i;this.e=rX(Drb.c3,[ssb,itb],[11,6],16,[this.b+1,a.g.length+1],2);for(e=0;e<a.i.f;e++)a.f[e]&&(a.o[e]==1||a.o[e]==2)&&!a.e[e]&&(this.e[Jrb.ah(this,e)][a.g.length]=true);for(i=0;i<a.g.length;i++){for(q=0;q<a.g[i].length;q++){c=a.g[i][q];a.f[c]&&(a.o[c]==1||a.o[c]==2)&&(this.e[Jrb.ah(this,c)][i]=true)}}this.d=tX(Drb.NY,lub,7,this.b,0,2);for(j=0;j<a.g.length;j++){for(n=1;n<this.b;n++){if(this.e[n][j]){for(o=0;o<n;o++){if(this.e[o][j]){this.d[n]=Jrb.Tg(this.d[n],o);this.d[o]=Jrb.Tg(this.d[o],n)}}}}}this.c=tX(Drb.NY,Qsb,6,this.b+1,15,1);for(m=0;m<this.b;m++){this.e[m][a.g.length]?(this.c[m]=-1):(this.c[m]=-2)}for(k=0;k<a.g.length;k++){if(this.e[this.b][k]){for(l=0;l<this.b;l++){this.e[l][k]&&this.c[l]!=k&&(this.c[l]==-2?(this.c[l]=k):(this.c[l]=-3))}}}for(b=0;b<this.b;b++){if(this.c[b]>=-1){f=tX(Drb.NY,Qsb,6,this.b,15,1);if(Jrb.Vg(this,f,b)){for(l=0;l<this.b;l++){f[l]!=0&&(this.c[l]=-3)}}}}for(h=0;h<a.g.length-1;h++){for(n=1;n<this.b;n++){if(this.e[n][h]&&this.c[n]!=-3){for(o=0;o<n;o++){if(this.e[o][h]&&this.c[o]!=-3){g=Jrb.Wg(this,n,o,h);if(g!=null){for(p=0;p<g.length;p++)this.c[g[p]]=-3;Jrb.eh(this,g);break}}}}}}};Z3(308,1,{},Jrb.fh);_.a=0;_.b=0;_.f=0;_.g=0;_.i=0;Drb.aZ=B5(308);Jrb.gh=function gh(a,b){var c,d;if(a==null)return b==null?0:1;if(b==null)return -1;c=$wnd.Math.min(a.length,b.length);for(d=0;d<c;d++)if((a[d]&vub)!=(b[d]&vub))return (a[d]&vub)<(b[d]&vub)?-1:1;return a.length==b.length?0:a.length<b.length?-1:1};Jrb.hh=function hh(){};Z3(309,1,{},Jrb.hh);_.qb=function ih(a,b){return Jrb.gh(a,b)};_.jb=function jh(a){return this===a};Drb.cZ=B5(309);Jrb.kh=function kh(a,b){switch(b){case 0:return Jrb.lh(a,false);case 1:return Jrb.nh(a);case 2:return Jrb.mh(a);case 3:return Jrb.ph(a);case 4:return Jrb.oh(a);}return null};Jrb.lh=function lh(b,c){try{if(!c)return Jrb.Kf(new Jrb.eg(b));b=Jrb.su(b);Jrb.dp(b,true);Jrb.xq(b);return Jrb.Kf(new Jrb.eg(b))}catch(a){a=g3(a);if(zY(a,23)){Erb.X7();String.fromCharCode(10);return null}else throw h3(a)}};Jrb.mh=function mh(b){var c,d;try{b=Jrb.su(b);Jrb.Cu(b);c=b.r;for(d=0;d<c;d++){b.H[d]=1;b.T=0}return Jrb.Kf(new Jrb.eg(b))}catch(a){a=g3(a);if(zY(a,23)){Erb.X7();String.fromCharCode(10);return null}else throw h3(a)}};Jrb.nh=function nh(b){try{b=Jrb.su(b);Jrb.Cu(b);return Jrb.Kf(new Jrb.eg(b))}catch(a){a=g3(a);if(zY(a,23)){Erb.X7();String.fromCharCode(10);return null}else throw h3(a)}};Jrb.oh=function oh(b){var c;try{b=Jrb.su(b);Jrb.Cu(b);c=Jrb.Uu(new Jrb.Xu(b));return Jrb.Kf(new Jrb.fg(c,8))}catch(a){a=g3(a);if(zY(a,23)){Erb.X7();String.fromCharCode(10);return null}else throw h3(a)}};Jrb.ph=function ph(b){var c;try{c=Jrb.Uu(new Jrb.Xu(b));return Jrb.Kf(new Jrb.fg(c,8))}catch(a){a=g3(a);if(zY(a,23)){Erb.X7();String.fromCharCode(10);return null}else throw h3(a)}};Jrb.qh=function qh(a,b,c,d){a.a+=b;a.b+=c;a.c+=d};Jrb.rh=function rh(a,b){a.a+=b.a;a.b+=b.b;a.c+=b.c;return a};Jrb.sh=function sh(a,b){return new Jrb.Hh(a.a+b.a,a.b+b.b,a.c+b.c)};Jrb.th=function th(a,b){a.a=(a.a+b.a)/2;a.b=(a.b+b.b)/2;a.c=(a.c+b.c)/2;return a};Jrb.uh=function uh(a,b){if(a.a!=b.a)return a.a<b.a?-1:1;if(a.b!=b.b)return a.b<b.b?-1:1;if(a.c!=b.c)return a.c<b.c?-1:1;return 0};Jrb.vh=function vh(a,b){return new Jrb.Hh(a.b*b.c-a.c*b.b,-(a.a*b.c-a.c*b.a),a.a*b.b-a.b*b.a)};Jrb.wh=function wh(a,b){return $wnd.Math.sqrt((b.a-a.a)*(b.a-a.a)+(b.b-a.b)*(b.b-a.b)+(b.c-a.c)*(b.c-a.c))};Jrb.xh=function xh(a,b){var c;if(b==null||!zY(b,24))return false;c=b;return $wnd.Math.abs(c.a-a.a)+$wnd.Math.abs(c.b-a.b)+$wnd.Math.abs(c.c-a.c)<1.0E-6};Jrb.yh=function yh(a,b){var c,d,e;d=a.a*a.a+a.b*a.b+a.c*a.c;e=b.a*b.a+b.b*b.b+b.c*b.c;if(d==0||e==0)return 0;c=(a.a*b.a+a.b*b.b+a.c*b.c)/$wnd.Math.sqrt(d*e);if(c>=1)return 0;if(c<=-1)return ntb;return $wnd.Math.acos(c)};Jrb.zh=function zh(a,b){var c,d,e;c=a.a;d=a.b;e=a.c;a.a=c*b[0][0]+d*b[1][0]+e*b[2][0];a.b=c*b[0][1]+d*b[1][1]+e*b[2][1];a.c=c*b[0][2]+d*b[1][2]+e*b[2][2];return a};Jrb.Ah=function Ah(a,b){a.a*=b;a.b*=b;a.c*=b;return a};Jrb.Bh=function Bh(a,b,c,d){a.a=b;a.b=c;a.c=d};Jrb.Ch=function Ch(a,b){Jrb.Bh(a,b.a,b.b,b.c);return a};Jrb.Dh=function Dh(a,b){a.a-=b.a;a.b-=b.b;a.c-=b.c;return a};Jrb.Eh=function Eh(a,b){return new Jrb.Hh(a.a-b.a,a.b-b.b,a.c-b.c)};Jrb.Fh=function Fh(a){var b;b=$wnd.Math.sqrt(a.a*a.a+a.b*a.b+a.c*a.c);if(b==0){Erb.X7();String.fromCharCode(10);a.a=1;a.b=0;a.c=0;return a}a.a/=b;a.b/=b;a.c/=b;return a};Jrb.Gh=function Gh(){};Jrb.Hh=function Hh(a,b,c){this.a=a;this.b=b;this.c=c};Jrb.Ih=function Ih(a){Jrb.Hh.call(this,a.a,a.b,a.c)};Z3(24,1,{24:1,4:1,28:1},Jrb.Gh,Jrb.Hh,Jrb.Ih);_.rb=function Jh(a){return Jrb.uh(this,a)};_.jb=function Kh(a){return Jrb.xh(this,a)};_.mb=function Lh(){var a;a=new isb.Nab('0.00');return '['+isb.Lab(a,this.a)+', '+isb.Lab(a,this.b)+', '+isb.Lab(a,this.c)+']'};_.a=0;_.b=0;_.c=0;Drb.eZ=B5(24);Jrb.Mh=function Mh(a,b){b.c*=a.c;b.a=b.a*a.c+a.a;b.b=b.b*a.c+a.b};Jrb.Nh=function Nh(a,b){b.a=b.a*a.c+a.a;b.b=b.b*a.c+a.b};Jrb.Oh=function Oh(a,b){b.c=b.c*a.c+a.a;b.d=b.d*a.c+a.b;b.b*=a.c;b.a*=a.c};Jrb.Ph=function Ph(a){a.a=0;a.b=0;a.c=1};Jrb.Qh=function Qh(a,b){return b*a.c+a.a};Jrb.Rh=function Rh(a,b){return b*a.c+a.b};Jrb.Sh=function Sh(){Jrb.Ph(this)};Jrb.Th=function Th(a,b,c){var d,e,f,g;Jrb.Ph(this);e=b.b/a.b;g=b.a/a.a;f=0;f==0&&(f=24);d=f/c;this.c=$wnd.Math.min(d,$wnd.Math.min(e,g));this.a=b.c+b.b/2-this.c*(a.c+a.b/2);this.b=b.d+b.a/2-this.c*(a.d+a.a/2)};Z3(154,1,{},Jrb.Sh,Jrb.Th);_.mb=function Uh(){return 'DepictorTransformation Offset: '+this.a+','+this.b+' Scaling: '+this.c};_.a=0;_.b=0;_.c=0;Drb.fZ=B5(154);Jrb.Vh=function Vh(a){var b,c,d,e;if(!Erb.k7(Hrb.rnb(a).substr(0,21),fub)||(d=Hrb.rnb(gub).length,!Erb.k7(Hrb.rnb(a).substr(Hrb.rnb(a).length-d,d),gub)))return null;c=Erb.p7(a,A7(34),21);if(c==-1)return null;e=(Hrb.lnb(21,c,Hrb.rnb(a).length),Hrb.rnb(a).substr(21,c-21));b=Erb.x7(a,21+Hrb.rnb(e).length+1,Hrb.rnb(a).length-17);if(Erb.k7(e,'arrow'))return new Urb.JF(b);if(Erb.k7(e,'text'))return new Jrb.kv(b);return null};Krb.Bfb=function Bfb(a){return new Krb.ajb(a)};Krb.Cfb=function Cfb(a){return new lsb.vmb(a.tb())};Krb.Wh=function Wh(a,b,c){var d,e;for(e=a.sb();e.jc();){d=e.kc();if(HY(b)===HY(d)||b!=null&&Erb.Lc(b,d)){c&&e.lc();return true}}return false};Krb.Xh=function Xh(a,b){var c,d;Hrb.gnb(b);for(d=b.sb();d.jc();){c=d.kc();if(!a.contains(c)){return false}}return true};Krb.Yh=function Yh(a,b){var c,d,e;Hrb.gnb(b);c=false;for(d=a.sb();d.jc();){e=d.kc();if(b.contains(e)){d.lc();c=true}}return c};Krb.Zh=function Zh(a){var b,c,d;d=new Krb.fjb(', ','[',']');for(c=a.sb();c.jc();){b=c.kc();Krb.cjb(d,HY(b)===HY(a)?'(this Collection)':b==null?zsb:e4(b))}return !d.a?d.c:Hrb.rnb(d.e).length==0?d.a.a:d.a.a+(''+d.e)};Z3(42,1,wub);_.tb=function hi(){return new Krb.ajb(this)};_.ub=function ii(){return new lsb.vmb(this.tb())};_.add=function $h(a){throw h3(new Erb._7('Add not supported on this collection'))};_.addAll=function _h(a){var b,c,d;Hrb.gnb(a);b=false;for(d=a.sb();d.jc();){c=d.kc();b=b|this.add(c)}return b};_.clear=function ai(){var a;for(a=this.sb();a.jc();){a.kc();a.lc()}};_.contains=function bi(a){return Krb.Wh(this,a,false)};_.containsAll=function ci(a){return Krb.Xh(this,a)};_.isEmpty=function di(){return this.size()==0};_.remove=function ei(a){return Krb.Wh(this,a,true)};_.removeAll=function fi(a){return Krb.Yh(this,a)};_.retainAll=function gi(a){var b,c,d;Hrb.gnb(a);b=false;for(c=this.sb();c.jc();){d=c.kc();if(!a.contains(d)){c.lc();b=true}}return b};_.toArray=function ji(){return this.vb(tX(Drb.v0,Bsb,1,this.size(),5,1))};_.vb=function ki(a){var b,c,d,e;e=this.size();a.length<e&&(a=Hrb.Omb(new Array(e),a));d=a;c=this.sb();for(b=0;b<e;++b){xX(d,b,c.kc())}a.length>e&&Drb.wX(a,e,null);return a};_.mb=function li(){return Krb.Zh(this)};Drb.L0=B5(42);Krb.vib=function vib(a){return new Krb.ajb(a)};Krb.wib=function wib(a){var b;return lsb.tmb(a.ub(),(b=lsb.Dlb(new lsb.Klb,lsb.rlb(new lsb.Ilb,new lsb.Glb,new lsb.imb,BX(nX(Drb.Z1,1),xub,79,0,[(lsb.vlb(),lsb.tlb)]))),lsb.zlb(b,new lsb.Nlb)))};Krb.mi=function mi(a,b){var c,d;for(c=0,d=a.size();c<d;++c){if(Krb.Kib(b,a.getAtIndex(c))){return c}}return -1};Krb.ni=function ni(a,b,c){return new Krb.rcb(a,b,c)};Z3(77,42,yub);_.tb=function Ai(){return new Krb.ajb(this)};_.addAtIndex=function oi(a,b){throw h3(new Erb._7('Add not supported on this list'))};_.add=function pi(a){this.addAtIndex(this.size(),a);return true};_.addAllAtIndex=function qi(a,b){var c,d,e;Hrb.gnb(b);c=false;for(e=b.sb();e.jc();){d=e.kc();this.addAtIndex(a++,d);c=true}return c};_.clear=function ri(){this.wb(0,this.size())};_.jb=function si(a){var b,c,d,e,f;if(a===this){return true}if(!zY(a,72)){return false}f=a;if(this.size()!=f.size()){return false}e=f.sb();for(c=this.sb();c.jc();){b=c.kc();d=e.kc();if(!(HY(b)===HY(d)||b!=null&&Erb.Lc(b,d))){return false}}return true};_.lb=function ti(){return Krb.Efb(this)};\n_.indexOf=function ui(a){return Krb.mi(this,a)};_.sb=function vi(){return new Krb.jcb(this)};_.lastIndexOf=function wi(a){var b;for(b=this.size()-1;b>-1;--b){if(Krb.Kib(a,this.getAtIndex(b))){return b}}return -1};_.removeAtIndex=function xi(a){throw h3(new Erb._7('Remove not supported on this list'))};_.wb=function yi(a,b){var c,d;d=new Krb.pcb(this,a);for(c=a;c<b;++c){Hrb.enb(d.a<d.c.size());d.c.getAtIndex(d.b=d.a++);Krb.icb(d)}};_.setAtIndex=function zi(a,b){throw h3(new Erb._7('Set not supported on this list'))};_.subList=function Bi(a,b){return Krb.ni(this,a,b)};Drb.S0=B5(77);function Q5(a){if(a==null){return false}return a.$implements__java_lang_Cloneable||Array.isArray(a)}\nKrb.Ci=function Ci(a){a.a=tX(Drb.v0,Bsb,1,0,5,1)};Krb.Di=function Di(a,b,c){Hrb.inb(b,a.a.length);Hrb.Hmb(a.a,b,c)};Krb.Ei=function Ei(a,b){Hrb.Kmb(a.a,b);return true};Krb.Fi=function Fi(a,b,c){var d,e;Hrb.inb(b,a.a.length);d=c.toArray();e=d.length;if(e==0){return false}Hrb.Imb(a.a,b,d);return true};Krb.Gi=function Gi(a,b){var c,d;c=b.toArray();d=c.length;if(d==0){return false}Hrb.Imb(a.a,a.a.length,c);return true};Krb.Hi=function Hi(a){Hrb.Mmb(a.a,0)};Krb.Ii=function Ii(a,b){return Krb.Li(a,b,0)!=-1};Krb.Ji=function Ji(a,b){Hrb.fnb(b,a.a.length);return a.a[b]};Krb.Ki=function Ki(a,b){return Krb.Li(a,b,0)};Krb.Li=function Li(a,b,c){for(;c<a.a.length;++c){if(Krb.Kib(b,a.a[c])){return c}}return -1};Krb.Mi=function Mi(a){return a.a.length==0};Krb.Ni=function Ni(a){return new Krb.ueb(a)};Krb.Oi=function Oi(a,b){return Krb.Pi(a,b,a.a.length-1)};Krb.Pi=function Pi(a,b,c){for(;c>=0;--c){if(Krb.Kib(b,a.a[c])){return c}}return -1};Krb.Qi=function Qi(a,b){var c;c=(Hrb.fnb(b,a.a.length),a.a[b]);Hrb.Lmb(a.a,b,1);return c};Krb.Ri=function Ri(a,b){var c;c=Krb.Li(a,b,0);if(c==-1){return false}Krb.Qi(a,c);return true};Krb.Si=function Si(a,b,c){var d;Hrb.jnb(b,c,a.a.length);d=c-b;Hrb.Lmb(a.a,b,d)};Krb.Ti=function Ti(a,b,c){var d;d=(Hrb.fnb(b,a.a.length),a.a[b]);a.a[b]=c;return d};Krb.Ui=function Ui(a){return a.a.length};Krb.Vi=function Vi(a,b){Krb.Xeb(a.a,a.a.length,b)};Krb.Wi=function Wi(a){return Hrb.Emb(a.a)};Krb.Xi=function Xi(a,b){var c,d;d=a.a.length;b.length<d&&(b=Hrb.Omb(new Array(d),b));for(c=0;c<d;++c){xX(b,c,a.a[c])}b.length>d&&Drb.wX(b,d,null);return b};Krb.Yi=function Yi(){Krb.Ci(this)};Krb.Zi=function Zi(a){Krb.Ci(this);Hrb.anb(a>=0,'Initial capacity must not be negative')};Z3(18,77,zub,Krb.Yi,Krb.Zi);_.addAtIndex=function $i(a,b){Krb.Di(this,a,b)};_.add=function _i(a){return Krb.Ei(this,a)};_.addAllAtIndex=function aj(a,b){return Krb.Fi(this,a,b)};_.addAll=function bj(a){return Krb.Gi(this,a)};_.clear=function cj(){Krb.Hi(this)};_.contains=function dj(a){return Krb.Ii(this,a)};_.getAtIndex=function ej(a){return Krb.Ji(this,a)};_.indexOf=function fj(a){return Krb.Ki(this,a)};_.isEmpty=function gj(){return Krb.Mi(this)};_.sb=function hj(){return Krb.Ni(this)};_.lastIndexOf=function ij(a){return Krb.Oi(this,a)};_.removeAtIndex=function jj(a){return Krb.Qi(this,a)};_.remove=function kj(a){return Krb.Ri(this,a)};_.wb=function lj(a,b){Krb.Si(this,a,b)};_.setAtIndex=function mj(a,b){return Krb.Ti(this,a,b)};_.size=function nj(){return Krb.Ui(this)};_.toArray=function oj(){return Krb.Wi(this)};_.vb=function pj(a){return Krb.Xi(this,a)};Drb.h1=B5(18);Jrb.qj=function qj(a){var b,c,d;d=new Erb.S7;for(c=new Krb.ueb(a);c.a<c.c.a.length;){b=Krb.teb(c);Erb.P7(Erb.P7(d,fub+b.pb()+'\"'+b.ob()+gub),rsb)}return d.a};Jrb.rj=function rj(b){var c,d;Krb.Yi.call(this);try{if(b)for(d=new Krb.ueb(b);d.a<d.c.a.length;){c=Krb.teb(d);Krb.Ei(this,c.nb())}}catch(a){a=g3(a);if(!zY(a,15))throw h3(a)}};Jrb.sj=function sj(a){var b,c,d;Krb.Yi.call(this);if(a==null||Hrb.rnb(a).length==0)return;b=0;c=Erb.o7(a,A7(10));while(c!=-1){d=Jrb.Vh((Hrb.lnb(b,c,Hrb.rnb(a).length),Hrb.rnb(a).substr(b,c-b)));!!d&&(Hrb.Kmb(this.a,d),true);b=c+1;c=Erb.p7(a,A7(10),b)}};Z3(181,18,zub,Jrb.rj,Jrb.sj);_.mb=function tj(){return Jrb.qj(this)};Drb.gZ=B5(181);Jrb.uj=function uj(a,b,c,d){this.b=a;this.a=b;this.c=c;this.d=d};Z3(92,1,{92:1},Jrb.uj);_.a=0;_.b=0;_.c=0;_.d=0;Drb.hZ=B5(92);Jrb.vj=function vj(a){var b,c,d,e,f,g;if(a.j!=0)return a.j;if(a.i&&Jrb.Dk(a.e,a.a)!=15&&Jrb.Dk(a.e,a.a)!=16){for(g=0;g<Jrb.rn(a.e,a.a);g++){f=Jrb.Hn(a.e,a.a,g);if(Jrb.Al(a.e,f,a.a)){Jrb.Fn(a.e,a.a,g)==a.b?(a.j=Jrb.Tk(a.e,f)==257?3:1):(a.j=Jrb.Tk(a.e,f)==257?1:3);return a.j}}}b=Jrb.Hk(a.e,a.a,a.g);d=Jrb.Hk(a.e,a.a,a.b);d<b&&(d+=mtb);if(Jrb.rn(a.e,a.a)==2){c=d-b;if(c>3.0915926535897933&&c<3.191592653589793){a.j=-1;return a.j}a.j=c<ntb?4:2;return a.j}else{e=Jrb.Hk(a.e,a.a,a.d);e<b&&(e+=mtb);a.j=e<d?2:4;return a.j}};Jrb.wj=function wj(a,b,c,d){var e,f,g,h;this.e=a;this.g=c;this.a=d;g=-1;for(h=0;h<Jrb.rn(this.e,this.a);h++){e=Jrb.Fn(this.e,this.a,h);f=Jrb.Hn(this.e,this.a,h);if(e==this.g){Jrb.Tk(this.e,f)==386&&(this.j=-1);continue}if(Jrb.Al(this.e,f,this.a)){this.i&&(a.u[d]|=Fsb);this.i=true}if(g==b[e]){this.d=e;this.f=true;this.c=Jrb.Mo(this.e,f)}else if(g<b[e]){g=b[e];this.d=this.b;this.b=e}else{this.d=e}}};Z3(105,1,{},Jrb.wj);_.a=0;_.b=0;_.c=false;_.d=0;_.f=false;_.g=0;_.i=false;_.j=0;Drb.iZ=B5(105);Jrb.Ej=function Ej(){Jrb.Ej=_3;Jrb.yj=BX(nX(Drb.B0,1),Esb,2,6,['?','H','He','Li','Be','B','C','N','O','F','Ne','Na','Mg','Al','Si','P','S','Cl','Ar','K','Ca','Sc','Ti','V','Cr','Mn','Fe','Co','Ni','Cu','Zn','Ga','Ge','As','Se','Br','Kr','Rb','Sr','Y','Zr','Nb','Mo','Tc','Ru','Rh','Pd','Ag','Cd','In','Sn','Sb','Te','I','Xe','Cs','Ba','La','Ce','Pr','Nd','Pm','Sm','Eu','Gd','Tb','Dy','Ho','Er','Tm','Yb','Lu','Hf','Ta','W','Re','Os','Ir','Pt','Au','Hg','Tl','Pb','Bi','Po','At','Rn','Fr','Ra','Ac','Th','Pa','U','Np','Pu','Am','Cm','Bk','Cf','Es','Fm','Md','No','Lr','Rf','Db','Sg','Bh','Hs','Mt','Ds','Rg','Cn','Nh','Fl','Mc','Lv','Ts','Og',Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,'R4','R5','R6','R7','R8','R9','R10','R11','R12','R13','R14','R15','R16','R1','R2','R3','A','A1','A2','A3',Aub,Aub,'D','T','X','R','H2','H+','Nnn','HYD','Pol',Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,'Ala','Arg','Asn','Asp','Cys','Gln','Glu','Gly','His','Ile','Leu','Lys','Met','Phe','Pro','Ser','Thr','Trp','Tyr','Val']);Jrb.Cj=BX(nX(Drb.b3,1),hub,6,15,[0,1,4,7,9,11,12,14,16,19,20,23,24,27,28,31,32,35,40,39,40,45,48,51,52,55,56,59,58,63,64,69,74,75,80,79,84,85,88,89,90,93,98,0,102,103,106,107,114,115,120,121,130,127,132,133,138,139,140,141,142,0,152,153,158,159,164,165,166,169,174,175,180,181,184,187,192,193,195,197,202,205,208,209,209,210,222,223,226,227,232,231,238,237,244,243,247,247,251,252,257,258,259,262,267,268,271,270,277,276,281,281,283,285,289,289,293,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,156,114,115,103,128,129,57,137,113,113,128,131,147,97,87,101,186,163,99]);Jrb.Bj=BX(nX(Drb.JY,1),nub,6,15,[6]);Jrb.xj=BX(nX(Drb.JY,1),nub,6,15,[2]);Jrb.zj=BX(nX(Drb.JY,2),ssb,9,0,[null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[0]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[0]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[1,3,5,7]),BX(nX(Drb.JY,1),nub,6,15,[0]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),null,null,null,null,null,null,null,null,null,null,BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[1,3,5,7]),BX(nX(Drb.JY,1),nub,6,15,[0,2]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),null,null,null,null,null,null,null,null,null,null,BX(nX(Drb.JY,1),nub,6,15,[1,2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[1,3,5,7]),BX(nX(Drb.JY,1),nub,6,15,[0,2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2])]);Jrb.Aj=BX(nX(Drb.JY,2),ssb,9,0,[null,BX(nX(Drb.JY,1),nub,6,15,[1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),null,null,BX(nX(Drb.JY,1),nub,6,15,[-3]),BX(nX(Drb.JY,1),nub,6,15,[-2]),BX(nX(Drb.JY,1),nub,6,15,[-1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),null,BX(nX(Drb.JY,1),nub,6,15,[-3]),BX(nX(Drb.JY,1),nub,6,15,[-2]),BX(nX(Drb.JY,1),nub,6,15,[-1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,3,4]),BX(nX(Drb.JY,1),nub,6,15,[2,3,4,5]),BX(nX(Drb.JY,1),nub,6,15,[2,3,6]),BX(nX(Drb.JY,1),nub,6,15,[2,3,4,7]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[1,2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[-3,3,5]),BX(nX(Drb.JY,1),nub,6,15,[-2]),BX(nX(Drb.JY,1),nub,6,15,[-1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[6]),BX(nX(Drb.JY,1),nub,6,15,[4,6,7]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[-3,3,5]),BX(nX(Drb.JY,1),nub,6,15,[-2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[-1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3,4]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[5]),BX(nX(Drb.JY,1),nub,6,15,[6]),BX(nX(Drb.JY,1),nub,6,15,[4,6,7]),BX(nX(Drb.JY,1),nub,6,15,[3,4]),BX(nX(Drb.JY,1),nub,6,15,[3,4]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[1,3]),BX(nX(Drb.JY,1),nub,6,15,[1,2]),BX(nX(Drb.JY,1),nub,6,15,[1,3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[-2,2,4]),BX(nX(Drb.JY,1),nub,6,15,[-1,1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[4,5]),BX(nX(Drb.JY,1),nub,6,15,[3,4,5,6]),BX(nX(Drb.JY,1),nub,6,15,[3,4,5,6]),BX(nX(Drb.JY,1),nub,6,15,[3,4,5,6]),BX(nX(Drb.JY,1),nub,6,15,[3,4,5,6]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3,4]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[3])])};Jrb.Fj=function Fj(a,b){var c,d;c=-1;d=0;if((a.G[b]&16)!=0){c=16;++d}if((a.G[b]&64)!=0){c=64;++d}if((a.G[b]&32)!=0){c=32;++d}if((a.G[b]&4)!=0){c=4;++d}if((a.G[b]&2)!=0){c=2;++d}if((a.G[b]&8)!=0){c=8;++d}if((a.G[b]&1)!=0){c=1;++d}c!=-1&&c!=(a.H[b]&127)&&(a.H[b]=c);d<2&&(a.G[b]&=-128)};Jrb.Gj=function Gj(a,b,c,d){var e;e=Jrb.Hj(a,6);Jrb.Bh(a.J[e],b,c,d);return e};Jrb.Hj=function Hj(a,b){a.q>=a.M&&Jrb.ym(a,a.M*2);a.C[a.q]=0;Jrb.jm(a,a.q,b);a.s[a.q]=0;a.u[a.q]=0;a.B[a.q]=0;a.w[a.q]=0;Jrb.Bh(a.J[a.q],0,0,0);a.v!=null&&(a.v[a.q]=null);a.t!=null&&(a.t[a.q]=null);a.T=0;return a.q++};Jrb.Ij=function Ij(a,b,c){return Jrb.Jj(a,b,c,Jrb.tl(a,b)||Jrb.tl(a,c)?16:1)};Jrb.Jj=function Jj(a,b,c,d){var e;if(b==c)return -1;for(e=0;e<a.r;e++){if(a.D[0][e]==b&&a.D[1][e]==c||a.D[0][e]==c&&a.D[1][e]==b){a.H[e]<d&&(a.H[e]=d);return e}}a.r>=a.N&&Jrb.zm(a,a.N*2);a.D[0][a.r]=b;a.D[1][a.r]=c;a.H[a.r]=d;a.F[a.r]=0;a.G[a.r]=0;a.T=0;return a.r++};Jrb.Kj=function Kj(a,b){return Jrb.Lj(a,b,b.q,b.r)};Jrb.Lj=function Lj(a,b,c,d){var e,f,g,h,i;a.K=a.K|b.K;f=tX(Drb.NY,Qsb,6,b.q,15,1);h=Jrb.Ml(a,1);i=Jrb.Ml(a,2);for(e=0;e<c;e++)f[e]=Jrb.Yj(b,a,e,h,i);for(g=0;g<d;g++)Jrb.Zj(b,a,g,h,i,f[b.D[0][g]],f[b.D[1][g]],false);a.L=a.L&&b.L;a.I=0;a.T=0;return f};Jrb.Mj=function Mj(a,b,c,d,e,f,g,h){var i,j;i=Jrb.ik(a,b,c);if(i==-1){a.q>=a.M&&Jrb.ym(a,a.M*2);i=Jrb.Hj(a,d);Jrb.Bh(a.J[i],b,c,0);a.A[i]=e;Jrb.Ql(a,i,f);Jrb.dm(a,i,g);Jrb.Vl(a,i,h);return true}j=Jrb.Tj(a,i,d,e,f,g);Jrb.Vl(a,i,h);return j};Jrb.Nj=function Nj(a,b,c,d){var e;for(e=0;e<a.r;e++){if(a.D[0][e]==b&&a.D[1][e]==c||a.D[0][e]==c&&a.D[1][e]==b){Jrb.Vj(a,e,d);a.T=0;return e}}a.r>=a.N&&Jrb.zm(a,a.N*2);a.D[0][a.r]=b;a.D[1][a.r]=c;a.H[a.r]=d;a.F[a.r]=0;a.G[a.r]=0;a.T=0;return a.r++};Jrb.Oj=function Oj(a,b,c,d,e,f){var g,h,i;while(a.q+d>a.M)Jrb.ym(a,a.M*2);while(a.r+d>a.N)Jrb.zm(a,a.N*2);g=Jrb.ik(a,b,c);if(g!=-1)return Jrb.Pj(a,g,d,e,f);h=Jrb.jk(a,b,c);if(h!=-1)return Jrb.Qj(a,h,d,e,f);g=Jrb.Gj(a,b,c,0);i=ntb*(d-2)/d;Jrb.El(a,g,d,g,e,0,ntb-i,f);a.T=0;return true};Jrb.Pj=function Pj(a,b,c,d,e){var f,g,h,i,j,k;if(d&&Jrb.ao(a,b)>1||!d&&Jrb.ao(a,b)>2)return false;g=0;f=tX(Drb.LY,Osb,6,4,15,1);for(i=0;i<a.r;i++){for(j=0;j<2;j++){if(a.D[j][i]==b){if(g==2){g=3;break}f[g++]=Jrb.Hk(a,b,a.D[1-j][i])}}if(g==3)break}if(g==3)return false;k=g==1?f[0]+ntb:$wnd.Math.abs(f[0]-f[1])>ntb?(f[0]+f[1])/2:(f[0]+f[1])/2+ntb;h=ntb*(c-2)/c;Jrb.El(a,b,c,b,d,k-h/2,ntb-h,e);a.T=0;return true};Jrb.Qj=function Qj(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p;j=tX(Drb.NY,Qsb,6,2,15,1);i=tX(Drb.LY,Osb,6,2,15,1);j[0]=a.D[0][b];j[1]=a.D[1][b];if(Jrb.ao(a,j[0])>3)return false;if(Jrb.ao(a,j[1])>3)return false;g=0;f=tX(Drb.LY,Osb,6,4,15,1);for(m=0;m<a.r;m++){if(m==b)continue;for(n=0;n<2;n++){for(o=0;o<2;o++){if(a.D[n][m]==j[o]){if(g==4){g=5;break}f[g++]=Jrb.Hk(a,j[o],a.D[1-n][m])}}if(g==5)break}if(g==5)break}if(g==5)return false;i[0]=Jrb.Hk(a,j[0],j[1]);if(i[0]<0){i[1]=i[0]+ntb;h=0}else{i[1]=i[0];i[0]=i[1]-ntb;h=1}p=0;for(l=0;l<g;l++){f[l]>i[0]&&f[l]<i[1]?--p:++p}h=p>0?1-h:h;k=ntb*(c-2)/c;Jrb.El(a,j[h],c-1,j[1-h],d,i[p>0?0:1]+ntb-k,ntb-k,e);a.T=0;return true};Jrb.Rj=function Rj(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;e=tX(Drb.NY,Qsb,6,b.q,15,1);i=Jrb.Ml(a,1);j=Jrb.Ml(a,2);for(d=0;d<b.q;d++){if(b.C[d]!=0||(b.t==null?null:b.t[d]==null?null:Erb.i7((n=b.t[d],hsb.Kab(),n)))!=null){e[d]=Jrb.Yj(b,a,d,i,j)}else{e[d]=c;if((b.T&8)!=0){for(h=0;h<b.r;h++){for(k=0;k<2;k++){if(b.D[k][h]==d){o=b.D[1-k][h];p=b.u[o]&3;l=false;if(p==1||p==2){for(f=0;f<b.r;f++){if(f!=h){for(m=0;m<2;m++){b.D[m][f]==o&&b.D[1-m][f]<d&&(l=!l)}}}}l&&Jrb.bm(b,o,p==1?2:1,(b.u[o]&4)!=0)}}}}}}for(g=0;g<b.r;g++){Jrb.Zj(b,a,g,i,j,e[b.D[0][g]],e[b.D[1][g]],false)}a.L=a.L&&b.L;a.I=0;a.T=0;return e};Jrb.Sj=function Sj(a,b){var c,d,e,f,g,h,i,j,k;c=a.J[b[0]];d=a.J[b[1]];e=a.J[b[2]];f=a.J[b[3]];i=new Jrb.Hh(d.a-c.a,d.b-c.b,d.c-c.c);j=new Jrb.Hh(e.a-d.a,e.b-d.b,e.c-d.c);k=new Jrb.Hh(f.a-e.a,f.b-e.b,f.c-e.c);g=new Jrb.Hh(i.b*j.c-i.c*j.b,-(i.a*j.c-i.c*j.a),i.a*j.b-i.b*j.a);h=new Jrb.Hh(j.b*k.c-j.c*k.b,-(j.a*k.c-j.c*k.a),j.a*k.b-j.b*k.a);return -$wnd.Math.atan2($wnd.Math.sqrt(j.a*j.a+j.b*j.b+j.c*j.c)*(i.a*h.a+i.b*h.b+i.c*h.c),g.a*h.a+g.b*h.b+g.c*h.c)};Jrb.Tj=function Tj(a,b,c,d,e,f){if((c==1||c==151||c==152)&&Jrb.ao(a,b)>1)return false;a.B[b]=j3(a.B[b],-2);a.v!=null&&(a.v[b]=null);a.t!=null&&(a.t[b]=null);if(c==a.C[b]&&d==a.A[b]&&e==((a.u[b]&Bub)>>>27)-1&&f==(a.u[b]&48))return false;if(c==151||c==152){d=c-149;c=1}a.u[b]&=960;a.C[b]=c;a.A[b]=d;a.s[b]=0;a.B[b]=0;Jrb.Ql(a,b,e);Jrb.dm(a,b,f);Jrb.Kl(a,a.w[b]);a.T=0;return true};Jrb.Uj=function Uj(a,b,c){if(c){if(a.s[b]>8)return false;++a.s[b]}else{if(a.s[b]<-8)return false;--a.s[b]}a.T=0;return true};Jrb.Vj=function Vj(a,b,c){var d,e,f,g,h;f=false;g=a.H[b];if(c==511){f=Jrb.bl(a,b)}else if(Jrb.ip(a,b,c)){if(c==257||c==129){d=Jrb.Fl(a,b,a.D[0][b]);e=Jrb.Fl(a,b,a.D[1][b]);if(c==g){if(d==e||e){h=a.D[0][b];a.D[0][b]=a.D[1][b];a.D[1][b]=h;f=true}}else{if(!d&&e){h=a.D[0][b];a.D[0][b]=a.D[1][b];a.D[1][b]=h}a.H[b]=c;f=true}}else{a.H[b]=c;f=true}}if(f){a.T=(g&127)==(c&127)?a.T&7:0;a.G[b]=0}return f};Jrb.Wj=function Wj(a){a.q=0;a.r=0;a.K=false;a.L=false;a.I=0;a.v=null;a.t=null;a.P=null;a.T=0};Jrb.Xj=function Xj(a){var b,c,d,e,f,g,h,i;for(g=0;g<a.r;g++){if(a.H[g]==512){c=a.D[0][g];d=a.D[1][g];if(a.C[c]==-1^a.C[d]==-1){if(a.s[c]!=0&&a.s[d]!=0){if(a.s[c]<0^a.s[d]<0){if(a.s[c]<0){++a.s[c];--a.s[d]}else{--a.s[c];++a.s[d]}}}}}}i=tX(Drb.NY,Qsb,6,a.q,15,1);e=0;for(b=0;b<a.q;b++){if(a.C[b]==-1){i[b]=-1;continue}if(e<b){a.C[e]=a.C[b];a.s[e]=a.s[b];a.A[e]=a.A[b];a.u[e]=a.u[b];a.B[e]=a.B[b];a.w[e]=a.w[b];Jrb.Ch(a.J[e],a.J[b]);a.v!=null&&(a.v[e]=a.v[b]);a.t!=null&&(a.t[e]=a.t[b])}i[b]=e;++e}a.q=e;h=0;for(f=0;f<a.r;f++){if(a.H[f]==512)continue;a.H[h]=a.H[f];a.F[h]=a.F[f];a.G[h]=a.G[f];a.D[0][h]=i[a.D[0][f]];a.D[1][h]=i[a.D[1][f]];++h}a.r=h;return i};Jrb.Yj=function Yj(a,b,c,d,e){var f,g,h;f=b.q;f>=b.M&&Jrb.ym(b,b.M*2);h=(a.u[c]&_tb)>>18;g=-1;h==1?d==-1?(g=Jrb.Ml(b,h)):(g=$wnd.Math.min(31,d+((a.u[c]&_tb)>>18!=1&&(a.u[c]&_tb)>>18!=2?-1:(a.u[c]&Cub)>>20))):h==2&&(e==-1?(g=Jrb.Ml(b,h)):(g=$wnd.Math.min(31,e+((a.u[c]&_tb)>>18!=1&&(a.u[c]&_tb)>>18!=2?-1:(a.u[c]&Cub)>>20))));b.C[f]=a.C[c];b.s[f]=a.s[c];b.A[f]=a.A[c];b.u[f]=a.u[c];b.B[f]=b.K?a.B[c]:0;Jrb.Ch(b.J[f],a.J[c]);b.w[f]=a.w[c];b.v!=null&&(b.v[f]=null);if(a.v!=null&&a.v[c]!=null&&b.K){b.v==null&&(b.v=tX(Drb.NY,lub,7,b.C.length,0,2));b.v[f]=Krb.Ceb(a.v[c],a.v[c].length)}b.t!=null&&(b.t[f]=null);if(a.t!=null&&a.t[c]!=null){b.t==null&&(b.t=tX(Drb.JY,ssb,9,b.C.length,0,2));b.t[f]=Krb.Aeb(a.t[c],a.t[c].length)}if(g!=-1){b.u[f]&=-32505857;b.u[f]|=g<<20}++b.q;b.T=0;return f};Jrb.Zj=function Zj(a,b,c,d,e,f,g,h){var i,j,k,l;j=b.r;j>=b.N&&Jrb.zm(b,b.N*2);l=(a.F[c]&768)>>8;k=-1;l==1&&(d==-1?(k=Jrb.Ml(b,l)):(k=$wnd.Math.min(32,d+((a.F[c]&768)>>8!=1&&(a.F[c]&768)>>8!=2?-1:(a.F[c]&Dub)>>10))));l==2&&(e==-1?(k=Jrb.Ml(b,l)):(k=$wnd.Math.min(32,e+((a.F[c]&768)>>8!=1&&(a.F[c]&768)>>8!=2?-1:(a.F[c]&Dub)>>10))));b.D[0][j]=f;b.D[1][j]=g;i=h&&a.yb(c)?8:a.H[c];b.H[j]=i;b.F[j]=a.F[c];b.G[j]=b.K?a.G[c]:0;if(k!=-1){b.F[j]&=-31745;b.F[j]|=k<<10}++b.r;b.T=0;return j};Jrb.$j=function $j(a,b,c,d,e,f,g){return Jrb.Zj(a,b,c,d,e,f==null?a.D[0][c]:f[a.D[0][c]],f==null?a.D[1][c]:f[a.D[1][c]],g)};Jrb._j=function _j(a,b){var c,d;b.v=null;b.t=null;b.K=a.K;b.q=0;for(c=0;c<a.q;c++)Jrb.Yj(a,b,c,0,0);b.r=0;for(d=0;d<a.r;d++)Jrb.Zj(a,b,d,0,0,a.D[0][d],a.D[1][d],false);a.xb(b)};Jrb.ak=function ak(a,b){b.K=a.K;b.L=a.L;b.S=a.S;b.I=a.I;b.P=a.P;b.T=a.T&24};Jrb.bk=function bk(a,b){var c,d;for(c=0;c<a.r;c++)for(d=0;d<2;d++)a.D[d][c]==b&&(a.H[c]=512);Jrb.Kl(a,a.w[b]);a.C[b]=-1;a.v!=null&&(a.v[b]=null);a.t!=null&&(a.t[b]=null);Jrb.Xj(a);a.T=0};Jrb.ck=function ck(a,b,c){var d,e;d=Jrb.ik(a,b,c);if(d!=-1){(a.u[d]&512)!=0?Jrb.hk(a):Jrb.bk(a,d);a.T=0;return true}e=Jrb.jk(a,b,c);if(e!=-1){(a.u[a.D[0][e]]&a.u[a.D[1][e]]&512)!=0?Jrb.hk(a):Jrb.fk(a,e);a.T=0;return true}return false};Jrb.dk=function dk(a,b){var c,d,e,f;if(b.length==0)return null;for(d=b,e=0,f=d.length;e<f;++e){c=d[e];a.C[c]=-1}return Jrb.gk(a)};Jrb.ek=function ek(a,b){a.H[b]=512;Jrb.Xj(a);a.T=0};Jrb.fk=function fk(a,b){var c,d,e;for(d=0;d<2;d++){c=0;for(e=0;e<a.r;e++){if(e==b)continue;(a.D[0][e]===a.D[d][b]||a.D[1][e]===a.D[d][b])&&++c}if(c==0){Jrb.Kl(a,a.w[a.D[d][b]]);a.C[a.D[d][b]]=-1}}a.H[b]=512;Jrb.Xj(a);a.T=0};Jrb.gk=function gk(a){var b,c,d;d=false;for(b=0;b<a.q;b++){if(a.C[b]==-1){d=true;Jrb.Kl(a,a.w[b])}}for(c=0;c<a.r;c++){if(a.H[c]==512){d=true}else if(a.C[a.D[0][c]]==-1||a.C[a.D[1][c]]==-1){a.H[c]=512;d=true}}if(d){a.T=0;return Jrb.Xj(a)}return null};Jrb.hk=function hk(a){var b,c;c=false;for(b=0;b<a.q;b++){if((a.u[b]&512)!=0){a.C[b]=-1;c=true}}return c&&Jrb.gk(a)!=null};Jrb.ik=function ik(a,b,c){var d,e,f,g,h,i,j,k;g=-1;e=Jrb.Fk(a,a.q,a.r,Jrb.Dj);h=Eub;i=e*e/12;for(d=0;d<a.q;d++){j=a.J[d].a;k=a.J[d].b;f=(b-j)*(b-j)+(c-k)*(c-k);if(f<i&&f<h){h=f;g=d}}return g};Jrb.jk=function jk(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;m=-1;o=Jrb.Fk(a,a.q,a.r,Jrb.Dj);n=Eub;for(d=0;d<a.r;d++){p=a.J[a.D[0][d]].a;r=a.J[a.D[0][d]].b;q=a.J[a.D[1][d]].a;s=a.J[a.D[1][d]].b;k=q-p;l=s-r;e=$wnd.Math.sqrt(k*k+l*l);f=(p+q)/2;g=(r+s)/2;k=b-f;l=c-g;if($wnd.Math.sqrt(k*k+l*l)>e/2)continue;if(q==p)j=$wnd.Math.abs(p-b);else{h=(s-r)/(p-q);i=-h*p-r;j=$wnd.Math.abs((h*b+c+i)/$wnd.Math.sqrt(h*h+1))}if(j<o&&j<n){n=j;m=d}}return m};Jrb.kk=function kk(a,b){return ((a.u[b]&Bub)>>>27)-1};Jrb.lk=function lk(a,b){return (a.u[b]&49152)>>14};Jrb.mk=function mk(a,b){return a.s[b]};Jrb.nk=function nk(a,b){return a.u[b]&448};Jrb.ok=function ok(a,b){var c;return a.t==null?null:a.t[b]==null?null:Erb.i7((c=a.t[b],hsb.Kab(),c))};Jrb.pk=function pk(a,b){return a.t==null?null:a.t[b]};Jrb.qk=function qk(a,b){return (a.u[b]&_tb)>>18!=1&&(a.u[b]&_tb)>>18!=2?-1:(a.u[b]&Cub)>>20};Jrb.rk=function rk(a,b){return (a.u[b]&_tb)>>18};Jrb.sk=function sk(a,b){return Jrb.yj[a.C[b]]};Jrb.tk=function tk(a,b){return a.v==null?null:a.v[b]};Jrb.uk=function uk(a,b){var c,d,e;if(a.v==null||a.v[b]==null)return E3(j3(a.B[b],1),0)?'':Jrb.yj[a.C[b]];e='';for(d=0;d<a.v[b].length;d++){d>0&&(e=(Hrb.gnb(e),e+(Hrb.gnb(','),',')));c=a.v[b][d];e=Erb.g7(e,Jrb.yj[c])}return e};Jrb.vk=function vk(a,b){return $wnd.Math.abs(a.w[b])};Jrb.wk=function wk(a,b){return a.A[b]};Jrb.xk=function xk(a,b){return a.u[b]&3};Jrb.yk=function yk(a,b){return a.B[b]};Jrb.zk=function zk(a,b){return a.u[b]&48};Jrb.Ak=function Ak(a,b){return a.J[b].a};Jrb.Bk=function Bk(a,b){return a.J[b].b};Jrb.Ck=function Ck(a,b){return a.J[b].c};Jrb.Dk=function Dk(a,b){return a.C[b]};Jrb.Ek=function Ek(a){return Jrb.Fk(a,a.q,a.r,Jrb.Dj)};Jrb.Fk=function Fk(a,b,c,d){return Jrb.Gk(a,b,c,d,a.J)};Jrb.Gk=function Gk(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o;l=false;m=0;for(j=0;j<c;j++)a.H[j]!=16&&(a.G[j]&Xtb)==0&&++m;if(m==0){for(k=0;k<c;k++)(a.G[k]&Xtb)==0&&++m;l=true}if(m==0){if(b<2)return d;o=Eub;for(f=1;f<b;f++){for(g=0;g<f;g++){n=Jrb.wh(e[f],e[g]);n>0&&n<o&&(o=n)}}return o!=Eub?0.6*o:d}h=0;for(i=0;i<c;i++){(l||a.H[i]!=16)&&(a.G[i]&Xtb)==0&&(h+=Jrb.wh(e[a.D[1][i]],e[a.D[0][i]]))}return h/m};Jrb.Hk=function Hk(a,b,c){return Jrb.Vm(a.J[b].a,a.J[b].b,a.J[c].a,a.J[c].b)};Jrb.Ik=function Ik(a,b,c){return a.D[b][c]};Jrb.Jk=function Jk(a,b){return ((a.G[b]&7680)>>9)+((a.G[b]&122880)>>13)};Jrb.Kk=function Kk(a,b){return (a.G[b]&7680)>>9};Jrb.Lk=function Lk(a,b){return (a.F[b]&48)>>4};Jrb.Mk=function Mk(a,b){return (a.F[b]&768)>>8!=1&&(a.F[b]&768)>>8!=2?-1:(a.F[b]&Dub)>>10};Jrb.Nk=function Nk(a,b){return (a.F[b]&768)>>8};Jrb.Ok=function Ok(a,b){var c,d,e,f;c=a.D[0][b];d=a.D[1][b];e=a.J[d].a-a.J[c].a;f=a.J[d].b-a.J[c].b;return $wnd.Math.sqrt(e*e+f*f)};Jrb.Pk=function Pk(a,b,c){var d;for(d=0;d<a.r;d++)if(a.D[0][d]==b&&a.D[1][d]==c||a.D[0][d]==c&&a.D[1][d]==b)if(a.H[d]!=512)return d;return -1};Jrb.Qk=function Qk(a,b){if(a.K&&(a.G[b]&31)!=0){if((a.G[b]&9)!=0)return 1;if((a.G[b]&2)!=0)return 2;if((a.G[b]&4)!=0)return 3;if((a.G[b]&32)!=0)return 4;if((a.G[b]&64)!=0)return 5;if((a.G[b]&16)!=0)return 0}switch(a.H[b]&127){case 1:case 8:return 1;case 2:return 2;case 4:return 3;case 32:return 4;case 64:return 5;default:return 0;}};Jrb.Rk=function Rk(a,b){return a.F[b]&3};Jrb.Sk=function Sk(a,b){return a.G[b]};Jrb.Tk=function Tk(a,b){return a.H[b]};Jrb.Uk=function Uk(a,b){return a.H[b]&127};Jrb.Vk=function Vk(a,b){var c,d,e,f,g;if(a.q==0)return null;d=a.J[0].a;f=a.J[0].b;e=a.J[0].a;g=a.J[0].b;for(c=1;c<a.q;c++){d>a.J[c].a?(d=a.J[c].a):e<a.J[c].a&&(e=a.J[c].a);f>a.J[c].b?(f=a.J[c].b):g<a.J[c].b&&(g=a.J[c].b)}if(!b){b=new Wrb.LG(d,f,e-d,g-f)}else{b.c=d;b.d=f;b.b=e-d;b.a=g-f}return b};Jrb.Wk=function Wk(a,b){var c;c=a.C[b]<Jrb.zj.length?Jrb.zj[a.C[b]]:null;return c==null?6:c[c.length-1]};Jrb.Xk=function Xk(a,b,c){return Jrb.Yk(a,b,c,a.C[b])};Jrb.Yk=function Yk(a,b,c,d){var e,f;if(d>=171&&d<=190)return 0;f=0;(a.u[b]&48)==32&&(f-=1);((a.u[b]&48)==16||(a.u[b]&48)==48)&&(f-=2);e=a.s[b];if(e==0&&a.K){t3(j3(a.B[b],wtb),ztb)&&(e=-1);t3(j3(a.B[b],wtb),ytb)&&(e=1)}d==7||d==8||d==9?(f+=e):d==6||d==14||d==32?(f-=$wnd.Math.abs(e)):d==15||d==33?c-f-e<=3?(f+=e):(f-=e):d==16||d==34||d==52?c-f-e<=4?(f+=e):(f-=$wnd.Math.abs(e)):d==17||d==35||d==53?c-f-e<=5?(f+=e):(f-=$wnd.Math.abs(e)):(f-=e);return f};Jrb.Zk=function Zk(a,b){var c;c=Jrb.$k(a,b);return c+Jrb.Yk(a,b,c,a.C[b])};Jrb.$k=function $k(a,b){var c,d;c=((a.u[b]&Bub)>>>27)-1;c==-1&&(c=(d=a.C[b]<Jrb.zj.length?Jrb.zj[a.C[b]]:null,d==null?6:d[d.length-1]));return c};Jrb._k=function _k(a,b){var c,d,e,f,g;f=Jrb.Bl(a,a.D[0][b])||Jrb.Bl(a,a.D[1][b])?5:3;for(d=0;d<2;d++){c=a.D[d][b];e=Jrb.Qk(a,b)+(g=Jrb.$k(a,c),g+Jrb.Yk(a,c,g,a.C[c]))-Jrb.ao(a,c);f>e&&(f=e)}return f};Jrb.al=function al(a,b){return (a.u[b]&Fsb)!=0};Jrb.bl=function bl(a,b){var c,d,e;d=Jrb._k(a,b);c=Jrb.tl(a,a.D[0][b])||Jrb.tl(a,a.D[1][b]);e=c?16:1;if(a.H[b]==64){a.H[b]=e;a.T=0;return true}if(a.H[b]==32){a.H[b]=d>4?64:e;a.T=0;return true}if(a.H[b]==4){a.H[b]=d>3?32:e;a.T=0;return true}if(a.H[b]==2){a.H[b]=386;a.T&=7;if((a.F[b]&128)==0)return true}if(a.H[b]==386){d>2?(a.H[b]=4):(a.H[b]=e);a.T=0;return true}if((384&a.H[b])!=0){a.H[b]=1;a.T&=7;return true}if(!c&&d<2)return false;if(a.H[b]==1){a.H[b]=2;a.T=0;return true}if(d<1)return false;if(a.H[b]==16){a.H[b]=1;a.T=0;return true}return false};Jrb.cl=function cl(a){var b;a.T=0;a.C=tX(Drb.NY,Qsb,6,a.M,15,1);a.s=tX(Drb.NY,Qsb,6,a.M,15,1);a.w=tX(Drb.NY,Qsb,6,a.M,15,1);a.J=tX(Drb.eZ,Fub,24,a.M,0,1);for(b=0;b<a.M;b++)a.J[b]=new Jrb.Gh;a.A=tX(Drb.NY,Qsb,6,a.M,15,1);a.u=tX(Drb.NY,Qsb,6,a.M,15,1);a.B=tX(Drb.OY,iub,6,a.M,14,1);a.v=null;a.t=null;a.D=rX(Drb.NY,[lub,Qsb],[7,6],15,[2,a.N],2);a.H=tX(Drb.NY,Qsb,6,a.N,15,1);a.F=tX(Drb.NY,Qsb,6,a.N,15,1);a.G=tX(Drb.NY,Qsb,6,a.N,15,1)};Jrb.dl=function dl(a,b){a.T&=~b};Jrb.el=function el(a){var b;for(b=0;b<a.q;b++)if(a.J[b].c!=0)return true;return false};Jrb.fl=function fl(a,b){return (a.u[b]&Gub)!=0};Jrb.gl=function gl(a,b){return a.C[b]==-1};Jrb.hl=function hl(a,b){return (a.u[b]&4)!=0};Jrb.il=function il(a,b){return (a.u[b]&Hub)!=0};Jrb.jl=function jl(a,b){return a.w[b]<0};Jrb.kl=function kl(a,b){return (a.F[b]&Iub)!=0};Jrb.ll=function ll(a,b){return (a.G[b]&Xtb)!=0};Jrb.ml=function ml(a,b){return (a.F[b]&Fsb)!=0};Jrb.nl=function nl(a,b){return a.H[b]==512};Jrb.ol=function ol(a,b){return (a.F[b]&4)!=0};Jrb.pl=function pl(a,b){return (a.F[b]&oub)!=0};Jrb.ql=function ql(a,b){var c,d,e,f;if(a.K){if(E3(j3(a.B[b],1),0))return false;if(a.v!=null&&a.v[b]!=null)for(d=a.v[b],e=0,f=d.length;e<f;++e){c=d[e];if(!Jrb.Ym(c))return false}}return Jrb.Ym(a.C[b])};Jrb.rl=function rl(a,b){var c,d,e,f;if(a.K){if(E3(j3(a.B[b],1),0))return false;if(a.v!=null&&a.v[b]!=null)for(d=a.v[b],e=0,f=d.length;e<f;++e){c=d[e];if(!Jrb.Zm(c))return false}}return Jrb.Zm(a.C[b])};Jrb.sl=function sl(a,b){return (a.u[b]&oub)!=0};Jrb.tl=function tl(a,b){var c,d,e,f;if(a.K){if(E3(j3(a.B[b],1),0))return false;if(a.v!=null&&a.v[b]!=null)for(d=a.v[b],e=0,f=d.length;e<f;++e){c=d[e];if(!(c>=3&&c<=4||c>=11&&c<=13||c>=19&&c<=31||c>=37&&c<=51||c>=55&&c<=84||c>=87&&c<=112))return false}}return Jrb.$m(a.C[b])};Jrb.ul=function ul(a,b){return a.A[b]==0};Jrb.vl=function vl(a,b){var c,d,e,f;if(a.K){if(E3(j3(a.B[b],1),0))return false;if(a.v!=null&&a.v[b]!=null)for(d=a.v[b],e=0,f=d.length;e<f;++e){c=d[e];if(!(c==1||c>=5&&c<=9||c>=14&&c<=17||c>=32&&c<=35||c>=52&&c<=53))return false}}return Jrb._m(a.C[b])};Jrb.wl=function wl(a){var b;for(b=0;b<a.q;b++){switch(a.C[b]){case 1:case 5:case 6:case 7:case 8:case 9:case 14:case 15:case 16:case 17:case 33:case 34:case 35:case 52:case 53:continue;default:return false;}}return true};Jrb.xl=function xl(a,b){return (a.u[b]&512)!=0};Jrb.yl=function yl(a,b){return (a.u[a.D[0][b]]&a.u[a.D[1][b]]&512)!=0};Jrb.zl=function zl(a,b){return a.H[b]==257||a.H[b]==129};Jrb.Al=function Al(a,b,c){return (a.H[b]==257||a.H[b]==129)&&a.D[0][b]==c};Jrb.Bl=function Bl(a,b){var c,d,e,f;if(a.K){if(E3(j3(a.B[b],1),0))return false;if(a.v!=null&&a.v[b]!=null)for(d=a.v[b],e=0,f=d.length;e<f;++e){c=d[e];if(!(c>=21&&c<=30||c>=39&&c<=48||c==57||c>=72&&c<=80||c==89||c>=104&&c<=112))return false}}return Jrb.an(a.C[b])};Jrb.Cl=function Cl(a,b){a.C[b]=-1};Jrb.Dl=function Dl(a,b){a.H[b]=512};Jrb.El=function El(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r;if(b!=d){q=a.J[b].a-a.J[d].a;r=a.J[b].b-a.J[d].b;h=$wnd.Math.sqrt(q*q+r*r)}i=b;k=Jrb.Dm(a,b)!=3;for(p=1;p<c;p++){m=a.J[i].a+h*$wnd.Math.sin(f);n=a.J[i].b+h*$wnd.Math.cos(f);o=-1;for(l=0;l<a.q;l++){if($wnd.Math.abs(m-a.J[l].a)<4&&$wnd.Math.abs(n-a.J[l].b)<4){o=l;break}}if(o==-1){o=Jrb.Gj(a,m,n,0);a.J[o].a=m;a.J[o].b=n;a.J[o].c=0}j=Jrb.Pk(a,i,o);if(j==-1){j=Jrb.Jj(a,i,o,Jrb.tl(a,i)||Jrb.tl(a,o)?16:1);if(e){k&&Jrb.Dm(a,a.D[0][j])<4&&Jrb.Dm(a,a.D[1][j])<3&&(a.H[j]=2);k=!k}}i=o;f+=g}j=Jrb.Pk(a,i,d);j==-1&&(j=Jrb.Jj(a,i,d,Jrb.tl(a,i)||Jrb.tl(a,d)?16:1));e&&k&&Jrb.Dm(a,a.D[0][j])<4&&Jrb.Dm(a,a.D[1][j])<4&&(a.H[j]=2)};\nJrb.Fl=function Fl(a,b,c){var d,e;if(Jrb.Qk(a,b)!=1)return false;if((a.u[c]&3)!=0)return true;for(e=0;e<a.r;e++)if(e!=b&&a.H[e]==2&&(a.D[0][e]==c&&(a.u[a.D[1][e]]&3)!=0||a.D[1][e]==c&&(a.u[a.D[0][e]]&3)!=0))return true;for(d=0;d<a.r;d++)if(d!=b&&a.H[d]==1&&(a.D[0][d]==c||a.D[1][d]==c)&&(a.F[d]&3)!=0)return true;return false};Jrb.Gl=function Gl(a){var b;for(b=0;b<a.q;b++)a.u[b]&=-449};Jrb.Hl=function Hl(a){var b;for(b=0;b<a.q;b++)a.u[b]&=Jub};Jrb.Il=function Il(a){var b;for(b=0;b<a.q;b++)a.u[b]&=-513};Jrb.Jl=function Jl(a){var b;for(b=0;b<a.r;b++)a.F[b]&=-98305};Jrb.Kl=function Kl(a,b){var c;for(c=0;c<a.q;c++)$wnd.Math.abs(a.w[c])==$wnd.Math.abs(b)&&(a.w[c]=0)};Jrb.Ll=function Ll(a){var b,c,d,e;e=false;for(c=0;c<a.q;c++){if(E3(j3(a.B[c],jtb),0)){a.C[c]=-1;e=true}}e&&Jrb.gk(a);if(a.v!=null){a.v=null;e=true}for(b=0;b<a.q;b++){if(E3(a.B[b],0)){a.B[b]=0;e=true}}for(d=0;d<a.r;d++){if(a.G[d]!=0){a.G[d]=0;e=true}if(a.H[d]==8){a.H[d]=1;e=true}}e&&(a.T=0);return e};Jrb.Ml=function Ml(a,b){var c,d,e,f,g,h,i,j,k;if(b==0)return 0;h=null;for(d=0;d<a.q;d++){if((a.u[d]&_tb)>>18==b){h==null&&(h=tX(Drb.c3,itb,6,32,16,1));h[(a.u[d]&_tb)>>18!=1&&(a.u[d]&_tb)>>18!=2?-1:(a.u[d]&Cub)>>20]=true}}for(f=0;f<a.r;f++){if((a.F[f]&768)>>8==b){h==null&&(h=tX(Drb.c3,itb,6,32,16,1));h[(a.F[f]&768)>>8!=1&&(a.F[f]&768)>>8!=2?-1:(a.F[f]&Dub)>>10]=true}}k=0;if(h!=null){j=tX(Drb.NY,Qsb,6,32,15,1);for(i=0;i<32;i++)h[i]&&(j[i]=k++);for(c=0;c<a.q;c++){if((a.u[c]&_tb)>>18==b){g=j[(a.u[c]&_tb)>>18!=1&&(a.u[c]&_tb)>>18!=2?-1:(a.u[c]&Cub)>>20];a.u[c]&=-32505857;a.u[c]|=g<<20}}for(e=0;e<a.r;e++){if((a.F[e]&768)>>8==b){g=j[(a.F[e]&768)>>8!=1&&(a.F[e]&768)>>8!=2?-1:(a.F[e]&Dub)>>10];a.F[e]&=-31745;a.F[e]|=g<<10}}}return k};Jrb.Nl=function Nl(a,b){var c;for(c=0;c<a.q;c++){a.J[c].a*=b;a.J[c].b*=b}};Jrb.Ol=function Ol(a,b){a.q=b;a.T=0};Jrb.Pl=function Pl(a,b){a.r=b;a.T=0};Jrb.Ql=function Ql(a,b,c){if(c>=-1&&c<=14){a.u[b]&=-2013265921;a.u[b]|=1+c<<27;if(a.C[b]==6){if(c==-1||c==0||c==2||c==4){a.u[b]&=-49;c==2&&(a.u[b]|=16)}}}};Jrb.Rl=function Rl(a,b,c){a.u[b]&=-49153;a.u[b]|=c<<14};Jrb.Sl=function Sl(a,b,c){a.s[b]=c;a.T=0};Jrb.Tl=function Tl(a,b,c){a.u[b]&=-449;a.u[b]|=c};Jrb.Ul=function Ul(a,b,c){c?(a.u[b]|=Gub):(a.u[b]&=Kub);a.T&=7};Jrb.Vl=function Vl(a,b,c){var d,e;if(c!=null){if(Hrb.rnb(c).length==0)c=null;else{d=Jrb.Xm(c,321);if(d!=0&&d==a.C[b]||Erb.k7(c,'?')){Jrb.jm(a,b,d);c=null}}}if(c==null){a.t!=null&&(a.t[b]=null)}else{a.t==null&&(a.t=tX(Drb.JY,ssb,9,a.M,0,2));a.t[b]=Hrb.Umb((e=c,hsb.Kab(),e))}};Jrb.Wl=function Wl(a,b,c){c!=null&&c.length==0&&(c=null);if(c==null){a.t!=null&&(a.t[b]=null)}else{a.t==null&&(a.t=tX(Drb.JY,ssb,9,a.M,0,2));a.t[b]=c}};Jrb.Xl=function Xl(a,b,c,d){var e,f,g;if(c==0){a.u[b]&=Lub;a.u[b]|=c<<18}else{if(d>=32)return;if(d==-1){g=-1;for(f=0;f<a.q;f++)f!=b&&c==(a.u[f]&_tb)>>18&&g<((a.u[f]&_tb)>>18!=1&&(a.u[f]&_tb)>>18!=2?-1:(a.u[f]&Cub)>>20)&&(g=(a.u[f]&_tb)>>18!=1&&(a.u[f]&_tb)>>18!=2?-1:(a.u[f]&Cub)>>20);for(e=0;e<a.r;e++)c==(a.F[e]&768)>>8&&g<((a.F[e]&768)>>8!=1&&(a.F[e]&768)>>8!=2?-1:(a.F[e]&Dub)>>10)&&(g=(a.F[e]&768)>>8!=1&&(a.F[e]&768)>>8!=2?-1:(a.F[e]&Dub)>>10);d=g+1;if(d>=32)return}a.u[b]&=Lub;a.u[b]|=c<<18|d<<20}a.T&=7};Jrb.Yl=function Yl(a,b,c){a.v==null&&(a.v=tX(Drb.NY,lub,7,a.M,0,2));Hrb.Nmb(c,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));a.v[b]=c;a.T=0;a.K=true};Jrb.Zl=function Zl(a,b,c,d){var e;if(c==null){a.v!=null&&(a.v[b]=null);return}if(c.length==1&&!d){e=c[0];a.C[b]!=e&&Jrb.Tj(a,b,e,0,-1,0);a.v!=null&&(a.v[b]=null);return}a.v==null&&(a.v=tX(Drb.NY,lub,7,a.M,0,2));a.v[b]=c;d&&(a.B[b]=G3(a.B[b],1));a.T=0;a.K=true};Jrb.$l=function $l(a,b,c,d){a.w[b]=d?-c:c};Jrb._l=function _l(a,b,c){c?(a.u[b]|=oub):(a.u[b]&=Jub)};Jrb.am=function am(a,b,c){a.A[b]=c;a.T&=a.C[b]==1?0:7};Jrb.bm=function bm(a,b,c,d){a.u[b]&=-8;c!=3&&(a.u[b]&=Kub);a.u[b]|=c;d&&(a.u[b]|=4)};Jrb.cm=function cm(a,b,c,d){d?(a.B[b]=G3(a.B[b],c)):(a.B[b]=j3(a.B[b],F3(c)));a.T=0;a.K=true};Jrb.dm=function dm(a,b,c){a.u[b]&=-49;a.u[b]|=c;a.T&=7};Jrb.em=function em(a,b,c){c?(a.u[b]|=512):(a.u[b]&=-513)};Jrb.fm=function fm(a,b,c){a.u[b]&=-67108865;c&&(a.u[b]|=Hub)};Jrb.gm=function gm(a,b,c){a.J[b].a=c;a.T&=7};Jrb.hm=function hm(a,b,c){a.J[b].b=c;a.T&=7};Jrb.im=function im(a,b,c){a.J[b].c=c;a.T&=7};Jrb.jm=function jm(a,b,c){if(c>=0&&c<=190){if(c==151||c==152){a.C[b]=1;a.A[b]=c-149}else{a.C[b]=c;a.A[b]=0}a.u[b]&=-2013265921;a.T=0}};Jrb.km=function km(a,b,c,d){a.D[b][c]=d;a.T=0};Jrb.lm=function lm(a,b,c){c?(a.F[b]|=Iub):(a.F[b]&=-32769)};Jrb.mm=function mm(a,b,c){a.F[b]&=-49;a.F[b]|=c<<4};Jrb.nm=function nm(a,b,c,d){var e,f,g;if(c==0){a.F[b]&=-32513;a.F[b]|=c<<8}else{if(d>=32)return;if(d==-1){g=-1;for(f=0;f<a.q;f++)c==(a.u[f]&_tb)>>18&&g<((a.u[f]&_tb)>>18!=1&&(a.u[f]&_tb)>>18!=2?-1:(a.u[f]&Cub)>>20)&&(g=(a.u[f]&_tb)>>18!=1&&(a.u[f]&_tb)>>18!=2?-1:(a.u[f]&Cub)>>20);for(e=0;e<a.r;e++)e!=b&&c==(a.F[e]&768)>>8&&g<((a.F[e]&768)>>8!=1&&(a.F[e]&768)>>8!=2?-1:(a.F[e]&Dub)>>10)&&(g=(a.F[e]&768)>>8!=1&&(a.F[e]&768)>>8!=2?-1:(a.F[e]&Dub)>>10);d=g+1;if(d>=32)return}a.F[b]&=-32513;a.F[b]|=c<<8|d<<10}a.T&=7};Jrb.om=function om(a,b,c){c?(a.F[b]|=Fsb):(a.F[b]&=-65537)};Jrb.pm=function pm(a,b,c){a.H[b]=c==1?1:c==2?2:c==3?4:16;a.T=0};Jrb.qm=function qm(a,b,c,d){a.F[b]&=-131080;a.F[b]|=c;d&&(a.F[b]|=4)};Jrb.rm=function rm(a,b){a.F[b]|=oub};Jrb.sm=function sm(a,b,c,d){d?(a.G[b]|=c):(a.G[b]&=~c);a.T=0;d&&c!=0&&(a.K=true)};Jrb.tm=function tm(a,b,c){a.H[b]=c;a.T=0};Jrb.um=function um(a,b){a.I=b};Jrb.vm=function vm(a,b){if(a.K!=b){a.K=b;b||Jrb.Ll(a);a.T=0}};Jrb.wm=function wm(a,b){a.T=b};Jrb.xm=function xm(a,b){a.S=b};Jrb.ym=function ym(a,b){var c,d;a.C=Jrb.Pm(a.C,b);a.s=Jrb.Pm(a.s,b);a.w=Jrb.Pm(a.w,b);d=a.J.length;a.J=Jrb.Rm(a.J,b);for(c=d;c<b;c++)a.J[c]=new Jrb.Gh;a.A=Jrb.Pm(a.A,b);a.u=Jrb.Pm(a.u,b);a.B=Jrb.Qm(a.B,b);a.v!=null&&(a.v=Jrb.Tm(a.v,b));a.t!=null&&(a.t=Jrb.Sm(a.t,b));a.M=b};Jrb.zm=function zm(a,b){a.D[0]=Jrb.Pm(a.D[0],b);a.D[1]=Jrb.Pm(a.D[1],b);a.H=Jrb.Pm(a.H,b);a.F=Jrb.Pm(a.F,b);a.G=Jrb.Pm(a.G,b);a.N=b};Jrb.Am=function Am(a,b){a.O=b};Jrb.Bm=function Bm(a,b){a.P=b};Jrb.Cm=function Cm(a,b){a.u[b]|=Fsb};Jrb.Dm=function Dm(a,b){var c,d;d=0;for(c=0;c<a.r;c++)(a.D[0][c]==b||a.D[1][c]==b)&&(d+=Jrb.Qk(a,c));return d};Jrb.Em=function Em(a){var b,c,d;c=false;d=false;for(b=0;b<a.q;b++){if(a.A[b]!=0){a.A[b]=0;c=true;a.C[b]==1&&(d=true)}}d&&(a.T=0);return c};Jrb.Fm=function Fm(a,b,c){return Jrb.tl(a,b)||Jrb.tl(a,c)?16:1};Jrb.Gm=function Gm(a,b,c){var d,e,f,g,h,i;g=a.C[b];a.C[b]=a.C[c];a.C[c]=g;g=a.s[b];a.s[b]=a.s[c];a.s[c]=g;g=a.A[b];a.A[b]=a.A[c];a.A[c]=g;g=a.u[b];a.u[b]=a.u[c];a.u[c]=g;i=a.B[b];a.B[b]=a.B[c];a.B[c]=i;g=a.w[b];a.w[b]=a.w[c];a.w[c]=g;f=a.J[b];a.J[b]=a.J[c];a.J[c]=f;if(a.v!=null){h=a.v[b];a.v[b]=a.v[c];a.v[c]=h}if(a.t!=null){h=a.t[b];a.t[b]=a.t[c];a.t[c]=h}for(d=0;d<a.r;d++){for(e=0;e<2;e++){a.D[e][d]==b?(a.D[e][d]=c):a.D[e][d]==c&&(a.D[e][d]=b)}}a.T=0};Jrb.Hm=function Hm(a,b,c){var d;d=a.D[0][b];a.D[0][b]=a.D[0][c];a.D[0][c]=d;d=a.D[1][b];a.D[1][b]=a.D[1][c];a.D[1][c]=d;d=a.H[b];a.H[b]=a.H[c];a.H[c]=d;d=a.F[b];a.F[b]=a.F[c];a.F[c]=d;d=a.G[b];a.G[b]=a.G[c];a.G[c]=d;a.T=0};Jrb.Im=function Im(a,b,c){var d;for(d=0;d<a.q;d++){a.J[d].a+=b;a.J[d].b+=c}a.U+=b;a.V+=c};Jrb.Jm=function Jm(a,b,c){var d,e;e=c&127;d=Jrb._k(a,b);switch(e){case 1:case 8:return d>=1;case 2:return d>=2;case 4:return d>=3;case 32:return d>=4;case 64:return d>=5;case 16:return true;default:return false;}};Jrb.Km=function Km(a,b,c,d){var e,f,g;for(e=0;e<a.q;e++){if(!d||(a.u[e]&512)!=0){g=a.R[e]*b;f=a.Q[e]-c;a.J[e].a=a.U+g*$wnd.Math.sin(f);a.J[e].b=a.V+g*$wnd.Math.cos(f)}}d&&(a.T&=7)};Jrb.Lm=function Lm(a,b,c){var d,e,f;a.U=b;a.V=c;a.Q=tX(Drb.LY,Osb,6,a.q,15,1);a.R=tX(Drb.LY,Osb,6,a.q,15,1);for(d=0;d<a.q;d++){e=b-a.J[d].a;f=c-a.J[d].b;a.R[d]=$wnd.Math.sqrt(e*e+f*f);a.Q[d]=Jrb.Vm(b,c,a.J[d].a,a.J[d].b)}};Jrb.Mm=function Mm(){this.M=this.N=256;Jrb.cl(this)};Jrb.Nm=function Nm(a,b){this.M=$wnd.Math.max(1,a);this.N=$wnd.Math.max(1,b);Jrb.cl(this)};Jrb.Pm=function Pm(a,b){var c;c=tX(Drb.NY,Qsb,6,b,15,1);Erb.Y7(a,0,c,0,$wnd.Math.min(a.length,b));return c};Jrb.Qm=function Qm(a,b){var c;c=tX(Drb.OY,iub,6,b,14,1);Erb.Y7(a,0,c,0,$wnd.Math.min(a.length,b));return c};Jrb.Rm=function Rm(a,b){var c,d;c=tX(Drb.eZ,Fub,24,b,0,1);for(d=0;d<a.length;d++)!!a[d]&&(c[d]=new Jrb.Ih(a[d]));return c};Jrb.Sm=function Sm(a,b){var c,d;c=tX(Drb.JY,ssb,9,b,0,2);for(d=0;d<a.length;d++){if(a[d]!=null){c[d]=tX(Drb.JY,nub,6,a[d].length,15,1);Erb.Y7(a[d],0,c[d],0,a[d].length)}}return c};Jrb.Tm=function Tm(a,b){var c,d;c=tX(Drb.NY,lub,7,b,0,2);for(d=0;d<a.length;d++){if(a[d]!=null){c[d]=tX(Drb.NY,Qsb,6,a[d].length,15,1);Erb.Y7(a[d],0,c[d],0,a[d].length)}}return c};Jrb.Um=function Um(a){Jrb.Ej();return a>=0&&a<Jrb.zj.length&&Jrb.zj[a]!=null?Jrb.zj[a]:a>=171&&a<=190?Jrb.xj:Jrb.Bj};Jrb.Vm=function Vm(a,b,c,d){Jrb.Ej();var e,f,g;f=c-a;g=d-b;if(g!=0){e=$wnd.Math.atan(f/g);g<0&&(f<0?(e-=ntb):(e+=ntb))}else e=f>0?otb:Wtb;return e};Jrb.Wm=function Wm(a,b){Jrb.Ej();var c;c=a-b;while(c<Mub)c+=mtb;while(c>ntb)c-=mtb;return c};Jrb.Xm=function Xm(a,b){Jrb.Ej();var c,d,e,f,g;if((b&256)!=0&&Erb.k7(a,'?'))return 0;for(d=1;d<=128;d++)if(!Erb.k7(a,Aub)&&Erb.l7(a,Jrb.yj[d]))return d;if((b&2)!=0)for(e=129;e<=144;e++)if(Erb.l7(a,Jrb.yj[e]))return e;if((b&4)!=0)for(f=146;f<=148;f++)if(Erb.l7(a,Jrb.yj[f]))return f;if((b&1)!=0)for(g=151;g<=152;g++)if(Erb.l7(a,Jrb.yj[g]))return g;if((b&32)!=0)if(Erb.l7(a,Jrb.yj[153]))return 153;if((b&8)!=0)if(Erb.l7(a,Jrb.yj[154]))return 154;if((b&16)!=0)if(Erb.l7(a,Jrb.yj[145]))return 145;if((b&128)!=0)if(Erb.l7(a,Jrb.yj[159]))return 159;if((b&64)!=0)for(c=171;c<=190;c++)if(Erb.l7(a,Jrb.yj[c]))return c;return 0};Jrb.Ym=function Ym(a){Jrb.Ej();switch(a){case 7:case 8:case 9:case 15:case 16:case 17:case 33:case 34:case 35:case 52:case 53:return true;}return false};Jrb.Zm=function Zm(a){Jrb.Ej();if(a==1||a==6)return false;if(Jrb.Ym(a))return false;if(a==2||a==10||a==18||a==36||a==54)return false;if(a>103)return false;return true};Jrb.$m=function $m(a){return a>=3&&a<=4||a>=11&&a<=13||a>=19&&a<=31||a>=37&&a<=51||a>=55&&a<=84||a>=87&&a<=112};Jrb._m=function _m(a){return a==1||a>=5&&a<=9||a>=14&&a<=17||a>=32&&a<=35||a>=52&&a<=53};Jrb.an=function an(a){return a>=21&&a<=30||a>=39&&a<=48||a==57||a>=72&&a<=80||a==89||a>=104&&a<=112};Z3(85,1,{85:1,4:1});_.xb=function Om(a){Jrb.ak(this,a)};_.yb=function bn(a){return this.H[a]==8};_.q=0;_.r=0;_.I=0;_.K=false;_.L=false;_.M=0;_.N=0;_.O=0;_.S=false;_.T=0;_.U=0;_.V=0;Jrb.Dj=24;Drb.qZ=B5(85);Jrb.cn=function cn(a,b,c,d){var e,f,g,h,i,j,k,l,m;Jrb.ou(b,1);d==null&&(d=tX(Drb.NY,Qsb,6,b.q,15,1));h=Jrb.Ml(a,1);i=Jrb.Ml(a,2);m=tX(Drb.c3,itb,6,b.q,16,1);j=tX(Drb.NY,Qsb,6,b.q,15,1);j[0]=c;m[c]=true;d[c]=Jrb.Yj(b,a,c,h,i);g=0;k=0;while(g<=k){for(l=0;l<Jrb.rn(b,j[g]);l++){f=b.i[j[g]][l];if(!m[f]){j[++k]=f;m[f]=true;d[f]=Jrb.Yj(b,a,f,h,i)}}++g}for(e=0;e<b.r;e++)m[b.D[0][e]]&&Jrb.Zj(b,a,e,h,i,d==null?b.D[0][e]:d[b.D[0][e]],d==null?b.D[1][e]:d[b.D[1][e]],false);Jrb.Ml(a,1);Jrb.Ml(a,2);a.T=0};Jrb.dn=function dn(a){var b,c,d,e,f,g,h,i,j,k,l,m;a.j=tX(Drb.NY,Qsb,6,a.q,15,1);a.e=tX(Drb.NY,Qsb,6,a.q,15,1);a.i=tX(Drb.NY,lub,7,a.q,0,2);a.k=tX(Drb.NY,lub,7,a.q,0,2);a.n=tX(Drb.NY,lub,7,a.q,0,2);a.o=tX(Drb.NY,Qsb,6,a.f,15,1);j=tX(Drb.NY,Qsb,6,a.q,15,1);for(g=0;g<a.r;g++){++j[a.D[0][g]];++j[a.D[1][g]]}for(d=0;d<a.q;d++){a.i[d]=tX(Drb.NY,Qsb,6,j[d],15,1);a.k[d]=tX(Drb.NY,Qsb,6,j[d],15,1);a.n[d]=tX(Drb.NY,Qsb,6,j[d],15,1)}l=false;for(h=0;h<a.g;h++){m=Jrb.Qk(a,h);if(m==0){l=true;continue}for(k=0;k<2;k++){c=a.D[k][h];b=a.e[c];a.n[c][b]=m;a.i[c][b]=a.D[1-k][h];a.k[c][b]=h;++a.e[c];++a.j[c];c<a.f&&(m>1?(a.o[c]+=m-1):a.H[h]==8&&(a.o[c]=1))}}for(i=a.g;i<a.r;i++){m=Jrb.Qk(a,i);if(m==0){l=true;continue}for(k=0;k<2;k++){c=a.D[k][i];b=a.e[c];a.n[c][b]=m;a.i[c][b]=a.D[1-k][i];a.k[c][b]=i;++a.e[c];a.D[1-k][i]<a.f&&++a.j[c]}}if(l){b=tX(Drb.NY,Qsb,6,a.q,15,1);for(e=0;e<a.q;e++)b[e]=a.e[e];for(f=0;f<a.r;f++){m=Jrb.Qk(a,f);if(m==0){for(k=0;k<2;k++){c=a.D[k][f];a.n[c][b[c]]=m;a.i[c][b[c]]=a.D[1-k][f];a.k[c][b[c]]=f;++b[c]}}}}};Jrb.en=function en(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;Jrb.ou(a,1);c&&(b=true);for(i=0;i<a.r;i++){j=Jrb.Qk(a,i);if(j==1||j==2){if(a.s[a.D[0][i]]>0&&a.s[a.D[1][i]]<0){f=a.D[0][i];g=a.D[1][i]}else if(a.s[a.D[0][i]]<0&&a.s[a.D[1][i]]>0){f=a.D[1][i];g=a.D[0][i]}else continue;if(Jrb.tl(a,f)||Jrb.tl(a,g))continue;if(a.C[f]<9&&Jrb.ao(a,f)>3||a.C[g]<9&&Jrb.ao(a,g)>3)continue;l=Jrb.Wn(a,f)!=0;a.s[f]-=1;a.s[g]+=1;if(!l){s=a.H[i];j==1?(a.H[i]=2):(a.H[i]=4);if(s==129||s==257){w=a.D[0][i];r=Jrb.Vo(a,w,false);if(a.D[0][r]!=w){a.D[1][r]=a.D[0][r];a.D[1][r]=w}}}a.T=0}}t=0;p=0;n=0;for(e=0;e<a.q;e++){t+=a.s[e];if(a.s[e]<0&&!Jrb.uo(a,e)){++p;Jrb.ql(a,e)&&(n-=a.s[e])}}if(!b&&t!=0)throw h3(new Erb._z(\"molecule's overall charges are not balanced\"));Jrb.ou(a,1);u=0;v=c?t+n:n;for(h=0;h<a.q;h++){if(a.s[h]>0){if(!Jrb.to(a,h)&&Jrb.ql(a,h)){k=$wnd.Math.min(Jrb.Wn(a,h),a.s[h]);if(k!=0&&v>=k){t-=k;u-=k;v-=k;a.s[h]-=k;a.T&=1}}}}q=c?t:u;if(q<0){o=tX(Drb.NY,Qsb,6,p,15,1);p=0;for(f=0;f<a.q;f++){a.s[f]<0&&!Jrb.uo(a,f)&&(o[p++]=(a.C[f]<<22)+f)}Hrb.Nmb(o,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));for(m=o.length-1;q<0&&m>=o.length-p;m--){d=o[m]&Nub;if(Jrb.ql(a,d)){k=$wnd.Math.min(-q,-a.s[d]);t+=k;q+=k;a.s[d]+=k;a.T&=1}}}return t};Jrb.fn=function fn(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;for(c=0;c<a.q;c++){n=Jrb.$k(a,c);n+Jrb.Yk(a,c,n,a.C[c])-Jrb.ao(a,c)<=0&&!(a.s[c]==0&&(a.C[c]==5||(e=a.C[c],e==7||e==15||e==33)||(d=a.C[c],d==8||d==16||d==34||d==52||d==84)))&&(a.B[c]=j3(a.B[c],-6145))}if(a.S)return false;g=false;for(b=0;b<a.f;b++){h=a.e[b]-a.j[b];if(h>0){if(t3(j3(a.B[b],Vtb),0)){k=t3(j3(a.B[b],utb),896)?3:t3(j3(a.B[b],utb),384)?2:t3(j3(a.B[b],128),128)?1:0;i=(n=Jrb.$k(a,b),n+Jrb.Yk(a,b,n,a.C[b])-Jrb.ao(a,b));a.s[b]==0&&t3(j3(a.B[b],wtb),0)&&a.C[b]!=6&&++i;l=h;l>3-k&&(l=3-k);l>i+h-k&&(l=i+h-k);if(l>0){m=k==0?0:H3(j3(a.B[b],utb),l);m=G3(m,Drb.r3((l==3?7:h==2?3:1)<<7));a.B[b]=j3(a.B[b],-1921);a.B[b]=G3(a.B[b],j3(utb,m))}}for(j=a.j[b];j<a.e[b];j++){f=a.k[b][j];if(a.H[f]==1){a.C[a.i[b][j]]=-1;a.H[f]=512;g=true}}}}g&&Jrb.Xj(a);return g};Jrb.gn=function gn(a,b){var c,d,e,f;if(a.o[b]==2&&a.j[b]==2&&a.n[b][0]==2){for(e=0;e<2;e++){c=Jrb.mn(a,b,a.i[b][e]);if(c!=-1){for(f=0;f<a.j[c];f++){d=a.k[c][f];(a.H[d]==257||a.H[d]==129)&&a.D[0][d]==c&&(a.H[a.k[c][f]]=1)}}}return}if(a.o[b]==0||a.C[b]>=15){for(e=0;e<a.e[b];e++){d=a.k[b][e];(a.H[d]==257||a.H[d]==129)&&a.D[0][d]==b&&a.D[0][d]==b&&(a.H[d]=1)}}};Jrb.hn=function hn(a,b,c,d,e){var f,g,h,i,j,k,l,m;Jrb.ou(a,d?7:1);b.v=null;a.K&&Jrb.vm(b,true);i=c.length;e==null&&(e=tX(Drb.NY,Qsb,6,i,15,1));b.q=0;for(f=0;f<i;f++){if(c[f]){e[f]=Jrb.Yj(a,b,f,0,0);if(a.C[f]==1){m=Jrb.ao(a,f);if(m>1){for(l=0;l<a.e[f];l++){if(!c[a.i[f][l]]){Jrb.Ql(b,e[f],m);break}}}}}else{e[f]=-1}}k=tX(Drb.NY,Qsb,6,a.r,15,1);Krb.Meb(k,k.length,-1);b.r=0;for(j=0;j<a.r;j++){g=a.D[0][j];h=a.D[1][j];if(g<i&&h<i){if(c[g]&&c[h])k[j]=Jrb.Zj(a,b,j,0,0,e==null?a.D[0][j]:e[a.D[0][j]],e==null?a.D[1][j]:e[a.D[1][j]],d);else if(a.s[g]!=0&&a.s[h]!=0&&a.s[g]<0^a.s[h]<0){c[g]&&(b.s[e[g]]+=a.s[g]<0?1:-1);c[h]&&(b.s[e[h]]+=a.s[h]<0?1:-1)}}}Jrb.ak(a,b);!!a.d&&(b.T=0);b.T=0;Jrb.Ml(b,1);Jrb.Ml(b,2);b.q!=i&&Jrb.vm(b,true);Jrb.Yo(a,b,i,e,k);Jrb.Xo(a,b,i,e);d&&Jrb.de(new Jrb.qe(b),null,false)};Jrb.jn=function jn(a,b,c,d,e){var f,g,h,i,j,k,l,m;Jrb.ou(a,d?7:1);b.v=null;a.K&&Jrb.vm(b,true);e==null&&(e=tX(Drb.NY,Qsb,6,a.q,15,1));b.q=0;for(f=0;f<a.q;f++){e[f]=-1;for(k=0;k<a.j[f];k++){if(c[a.k[f][k]]){e[f]=Jrb.Yj(a,b,f,0,0);if(a.C[f]==1){m=Jrb.ao(a,f);if(m>1){for(l=0;l<a.e[f];l++){if(!c[a.k[f][l]]){Jrb.Ql(b,e[f],m);break}}}}break}}}j=tX(Drb.NY,Qsb,6,a.r,15,1);b.r=0;for(i=0;i<a.r;i++)if(c[i]){j[i]=Jrb.Zj(a,b,i,0,0,e==null?a.D[0][i]:e[a.D[0][i]],e==null?a.D[1][i]:e[a.D[1][i]],d)}else{j[i]=-1;g=a.D[0][i];h=a.D[1][i];if(e[g]==-1^e[h]==-1){if(a.s[g]!=0&&a.s[h]!=0&&a.s[g]<0^a.s[h]<0){e[g]!=-1&&(b.s[e[g]]+=a.s[g]<0?1:-1);e[h]!=-1&&(b.s[e[h]]+=a.s[h]<0?1:-1)}}}Jrb.ak(a,b);!!a.d&&(b.T=0);b.T=0;Jrb.Ml(b,1);Jrb.Ml(b,2);b.q!=a.q&&Jrb.vm(b,true);Jrb.Yo(a,b,a.q,e,j);Jrb.Xo(a,b,a.q,e);d&&Jrb.de(new Jrb.qe(b),null,false);return e};Jrb.kn=function kn(a,b){var c,d,e,f,g,h,i,j,k,l;if((b&~a.T)==0)return;if((a.T&1)==0){Jrb.so(a);Jrb.dn(a);a.T|=1;if(a.K&&!Jrb.el(a)&&Jrb.fn(a)){Jrb.so(a);Jrb.dn(a);a.T|=1}}if((b&~a.T)==0)return;if((a.T&-7)!=0){for(d=0;d<a.f;d++)a.u[d]&=-15369;for(f=0;f<a.g;f++)a.F[f]&=-705;if((b&4)==0){Jrb.pn(a,1);a.T|=2;return}Jrb.pn(a,7);for(e=0;e<a.f;e++){for(k=0;k<a.j[e];k++){i=a.k[e][k];if(i<a.g&&Jrb.Gr(a.p,i))continue;h=a.i[e][k];for(l=0;l<a.j[h];l++){if(a.k[h][l]==i)continue;a.n[h][l]>1&&(a.C[a.i[h][l]]==6?(a.u[e]|=qtb):!Jrb.zo(a,a.k[h][l])&&Jrb.ql(a,a.i[h][l])&&(a.u[e]|=Utb))}}}while(true){j=false;for(c=0;c<a.f;c++){if(a.o[c]>0&&(a.u[c]&Utb)!=0&&!Jrb.Fr(a.p,c)){for(k=0;k<a.j[c];k++){if(a.n[c][k]>1){h=a.i[c][k];i=a.k[c][k];for(l=0;l<a.j[h];l++){if(a.k[h][l]!=i){g=a.i[h][l];if((a.u[g]&Utb)==0){a.u[g]|=Utb;j=true}}}}}}}if(!j)break}}a.T|=6};Jrb.ln=function ln(a,b){var c,d,e,f,g;c=-1;if(a.o[b]==1){for(f=0;f<a.j[b];f++){if(a.n[b][f]==2){d=a.i[b][f];if(a.j[d]==2&&a.o[d]==2){for(g=0;g<2;g++){e=a.i[d][g];if(e!=b&&a.o[e]==1){c=d;break}}}break}}}return c};Jrb.mn=function mn(a,b,c){var d,e;d=b;while(a.j[c]==2&&a.o[c]==2&&c!=d){e=c;c=a.i[c][0]==b?a.i[c][1]:a.i[c][0];b=e}return c==d?-1:c};Jrb.nn=function nn(a,b){var c;if(a.j[b]==3&&b<a.f&&Jrb.Fr(a.p,b)&&(!!a.p&&b<a.f?Jrb.ur(a.p,b):0)>=5)for(c=0;c<a.j[b];c++)if(Jrb.Ao(a,a.k[b][c]))return a.k[b][c];return -1};Jrb.on=function on(a,b,c,d,e){var f,g,h,i,j,k;Jrb.ou(a,7);if((a.u[b]&Oub)==0||c&&!(b<a.f&&Jrb.Fr(a.p,b)))return;i=tX(Drb.NY,Qsb,6,a.f,15,1);i[0]=b;d[b]=true;h=0;j=0;while(h<=j){for(k=0;k<a.j[i[h]];k++){g=a.k[i[h]][k];if(!e[g]&&(a.F[g]&64)!=0&&(!c||g<a.g&&Jrb.Gr(a.p,g))){e[g]=true;f=a.i[i[h]][k];if(!d[f]){d[f]=true;i[++j]=f}}}++h}};Jrb.pn=function pn(a,b){var c,d,e,f,g,h,i,j;a.p=new Jrb.Tr(a,b);d=tX(Drb.NY,Qsb,6,a.f,15,1);for(e=0;e<a.g;e++){if(Jrb.wr(a.p,e)!=0){a.F[e]|=64;++d[a.D[0][e]];++d[a.D[1][e]]}}for(c=0;c<a.f;c++){d[c]==2?(a.u[c]|=vtb):d[c]==3?(a.u[c]|=Vtb):d[c]>3&&(a.u[c]|=Oub)}for(j=0;j<a.p.i.a.length;j++){g=Jrb.yr(a.p,j);i=Jrb.zr(a.p,j);h=g.length;for(f=0;f<h;f++){a.u[g[f]]|=8;a.F[i[f]]|=128;a.H[i[f]]==386&&(a.H[i[f]]=2)}}};Jrb.qn=function qn(a){var b,c,d,e,f,g,h,i;h=tX(Drb.c3,itb,6,a.q,16,1);for(c=0;c<a.q;c++)h[c]=a.C[c]==1&&a.A[c]==0&&a.s[c]==0&&(a.u[c]&Bub)==0&&(a.t==null||a.t[c]==null);i=tX(Drb.c3,itb,6,a.q,16,1);for(g=0;g<a.r;g++){d=a.D[0][g];e=a.D[1][g];if(Jrb.Qk(a,g)!=1){h[d]=false;h[e]=false;continue}i[d]&&(h[d]=false);i[e]&&(h[e]=false);h[d]&&Jrb.tl(a,e)&&a.C[e]!=13&&(h[d]=false);h[e]&&Jrb.tl(a,d)&&a.C[d]!=13&&(h[e]=false);i[d]=true;i[e]=true}for(f=0;f<a.r;f++){if(h[a.D[0][f]]&&h[a.D[1][f]]){h[a.D[0][f]]=false;h[a.D[1][f]]=false}}for(b=0;b<a.q;b++)i[b]||(h[b]=false);return h};Jrb.rn=function rn(a,b){return a.e[b]};Jrb.sn=function sn(a,b){return a.i[b].length};Jrb.tn=function tn(a,b){return a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)};Jrb.un=function un(a){var b,c;Jrb.ou(a,7);b=0;for(c=0;c<a.p.i.a.length;c++)Jrb.Er(a.p,c)&&++b;return b};Jrb.vn=function vn(a,b){var c,d;c=0;for(d=0;d<a.j[b];d++)Jrb.ql(a,a.i[b][d])&&!Jrb.ll(a,a.k[b][d])&&++c;return c};Jrb.wn=function wn(a,b){return a.o[b]};Jrb.xn=function xn(a,b){Jrb.ou(a,7);return a.o[b]==2&&a.j[b]==2?Jrb.To(a,b,false):Jrb.Vo(a,b,false)};Jrb.yn=function yn(a,b){var c;c=a.u[b]&Oub;return c==0?0:c==vtb?2:c==Vtb?3:4};Jrb.zn=function zn(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;Jrb.ou(a,7);f=tX(Drb.c3,itb,6,a.g,16,1);l=tX(Drb.c3,itb,6,a.g,16,1);o=tX(Drb.NY,Qsb,6,a.f,15,1);g=0;for(h=1;h<a.j[b];h++){d=a.k[b][h];if((a.F[d]&64)!=0){for(j=0;j<h;j++){e=a.k[b][j];if((a.F[e]&64)!=0){l[d]=true;l[e]=true;n=Jrb.co(a,o,a.i[b][h],a.i[b][j],c-2,null,l);l[d]=false;l[e]=false;if(n!=-1){i=false;m=tX(Drb.NY,Qsb,6,n,15,1);Jrb.eo(a,o,m,n);for(k=0;k<n;k++){if(!f[m[k]]){f[m[k]]=true;i=true}}i&&++g}}}}}return g};Jrb.An=function An(a,b){return !!a.p&&b<a.f?Jrb.ur(a.p,b):0};Jrb.Bn=function Bn(a,b){if(b){Jrb.ou(a,1);return Jrb.Fk(a,a.f,a.g,Jrb.Dj)}else{return Jrb.Fk(a,a.q,a.r,Jrb.Dj)}};Jrb.Cn=function Cn(a){var b,c,d,e,f,g,h,i;Jrb.ou(a,1);h=tX(Drb.MY,Pub,6,a.f,15,1);d=tX(Drb.NY,Qsb,6,a.f,15,1);for(i=0;i<a.f;i++){d[0]=i;e=tX(Drb.NY,Qsb,6,a.f,15,1);e[i]=1;c=0;f=0;while(c<=f){for(g=0;g<a.j[d[c]];g++){b=a.i[d[c]][g];if(e[b]==0){e[b]=e[d[c]]+1;d[++f]=b;h[i]+=e[b]-1}}++c}h[i]/=f}return h};Jrb.Dn=function Dn(a,b,c){var d;for(d=0;d<a.i[b].length;d++)if(a.i[b][d]==c)return a.k[b][d];return -1};Jrb.En=function En(a,b){return !!a.p&&b<a.g?Jrb.wr(a.p,b):0};Jrb.Fn=function Fn(a,b,c){return a.i[b][c]};Jrb.Gn=function Gn(a,b){return a.j[b]};Jrb.Hn=function Hn(a,b,c){return a.k[b][c]};Jrb.In=function In(a,b,c){return a.n[b][c]};Jrb.Jn=function Jn(a,b){var c,d;c=0;if(a.K)for(d=0;d<a.j[b];d++)E3(j3(a.B[a.i[b][d]],jtb),0)&&++c;return c};Jrb.Kn=function Kn(a,b){return a.e[b]-a.j[b]};Jrb.Ln=function Ln(a,b,c,d,e){var f,g,h,i;g=a.e[b];if(a.o[b]!=0||b<a.f&&Jrb.Fr(a.p,b)||a.j[b]<3||g>4)return false;i=tX(Drb.c3,itb,6,4,16,1);for(h=0;h<g;h++){f=3.9269908169872414-d[h];if($wnd.Math.abs(Qub-f%otb)>0.0872664675116539)return false;e[h]=3&IY(f/otb);if(i[e[h]])return false;i[e[h]]=true;if((e[h]&1)==0){if(a.H[a.k[b][c[h]]]!=1)return false}else{if(!Jrb.Al(a,a.k[b][c[h]],b))return false}}return i[0]&&i[2]};Jrb.Mn=function Mn(a,b,c,d,e){var f,g,h,i,j,k,l,m;if((!!a.p&&b<a.f?Jrb.ur(a.p,b):0)>24)return 3;f=a.e[b];e==null&&(e=tX(Drb.NY,Qsb,6,f,15,1));if(!Jrb.Ln(a,b,c,d,e))return 3;i=-1;for(j=0;j<f;j++){if((e[j]&1)==1){g=a.H[a.k[b][c[j]]];if(i!=-1&&i!=g)return 3;i=g}}k=$wnd.Math.abs(e[0]-e[1])==2?1:0;h=e[k]-e[k+1];m=$wnd.Math.abs(h)==3^e[k]<e[k+1];l=f==3||(e[3]&1)==1;return m^l^i==129?1:2};Jrb.Nn=function Nn(a,b,c){var d,e,f,g;g=g=tX(Drb.c3,itb,6,a.q,16,1);f=Jrb.On(a,b,c,g);e=tX(Drb.NY,Qsb,6,f,15,1);f=0;for(d=0;d<a.q;d++)g[d]&&(e[f++]=d);return e};Jrb.On=function On(a,b,c,d){var e,f,g,h,i,j,k;Jrb.ou(a,1);d==null&&(d=tX(Drb.c3,itb,6,a.q,16,1));i=tX(Drb.NY,Qsb,6,a.q,15,1);i[0]=b;d[b]=true;g=0;j=0;h=1;while(g<=j){f=c?Jrb.sn(a,i[g]):a.e[i[g]];for(k=0;k<f;k++){e=a.i[i[g]][k];if(e<d.length&&!d[e]){i[++j]=e;d[e]=true;++h}}++g}return h};Jrb.Pn=function Pn(a,b,c,d){var e,f,g,h,i,j,k,l,m;Jrb.ou(a,1);for(f=0;f<a.q;f++)b[f]=-1;j=0;for(e=0;e<a.q;e++){if(b[e]==-1&&(!c||(a.u[e]&oub)!=0)){b[e]=j;k=tX(Drb.NY,Qsb,6,a.q,15,1);k[0]=e;i=0;l=0;while(i<=l){h=d?Jrb.sn(a,k[i]):a.e[k[i]];for(m=0;m<h;m++){g=a.i[k[i]][m];if(b[g]==-1&&(!c||(a.u[g]&oub)!=0)){k[++l]=g;b[g]=j}}++i}++j}}return j};Jrb.Qn=function Qn(a,b,c,d){var e,f,g,h,i,j,k,l,m;Jrb.ou(a,1);for(f=0;f<a.q;f++)b[f]=-1;j=0;for(e=0;e<a.q;e++){if(b[e]==-1){b[e]=j;k=tX(Drb.NY,Qsb,6,a.q,15,1);k[0]=e;i=0;l=0;while(i<=l){h=d?Jrb.sn(a,k[i]):a.e[k[i]];for(m=0;m<h;m++){g=a.i[k[i]][m];if(b[g]==-1&&!c[a.k[k[i]][m]]){k[++l]=g;b[g]=j}}++i}++j}}return j};Jrb.Rn=function Rn(a,b){var c;return c=Jrb.$k(a,b),c+Jrb.Yk(a,b,c,a.C[b])-Jrb.ao(a,b)};Jrb.Sn=function Sn(a,b){var c,d,e,f,g,h;f=tX(Drb.NY,Qsb,6,a.q,15,1);for(d=0;d<a.q;d++)f[d]=d;e=a.q;do --e;while(e>=0&&b[e]);for(c=0;c<e;c++){if(b[f[c]]){h=f[c];f[c]=f[e];f[e]=h;g=b[c];b[c]=b[e];b[e]=g;do --e;while(b[e])}}return f};Jrb.Tn=function Tn(a){return Jrb.Sn(a,Jrb.qn(a))};Jrb.Un=function Un(a,b,c){var d,e,f;e=Jrb.ao(a,b);e-=Jrb.Yk(a,b,e,a.C[b]);c&&(e-=a.e[b]-a.j[b]);f=Jrb.Um(a.C[b]);if(e<=f[0])return -1;for(d=1;d<f.length;d++)if(f[d]>=e)return f[d];return e};Jrb.Vn=function Vn(a){var b,c;if(a.K)return 0;Jrb.ou(a,1);c=0;for(b=0;b<a.f;b++)c+=Jrb.Wn(a,b);return c};Jrb.Wn=function Wn(a,b){var c,d,e,f,g,h,i;if(a.K&&t3(j3(a.B[b],Vtb),0))return 0;if(!Jrb.ep(a,b))return 0;if(a.C[b]==0||Erb.k7('*',a.t==null?null:a.t[b]==null?null:Erb.i7((f=a.t[b],hsb.Kab(),f))))return a.e[b]==0?1:0;Jrb.ou(a,1);h=0;for(e=0;e<a.e[b];e++)h+=a.n[b][e];if(a.K){c=1;for(d=0;d<a.j[b];d++)a.H[a.k[b][d]]==8&&++c;h+=c>>1}h-=Jrb.Yk(a,b,h,a.C[b]);g=((a.u[b]&Bub)>>>27)-1;if(g==-1){i=Jrb.Um(a.C[b]);g=i[0];for(d=1;g<h&&d<i.length;d++)g=i[d]}return $wnd.Math.max(0,g-h)};Jrb.Xn=function Xn(a,b){var c,d,e,f,g;if(!a.K||a.v==null||a.v[b]==null)return Jrb.Yn(a,b,a.C[b]);g=0;for(d=a.v[b],e=0,f=d.length;e<f;++e){c=d[e];g=$wnd.Math.max(g,Jrb.Yn(a,b,c))}return g};Jrb.Yn=function Yn(a,b,c){var d,e,f,g,h;f=Jrb.ao(a,b);d=Jrb.Yk(a,b,f,c);g=((a.u[b]&Bub)>>>27)-1;if(g==-1){h=Jrb.Um(a.C[b]);e=0;while(f>h[e]+d&&e<h.length-1)++e;g=h[e]}return g+d-f};Jrb.Zn=function Zn(a,b){return a.i[b].length-a.e[b]};Jrb.$n=function $n(a){var b,c,d,e;Jrb.ou(a,1);e=0;for(b=0;b<a.q;b++){d=a.A[b]!=0?a.A[b]:Jrb.Cj[a.C[b]];e+=d+Jrb.Wn(a,b)*Jrb.Cj[1];if(a.C[b]>=171&&a.C[b]<=190){c=a.e[b];c>2&&(e-=(c-2)*Jrb.Cj[1])}}return e};Jrb._n=function _n(a,b){var c,d;c=a.j[b];for(d=0;d<a.j[b];d++)a.C[a.i[b][d]]==1&&--c;return c};Jrb.ao=function ao(a,b){var c,d,e,f,g,h;a.zb(1);g=false;d=false;h=0;for(e=0;e<a.e[b];e++){if(!a.K||t3(j3(a.B[a.i[b][e]],jtb),0)){f=a.n[b][e];h+=f;f>1&&(g=true);c=a.k[b][e];a.H[c]==8&&(d=true)}}d&&!g&&++h;return h};Jrb.bo=function bo(a,b,c){var d,e,f;e=0;for(f=0;f<a.j[b];f++){d=a.i[b][f];d!=c&&a.j[d]>2&&++e}return e};Jrb.co=function co(a,b,c,d,e,f,g){var h,i,j,k,l,m,n,o,p;if(c==d){b[0]=c;return 0}a.zb(1);k=tX(Drb.NY,Qsb,6,a.q,15,1);j=tX(Drb.NY,Qsb,6,a.q,15,1);p=tX(Drb.NY,Qsb,6,a.q,15,1);j[0]=c;k[c]=1;i=0;l=0;while(i<=l&&k[j[i]]<=e){o=j[i];for(m=0;m<a.e[o];m++){if(g==null||g.length<=a.k[o][m]||!g[a.k[o][m]]){h=a.i[o][m];if(h==d){n=k[o];b[n]=h;b[--n]=o;while(n>0){b[n-1]=p[b[n]];--n}return k[o]}if(k[h]==0&&(f==null||f.length<=h||!f[h])){j[++l]=h;k[h]=k[o]+1;p[h]=o}}}++i}return -1};Jrb.eo=function eo(a,b,c,d){var e,f;Jrb.ou(a,1);for(e=0;e<d;e++){for(f=0;f<a.e[b[e]];f++){if(a.i[b[e]][f]==b[e+1]){c[e]=a.k[b[e]][f];break}}}};Jrb.fo=function fo(a,b,c){var d,e,f,g,h,i;if(b==c)return 0;Jrb.ou(a,1);g=tX(Drb.NY,Qsb,6,a.q,15,1);f=tX(Drb.NY,Qsb,6,a.q,15,1);f[0]=b;g[b]=1;e=0;h=0;while(e<=h){for(i=0;i<a.e[f[e]];i++){d=a.i[f[e]][i];if(d==c)return g[f[e]];if(g[d]==0){f[++h]=d;g[d]=g[f[e]]+1}}++e}return -1};Jrb.go=function go(a,b,c,d,e){var f,g,h,i,j,k;if(b==c)return 0;a.zb(1);i=tX(Drb.NY,Qsb,6,a.q,15,1);h=tX(Drb.NY,Qsb,6,a.q,15,1);h[0]=b;i[b]=1;g=0;j=0;while(g<=j&&i[h[g]]<=d){for(k=0;k<a.e[h[g]];k++){f=a.i[h[g]][k];if(f==c)return i[h[g]];if(i[f]==0&&(e==null||e.length<=f||!e[f])){h[++j]=f;i[f]=i[h[g]]+1}}++g}return -1};Jrb.ho=function ho(a,b){return a.e[b]-a.j[b]+Jrb.Wn(a,b)};Jrb.io=function io(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;o=tX(Drb.NY,Qsb,6,16,15,1);c=tX(Drb.LY,Osb,6,16,15,1);f=tX(Drb.LY,Osb,6,2,15,1);d=0;for(k=0;k<2;k++){e=a.D[k][b];for(l=0;l<a.j[e];l++){i=a.k[e][l];if(i==b)continue;if(d==4)return 0;h=a.i[e][l];o[d]=16;a.o[h]!=0&&(o[d]+=(a.u[h]&Oub)!=0?1:4);if((a.F[b]&64)!=0&&(a.F[i]&64)!=0){m=Jrb.Cr(a.p,b,i);m!=-1&&(o[d]+=Jrb.Er(a.p,m)?64:6)}c[d++]=Jrb.Vm(a.J[e].a,a.J[e].b,a.J[h].a,a.J[h].b)}}f[0]=Jrb.Hk(a,a.D[0][b],a.D[1][b]);if(f[0]<0){f[1]=f[0]+ntb;g=false}else{f[1]=f[0];f[0]=f[1]-ntb;g=true}n=0;for(j=0;j<d;j++){c[j]>f[0]&&c[j]<f[1]?(n-=o[j]):(n+=o[j])}return g?-n:n};Jrb.jo=function jo(a){Jrb.ou(a,7);return a.p};Jrb.ko=function ko(a){var b,c,d,e,f,g,h,i,j;j=0;Jrb.ou(a,7);for(d=0;d<a.g;d++){if(Jrb.Qk(a,d)==1&&(a.F[d]&64)==0){h=true;for(g=0;g<2;g++){b=a.D[g][d];if(a.j[b]==1){h=false;break}if(a.C[b]==7&&!(b<a.f&&Jrb.Fr(a.p,b))){c=a.D[1-g][d];for(i=0;i<a.j[c];i++){e=a.i[c][i];f=a.k[c][i];if(f!=d&&Jrb.Qk(a,f)>1&&!(e<a.f&&Jrb.Fr(a.p,e))&&Jrb.ql(a,e)){h=false;break}}}}h&&!Jrb.Io(a,d)&&++j}}return j};Jrb.lo=function lo(a,b,c){var d,e,f,g,h,i;e=0;for(f=0;f<a.j[b];f++){d=a.i[b][f];if(d!=c){g=0;for(h=0;h<a.j[d];h++){i=a.i[d][h];i!=b&&Jrb.zo(a,a.k[d][h])&&a.j[i]>2&&++g}g==2&&++e}}return e};Jrb.mo=function mo(a,b){var c,d,e,f;c=a.e[b];f=tX(Drb.NY,Qsb,6,c,15,1);for(e=0;e<c;e++)f[e]=(a.i[b][e]<<16)+e;Hrb.Nmb(f,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));for(d=0;d<c;d++)f[d]&=Gsb;return f};Jrb.no=function no(a,b){var c,d;Jrb.ou(a,1);if(a.j[b]==2&&a.n[b][0]==2&&a.n[b][1]==2){for(c=0;c<2;c++)for(d=0;d<a.e[a.i[b][c]];d++)if(Jrb.Al(a,a.k[a.i[b][c]][d],a.i[b][c]))return a.k[a.i[b][c]][d]}else{for(c=0;c<a.e[b];c++)if(Jrb.Al(a,a.k[b][c],b))return a.k[b][c]}return -1};Jrb.oo=function oo(a,b,c){if(Jrb.Qk(a,b)!=1)return 0;return 16-a.e[c]+16*$wnd.Math.max(0,$wnd.Math.min(9,!!a.p&&b<a.g?Jrb.wr(a.p,b):0)-2)+((a.H[b]&384)==0||a.D[0][b]!=c?Iub:0)+((a.u[c]&3)==0?qtb:0)+(a.C[c]==1?Vtb:0)+(a.e[c]==1?vtb:0)+((a.F[b]&64)!=0?0:512)+(a.C[c]!=6?256:0)};Jrb.po=function po(a,b,c,d,e,f){var g,h,i,j,k;Jrb.ou(a,1);if(e){Jrb.Wj(e);e.d=null;e.K=false}i=tX(Drb.NY,Qsb,6,a.q,15,1);d==null?(d=tX(Drb.c3,itb,6,a.q,16,1)):Krb.Qeb(d,d.length);i[0]=b;i[1]=c;d[b]=true;d[c]=true;h=1;j=1;while(h<=j){for(k=0;k<a.e[i[h]];k++){g=a.i[i[h]][k];if(g==b){if(h!=1)return -1}if(!d[g]){d[g]=true;i[++j]=g}}++h}if(e){f==null&&(f=tX(Drb.NY,Qsb,6,d.length,15,1));Jrb.hn(a,e,d,false,f);Jrb.Tj(e,f[b],0,0,-1,0)}d[b]=false;return j};Jrb.qo=function qo(a,b,c){var d,e,f,g,h,i;Jrb.ou(a,1);f=tX(Drb.NY,Qsb,6,a.f,15,1);i=tX(Drb.c3,itb,6,a.f,16,1);f[0]=b;f[1]=c;i[b]=true;i[c]=true;e=1;g=1;while(e<=g){for(h=0;h<a.j[f[e]];h++){d=a.i[f[e]][h];if(d==b){if(e!=1)return -1}if(!i[d]){i[d]=true;f[++g]=d}}++e}return g};Jrb.ro=function ro(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;if(Jrb.Qk(a,c)!=2&&!(c<a.g&&Jrb.Gr(a.p,c)))return -1;n=a.F[c]&3;if(n!=1&&n!=2)return -1;for(i=0;i<2;i++){d=a.D[i][c];e=a.D[1-i][c];m=-1;g=false;for(k=0;k<a.j[d];k++){f=a.i[d][k];f!=e&&(f==b?(g=true):(m=f))}if(g){l=-1;h=-1;for(j=0;j<a.j[e];j++){f=a.i[e][j];if(f!=d){if(l==-1)l=f;else if(f>l)h=f;else{h=l;l=f}}}if(a.j[d]==2){if(a.j[e]==2)return n==2?l:-1;return n==2?l:h}else{if(a.j[e]==2)return n==2^b<m?-1:l;return n==2^b<m?h:l}}}return -1};Jrb.so=function so(a){var b,c,d,e,f,g,h,i,j,k;g=Jrb.qn(a);i=a.q;do --i;while(i>=0&&g[i]);for(b=0;b<i;b++){if(g[b]){Jrb.Gm(a,b,i);k=g[b];g[b]=g[i];g[i]=k;do --i;while(g[i])}}a.f=i+1;if(a.q==a.f){a.g=a.r;return}h=tX(Drb.c3,itb,6,a.r,16,1);for(f=0;f<a.r;f++){c=a.D[0][f];d=a.D[1][f];(g[c]||g[d])&&(h[f]=true)}j=a.r;do --j;while(j>=0&&h[j]);for(e=0;e<j;e++){if(h[e]){Jrb.Hm(a,e,j);h[e]=false;do --j;while(h[j])}}a.g=j+1};Jrb.to=function to(a,b){var c;for(c=0;c<a.j[b];c++)if(a.s[a.i[b][c]]<0)return true;return false};Jrb.uo=function uo(a,b){var c;for(c=0;c<a.j[b];c++)if(a.s[a.i[b][c]]>0)return true;return false};Jrb.vo=function vo(a,b){var c;c=a.C[b];return c==3||c==11||c==19||c==37||c==55||c==87};Jrb.wo=function wo(a,b){return (a.u[b]&qtb)!=0};\nJrb.xo=function xo(a,b){var c,d,e,f,g,h;Jrb.ou(a,1);for(g=0;g<2;g++){c=a.D[g][b];if(a.C[c]==7){d=a.D[1-g][b];for(h=0;h<a.j[d];h++){e=a.i[d][h];f=a.k[d][h];if((a.C[e]==7||a.C[e]==8||a.C[e]==16)&&Jrb.Qk(a,f)>=2)return true}}}return false};Jrb.yo=function yo(a,b){return b<a.f&&Jrb.Fr(a.p,b)};Jrb.zo=function zo(a,b){return b<a.g&&Jrb.Gr(a.p,b)};Jrb.Ao=function Ao(a,b){var c,d,e,f,g,h;if(a.H[b]!=1||b<a.g&&Jrb.Gr(a.p,b)||(a.F[b]&64)!=0&&(!!a.p&&b<a.g?Jrb.wr(a.p,b):0)<7)return false;c=a.D[0][b];if(!(c<a.f&&Jrb.Fr(a.p,c))||(!!a.p&&c<a.f?Jrb.ur(a.p,c):0)<5)return false;d=a.D[1][b];if(!(d<a.f&&Jrb.Fr(a.p,d))||(!!a.p&&d<a.f?Jrb.ur(a.p,d):0)<5)return false;e=Jrb.bo(a,c,d);f=Jrb.bo(a,d,c);if((!!a.p&&c<a.f?Jrb.ur(a.p,c):0)>5&&(!!a.p&&d<a.f?Jrb.ur(a.p,d):0)>5)return e+f>2;g=Jrb.lo(a,c,d);h=Jrb.lo(a,d,c);if(e==2&&h>=1)return true;if(f==2&&g>=1)return true;if(g==2&&(f>=1||h>=1))return true;if(h==2&&(e>=1||g>=1))return true;return false};Jrb.Bo=function Bo(a,b){return a.o[b]==2&&a.j[b]==2&&a.n[b][0]==2&&a.n[b][1]==2&&a.C[b]<=7};Jrb.Co=function Co(a,b){var c;c=a.C[b];return c==8||c==16||c==34||c==52||c==84};Jrb.Do=function Do(a,b){return b<a.g&&(Jrb.Kr(a.p,b)||a.H[b]==8)};Jrb.Eo=function Eo(a,b){var c;c=a.C[b];return c==4||c==12||c==20||c==38||c==56||c==88};Jrb.Fo=function Fo(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(a.C[b]!=7||a.j[b]==4)return false;if(b<a.f&&Jrb.Fr(a.p,b)||a.o[b]!=0||E3(j3(a.B[b],Ttb),0))return true;if(a.s[b]==1)return false;for(i=0;i<a.j[b];i++)if(Jrb.En(a,a.k[b][i])==3)return false;g=0;for(j=0;j<a.j[b];j++){if(a.n[b][j]==1){d=a.C[a.i[b][j]];(d==8||d==9||d==17)&&++g}}if(g==0){for(h=0;h<a.j[b];h++){e=a.i[b][h];if(a.o[e]!=0){if(e<a.f&&Jrb.Fr(a.p,e)){if((!!a.p&&e<a.f?Jrb.ur(a.p,e):0)>=5){p=0;for(m=0;m<a.j[e];m++){o=a.i[e][m];o!=b&&Jrb._n(a,o)>=3&&++p}n=Jrb._n(a,b);if(p==2&&n>=2||p==1&&n==3)continue}return !c||!Jrb.Ko(a,b)}for(l=0;l<a.j[e];l++){if(a.n[e][l]==2||Jrb.zo(a,a.k[e][l]))return !c||!Jrb.Ko(a,b)}}}}if(g<2){for(h=0;h<a.j[b];h++){e=a.i[b][h];k=false;f=false;for(l=0;l<a.j[e];l++){if(a.i[e][l]!=b){a.n[e][l]!=1&&(a.C[a.i[e][l]]==7||a.C[a.i[e][l]]==8||a.C[a.i[e][l]]==16)&&(k=true);a.n[e][l]==1&&a.C[a.i[e][l]]==7&&(f=true)}}if(k&&(!f||g==0))return !c||!Jrb.Ko(a,b)}}return false};Jrb.Go=function Go(a,b){var c;c=a.C[b];return c==9||c==17||c==35||c==53||c==85};Jrb.Ho=function Ho(a,b){var c;c=a.C[b];return c==7||c==15||c==33};Jrb.Io=function Io(a,b){var c,d,e,f,g,h;if(Jrb.Qk(a,b)!=1)return false;for(f=0;f<2;f++){c=a.D[f][b];h=a.D[1-f][b];while(a.o[c]==2&&a.j[c]==2&&a.C[c]<10){for(g=0;g<2;g++){d=a.i[c][g];if(d!=h){if(a.j[d]==1)return true;e=a.k[c][g];if(Jrb.Qk(a,e)==1&&e<b)return true;h=c;c=d;break}}}if(a.j[c]==1)return true}return false};Jrb.Jo=function Jo(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s;m=tX(Drb.c3,itb,6,a.g,16,1);m[e]=true;n=tX(Drb.NY,Qsb,6,11,15,1);o=Jrb.co(a,n,d,b,10,null,m);if(o==-1)return false;g=1;while(!Jrb.Hr(a.p,c,n[g]))++g;f=o-g;h=n[g];s=Jrb.Br(a.p,c);if(s==6&&f==2&&g==3){if(Jrb.yn(a,n[1])>=3){r=Jrb.yr(a.p,c);for(l=0;l<6;l++){if(b==r[l]){q=Jrb.Sr(a.p,c,h==r[Jrb.Sr(a.p,c,l+2)]?l-2:l+2);p=r[q];k=a.u[p]&Oub;if((k==0?0:k==vtb?2:k==Vtb?3:4)>=3&&Jrb.go(a,n[1],p,2,null)==2)return true;break}}}}i=a.o[h]==1||h<a.f&&Jrb.Fr(a.p,h)||Jrb.Fo(a,h,false);j=!i&&a.C[h]==7&&a.s[h]!=1;if(f==1)return !i&&!j&&s<=4&&g<=3;switch(s){case 4:if(!i&&!j&&g<=4)return true;break;case 5:if(j){if(g<=3)return true}else if(!i){if(g<=4)return true}break;case 6:if(f==2){if(i){if(g<=4)return true}else if(!j){if(g<=3)return true}}else if(f==3){if(i){if(g<=6)return true}else{if(g<=4)return true}}break;case 7:if(f==3){if(g<=3)return true}}return false};Jrb.Ko=function Ko(a,b){var c,d,e,f,g;if(b<a.f&&Jrb.Fr(a.p,b)||a.o[b]!=0||E3(j3(a.B[b],Ttb),0)||(d=a.u[b]&Oub,(d==0?0:d==vtb?2:d==Vtb?3:4)<3))return false;g=!!a.p&&b<a.f?Jrb.ur(a.p,b):0;if(g>7)return false;f=0;while(f<a.p.i.a.length){if(Jrb.Br(a.p,f)==g&&Jrb.Hr(a.p,f,b))break;++f}if(f>=vtb&&f==a.p.i.a.length)return false;for(e=0;e<a.j[b];e++){c=a.k[b][e];if(!Jrb.Ir(a.p,f,c)&&Jrb.Jo(a,b,f,a.i[b][e],c))return true}return false};Jrb.Lo=function Lo(a,b){return (a.u[b]&Oub)!=0};Jrb.Mo=function Mo(a,b){return (a.F[b]&64)!=0};Jrb.No=function No(a,b){return a.C[b]==1&&a.A[b]==0&&a.s[b]==0&&(a.u[b]&Bub)==0&&(a.t==null||a.t[b]==null)};Jrb.Oo=function Oo(a,b){return (a.u[b]&8)!=0};Jrb.Po=function Po(a,b){return (a.F[b]&128)!=0};Jrb.Qo=function Qo(a,b){return (a.u[b]&Utb)!=0};Jrb.Ro=function Ro(a){var b,c,d,e,f,g,h,i,j,k,l;Jrb.ou(a,1);Jrb.So(a);j=false;for(c=0;c<a.f;c++){if(a.C[c]==7&&a.s[c]==0){l=Jrb.ao(a,c);if(l==4){for(k=0;k<a.j[c];k++){h=a.i[c][k];if(a.n[c][k]==1&&a.C[h]==8&&a.j[h]==1&&a.s[h]==0){j=true;++a.s[c];--a.s[h];break}}}else if(l==5){for(k=0;k<a.j[c];k++){h=a.i[c][k];i=a.k[c][k];if(a.n[c][k]==2&&a.C[h]==8){j=true;++a.s[c];--a.s[h];a.H[i]=1;break}if(a.n[c][k]==3&&a.C[h]==7){j=true;++a.s[c];--a.s[h];a.H[i]=2;break}}}}}g=false;for(f=0;f<a.g;f++){for(k=0;k<2;k++){if(Jrb.ql(a,a.D[k][f])){b=a.D[1-k][f];e=a.C[b];if(e==3||e==11||e==19||e==37||e==55||e==87||(d=a.C[b],d==4||d==12||d==20||d==38||d==56||d==88)){if(Jrb.Qk(a,f)==1){++a.s[b];--a.s[a.D[k][f]];a.H[f]=512;g=true}else if(a.H[f]==16){a.H[f]=512;g=true}}break}}}if(g){Jrb.Xj(a);j=true}j&&(a.T=0);return j};Jrb.So=function So(a){var b;for(b=0;b<a.g;b++)if(a.H[b]==8)return Jrb.de(new Jrb.qe(a),null,false);return false};Jrb.To=function To(a,b,c){var d,e,f,g,h,i,j,k;j=-1;e=0;for(h=0;h<2;h++){d=a.i[b][h];for(i=0;i<a.e[d];i++){f=a.i[d][i];if(f!=b){g=a.k[d][i];k=Jrb.oo(a,g,f);if(e<k&&(!c||!(a.H[g]==257||a.H[g]==129))){e=k;j=g}}}}return j};Jrb.Uo=function Uo(a,b){var c,d,e,f,g,h,i,j;i=-1;d=0;for(g=0;g<2;g++){c=a.D[g][b];for(h=0;h<a.e[c];h++){e=a.i[c][h];if(e!=a.D[1-g][b]){f=a.k[c][h];j=Jrb.oo(a,f,e);if(d<j){d=j;i=f}}}}return i};Jrb.Vo=function Vo(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;d=a.e[b];e=tX(Drb.LY,Osb,6,d,15,1);for(n=0;n<d;n++)e[n]=Jrb.Hk(a,b,a.i[b][n]);for(o=1;o<d;o++){for(p=0;p<o;p++){f=$wnd.Math.abs(Jrb.Wm(e[o],e[p]));if(f<0.08||f>Rub){g=0;h=0;for(q=0;q<d;q++){if(q!=o&&q!=p){g+=$wnd.Math.abs(Zrb.VU(e[o],e[q]));h+=$wnd.Math.abs(Zrb.VU(e[p],e[q]))}}j=g<h?a.k[b][o]:a.k[b][p];if(Jrb.Qk(a,j)==1&&(!c||!(a.H[j]==257||a.H[j]==129)))return j}}}r=-1;i=0;for(m=0;m<d;m++){k=a.i[b][m];l=a.k[b][m];s=Jrb.oo(a,l,k);if(i<s&&(!c||!(a.H[l]==257||a.H[l]==129))){i=s;r=l}}return r};Jrb.Wo=function Wo(a,b){var c,d,e,f;Jrb.ou(a,b?15:1);a.q=a.f;a.r=a.g;for(d=0;d<a.f;d++){if(a.e[d]!=a.j[d]){c=Jrb.Un(a,d,false);a.e[d]=a.j[d];if(c!=-1){f=Jrb.Un(a,d,true);if(c!=f){e=((a.u[d]&Bub)>>>27)-1;(e==-1||e<c)&&Jrb.Ql(a,d,c)}}}}b&&Jrb.cp(a);a.T=0};Jrb.Xo=function Xo(a,b,c,d){var e,f,g,h;Jrb.ou(b,1);for(f=0;f<c;f++){if(d[f]!=-1&&a.C[f]!=1&&a.e[f]!=Jrb.rn(b,d[f])){e=Jrb.Un(a,f,false);if(e!=-1){h=Jrb.Un(b,d[f],false);if(e!=h){g=Jrb.kk(b,d[f]);(g==-1||g<e)&&Jrb.Ql(b,d[f],e)}}}}};Jrb.Yo=function Yo(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p;for(h=0;h<c;h++){if(d[h]!=-1&&a.e[h]>3&&(a.u[h]&Hub)!=0){p=0;m=-1;l=-1;for(k=0;k<a.e[h];k++){if(e[a.k[h][k]]!=-1)++p;else if(a.n[h][k]==1&&Jrb.zl(a,a.k[h][k])&&a.D[0][a.k[h][k]]==h){m=a.k[h][k];l=a.i[h][k]}}if(m!=-1&&p>=3){f=Jrb.Vm(a.J[h].a,a.J[h].b,a.J[l].a,a.J[l].b);n=10;o=-1;for(j=0;j<a.e[h];j++){if(a.n[h][j]==1&&(!Jrb.zl(a,a.k[h][j])||a.D[0][a.k[h][j]]==h)&&e[a.k[h][j]]!=-1){g=$wnd.Math.abs(Jrb.Wm(f,Jrb.Hk(a,h,a.i[h][j])));if(n>g){n=g;o=a.k[h][j]}}}if(o!=-1){i=e[o];Jrb.tm(b,i,a.H[o]==257?129:257);if(a.D[0][o]!=h){Jrb.km(b,1,i,d[a.D[0][o]]);Jrb.km(b,0,i,d[h])}}}}}};Jrb.Zo=function Zo(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;if(a.j[b]!=2||a.n[b][0]!=2||a.n[b][1]!=2||a.j[a.i[b][0]]<2||a.j[a.i[b][1]]<2||a.o[a.i[b][0]]!=1||a.o[a.i[b][1]]!=1){Jrb.bm(a,b,0,false);return}v=-1;u=-1;t=-1;q=-1;f=0;for(l=0;l<2;l++){d=a.i[b][l];for(o=0;o<a.e[d];o++){g=a.i[d][o];if(g!=b){h=a.k[d][o];w=Jrb.oo(a,h,g);if(f<w){f=w;u=g;v=h;t=d;q=a.i[b][1-l]}}}}if(u==-1)return;for(m=0;m<2;m++){d=a.i[b][m];for(o=0;o<a.e[d];o++){g=a.i[d][o];h=a.k[d][o];g!=b&&a.D[0][h]==d&&(a.H[h]=1)}}if(a.D[1][v]!=u){a.D[0][v]=a.D[1][v];a.D[1][v]=u}i=xsb;for(n=0;n<a.j[t];n++){g=a.i[t][n];g!=b&&i>g&&(i=g)}r=tX(Drb.NY,Qsb,6,2,15,1);s=0;for(k=0;k<a.j[q];k++){g=a.i[q][k];g!=b&&(r[s++]=g)}c=Jrb.Vm(a.J[b].a,a.J[b].b,a.J[q].a,a.J[q].b);e=0;if(s==2){if(r[0]>r[1]){A=r[0];r[0]=r[1];r[1]=A}j=Jrb.Wm(c,Jrb.Hk(a,q,r[0]));p=Jrb.Wm(c,Jrb.Hk(a,q,r[1]));e=j-p}else{e=Jrb.Wm(c,Jrb.Hk(a,q,r[0]))}e<0^(a.u[b]&3)==1^i==u?(a.H[v]=257):(a.H[v]=129)};Jrb.$o=function $o(a,b,c,d){var e,f,g,h,i,j;e=a.e[b];h=tX(Drb.NY,Qsb,6,e,15,1);j=Jrb.Mn(a,b,c,d,h);if(j==3)return false;g=(a.u[b]&3)==j?257:129;for(i=0;i<e;i++){if((h[i]&1)==1){f=a.k[b][c[i]];a.H[f]=g;if(a.D[0][f]!=b){a.D[1][f]=a.D[0][f];a.D[0][f]=b}}}return true};Jrb._o=function _o(a,b){a.T|=248&(8|b)};Jrb.ap=function ap(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;Jrb.gn(a,b);if((a.u[b]&3)==0||(a.u[b]&3)==3)return;if(a.o[b]==2&&a.j[b]==2){Jrb.Zo(a,b);return}if(a.j[b]<3||a.j[b]>4){Jrb.bm(a,b,0,false);return}c=a.e[b];o=false;for(g=0;g<c;g++){if(Jrb.Qk(a,a.k[b][g])==1){o=true;break}}if(!o)return;p=Jrb.mo(a,b);d=tX(Drb.LY,Osb,6,c,15,1);for(h=0;h<c;h++)d[h]=Jrb.Hk(a,a.i[b][p[h]],b);for(i=0;i<c;i++)a.D[0][a.k[b][i]]==b&&Jrb.Qk(a,a.k[b][i])==1&&(a.H[a.k[b][i]]=1);if((!!a.p&&b<a.f?Jrb.ur(a.p,b):0)<=24&&Jrb.$o(a,b,p,d))return;m=Jrb.Vo(a,b,true);if(m==-1)return;if(a.D[0][m]!=b){a.D[1][m]=a.D[0][m];a.D[0][m]=b}n=-1;for(j=0;j<c;j++){if(m==a.k[b][p[j]]){n=j;break}}q=BX(nX(Drb.NY,2),lub,7,0,[BX(nX(Drb.NY,1),Qsb,6,15,[2,1,2,1]),BX(nX(Drb.NY,1),Qsb,6,15,[1,2,2,1]),BX(nX(Drb.NY,1),Qsb,6,15,[1,1,2,2]),BX(nX(Drb.NY,1),Qsb,6,15,[2,1,1,2]),BX(nX(Drb.NY,1),Qsb,6,15,[2,2,1,1]),BX(nX(Drb.NY,1),Qsb,6,15,[1,2,1,2])]);for(f=1;f<c;f++)d[f]<d[0]&&(d[f]+=mtb);if(c==3){k=false;switch(n){case 0:k=d[1]<d[2]&&d[2]-d[1]<ntb||d[1]>d[2]&&d[1]-d[2]>ntb;break;case 1:k=d[2]-d[0]>ntb;break;case 2:k=d[1]-d[0]<ntb;}e=(a.u[b]&3)==1^k?257:129}else{l=0;d[1]<=d[2]&&d[2]<=d[3]?(l=0):d[1]<=d[3]&&d[3]<=d[2]?(l=1):d[2]<=d[1]&&d[1]<=d[3]?(l=2):d[2]<=d[3]&&d[3]<=d[1]?(l=3):d[3]<=d[1]&&d[1]<=d[2]?(l=4):d[3]<=d[2]&&d[2]<=d[1]&&(l=5);e=(a.u[b]&3)==1^q[l][n]==1?129:257}a.H[m]=e};Jrb.bp=function bp(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;if((a.F[b]&3)==0||(a.F[b]&3)==3||!Jrb.Ao(a,b))return;v=-1;t=-1;u=-1;s=-1;e=0;for(l=0;l<2;l++){d=a.D[l][b];for(o=0;o<a.e[d];o++){h=a.k[d][o];if(h!=b&&Jrb.Qk(a,h)==1){g=a.i[d][o];w=Jrb.oo(a,h,g);if(e<w){e=w;t=g;v=h;u=d;s=a.D[1-l][b]}}}}if(t==-1)return;for(m=0;m<2;m++){for(o=0;o<a.e[a.D[m][b]];o++){h=a.k[a.D[m][b]][o];h!=b&&Jrb.Qk(a,h)==1&&(a.H[h]=1)}}if(a.D[1][v]!=t){a.D[0][v]=a.D[1][v];a.D[1][v]=t}i=xsb;for(n=0;n<a.j[u];n++){g=a.i[u][n];a.k[u][n]!=b&&i>g&&(i=g)}q=tX(Drb.NY,Qsb,6,2,15,1);r=0;for(k=0;k<a.j[s];k++)a.k[s][k]!=b&&(q[r++]=a.i[s][k]);f=Jrb.Vm(a.J[u].a,a.J[u].b,a.J[s].a,a.J[s].b);c=0;if(r==2){if(q[0]>q[1]){A=q[0];q[0]=q[1];q[1]=A}j=Jrb.Wm(f,Jrb.Hk(a,s,q[0]));p=Jrb.Wm(f,Jrb.Hk(a,s,q[1]));c=j-p}else{c=Jrb.Wm(f,Jrb.Hk(a,s,q[0]))}c<0^(a.F[b]&3)==2^i==t?(a.H[v]=257):(a.H[v]=129)};Jrb.cp=function cp(a){var b,c,d,e;Jrb.ou(a,7);for(d=0;d<a.g;d++)(a.H[d]==257||a.H[d]==129)&&(a.H[d]=1);for(b=0;b<a.f;b++)Jrb.ap(a,b);for(e=0;e<a.g;e++)Jrb.bp(a,e);for(c=0;c<a.g;c++)a.H[c]==2&&(a.F[c]&3)==3&&(a.H[c]=386)};Jrb.dp=function dp(b,c){var d,e,f,g,h,i,j,k,l,m;i=tX(Drb.NY,Qsb,6,b.q,15,1);h=Jrb.Pn(b,i,false,c);if(h<=1)return null;j=tX(Drb.NY,Qsb,6,h,15,1);for(e=0;e<b.f;e++)++j[i[e]];l=0;m=j[0];for(k=1;k<h;k++){if(m<j[k]){m=j[k];l=k}}for(d=0;d<b.q;d++)i[d]!=l&&(b.C[d]=-1);for(g=0;g<b.r;g++)(!c&&b.H[g]==16||i[b.D[0][g]]!=l)&&(b.H[g]=512);f=Jrb.Xj(b);b.T=0;try{Jrb.en(b,true,true)}catch(a){a=g3(a);if(!zY(a,15))throw h3(a)}return f};Jrb.ep=function ep(a,b){if((a.u[b]&Bub)!=0)return true;if(a.C[b]<=1)return false;return Jrb.vl(a,b)||a.C[b]==13||a.C[b]>=171};Jrb.fp=function fp(a){var b,c,d,e,f,g,h,i,j,k;f=Jrb.Fk(a,a.q,a.r,Jrb.Dj);g=f*f/16;for(d=1;d<a.q;d++){for(e=0;e<d;e++){i=a.J[e].a-a.J[d].a;j=a.J[e].b-a.J[d].b;k=a.J[e].c-a.J[d].c;if(i*i+j*j+k*k<g)throw h3(new Erb._z('The distance between two atoms is too close.'))}}Jrb.ou(a,1);b=0;for(c=0;c<a.f;c++){if(Jrb.ao(a,c)>(h=Jrb.$k(a,c),h+Jrb.Yk(a,c,h,a.C[c])))throw h3(new Erb._z('atom valence exceeded'));b+=a.s[c]}if(b!=0)throw h3(new Erb._z('unbalanced atom charge'))};Jrb.gp=function gp(a){var b,c;if(!a.K)return;Jrb.ou(a,7);for(b=0;b<a.f;b++){if((a.u[b]&Oub)!=0){t3(j3(a.B[b],120),8)&&(a.B[b]=j3(a.B[b],-9));a.B[b]=j3(a.B[b],-4294967297)}b<a.f&&Jrb.Fr(a.p,b)?(a.B[b]=j3(a.B[b],{l:4194297,m:Nub,h:1048571})):E3(j3(a.B[b],2),0)&&(a.B[b]=j3(a.B[b],-5));(E3(j3(a.B[b],Stb),0)||E3(j3(a.B[b],Usb),0)&&t3(j3(a.B[b],Vsb),0))&&t3(j3(a.B[b],120),8)&&(a.B[b]=j3(a.B[b],-9));a.s[b]!=0&&(a.B[b]=j3(a.B[b],-234881025));if(Jrb.ao(a,b)==(c=Jrb.$k(a,b),c+Jrb.Yk(a,b,c,a.C[b]))){a.B[b]=j3(a.B[b],-4063233);a.B[b]=j3(a.B[b],-17042430230529);a.B[b]=j3(a.B[b],-1921);a.B[b]=j3(a.B[b],-114689)}E3(j3(a.B[b],jtb),0)&&a.w[b]!=0&&Jrb.Kl(a,a.w[b])}};Jrb.hp=function hp(a){var b,c,d;if(!a.K)return;Jrb.ou(a,7);for(b=0;b<a.g;b++){d=p6(a.G[b]&127);if((b<a.g&&(Jrb.Kr(a.p,b)||a.H[b]==8))&(a.G[b]&8)!=0){a.G[b]&=-9;--d}if(d!=0){c=a.H[b]&127;c==1?(a.G[b]|=1):c==2?(a.G[b]|=2):c==4?(a.G[b]|=4):c==32?(a.G[b]|=32):c==64?(a.G[b]|=64):c==16?(a.G[b]|=16):c==8&&(a.G[b]|=8)}}};Jrb.ip=function ip(a,b,c){var d;d=Jrb.Jm(a,b,c);if(d&&c==386){Jrb.ou(a,7);d=d&(a.F[b]&128)==0}return d};Jrb.jp=function jp(){Jrb.Mm.call(this)};Jrb.kp=function kp(a,b){Jrb.Nm.call(this,a,b)};Jrb.lp=function lp(a){Jrb.Nm.call(this,!a?256:a.M,!a?256:a.N);!!a&&Jrb._j(a,this)};Z3(101,85,{101:1,85:1,4:1});_.zb=function mp(a){Jrb.kn(this,a)};_.yb=function np(a){return Jrb.Do(this,a)};_.f=0;_.g=0;Drb.jZ=B5(101);Jrb.op=function op(a,b){return $wnd.Math.pow(10,$wnd.Math.log(2000)*$wnd.Math.LOG10E*a/(b-1)-1)};Jrb.pp=function pp(a,b){var c,d;c=b;d=0;while(b!=0){if(a.d==0){a.f=(a.c[++a.e]&63)<<11;a.d=6}d|=(Fsb&a.f)>>16-c+b;a.f<<=1;--b;--a.d}return d};Jrb.qp=function qp(a,b,c){a.d=6;a.e=c;a.c=b;a.f=(b[a.e]&63)<<11};Jrb.rp=function rp(a,b){var c,d,e,f;d=b/2|0;e=a>=d;e&&(a-=d);f=b/32;c=f*a/(d-a);return e?-c:c};Jrb.sp=function sp(a){var b,c,d,e;if(a.g.K){for(b=0;b<a.g.r;b++){d=Jrb.Sk(a.g,b);if((d&31)==0)continue;c=-1;e=0;if((d&16)!=0){c=16;++e}if((d&64)!=0){c=64;++e}if((d&32)!=0){c=32;++e}if((d&4)!=0){c=4;++e}if((d&2)!=0){c=2;++e}if((d&8)!=0){c=8;++e}if((d&1)!=0){c=1;++e}if(c!=-1){Jrb.tm(a.g,b,c);e==1&&Jrb.sm(a.g,b,31,false)}}}};Jrb.tp=function tp(a,b){var c;return b==null||Hrb.rnb(b).length==0?null:Jrb.vp(a,Hrb.Umb((c=b,hsb.Kab(),c)))};Jrb.up=function up(a,b,c){var d,e;return b==null?null:Jrb.wp(a,Hrb.Umb((e=b,hsb.Kab(),e)),c==null?null:Hrb.Umb((d=c,d)),0)};Jrb.vp=function vp(a,b){var c;if(b==null||b.length==0)return null;for(c=2;c<b.length-2;c++)if(b[c]==32)return Jrb.wp(a,b,b,c+1);return Jrb.wp(a,b,null,0)};Jrb.wp=function wp(a,b,c,d){var e,f,g,h,i;if(b==null)return null;Jrb.qp(a,b,0);e=Jrb.pp(a,4);h=Jrb.pp(a,4);e>8&&(e=h);f=Jrb.pp(a,e);g=Jrb.pp(a,h);i=new Jrb.Hu(f,g);Jrb.zp(a,i,b,c,d);return i};Jrb.xp=function xp(a,b,c){var d,e,f,g;if(c==null||Hrb.rnb(c).length==0){Jrb.yp(a,b,null,null);return}d=Erb.o7(c,A7(32));d>0&&d<Hrb.rnb(c).length-1?Jrb.yp(a,b,Hrb.Umb((f=(Hrb.lnb(0,d,Hrb.rnb(c).length),Hrb.rnb(c).substr(0,d)),hsb.Kab(),f)),Hrb.Umb((g=(Hrb.mnb(d+1,Hrb.rnb(c).length+1),Hrb.rnb(c).substr(d+1)),g))):Jrb.yp(a,b,Hrb.Umb((e=c,hsb.Kab(),e)),null)};Jrb.yp=function yp(a,b,c,d){if(c==null||c.length==0){Jrb.Wj(b);b.d=null;return}Jrb.zp(a,b,c,d,0)};Jrb.zp=function zp(b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb,fb,gb,hb,ib,jb,kb,lb,mb,nb,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab,Bb,Cb,Db,Eb,Fb,Gb,Hb,Ib,Jb,Kb,Lb,Mb,Nb,Ob,Pb,Qb,Rb,Sb,Tb,Ub,Vb,Wb,Xb,Yb,Zb,$b,_b,ac,bc,cc,dc,ec,fc,gc,hc,ic,jc,kc,lc,mc,nc,oc,pc,qc,rc,sc,tc,uc,vc,wc,xc,yc,zc,Ac,Bc,Cc,Dc,Ec,Fc;Jrb.Wj(c);c.d=null;if(d==null||0>=d.length)return;b.g=c;zc=8;e!=null&&(f<0||f>=e.length)&&(e=null);Jrb.qp(b,d,0);i=Jrb.pp(b,4);B=Jrb.pp(b,4);if(i>8){zc=i;i=B}if(i==0){Jrb.vm(b.g,Jrb.pp(b,1)==1);return}j=Jrb.pp(b,i);k=Jrb.pp(b,B);mc=Jrb.pp(b,i);qc=Jrb.pp(b,i);pc=Jrb.pp(b,i);O=Jrb.pp(b,i);for(o=0;o<j;o++)Jrb.Hj(b.g,6);for(nb=0;nb<mc;nb++)Jrb.jm(b.g,Jrb.pp(b,i),7);for(ob=0;ob<qc;ob++)Jrb.jm(b.g,Jrb.pp(b,i),8);for(zb=0;zb<pc;zb++)Jrb.jm(b.g,Jrb.pp(b,i),Jrb.pp(b,8));for(Kb=0;Kb<O;Kb++)Jrb.Sl(b.g,Jrb.pp(b,i),Jrb.pp(b,4)-8);P=1+k-j;W=Jrb.pp(b,4);A=0;Jrb.gm(b.g,0,0);Jrb.hm(b.g,0,0);Jrb.im(b.g,0,0);X=e!=null&&e[f]>=39;yc=0;Bc=0;Dc=0;Fc=0;S=false;T=false;if(X){if(e.length>2*j-2&&e[2*j-2]==39||e.length>3*j-3&&e[3*j-3]==39){T=true;S=e.length==3*j-3+9;dc=S?3*j-3:2*j-2;w=86*(e[dc+1]-40)+e[dc+2]-40;yc=$wnd.Math.pow(10,w/2000-1);dc+=2;Ac=86*(e[dc+1]-40)+e[dc+2]-40;Bc=$wnd.Math.pow(10,Ac/1500-1);dc+=2;Cc=86*(e[dc+1]-40)+e[dc+2]-40;Dc=$wnd.Math.pow(10,Cc/1500-1);if(S){dc+=2;Ec=86*(e[dc+1]-40)+e[dc+2]-40;Fc=$wnd.Math.pow(10,Ec/1500-1)}}else{S=e.length==3*j-3}}if(b.Ab()&&S){e=null;X=false}for(Vb=1;Vb<j;Vb++){$=Jrb.pp(b,W);if($==0){if(X){Jrb.gm(b.g,Vb,Jrb.Ak(b.g,0)+8*(e[Vb*2-2]-83));Jrb.hm(b.g,Vb,Jrb.Bk(b.g,0)+8*(e[Vb*2-1]-83));S&&Jrb.im(b.g,Vb,Jrb.Ck(b.g,0)+8*(e[2*j-3+Vb]-83))}++P;continue}A+=$-1;if(X){Jrb.gm(b.g,Vb,Jrb.Ak(b.g,A)+e[Vb*2-2]-83);Jrb.hm(b.g,Vb,Jrb.Bk(b.g,A)+e[Vb*2-1]-83);S&&Jrb.im(b.g,Vb,Jrb.Ck(b.g,A)+(e[2*j-3+Vb]-83))}Jrb.Jj(b.g,A,Vb,1)}for($b=0;$b<P;$b++)Jrb.Jj(b.g,Jrb.pp(b,i),Jrb.pp(b,i),1);ec=tX(Drb.c3,itb,6,k,16,1);for(I=0;I<k;I++){J=Jrb.pp(b,2);switch(J){case 0:ec[I]=true;break;case 2:Jrb.tm(b.g,I,2);break;case 3:Jrb.tm(b.g,I,4);}}h=Jrb.pp(b,i);for(_b=0;_b<h;_b++){n=Jrb.pp(b,i);if(zc==8){rc=Jrb.pp(b,2);if(rc==3){Jrb.Xl(b.g,n,1,0);Jrb.bm(b.g,n,1,false)}else{Jrb.bm(b.g,n,rc,false)}}else{rc=Jrb.pp(b,3);switch(rc){case 4:Jrb.bm(b.g,n,1,false);Jrb.Xl(b.g,n,1,Jrb.pp(b,3));break;case 5:Jrb.bm(b.g,n,2,false);Jrb.Xl(b.g,n,1,Jrb.pp(b,3));break;case 6:Jrb.bm(b.g,n,1,false);Jrb.Xl(b.g,n,2,Jrb.pp(b,3));break;case 7:Jrb.bm(b.g,n,2,false);Jrb.Xl(b.g,n,2,Jrb.pp(b,3));break;default:Jrb.bm(b.g,n,rc,false);}}}zc==8&&Jrb.pp(b,1)==0&&(b.g.L=true);g=Jrb.pp(b,B);for(ac=0;ac<g;ac++){D=Jrb.pp(b,B);if(Jrb.Tk(b.g,D)==1){rc=Jrb.pp(b,3);switch(rc){case 4:Jrb.qm(b.g,D,1,false);Jrb.nm(b.g,D,1,Jrb.pp(b,3));break;case 5:Jrb.qm(b.g,D,2,false);Jrb.nm(b.g,D,1,Jrb.pp(b,3));break;case 6:Jrb.qm(b.g,D,1,false);Jrb.nm(b.g,D,2,Jrb.pp(b,3));break;case 7:Jrb.qm(b.g,D,2,false);Jrb.nm(b.g,D,2,Jrb.pp(b,3));break;default:Jrb.qm(b.g,D,rc,false);}}else{Jrb.qm(b.g,D,Jrb.pp(b,2),false)}}Jrb.vm(b.g,Jrb.pp(b,1)==1);m=null;wc=null;oc=0;while(Jrb.pp(b,1)==1){V=oc+Jrb.pp(b,4);switch(V){case 0:nc=Jrb.pp(b,i);for(bc=0;bc<nc;bc++){n=Jrb.pp(b,i);Jrb.cm(b.g,n,Vtb,true)}break;case 1:nc=Jrb.pp(b,i);for(cc=0;cc<nc;cc++){n=Jrb.pp(b,i);kc=Jrb.pp(b,8);Jrb.am(b.g,n,kc)}break;case 2:nc=Jrb.pp(b,B);for(pb=0;pb<nc;pb++){Jrb.pp(b,B)}break;case 3:nc=Jrb.pp(b,i);for(qb=0;qb<nc;qb++){n=Jrb.pp(b,i);Jrb.cm(b.g,n,qtb,true)}break;case 4:nc=Jrb.pp(b,i);for(rb=0;rb<nc;rb++){n=Jrb.pp(b,i);vc=H3(v3(Jrb.pp(b,4)),3);Jrb.cm(b.g,n,vc,true)}break;case 5:nc=Jrb.pp(b,i);for(sb=0;sb<nc;sb++){n=Jrb.pp(b,i);l=H3(v3(Jrb.pp(b,2)),1);Jrb.cm(b.g,n,l,true)}break;case 6:nc=Jrb.pp(b,i);for(tb=0;tb<nc;tb++){n=Jrb.pp(b,i);Jrb.cm(b.g,n,1,true)}break;case 7:nc=Jrb.pp(b,i);for(ub=0;ub<nc;ub++){n=Jrb.pp(b,i);kb=H3(v3(Jrb.pp(b,4)),7);Jrb.cm(b.g,n,kb,true)}break;case 8:nc=Jrb.pp(b,i);for(vb=0;vb<nc;vb++){n=Jrb.pp(b,i);t=Jrb.pp(b,4);r=tX(Drb.NY,Qsb,6,t,15,1);for(fc=0;fc<t;fc++){s=Jrb.pp(b,8);r[fc]=s}Jrb.Yl(b.g,n,r)}break;case 9:nc=Jrb.pp(b,B);for(wb=0;wb<nc;wb++){D=Jrb.pp(b,B);vc=Jrb.pp(b,2)<<7;Jrb.sm(b.g,D,vc,true)}break;case 10:nc=Jrb.pp(b,B);for(xb=0;xb<nc;xb++){D=Jrb.pp(b,B);L=Jrb.pp(b,5);Jrb.sm(b.g,D,L,true)}break;case 11:nc=Jrb.pp(b,i);for(yb=0;yb<nc;yb++){n=Jrb.pp(b,i);Jrb.cm(b.g,n,Utb,true)}break;case 12:nc=Jrb.pp(b,B);for(Ab=0;Ab<nc;Ab++){D=Jrb.pp(b,B);M=Jrb.pp(b,8)<<9;Jrb.sm(b.g,D,M,true)}break;case 13:nc=Jrb.pp(b,i);for(Bb=0;Bb<nc;Bb++){n=Jrb.pp(b,i);sc=H3(v3(Jrb.pp(b,3)),14);Jrb.cm(b.g,n,sc,true)}break;case 14:nc=Jrb.pp(b,i);for(Cb=0;Cb<nc;Cb++){n=Jrb.pp(b,i);lc=H3(v3(Jrb.pp(b,5)),17);Jrb.cm(b.g,n,lc,true)}break;case 15:case 31:oc+=16;break;case 16:nc=Jrb.pp(b,i);for(Db=0;Db<nc;Db++){n=Jrb.pp(b,i);uc=H3(v3(Jrb.pp(b,3)),22);Jrb.cm(b.g,n,uc,true)}break;case 17:nc=Jrb.pp(b,i);for(Eb=0;Eb<nc;Eb++){n=Jrb.pp(b,i);Jrb.Ql(b.g,n,Jrb.pp(b,4))}break;case 18:nc=Jrb.pp(b,i);jc=Jrb.pp(b,4);for(Fb=0;Fb<nc;Fb++){n=Jrb.pp(b,i);U=Jrb.pp(b,jc);gc=tX(Drb.JY,nub,6,U,15,1);for(fc=0;fc<U;fc++)gc[fc]=Jrb.pp(b,7)<<24>>24;Jrb.Vl(b.g,n,Erb.i7((hc=gc,hsb.Kab(),hc)))}break;case 19:nc=Jrb.pp(b,i);for(Gb=0;Gb<nc;Gb++){n=Jrb.pp(b,i);N=H3(v3(Jrb.pp(b,3)),25);Jrb.cm(b.g,n,N,true)}break;case 20:nc=Jrb.pp(b,B);for(Hb=0;Hb<nc;Hb++){D=Jrb.pp(b,B);uc=Jrb.pp(b,3)<<17;Jrb.sm(b.g,D,uc,true)}break;case 21:nc=Jrb.pp(b,i);for(Ib=0;Ib<nc;Ib++){n=Jrb.pp(b,i);Jrb.dm(b.g,n,Jrb.pp(b,2)<<4)}break;case 22:nc=Jrb.pp(b,i);for(Jb=0;Jb<nc;Jb++){n=Jrb.pp(b,i);Jrb.cm(b.g,n,Ttb,true)}break;case 23:nc=Jrb.pp(b,B);for(Lb=0;Lb<nc;Lb++){D=Jrb.pp(b,B);Jrb.sm(b.g,D,qub,true)}break;case 24:nc=Jrb.pp(b,B);for(Mb=0;Mb<nc;Mb++){D=Jrb.pp(b,B);l=Jrb.pp(b,2)<<21;Jrb.sm(b.g,D,l,true)}break;case 25:for(Nb=0;Nb<j;Nb++)Jrb.pp(b,1)==1&&Jrb.em(b.g,Nb,true);break;case 26:nc=Jrb.pp(b,B);m=tX(Drb.NY,Qsb,6,nc,15,1);for(Ob=0;Ob<nc;Ob++)m[Ob]=Jrb.pp(b,B);break;case 27:nc=Jrb.pp(b,i);for(Pb=0;Pb<nc;Pb++){n=Jrb.pp(b,i);Jrb.cm(b.g,n,jtb,true)}break;case 28:nc=Jrb.pp(b,B);for(Qb=0;Qb<nc;Qb++)Jrb.tm(b.g,Jrb.pp(b,B),16);break;case 29:nc=Jrb.pp(b,i);for(Rb=0;Rb<nc;Rb++){n=Jrb.pp(b,i);jb=H3(v3(Jrb.pp(b,2)),30);Jrb.cm(b.g,n,jb,true)}break;case 30:nc=Jrb.pp(b,i);for(Sb=0;Sb<nc;Sb++){n=Jrb.pp(b,i);uc=H3(v3(Jrb.pp(b,7)),32);Jrb.cm(b.g,n,uc,true)}break;case 32:nc=Jrb.pp(b,i);for(Tb=0;Tb<nc;Tb++){n=Jrb.pp(b,i);xc=H3(v3(Jrb.pp(b,2)),44);Jrb.cm(b.g,n,xc,true)}break;case 33:nc=Jrb.pp(b,i);for(Ub=0;Ub<nc;Ub++){n=Jrb.pp(b,i);eb=H3(v3(Jrb.pp(b,5)),39);Jrb.cm(b.g,n,eb,true)}break;case 34:nc=Jrb.pp(b,i);for(Wb=0;Wb<nc;Wb++){n=Jrb.pp(b,i);Jrb.cm(b.g,n,ttb,true)}break;case 35:nc=Jrb.pp(b,B);for(Xb=0;Xb<nc;Xb++){D=Jrb.pp(b,B);Jrb.sm(b.g,D,uub,true)}break;case 36:nc=Jrb.pp(b,B);for(Yb=0;Yb<nc;Yb++){D=Jrb.pp(b,B);K=Jrb.pp(b,2)<<5;Jrb.sm(b.g,D,K,true)}break;case 37:nc=Jrb.pp(b,B);for(Zb=0;Zb<nc;Zb++){D=Jrb.pp(b,B);K=Jrb.pp(b,1)==0?32:64;Jrb.tm(b.g,D,K)}break;case 38:nc=Jrb.pp(b,i);Q=Jrb.pp(b,3);wc=tX(Drb.NY,Qsb,6,j,15,1);for(mb=0;mb<nc;mb++)wc[Jrb.pp(b,i)]=Jrb.pp(b,Q);}}Jrb.de(new Jrb.qe(b.g),ec,false);if(m!=null)for(F=m,G=0,H=F.length;G<H;++G){D=F[G];Jrb.tm(b.g,D,Jrb.Tk(b.g,D)==2?4:2)}if(e==null&&!b.i&&d.length>b.e+1&&(d[b.e+1]==32||d[b.e+1]==9)){e=d;f=b.e+2}if(e!=null){try{if(e[f]==33||e[f]==35){Jrb.qp(b,e,f+1);S=Jrb.pp(b,1)==1;T=Jrb.pp(b,1)==1;tc=2*Jrb.pp(b,4);C=1<<tc;hb=0;D=0;for(p=1;p<j;p++){if(D<k&&Jrb.Ik(b.g,1,D)==p){hb=Jrb.Ik(b.g,0,D++);gb=1}else{hb=0;gb=8}Y=gb*(Jrb.pp(b,tc)+1-(C>>1));Z=gb*(Jrb.pp(b,tc)+1-(C>>1));Jrb.gm(b.g,p,Jrb.Ak(b.g,hb)+Y);Jrb.hm(b.g,p,Jrb.Bk(b.g,hb)+Z);S&&Jrb.im(b.g,p,Jrb.Ck(b.g,hb)+gb*(Jrb.pp(b,tc)+1-(C>>1)))}if(e[f]==35){lb=0;ib=tX(Drb.NY,Qsb,6,j,15,1);for(q=0;q<j;q++)lb+=ib[q]=Jrb.Wn(b.g,q);for(n=0;n<j;n++){for(mb=0;mb<ib[n];mb++){kb=Jrb.Hj(b.g,1);Jrb.Jj(b.g,n,kb,1);Jrb.gm(b.g,kb,Jrb.Ak(b.g,n)+(Jrb.pp(b,tc)+1-(C>>1)));Jrb.hm(b.g,kb,Jrb.Bk(b.g,n)+(Jrb.pp(b,tc)+1-(C>>1)));S&&Jrb.im(b.g,kb,Jrb.Ck(b.g,n)+(Jrb.pp(b,tc)+1-(C>>1)));wc!=null&&(wc[n]&1<<mb)!=0&&Jrb.em(b.g,kb,true)}}j+=lb;k+=lb}v=S?1.5:(Jrb.Ej(),Jrb.Ej(),Jrb.Dj);u=Jrb.Fk(b.g,j,k,v);if(T){yc=Jrb.op(Jrb.pp(b,tc),C);Bc=yc*Jrb.rp(Jrb.pp(b,tc),C);Dc=yc*Jrb.rp(Jrb.pp(b,tc),C);S&&(Fc=yc*Jrb.rp(Jrb.pp(b,tc),C));gb=yc/u;for(n=0;n<j;n++){Jrb.gm(b.g,n,Bc+gb*Jrb.Ak(b.g,n));Jrb.hm(b.g,n,Dc+gb*Jrb.Bk(b.g,n));S&&Jrb.im(b.g,n,Fc+gb*Jrb.Ck(b.g,n))}}else{yc=1.5;gb=yc/u;for(n=0;n<j;n++){Jrb.gm(b.g,n,gb*Jrb.Ak(b.g,n));Jrb.hm(b.g,n,gb*Jrb.Bk(b.g,n));S&&Jrb.im(b.g,n,gb*Jrb.Ck(b.g,n))}}}else{S&&!T&&yc==0&&(yc=1.5);if(yc!=0&&b.g.r!=0){u=0;for(D=0;D<b.g.r;D++){ab=Jrb.Ak(b.g,Jrb.Ik(b.g,0,D))-Jrb.Ak(b.g,Jrb.Ik(b.g,1,D));bb=Jrb.Bk(b.g,Jrb.Ik(b.g,0,D))-Jrb.Bk(b.g,Jrb.Ik(b.g,1,D));cb=S?Jrb.Ck(b.g,Jrb.Ik(b.g,0,D))-Jrb.Ck(b.g,Jrb.Ik(b.g,1,D)):0;u+=$wnd.Math.sqrt(ab*ab+bb*bb+cb*cb)}u/=b.g.r;fb=yc/u;for(n=0;n<b.g.q;n++){Jrb.gm(b.g,n,Jrb.Ak(b.g,n)*fb+Bc);Jrb.hm(b.g,n,Jrb.Bk(b.g,n)*fb+Dc);S&&Jrb.im(b.g,n,Jrb.Ck(b.g,n)*fb+Fc)}}}}catch(a){a=g3(a);if(zY(a,15)){db=a;Erb.Jz(db,(Erb.X7(),Erb.W7),'');'Faulty id-coordinates:'+db+' '+Erb.i7((ic=d,hsb.Kab(),ic))+' '+Erb.i7((hc=e,hc));String.fromCharCode(10);e=null;S=false}else throw h3(a)}}R=e!=null&&!S;Jrb.sp(b);if(R||b.Ab()){Jrb.ou(b.g,7);for(D=0;D<b.g.g;D++)Jrb.Qk(b.g,D)==2&&!Jrb.Po(b.g,D)&&Jrb.Rk(b.g,D)==0&&Jrb.rm(b.g,D)}Jrb._o(b.g,0);if(!R&&b.Ab()){try{b.Bb(b.g);R=true}catch(a){a=g3(a);if(zY(a,15)){db=a;Erb.Jz(db,(Erb.X7(),Erb.W7),'');'2D-coordinate creation failed:'+db+' '+Erb.i7((hc=d,hsb.Kab(),hc));String.fromCharCode(10)}else throw h3(a)}}if(R){Jrb.cp(b.g);Jrb.Bu(b.g)}else S||Jrb._o(b.g,0)};Jrb.Ap=function Ap(a,b){var c,d,e,f,g,h;if(b.length<=0||b[0]<64)return;Jrb.qp(a,b,0);h=Jrb.pp(a,4);e=Jrb.pp(a,1)==1;f=Jrb.pp(a,1)==1;for(c=0;c<a.g.f;c++){g=Jrb.pp(a,h);d=e;e&&f&&(d=Jrb.pp(a,1)==1);Jrb.$l(a.g,c,g,d)}};Jrb.Bp=function Bp(){};Z3(264,1,{},Jrb.Bp);_.Ab=function Cp(){return false};_.Bb=function Dp(a){throw h3(new Erb._z('Unexpected request to invent coordinates. Check source code logic!'))};_.d=0;_.e=0;_.f=0;_.i=false;Drb.kZ=B5(264);Jrb.Ep=function Ep(a){};Jrb.Fp=function Fp(a){Jrb.Ep(this);this.b=a};Z3(50,264,{},Jrb.Fp);_.Ab=function Gp(){return this.b};_.Bb=function Hp(a){var b;b=new Nrb.zy(this.a);b.g=new Krb.Wib(78187493520);Nrb.gy(b,a)};_.a=2;_.b=false;Drb.lZ=B5(50);Jrb.Ip=function Ip(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r;e=b.a;n=b.g;j=E3(j3(Jrb.yk(a.k,e),1),0);f=Jrb.tk(a.k,e);l=f!=null?Jrb.Pp(a,e,f,d):j?'*':Jrb.sk(a.k,e);!j&&f==null&&Jrb.yo(a.k,e)&&(a.j&4)==0&&(Jrb.wn(a.k,e)!=0||Jrb.kk(a.k,e)==-1&&Jrb.zk(a.k,e)==0)&&(l=Hrb.rnb(l).toLowerCase());b.f&&(c.a+='(',c);n!=-1&&Jrb.Mp(a,Jrb.Dn(a.k,b.a,b.g),b.g,c);g=Jrb.mk(a.k,e);if(g==0&&(a.j&1)!=0){h=j3(Jrb.yk(a.k,e),wtb);o3(h,ztb)==0?(g=-1):o3(h,ytb)==0&&(g=1)}k=Jrb.wk(a.k,e);m=(a.j&2)!=0?Jrb.vk(a.k,e):0;o=(a.j&1)!=0?Jrb.Vp(a,e,d):null;r=!j&&!Jrb.aq(Jrb.Dk(a.k,e))||f!=null||(Jrb.xk(a.k,e)==1||Jrb.xk(a.k,e)==2)&&(q=Jrb.rk(a.k,e)-1,!(q!=-1&&a.i[q][Jrb.qk(a.k,e)]<=1))&&(Jrb.Dk(a.k,e)!=7||Jrb.mk(a.k,e)>0)||Jrb.yo(a.k,e)&&Jrb.wn(a.k,e)==0&&(a.j&4)==0||g!=0||k!=0||m!=0||Jrb.kk(a.k,e)!=-1||Jrb.zk(a.k,e)!=0||o!=null;r&&(c.a+='[',c);k!=0&&(c.a+=k,c);c.a+=''+l;(Jrb.xk(a.k,e)==1||Jrb.xk(a.k,e)==2)&&(p=Jrb.rk(a.k,e)-1,!(p!=-1&&a.i[p][Jrb.qk(a.k,e)]<=1))&&(Jrb.Dk(a.k,e)!=7||Jrb.mk(a.k,e)>0)&&Erb.P7(c,Jrb.Up(a,e,n));if((a.j&1)==0&&r){i=Jrb.ho(a.k,e);i==1?(c.a+='H',c):i>1&&(c.a+='H'+i,c)}if(g!=0){c.a+=String.fromCharCode(g>0?43:45);$wnd.Math.abs(g)>1&&Erb.M7(c,$wnd.Math.abs(g))}o!=null&&(c.a+=''+o,c);if(m!=0){c.a+=':';c.a+=m}r&&(c.a+=']',c);Jrb.Np(a,b,c);b.e&&(c.a+=')',c)};Jrb.Jp=function Jp(a,b,c){var d,e,f,g,h;f=true;h=Krb.Ji(a.g,b).a;g=Jrb.Yp(a,h);while(g!=-1){d=Jrb.Fn(a.k,h,g);e=Jrb.Hn(a.k,h,g);g=Jrb.Yp(a,d);Jrb.Lp(a,new Jrb.ht(d,e,h,c&&f,c&&g==-1),++b);h=d;f=false}};Jrb.Kp=function Kp(a,b,c){var d,e,f,g;for(e=b,f=0,g=e.length;f<g;++f){d=e[f];a.f[d&1073741823]=(d&Sub)!=0^c?2:1}};Jrb.Lp=function Lp(a,b,c){Krb.Di(a.g,c,b);a.b[b.a]=true;b.g!=-1&&(a.c[Jrb.Dn(a.k,b.a,b.g)]=true)};Jrb.Mp=function Mp(a,b,c,d){var e,f,g,h,i;i=Hrb.rnb(d.a).length;a.f[b]!=0&&Erb.L7(d,a.f[b]==1?47:92);if(a.j==1){e=Jrb.Sk(a.k,b)&127;if(e!=0){(e&1)!=0&&a.f[b]==0&&(d.a+='-',d);if((e&2)!=0){Hrb.rnb(d.a).length!=i&&(d.a+=',',d);d.a+='='}if((e&4)!=0){Hrb.rnb(d.a).length!=i&&(d.a+=',',d);d.a+='#'}if((e&32)!=0){Hrb.rnb(d.a).length!=i&&(d.a+=',',d);d.a+='$'}if((e&64)!=0){Hrb.rnb(d.a).length!=i&&(d.a+=',',d);d.a+='$'}if((e&8)!=0){Hrb.rnb(d.a).length!=i&&(d.a+=',',d);d.a+=':'}if((e&16)!=0){Hrb.rnb(d.a).length!=i&&(d.a+=',',d);Erb.P7(d,Jrb.tl(a.k,c)?'<-':'->')}}}if(i==Hrb.rnb(d.a).length&&(!Jrb.zo(a.k,b)||(a.j&4)!=0)){f=Jrb.Tk(a.k,b)&127;f==1?Jrb.yo(a.k,Jrb.Ik(a.k,0,b))&&Jrb.yo(a.k,Jrb.Ik(a.k,1,b))&&(a.j&4)==0&&a.f[b]==0&&(d.a+='-',d):f==2?(d.a+='=',d):f==4?(d.a+='#',d):f==32?(d.a+='$',d):f==64?(d.a+='$',d):f==8?(d.a+=':',d):f==16&&Erb.P7(d,Jrb.tl(a.k,c)?'<-':'->')}if(a.j==1){g=i==Hrb.rnb(d.a).length?'':';';h=Jrb.Sk(a.k,b)&384;h==256?(d.a+=g+'@',d):h==128&&(d.a+=g+'!@',d)}};Jrb.Np=function Np(a,b,c){var d,e,f;if(b.c!=null){for(e=0;e<b.c.length;e++){for(f=0;f<Jrb.Gn(a.k,b.a);f++){if(b.c[e]==Jrb.Fn(a.k,b.a,f)){d=Jrb.Hn(a.k,b.a,f);b.d[e]||Jrb.Mp(a,d,b.a,c);a.e[d]>9&&(c.a+='%',c);Erb.M7(c,a.e[d])}}}}};Jrb.Op=function Op(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O;M=new Krb.Yi;for(r=new Krb.ueb(a.g);r.a<r.c.a.length;){q=Krb.teb(r);if(q.g!=-1){t=Jrb.Dn(a.k,q.a,q.g);if(!Jrb.Ao(a.k,t)&&!Jrb.Po(a.k,t)&&(Jrb.Rk(a.k,t)==1||Jrb.Rk(a.k,t)==2)){K=Krb.Ji(a.g,a.q[q.g]);c=tX(Drb.NY,Qsb,6,Jrb.Gn(a.k,q.a)+Jrb.Gn(a.k,K.a)-2,15,1);B=0;L=false;if(K.g!=-1){c[B++]=K.b}else{u=-1;N=-1;v=xsb;for(D=0;D<Jrb.Gn(a.k,K.a);D++){l=Jrb.Fn(a.k,K.a,D);if(l!=q.a){if(u==-1){u=D;v=a.q[l]}else{if(v<a.q[l]){N=D}else{N=u;u=D}}}}if(N==-1){H=Jrb.Fn(a.k,K.a,u);I=Jrb.Hn(a.k,K.a,u);c[B++]=I|(Jrb.$p(a,K.a,H)?Sub:0)}else{m=Jrb.Fn(a.k,K.a,u);o=Jrb.Hn(a.k,K.a,u);n=Jrb.Fn(a.k,K.a,N);p=Jrb.Hn(a.k,K.a,N);c[B++]=o|(Jrb.$p(a,K.a,m)?Sub:0);c[B++]=p|(Jrb.$p(a,K.a,n)?0:Sub)}}if(Jrb.Gn(a.k,K.a)==3&&K.g!=-1){for(D=0;D<Jrb.Gn(a.k,K.a);D++){l=Jrb.Fn(a.k,K.a,D);if(l!=K.g&&l!=q.a){d=Jrb.Hn(a.k,K.a,D);c[B++]=d|(Jrb.$p(a,K.a,l)?Sub:0);l<K.g&&(L=!L);break}}}Jrb.Rk(a.k,t)==2&&(L=!L);for(C=0;C<Jrb.Gn(a.k,q.a);C++){i=Jrb.Fn(a.k,q.a,C);if(i!=q.g){A=L;if(Jrb.Gn(a.k,q.a)==3){for(G=0;G<Jrb.Gn(a.k,q.a);G++){l=Jrb.Fn(a.k,q.a,G);if(l!=q.g&&l!=i){l<i&&(A=!A);break}}}if(Jrb.ol(a.k,t)){w=Jrb.Mf(a.d,t);if(!a.n[w]){a.n[w]=true;a.o[w]=A}a.o[w]&&(A=!A)}j=Jrb.Dn(a.k,q.a,i);c[B++]=j|(A^Jrb.$p(a,q.a,i)?0:Sub)}}Hrb.Kmb(M.a,c)}}}a.f=tX(Drb.NY,Qsb,6,a.k.g,15,1);M.a.length!=0&&Jrb.Kp(a,Krb.Qi(M,0),false);while(M.a.length!=0){O=M.a.length;for(C=M.a.length-1;C>=0;C--){c=(Hrb.fnb(C,M.a.length),M.a[C]);J=0;F=false;k=false;for(f=c,g=0,h=f.length;g<h;++g){e=f[g];b=e&1073741823;if(a.f[b]!=0){s=(e&Sub)!=0^a.f[b]==2;J==0?(F=s):F!=s&&(k=true);++J}}if(J!=0){c=Krb.Qi(M,C);k||Jrb.Kp(a,c,F)}}O==M.a.length&&Jrb.Kp(a,Krb.Qi(M,0),false)}};\nJrb.Pp=function Pp(a,b,c,d){var e,f,g,h,i,j,k;k=Hrb.rnb(d.a).length;0<k?(d.a=Erb.x7(d.a,0,0)):0>k&&(d.a+=Erb.D7(tX(Drb.KY,iub,6,-k,15,1)));i=Jrb.yo(a.k,b)&&(a.j&4)==0;for(f=c,g=0,h=f.length;g<h;++g){e=f[g];Hrb.rnb(d.a).length!=0&&(d.a+=',',d);j=(Jrb.Ej(),Jrb.yj)[e];Erb.P7(d,i?Hrb.rnb(j).toLowerCase():j)}return d.a};Jrb.Qp=function Qp(a){var b,c,d,e,f,g,h,i;if(!a.k||a.k.q==0)return '';Jrb.ou(a.k,15);a.d=new Jrb.fg(a.k,129);e=a.d.S;a.o=tX(Drb.c3,itb,6,e+1,16,1);a.n=tX(Drb.c3,itb,6,e+1,16,1);a.i=rX(Drb.NY,[lub,Qsb],[7,6],15,[2,32],2);for(b=0;b<a.k.f;b++){i=Jrb.rk(a.k,b)-1;i!=-1&&++a.i[i][Jrb.qk(a.k,b)]}Jrb.Tp(a);Jrb.Rp(a);Jrb.Op(a);d=new Erb.S7;c=new Erb.S7;f=true;for(h=new Krb.ueb(a.g);h.a<h.c.a.length;){g=Krb.teb(h);g.g==-1&&(f?(f=false):(d.a+='.',d));Jrb.Ip(a,g,d,c)}return d.a};Jrb.Rp=function Rp(a){var b,c,d,e,f,g,h,i,j,k,l;for(l=new Krb.ueb(a.g);l.a<l.c.a.length;){j=Krb.teb(l);c=0;for(f=0;f<Jrb.Gn(a.k,j.a);f++)a.c[Jrb.Hn(a.k,j.a,f)]||++c;if(c!=0){j.c=tX(Drb.NY,Qsb,6,c,15,1);c=0;for(g=0;g<Jrb.Gn(a.k,j.a);g++){if(!a.c[Jrb.Hn(a.k,j.a,g)]){i=Jrb.Fn(a.k,j.a,g);j.c[c++]=a.q[i]<<16|i}}Hrb.Nmb(j.c,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));for(e=0;e<j.c.length;e++)j.c[e]=Gsb&j.c[e]}}d=tX(Drb.c3,itb,6,a.k.g,16,1);a.e=tX(Drb.NY,Qsb,6,a.k.g,15,1);for(k=new Krb.ueb(a.g);k.a<k.c.a.length;){j=Krb.teb(k);if(j.c!=null){j.d=tX(Drb.c3,itb,6,j.c.length,16,1);for(e=0;e<j.c.length;e++){for(h=0;h<Jrb.Gn(a.k,j.a);h++){if(j.c[e]==Jrb.Fn(a.k,j.a,h)){b=Jrb.Hn(a.k,j.a,h);if(a.c[b]){d[a.e[b]]=false}else{a.c[b]=true;j.d[e]=true;a.e[b]=1;while(d[a.e[b]])++a.e[b];d[a.e[b]]=true}}}}}}};Jrb.Sp=function Sp(a){var b,c,d,e;d=-1;e=xsb;for(b=0;b<a.k.f;b++){if(!a.b[b]){c=a.a[b];E3(j3(Jrb.yk(a.k,b),jtb),0)&&(c+=Sub);Jrb.Gn(a.k,b)==0?(c+=1056964608):(c+=Jrb.Gn(a.k,b)<<24);if(e>c){e=c;d=b}}}return d};Jrb.Tp=function Tp(a){var b,c,d,e,f;a.a=a.d.e;a.b=tX(Drb.c3,itb,6,a.k.f,16,1);a.c=tX(Drb.c3,itb,6,a.k.g,16,1);a.g=new Krb.Yi;b=Jrb.Sp(a);while(b!=-1){c=a.g.a.length;Jrb.Lp(a,new Jrb.ht(b,-1,-1,false,false),c);if(Jrb.Gn(a.k,b)!=0){Jrb.Jp(a,c,false);while(c<a.g.a.length-1){while(Jrb.Zp(a,Krb.Ji(a.g,c).a))Jrb.Jp(a,c,true);++c}}b=Jrb.Sp(a)}a.q=tX(Drb.NY,Qsb,6,a.k.f,15,1);d=0;for(f=new Krb.ueb(a.g);f.a<f.c.a.length;){e=Krb.teb(f);a.q[e.a]=d++}};Jrb.Up=function Up(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;i=false;if(Jrb.wn(a.k,b)!=0&&Jrb.Gn(a.k,b)==2&&Jrb.In(a.k,b,0)==2&&Jrb.In(a.k,b,1)==2){for(g=0;g<Jrb.Gn(a.k,b);g++){d=Jrb.Fn(a.k,b,g);if(d!=c&&Jrb.Gn(a.k,d)==2){i=true;break}}for(f=0;f<Jrb.Gn(a.k,b);f++){d=Jrb.Fn(a.k,b,f);o=0;n=tX(Drb.NY,Qsb,6,3,15,1);for(k=0;k<Jrb.Gn(a.k,d);k++){n[o]=Jrb.Fn(a.k,d,k);n[o]!=b&&++o}o==2&&a.q[n[0]]<a.q[n[1]]^n[0]<n[1]&&(i=!i)}}else{l=tX(Drb.NY,Qsb,6,4,15,1);m=tX(Drb.NY,Qsb,6,4,15,1);h=0;if(c!=-1){l[h]=c;m[h++]=8*a.q[c]}if(Jrb.Wn(a.k,b)!=0){l[h]=xsb;m[h++]=8*a.q[b]}else if(Jrb.Gn(a.k,b)==3){l[h]=xsb;m[h++]=8*a.q[b]}for(f=0;f<Jrb.Gn(a.k,b);f++){d=Jrb.Fn(a.k,b,f);if(d!=c){l[h]=d;m[h++]=Jrb.Xp(a,b,f)}}i=Jrb._p(l,m)}j=Jrb.xk(a.k,b)==1^i;if(Jrb.hl(a.k,b)){e=Jrb.Nf(a.d,b);if(!a.n[e]){a.n[e]=true;a.o[e]=j}a.o[e]&&(j=!j)}return j?'@@':'@'};Jrb.Vp=function Vp(a,b,c){var d,e,f,g,h,i,j,k;h=Hrb.rnb(c.a).length;0<h?(c.a=Erb.x7(c.a,0,0)):0>h&&(c.a+=Erb.D7(tX(Drb.KY,iub,6,-h,15,1)));i=Jrb.yk(a.k,b);e=N3(I3(j3(i,wtb),3));switch(e){case 20971520:c.a+='+0';break;case 25165824:Jrb.mk(a.k,b)==0&&(c.a+='-',c);break;case 12582912:Jrb.mk(a.k,b)==0&&(c.a+='+',c);}d=j3(i,pub);o3(d,2)==0?(c.a+=';a',c):o3(d,4)==0&&(c.a+=';A',c);f=j3(i,utb);o3(f,0)!=0&&(o3(f,1792)==0?(c.a+=';H0',c):o3(f,1664)==0?(c.a+=';H1',c):o3(f,1408)==0?(c.a+=';H2',c):o3(f,896)==0?(c.a+=';H3',c):o3(f,128)==0?(c.a+=';!H0',c):o3(f,384)==0?(c.a+=';!H0;!H1',c):o3(f,1536)==0?(c.a+=';!H2;!H3',c):o3(f,vtb)==0&&(c.a+=';!H3',c));k=j3(i,120);o3(k,8)==0?(c.a+=';!R0',c):o3(k,16)==0?(c.a+=';!R1',c):o3(k,32)==0?(c.a+=';!R2',c):o3(k,64)==0?(c.a+=';!R3',c):o3(k,112)==0?(c.a+=';R0',c):o3(k,104)==0?(c.a+=';R1',c):o3(k,88)==0?(c.a+=';R2',c):o3(k,56)==0&&(c.a+=';R3',c);j=j3(i,Usb);if(o3(j,Vsb)==0)c.a+=';!r'+O3(j);else if(o3(j,Tub)==0)c.a+=';r'+O3(j);else if(o3(j,0)!=0){if(E3(j3(j,_sb),0)){t3(j3(j,Vsb),0)&&(c.a+=';!r0'+O3(j),c);t3(j3(j,Wsb),0)&&(c.a+=';!r3'+O3(j),c);t3(j3(j,Xsb),0)&&(c.a+=';!r4'+O3(j),c);t3(j3(j,Ysb),0)&&(c.a+=';!r5'+O3(j),c);t3(j3(j,Zsb),0)&&(c.a+=';!r6'+O3(j),c);t3(j3(j,$sb),0)&&(c.a+=';!r7'+O3(j),c)}else{c.a+=';';E3(j3(j,Vsb),0)&&(c.a+='r0,'+O3(j),c);E3(j3(j,Wsb),0)&&(c.a+='r3,'+O3(j),c);E3(j3(j,Xsb),0)&&(c.a+='r4,'+O3(j),c);E3(j3(j,Ysb),0)&&(c.a+='r5,'+O3(j),c);E3(j3(j,Zsb),0)&&(c.a+='r6,'+O3(j),c);E3(j3(j,$sb),0)&&(c.a+='r7,'+O3(j),c);Erb.G4(c,Hrb.rnb(c.a).length-1)}}if(o3(j,0)==0){j=I3(j3(i,Stb),22);o3(j,0)!=0&&(c.a+=';r'+O3(j),c)}g=j3(i,Btb);o3(g,3801088)==0&&(c.a+=';D1',c);o3(g,Ctb)==0&&(c.a+=';D2',c);o3(g,Dtb)==0&&(c.a+=';D3',c);o3(g,3145728)==0&&(c.a+=';!D3;!D4',c);o3(g,Etb)==0&&(c.a+=';!D4',c);o3(g,Ftb)==0&&(c.a+=';!D0;!D1',c);o3(g,Gtb)==0&&(c.a+=';!D0;!D1;!D2',c);o3(g,Htb)==0&&(c.a+=';!D0;!D1;!D2;!D3',c);E3(j3(i,Vtb),0)&&Erb.P7(c,';D'+Jrb.Gn(a.k,b));E3(j3(i,qtb),0)&&Erb.P7(c,';!D'+Jrb.Gn(a.k,b));return Hrb.rnb(c.a).length==0?null:c.a};Jrb.Wp=function Wp(a){a.p==null&&(a.p=Jrb.Qp(a));return a.p};Jrb.Xp=function Xp(a,b,c){var d,e,f,g,h;d=Jrb.Hn(a.k,b,c);g=Jrb.Fn(a.k,b,c);if(a.e[d]!=0){h=8*a.q[b]+1;e=Krb.Ji(a.g,a.q[b]).c;for(f=0;f<e.length&&g!=e[f];f++)++h;return h}return 8*a.q[g]};Jrb.Yp=function Yp(a,b){var c,d,e,f,g;c=-1;d=-1;for(f=0;f<Jrb.Gn(a.k,b);f++){e=Jrb.Fn(a.k,b,f);g=(Jrb.In(a.k,b,f)<<24)+a.a[e];if(!a.b[e]&&(c==-1||d<g)){c=f;d=g}}return c};Jrb.Zp=function Zp(a,b){var c;for(c=0;c<Jrb.Gn(a.k,b);c++)if(!a.b[Jrb.Fn(a.k,b,c)])return true;return false};Jrb.$p=function $p(a,b,c){var d,e;d=Krb.Ji(a.g,a.q[b]);if(d.g==c)return false;e=Krb.Ji(a.g,a.q[c]);if(e.g==b)return true;return Jrb.gt(e,b)};Jrb._p=function _p(a,b){var c,d,e;d=false;for(c=1;c<4;c++){for(e=0;e<c;e++){a[e]>a[c]&&(d=!d);b[e]>b[c]&&(d=!d)}}return d};Jrb.aq=function aq(a){return a>=5&&a<=9||a>=15&&a<=17||a==35||a==53};Jrb.bq=function bq(a){Jrb.cq.call(this,a,0)};Jrb.cq=function cq(a,b){this.k=a;this.j=b};Jrb.dq=function dq(a){var b,c,d,e;e=new Erb.S7;for(c=0;c<a.g.a.length;c++){c!=0&&(e.a+='.',e);Erb.P7(e,Jrb.Wp(new Jrb.cq(Krb.Ji(a.g,c),2)))}e.a+='>';for(d=0;d<a.a.a.length;d++){d!=0&&(e.a+='.',e);Erb.P7(e,Jrb.Wp(new Jrb.bq(Krb.Ji(a.a,d))))}e.a+='>';for(b=0;b<a.f.a.length;b++){b!=0&&(e.a+='.',e);Erb.P7(e,Jrb.Wp(new Jrb.cq(Krb.Ji(a.f,b),2)))}return e.a};Z3(98,1,{},Jrb.bq,Jrb.cq);_.j=0;Drb.mZ=B5(98);Jrb.eq=function eq(a,b){this.b=a;this.a=b};Z3(3,1,{3:1},Jrb.eq);_.a=0;_.b=0;Drb.nZ=B5(3);\nJrb.gq=function gq(){Jrb.gq=_3;Jrb.fq=BX(nX(Drb.nZ,2),ssb,14,0,[null,BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(0,1.007825032),new Jrb.eq(1,2.014101778),new Jrb.eq(2,3.016049268),new Jrb.eq(3,4.027834627),new Jrb.eq(4,5.039542911),new Jrb.eq(5,6.044942608)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(1,3.01602931),new Jrb.eq(2,4.00260325),new Jrb.eq(3,5.012223628),new Jrb.eq(4,6.018888072),new Jrb.eq(5,7.028030527),new Jrb.eq(6,8.033921838),new Jrb.eq(7,9.043820323),new Jrb.eq(8,10.052399713)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(1,4.027182329),new Jrb.eq(2,5.012537796),new Jrb.eq(3,6.015122281),new Jrb.eq(4,7.016004049),new Jrb.eq(5,8.02248667),new Jrb.eq(6,9.026789122),new Jrb.eq(7,10.035480884),new Jrb.eq(8,11.043796166),new Jrb.eq(9,12.05378)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(1,5.04079),new Jrb.eq(2,6.019725804),new Jrb.eq(3,7.016929246),new Jrb.eq(4,8.005305094),new Jrb.eq(5,9.012182135),new Jrb.eq(6,10.01353372),new Jrb.eq(7,11.021657653),new Jrb.eq(8,12.026920631),new Jrb.eq(9,13.036133834),new Jrb.eq(10,14.042815522)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(2,7.029917389),new Jrb.eq(3,8.024606713),new Jrb.eq(4,9.013328806),new Jrb.eq(5,10.012937027),new Jrb.eq(6,11.009305466),new Jrb.eq(7,12.014352109),new Jrb.eq(8,13.017780267),new Jrb.eq(9,14.025404064),new Jrb.eq(10,15.031097291),new Jrb.eq(11,16.039808836),new Jrb.eq(12,17.046931399),new Jrb.eq(13,18.05617),new Jrb.eq(14,19.06373)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(2,8.037675026),new Jrb.eq(3,9.031040087),new Jrb.eq(4,10.01685311),new Jrb.eq(5,11.011433818),new Jrb.eq(6,12),new Jrb.eq(7,13.003354838),new Jrb.eq(8,14.003241988),new Jrb.eq(9,15.010599258),new Jrb.eq(10,16.014701243),new Jrb.eq(11,17.022583712),new Jrb.eq(12,18.026757058),new Jrb.eq(13,19.035248094),new Jrb.eq(14,20.040322395),new Jrb.eq(15,21.04934),new Jrb.eq(16,22.05645)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(3,10.042618),new Jrb.eq(4,11.026796226),new Jrb.eq(5,12.018613202),new Jrb.eq(6,13.005738584),new Jrb.eq(7,14.003074005),new Jrb.eq(8,15.000108898),new Jrb.eq(9,16.006101417),new Jrb.eq(10,17.008449673),new Jrb.eq(11,18.014081827),new Jrb.eq(12,19.017026896),new Jrb.eq(13,20.023367295),new Jrb.eq(14,21.027087574),new Jrb.eq(15,22.034440259),new Jrb.eq(16,23.04051),new Jrb.eq(17,24.0505)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(4,12.034404776),new Jrb.eq(5,13.0248104),new Jrb.eq(6,14.008595285),new Jrb.eq(7,15.003065386),new Jrb.eq(8,15.994914622),new Jrb.eq(9,16.999131501),new Jrb.eq(10,17.999160419),new Jrb.eq(11,19.00357873),new Jrb.eq(12,20.00407615),new Jrb.eq(13,21.008654631),new Jrb.eq(14,22.009967157),new Jrb.eq(15,23.015691325),new Jrb.eq(16,24.020369922),new Jrb.eq(17,25.02914),new Jrb.eq(18,26.03775)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(5,14.03608),new Jrb.eq(6,15.018010856),new Jrb.eq(7,16.01146573),new Jrb.eq(8,17.002095238),new Jrb.eq(9,18.000937667),new Jrb.eq(10,18.998403205),new Jrb.eq(11,19.999981324),new Jrb.eq(12,20.999948921),new Jrb.eq(13,22.00299925),new Jrb.eq(14,23.003574385),new Jrb.eq(15,24.008099371),new Jrb.eq(16,25.012094963),new Jrb.eq(17,26.019633157),new Jrb.eq(18,27.026892316),new Jrb.eq(19,28.03567),new Jrb.eq(20,29.04326)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(6,16.025756907),new Jrb.eq(7,17.017697565),new Jrb.eq(8,18.005697066),new Jrb.eq(9,19.001879839),new Jrb.eq(10,19.992440176),new Jrb.eq(11,20.993846744),new Jrb.eq(12,21.99138551),new Jrb.eq(13,22.994467337),new Jrb.eq(14,23.993615074),new Jrb.eq(15,24.997789899),new Jrb.eq(16,26.000461498),new Jrb.eq(17,27.0076152),new Jrb.eq(18,28.012108072),new Jrb.eq(19,29.019345902),new Jrb.eq(20,30.023872),new Jrb.eq(21,31.03311),new Jrb.eq(22,32.03991)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(7,18.02718),new Jrb.eq(8,19.01387945),new Jrb.eq(9,20.00734826),new Jrb.eq(10,20.997655099),new Jrb.eq(11,21.994436782),new Jrb.eq(12,22.989769675),new Jrb.eq(13,23.990963332),new Jrb.eq(14,24.989954352),new Jrb.eq(15,25.992589898),new Jrb.eq(16,26.994008702),new Jrb.eq(17,27.99889041),new Jrb.eq(18,29.002811301),new Jrb.eq(19,30.009226487),new Jrb.eq(20,31.013595108),new Jrb.eq(21,32.019649792),new Jrb.eq(22,33.027386),new Jrb.eq(23,34.0349),new Jrb.eq(24,35.04418)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(8,20.018862744),new Jrb.eq(9,21.011714174),new Jrb.eq(10,21.999574055),new Jrb.eq(11,22.99412485),new Jrb.eq(12,23.985041898),new Jrb.eq(13,24.985837023),new Jrb.eq(14,25.98259304),new Jrb.eq(15,26.984340742),new Jrb.eq(16,27.983876703),new Jrb.eq(17,28.988554743),new Jrb.eq(18,29.990464529),new Jrb.eq(19,30.996548459),new Jrb.eq(20,31.999145889),new Jrb.eq(21,33.005586975),new Jrb.eq(22,34.00907244),new Jrb.eq(23,35.018669),new Jrb.eq(24,36.02245),new Jrb.eq(25,37.03124)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(8,21.02804),new Jrb.eq(9,22.01952),new Jrb.eq(10,23.0072649),new Jrb.eq(11,23.999940911),new Jrb.eq(12,24.990428555),new Jrb.eq(13,25.986891659),new Jrb.eq(14,26.981538441),new Jrb.eq(15,27.981910184),new Jrb.eq(16,28.980444848),new Jrb.eq(17,29.982960304),new Jrb.eq(18,30.983946023),new Jrb.eq(19,31.988124379),new Jrb.eq(20,32.990869587),new Jrb.eq(21,33.996927255),new Jrb.eq(22,34.99993765),new Jrb.eq(23,36.006351501),new Jrb.eq(24,37.01031),new Jrb.eq(25,38.0169),new Jrb.eq(26,39.0219)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(8,22.03453),new Jrb.eq(9,23.02552),new Jrb.eq(10,24.011545711),new Jrb.eq(11,25.00410664),new Jrb.eq(12,25.992329935),new Jrb.eq(13,26.986704764),new Jrb.eq(14,27.976926533),new Jrb.eq(15,28.976494719),new Jrb.eq(16,29.973770218),new Jrb.eq(17,30.975363275),new Jrb.eq(18,31.974148129),new Jrb.eq(19,32.97800052),new Jrb.eq(20,33.978575745),new Jrb.eq(21,34.984584158),new Jrb.eq(22,35.986687363),new Jrb.eq(23,36.99299599),new Jrb.eq(24,37.99598),new Jrb.eq(25,39.0023),new Jrb.eq(26,40.0058),new Jrb.eq(27,41.0127),new Jrb.eq(28,42.0161)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(9,24.03435),new Jrb.eq(10,25.02026),new Jrb.eq(11,26.01178),new Jrb.eq(12,26.999191645),new Jrb.eq(13,27.99231233),new Jrb.eq(14,28.981801376),new Jrb.eq(15,29.978313807),new Jrb.eq(16,30.973761512),new Jrb.eq(17,31.973907163),new Jrb.eq(18,32.971725281),new Jrb.eq(19,33.973636381),new Jrb.eq(20,34.973314249),new Jrb.eq(21,35.978259824),new Jrb.eq(22,36.979608338),new Jrb.eq(23,37.98447),new Jrb.eq(24,38.98642),new Jrb.eq(25,39.99105),new Jrb.eq(26,40.9948),new Jrb.eq(27,42.00009),new Jrb.eq(28,43.00331),new Jrb.eq(29,44.00988),new Jrb.eq(30,45.01514),new Jrb.eq(31,46.02383)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(10,26.02788),new Jrb.eq(11,27.018795),new Jrb.eq(12,28.004372661),new Jrb.eq(13,28.996608805),new Jrb.eq(14,29.984902954),new Jrb.eq(15,30.979554421),new Jrb.eq(16,31.97207069),new Jrb.eq(17,32.971458497),new Jrb.eq(18,33.967866831),new Jrb.eq(19,34.96903214),new Jrb.eq(20,35.96708088),new Jrb.eq(21,36.971125716),new Jrb.eq(22,37.971163443),new Jrb.eq(23,38.975135275),new Jrb.eq(24,39.97547),new Jrb.eq(25,40.98003),new Jrb.eq(26,41.98149),new Jrb.eq(27,42.9866),new Jrb.eq(28,43.98832),new Jrb.eq(29,44.99482),new Jrb.eq(30,45.99957),new Jrb.eq(31,47.00762),new Jrb.eq(32,48.01299),new Jrb.eq(33,49.02201)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(11,28.02851),new Jrb.eq(12,29.01411),new Jrb.eq(13,30.00477),new Jrb.eq(14,30.992416014),new Jrb.eq(15,31.985688908),new Jrb.eq(16,32.977451798),new Jrb.eq(17,33.973761967),new Jrb.eq(18,34.968852707),new Jrb.eq(19,35.968306945),new Jrb.eq(20,36.9659026),new Jrb.eq(21,37.96801055),new Jrb.eq(22,38.968007677),new Jrb.eq(23,39.970415555),new Jrb.eq(24,40.970650212),new Jrb.eq(25,41.973174994),new Jrb.eq(26,42.974203385),new Jrb.eq(27,43.978538712),new Jrb.eq(28,44.9797),new Jrb.eq(29,45.98412),new Jrb.eq(30,46.98795),new Jrb.eq(31,47.99485),new Jrb.eq(32,48.99989),new Jrb.eq(33,50.00773),new Jrb.eq(34,51.01353)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(12,30.02156),new Jrb.eq(13,31.012126),new Jrb.eq(14,31.99766066),new Jrb.eq(15,32.989928719),new Jrb.eq(16,33.980270118),new Jrb.eq(17,34.975256726),new Jrb.eq(18,35.967546282),new Jrb.eq(19,36.966775912),new Jrb.eq(20,37.962732161),new Jrb.eq(21,38.964313413),new Jrb.eq(22,39.962383123),new Jrb.eq(23,40.964500828),new Jrb.eq(24,41.963046386),new Jrb.eq(25,42.965670701),new Jrb.eq(26,43.965365269),new Jrb.eq(27,44.968094979),new Jrb.eq(28,45.968093467),new Jrb.eq(29,46.972186238),new Jrb.eq(30,47.97507),new Jrb.eq(31,48.98218),new Jrb.eq(32,49.98594),new Jrb.eq(33,50.99324),new Jrb.eq(34,51.99817),new Jrb.eq(35,53.006227)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(13,32.02192),new Jrb.eq(14,33.00726),new Jrb.eq(15,33.99841),new Jrb.eq(16,34.988011615),new Jrb.eq(17,35.981293405),new Jrb.eq(18,36.973376915),new Jrb.eq(19,37.969080107),new Jrb.eq(20,38.963706861),new Jrb.eq(21,39.963998672),new Jrb.eq(22,40.961825972),new Jrb.eq(23,41.962403059),new Jrb.eq(24,42.960715746),new Jrb.eq(25,43.961556146),new Jrb.eq(26,44.960699658),new Jrb.eq(27,45.961976203),new Jrb.eq(28,46.961677807),new Jrb.eq(29,47.965512946),new Jrb.eq(30,48.967450084),new Jrb.eq(31,49.972782832),new Jrb.eq(32,50.97638),new Jrb.eq(33,51.98261),new Jrb.eq(34,52.98712),new Jrb.eq(35,53.99399),new Jrb.eq(36,54.999388)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(14,34.01412),new Jrb.eq(15,35.004765),new Jrb.eq(16,35.993087234),new Jrb.eq(17,36.985871505),new Jrb.eq(18,37.976318637),new Jrb.eq(19,38.970717729),new Jrb.eq(20,39.962591155),new Jrb.eq(21,40.962278349),new Jrb.eq(22,41.958618337),new Jrb.eq(23,42.958766833),new Jrb.eq(24,43.955481094),new Jrb.eq(25,44.956185938),new Jrb.eq(26,45.953692759),new Jrb.eq(27,46.954546459),new Jrb.eq(28,47.952533512),new Jrb.eq(29,48.955673302),new Jrb.eq(30,49.957518286),new Jrb.eq(31,50.961474238),new Jrb.eq(32,51.9651),new Jrb.eq(33,52.97005),new Jrb.eq(34,53.97468),new Jrb.eq(35,54.98055),new Jrb.eq(36,55.98579),new Jrb.eq(37,56.992356)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(15,36.01492),new Jrb.eq(16,37.00305),new Jrb.eq(17,37.9947),new Jrb.eq(18,38.984790009),new Jrb.eq(19,39.977964014),new Jrb.eq(20,40.969251316),new Jrb.eq(21,41.965516761),new Jrb.eq(22,42.96115098),new Jrb.eq(23,43.959403048),new Jrb.eq(24,44.955910243),new Jrb.eq(25,45.95517025),new Jrb.eq(26,46.952408027),new Jrb.eq(27,47.952234991),new Jrb.eq(28,48.950024065),new Jrb.eq(29,49.952187008),new Jrb.eq(30,50.9536027),new Jrb.eq(31,51.95665),new Jrb.eq(32,52.95817),new Jrb.eq(33,53.963),new Jrb.eq(34,54.9694),new Jrb.eq(35,55.97266),new Jrb.eq(36,56.97704),new Jrb.eq(37,57.98307),new Jrb.eq(38,58.988041)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(16,38.00977),new Jrb.eq(17,39.001323),new Jrb.eq(18,39.990498907),new Jrb.eq(19,40.983131),new Jrb.eq(20,41.973031622),new Jrb.eq(21,42.968523342),new Jrb.eq(22,43.959690235),new Jrb.eq(23,44.958124349),new Jrb.eq(24,45.952629491),new Jrb.eq(25,46.951763792),new Jrb.eq(26,47.947947053),new Jrb.eq(27,48.947870789),new Jrb.eq(28,49.944792069),new Jrb.eq(29,50.946616017),new Jrb.eq(30,51.946898175),new Jrb.eq(31,52.949731709),new Jrb.eq(32,53.95087),new Jrb.eq(33,54.95512),new Jrb.eq(34,55.95799),new Jrb.eq(35,56.9643),new Jrb.eq(36,57.96611),new Jrb.eq(37,58.97196),new Jrb.eq(38,59.97564),new Jrb.eq(39,60.982018)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(17,40.01109),new Jrb.eq(18,40.99974),new Jrb.eq(19,41.99123),new Jrb.eq(20,42.98065),new Jrb.eq(21,43.9744),new Jrb.eq(22,44.965782286),new Jrb.eq(23,45.960199491),new Jrb.eq(24,46.954906918),new Jrb.eq(25,47.95225448),new Jrb.eq(26,48.948516914),new Jrb.eq(27,49.947162792),new Jrb.eq(28,50.943963675),new Jrb.eq(29,51.944779658),new Jrb.eq(30,52.944342517),new Jrb.eq(31,53.946444381),new Jrb.eq(32,54.947238194),new Jrb.eq(33,55.95036),new Jrb.eq(34,56.95236),new Jrb.eq(35,57.95665),new Jrb.eq(36,58.9593),new Jrb.eq(37,59.9645),new Jrb.eq(38,60.96741),new Jrb.eq(39,61.97314),new Jrb.eq(40,62.97675)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(18,42.00643),new Jrb.eq(19,42.997707),new Jrb.eq(20,43.98547),new Jrb.eq(21,44.97916),new Jrb.eq(22,45.968361649),new Jrb.eq(23,46.962906512),new Jrb.eq(24,47.954035861),new Jrb.eq(25,48.951341135),new Jrb.eq(26,49.946049607),new Jrb.eq(27,50.944771767),new Jrb.eq(28,51.940511904),new Jrb.eq(29,52.940653781),new Jrb.eq(30,53.938884921),new Jrb.eq(31,54.940844164),new Jrb.eq(32,55.940645238),new Jrb.eq(33,56.9437538),new Jrb.eq(34,57.94425),new Jrb.eq(35,58.94863),new Jrb.eq(36,59.94973),new Jrb.eq(37,60.95409),new Jrb.eq(38,61.9558),new Jrb.eq(39,62.96186),new Jrb.eq(40,63.9642),new Jrb.eq(41,64.97037)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(19,44.00687),new Jrb.eq(20,44.99451),new Jrb.eq(21,45.98672),new Jrb.eq(22,46.9761),new Jrb.eq(23,47.96887),new Jrb.eq(24,48.959623415),new Jrb.eq(25,49.95424396),new Jrb.eq(26,50.948215487),new Jrb.eq(27,51.945570079),new Jrb.eq(28,52.941294702),new Jrb.eq(29,53.940363247),new Jrb.eq(30,54.938049636),new Jrb.eq(31,55.938909366),new Jrb.eq(32,56.938287458),new Jrb.eq(33,57.939986451),new Jrb.eq(34,58.940447166),new Jrb.eq(35,59.943193998),new Jrb.eq(36,60.94446),new Jrb.eq(37,61.94797),new Jrb.eq(38,62.94981),new Jrb.eq(39,63.95373),new Jrb.eq(40,64.9561),new Jrb.eq(41,65.96082),new Jrb.eq(42,66.96382)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(19,45.01456),new Jrb.eq(20,46.00081),new Jrb.eq(21,46.99289),new Jrb.eq(22,47.98056),new Jrb.eq(23,48.97361),new Jrb.eq(24,49.962993316),new Jrb.eq(25,50.956824936),new Jrb.eq(26,51.948116526),new Jrb.eq(27,52.945312282),new Jrb.eq(28,53.939614836),new Jrb.eq(29,54.938298029),new Jrb.eq(30,55.934942133),new Jrb.eq(31,56.935398707),new Jrb.eq(32,57.933280458),new Jrb.eq(33,58.934880493),new Jrb.eq(34,59.934076943),new Jrb.eq(35,60.936749461),new Jrb.eq(36,61.936770495),new Jrb.eq(37,62.940118442),new Jrb.eq(38,63.94087),new Jrb.eq(39,64.94494),new Jrb.eq(40,65.94598),new Jrb.eq(41,66.95),new Jrb.eq(42,67.95251),new Jrb.eq(43,68.9577)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(21,48.00176),new Jrb.eq(22,48.98972),new Jrb.eq(23,49.98154),new Jrb.eq(24,50.97072),new Jrb.eq(25,51.96359),new Jrb.eq(26,52.954224985),new Jrb.eq(27,53.948464147),new Jrb.eq(28,54.942003149),new Jrb.eq(29,55.939843937),new Jrb.eq(30,56.936296235),new Jrb.eq(31,57.935757571),new Jrb.eq(32,58.933200194),new Jrb.eq(33,59.933822196),new Jrb.eq(34,60.932479381),new Jrb.eq(35,61.934054212),new Jrb.eq(36,62.933615218),new Jrb.eq(37,63.935813523),new Jrb.eq(38,64.936484581),new Jrb.eq(39,65.939825412),new Jrb.eq(40,66.94061),new Jrb.eq(41,67.94436),new Jrb.eq(42,68.9452),new Jrb.eq(43,69.94981),new Jrb.eq(44,70.95173),new Jrb.eq(45,71.95641)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(22,49.99593),new Jrb.eq(23,50.98772),new Jrb.eq(24,51.97568),new Jrb.eq(25,52.96846),new Jrb.eq(26,53.957910508),new Jrb.eq(27,54.951336329),new Jrb.eq(28,55.942136339),new Jrb.eq(29,56.939800489),new Jrb.eq(30,57.935347922),new Jrb.eq(31,58.934351553),new Jrb.eq(32,59.930790633),new Jrb.eq(33,60.931060442),new Jrb.eq(34,61.928348763),new Jrb.eq(35,62.929672948),new Jrb.eq(36,63.927969574),new Jrb.eq(37,64.930088013),new Jrb.eq(38,65.929115232),new Jrb.eq(39,66.931569638),new Jrb.eq(40,67.931844932),new Jrb.eq(41,68.935181837),new Jrb.eq(42,69.93614),new Jrb.eq(43,70.94),new Jrb.eq(44,71.9413),new Jrb.eq(45,72.94608),new Jrb.eq(46,73.94791),new Jrb.eq(47,74.95297),new Jrb.eq(48,75.95533),new Jrb.eq(49,76.96083),new Jrb.eq(50,77.9638)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(23,51.99718),new Jrb.eq(24,52.98555),new Jrb.eq(25,53.97671),new Jrb.eq(26,54.96605),new Jrb.eq(27,55.95856),new Jrb.eq(28,56.949215695),new Jrb.eq(29,57.944540734),new Jrb.eq(30,58.939504114),new Jrb.eq(31,59.937368123),new Jrb.eq(32,60.933462181),new Jrb.eq(33,61.932587299),new Jrb.eq(34,62.929601079),new Jrb.eq(35,63.929767865),new Jrb.eq(36,64.927793707),new Jrb.eq(37,65.928873041),new Jrb.eq(38,66.927750294),new Jrb.eq(39,67.929637875),new Jrb.eq(40,68.929425281),new Jrb.eq(41,69.932409287),new Jrb.eq(42,70.932619818),new Jrb.eq(43,71.93552),new Jrb.eq(44,72.93649),new Jrb.eq(45,73.9402),new Jrb.eq(46,74.9417),new Jrb.eq(47,75.94599),new Jrb.eq(48,76.94795),new Jrb.eq(49,77.95281),new Jrb.eq(50,78.95528),new Jrb.eq(51,79.96189)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(24,53.99295),new Jrb.eq(25,54.98398),new Jrb.eq(26,55.97238),new Jrb.eq(27,56.96491),new Jrb.eq(28,57.954596465),new Jrb.eq(29,58.949267074),new Jrb.eq(30,59.941832031),new Jrb.eq(31,60.939513907),new Jrb.eq(32,61.934334132),new Jrb.eq(33,62.933215563),new Jrb.eq(34,63.929146578),new Jrb.eq(35,64.929245079),new Jrb.eq(36,65.926036763),new Jrb.eq(37,66.927130859),new Jrb.eq(38,67.924847566),new Jrb.eq(39,68.926553538),new Jrb.eq(40,69.92532487),new Jrb.eq(41,70.927727195),new Jrb.eq(42,71.926861122),new Jrb.eq(43,72.929779469),new Jrb.eq(44,73.929458261),new Jrb.eq(45,74.932937379),new Jrb.eq(46,75.933394207),new Jrb.eq(47,76.937085857),new Jrb.eq(48,77.938569576),new Jrb.eq(49,78.942095175),new Jrb.eq(50,79.944414722),new Jrb.eq(51,80.95048),new Jrb.eq(52,81.95484)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(25,55.99491),new Jrb.eq(26,56.98293),new Jrb.eq(27,57.97425),new Jrb.eq(28,58.96337),new Jrb.eq(29,59.95706),new Jrb.eq(30,60.94917),new Jrb.eq(31,61.944179608),new Jrb.eq(32,62.939141527),new Jrb.eq(33,63.936838307),new Jrb.eq(34,64.932739322),new Jrb.eq(35,65.931592355),new Jrb.eq(36,66.928204915),new Jrb.eq(37,67.927983497),new Jrb.eq(38,68.925580912),new Jrb.eq(39,69.926027741),new Jrb.eq(40,70.92470501),new Jrb.eq(41,71.92636935),new Jrb.eq(42,72.925169832),new Jrb.eq(43,73.926940999),new Jrb.eq(44,74.926500645),new Jrb.eq(45,75.928928262),new Jrb.eq(46,76.929281189),new Jrb.eq(47,77.93165595),new Jrb.eq(48,78.932916371),new Jrb.eq(49,79.936588154),new Jrb.eq(50,80.937752955),new Jrb.eq(51,81.94316),new Jrb.eq(52,82.94687),new Jrb.eq(53,83.95234)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(26,57.99101),new Jrb.eq(27,58.98175),new Jrb.eq(28,59.97019),new Jrb.eq(29,60.96379),new Jrb.eq(30,61.95465),new Jrb.eq(31,62.94964),new Jrb.eq(32,63.941572638),new Jrb.eq(33,64.939440762),new Jrb.eq(34,65.933846798),new Jrb.eq(35,66.932738415),new Jrb.eq(36,67.928097266),new Jrb.eq(37,68.927972002),new Jrb.eq(38,69.924250365),new Jrb.eq(39,70.924953991),new Jrb.eq(40,71.922076184),new Jrb.eq(41,72.923459361),new Jrb.eq(42,73.921178213),new Jrb.eq(43,74.922859494),new Jrb.eq(44,75.921402716),new Jrb.eq(45,76.923548462),new Jrb.eq(46,77.922852886),new Jrb.eq(47,78.92540156),new Jrb.eq(48,79.925444764),new Jrb.eq(49,80.928821065),new Jrb.eq(50,81.929550326),new Jrb.eq(51,82.93451),new Jrb.eq(52,83.93731),new Jrb.eq(53,84.94269),new Jrb.eq(54,85.94627)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(27,59.99313),new Jrb.eq(28,60.98062),new Jrb.eq(29,61.9732),new Jrb.eq(30,62.96369),new Jrb.eq(31,63.957572),new Jrb.eq(32,64.949484),new Jrb.eq(33,65.944099147),new Jrb.eq(34,66.939190417),new Jrb.eq(35,67.936792976),new Jrb.eq(36,68.932280154),new Jrb.eq(37,69.930927811),new Jrb.eq(38,70.927114724),new Jrb.eq(39,71.926752647),new Jrb.eq(40,72.923825288),new Jrb.eq(41,73.923929076),new Jrb.eq(42,74.921596417),new Jrb.eq(43,75.922393933),new Jrb.eq(44,76.920647703),new Jrb.eq(45,77.921828577),new Jrb.eq(46,78.920948498),new Jrb.eq(47,79.922578162),new Jrb.eq(48,80.922132884),new Jrb.eq(49,81.924504668),new Jrb.eq(50,82.924980625),new Jrb.eq(51,83.92906),new Jrb.eq(52,84.93181),new Jrb.eq(53,85.93623),new Jrb.eq(54,86.93958),new Jrb.eq(55,87.94456),new Jrb.eq(56,88.94923)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(31,64.96466),new Jrb.eq(32,65.95521),new Jrb.eq(33,66.95009),new Jrb.eq(34,67.94187),new Jrb.eq(35,68.939562155),new Jrb.eq(36,69.933504),new Jrb.eq(37,70.931868378),new Jrb.eq(38,71.927112313),new Jrb.eq(39,72.9267668),new Jrb.eq(40,73.922476561),new Jrb.eq(41,74.922523571),new Jrb.eq(42,75.919214107),new Jrb.eq(43,76.91991461),new Jrb.eq(44,77.917309522),new Jrb.eq(45,78.918499802),new Jrb.eq(46,79.916521828),new Jrb.eq(47,80.917992931),new Jrb.eq(48,81.9167),new Jrb.eq(49,82.919119072),new Jrb.eq(50,83.918464523),new Jrb.eq(51,84.922244678),new Jrb.eq(52,85.924271165),new Jrb.eq(53,86.928520749),new Jrb.eq(54,87.931423982),new Jrb.eq(55,88.93602),new Jrb.eq(56,89.93942),new Jrb.eq(57,90.94537),new Jrb.eq(58,91.94933)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(32,66.96479),new Jrb.eq(33,67.958248),new Jrb.eq(34,68.950178),new Jrb.eq(35,69.944208),new Jrb.eq(36,70.939246),new Jrb.eq(37,71.936496876),new Jrb.eq(38,72.931794889),new Jrb.eq(39,73.929891152),new Jrb.eq(40,74.92577641),new Jrb.eq(41,75.924541974),new Jrb.eq(42,76.921380123),new Jrb.eq(43,77.92114613),new Jrb.eq(44,78.918337647),new Jrb.eq(45,79.918529952),new Jrb.eq(46,80.91629106),new Jrb.eq(47,81.916804666),new Jrb.eq(48,82.915180219),new Jrb.eq(49,83.916503685),new Jrb.eq(50,84.915608027),new Jrb.eq(51,85.918797162),new Jrb.eq(52,86.920710713),new Jrb.eq(53,87.924065908),new Jrb.eq(54,88.92638726),new Jrb.eq(55,89.930634988),new Jrb.eq(56,90.9339653),new Jrb.eq(57,91.939255258),new Jrb.eq(58,92.9431),new Jrb.eq(59,93.94868)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(33,68.96532),new Jrb.eq(34,69.95601),new Jrb.eq(35,70.95051),new Jrb.eq(36,71.94190754),new Jrb.eq(37,72.938931115),new Jrb.eq(38,73.933258225),new Jrb.eq(39,74.931033794),new Jrb.eq(40,75.925948304),new Jrb.eq(41,76.92466788),new Jrb.eq(42,77.920386271),new Jrb.eq(43,78.920082992),new Jrb.eq(44,79.91637804),new Jrb.eq(45,80.916592419),new Jrb.eq(46,81.913484601),new Jrb.eq(47,82.914135952),new Jrb.eq(48,83.911506627),new Jrb.eq(49,84.912526954),new Jrb.eq(50,85.910610313),new Jrb.eq(51,86.913354251),new Jrb.eq(52,87.914446951),new Jrb.eq(53,88.917632505),new Jrb.eq(54,89.919523803),new Jrb.eq(55,90.923442418),new Jrb.eq(56,91.926152752),new Jrb.eq(57,92.931265246),new Jrb.eq(58,93.934362),new Jrb.eq(59,94.93984),new Jrb.eq(60,95.94307),new Jrb.eq(61,96.94856)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(34,70.96532),new Jrb.eq(35,71.95908),new Jrb.eq(36,72.950366),new Jrb.eq(37,73.944470376),new Jrb.eq(38,74.938569199),new Jrb.eq(39,75.935071448),new Jrb.eq(40,76.930406599),new Jrb.eq(41,77.928141485),new Jrb.eq(42,78.923996719),new Jrb.eq(43,79.922519322),new Jrb.eq(44,80.918994165),new Jrb.eq(45,81.918207691),new Jrb.eq(46,82.915111951),new Jrb.eq(47,83.914384676),new Jrb.eq(48,84.911789341),new Jrb.eq(49,85.91116708),new Jrb.eq(50,86.909183465),new Jrb.eq(51,87.911318556),new Jrb.eq(52,88.912279939),new Jrb.eq(53,89.914808941),new Jrb.eq(54,90.91653416),new Jrb.eq(55,91.919725442),new Jrb.eq(56,92.922032765),new Jrb.eq(57,93.926407326),new Jrb.eq(58,94.92931926),new Jrb.eq(59,95.934283962),new Jrb.eq(60,96.937342863),new Jrb.eq(61,97.941703557),new Jrb.eq(62,98.945420616),new Jrb.eq(63,99.94987),new Jrb.eq(64,100.953195994),new Jrb.eq(65,101.95921)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(35,72.96597),new Jrb.eq(36,73.95631),new Jrb.eq(37,74.94992),new Jrb.eq(38,75.94161),new Jrb.eq(39,76.937761511),new Jrb.eq(40,77.932179362),new Jrb.eq(41,78.929707076),new Jrb.eq(42,79.924524588),new Jrb.eq(43,80.923213095),new Jrb.eq(44,81.918401258),new Jrb.eq(45,82.917555029),new Jrb.eq(46,83.913424778),new Jrb.eq(47,84.912932689),new Jrb.eq(48,85.909262351),new Jrb.eq(49,86.908879316),new Jrb.eq(50,87.905614339),new Jrb.eq(51,88.907452906),new Jrb.eq(52,89.907737596),new Jrb.eq(53,90.910209845),new Jrb.eq(54,91.911029895),new Jrb.eq(55,92.91402241),new Jrb.eq(56,93.915359856),new Jrb.eq(57,94.919358213),new Jrb.eq(58,95.921680473),new Jrb.eq(59,96.926148757),new Jrb.eq(60,97.928471177),new Jrb.eq(61,98.933315038),new Jrb.eq(62,99.935351729),new Jrb.eq(63,100.940517434),new Jrb.eq(64,101.943018795),new Jrb.eq(65,102.94895),new Jrb.eq(66,103.95233)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(38,76.94962),new Jrb.eq(39,77.9435),new Jrb.eq(40,78.937350712),new Jrb.eq(41,79.931982402),new Jrb.eq(42,80.929128719),new Jrb.eq(43,81.926792071),new Jrb.eq(44,82.922352572),new Jrb.eq(45,83.920387768),new Jrb.eq(46,84.916427076),new Jrb.eq(47,85.914887724),new Jrb.eq(48,86.910877833),new Jrb.eq(49,87.909503361),new Jrb.eq(50,88.905847902),new Jrb.eq(51,89.907151443),new Jrb.eq(52,90.907303415),new Jrb.eq(53,91.908946832),new Jrb.eq(54,92.909581582),new Jrb.eq(55,93.911594008),new Jrb.eq(56,94.912823709),new Jrb.eq(57,95.915897787),new Jrb.eq(58,96.918131017),new Jrb.eq(59,97.922219525),new Jrb.eq(60,98.924634736),new Jrb.eq(61,99.927756402),new Jrb.eq(62,100.930313395),new Jrb.eq(63,101.933555501),new Jrb.eq(64,102.93694),new Jrb.eq(65,103.94145),new Jrb.eq(66,104.94509),new Jrb.eq(67,105.95022)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(39,78.94916),new Jrb.eq(40,79.94055),new Jrb.eq(41,80.936815296),new Jrb.eq(42,81.931086249),new Jrb.eq(43,82.92865213),new Jrb.eq(44,83.92325),new Jrb.eq(45,84.92146522),new Jrb.eq(46,85.916472851),new Jrb.eq(47,86.914816578),new Jrb.eq(48,87.910226179),new Jrb.eq(49,88.908888916),new Jrb.eq(50,89.904703679),new Jrb.eq(51,90.905644968),new Jrb.eq(52,91.905040106),new Jrb.eq(53,92.906475627),new Jrb.eq(54,93.906315765),new Jrb.eq(55,94.908042739),new Jrb.eq(56,95.908275675),new Jrb.eq(57,96.910950716),new Jrb.eq(58,97.912746366),new Jrb.eq(59,98.916511084),new Jrb.eq(60,99.917761704),new Jrb.eq(61,100.921139958),new Jrb.eq(62,101.922981089),new Jrb.eq(63,102.926597062),new Jrb.eq(64,103.92878),new Jrb.eq(65,104.93305),new Jrb.eq(66,105.93591),new Jrb.eq(67,106.94086),new Jrb.eq(68,107.94428)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(40,80.94905),new Jrb.eq(41,81.94313),new Jrb.eq(42,82.936703713),new Jrb.eq(43,83.93357),new Jrb.eq(44,84.927906486),new Jrb.eq(45,85.925037588),new Jrb.eq(46,86.920361435),new Jrb.eq(47,87.91833144),new Jrb.eq(48,88.913495503),new Jrb.eq(49,89.911264109),new Jrb.eq(50,90.906990538),new Jrb.eq(51,91.907193214),new Jrb.eq(52,92.906377543),new Jrb.eq(53,93.907283457),new Jrb.eq(54,94.906835178),new Jrb.eq(55,95.908100076),new Jrb.eq(56,96.908097144),new Jrb.eq(57,97.91033069),new Jrb.eq(58,98.911617864),new Jrb.eq(59,99.914181434),new Jrb.eq(60,100.915251567),new Jrb.eq(61,101.918037417),new Jrb.eq(62,102.919141297),new Jrb.eq(63,103.922459464),new Jrb.eq(64,104.923934023),new Jrb.eq(65,105.92819),new Jrb.eq(66,106.93031),new Jrb.eq(67,107.93501),new Jrb.eq(68,108.93763),new Jrb.eq(69,109.94268)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(41,82.94874),new Jrb.eq(42,83.94009),new Jrb.eq(43,84.93659),new Jrb.eq(44,85.930695167),new Jrb.eq(45,86.92732683),new Jrb.eq(46,87.921952728),new Jrb.eq(47,88.919480562),new Jrb.eq(48,89.913936161),new Jrb.eq(49,90.911750754),new Jrb.eq(50,91.90681048),new Jrb.eq(51,92.906812213),new Jrb.eq(52,93.905087578),new Jrb.eq(53,94.905841487),new Jrb.eq(54,95.904678904),new Jrb.eq(55,96.906021033),new Jrb.eq(56,97.905407846),new Jrb.eq(57,98.907711598),new Jrb.eq(58,99.907477149),new Jrb.eq(59,100.910346543),new Jrb.eq(60,101.910297162),new Jrb.eq(61,102.913204596),new Jrb.eq(62,103.913758387),new Jrb.eq(63,104.916972087),new Jrb.eq(64,105.918134284),new Jrb.eq(65,106.921694724),new Jrb.eq(66,107.923973837),new Jrb.eq(67,108.92781),new Jrb.eq(68,109.92973),new Jrb.eq(69,110.93451),new Jrb.eq(70,111.93684),new Jrb.eq(71,112.94203)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(42,84.94894),new Jrb.eq(43,85.94288),new Jrb.eq(44,86.93653),new Jrb.eq(45,87.93283),new Jrb.eq(46,88.92754288),new Jrb.eq(47,89.92355583),new Jrb.eq(48,90.9184282),new Jrb.eq(49,91.915259655),new Jrb.eq(50,92.910248473),new Jrb.eq(51,93.909656309),new Jrb.eq(52,94.907656454),new Jrb.eq(53,95.907870803),new Jrb.eq(54,96.906364843),new Jrb.eq(55,97.907215692),new Jrb.eq(56,98.906254554),new Jrb.eq(57,99.907657594),new Jrb.eq(58,100.90731438),new Jrb.eq(59,101.909212938),new Jrb.eq(60,102.909178805),new Jrb.eq(61,103.911444898),new Jrb.eq(62,104.911658043),new Jrb.eq(63,105.914355408),new Jrb.eq(64,106.915081691),new Jrb.eq(65,107.918479973),new Jrb.eq(66,108.919980998),new Jrb.eq(67,109.92339),new Jrb.eq(68,110.92505),new Jrb.eq(69,111.92924),new Jrb.eq(70,112.93133),new Jrb.eq(71,113.93588),new Jrb.eq(72,114.93828)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(43,86.94918),new Jrb.eq(44,87.94042),new Jrb.eq(45,88.93611),new Jrb.eq(46,89.92978),new Jrb.eq(47,90.926377434),new Jrb.eq(48,91.92012),new Jrb.eq(49,92.917051523),new Jrb.eq(50,93.911359569),new Jrb.eq(51,94.910412729),new Jrb.eq(52,95.907597681),new Jrb.eq(53,96.907554546),new Jrb.eq(54,97.905287111),new Jrb.eq(55,98.905939307),new Jrb.eq(56,99.904219664),new Jrb.eq(57,100.905582219),new Jrb.eq(58,101.904349503),new Jrb.eq(59,102.906323677),new Jrb.eq(60,103.905430145),new Jrb.eq(61,104.907750341),new Jrb.eq(62,105.907326913),new Jrb.eq(63,106.909907207),new Jrb.eq(64,107.910192211),new Jrb.eq(65,108.913201565),new Jrb.eq(66,109.913966185),new Jrb.eq(67,110.91756),new Jrb.eq(68,111.918821673),new Jrb.eq(69,112.92254),new Jrb.eq(70,113.923891981),new Jrb.eq(71,114.92831),new Jrb.eq(72,115.93016),new Jrb.eq(73,116.93479),new Jrb.eq(74,117.93703)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(44,88.94938),new Jrb.eq(45,89.94287),new Jrb.eq(46,90.93655),new Jrb.eq(47,91.93198),new Jrb.eq(48,92.92574),new Jrb.eq(49,93.921698),new Jrb.eq(50,94.915898541),new Jrb.eq(51,95.914518212),new Jrb.eq(52,96.911336643),new Jrb.eq(53,97.910716431),new Jrb.eq(54,98.908132101),new Jrb.eq(55,99.90811663),new Jrb.eq(56,100.906163526),new Jrb.eq(57,101.906842845),new Jrb.eq(58,102.905504182),new Jrb.eq(59,103.906655315),new Jrb.eq(60,104.905692444),new Jrb.eq(61,105.907284615),new Jrb.eq(62,106.90675054),new Jrb.eq(63,107.908730768),new Jrb.eq(64,108.908735621),new Jrb.eq(65,109.910949525),new Jrb.eq(66,110.91166),new Jrb.eq(67,111.913969253),new Jrb.eq(68,112.91542),new Jrb.eq(69,113.91734336),new Jrb.eq(70,114.920124676),new Jrb.eq(71,115.922746643),new Jrb.eq(72,116.92535),new Jrb.eq(73,117.92943),new Jrb.eq(74,118.93136),new Jrb.eq(75,119.93578),new Jrb.eq(76,120.93808)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(45,90.94948),new Jrb.eq(46,91.94042),new Jrb.eq(47,92.93591),new Jrb.eq(48,93.92877),new Jrb.eq(49,94.92469),new Jrb.eq(50,95.91822194),new Jrb.eq(51,96.916478921),new Jrb.eq(52,97.912720751),new Jrb.eq(53,98.911767757),new Jrb.eq(54,99.908504596),new Jrb.eq(55,100.908289144),new Jrb.eq(56,101.905607716),new Jrb.eq(57,102.906087204),new Jrb.eq(58,103.904034912),new Jrb.eq(59,104.905084046),new Jrb.eq(60,105.903483087),new Jrb.eq(61,106.905128453),new Jrb.eq(62,107.903894451),new Jrb.eq(63,108.905953535),new Jrb.eq(64,109.905152385),new Jrb.eq(65,110.907643952),new Jrb.eq(66,111.907313277),new Jrb.eq(67,112.910151346),new Jrb.eq(68,113.910365322),new Jrb.eq(69,114.91368341),new Jrb.eq(70,115.914158288),new Jrb.eq(71,116.91784),new Jrb.eq(72,117.918983915),new Jrb.eq(73,118.92268),new Jrb.eq(74,119.92403),new Jrb.eq(75,120.92818),new Jrb.eq(76,121.9298),new Jrb.eq(77,122.93426)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(47,93.94278),new Jrb.eq(48,94.93548),new Jrb.eq(49,95.93068),new Jrb.eq(50,96.924),new Jrb.eq(51,97.921759995),new Jrb.eq(52,98.917597103),new Jrb.eq(53,99.916069387),new Jrb.eq(54,100.912802135),new Jrb.eq(55,101.911999996),new Jrb.eq(56,102.908972453),new Jrb.eq(57,103.908628228),new Jrb.eq(58,104.906528234),new Jrb.eq(59,105.906666431),new Jrb.eq(60,106.90509302),new Jrb.eq(61,107.905953705),new Jrb.eq(62,108.904755514),new Jrb.eq(63,109.90611046),new Jrb.eq(64,110.905294679),new Jrb.eq(65,111.907004132),new Jrb.eq(66,112.906565708),new Jrb.eq(67,113.908807907),new Jrb.eq(68,114.908762282),new Jrb.eq(69,115.911359558),new Jrb.eq(70,116.911684187),new Jrb.eq(71,117.914582383),new Jrb.eq(72,118.915666045),new Jrb.eq(73,119.918788609),new Jrb.eq(74,120.919851074),new Jrb.eq(75,121.92332),new Jrb.eq(76,122.9249),new Jrb.eq(77,123.92853),new Jrb.eq(78,124.93054),new Jrb.eq(79,125.9345),new Jrb.eq(80,126.93688)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(48,95.93977),new Jrb.eq(49,96.93494),new Jrb.eq(50,97.927579),new Jrb.eq(51,98.92501),new Jrb.eq(52,99.920230232),new Jrb.eq(53,100.918681442),new Jrb.eq(54,101.914777255),new Jrb.eq(55,102.913418952),new Jrb.eq(56,103.909848091),new Jrb.eq(57,104.909467818),new Jrb.eq(58,105.906458007),new Jrb.eq(59,106.906614232),new Jrb.eq(60,107.904183403),new Jrb.eq(61,108.904985569),new Jrb.eq(62,109.903005578),new Jrb.eq(63,110.904181628),new Jrb.eq(64,111.902757226),new Jrb.eq(65,112.904400947),new Jrb.eq(66,113.903358121),new Jrb.eq(67,114.905430553),new Jrb.eq(68,115.904755434),new Jrb.eq(69,116.907218242),new Jrb.eq(70,117.906914144),new Jrb.eq(71,118.909922582),new Jrb.eq(72,119.909851352),new Jrb.eq(73,120.91298039),new Jrb.eq(74,121.9135),new Jrb.eq(75,122.917003675),new Jrb.eq(76,123.917648302),new Jrb.eq(77,124.92124717),new Jrb.eq(78,125.922353996),new Jrb.eq(79,126.926434822),new Jrb.eq(80,127.927760617),new Jrb.eq(81,128.93226),new Jrb.eq(82,129.93398)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(49,97.94224),new Jrb.eq(50,98.93461),new Jrb.eq(51,99.931149033),new Jrb.eq(52,100.92656),new Jrb.eq(53,101.924707541),new Jrb.eq(54,102.919913896),new Jrb.eq(55,103.918338416),new Jrb.eq(56,104.914673434),new Jrb.eq(57,105.913461134),new Jrb.eq(58,106.910292195),new Jrb.eq(59,107.909719683),new Jrb.eq(60,108.907154078),new Jrb.eq(61,109.907168783),new Jrb.eq(62,110.905110677),new Jrb.eq(63,111.905533338),new Jrb.eq(64,112.904061223),new Jrb.eq(65,113.904916758),new Jrb.eq(66,114.903878328),new Jrb.eq(67,115.905259995),new Jrb.eq(68,116.904515731),new Jrb.eq(69,117.906354623),new Jrb.eq(70,118.905846334),new Jrb.eq(71,119.907961505),new Jrb.eq(72,120.907848847),new Jrb.eq(73,121.910277103),new Jrb.eq(74,122.910438951),new Jrb.eq(75,123.913175916),new Jrb.eq(76,124.913601387),new Jrb.eq(77,125.916464532),new Jrb.eq(78,126.917344048),new Jrb.eq(79,127.920170658),new Jrb.eq(80,128.921657958),new Jrb.eq(81,129.924854941),new Jrb.eq(82,130.926767408),new Jrb.eq(83,131.932919005),new Jrb.eq(84,132.93834),new Jrb.eq(85,133.94466)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(50,99.938954),new Jrb.eq(51,100.93606),new Jrb.eq(52,101.93049),new Jrb.eq(53,102.92813),new Jrb.eq(54,103.923185469),new Jrb.eq(55,104.921390409),new Jrb.eq(56,105.916880472),new Jrb.eq(57,106.915666702),new Jrb.eq(58,107.911965339),new Jrb.eq(59,108.911286879),new Jrb.eq(60,109.907852688),new Jrb.eq(61,110.907735404),new Jrb.eq(62,111.90482081),new Jrb.eq(63,112.905173373),new Jrb.eq(64,113.902781816),new Jrb.eq(65,114.903345973),new Jrb.eq(66,115.901744149),new Jrb.eq(67,116.902953765),new Jrb.eq(68,117.901606328),new Jrb.eq(69,118.90330888),new Jrb.eq(70,119.902196571),new Jrb.eq(71,120.904236867),new Jrb.eq(72,121.903440138),new Jrb.eq(73,122.905721901),new Jrb.eq(74,123.90527463),new Jrb.eq(75,124.907784924),new Jrb.eq(76,125.907653953),new Jrb.eq(77,126.91035098),new Jrb.eq(78,127.910534953),new Jrb.eq(79,128.913439976),new Jrb.eq(80,129.913852185),new Jrb.eq(81,130.916919144),new Jrb.eq(82,131.917744455),new Jrb.eq(83,132.923814085),new Jrb.eq(84,133.928463576),new Jrb.eq(85,134.93473),new Jrb.eq(86,135.93934),new Jrb.eq(87,136.94579)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(52,102.94012),new Jrb.eq(53,103.936287),new Jrb.eq(54,104.931528593),new Jrb.eq(55,105.928183134),new Jrb.eq(56,106.92415),new Jrb.eq(57,107.92216),new Jrb.eq(58,108.918136092),new Jrb.eq(59,109.917533911),new Jrb.eq(60,110.912534147),new Jrb.eq(61,111.91239464),new Jrb.eq(62,112.909377941),new Jrb.eq(63,113.909095876),new Jrb.eq(64,114.906598812),new Jrb.eq(65,115.906797235),new Jrb.eq(66,116.90483959),new Jrb.eq(67,117.905531885),new Jrb.eq(68,118.90394646),new Jrb.eq(69,119.905074315),new Jrb.eq(70,120.903818044),new Jrb.eq(71,121.905175415),new Jrb.eq(72,122.904215696),new Jrb.eq(73,123.905937525),new Jrb.eq(74,124.905247804),new Jrb.eq(75,125.907248153),new Jrb.eq(76,126.906914564),new Jrb.eq(77,127.90916733),new Jrb.eq(78,128.909150092),new Jrb.eq(79,129.911546459),new Jrb.eq(80,130.911946487),new Jrb.eq(81,131.914413247),new Jrb.eq(82,132.915236466),new Jrb.eq(83,133.920551554),new Jrb.eq(84,134.925167962),new Jrb.eq(85,135.93066),new Jrb.eq(86,136.93531),new Jrb.eq(87,137.94096),new Jrb.eq(88,138.94571)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(54,105.937702),new Jrb.eq(55,106.935036),new Jrb.eq(56,107.929486838),new Jrb.eq(57,108.927456483),new Jrb.eq(58,109.922407164),new Jrb.eq(59,110.921120589),new Jrb.eq(60,111.917061617),new Jrb.eq(61,112.915452551),new Jrb.eq(62,113.912498025),new Jrb.eq(63,114.911578627),new Jrb.eq(64,115.908420253),new Jrb.eq(65,116.90863418),new Jrb.eq(66,117.905825187),new Jrb.eq(67,118.90640811),new Jrb.eq(68,119.904019891),new Jrb.eq(69,120.904929815),new Jrb.eq(70,121.903047064),new Jrb.eq(71,122.904272951),new Jrb.eq(72,123.902819466),new Jrb.eq(73,124.904424718),new Jrb.eq(74,125.903305543),new Jrb.eq(75,126.90521729),new Jrb.eq(76,127.904461383),new Jrb.eq(77,128.906595593),new Jrb.eq(78,129.906222753),new Jrb.eq(79,130.90852188),new Jrb.eq(80,131.908523782),new Jrb.eq(81,132.910939068),new Jrb.eq(82,133.911540546),new Jrb.eq(83,134.916450782),new Jrb.eq(84,135.920103155),new Jrb.eq(85,136.925324769),new Jrb.eq(86,137.92922),new Jrb.eq(87,138.93473),new Jrb.eq(88,139.9387),new Jrb.eq(89,140.94439),new Jrb.eq(90,141.9485)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(55,107.943291),new Jrb.eq(56,108.938191658),new Jrb.eq(57,109.934634181),new Jrb.eq(58,110.930276),new Jrb.eq(59,111.92797),new Jrb.eq(60,112.923644245),new Jrb.eq(61,113.92185),new Jrb.eq(62,114.918272),new Jrb.eq(63,115.916735014),new Jrb.eq(64,116.913647692),new Jrb.eq(65,117.91337523),new Jrb.eq(66,118.910180837),new Jrb.eq(67,119.910047843),new Jrb.eq(68,120.907366063),new Jrb.eq(69,121.907592451),new Jrb.eq(70,122.905597944),new Jrb.eq(71,123.906211423),new Jrb.eq(72,124.90462415),new Jrb.eq(73,125.905619387),new Jrb.eq(74,126.90446842),new Jrb.eq(75,127.905805254),new Jrb.eq(76,128.904987487),new Jrb.eq(77,129.906674018),new Jrb.eq(78,130.906124168),new Jrb.eq(79,131.907994525),new Jrb.eq(80,132.907806465),new Jrb.eq(81,133.909876552),new Jrb.eq(82,134.91005031),new Jrb.eq(83,135.914655105),new Jrb.eq(84,136.917872653),new Jrb.eq(85,137.922383666),new Jrb.eq(86,138.926093402),new Jrb.eq(87,139.93121),new Jrb.eq(88,140.93483),new Jrb.eq(89,141.94018),new Jrb.eq(90,142.94407),new Jrb.eq(91,143.94961)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(56,109.944476),new Jrb.eq(57,110.941632),new Jrb.eq(58,111.93566535),new Jrb.eq(59,112.933382836),new Jrb.eq(60,113.928145),new Jrb.eq(61,114.926979032),new Jrb.eq(62,115.921394197),new Jrb.eq(63,116.920564355),new Jrb.eq(64,117.91657092),new Jrb.eq(65,118.915554295),new Jrb.eq(66,119.91215199),new Jrb.eq(67,120.911386497),new Jrb.eq(68,121.908548396),new Jrb.eq(69,122.908470748),new Jrb.eq(70,123.905895774),new Jrb.eq(71,124.906398236),new Jrb.eq(72,125.904268868),new Jrb.eq(73,126.905179581),new Jrb.eq(74,127.903530436),new Jrb.eq(75,128.904779458),new Jrb.eq(76,129.903507903),new Jrb.eq(77,130.90508192),new Jrb.eq(78,131.904154457),new Jrb.eq(79,132.90590566),new Jrb.eq(80,133.905394504),new Jrb.eq(81,134.907207499),new Jrb.eq(82,135.907219526),new Jrb.eq(83,136.911562939),new Jrb.eq(84,137.913988549),new Jrb.eq(85,138.918786859),new Jrb.eq(86,139.921635665),new Jrb.eq(87,140.926646282),new Jrb.eq(88,141.929702981),new Jrb.eq(89,142.93489),new Jrb.eq(90,143.93823),new Jrb.eq(91,144.94367),new Jrb.eq(92,145.9473),new Jrb.eq(93,146.95301)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(57,111.950331),new Jrb.eq(58,112.944535512),new Jrb.eq(59,113.940841319),new Jrb.eq(60,114.935939),new Jrb.eq(61,115.932914152),new Jrb.eq(62,116.928639484),new Jrb.eq(63,117.926554883),new Jrb.eq(64,118.922370879),new Jrb.eq(65,119.920678219),new Jrb.eq(66,120.917183637),new Jrb.eq(67,121.916121946),new Jrb.eq(68,122.912990168),new Jrb.eq(69,123.912245731),new Jrb.eq(70,124.909724871),new Jrb.eq(71,125.909447953),new Jrb.eq(72,126.9074176),new Jrb.eq(73,127.907747919),new Jrb.eq(74,128.906063369),new Jrb.eq(75,129.906706163),new Jrb.eq(76,130.905460232),new Jrb.eq(77,131.906429799),new Jrb.eq(78,132.90544687),new Jrb.eq(79,133.906713419),new Jrb.eq(80,134.905971903),new Jrb.eq(81,135.907305741),new Jrb.eq(82,136.907083505),new Jrb.eq(83,137.911010537),new Jrb.eq(84,138.913357921),new Jrb.eq(85,139.917277075),new Jrb.eq(86,140.920043984),new Jrb.eq(87,141.924292317),new Jrb.eq(88,142.927330292),new Jrb.eq(89,143.932027373),new Jrb.eq(90,144.935388226),new Jrb.eq(91,145.940162028),new Jrb.eq(92,146.943864435),new Jrb.eq(93,147.948899539),new Jrb.eq(94,148.95272),new Jrb.eq(95,149.95797),new Jrb.eq(96,150.962)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(58,113.950941),new Jrb.eq(59,114.94771),new Jrb.eq(60,115.94168),new Jrb.eq(61,116.937700229),new Jrb.eq(62,117.93344),new Jrb.eq(63,118.931051927),new Jrb.eq(64,119.926045941),new Jrb.eq(65,120.924485908),new Jrb.eq(66,121.92026),new Jrb.eq(67,122.91885),new Jrb.eq(68,123.915088437),new Jrb.eq(69,124.914620234),new Jrb.eq(70,125.911244146),new Jrb.eq(71,126.911121328),new Jrb.eq(72,127.90830887),new Jrb.eq(73,128.908673749),new Jrb.eq(74,129.906310478),new Jrb.eq(75,130.906930798),new Jrb.eq(76,131.905056152),new Jrb.eq(77,132.906002368),new Jrb.eq(78,133.904503347),new Jrb.eq(79,134.905682749),new Jrb.eq(80,135.904570109),new Jrb.eq(81,136.905821414),new Jrb.eq(82,137.905241273),new Jrb.eq(83,138.908835384),new Jrb.eq(84,139.910599485),new Jrb.eq(85,140.914406439),new Jrb.eq(86,141.916448175),new Jrb.eq(87,142.920617184),new Jrb.eq(88,143.922940468),new Jrb.eq(89,144.926923807),new Jrb.eq(90,145.930106645),new Jrb.eq(91,146.933992519),new Jrb.eq(92,147.937682377),new Jrb.eq(93,148.94246),new Jrb.eq(94,149.94562),new Jrb.eq(95,150.9507),new Jrb.eq(96,151.95416),new Jrb.eq(97,152.95961)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(60,116.95001),new Jrb.eq(61,117.94657),new Jrb.eq(62,118.94099),new Jrb.eq(63,119.93807),new Jrb.eq(64,120.93301),new Jrb.eq(65,121.93071),new Jrb.eq(66,122.92624),new Jrb.eq(67,123.92453),new Jrb.eq(68,124.92067),new Jrb.eq(69,125.91937),new Jrb.eq(70,126.91616),new Jrb.eq(71,127.91544794),new Jrb.eq(72,128.912667334),new Jrb.eq(73,129.91232),new Jrb.eq(74,130.910108489),new Jrb.eq(75,131.910110399),new Jrb.eq(76,132.908396372),new Jrb.eq(77,133.908489607),new Jrb.eq(78,134.906971003),new Jrb.eq(79,135.907651181),new Jrb.eq(80,136.906465656),new Jrb.eq(81,137.907106826),new Jrb.eq(82,138.90634816),new Jrb.eq(83,139.909472552),new Jrb.eq(84,140.910957016),new Jrb.eq(85,141.914074489),new Jrb.eq(86,142.916058646),new Jrb.eq(87,143.919591666),new Jrb.eq(88,144.92163837),new Jrb.eq(89,145.925700146),new Jrb.eq(90,146.927819639),new Jrb.eq(91,147.932191197),new Jrb.eq(92,148.93437),new Jrb.eq(93,149.93857),new Jrb.eq(94,150.94156),new Jrb.eq(95,151.94611),new Jrb.eq(96,152.94945),new Jrb.eq(97,153.9544),new Jrb.eq(98,154.95813)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(61,118.95276),new Jrb.eq(62,119.94664),new Jrb.eq(63,120.94367),new Jrb.eq(64,121.93801),new Jrb.eq(65,122.93551),new Jrb.eq(66,123.93052),new Jrb.eq(67,124.92854),new Jrb.eq(68,125.9241),new Jrb.eq(69,126.92275),new Jrb.eq(70,127.91887),new Jrb.eq(71,128.918679183),new Jrb.eq(72,129.914339361),new Jrb.eq(73,130.914424137),new Jrb.eq(74,131.91149),new Jrb.eq(75,132.91155),new Jrb.eq(76,133.909026379),new Jrb.eq(77,134.909145555),new Jrb.eq(78,135.907143574),new Jrb.eq(79,136.907777634),new Jrb.eq(80,137.905985574),new Jrb.eq(81,138.906646605),new Jrb.eq(82,139.905434035),new Jrb.eq(83,140.908271103),new Jrb.eq(84,141.909239733),new Jrb.eq(85,142.912381158),new Jrb.eq(86,143.913642686),new Jrb.eq(87,144.917227871),new Jrb.eq(88,145.918689722),new Jrb.eq(89,146.922510962),new Jrb.eq(90,147.924394738),new Jrb.eq(91,148.928289207),new Jrb.eq(92,149.930226399),new Jrb.eq(93,150.93404),new Jrb.eq(94,151.93638),new Jrb.eq(95,152.94058),new Jrb.eq(96,153.94332),new Jrb.eq(97,154.94804),new Jrb.eq(98,155.95126),new Jrb.eq(99,156.95634)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(62,120.955364),new Jrb.eq(63,121.95165),new Jrb.eq(64,122.94596),new Jrb.eq(65,123.94296),new Jrb.eq(66,124.93783),new Jrb.eq(67,125.93531),new Jrb.eq(68,126.93083),new Jrb.eq(69,127.9288),new Jrb.eq(70,128.92486),new Jrb.eq(71,129.92338),new Jrb.eq(72,130.920060245),new Jrb.eq(73,131.91912),new Jrb.eq(74,132.9162),new Jrb.eq(75,133.915672),new Jrb.eq(76,134.91313914),new Jrb.eq(77,135.912646935),new Jrb.eq(78,136.910678351),new Jrb.eq(79,137.910748891),new Jrb.eq(80,138.908932181),new Jrb.eq(81,139.909071204),new Jrb.eq(82,140.907647726),new Jrb.eq(83,141.910039865),new Jrb.eq(84,142.910812233),new Jrb.eq(85,143.913300595),new Jrb.eq(86,144.914506897),new Jrb.eq(87,145.917588016),new Jrb.eq(88,146.918979001),new Jrb.eq(89,147.922183237),new Jrb.eq(90,148.923791056),new Jrb.eq(91,149.926995031),new Jrb.eq(92,150.928227869),new Jrb.eq(93,151.9316),new Jrb.eq(94,152.93365),new Jrb.eq(95,153.93739),new Jrb.eq(96,154.93999),new Jrb.eq(97,155.94412),new Jrb.eq(98,156.94717),new Jrb.eq(99,157.95178),new Jrb.eq(100,158.95523)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(66,125.94307),new Jrb.eq(67,126.9405),new Jrb.eq(68,127.93539),new Jrb.eq(69,128.932385),new Jrb.eq(70,129.92878),new Jrb.eq(71,130.927102697),new Jrb.eq(72,131.92312),new Jrb.eq(73,132.92221),new Jrb.eq(74,133.918645),new Jrb.eq(75,134.91824),new Jrb.eq(76,135.915020542),new Jrb.eq(77,136.91463973),new Jrb.eq(78,137.91291745),new Jrb.eq(79,138.91192415),new Jrb.eq(80,139.909309824),new Jrb.eq(81,140.9096048),new Jrb.eq(82,141.907718643),new Jrb.eq(83,142.909809626),new Jrb.eq(84,143.910082629),new Jrb.eq(85,144.912568847),new Jrb.eq(86,145.913112139),new Jrb.eq(87,146.916095794),new Jrb.eq(88,147.916888516),new Jrb.eq(89,148.92014419),new Jrb.eq(90,149.920886563),new Jrb.eq(91,150.923824739),new Jrb.eq(92,151.924682428),new Jrb.eq(93,152.927694534),new Jrb.eq(94,153.929483295),new Jrb.eq(95,154.932629551),new Jrb.eq(96,155.9352),new Jrb.eq(97,156.93927),new Jrb.eq(98,157.94187),new Jrb.eq(99,158.94639),new Jrb.eq(100,159.94939),new Jrb.eq(101,160.95433)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(67,127.94826),new Jrb.eq(68,128.94316),new Jrb.eq(69,129.94045),new Jrb.eq(70,130.9358),new Jrb.eq(71,131.93375),new Jrb.eq(72,132.92972),new Jrb.eq(73,133.92849),new Jrb.eq(74,134.924617),new Jrb.eq(75,135.923447865),new Jrb.eq(76,136.920713),new Jrb.eq(77,137.920432261),new Jrb.eq(78,138.916759814),new Jrb.eq(79,139.915801649),new Jrb.eq(80,140.913606636),new Jrb.eq(81,141.912950738),new Jrb.eq(82,142.910927571),new Jrb.eq(83,143.912585768),new Jrb.eq(84,144.912743879),new Jrb.eq(85,145.914692165),new Jrb.eq(86,146.915133898),new Jrb.eq(87,147.917467786),new Jrb.eq(88,148.918329195),new Jrb.eq(89,149.920979477),new Jrb.eq(90,150.921202693),new Jrb.eq(91,151.923490557),new Jrb.eq(92,152.924113189),new Jrb.eq(93,153.926547019),new Jrb.eq(94,154.928097047),new Jrb.eq(95,155.931060357),new Jrb.eq(96,156.9332),new Jrb.eq(97,157.93669),new Jrb.eq(98,158.93913),new Jrb.eq(99,159.94299),new Jrb.eq(100,160.94586),new Jrb.eq(101,161.95029),new Jrb.eq(102,162.95352)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(68,129.94863),new Jrb.eq(69,130.94589),new Jrb.eq(70,131.94082),new Jrb.eq(71,132.93873),new Jrb.eq(72,133.93402),new Jrb.eq(73,134.93235),new Jrb.eq(74,135.9283),new Jrb.eq(75,136.927046709),new Jrb.eq(76,137.92354),new Jrb.eq(77,138.922302),new Jrb.eq(78,139.918991),new Jrb.eq(79,140.918468512),new Jrb.eq(80,141.915193274),new Jrb.eq(81,142.914623555),new Jrb.eq(82,143.91199473),new Jrb.eq(83,144.913405611),new Jrb.eq(84,145.91303676),new Jrb.eq(85,146.914893275),new Jrb.eq(86,147.914817914),new Jrb.eq(87,148.917179521),new Jrb.eq(88,149.917271454),new Jrb.eq(89,150.919928351),new Jrb.eq(90,151.919728244),new Jrb.eq(91,152.922093907),new Jrb.eq(92,153.922205303),new Jrb.eq(93,154.92463594),new Jrb.eq(94,155.925526236),new Jrb.eq(95,156.928354506),new Jrb.eq(96,157.929987938),new Jrb.eq(97,158.9332),new Jrb.eq(98,159.93514),new Jrb.eq(99,160.93883),new Jrb.eq(100,161.94122),new Jrb.eq(101,162.94536),new Jrb.eq(102,163.94828),new Jrb.eq(103,164.95298)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(69,131.95416),new Jrb.eq(70,132.9489),new Jrb.eq(71,133.94632),new Jrb.eq(72,134.94172),new Jrb.eq(73,135.9395),new Jrb.eq(74,136.93521),new Jrb.eq(75,137.93345),new Jrb.eq(76,138.92882915),new Jrb.eq(77,139.928083921),new Jrb.eq(78,140.924885867),new Jrb.eq(79,141.923400033),new Jrb.eq(80,142.920286634),new Jrb.eq(81,143.918774116),new Jrb.eq(82,144.916261285),new Jrb.eq(83,145.917199714),new Jrb.eq(84,146.916741206),new Jrb.eq(85,147.918153775),new Jrb.eq(86,148.917925922),new Jrb.eq(87,149.919698294),new Jrb.eq(88,150.919846022),new Jrb.eq(89,151.921740399),new Jrb.eq(90,152.921226219),new Jrb.eq(91,153.922975386),new Jrb.eq(92,154.922889429),new Jrb.eq(93,155.924750855),new Jrb.eq(94,156.925419435),new Jrb.eq(95,157.927841923),new Jrb.eq(96,158.9290845),new Jrb.eq(97,159.931460406),new Jrb.eq(98,160.93368),new Jrb.eq(99,161.93704),new Jrb.eq(100,162.93921),new Jrb.eq(101,163.94299),new Jrb.eq(102,164.94572),new Jrb.eq(103,165.94997),new Jrb.eq(104,166.95305)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(72,135.94707),new Jrb.eq(73,136.94465),new Jrb.eq(74,137.93997),new Jrb.eq(75,138.93808),new Jrb.eq(76,139.933236934),new Jrb.eq(77,140.93221),new Jrb.eq(78,141.927908919),new Jrb.eq(79,142.926738636),new Jrb.eq(80,143.923390357),new Jrb.eq(81,144.921687498),new Jrb.eq(82,145.918305344),new Jrb.eq(83,146.919089446),new Jrb.eq(84,147.918109771),new Jrb.eq(85,148.919336427),new Jrb.eq(86,149.918655455),new Jrb.eq(87,150.920344273),new Jrb.eq(88,151.919787882),new Jrb.eq(89,152.921746283),new Jrb.eq(90,153.920862271),new Jrb.eq(91,154.922618801),new Jrb.eq(92,155.922119552),new Jrb.eq(93,156.923956686),new Jrb.eq(94,157.924100533),new Jrb.eq(95,158.926385075),new Jrb.eq(96,159.927050616),new Jrb.eq(97,160.929665688),new Jrb.eq(98,161.930981211),new Jrb.eq(99,162.93399),new Jrb.eq(100,163.93586),new Jrb.eq(101,164.93938),new Jrb.eq(102,165.9416),new Jrb.eq(103,166.94557),new Jrb.eq(104,167.94836),new Jrb.eq(105,168.95287)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(73,137.95287),new Jrb.eq(74,138.94803),new Jrb.eq(75,139.945367985),new Jrb.eq(76,140.94116),new Jrb.eq(77,141.939073781),new Jrb.eq(78,142.93475),new Jrb.eq(79,143.93253),new Jrb.eq(80,144.92888),new Jrb.eq(81,145.927180629),new Jrb.eq(82,146.924037176),new Jrb.eq(83,147.924298636),new Jrb.eq(84,148.92324163),new Jrb.eq(85,149.923654158),new Jrb.eq(86,150.923098169),new Jrb.eq(87,151.924071324),new Jrb.eq(88,152.923430858),new Jrb.eq(89,153.924686236),new Jrb.eq(90,154.923500411),new Jrb.eq(91,155.924743749),new Jrb.eq(92,156.924021155),new Jrb.eq(93,157.92541026),new Jrb.eq(94,158.925343135),new Jrb.eq(95,159.927164021),new Jrb.eq(96,160.927566289),new Jrb.eq(97,161.929484803),new Jrb.eq(98,162.930643942),new Jrb.eq(99,163.933347253),new Jrb.eq(100,164.93488),new Jrb.eq(101,165.93805),new Jrb.eq(102,166.94005),new Jrb.eq(103,167.94364),new Jrb.eq(104,168.94622),new Jrb.eq(105,169.95025),new Jrb.eq(106,170.9533)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(74,139.95379),new Jrb.eq(75,140.95119),new Jrb.eq(76,141.946695946),new Jrb.eq(77,142.94383),new Jrb.eq(78,143.93907),new Jrb.eq(79,144.936717),new Jrb.eq(80,145.932720118),new Jrb.eq(81,146.930878496),new Jrb.eq(82,147.927177882),new Jrb.eq(83,148.927333981),new Jrb.eq(84,149.925579728),new Jrb.eq(85,150.92617963),new Jrb.eq(86,151.924713874),new Jrb.eq(87,152.925760865),new Jrb.eq(88,153.924422046),new Jrb.eq(89,154.92574895),new Jrb.eq(90,155.924278273),new Jrb.eq(91,156.925461256),new Jrb.eq(92,157.924404637),new Jrb.eq(93,158.92573566),new Jrb.eq(94,159.925193718),new Jrb.eq(95,160.926929595),new Jrb.eq(96,161.926794731),new Jrb.eq(97,162.928727532),new Jrb.eq(98,163.929171165),new Jrb.eq(99,164.931699828),new Jrb.eq(100,165.932803241),new Jrb.eq(101,166.935649025),new Jrb.eq(102,167.93723),new Jrb.eq(103,168.940303648),new Jrb.eq(104,169.94267),new Jrb.eq(105,170.94648),new Jrb.eq(106,171.94911),new Jrb.eq(107,172.95344)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(75,141.95986),new Jrb.eq(76,142.95469),new Jrb.eq(77,143.95164),new Jrb.eq(78,144.94688),new Jrb.eq(79,145.9441),new Jrb.eq(80,146.93984),new Jrb.eq(81,147.937269),new Jrb.eq(82,148.933789944),new Jrb.eq(83,149.932760914),new Jrb.eq(84,150.931680791),new Jrb.eq(85,151.931740598),new Jrb.eq(86,152.930194506),new Jrb.eq(87,153.930596268),new Jrb.eq(88,154.929079084),new Jrb.eq(89,155.929001869),new Jrb.eq(90,156.928188059),new Jrb.eq(91,157.92894573),new Jrb.eq(92,158.927708537),new Jrb.eq(93,159.928725679),new Jrb.eq(94,160.927851662),new Jrb.eq(95,161.92909242),new Jrb.eq(96,162.928730286),new Jrb.eq(97,163.930230577),new Jrb.eq(98,164.930319169),new Jrb.eq(99,165.932281267),new Jrb.eq(100,166.933126195),new Jrb.eq(101,167.935496424),new Jrb.eq(102,168.936868306),new Jrb.eq(103,169.939614951),new Jrb.eq(104,170.941461227),new Jrb.eq(105,171.94482),new Jrb.eq(106,172.94729),new Jrb.eq(107,173.95115),new Jrb.eq(108,174.95405)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(76,143.96059),new Jrb.eq(77,144.95746),new Jrb.eq(78,145.95212),new Jrb.eq(79,146.94931),new Jrb.eq(80,147.94444),new Jrb.eq(81,148.942780527),new Jrb.eq(82,149.937171034),new Jrb.eq(83,150.93746),new Jrb.eq(84,151.935078452),new Jrb.eq(85,152.935093125),new Jrb.eq(86,153.932777294),new Jrb.eq(87,154.933204273),new Jrb.eq(88,155.931015001),new Jrb.eq(89,156.931945517),new Jrb.eq(90,157.929912),new Jrb.eq(91,158.930680718),new Jrb.eq(92,159.929078924),new Jrb.eq(93,160.930001348),new Jrb.eq(94,161.928774923),new Jrb.eq(95,162.930029273),new Jrb.eq(96,163.929196996),new Jrb.eq(97,164.9307228),new Jrb.eq(98,165.93028997),new Jrb.eq(99,166.932045448),new Jrb.eq(100,167.932367781),new Jrb.eq(101,168.934588082),new Jrb.eq(102,169.935460334),new Jrb.eq(103,170.938025885),new Jrb.eq(104,171.939352149),new Jrb.eq(105,172.9424),new Jrb.eq(106,173.94434),new Jrb.eq(107,174.94793),new Jrb.eq(108,175.95029),new Jrb.eq(109,176.95437)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(77,145.966495),new Jrb.eq(78,146.961081),new Jrb.eq(79,147.95755),new Jrb.eq(80,148.95265),new Jrb.eq(81,149.94967),new Jrb.eq(82,150.944842),new Jrb.eq(83,151.9443),new Jrb.eq(84,152.942027631),new Jrb.eq(85,153.940832325),new Jrb.eq(86,154.939191562),new Jrb.eq(87,155.939006895),new Jrb.eq(88,156.936756069),new Jrb.eq(89,157.936996),new Jrb.eq(90,158.934808966),new Jrb.eq(91,159.935090772),new Jrb.eq(92,160.933398042),new Jrb.eq(93,161.933970147),new Jrb.eq(94,162.932647648),new Jrb.eq(95,163.933450972),new Jrb.eq(96,164.932432463),new Jrb.eq(97,165.933553133),new Jrb.eq(98,166.932848844),new Jrb.eq(99,167.934170375),new Jrb.eq(100,168.934211117),new Jrb.eq(101,169.935797877),new Jrb.eq(102,170.936425817),new Jrb.eq(103,171.938396118),new Jrb.eq(104,172.939600336),new Jrb.eq(105,173.942164618),new Jrb.eq(106,174.943832897),new Jrb.eq(107,175.946991412),new Jrb.eq(108,176.94904),new Jrb.eq(109,177.95264),new Jrb.eq(110,178.95534)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(78,147.96676),new Jrb.eq(79,148.96348),new Jrb.eq(80,149.95799),new Jrb.eq(81,150.954657965),new Jrb.eq(82,151.950167),new Jrb.eq(83,152.94921),new Jrb.eq(84,153.945651145),new Jrb.eq(85,154.945792),new Jrb.eq(86,155.942847109),new Jrb.eq(87,156.94265865),new Jrb.eq(88,157.939857897),new Jrb.eq(89,158.940153735),new Jrb.eq(90,159.93756),new Jrb.eq(91,160.937357719),new Jrb.eq(92,161.93575),new Jrb.eq(93,162.936265492),new Jrb.eq(94,163.93452),new Jrb.eq(95,164.935397592),new Jrb.eq(96,165.933879623),new Jrb.eq(97,166.934946862),new Jrb.eq(98,167.933894465),new Jrb.eq(99,168.93518712),new Jrb.eq(100,169.934758652),new Jrb.eq(101,170.936322297),new Jrb.eq(102,171.936377696),new Jrb.eq(103,172.938206756),new Jrb.eq(104,173.938858101),new Jrb.eq(105,174.941272494),new Jrb.eq(106,175.942568409),new Jrb.eq(107,176.945257126),new Jrb.eq(108,177.946643396),new Jrb.eq(109,178.95017),new Jrb.eq(110,179.95233),new Jrb.eq(111,180.95615)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(79,149.972668),new Jrb.eq(80,150.967147),new Jrb.eq(81,151.96361),new Jrb.eq(82,152.95869),new Jrb.eq(83,153.9571),new Jrb.eq(84,154.953641324),new Jrb.eq(85,155.952907),new Jrb.eq(86,156.950101536),new Jrb.eq(87,157.948577981),new Jrb.eq(88,158.946615113),new Jrb.eq(89,159.945383),new Jrb.eq(90,160.943047504),new Jrb.eq(91,161.943222),new Jrb.eq(92,162.941203796),new Jrb.eq(93,163.941215),new Jrb.eq(94,164.939605886),new Jrb.eq(95,165.939762646),new Jrb.eq(96,166.938307056),new Jrb.eq(97,167.938698576),new Jrb.eq(98,168.937648757),new Jrb.eq(99,169.93847219),new Jrb.eq(100,170.937909903),new Jrb.eq(101,171.939082239),new Jrb.eq(102,172.938926901),new Jrb.eq(103,173.940333522),new Jrb.eq(104,174.940767904),new Jrb.eq(105,175.942682399),new Jrb.eq(106,176.943754987),new Jrb.eq(107,177.945951366),new Jrb.eq(108,178.947324216),new Jrb.eq(109,179.949879968),new Jrb.eq(110,180.95197),new Jrb.eq(111,181.95521),new Jrb.eq(112,182.95757),new Jrb.eq(113,183.96117)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(82,153.96425),new Jrb.eq(83,154.96276),new Jrb.eq(84,155.959247),new Jrb.eq(85,156.958127),new Jrb.eq(86,157.95405528),new Jrb.eq(87,158.954003),new Jrb.eq(88,159.950713588),new Jrb.eq(89,160.950330852),new Jrb.eq(90,161.947202977),new Jrb.eq(91,162.947057),new Jrb.eq(92,163.944422),new Jrb.eq(93,164.94454),new Jrb.eq(94,165.94225),new Jrb.eq(95,166.9426),new Jrb.eq(96,167.94063),new Jrb.eq(97,168.941158567),new Jrb.eq(98,169.93965),new Jrb.eq(99,170.94049),new Jrb.eq(100,171.93945798),new Jrb.eq(101,172.94065),new Jrb.eq(102,173.940040159),new Jrb.eq(103,174.941502991),new Jrb.eq(104,175.941401828),new Jrb.eq(105,176.943220013),new Jrb.eq(106,177.943697732),new Jrb.eq(107,178.945815073),new Jrb.eq(108,179.94654876),new Jrb.eq(109,180.949099124),new Jrb.eq(110,181.950552893),new Jrb.eq(111,182.953531012),new Jrb.eq(112,183.95544788),new Jrb.eq(113,184.95878),new Jrb.eq(114,185.96092)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(83,155.971689),new Jrb.eq(84,156.968145),new Jrb.eq(85,157.966368),new Jrb.eq(86,158.96232309),new Jrb.eq(87,159.961358),new Jrb.eq(88,160.958372992),new Jrb.eq(89,161.956556553),new Jrb.eq(90,162.95431665),new Jrb.eq(91,163.95357),new Jrb.eq(92,164.950817),new Jrb.eq(93,165.95047),new Jrb.eq(94,166.948639),new Jrb.eq(95,167.947787),new Jrb.eq(96,168.94592),new Jrb.eq(97,169.94609),new Jrb.eq(98,170.94446),new Jrb.eq(99,171.944739818),new Jrb.eq(100,172.94459),new Jrb.eq(101,173.944167937),new Jrb.eq(102,174.94365),new Jrb.eq(103,175.944740551),new Jrb.eq(104,176.944471766),new Jrb.eq(105,177.945750349),new Jrb.eq(106,178.945934113),new Jrb.eq(107,179.947465655),new Jrb.eq(108,180.947996346),new Jrb.eq(109,181.950152414),new Jrb.eq(110,182.951373188),new Jrb.eq(111,183.954009331),new Jrb.eq(112,184.955559086),new Jrb.eq(113,185.9585501),new Jrb.eq(114,186.96041),new Jrb.eq(115,187.96371)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(84,157.973939),new Jrb.eq(85,158.97228),new Jrb.eq(86,159.968369),new Jrb.eq(87,160.967089),new Jrb.eq(88,161.962750303),new Jrb.eq(89,162.962532),new Jrb.eq(90,163.95898381),new Jrb.eq(91,164.958335962),new Jrb.eq(92,165.955019896),new Jrb.eq(93,166.954672),new Jrb.eq(94,167.951863),new Jrb.eq(95,168.951759),new Jrb.eq(96,169.948473988),new Jrb.eq(97,170.94946),new Jrb.eq(98,171.948228837),new Jrb.eq(99,172.948884),new Jrb.eq(100,173.94616),new Jrb.eq(101,174.94677),new Jrb.eq(102,175.94559),new Jrb.eq(103,176.94662),new Jrb.eq(104,177.945848364),new Jrb.eq(105,178.947071733),new Jrb.eq(106,179.946705734),new Jrb.eq(107,180.948198054),new Jrb.eq(108,181.948205519),new Jrb.eq(109,182.950224458),new Jrb.eq(110,183.950932553),new Jrb.eq(111,184.953420586),new Jrb.eq(112,185.954362204),new Jrb.eq(113,186.957158365),new Jrb.eq(114,187.958486954),new Jrb.eq(115,188.96191222),new Jrb.eq(116,189.963179541)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(85,159.981485),new Jrb.eq(86,160.977661),new Jrb.eq(87,161.975707),new Jrb.eq(88,162.971375872),new Jrb.eq(89,163.970319),new Jrb.eq(90,164.967050268),new Jrb.eq(91,165.965211372),new Jrb.eq(92,166.962564),new Jrb.eq(93,167.961609),new Jrb.eq(94,168.95883),new Jrb.eq(95,169.958163),new Jrb.eq(96,170.955547),new Jrb.eq(97,171.955285),new Jrb.eq(98,172.953062),new Jrb.eq(99,173.952114),new Jrb.eq(100,174.951393),new Jrb.eq(101,175.95157),new Jrb.eq(102,176.95027),new Jrb.eq(103,177.950851081),new Jrb.eq(104,178.949981038),new Jrb.eq(105,179.95078768),new Jrb.eq(106,180.950064596),new Jrb.eq(107,181.951211444),new Jrb.eq(108,182.950821349),new Jrb.eq(109,183.952524289),new Jrb.eq(110,184.952955747),new Jrb.eq(111,185.954986529),new Jrb.eq(112,186.955750787),new Jrb.eq(113,187.958112287),new Jrb.eq(114,188.959228359),new Jrb.eq(115,189.961816139),new Jrb.eq(116,190.963123592),new Jrb.eq(117,191.96596)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(86,161.983819),new Jrb.eq(87,162.982048),new Jrb.eq(88,163.977927),new Jrb.eq(89,164.976475),new Jrb.eq(90,165.971934911),new Jrb.eq(91,166.971554),new Jrb.eq(92,167.967832911),new Jrb.eq(93,168.967076205),new Jrb.eq(94,169.963569716),new Jrb.eq(95,170.96304),new Jrb.eq(96,171.960078),new Jrb.eq(97,172.959791),new Jrb.eq(98,173.956307704),new Jrb.eq(99,174.95708),new Jrb.eq(100,175.953757941),new Jrb.eq(101,176.955045),new Jrb.eq(102,177.953348225),new Jrb.eq(103,178.953951),new Jrb.eq(104,179.952308241),new Jrb.eq(105,180.953274494),new Jrb.eq(106,181.952186222),new Jrb.eq(107,182.95311),new Jrb.eq(108,183.952490808),new Jrb.eq(109,184.954043023),new Jrb.eq(110,185.953838355),new Jrb.eq(111,186.955747928),new Jrb.eq(112,187.955835993),new Jrb.eq(113,188.958144866),new Jrb.eq(114,189.95844521),new Jrb.eq(115,190.960927951),new Jrb.eq(116,191.961479047),new Jrb.eq(117,192.964148083),new Jrb.eq(118,193.965179314),new Jrb.eq(119,194.968123889),new Jrb.eq(120,195.96962255)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(88,164.98758),new Jrb.eq(89,165.985506),new Jrb.eq(90,166.980951577),new Jrb.eq(91,167.979966),new Jrb.eq(92,168.976390868),new Jrb.eq(93,169.974441697),new Jrb.eq(94,170.971779),new Jrb.eq(95,171.970643),new Jrb.eq(96,172.967707),new Jrb.eq(97,173.966804),new Jrb.eq(98,174.964279),new Jrb.eq(99,175.963511),new Jrb.eq(100,176.96117),new Jrb.eq(101,177.960084944),new Jrb.eq(102,178.95915),new Jrb.eq(103,179.958555615),new Jrb.eq(104,180.957642156),new Jrb.eq(105,181.958127689),new Jrb.eq(106,182.956814),new Jrb.eq(107,183.957388318),new Jrb.eq(108,184.95659),new Jrb.eq(109,185.957951104),new Jrb.eq(110,186.95736083),new Jrb.eq(111,187.958851962),new Jrb.eq(112,188.958716473),new Jrb.eq(113,189.960592299),new Jrb.eq(114,190.960591191),new Jrb.eq(115,191.962602198),new Jrb.eq(116,192.9629237),new Jrb.eq(117,193.96507561),new Jrb.eq(118,194.9659768),new Jrb.eq(119,195.968379906),new Jrb.eq(120,196.969636496),new Jrb.eq(121,197.97228),new Jrb.eq(122,198.973787159)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(90,167.988035),new Jrb.eq(91,168.986421),new Jrb.eq(92,169.981734918),new Jrb.eq(93,170.981251),new Jrb.eq(94,171.977376138),new Jrb.eq(95,172.976499642),new Jrb.eq(96,173.972811276),new Jrb.eq(97,174.972276),new Jrb.eq(98,175.969),new Jrb.eq(99,176.968453),new Jrb.eq(100,177.964894223),new Jrb.eq(101,178.965475),new Jrb.eq(102,179.962023729),new Jrb.eq(103,180.963177),new Jrb.eq(104,181.961267637),new Jrb.eq(105,182.961729),new Jrb.eq(106,183.959851685),new Jrb.eq(107,184.960753782),new Jrb.eq(108,185.959432346),new Jrb.eq(109,186.960697),new Jrb.eq(110,187.959395697),new Jrb.eq(111,188.9608319),new Jrb.eq(112,189.959930073),new Jrb.eq(113,190.961684653),new Jrb.eq(114,191.961035158),new Jrb.eq(115,192.962984504),new Jrb.eq(116,193.962663581),new Jrb.eq(117,194.964774449),new Jrb.eq(118,195.964934884),new Jrb.eq(119,196.967323401),new Jrb.eq(120,197.967876009),new Jrb.eq(121,198.970576213),new Jrb.eq(122,199.971423885),new Jrb.eq(123,200.974496467),new Jrb.eq(124,201.97574)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(92,170.991183),new Jrb.eq(93,171.990109),new Jrb.eq(94,172.986398138),new Jrb.eq(95,173.984325861),new Jrb.eq(96,174.981552),new Jrb.eq(97,175.980269),new Jrb.eq(98,176.977215),new Jrb.eq(99,177.975975),new Jrb.eq(100,178.973412),new Jrb.eq(101,179.972396),new Jrb.eq(102,180.969948),new Jrb.eq(103,181.968621416),new Jrb.eq(104,182.96762),new Jrb.eq(105,183.966776046),new Jrb.eq(106,184.965806956),new Jrb.eq(107,185.965997671),new Jrb.eq(108,186.964562),new Jrb.eq(109,187.965321662),new Jrb.eq(110,188.9642243),new Jrb.eq(111,189.964698757),new Jrb.eq(112,190.963649239),new Jrb.eq(113,191.964810107),new Jrb.eq(114,192.964131745),new Jrb.eq(115,193.96533889),new Jrb.eq(116,194.965017928),new Jrb.eq(117,195.966551315),new Jrb.eq(118,196.966551609),new Jrb.eq(119,197.968225244),new Jrb.eq(120,198.968748016),new Jrb.eq(121,199.970717886),new Jrb.eq(122,200.971640839),new Jrb.eq(123,201.973788431),new Jrb.eq(124,202.975137256),new Jrb.eq(125,203.977705),new Jrb.eq(126,204.97961)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(95,174.991411),new Jrb.eq(96,175.987413248),new Jrb.eq(97,176.986336874),new Jrb.eq(98,177.982476325),new Jrb.eq(99,178.981783),new Jrb.eq(100,179.978322),new Jrb.eq(101,180.977806),new Jrb.eq(102,181.97393546),new Jrb.eq(103,182.974561),new Jrb.eq(104,183.970705219),new Jrb.eq(105,184.971983),new Jrb.eq(106,185.969460021),new Jrb.eq(107,186.969785),new Jrb.eq(108,187.967511693),new Jrb.eq(109,188.968733187),new Jrb.eq(110,189.966958568),new Jrb.eq(111,190.96706311),new Jrb.eq(112,191.965921572),new Jrb.eq(113,192.966644169),new Jrb.eq(114,193.965381832),new Jrb.eq(115,194.966638981),new Jrb.eq(116,195.965814846),new Jrb.eq(117,196.967195333),new Jrb.eq(118,197.96675183),new Jrb.eq(119,198.968262489),new Jrb.eq(120,199.968308726),new Jrb.eq(121,200.970285275),new Jrb.eq(122,201.970625604),new Jrb.eq(123,202.972857096),new Jrb.eq(124,203.97347564),new Jrb.eq(125,204.976056104),new Jrb.eq(126,205.977498672),new Jrb.eq(127,206.982577025),new Jrb.eq(128,207.98594)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(96,176.996881),new Jrb.eq(97,177.994637),new Jrb.eq(98,178.991466),new Jrb.eq(99,179.990194),new Jrb.eq(100,180.986904),new Jrb.eq(101,181.98561),new Jrb.eq(102,182.982697),new Jrb.eq(103,183.98176),new Jrb.eq(104,184.9791),new Jrb.eq(105,185.977549881),new Jrb.eq(106,186.97617),new Jrb.eq(107,187.97592),new Jrb.eq(108,188.974290451),new Jrb.eq(109,189.974473379),new Jrb.eq(110,190.972261952),new Jrb.eq(111,191.972770785),new Jrb.eq(112,192.970548),new Jrb.eq(113,193.971053),new Jrb.eq(114,194.96965),new Jrb.eq(115,195.970515),new Jrb.eq(116,196.9695362),new Jrb.eq(117,197.970466294),new Jrb.eq(118,198.969813837),new Jrb.eq(119,199.970945394),new Jrb.eq(120,200.97080377),new Jrb.eq(121,201.972090569),new Jrb.eq(122,202.972329088),new Jrb.eq(123,203.973848646),new Jrb.eq(124,204.97441227),new Jrb.eq(125,205.976095321),new Jrb.eq(126,206.977407908),new Jrb.eq(127,207.982004653),new Jrb.eq(128,208.985349125),new Jrb.eq(129,209.990065574)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(99,180.996714),new Jrb.eq(100,181.992676101),new Jrb.eq(101,182.99193),new Jrb.eq(102,183.988198),new Jrb.eq(103,184.98758),new Jrb.eq(104,185.983485388),new Jrb.eq(105,186.98403),new Jrb.eq(106,187.979869108),new Jrb.eq(107,188.98088),new Jrb.eq(108,189.978180008),new Jrb.eq(109,190.9782),new Jrb.eq(110,191.975719811),new Jrb.eq(111,192.97608),new Jrb.eq(112,193.974648056),new Jrb.eq(113,194.975920279),new Jrb.eq(114,195.97271),new Jrb.eq(115,196.97338),new Jrb.eq(116,197.97198),new Jrb.eq(117,198.972909384),new Jrb.eq(118,199.97181556),new Jrb.eq(119,200.972846589),new Jrb.eq(120,201.972143786),new Jrb.eq(121,202.973375491),new Jrb.eq(122,203.973028761),new Jrb.eq(123,204.974467112),new Jrb.eq(124,205.974449002),new Jrb.eq(125,206.975880605),new Jrb.eq(126,207.97663585),new Jrb.eq(127,208.981074801),new Jrb.eq(128,209.984173129),new Jrb.eq(129,210.988731474),new Jrb.eq(130,211.991887495),new Jrb.eq(131,212.9965),new Jrb.eq(132,213.999798147)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(102,184.997708),new Jrb.eq(103,185.99648),new Jrb.eq(104,186.993458),new Jrb.eq(105,187.992173),new Jrb.eq(106,188.989505),new Jrb.eq(107,189.987520007),new Jrb.eq(108,190.986053),new Jrb.eq(109,191.985368),new Jrb.eq(110,192.983662229),new Jrb.eq(111,193.983430186),new Jrb.eq(112,194.98112697),new Jrb.eq(113,195.981236107),new Jrb.eq(114,196.978934287),new Jrb.eq(115,197.979024396),new Jrb.eq(116,198.977576953),new Jrb.eq(117,199.978141983),new Jrb.eq(118,200.976970721),new Jrb.eq(119,201.977674504),new Jrb.eq(120,202.976868118),new Jrb.eq(121,203.977805161),new Jrb.eq(122,204.977374688),new Jrb.eq(123,205.978482854),new Jrb.eq(124,206.978455217),new Jrb.eq(125,207.979726699),new Jrb.eq(126,208.980383241),new Jrb.eq(127,209.984104944),new Jrb.eq(128,210.987258139),new Jrb.eq(129,211.991271542),new Jrb.eq(130,212.994374836),new Jrb.eq(131,213.998698664),new Jrb.eq(132,215.001832349),new Jrb.eq(133,216.006199)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(106,189.994293888),new Jrb.eq(107,190.994653),new Jrb.eq(108,191.99033039),new Jrb.eq(109,192.991102),new Jrb.eq(110,193.988284107),new Jrb.eq(111,194.988045),new Jrb.eq(112,195.985469432),new Jrb.eq(113,196.985567),new Jrb.eq(114,197.984024384),new Jrb.eq(115,198.985044507),new Jrb.eq(116,199.981735),new Jrb.eq(117,200.982209),new Jrb.eq(118,201.980704),new Jrb.eq(119,202.981412863),new Jrb.eq(120,203.980307113),new Jrb.eq(121,204.981165396),new Jrb.eq(122,205.980465241),new Jrb.eq(123,206.981578228),new Jrb.eq(124,207.981231059),new Jrb.eq(125,208.982415788),new Jrb.eq(126,209.982857396),new Jrb.eq(127,210.986636869),new Jrb.eq(128,211.988851755),new Jrb.eq(129,212.992842522),new Jrb.eq(130,213.995185949),new Jrb.eq(131,214.999414609),new Jrb.eq(132,216.001905198),new Jrb.eq(133,217.006253),new Jrb.eq(134,218.008965773)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(108,193.000188),new Jrb.eq(109,193.997973),new Jrb.eq(110,194.996554),new Jrb.eq(111,195.995702),new Jrb.eq(112,196.993891293),new Jrb.eq(113,197.99343368),new Jrb.eq(114,198.991008569),new Jrb.eq(115,199.990920883),new Jrb.eq(116,200.988486908),new Jrb.eq(117,201.988448629),new Jrb.eq(118,202.986847216),new Jrb.eq(119,203.987261559),new Jrb.eq(120,204.986036352),new Jrb.eq(121,205.986599242),new Jrb.eq(122,206.985775861),new Jrb.eq(123,207.986582508),new Jrb.eq(124,208.986158678),new Jrb.eq(125,209.987131308),new Jrb.eq(126,210.987480806),new Jrb.eq(127,211.990734657),new Jrb.eq(128,212.99292115),new Jrb.eq(129,213.996356412),new Jrb.eq(130,214.998641245),new Jrb.eq(131,216.002408839),new Jrb.eq(132,217.004709619),new Jrb.eq(133,218.008681458),new Jrb.eq(134,219.011296478),new Jrb.eq(135,220.015301),new Jrb.eq(136,221.01814),new Jrb.eq(137,222.02233),new Jrb.eq(138,223.02534)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(110,196.001117268),new Jrb.eq(111,197.001661),new Jrb.eq(112,197.998779978),new Jrb.eq(113,198.998309),new Jrb.eq(114,199.995634148),new Jrb.eq(115,200.995535),new Jrb.eq(116,201.993899382),new Jrb.eq(117,202.994765192),new Jrb.eq(118,203.991365),new Jrb.eq(119,204.991668),new Jrb.eq(120,205.99016),new Jrb.eq(121,206.990726826),new Jrb.eq(122,207.989631237),new Jrb.eq(123,208.990376634),new Jrb.eq(124,209.989679862),new Jrb.eq(125,210.99058541),new Jrb.eq(126,211.990688899),new Jrb.eq(127,212.993868354),new Jrb.eq(128,213.995346275),new Jrb.eq(129,214.998729195),new Jrb.eq(130,216.000258153),new Jrb.eq(131,217.003914555),new Jrb.eq(132,218.005586315),new Jrb.eq(133,219.009474831),new Jrb.eq(134,220.011384149),new Jrb.eq(135,221.015455),new Jrb.eq(136,222.017570472),new Jrb.eq(137,223.02179),new Jrb.eq(138,224.02409),new Jrb.eq(139,225.02844),new Jrb.eq(140,226.03089),new Jrb.eq(141,227.035407),new Jrb.eq(142,228.038084)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(113,200.006499),new Jrb.eq(114,201.00458692),new Jrb.eq(115,202.00396885),new Jrb.eq(116,203.001423829),new Jrb.eq(117,204.001221209),new Jrb.eq(118,204.998663961),new Jrb.eq(119,205.998486886),new Jrb.eq(120,206.996859385),new Jrb.eq(121,207.997133849),new Jrb.eq(122,208.995915421),new Jrb.eq(123,209.996398327),new Jrb.eq(124,210.995529332),new Jrb.eq(125,211.996194988),new Jrb.eq(126,212.996174845),new Jrb.eq(127,213.99895474),new Jrb.eq(128,215.000326029),new Jrb.eq(129,216.003187873),new Jrb.eq(130,217.004616452),new Jrb.eq(131,218.007563326),new Jrb.eq(132,219.009240843),new Jrb.eq(133,220.012312978),new Jrb.eq(134,221.014245654),new Jrb.eq(135,222.017543957),new Jrb.eq(136,223.019730712),new Jrb.eq(137,224.023235513),new Jrb.eq(138,225.025606914),new Jrb.eq(139,226.029343423),new Jrb.eq(140,227.031833167),new Jrb.eq(141,228.034776087),new Jrb.eq(142,229.038426),new Jrb.eq(143,230.04251),new Jrb.eq(144,231.045407),new Jrb.eq(145,232.049654)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(115,203.00921),new Jrb.eq(116,204.006434513),new Jrb.eq(117,205.006187),new Jrb.eq(118,206.004463814),new Jrb.eq(119,207.005176607),new Jrb.eq(120,208.001776),new Jrb.eq(121,209.001944),new Jrb.eq(122,210.000446),new Jrb.eq(123,211.000893996),new Jrb.eq(124,211.999783492),new Jrb.eq(125,213.000345847),new Jrb.eq(126,214.000091141),new Jrb.eq(127,215.002704195),new Jrb.eq(128,216.003518402),new Jrb.eq(129,217.00630601),new Jrb.eq(130,218.007123948),new Jrb.eq(131,219.010068787),new Jrb.eq(132,220.011014669),new Jrb.eq(133,221.013907762),new Jrb.eq(134,222.01536182),new Jrb.eq(135,223.01849714),new Jrb.eq(136,224.020202004),new Jrb.eq(137,225.023604463),new Jrb.eq(138,226.025402555),new Jrb.eq(139,227.029170677),new Jrb.eq(140,228.031064101),new Jrb.eq(141,229.034820309),new Jrb.eq(142,230.037084774),new Jrb.eq(143,231.04122),new Jrb.eq(144,232.043693),new Jrb.eq(145,233.047995),new Jrb.eq(146,234.050547)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(118,207.012469754),new Jrb.eq(119,208.012112949),new Jrb.eq(120,209.009568736),new Jrb.eq(121,210.009256802),new Jrb.eq(122,211.007648196),new Jrb.eq(123,212.007811441),new Jrb.eq(124,213.006573689),new Jrb.eq(125,214.006893072),new Jrb.eq(126,215.006450832),new Jrb.eq(127,216.008721268),new Jrb.eq(128,217.009332676),new Jrb.eq(129,218.011625045),new Jrb.eq(130,219.012404918),new Jrb.eq(131,220.014752105),new Jrb.eq(132,221.015575746),new Jrb.eq(133,222.017828852),new Jrb.eq(134,223.01912603),new Jrb.eq(135,224.021708435),new Jrb.eq(136,225.023220576),new Jrb.eq(137,226.026089848),new Jrb.eq(138,227.027746979),new Jrb.eq(139,228.031014825),new Jrb.eq(140,229.032930871),new Jrb.eq(141,230.036025144),new Jrb.eq(142,231.038551503),new Jrb.eq(143,232.042022474),new Jrb.eq(144,233.04455),new Jrb.eq(145,234.04842),new Jrb.eq(146,235.051102),new Jrb.eq(147,236.055178)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(120,210.015711883),new Jrb.eq(121,211.016306912),new Jrb.eq(122,212.012916),new Jrb.eq(123,213.012962),new Jrb.eq(124,214.011451),new Jrb.eq(125,215.011726597),new Jrb.eq(126,216.011050963),new Jrb.eq(127,217.013066169),new Jrb.eq(128,218.013267744),new Jrb.eq(129,219.015521253),new Jrb.eq(130,220.015733126),new Jrb.eq(131,221.018171499),new Jrb.eq(132,222.018454131),new Jrb.eq(133,223.020795153),new Jrb.eq(134,224.02145925),new Jrb.eq(135,225.023941441),new Jrb.eq(136,226.024890681),new Jrb.eq(137,227.027698859),new Jrb.eq(138,228.028731348),new Jrb.eq(139,229.03175534),new Jrb.eq(140,230.033126574),new Jrb.eq(141,231.03629706),new Jrb.eq(142,232.03805036),new Jrb.eq(143,233.041576923),new Jrb.eq(144,234.043595497),new Jrb.eq(145,235.04750442),new Jrb.eq(146,236.04971),new Jrb.eq(147,237.053894),new Jrb.eq(148,238.056243)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(122,213.021183209),new Jrb.eq(123,214.02073923),new Jrb.eq(124,215.019097612),new Jrb.eq(125,216.019109649),new Jrb.eq(126,217.018288571),new Jrb.eq(127,218.020007906),new Jrb.eq(128,219.019880348),new Jrb.eq(129,220.021876493),new Jrb.eq(130,221.021863742),new Jrb.eq(131,222.023726),new Jrb.eq(132,223.023963748),new Jrb.eq(133,224.025614854),new Jrb.eq(134,225.026115172),new Jrb.eq(135,226.02793275),new Jrb.eq(136,227.028793151),new Jrb.eq(137,228.031036942),new Jrb.eq(138,229.032088601),new Jrb.eq(139,230.034532562),new Jrb.eq(140,231.035878898),new Jrb.eq(141,232.03858172),new Jrb.eq(142,233.040240235),new Jrb.eq(143,234.043302325),new Jrb.eq(144,235.045436759),new Jrb.eq(145,236.048675176),new Jrb.eq(146,237.05113943),new Jrb.eq(147,238.054497046),new Jrb.eq(148,239.05713),new Jrb.eq(149,240.06098)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(126,218.023487),new Jrb.eq(127,219.024915423),new Jrb.eq(128,220.024712),new Jrb.eq(129,221.026351),new Jrb.eq(130,222.02607),new Jrb.eq(131,223.027722956),new Jrb.eq(132,224.027590139),new Jrb.eq(133,225.029384369),new Jrb.eq(134,226.02933975),new Jrb.eq(135,227.031140069),new Jrb.eq(136,228.031366357),new Jrb.eq(137,229.033496137),new Jrb.eq(138,230.033927392),new Jrb.eq(139,231.036289158),new Jrb.eq(140,232.03714628),new Jrb.eq(141,233.039628196),new Jrb.eq(142,234.040945606),new Jrb.eq(143,235.043923062),new Jrb.eq(144,236.045561897),new Jrb.eq(145,237.048723955),new Jrb.eq(146,238.050782583),new Jrb.eq(147,239.054287777),new Jrb.eq(148,240.056585734),new Jrb.eq(149,241.06033),new Jrb.eq(150,242.062925)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(132,225.033899689),new Jrb.eq(133,226.035129),new Jrb.eq(134,227.034958261),new Jrb.eq(135,228.03618),new Jrb.eq(136,229.036246866),new Jrb.eq(137,230.037812591),new Jrb.eq(138,231.038233161),new Jrb.eq(139,232.040099),new Jrb.eq(140,233.04073235),new Jrb.eq(141,234.042888556),new Jrb.eq(142,235.044055876),new Jrb.eq(143,236.046559724),new Jrb.eq(144,237.048167253),new Jrb.eq(145,238.050940464),new Jrb.eq(146,239.052931399),new Jrb.eq(147,240.056168828),new Jrb.eq(148,241.058246266),new Jrb.eq(149,242.061635),new Jrb.eq(150,243.064273),new Jrb.eq(151,244.06785)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(134,228.038727686),new Jrb.eq(135,229.040138934),new Jrb.eq(136,230.039645603),new Jrb.eq(137,231.041258),new Jrb.eq(138,232.041179445),new Jrb.eq(139,233.04298757),new Jrb.eq(140,234.043304681),new Jrb.eq(141,235.0452815),new Jrb.eq(142,236.046048088),new Jrb.eq(143,237.048403774),new Jrb.eq(144,238.0495534),new Jrb.eq(145,239.052156519),new Jrb.eq(146,240.05380746),new Jrb.eq(147,241.056845291),new Jrb.eq(148,242.058736847),new Jrb.eq(149,243.061997013),new Jrb.eq(150,244.06419765),new Jrb.eq(151,245.067738657),new Jrb.eq(152,246.070198429),new Jrb.eq(153,247.07407)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(136,231.04556),new Jrb.eq(137,232.04659),new Jrb.eq(138,233.046472),new Jrb.eq(139,234.047794),new Jrb.eq(140,235.048029),new Jrb.eq(141,236.049569),new Jrb.eq(142,237.049970748),new Jrb.eq(143,238.051977839),new Jrb.eq(144,239.053018481),new Jrb.eq(145,240.055287826),new Jrb.eq(146,241.056822944),new Jrb.eq(147,242.059543039),new Jrb.eq(148,243.061372686),new Jrb.eq(149,244.064279429),new Jrb.eq(150,245.066445398),new Jrb.eq(151,246.069768438),new Jrb.eq(152,247.072086),new Jrb.eq(153,248.075745),new Jrb.eq(154,249.07848)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(137,233.0508),new Jrb.eq(138,234.05024),new Jrb.eq(139,235.051591),new Jrb.eq(140,236.051405),new Jrb.eq(141,237.052891),new Jrb.eq(142,238.053016298),new Jrb.eq(143,239.054951),new Jrb.eq(144,240.055519046),new Jrb.eq(145,241.057646736),new Jrb.eq(146,242.058829326),new Jrb.eq(147,243.061382249),new Jrb.eq(148,244.062746349),new Jrb.eq(149,245.065485586),new Jrb.eq(150,246.067217551),new Jrb.eq(151,247.070346811),new Jrb.eq(152,248.072342247),new Jrb.eq(153,249.075947062),new Jrb.eq(154,250.078350687),new Jrb.eq(155,251.082277873),new Jrb.eq(156,252.08487)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(138,235.05658),new Jrb.eq(139,236.05733),new Jrb.eq(140,237.057127),new Jrb.eq(141,238.058266),new Jrb.eq(142,239.058362),new Jrb.eq(143,240.059749),new Jrb.eq(144,241.060223),new Jrb.eq(145,242.06205),new Jrb.eq(146,243.06300157),new Jrb.eq(147,244.065167882),new Jrb.eq(148,245.066355386),new Jrb.eq(149,246.068666836),new Jrb.eq(150,247.070298533),new Jrb.eq(151,248.07308),new Jrb.eq(152,249.074979937),new Jrb.eq(153,250.078310529),new Jrb.eq(154,251.08075344),new Jrb.eq(155,252.084303),new Jrb.eq(156,253.08688),new Jrb.eq(157,254.0906)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(139,237.06207),new Jrb.eq(140,238.06141),new Jrb.eq(141,239.062579),new Jrb.eq(142,240.062295),new Jrb.eq(143,241.063716),new Jrb.eq(144,242.063688713),new Jrb.eq(145,243.065421),new Jrb.eq(146,244.06599039),new Jrb.eq(147,245.068039),new Jrb.eq(148,246.068798807),new Jrb.eq(149,247.070992043),new Jrb.eq(150,248.07217808),new Jrb.eq(151,249.074846818),new Jrb.eq(152,250.076399951),new Jrb.eq(153,251.079580056),new Jrb.eq(154,252.081619582),new Jrb.eq(155,253.085126791),new Jrb.eq(156,254.087316198),new Jrb.eq(157,255.091039),new Jrb.eq(158,256.09344)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(141,240.06892),new Jrb.eq(142,241.068662),new Jrb.eq(143,242.069699),new Jrb.eq(144,243.069631),new Jrb.eq(145,244.070969),new Jrb.eq(146,245.071317),new Jrb.eq(147,246.072965),new Jrb.eq(148,247.07365),new Jrb.eq(149,248.075458),new Jrb.eq(150,249.076405),new Jrb.eq(151,250.078654),new Jrb.eq(152,251.079983592),new Jrb.eq(153,252.082972247),new Jrb.eq(154,253.084817974),new Jrb.eq(155,254.088016026),new Jrb.eq(156,255.090266386),new Jrb.eq(157,256.093592),new Jrb.eq(158,257.095979)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(142,242.07343),new Jrb.eq(143,243.07451),new Jrb.eq(144,244.074077),new Jrb.eq(145,245.075375),new Jrb.eq(146,246.075281634),new Jrb.eq(147,247.076819),new Jrb.eq(148,248.077184411),new Jrb.eq(149,249.079024),new Jrb.eq(150,250.079514759),new Jrb.eq(151,251.081566467),new Jrb.eq(152,252.082460071),new Jrb.eq(153,253.085176259),new Jrb.eq(154,254.086847795),new Jrb.eq(155,255.089955466),new Jrb.eq(156,256.091766522),new Jrb.eq(157,257.095098635),new Jrb.eq(158,258.097069),new Jrb.eq(159,259.100588)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(144,245.081017),new Jrb.eq(145,246.081933),new Jrb.eq(146,247.081804),new Jrb.eq(147,248.082909),new Jrb.eq(148,249.083002),new Jrb.eq(149,250.084488),new Jrb.eq(150,251.084919),new Jrb.eq(151,252.08663),new Jrb.eq(152,253.08728),new Jrb.eq(153,254.089725),new Jrb.eq(154,255.091075196),new Jrb.eq(155,256.094052757),new Jrb.eq(156,257.095534643),new Jrb.eq(157,258.098425321),new Jrb.eq(158,259.100503),new Jrb.eq(159,260.103645)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(147,249.087823),new Jrb.eq(148,250.087493),new Jrb.eq(149,251.08896),new Jrb.eq(150,252.088965909),new Jrb.eq(151,253.090649),new Jrb.eq(152,254.090948746),new Jrb.eq(153,255.093232449),new Jrb.eq(154,256.094275879),new Jrb.eq(155,257.096852778),new Jrb.eq(156,258.0982),new Jrb.eq(157,259.101024),new Jrb.eq(158,260.102636),new Jrb.eq(159,261.105743),new Jrb.eq(160,262.10752)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(148,251.09436),new Jrb.eq(149,252.09533),new Jrb.eq(150,253.095258),new Jrb.eq(151,254.096587),new Jrb.eq(152,255.096769),new Jrb.eq(153,256.098763),new Jrb.eq(154,257.099606),new Jrb.eq(155,258.101883),new Jrb.eq(156,259.10299),new Jrb.eq(157,260.105572),new Jrb.eq(158,261.106941),new Jrb.eq(159,262.109692),new Jrb.eq(160,263.111394)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(149,253.100679),new Jrb.eq(150,254.100166),new Jrb.eq(151,255.101492),new Jrb.eq(152,256.101179573),new Jrb.eq(153,257.103072),new Jrb.eq(154,258.103568),new Jrb.eq(155,259.105628),new Jrb.eq(156,260.106434),new Jrb.eq(157,261.108752),new Jrb.eq(158,262.109918),new Jrb.eq(159,263.11254),new Jrb.eq(160,264.113978)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(150,255.107398),new Jrb.eq(151,256.10811),new Jrb.eq(152,257.107858),new Jrb.eq(153,258.109438),new Jrb.eq(154,259.109721),new Jrb.eq(155,260.111427),new Jrb.eq(156,261.112106),new Jrb.eq(157,262.114153),new Jrb.eq(158,263.115078),new Jrb.eq(159,264.117473),new Jrb.eq(160,265.118659)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(152,258.113151),new Jrb.eq(153,259.114652),new Jrb.eq(154,260.114435447),new Jrb.eq(155,261.116199),new Jrb.eq(156,262.116477),new Jrb.eq(157,263.118313),new Jrb.eq(158,264.118924),new Jrb.eq(159,265.121066),new Jrb.eq(160,266.121928)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(153,260.121803),new Jrb.eq(154,261.1218),new Jrb.eq(155,262.123009),new Jrb.eq(156,263.123146),new Jrb.eq(157,264.12473),new Jrb.eq(158,265.125198),new Jrb.eq(159,266.127009),new Jrb.eq(160,267.12774)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(155,263.12871),new Jrb.eq(156,264.128408258),new Jrb.eq(157,265.130001),new Jrb.eq(158,266.130042),new Jrb.eq(159,267.131774),new Jrb.eq(160,268.132156),new Jrb.eq(161,269.134114)]),BX(nX(Drb.nZ,1),Uub,3,0,[new Jrb.eq(156,265.136567),new Jrb.eq(157,266.13794),new Jrb.eq(158,267.137526),new Jrb.eq(159,268.138816),new Jrb.eq(160,269.139106),new Jrb.eq(161,270.140723),new Jrb.eq(162,271.141229)])])};\nJrb.hq=function hq(a,b){Jrb.gq();var c,d;d=b-a;for(c=0;c<Jrb.fq[a].length;c++)if(Jrb.fq[a][c].b==d)return Jrb.fq[a][c].a;return NaN};Jrb.iq=function iq(a,b){var c;if(a.b.length!=b.b.length)return a.b.length<b.b.length?-1:1;for(c=0;c<a.b.length;c++)if(a.b[c]!=b.b[c])return a.b[c]<b.b[c]?-1:1;return 0};Jrb.jq=function jq(a){var b,c,d,e,f,g;c=0;for(e=a.a,f=0,g=e.length;f<g;++f){d=e[f];d&&++c}a.b=tX(Drb.NY,Qsb,6,c,15,1);c=0;for(b=0;b<a.a.length;b++)a.a[b]&&(a.b[c++]=b)};Jrb.kq=function kq(a,b){var c;Jrb.jq(a);for(c=0;c<a.b.length;c++)if(b[a.b[c]])return true;return false};Jrb.lq=function lq(a){this.a=tX(Drb.c3,itb,6,a,16,1)};Z3(203,1,{203:1,28:1},Jrb.lq);_.rb=function mq(a){return Jrb.iq(this,a)};Drb.oZ=B5(203);Jrb.qq=function qq(){Jrb.qq=_3;Jrb.pq=BX(nX(Drb.LY,1),Osb,6,15,[0,1.00794,4.0026,6.941,9.0122,10.811,12.011,14.007,15.999,18.998,20.18,22.99,24.305,26.982,28.086,30.974,32.066,35.453,39.948,39.098,40.078,44.956,47.867,50.942,51.996,54.938,55.845,58.933,58.693,63.546,65.39,69.723,72.61,74.922,78.96,79.904,83.8,85.468,87.62,88.906,91.224,92.906,95.94,98.906,101.07,102.91,106.42,107.87,112.41,114.82,118.71,121.76,127.6,126.9,131.29,132.91,137.33,138.91,140.12,140.91,144.24,146.92,150.36,151.96,157.25,158.93,162.5,164.93,167.26,168.93,173.04,174.97,178.49,180.95,183.84,186.21,190.23,192.22,195.08,196.97,200.59,204.38,207.2,208.98,209.98,209.99,222.02,223.02,226.03,227.03,232.04,231.04,238.03,237.05,239.05,241.06,244.06,249.08,252.08,252.08,257.1,258.1,259.1,262.11,267.12,268.13,271.13,270.13,277.15,276.15,Vub,Vub,283.17,285.18,Wub,Wub,293.2,Xub,Xub,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.0141,3.016,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71.0787,156.18828,114.10364,115.0877,103.1447,128.13052,129.11458,57.05182,137.14158,113.15934,113.15934,128.17428,131.19846,147.17646,97.11658,87.0777,101.10458,186.2134,163.17546,99.13246]);Jrb.nq=BX(nX(Drb.LY,1),Osb,6,15,[0,1.007825,4.0026,7.016003,9.012182,11.009305,12,14.003074,15.994915,18.998403,19.992435,22.989767,23.985042,26.98153,27.976927,30.973762,31.97207,34.968852,39.962384,38.963707,39.962591,44.95591,47.947947,50.943962,51.940509,54.938047,55.934939,58.933198,57.935346,62.939598,63.929145,68.92558,73.921177,74.921594,79.91652,78.918336,83.911507,84.911794,87.905619,88.905849,89.904703,92.906377,97.905406,89.92381,101.904348,102.9055,105.903478,106.905092,113.903357,114.90388,119.9022,120.903821,129.906229,126.904473,131.904144,132.905429,137.905232,138.906346,139.905433,140.907647,141.907719,135.92398,151.919729,152.921225,157.924099,158.925342,163.929171,164.930319,165.93029,168.934212,173.938859,174.94077,179.946545,180.947992,183.950928,186.955744,191.961467,192.962917,194.964766,196.966543,201.970617,204.974401,207.976627,208.980374,193.98818,195.99573,199.9957,201.00411,206.0038,210.00923,232.038054,216.01896,238.050784,229.03623,232.041169,237.05005,238.05302,242.06194,240.06228,243.06947,243.07446,248.08275,251.08887,253.09515,257.10295,257.10777,271.13,270.13,277.15,276.15,Vub,Vub,283.17,285.18,Wub,Wub,291.2,Xub,Xub,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2.014,3.01605,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);Jrb.oq=BX(nX(Drb.NY,1),Qsb,6,15,[6,1,7,8])};Jrb.rq=function rq(a){var b,c;c=a.a;for(b=0;b<a.b.length;b++)c+=a.b[b]*Jrb.nq[a.c[b]];return c};Jrb.sq=function sq(a){var b,c;b=new Erb.I7;for(c=0;c<a.b.length;c++){Erb.H7(b,(Jrb.Ej(),Jrb.yj)[a.c[c]]);a.b[c]>1&&Erb.G7(b,a.b[c])}return b.a};Jrb.tq=function tq(a){var b,c;c=a.d;for(b=0;b<a.b.length;b++)c+=a.b[b]*Jrb.pq[a.c[b]];return c};Jrb.uq=function uq(a){var b,c,d,e,f,g,h,i,j,k,l;Jrb.ou(a,1);e=tX(Drb.NY,Qsb,6,191,15,1);for(c=0;c<a.q;c++){switch(a.C[c]){case 171:e[1]+=5;e[6]+=3;e[7]+=1;e[8]+=1;break;case 172:e[1]+=12;e[6]+=6;e[7]+=4;e[8]+=1;break;case 173:e[1]+=6;e[6]+=4;e[7]+=2;e[8]+=2;break;case 174:e[1]+=5;e[6]+=4;e[7]+=1;e[8]+=3;break;case 175:e[1]+=5;e[6]+=3;e[7]+=1;e[8]+=1;e[16]+=1;break;case 176:e[1]+=8;e[6]+=5;e[7]+=2;e[8]+=2;break;case 177:e[1]+=7;e[6]+=5;e[7]+=1;e[8]+=3;break;case 178:e[1]+=3;e[6]+=2;e[7]+=1;e[8]+=1;break;case 179:e[1]+=7;e[6]+=6;e[7]+=3;e[8]+=1;break;case 181:case 180:e[1]+=11;e[6]+=6;e[7]+=1;e[8]+=1;break;case 182:e[1]+=12;e[6]+=6;e[7]+=2;e[8]+=1;break;case 183:e[1]+=9;e[6]+=5;e[7]+=1;e[8]+=1;e[16]+=1;break;case 184:e[1]+=9;e[6]+=9;e[7]+=1;e[8]+=1;break;case 185:e[1]+=7;e[6]+=5;e[7]+=1;e[8]+=1;break;case 186:e[1]+=5;e[6]+=3;e[7]+=1;e[8]+=2;break;case 187:e[1]+=7;e[6]+=4;e[7]+=1;e[8]+=2;break;case 188:e[1]+=10;e[6]+=11;e[7]+=2;e[8]+=1;break;case 189:e[1]+=9;e[6]+=9;e[7]+=1;e[8]+=2;break;case 190:e[1]+=9;e[6]+=5;e[7]+=1;e[8]+=1;break;case 1:switch(a.A[c]){case 0:case 1:++e[1];break;case 2:++e[151];break;case 3:++e[152];}break;default:++e[a.C[c]];}}for(d=0;d<a.q;d++)a.C[d]>=171&&a.C[d]<=190?(e[1]+=2-Jrb.ao(a,d)):(e[1]+=Jrb.Wn(a,d));h=0;for(j=1;j<=190;j++)e[j]!=0&&++h;this.b=tX(Drb.NY,Qsb,6,h,15,1);this.c=tX(Drb.NY,Qsb,6,h,15,1);h=0;for(i=0;i<Jrb.oq.length;i++){if(e[Jrb.oq[i]]!=0){this.b[h]=e[Jrb.oq[i]];this.c[h]=Jrb.oq[i];++h;e[Jrb.oq[i]]=0}}while(true){l='zzz';k=-1;for(g=1;g<=190;g++)if(e[g]>0&&Erb.e7(l,(Jrb.Ej(),Jrb.yj)[g])>0){l=(Jrb.Ej(),Jrb.yj)[g];k=g}if(k==-1)break;this.b[h]=e[k];this.c[h]=k;++h;e[k]=0}this.a=0;this.d=0;for(b=0;b<a.f;b++){if(a.C[b]!=1&&a.A[b]!=0){g=a.C[b];f=a.A[b];this.a+=Jrb.hq(g,f)-Jrb.nq[g];this.d+=Jrb.hq(g,f)-Jrb.pq[g]}}};Z3(128,1,{128:1});_.jb=function vq(a){var b;if(a===this)return true;if(!zY(a,128))return false;for(b=0;b<this.b.length;b++)if(this.b[b]!=a.b[b])return false;return true};_.a=0;_.d=0;Drb.pZ=B5(128);Jrb.wq=function wq(a){switch(a){case 6:return 1;case 53:return 2;case 33:return 3;case 34:return 4;case 35:return 5;case 15:return 6;case 16:return 7;case 17:return 8;case 7:return 9;case 8:return 10;case 9:return 11;}return 0};Jrb.xq=function xq(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;Jrb.ou(a,7);B=0;n=tX(Drb.c3,itb,6,a.f,16,1);C=tX(Drb.NY,Qsb,6,a.f,15,1);for(f=0;f<a.g;f++){c=a.D[0][f];d=a.D[1][f];g=a.s[c];h=a.s[d];if(g!=0&&h!=0&&g<0^h<0){n[c]=true;n[d]=true}C[c]+=Jrb.Qk(a,f);C[d]+=Jrb.Qk(a,f)}for(i=0;i<a.f;i++){B+=a.s[i];if(a.s[i]==1){if(a.C[i]==7){if(!n[i]){if(C[i]<=3){B-=1;a.s[i]=0;a.T=0;if(a.j[i]!=a.e[i]){Jrb.bk(a,Jrb.Fn(a,i,a.e[i]-1));Jrb.ou(a,7)}}else if(i<a.f&&Jrb.Fr(a.p,i)){r=tX(Drb.c3,itb,6,a.f,16,1);s=tX(Drb.c3,itb,6,a.g,16,1);Jrb.on(a,i,true,r,s);for(k=0;k<a.f;k++){if(r[k]&&a.C[k]==7&&a.s[k]==0&&C[k]==2){if(Jrb.Aq(a,s,i,k)){B-=1;break}}}}}}}else if(a.s[i]<0){if(a.C[i]==6||a.C[i]==7||a.C[i]==8||a.C[i]==16){if(n[i]){v=tX(Drb.NY,Qsb,6,16,15,1);v[0]=i;A=1;w=0;while(w<A){for(e=0;e<a.r;e++){b=-1;a.D[0][e]==v[w]?(b=a.D[1][e]):a.D[1][e]==v[w]&&(b=a.D[0][e]);if(b==-1)continue;if(a.s[b]!=0){l=false;for(p=0;p<A;p++){if(b==v[p]){l=true;break}}if(!l){if(A==v.length){j=tX(Drb.NY,Qsb,6,2*v.length,15,1);Erb.Y7(v,0,j,0,v.length);v=j}v[A++]=b}}}++w}m=0;for(q=0;q<A;q++){m+=Jrb.mk(a,v[q])}if(m<0){t=-1;u=99;for(o=0;o<A;o++){if(Jrb.mk(a,v[o])<0){if(u>Jrb.wq(Jrb.Dk(a,v[o]))){u=Jrb.wq(Jrb.Dk(a,v[o]));t=v[o]}}}if(t!=-1){B-=a.s[t];a.s[t]=0;a.T=0}}}else{B-=a.s[i];a.s[i]=0;a.T=0}}}}B>0&&(B=Jrb.yq(a,B));return B};Jrb.yq=function yq(a,b){var c,d,e,f;b>0&&(b=Jrb.Bq(a,b,9));b>0&&(b=Jrb.Bq(a,b,17));b>0&&(b=Jrb.Bq(a,b,35));b>0&&(b=Jrb.Bq(a,b,53));if(b>0){for(c=0;c<a.f;c++){if(a.s[c]>0){e=false;for(f=0;f<a.j[c];f++){d=a.i[c][f];if(a.s[d]==0&&Jrb.ql(a,d)&&Jrb.Wn(a,d)>0){a.s[d]=-1;a.T=0;--b;if(b==0)return 0;e=true;break}}if(e)continue}}}b>0&&(b=Jrb.zq(a,b,8,16));b>0&&(b=Jrb.zq(a,b,8,15));b>0&&(b=Jrb.zq(a,b,8,6));b>0&&(b=Jrb.zq(a,b,7,16));return b};Jrb.zq=function zq(a,b,c,d){var e,f,g,h,i,j,k,l;for(e=0;e<a.f;e++){if(a.C[e]==c&&a.s[e]==0&&Jrb.Wn(a,e)>0){h=false;for(j=0;j<a.j[e];j++){if(a.n[e][j]==1){f=a.i[e][j];if(a.C[f]==d){l=false;i=false;for(k=0;k<a.j[f];k++){g=a.i[f][k];if(a.s[g]<0){i=true;break}g!=e&&a.C[g]==8&&a.n[f][k]==2&&(l=true)}if(!i&&l){a.s[e]=-1;a.T=0;--b;if(b==0)return 0;h=true}}}if(h)break}}}return b};Jrb.Aq=function Aq(a,b,c,d){var e,f,g,h,i,j,k,l;l=tX(Drb.NY,Qsb,6,a.g,15,1);i=tX(Drb.c3,itb,6,a.g,16,1);for(g=0;g<a.g;g++){l[g]=a.H[g];if(b[g]){i[g]=true;a.H[g]=1;a.T=0}}for(e=0;e<a.f;e++){if(e!=d&&a.o[e]==0&&i[a.k[d][0]]){for(k=0;k<a.j[e];k++){h=a.k[e][k];a.H[h]=1;a.T=0;i[h]=false}}}for(j=0;j<a.j[c];j++){h=a.k[c][j];a.H[h]=1;a.T=0;i[h]=false}if(Jrb.de(new Jrb.qe(a),i,false)){a.s[c]=0;a.T=0;a.j[d]!=a.e[d]&&Jrb.bk(a,Jrb.Fn(a,d,a.e[d]-1));Jrb.ou(a,7);return true}for(f=0;f<a.g;f++){Jrb.tm(a,f,l[f])}return false};Jrb.Bq=function Bq(a,b,c){var d;for(d=0;d<a.f;d++){if(a.C[d]==c&&a.s[d]==0&&a.j[d]==0){a.s[d]=-1;a.T=0;--b;if(b==0)return 0}}return b};Jrb.Cq=function Cq(a,b){var c,d;d=isb.Lab(a.b,b);for(c=Hrb.rnb(d).length;c<10;c++)Erb.L7(a.a,32);Erb.P7(a.a,d)};Jrb.Dq=function Dq(a,b){var c,d,e;if(b<0||b>999){Erb.P7(a.a,'  ?');return}c=false;for(d=0;d<3;d++){e=b/100|0;if(e==0){d==2||c?Erb.L7(a.a,48):Erb.L7(a.a,32)}else{Erb.L7(a.a,48+e&Gsb);c=true}b=10*(b%100)}};Jrb.Eq=function Eq(a,b){fsb.A4(b,a.a.a)};Jrb.Fq=function Fq(a){Jrb.Gq.call(this,a)};Jrb.Gq=function Gq(a){Jrb.Iq.call(this,a,new Erb.T7)};Jrb.Hq=function Hq(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z;this.b=new isb.Oab((N=Yub,N));Jrb.ou(a,15);L=true;for(e=0;e<a.f;e++){if((a.u[e]&3)!=0&&(a.u[e]&3)!=3&&(a.u[e]&_tb)>>18!=1){L=false;break}}O=-1;if(L){F=tX(Drb.NY,Qsb,6,32,15,1);P=0;for(f=0;f<a.f;f++){if((a.u[f]&3)!=0&&(a.u[f]&3)!=3&&(a.u[f]&_tb)>>18==1){H=(a.u[f]&_tb)>>18!=1&&(a.u[f]&_tb)>>18!=2?-1:(a.u[f]&Cub)>>20;++F[H];if(P<F[H]){P=F[H];O=H}break}}}this.a=!c?new Erb.S7:c;R=a.P!=null?a.P:'';Erb.P7(this.a,R+rsb);Erb.P7(this.a,'Actelion Java MolfileCreator 1.0\\n\\n');Jrb.Dq(this,a.q);Jrb.Dq(this,a.r);Erb.P7(this.a,'  0  0');Jrb.Dq(this,L?0:1);Erb.P7(this.a,'  0  0  0  0  0999 V2000\\n');I=a.q==1;for(i=1;i<a.q;i++){if(a.J[i].a!=a.J[0].a||a.J[i].b!=a.J[0].b||a.J[i].c!=a.J[0].c){I=true;break}}G=1;if(I){if(b!=0){G=b}else{s=Jrb.Fk(a,a.q,a.r,(Jrb.Ej(),Jrb.Dj));if(s!=0){(s<1||s>3)&&(G=1.5/s)}else{Q=Eub;for(f=1;f<a.q;f++){for(h=0;h<f;h++){B=a.J[h].a-a.J[f].a;C=a.J[h].b-a.J[f].b;D=a.J[h].c-a.J[f].c;A=B*B+C*C+D*D;Q>A&&(Q=A)}}G=3/Q}}}for(j=0;j<a.q;j++){if(I){Jrb.Cq(this,G*a.J[j].a);Jrb.Cq(this,G*-a.J[j].b);Jrb.Cq(this,G*-a.J[j].c)}else{Erb.P7(this.a,'    0.0000    0.0000    0.0000')}if((a.v==null?null:a.v[j])!=null)Erb.P7(this.a,' L  ');else if(E3(j3(a.B[j],1),0))Erb.P7(this.a,' A  ');else if(a.C[j]>=129&&a.C[j]<=144||a.C[j]==154)Erb.P7(this.a,' R# ');else{p=(Jrb.Ej(),Jrb.yj)[a.C[j]];Erb.P7(this.a,' '+p);Hrb.rnb(p).length==1?Erb.P7(this.a,'  '):Hrb.rnb(p).length==2&&Erb.P7(this.a,' ')}Erb.P7(this.a,' 0  0  0');J=j3(utb,a.B[j]);o3(J,0)==0?Erb.P7(this.a,'  0'):o3(J,384)==0?Erb.P7(this.a,'  3'):o3(J,128)==0?Erb.P7(this.a,'  2'):o3(J,1792)==0?Erb.P7(this.a,'  1'):o3(J,1664)==0&&Erb.P7(this.a,'  2');Erb.P7(this.a,E3(j3(a.B[j],Utb),0)?'  1':'  0');Z=((a.u[j]&Bub)>>>27)-1;Z==-1?Erb.P7(this.a,'  0'):Z==0?Erb.P7(this.a,' 15'):Jrb.Dq(this,Z);Erb.P7(this.a,'  0  0  0');Jrb.Dq(this,$wnd.Math.abs(a.w[j]));Erb.P7(this.a,'  0  0\\n')}for(t=0;t<a.r;t++){switch(a.H[t]){case 1:T=1;W=0;break;case 2:T=2;W=0;break;case 4:T=3;W=0;break;case 129:T=1;W=6;break;case 257:T=1;W=1;break;case 386:T=2;W=3;break;case 8:T=4;W=0;break;case 16:T=8;W=0;break;default:T=1;W=0;}if(L&&(W==1||W==6)){f=a.D[0][t];(a.u[f]&_tb)>>18==2?(W=0):(a.u[f]&_tb)>>18==1&&((a.u[f]&_tb)>>18!=1&&(a.u[f]&_tb)>>18!=2?-1:(a.u[f]&Cub)>>20)!=O&&(W=4)}u=a.G[t]&31;u!=0&&(u==8?(T=4):u==3?(T=5):u==9?(T=6):u==10?(T=7):(T=8));V=a.G[t]&384;Y=V==0?0:V==256?1:2;Jrb.Dq(this,1+a.D[0][t]);Jrb.Dq(this,1+a.D[1][t]);Jrb.Dq(this,T);Jrb.Dq(this,W);Erb.P7(this.a,'  0');Jrb.Dq(this,Y);Erb.P7(this.a,'  0\\n')}S=0;for(k=0;k<a.q;k++)a.s[k]!=0&&++S;if(S!=0){w=0;for(f=0;f<a.q;f++){if(a.s[f]!=0){if(w==0){Erb.P7(this.a,'M  CHG');Jrb.Dq(this,$wnd.Math.min(8,S))}Erb.P7(this.a,' ');Jrb.Dq(this,f+1);v=a.s[f];if(v<0){Erb.P7(this.a,'  -');v=-v}else Erb.P7(this.a,'   ');Erb.L7(this.a,48+v&Gsb);--S;if(++w==8||S==0){w=0;Erb.P7(this.a,rsb)}}}}S=0;for(l=0;l<a.q;l++)a.A[l]==0||++S;if(S!=0){w=0;for(f=0;f<a.q;f++){if(a.A[f]!=0){if(w==0){Erb.P7(this.a,'M  ISO');Jrb.Dq(this,$wnd.Math.min(8,S))}Erb.P7(this.a,' ');Jrb.Dq(this,f+1);Erb.P7(this.a,' ');Jrb.Dq(this,a.A[f]);--S;if(++w==8||S==0){w=0;Erb.P7(this.a,rsb)}}}}S=0;for(m=0;m<a.q;m++)(a.u[m]&48)!=0&&++S;if(S!=0){w=0;for(f=0;f<a.q;f++){if((a.u[f]&48)!=0){if(w==0){Erb.P7(this.a,'M  RAD');Jrb.Dq(this,$wnd.Math.min(8,S))}Erb.P7(this.a,' ');Jrb.Dq(this,f+1);switch(a.u[f]&48){case 16:Erb.P7(this.a,'   1');break;case 32:Erb.P7(this.a,'   2');break;case 48:Erb.P7(this.a,'   3');}--S;if(++w==8||S==0){w=0;Erb.P7(this.a,rsb)}}}}S=0;for(n=0;n<a.q;n++)(a.C[n]>=129&&a.C[n]<=144||a.C[n]==154)&&++S;if(S!=0){w=0;for(d=0;d<a.q;d++){r=a.C[d];if(r>=129&&r<=144||r==154){if(w==0){Erb.P7(this.a,'M  RGP');Jrb.Dq(this,$wnd.Math.min(8,S))}Erb.P7(this.a,' ');Jrb.Dq(this,d+1);Erb.P7(this.a,' ');Jrb.Dq(this,r==154?0:r>=142?r-141:r-125);--S;if(++w==8||S==0){w=0;Erb.P7(this.a,rsb)}}}}if(a.K){S=0;for(f=0;f<a.q;f++)E3(j3(a.B[f],120),0)&&++S;if(S!=0){w=0;for(h=0;h<a.q;h++){U=j3(a.B[h],120);if(o3(U,0)!=0){if(w==0){Erb.P7(this.a,'M  RBC');Jrb.Dq(this,$wnd.Math.min(8,S))}Erb.P7(this.a,' ');Jrb.Dq(this,h+1);o3(U,112)==0?Erb.P7(this.a,'  -1'):o3(U,8)==0?Erb.P7(this.a,'   1'):o3(U,104)==0?Erb.P7(this.a,'   2'):o3(U,88)==0?Erb.P7(this.a,'   3'):o3(U,56)==0&&Erb.P7(this.a,'   4');--S;if(++w==8||S==0){w=0;Erb.P7(this.a,rsb)}}}}for(o=0;o<a.q;o++){q=a.v==null?null:a.v[o];if(q!=null){Erb.P7(this.a,'M  ALS ');Jrb.Dq(this,o+1);Jrb.Dq(this,q.length);Erb.P7(this.a,E3(j3(a.B[o],1),0)?' T ':' F ');for(K=0;K<q.length;K++){M=(Jrb.Ej(),Jrb.yj)[q[K]];switch(Hrb.rnb(M).length){case 1:Erb.P7(this.a,M+'   ');break;case 2:Erb.P7(this.a,M+'  ');break;case 3:Erb.P7(this.a,M+' ');break;default:Erb.P7(this.a,'   ?');}}Erb.P7(this.a,rsb)}}S=0;for(g=0;g<a.q;g++)E3(j3(a.B[g],6144),0)&&++S;if(S!=0){w=0;for(d=0;d<a.q;d++){X=j3(a.B[d],6144);if(o3(X,0)!=0){if(w==0){Erb.P7(this.a,'M  SUB');Jrb.Dq(this,$wnd.Math.min(8,S))}Erb.P7(this.a,' ');Jrb.Dq(this,d+1);E3(j3(X,qtb),0)?Erb.P7(this.a,'   '+(a.e[d]+1)):Erb.P7(this.a,'  -2');--S;if(++w==8||S==0){w=0;Erb.P7(this.a,rsb)}}}}}Erb.P7(this.a,Zub)};Jrb.Iq=function Iq(a,b){Jrb.Hq.call(this,a,0,b)};Z3(99,1,{},Jrb.Fq,Jrb.Hq);Drb.rZ=B5(99);Jrb.Jq=function Jq(a,b,c,d,e,f){var g,h,i,j;j=1;h=false;switch(e){case 1:j=257;break;case 3:j=386;break;case 4:j=257;h=true;break;case 6:j=129;break;default:switch(d){case 1:j=1;break;case 2:j=2;break;case 3:j=4;break;case 4:j=8;break;case 9:j=16;}}g=Jrb.Jj(a.j,b,c,j);i=0;h&&Jrb.Xl(a.j,b,1,-1);if(d>4){switch(d){case 5:i|=3;break;case 6:i|=9;break;case 7:i|=10;break;case 8:j!=16&&(i|=31);}}f==1&&(i|=256);f==2&&(i|=128);i!=0&&Jrb.sm(a.j,g,i,true);return g};Jrb.Kq=function Kq(a){var b,c,d,e,f,g,h,i,j,k,l;g=tX(Drb.NY,Qsb,6,a.j.q,15,1);for(c=0;c<a.j.q;c++)g[c]=-Jrb.mk(a.j,c);Jrb.de(new Jrb.qe(a.j),null,true);for(d=0;d<a.j.q;d++)g[d]+=Jrb.mk(a.j,d);for(b=0;b<a.j.q;b++){if(g[b]!=0){h=-g[b];for(e=0;e<a.j.r;e++){for(j=0;j<2;j++){if(h>0&&Jrb.Tk(a.j,e)==16&&Jrb.Ik(a.j,1-j,e)==b){l=Jrb.Ik(a.j,j,e);if(Jrb.tl(a.j,l)){k=Jrb.Mq(a,l);f=Jrb.mk(a.j,l);if(f<k){i=$wnd.Math.min(h,k-f);Jrb.Sl(a.j,l,f+i);h-=i}}}}}}}};Jrb.Lq=function Lq(a,b){a.j=null;return Jrb.br(a,new fsb.v4(new fsb.z4(b)))?a.j:null};Jrb.Mq=function Mq(a,b){var c,d;c=Jrb.Dk(a.j,b);d=c<(Jrb.Ej(),Jrb.Aj).length?Jrb.Aj[c]:null;return d==null?0:d[d.length-1]};Jrb.Nq=function Nq(a,b){var c;c=!a.b?null:Krb.kdb(a.b,new Erb.o6(b));return !c?b-1:c.a};Jrb.Oq=function Oq(a,b){var c;c=!a.c?null:Krb.kdb(a.c,new Erb.o6(b));return !c?b-1:c.a};Jrb.Pq=function Pq(a,b){var c,d;if(b!=null){Jrb.ou(a.j,1);for(c=0;c<a.j.f;c++){if(b[c]!=0){d=Jrb.Xk(a.j,c,Jrb.ao(a.j,c));b[c]==15?d>=0&&Jrb.Ql(a.j,c,0):b[c]!=Jrb.Zk(a.j,c)&&Jrb.Ql(a.j,c,b[c]-d)}}}};Jrb.Qq=function Qq(a,b){var c;if(b==-1){return -1}for(c=b+1;c<Hrb.rnb(a).length;c++){Hrb.mnb(c,Hrb.rnb(a).length);if(Hrb.rnb(a).charCodeAt(c)!=32&&(Hrb.mnb(c,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(c)!=9)){return c}}return -1};Jrb.Rq=function Rq(a,b){var c;for(c=b;c<Hrb.rnb(a).length;c++){Hrb.mnb(c,Hrb.rnb(a).length);if(Hrb.rnb(a).charCodeAt(c)==32||(Hrb.mnb(c,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(c)==9)){return c}}return -1};Jrb.Sq=function Sq(a){if(Hrb.rnb(a).indexOf('ATOMS=(')!=-1)return $ub;if(Hrb.rnb(a).indexOf('BONDS=(')!=-1)return 'BONDS';return null};Jrb.Tq=function Tq(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;p=0;q=(h=Jrb.Rq(b,p+1),h==-1?Hrb.rnb(b).length:h);d=Erb.V5((Hrb.lnb(p,q,Hrb.rnb(b).length),Hrb.rnb(b).substr(p,q-p)),_ub,xsb);p=Jrb.Qq(b,q);q=(i=Jrb.Rq(b,p+1),i==-1?Hrb.rnb(b).length:i);s=(Hrb.lnb(p,q,Hrb.rnb(b).length),Hrb.rnb(b).substr(p,q-p));A=null;e=false;r=Jrb.$q(b);if(r!=0){A=Jrb.Uq(b);r<0&&(e=true);q=$wnd.Math.abs(r)}p=Jrb.Qq(b,q);q=(j=Jrb.Rq(b,p+1),j==-1?Hrb.rnb(b).length:j);C=g6((Hrb.lnb(p,q,Hrb.rnb(b).length),Hrb.rnb(b).substr(p,q-p)));p=Jrb.Qq(b,q);q=(k=Jrb.Rq(b,p+1),k==-1?Hrb.rnb(b).length:k);D=g6((Hrb.lnb(p,q,Hrb.rnb(b).length),Hrb.rnb(b).substr(p,q-p)));p=Jrb.Qq(b,q);q=(l=Jrb.Rq(b,p+1),l==-1?Hrb.rnb(b).length:l);F=g6((Hrb.lnb(p,q,Hrb.rnb(b).length),Hrb.rnb(b).substr(p,q-p)));p=Jrb.Qq(b,q);q=(m=Jrb.Rq(b,p+1),m==-1?Hrb.rnb(b).length:m);u=Erb.V5((Hrb.lnb(p,q,Hrb.rnb(b).length),Hrb.rnb(b).substr(p,q-p)),_ub,xsb);c=Jrb.Gj(a.j,C,-D,-F);c+1!=d&&(!a.b&&(a.b=new Krb.xjb),Krb.pjb(a.b,new Erb.o6(d),new Erb.o6(c)));if(A!=null){Jrb.jm(a.j,c,6);Jrb.Zl(a.j,c,A,e)}u!=0&&Jrb.$l(a.j,c,u,false);if(Erb.k7(s,'A')||Erb.k7(s,'*')){Jrb.cm(a.j,c,1,true)}else if(Erb.k7(s,'Q')){t=tX(Drb.NY,Qsb,6,1,15,1);t[0]=6;Jrb.Zl(a.j,c,t,true)}else{Jrb.jm(a.j,c,Jrb.Xm(s,67))}while((p=Jrb.Qq(b,q))!=-1){q=(g=Jrb.Rq(b,p+1),g==-1?Hrb.rnb(b).length:g);v=(Hrb.lnb(p,q,Hrb.rnb(b).length),Hrb.rnb(b).substr(p,q-p));o=Erb.o7(v,A7(61));n=(Hrb.lnb(0,o,Hrb.rnb(v).length),Hrb.rnb(v).substr(0,o));B=Erb.V5((Hrb.mnb(o+1,Hrb.rnb(v).length+1),Hrb.rnb(v).substr(o+1)),_ub,xsb);if(Erb.k7(n,'CHG')){Jrb.Sl(a.j,c,B)}else if(Erb.k7(n,'RAD')){switch(B){case 1:Jrb.dm(a.j,c,16);break;case 2:Jrb.dm(a.j,c,32);break;case 3:Jrb.dm(a.j,c,48);}}else if(Erb.k7(n,'CFG'));else if(Erb.k7(n,'MASS')){Jrb.am(a.j,c,B)}else if(Erb.k7(n,'VAL')){Jrb.Ql(a.j,c,B==-1?0:B==0?-1:B)}else if(Erb.k7(n,'HCOUNT')){switch(B){case 0:break;case -1:Jrb.cm(a.j,c,1792,true);break;case 1:Jrb.cm(a.j,c,128,true);break;case 2:Jrb.cm(a.j,c,384,true);break;default:Jrb.cm(a.j,c,896,true);}}else if(Erb.k7(n,'SUBST')){if(B==-1){Jrb.cm(a.j,c,Vtb,true)}else if(B>0){w=0;for(f=0;f<a.j.r;f++){(Jrb.Ik(a.j,0,f)==c||Jrb.Ik(a.j,1,f)==c)&&++w}B>w&&Jrb.cm(a.j,c,qtb,true)}}else if(Erb.k7(n,'RBCNT')){switch(B){case 3:case -1:Jrb.cm(a.j,c,112,true);break;case 1:Jrb.cm(a.j,c,8,true);break;case 2:Jrb.cm(a.j,c,104,true);break;case 4:Jrb.cm(a.j,c,56,true);}}}};Jrb.Uq=function Uq(a){var b,c,d,e,f,g,h,i;h=null;c=Hrb.rnb(a).indexOf('[');d=Hrb.rnb(a).indexOf(']',c);if(c>=0&&d>0){b=tX(Drb.NY,Qsb,6,16,15,1);i=(Hrb.lnb(c+1,d,Hrb.rnb(a).length),Hrb.rnb(a).substr(c+1,d-(c+1)));e=0;g=true;while(g&&e<16){c=Hrb.rnb(i).indexOf(',');f=null;if(c==-1){f=i;g=false}else{f=(Hrb.lnb(0,c,Hrb.rnb(i).length),Hrb.rnb(i).substr(0,c));i=(Hrb.mnb(c+1,Hrb.rnb(i).length+1),Hrb.rnb(i).substr(c+1))}b[e++]=Jrb.Xm(f,1)}h=tX(Drb.NY,Qsb,6,e,15,1);Erb.Y7(b,0,h,0,e)}return h};Jrb.Vq=function Vq(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;o=0;p=(i=Jrb.Rq(b,o+1),i==-1?Hrb.rnb(b).length:i);f=Erb.V5((Hrb.lnb(o,p,Hrb.rnb(b).length),Hrb.rnb(b).substr(o,p-o)),_ub,xsb);o=Jrb.Qq(b,p);p=(j=Jrb.Rq(b,o+1),j==-1?Hrb.rnb(b).length:j);g=Erb.V5((Hrb.lnb(o,p,Hrb.rnb(b).length),Hrb.rnb(b).substr(o,p-o)),_ub,xsb);o=Jrb.Qq(b,p);p=(k=Jrb.Rq(b,o+1),k==-1?Hrb.rnb(b).length:k);c=Jrb.Nq(a,Erb.V5((Hrb.lnb(o,p,Hrb.rnb(b).length),Hrb.rnb(b).substr(o,p-o)),_ub,xsb));o=Jrb.Qq(b,p);p=(l=Jrb.Rq(b,o+1),l==-1?Hrb.rnb(b).length:l);d=Jrb.Nq(a,Erb.V5((Hrb.lnb(o,p,Hrb.rnb(b).length),Hrb.rnb(b).substr(o,p-o)),_ub,xsb));r=0;s=0;while((o=Jrb.Qq(b,p))!=-1){p=(h=Jrb.Rq(b,o+1),h==-1?Hrb.rnb(b).length:h);q=(Hrb.lnb(o,p,Hrb.rnb(b).length),Hrb.rnb(b).substr(o,p-o));n=Erb.o7(q,A7(61));m=(Hrb.lnb(0,n,Hrb.rnb(q).length),Hrb.rnb(q).substr(0,n));t=Erb.V5((Hrb.mnb(n+1,Hrb.rnb(q).length+1),Hrb.rnb(q).substr(n+1)),_ub,xsb);if(Erb.k7(m,'CFG')){switch(t){case 1:r=1;break;case 2:r=g==2?3:4;break;case 3:r=6;}}else Erb.k7(m,'TOPO')?(s=t):undefined}e=Jrb.Jq(a,c,d,g,r,s);e+1!=f&&(!a.c&&(a.c=new Krb.xjb),Krb.pjb(a.c,new Erb.o6(f),new Erb.o6(e)))};Jrb.Wq=function Wq(a,b){var c,d,e,f,g,h;h=Jrb.Sq(b);if(h!=null){g=Jrb.Yq(b,h);if(Erb.k7(Hrb.rnb(b).substr(0,13),'MDLV30/STEABS')){if(Erb.k7(h,$ub))for(f=0;f<g.length;f++)Jrb.Xl(a.j,Jrb.Nq(a,g[f]),0,-1);else for(e=0;e<g.length;e++)Jrb.nm(a.j,Jrb.Oq(a,g[e]),0,-1)}else if(Erb.k7(Hrb.rnb(b).substr(0,13),'MDLV30/STERAC')){d=Erb.V5(Erb.x7(b,13,Jrb.Rq(b,13)),_ub,xsb);if(Erb.k7(h,$ub))for(f=0;f<g.length;f++)Jrb.Xl(a.j,Jrb.Nq(a,g[f]),1,d-1);else for(e=0;e<g.length;e++)Jrb.nm(a.j,Jrb.Oq(a,g[e]),1,d-1)}else if(Erb.k7(Hrb.rnb(b).substr(0,13),'MDLV30/STEREL')){d=Erb.V5(Erb.x7(b,13,Jrb.Rq(b,13)),_ub,xsb);if(Erb.k7(h,$ub))for(f=0;f<g.length;f++)Jrb.Xl(a.j,Jrb.Nq(a,g[f]),2,d-1);else for(e=0;e<g.length;e++)Jrb.nm(a.j,Jrb.Oq(a,g[e]),2,d-1)}else if(Erb.k7(Hrb.rnb(b).substr(0,13),'MDLV30/HILITE')){if(Erb.k7(h,$ub)){for(e=0;e<g.length;e++)Jrb.Tl(a.j,Jrb.Nq(a,g[e]),448)}else{for(e=0;e<g.length;e++){c=Jrb.Oq(a,g[e]);Jrb.Tl(a.j,Jrb.Ik(a.j,0,c),448);Jrb.Tl(a.j,Jrb.Ik(a.j,1,c),448)}}}}};Jrb.Xq=function Xq(a,b){var c,d,e;if(!a.j){if(Erb.k7(Hrb.rnb(b).substr(0,6),'COUNTS')){c=Jrb.Qq(b,Jrb.Rq(b,7));d=Erb.V5(Erb.x7(b,7,Jrb.Rq(b,7)),_ub,xsb);e=Erb.V5(Erb.x7(b,c,Jrb.Rq(b,c)),_ub,xsb);a.j=new Jrb.Hu(d,e)}}};Jrb.Yq=function Yq(a,b){var c,d,e,f,g,h;f=Hrb.rnb(a).indexOf(b+'=(')+Hrb.rnb(b).length+2;g=Erb.p7(a,A7(41),f);e=Jrb.Rq(a,f);c=Erb.V5((Hrb.lnb(f,e,Hrb.rnb(a).length),Hrb.rnb(a).substr(f,e-f)),_ub,xsb);h=tX(Drb.NY,Qsb,6,c,15,1);for(d=0;d<c;d++){f=Jrb.Qq(a,e);e=Jrb.Rq(a,f);(e==-1||e>g)&&(e=g);h[d]=Erb.V5((Hrb.lnb(f,e,Hrb.rnb(a).length),Hrb.rnb(a).substr(f,e-f)),_ub,xsb)}return h};Jrb.Zq=function Zq(a){var b,c,d,e,f,g,h,i,j;i=tX(Drb.NY,Qsb,6,a.j.q,15,1);for(d=0;d<a.j.r;d++)if(Jrb.Tk(a.j,d)==8)for(g=0;g<2;g++)i[Jrb.Ik(a.j,g,d)]=1;for(e=0;e<a.j.r;e++){j=Jrb.Qk(a.j,e);for(f=0;f<2;f++)i[Jrb.Ik(a.j,f,e)]+=j}for(c=0;c<a.j.r;c++){if(Jrb.Qk(a.j,c)==1){for(f=0;f<2;f++){h=Jrb.Ik(a.j,1-f,c);if(Jrb.tl(a.j,h)){b=Jrb.Ik(a.j,f,c);if(Jrb.ql(a.j,b)&&i[b]>Jrb.Zk(a.j,b)){Jrb.tm(a.j,c,16);continue}}}}}};Jrb.$q=function $q(a){var b,c;if(Hrb.rnb(a).indexOf('[')>=0){b=Hrb.rnb(a).indexOf(' NOT[');c=Hrb.rnb(a).indexOf(']',b);if(b>=0&&c>0){return -(c+1)}else{b=Hrb.rnb(a).indexOf(' [');c=Hrb.rnb(a).indexOf(']',b);if(b>=0&&c>0){return c+1}}b=Hrb.rnb(a).indexOf(\" 'NOT[\");c=Hrb.rnb(a).indexOf(\"]'\",b);if(b>=0&&c>0){return -(c+2)}else{b=Hrb.rnb(a).indexOf(\" '[\");c=Hrb.rnb(a).indexOf(\"]'\",b);if(b>=0&&c>0){return c+2}}Erb.X7();String.fromCharCode(10)}return 0};Jrb._q=function _q(a,b,c){a.j=b;return Jrb.br(a,c)};Jrb.ar=function ar(a){return Hrb.rnb(a).length==0?0:Erb.V5(a,_ub,xsb)};Jrb.br=function br(b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X;T=null;try{b.f=null;if(b.j){Jrb.mu(b.j);Jrb.vm(b.j,false)}D=v=fsb.u4(c);if(null==D){return false}if(null==(v=fsb.u4(c))){return false}if(null==(v=fsb.u4(c))){return false}b.k=Hrb.rnb(v).indexOf(\"From CSD data. Using bond type 'Any'\")!=-1;b.e=Hrb.rnb(v).indexOf('From CSD data.')!=-1;if(null==(v=fsb.u4(c))){return false}b.g=false;b.d=b.a;try{F=Erb.V5(Erb.y7((Hrb.lnb(0,3,Hrb.rnb(v).length),Hrb.rnb(v).substr(0,3))),_ub,xsb);G=Erb.V5(Erb.y7((Hrb.lnb(3,6,Hrb.rnb(v).length),Hrb.rnb(v).substr(3,3))),_ub,xsb);H=Jrb.ar(Erb.y7((Hrb.lnb(6,9,Hrb.rnb(v).length),Hrb.rnb(v).substr(6,3))));b.d=b.d|1==Jrb.ar(Erb.y7((Hrb.lnb(12,15,Hrb.rnb(v).length),Hrb.rnb(v).substr(12,3))));b.g=Hrb.rnb(v).length>=39&&Erb.k7(Hrb.rnb(v).substr(34,Hrb.rnb('V3000').length),'V3000')}catch(a){a=g3(a);if(zY(a,15)){return false}else throw h3(a)}if(b.g){K=Jrb.cr(b,c);Jrb.Bm(b.j,D);return K}!b.j&&(b.j=new Jrb.Hu(F,G));Jrb.Bm(b.j,D);b.d||(b.j.L=true);if(0==F){while(v!=null&&!(Erb.k7(v,avb)||Erb.k7(v,bvb)||Erb.k7((Hrb.mnb(1,Hrb.rnb(v).length+1),Hrb.rnb(v).substr(1)),'$'))){v=fsb.u4(c)}return true}for(q=0;q<F;q++){if(null==(v=fsb.u4(c))){return false}V=g6(Erb.y7((Hrb.lnb(0,10,Hrb.rnb(v).length),Hrb.rnb(v).substr(0,10))));W=g6(Erb.y7((Hrb.lnb(10,20,Hrb.rnb(v).length),Hrb.rnb(v).substr(10,10))));X=g6(Erb.y7((Hrb.lnb(20,30,Hrb.rnb(v).length),Hrb.rnb(v).substr(20,10))));e=Jrb.Gj(b.j,V,-W,-X);u=Erb.y7((Hrb.lnb(31,34,Hrb.rnb(v).length),Hrb.rnb(v).substr(31,3)));if(Erb.k7(u,'A')||Erb.k7(u,'*')){Jrb.cm(b.j,e,1,true)}else if(Erb.k7(u,'Q')){w=tX(Drb.NY,Qsb,6,1,15,1);w[0]=6;Jrb.Zl(b.j,e,w,true)}else{h=Jrb.Xm(u,67);Jrb.jm(b.j,e,h)}C=Jrb.ar(Erb.y7((Hrb.lnb(34,36,Hrb.rnb(v).length),Hrb.rnb(v).substr(34,2))));C!=0&&Jrb.am(b.j,e,(Jrb.Ej(),Jrb.Cj)[Jrb.Dk(b.j,e)]+C);m=Jrb.ar(Erb.y7((Hrb.lnb(36,39,Hrb.rnb(v).length),Hrb.rnb(v).substr(36,3))));m!=0&&(m==4?Jrb.dm(b.j,e,32):Jrb.Sl(b.j,e,4-m));A=Hrb.rnb(v).length<63?0:Jrb.ar(Erb.y7((Hrb.lnb(60,63,Hrb.rnb(v).length),Hrb.rnb(v).substr(60,3))));Jrb.$l(b.j,e,A,false);o=Hrb.rnb(v).length<45?0:Jrb.ar(Erb.y7((Hrb.lnb(42,45,Hrb.rnb(v).length),Hrb.rnb(v).substr(42,3))));switch(o){case 0:break;case 1:Jrb.cm(b.j,e,768,true);break;case 2:Jrb.cm(b.j,e,128,true);break;case 3:Jrb.cm(b.j,e,384,true);break;default:Jrb.cm(b.j,e,896,true);}Hrb.rnb(v).length>=48&&(Hrb.mnb(47,Hrb.rnb(v).length),Hrb.rnb(v).charCodeAt(47)==49)&&Jrb.cm(b.j,e,Utb,true);S=Hrb.rnb(v).length<51?0:Jrb.ar(Erb.y7((Hrb.lnb(48,51,Hrb.rnb(v).length),Hrb.rnb(v).substr(48,3))));if(S!=0){T==null&&(T=tX(Drb.NY,Qsb,6,F,15,1));T[e]=S}}for(r=0;r<G;r++){if(null==(v=fsb.u4(c))){return false}f=Erb.V5(Erb.y7((Hrb.lnb(0,3,Hrb.rnb(v).length),Hrb.rnb(v).substr(0,3))),_ub,xsb)-1;g=Erb.V5(Erb.y7((Hrb.lnb(3,6,Hrb.rnb(v).length),Hrb.rnb(v).substr(3,3))),_ub,xsb)-1;k=Erb.V5(Erb.y7((Hrb.lnb(6,9,Hrb.rnb(v).length),Hrb.rnb(v).substr(6,3))),_ub,xsb);N=Hrb.rnb(v).length<12?0:Jrb.ar(Erb.y7((Hrb.lnb(9,12,Hrb.rnb(v).length),Hrb.rnb(v).substr(9,3))));R=Hrb.rnb(v).length<18?0:Jrb.ar(Erb.y7((Hrb.lnb(15,18,Hrb.rnb(v).length),Hrb.rnb(v).substr(15,3))));k==8&&(b.k||Jrb.tl(b.j,f)||Jrb.tl(b.j,g))&&(k=9);Jrb.Jq(b,f,g,k,N,R)}for(p=0;p<H;p++){if(null==(v=fsb.u4(c))){return false}}if(null==(v=fsb.u4(c))){(b.i&1)!=0&&(b.f=Jrb.Tn(b.j));Jrb.Pq(b,T);b.d||Jrb.ou(b.j,15);return true}while(v!=null&&!(Erb.k7(v,avb)||Erb.k7(v,bvb))){if(Erb.k7(Hrb.rnb(v).substr(0,6),'M  CHG')){s=Erb.V5(Erb.y7((Hrb.lnb(6,9,Hrb.rnb(v).length),Hrb.rnb(v).substr(6,3))),_ub,xsb);if(s>0){d=10;U=14;for(t=1;t<=s;++t,d+=8,U+=8){e=Erb.V5(Erb.y7((Hrb.lnb(d,d+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(d,d+3-d))),_ub,xsb)-1;l=Erb.V5(Erb.y7((Hrb.lnb(U,U+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(U,U+3-U))),_ub,xsb);Jrb.Sl(b.j,e,l)}}}if(Erb.k7(Hrb.rnb(v).substr(0,6),'M  ISO')){s=Erb.V5(Erb.y7((Hrb.lnb(6,9,Hrb.rnb(v).length),Hrb.rnb(v).substr(6,3))),_ub,xsb);if(s>0){d=10;U=14;for(t=1;t<=s;++t,d+=8,U+=8){e=Erb.V5(Erb.y7((Hrb.lnb(d,d+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(d,d+3-d))),_ub,xsb)-1;B=Erb.V5(Erb.y7((Hrb.lnb(U,U+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(U,U+3-U))),_ub,xsb);Jrb.am(b.j,e,B)}}}if(Erb.k7(Hrb.rnb(v).substr(0,6),'M  RAD')){s=Erb.V5(Erb.y7((Hrb.lnb(6,9,Hrb.rnb(v).length),Hrb.rnb(v).substr(6,3))),_ub,xsb);if(s>0){d=10;U=14;for(t=1;t<=s;++t,d+=8,U+=8){e=Erb.V5(Erb.y7((Hrb.lnb(d,d+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(d,d+3-d))),_ub,xsb)-1;J=Erb.V5(Erb.y7((Hrb.lnb(U,U+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(U,U+3-U))),_ub,xsb);switch(J){case 1:Jrb.dm(b.j,e,16);break;case 2:Jrb.dm(b.j,e,32);break;case 3:Jrb.dm(b.j,e,48);}}}}if(Erb.k7(Hrb.rnb(v).substr(0,6),'M  RBC')||Erb.k7(Hrb.rnb(v).substr(0,6),'M  RBD')){s=Erb.V5(Erb.y7((Hrb.lnb(6,9,Hrb.rnb(v).length),Hrb.rnb(v).substr(6,3))),_ub,xsb);if(s>0){d=10;U=14;for(t=1;t<=s;++t,d+=8,U+=8){e=Erb.V5(Erb.y7((Hrb.lnb(d,d+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(d,d+3-d))),_ub,xsb)-1;L=Erb.V5(Erb.y7((Hrb.lnb(U,U+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(U,U+3-U))),_ub,xsb);switch(L){case 3:case -1:Jrb.cm(b.j,e,112,true);break;case 1:Jrb.cm(b.j,e,8,true);break;case 2:Jrb.cm(b.j,e,104,true);break;case 4:Jrb.cm(b.j,e,56,true);}}}}if(Erb.k7(Hrb.rnb(v).substr(0,6),'M  ALS')){e=Erb.V5(Erb.y7((Hrb.lnb(7,10,Hrb.rnb(v).length),Hrb.rnb(v).substr(7,3))),_ub,xsb)-1;if(e>=0){I=Erb.V5(Erb.y7((Hrb.lnb(10,13,Hrb.rnb(v).length),Hrb.rnb(v).substr(10,3))),_ub,xsb);i=(Hrb.mnb(14,Hrb.rnb(v).length),Hrb.rnb(v).charCodeAt(14)==84);S=tX(Drb.NY,Qsb,6,I,15,1);d=16;for(t=0;t<I;++t,d+=4){Q=Erb.y7((Hrb.lnb(d,d+4,Hrb.rnb(v).length),Hrb.rnb(v).substr(d,d+4-d)));S[t]=Jrb.Xm(Q,1)}Jrb.jm(b.j,e,6);Jrb.Zl(b.j,e,S,i)}}if(Erb.k7(Hrb.rnb(v).substr(0,6),'M  SUB')){s=Erb.V5(Erb.y7((Hrb.lnb(6,9,Hrb.rnb(v).length),Hrb.rnb(v).substr(6,3))),_ub,xsb);if(s>0){d=10;U=14;for(t=1;t<=s;++t,d+=8,U+=8){e=Erb.V5(Erb.y7((Hrb.lnb(d,d+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(d,d+3-d))),_ub,xsb)-1;O=Erb.V5(Erb.y7((Hrb.lnb(U,U+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(U,U+3-U))),_ub,xsb);if(O==-2){Jrb.cm(b.j,e,Vtb,true)}else if(O>0){P=0;for(j=0;j<b.j.r;j++){(Jrb.Ik(b.j,0,j)==e||Jrb.Ik(b.j,1,j)==e)&&++P}O>P&&Jrb.cm(b.j,e,qtb,true)}}}}if(Erb.k7(Hrb.rnb(v).substr(0,6),'M  RGP')){s=Erb.V5(Erb.y7((Hrb.lnb(6,9,Hrb.rnb(v).length),Hrb.rnb(v).substr(6,3))),_ub,xsb);if(s>0){d=10;U=14;for(t=1;t<=s;++t,d+=8,U+=8){e=Erb.V5(Erb.y7((Hrb.lnb(d,d+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(d,d+3-d))),_ub,xsb)-1;M=Erb.V5(Erb.y7((Hrb.lnb(U,U+3,Hrb.rnb(v).length),Hrb.rnb(v).substr(U,U+3-U))),_ub,xsb);M>=1&&M<=20&&Jrb.jm(b.j,e,Jrb.Xm('R'+M,2))}}}v=fsb.u4(c)}}catch(a){a=g3(a);if(zY(a,15)){n=a;Erb.Jz(n,(Erb.X7(),Erb.W7),'');String.fromCharCode(10);return false}else throw h3(a)}if(b.e){Jrb.Zq(b);Jrb.Kq(b)}(b.i&1)!=0&&(b.f=Jrb.Tn(b.j));Jrb.Pq(b,T);Jrb.ou(b.j,15);return true};\nJrb.cr=function cr(a,b){var c,d,e,f,g;!!a.b&&Krb.ijb(a.b);!!a.c&&Krb.ijb(a.c);e=0;d=fsb.u4(b);while(d!=null&&Erb.k7(Hrb.rnb(d).substr(0,7),cvb)){d=Erb.y7((Hrb.mnb(7,Hrb.rnb(d).length+1),Hrb.rnb(d).substr(7)));while(g=Hrb.rnb('-').length,Erb.k7(Hrb.rnb(d).substr(Hrb.rnb(d).length-g,g),'-')){c=fsb.u4(b);if(!Erb.k7(Hrb.rnb(c).substr(0,7),cvb)){return false}d=Erb.y7(Erb.g7(Erb.x7(d,0,Hrb.rnb(d).length-1),(Hrb.mnb(7,Hrb.rnb(c).length+1),Hrb.rnb(c).substr(7))))}if(Erb.k7(Hrb.rnb(d).substr(0,5),'BEGIN')){f=Erb.y7((Hrb.mnb(6,Hrb.rnb(d).length+1),Hrb.rnb(d).substr(6)));if(Erb.k7(Hrb.rnb(f).substr(0,4),'CTAB')){e=1}else if(Erb.k7(Hrb.rnb(f).substr(0,4),'ATOM')){e=2}else if(Erb.k7(Hrb.rnb(f).substr(0,4),'BOND')){e=3}else if(Erb.k7(Hrb.rnb(f).substr(0,10),'COLLECTION')){e=4}else{return false}}else if(Erb.k7(Hrb.rnb(d).substr(0,3),'END')){e=0}else if(e==1){Jrb.Xq(a,d)}else if(e==2){Jrb.Tq(a,d)}else if(e==3){Jrb.Vq(a,d)}else if(e==4){Jrb.Wq(a,d)}else{return false}d=fsb.u4(b)}while(d!=null&&!(Erb.k7(Hrb.rnb(d).substr(0,6),avb)||Erb.k7(d,bvb))){d=fsb.u4(b)}return true};Jrb.dr=function dr(){this.i=0};Jrb.er=function er(){this.i=1};Z3(110,1,{},Jrb.dr,Jrb.er);_.a=false;_.d=false;_.e=false;_.g=false;_.i=0;_.k=false;Drb.sZ=B5(110);Jrb.fr=function fr(a){};Jrb.gr=function gr(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J;Erb.P7(a.a,'M  V30 BEGIN CTAB\\n');Erb.P7(a.a,dvb+b.q+' '+b.r+' 0 0 0'+rsb);Erb.P7(a.a,'M  V30 BEGIN ATOM\\n');for(i=0;i<b.q;i++){Erb.P7(a.a,cvb+(i+1));if((b.v==null?null:b.v[i])!=null){k=b.v==null?null:b.v[i];u=E3(j3(b.B[i],1),0);Erb.P7(a.a,u?' NOT[':' [');for(s=0;s<k.length;s++){s>0&&Erb.P7(a.a,',');t=(Jrb.Ej(),Jrb.yj)[k[s]];switch(Hrb.rnb(t).length){case 2:case 3:case 1:Erb.P7(a.a,t);break;default:Erb.P7(a.a,'?');}}Erb.P7(a.a,']')}else E3(j3(b.B[i],1),0)?Erb.P7(a.a,' A'):b.C[i]>=129&&b.C[i]<=144||b.C[i]==154?Erb.P7(a.a,' R#'):Erb.P7(a.a,' '+(Jrb.Ej(),Jrb.yj)[b.C[i]]);if(c){Erb.P7(a.a,' '+IY(Hsb*a.b*b.J[i].a)/Hsb);Erb.P7(a.a,' '+IY(Hsb*a.b*-b.J[i].b)/Hsb);Erb.P7(a.a,' '+IY(Hsb*a.b*-b.J[i].c)/Hsb)}else{Erb.P7(a.a,' 0 0 0')}Erb.P7(a.a,' '+$wnd.Math.abs(b.w[i]));b.s[i]!=0&&Erb.P7(a.a,' CHG='+b.s[i]);if((b.u[i]&48)!=0){Erb.P7(a.a,' RAD=');switch(b.u[i]&48){case 16:Erb.P7(a.a,'1');break;case 32:Erb.P7(a.a,'2');break;case 48:Erb.P7(a.a,'3');}}if((b.u[i]&3)==1||(b.u[i]&3)==2){Erb.P7(a.a,' CFG=');(b.u[i]&3)==1?Erb.P7(a.a,'1'):Erb.P7(a.a,'2')}b.A[i]!=0&&Erb.P7(a.a,' MASS='+b.A[i]);J=((b.u[i]&Bub)>>>27)-1;J!=-1&&Erb.P7(a.a,' VAL='+(J==0?'-1':Erb.A6(J)));l=b.C[i];(l>=129&&l<=144||l==154)&&Erb.P7(a.a,' RGROUPS=(1 '+(l==154?0:l>=142?l-141:l-125)+')');r=j3(utb,b.B[i]);o3(r,384)==0?Erb.P7(a.a,' HCOUNT=2'):o3(r,128)==0?Erb.P7(a.a,' HCOUNT=1'):o3(r,1792)==0?Erb.P7(a.a,' HCOUNT=-1'):o3(r,1664)==0&&Erb.P7(a.a,' HCOUNT=1');G=j3(b.B[i],6144);o3(G,0)!=0&&(E3(j3(G,qtb),0)?Erb.P7(a.a,' SUBST='+(b.e[i]+1)):Erb.P7(a.a,' SUBST=-1'));C=j3(b.B[i],120);o3(C,0)!=0&&(o3(C,112)==0?Erb.P7(a.a,' RBCNT=-1'):o3(C,8)==0?Erb.P7(a.a,' RBCNT=2'):o3(C,104)==0?Erb.P7(a.a,' RBCNT=2'):o3(C,88)==0?Erb.P7(a.a,' RBCNT=3'):o3(C,56)==0&&Erb.P7(a.a,' RBCNT=4'));Erb.P7(a.a,rsb)}Erb.P7(a.a,'M  V30 END ATOM\\n');Erb.P7(a.a,'M  V30 BEGIN BOND\\n');for(n=0;n<b.r;n++){Erb.P7(a.a,cvb+(n+1));switch(b.H[n]){case 1:A=1;F=0;break;case 2:A=2;F=0;break;case 4:A=3;F=0;break;case 129:A=1;F=3;break;case 257:A=1;F=1;break;case 386:A=2;F=2;break;case 8:A=4;F=0;break;case 16:A=9;F=0;break;default:A=1;F=0;}p=b.G[n]&31;p!=0&&(p==8?(A=4):p==3?(A=5):p==9?(A=6):p==10?(A=7):(A=8));Erb.P7(a.a,' '+A+' '+(b.D[0][n]+1)+' '+(b.D[1][n]+1));F!=0&&Erb.P7(a.a,' CFG='+F);D=b.G[n]&384;H=D==0?0:D==256?1:2;H!=0&&Erb.P7(a.a,' TOPO='+H);Erb.P7(a.a,rsb)}Erb.P7(a.a,'M  V30 END BOND\\n');B=false;d=0;v=tX(Drb.NY,Qsb,6,32,15,1);f=tX(Drb.NY,Qsb,6,32,15,1);for(j=0;j<b.f;j++){if((b.u[j]&3)==1||(b.u[j]&3)==2){B=true;I=(b.u[j]&_tb)>>18;I==1?++f[(b.u[j]&_tb)>>18!=1&&(b.u[j]&_tb)>>18!=2?-1:(b.u[j]&Cub)>>20]:I==2?++v[(b.u[j]&_tb)>>18!=1&&(b.u[j]&_tb)>>18!=2?-1:(b.u[j]&Cub)>>20]:++d}}e=0;w=tX(Drb.NY,Qsb,6,32,15,1);g=tX(Drb.NY,Qsb,6,32,15,1);for(o=0;o<b.g;o++){if(Jrb.Qk(b,o)!=2&&((b.F[o]&3)==1||(b.F[o]&3)==2)){B=true;I=(b.F[o]&768)>>8;I==1?++g[(b.F[o]&768)>>8!=1&&(b.F[o]&768)>>8!=2?-1:(b.F[o]&Dub)>>10]:I==2?++w[(b.F[o]&768)>>8!=1&&(b.F[o]&768)>>8!=2?-1:(b.F[o]&Dub)>>10]:++e}}if(B){Erb.P7(a.a,'M  V30 BEGIN COLLECTION\\n');if(d!=0){Erb.P7(a.a,'M  V30 MDLV30/STEABS ATOMS=('+d);for(h=0;h<b.f;h++){((b.u[h]&3)==1||(b.u[h]&3)==2)&&(b.u[h]&_tb)>>18==0&&Erb.P7(a.a,' '+(h+1))}Erb.P7(a.a,evb)}if(e!=0){Erb.P7(a.a,'M  V30 MDLV30/STEABS BONDS=('+e);for(m=0;m<b.g;m++){Jrb.Qk(b,m)!=2&&((b.F[m]&3)==1||(b.F[m]&3)==2)&&(b.F[m]&768)>>8==0&&Erb.P7(a.a,' '+(m+1))}Erb.P7(a.a,evb)}for(q=0;q<32;q++){if(v[q]!=0){Erb.P7(a.a,fvb+(q+1)+' ATOMS=('+v[q]);for(h=0;h<b.f;h++){((b.u[h]&3)==1||(b.u[h]&3)==2)&&(b.u[h]&_tb)>>18==2&&((b.u[h]&_tb)>>18!=1&&(b.u[h]&_tb)>>18!=2?-1:(b.u[h]&Cub)>>20)==q&&Erb.P7(a.a,' '+(h+1))}Erb.P7(a.a,evb)}if(f[q]!=0){Erb.P7(a.a,gvb+(q+1)+' ATOMS=('+f[q]);for(h=0;h<b.f;h++){((b.u[h]&3)==1||(b.u[h]&3)==2)&&(b.u[h]&_tb)>>18==1&&((b.u[h]&_tb)>>18!=1&&(b.u[h]&_tb)>>18!=2?-1:(b.u[h]&Cub)>>20)==q&&Erb.P7(a.a,' '+(h+1))}Erb.P7(a.a,evb)}if(w[q]!=0){Erb.P7(a.a,fvb+(q+1)+' BONDS=('+w[q]);for(m=0;m<b.g;m++){Jrb.Qk(b,m)!=2&&((b.F[m]&3)==1||(b.F[m]&3)==2)&&(b.F[m]&768)>>8==2&&((b.F[m]&768)>>8!=1&&(b.F[m]&768)>>8!=2?-1:(b.F[m]&Dub)>>10)==q&&Erb.P7(a.a,' '+(m+1))}Erb.P7(a.a,evb)}if(g[q]!=0){Erb.P7(a.a,gvb+(q+1)+' BONDS=('+g[q]);for(m=0;m<b.g;m++){Jrb.Qk(b,m)!=2&&((b.F[m]&3)==1||(b.F[m]&3)==2)&&(b.F[m]&768)>>8==1&&((b.F[m]&768)>>8!=1&&(b.F[m]&768)>>8!=2?-1:(b.F[m]&Dub)>>10)==q&&Erb.P7(a.a,' '+(m+1))}Erb.P7(a.a,evb)}}Erb.P7(a.a,'M  V30 END COLLECTION\\n')}Erb.P7(a.a,'M  V30 END CTAB\\n')};Jrb.hr=function hr(){Jrb.fr(this);this.a=new Erb.T7};Jrb.ir=function ir(a){Jrb.jr.call(this,a)};Jrb.jr=function jr(a){Jrb.kr.call(this,a,new Erb.T7)};Jrb.kr=function kr(a,b){var c,d;Jrb.fr(this);Jrb.ou(a,15);this.a=b;d=a.P!=null?a.P:'';Erb.P7(this.a,d+rsb);Erb.P7(this.a,'Actelion Java MolfileCreator 2.0\\n\\n');Erb.P7(this.a,'  0  0  0  0  0  0              0 V3000\\n');this.b=1;c=Jrb.mr(a);c&&(this.b=Jrb.lr(a));Jrb.gr(this,a,c);Erb.P7(this.a,Zub)};Jrb.lr=function lr(a){var b,c,d,e,f,g,h,i,j;j=1;d=Jrb.Fk(a,a.q,a.r,(Jrb.Ej(),Jrb.Dj));if(d!=0){(d<1||d>3)&&(j=1.5/d)}else{i=hvb;for(b=1;b<a.q;b++){for(c=0;c<b;c++){f=a.J[c].a-a.J[b].a;g=a.J[c].b-a.J[b].b;h=a.J[c].c-a.J[b].c;e=f*f+g*g+h*h;i>e&&(i=e)}}j=3/$wnd.Math.max(0.75,i)}return j};Jrb.mr=function mr(a){var b;if(a.q==1)return true;for(b=1;b<a.q;b++){if(a.J[b].a!=a.J[0].a||a.J[b].b!=a.J[0].b||a.J[b].c!=a.J[0].c){return true}}return false};Jrb.nr=function nr(a,b){var c;c=new Jrb.hr;c.b=b;Jrb.ou(a,15);Jrb.gr(c,a,true);return c.a.a};Z3(125,1,{},Jrb.hr,Jrb.ir);_.b=1;Drb.tZ=B5(125);Jrb.or=function or(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;j=a.g.M;k=0;for(f=0;f<c;f++){if(j>b[f]){j=b[f];k=f}}p=tX(Drb.NY,Qsb,6,c,15,1);i=k>0?k-1:c-1;l=k<c-1?k+1:0;g=b[i]<b[l];for(e=0;e<c;e++){p[e]=b[k];g?--k<0&&(k=c-1):++k==c&&(k=0)}for(o=new Krb.ueb(a.i);o.a<o.c.a.length;){n=Krb.teb(o);if(n.length==c){d=true;for(h=0;h<c;h++){if(n[h]!=p[h]){d=false;break}}if(d)return}}Krb.Ei(a.i,p);m=Jrb.Ar(a,p);Krb.Ei(a.j,m);Jrb.Rr(a,p,m)};Jrb.pr=function pr(a,b,c){var d,e,f,g,h,i,j;i=tX(Drb.NY,Qsb,6,a.f,15,1);g=tX(Drb.NY,Qsb,6,a.f,15,1);j=tX(Drb.c3,itb,6,a.g.f,16,1);d=Jrb.Ik(a.g,0,b);e=Jrb.Ik(a.g,1,b);i[0]=d;i[1]=e;g[1]=-1;j[e]=true;h=1;while(h>=1){++g[h];if(g[h]==Jrb.Gn(a.g,i[h])){j[i[h]]=false;--h;continue}f=Jrb.Fn(a.g,i[h],g[h]);if(j[f]||c[f])continue;if(f==d&&h>1){Jrb.or(a,i,h+1);if(a.i.a.length>=vtb)return;continue}if(h+1<a.f){++h;i[h]=f;j[f]=true;g[h]=-1}}};Jrb.qr=function qr(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;A=Krb.Ji(a.i,b);for(l=A,m=0,n=l.length;m<n;++m){k=l[m];if(!Jrb.Nr(a,k))return true}B=Krb.Ji(a.j,b);C=B.length;o=0;j=0;D=false;for(v=0;v<C;v++){o<<=1;j<<=1;if(Jrb.Pr(a,B[v])){o|=1}else if(h&&Jrb.Mr(a,B[v])){o|=1;j|=1}else{i=c[b][v];if(i!=-1){if(d[i]){if(e[i]){o|=1;f[i]||(j|=1)}}else{D=true}}}}u=false;switch(C){case 3:p=BX(nX(Drb.NY,1),Qsb,6,15,[2,1,4]);u=true;for(t=0;t<3;t++){if((o&p[t])==p[t]){if(Jrb.Dk(a.g,A[t])==6&&Jrb.mk(a.g,A[t])==1||Jrb.Dk(a.g,A[t])==5&&Jrb.mk(a.g,A[t])==0){e[b]=true;g[b]=t;(j&p[t])==0&&(u=false)}}}break;case 5:q=BX(nX(Drb.NY,1),Qsb,6,15,[10,5,18,9,20]);u=true;for(w=0;w<5;w++){if((o&q[w])==q[w]){switch(Jrb.Dk(a.g,A[w])){case 6:if(Jrb.mk(a.g,A[w])==-1){e[b]=true;g[b]=w;(j&q[w])==0&&(u=false)}break;case 7:if(Jrb.mk(a.g,A[w])<=0){e[b]=true;g[b]=w}break;case 8:e[b]=true;g[b]=w;break;case 16:case 34:case 52:if(Jrb.Gn(a.g,A[w])==2){e[b]=true;g[b]=w}}}}break;case 6:u=true;if((o&21)==21){e[b]=true;(j&21)==0&&(u=false)}if((o&42)==42){e[b]=true;(j&42)==0&&(u=false)}break;case 7:r=BX(nX(Drb.NY,1),Qsb,6,15,[42,21,74,37,82,41,84]);u=true;for(s=0;s<7;s++){if((o&r[s])==r[s]){if(Jrb.Dk(a.g,A[s])==6&&(Jrb.mk(a.g,A[s])==1||h&&Jrb.Dr(a,A[s]))||Jrb.Dk(a.g,A[s])==5&&Jrb.mk(a.g,A[s])==0){e[b]=true;g[b]=s;(j&r[s])==0&&(u=false)}}}}e[b]&&!u&&(f[b]=true);if(e[b])return true;return !D};Jrb.rr=function rr(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q;f=tX(Drb.NY,lub,7,a.i.a.length,0,2);for(j=0;j<a.i.a.length;j++){f[j]=tX(Drb.NY,Qsb,6,Krb.Ji(a.i,j).length,15,1);for(k=0;k<Krb.Ji(a.i,j).length;k++)f[j][k]=-1}p=tX(Drb.NY,Qsb,6,a.g.g,15,1);for(n=0;n<a.j.a.length;n++){o=Krb.Ji(a.j,n);if(o.length==3||o.length>=5&&o.length<=7){for(i=0;i<o.length;i++){h=o[i];if(Jrb.Gn(a.g,Jrb.Ik(a.g,0,h))==3&&Jrb.Gn(a.g,Jrb.Ik(a.g,1,h))==3){if(p[h]>0){f[p[h]>>>16][p[h]&32767]=n;f[n][i]=p[h]>>>16}else{p[h]=(n<<16)+Iub+i}}}}}g=tX(Drb.c3,itb,6,a.i.a.length,16,1);q=0;l=-1;while(q>l){l=q;for(m=0;m<a.i.a.length;m++){if(!g[m]){if(Jrb.qr(a,m,f,g,b,c,d,e)){g[m]=true;++q}}}}};Jrb.sr=function sr(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;e=Jrb.Ik(a.g,0,b);f=Jrb.Ik(a.g,1,b);i=tX(Drb.NY,Qsb,6,a.g.f,15,1);j=tX(Drb.NY,Qsb,6,a.g.f,15,1);k=tX(Drb.NY,Qsb,6,a.g.f,15,1);i[0]=e;i[1]=f;j[e]=1;j[f]=2;k[e]=-1;k[f]=e;h=1;l=1;while(h<=l){for(m=0;m<Jrb.Gn(a.g,i[h]);m++){g=Jrb.Fn(a.g,i[h],m);if(h>1&&g==e){o=tX(Drb.NY,Qsb,6,j[i[h]],15,1);d=i[h];for(n=0;n<o.length;n++){o[n]=d;d=k[d]}return o}if(j[g]==0&&!c[g]){i[++l]=g;j[g]=j[i[h]]+1;k[g]=i[h]}}++h}return null};Jrb.tr=function tr(a,b,c){var d,e;e=Krb.Ji(a.i,b);for(d=0;d<e.length;d++)if(c==e[d])return d;return -1};Jrb.ur=function ur(a,b){return a.a[b]&Gsb};Jrb.vr=function vr(a,b,c){var d,e;e=Krb.Ji(a.j,b);for(d=0;d<e.length;d++)if(c==e[d])return d;return -1};Jrb.wr=function wr(a,b){return a.b[b]&Gsb};Jrb.xr=function xr(a,b){return a.c[b]};Jrb.yr=function yr(a,b){return Krb.Ji(a.i,b)};Jrb.zr=function zr(a,b){return Krb.Ji(a.j,b)};Jrb.Ar=function Ar(a,b){var c,d,e,f,g;f=b.length;g=tX(Drb.NY,Qsb,6,f,15,1);for(d=0;d<f;d++){c=d==f-1?b[0]:b[d+1];for(e=0;e<Jrb.Gn(a.g,b[d]);e++){if(Jrb.Fn(a.g,b[d],e)==c){g[d]=Jrb.Hn(a.g,b[d],e);break}}}return g};Jrb.Br=function Br(a,b){return Krb.Ji(a.j,b).length};Jrb.Cr=function Cr(a,b,c){var d;for(d=0;d<a.j.a.length;d++)if(Jrb.Ir(a,d,b)&&Jrb.Ir(a,d,c))return d;return -1};Jrb.Dr=function Dr(a,b){var c;for(c=0;c<Jrb.Gn(a.g,b);c++)if(Jrb.In(a.g,b,c)==2&&Jrb.Dk(a.g,Jrb.Fn(a.g,b,c))==8)return true;return false};Jrb.Er=function Er(a,b){return a.d[b]};Jrb.Fr=function Fr(a,b){return (a.a[b]&Fsb)!=0};Jrb.Gr=function Gr(a,b){return (a.b[b]&Fsb)!=0};Jrb.Hr=function Hr(a,b,c){var d,e;e=Krb.Ji(a.i,b);for(d=0;d<e.length;d++)if(c==e[d])return true;return false};Jrb.Ir=function Ir(a,b,c){var d,e;e=Krb.Ji(a.j,b);for(d=0;d<e.length;d++)if(c==e[d])return true;return false};Jrb.Jr=function Jr(a,b){return a.e[b]};Jrb.Kr=function Kr(a,b){return (a.b[b]&oub)!=0};Jrb.Lr=function Lr(a,b){return (a.a[b]&bub)!=0};Jrb.Mr=function Mr(a,b){var c,d,e,f,g,h;for(g=0;g<2;g++){c=Jrb.Ik(a.g,g,b);if(Jrb.Dk(a.g,c)==7&&Jrb.Gn(a.g,c)==2){d=Jrb.Ik(a.g,1-g,b);if(Jrb.Dk(a.g,d)==6){for(h=0;h<Jrb.Gn(a.g,d);h++){e=Jrb.Fn(a.g,d,h);f=Jrb.Hn(a.g,d,h);if((Jrb.Dk(a.g,e)==8||Jrb.Dk(a.g,e)==16)&&Jrb.Qk(a.g,f)==2&&Jrb.Gn(a.g,e)==1)return true}}}}return false};Jrb.Nr=function Nr(a,b){var c,d,e,f,g;if(a.g.K){if(E3(j3(Jrb.yk(a.g,b),1),0)){return true}else{g=Jrb.tk(a.g,b);if(g!=null){for(d=g,e=0,f=d.length;e<f;++e){c=d[e];if(c==5||c==6||c==7||c==8||c==15||c==16||c==33||c==34)return true}return false}}}return Jrb.Vr(Jrb.Dk(a.g,b))};Jrb.Or=function Or(a,b){var c,d,e,f,g;if(a.g.K){if(E3(j3(Jrb.yk(a.g,b),1),0))return false;c=Jrb.tk(a.g,b);if(c!=null){for(e=c,f=0,g=e.length;f<g;++f){d=e[f];if(!Jrb.Ym(d))return false}return true}}return Jrb.Ym(Jrb.Dk(a.g,b))};Jrb.Pr=function Pr(a,b){return Jrb.Qk(a.g,b)>1||Jrb.Tk(a.g,b)==8};Jrb.Qr=function Qr(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;for(q=0;q<a.d.length;q++){if(a.d[q]){p=false;for(d=Krb.Ji(a.i,q),f=0,h=d.length;f<h;++f){b=d[f];a.a[b]|=Fsb;Jrb.Or(a,b)&&(p=true)}for(k=Krb.Ji(a.j,q),m=0,o=k.length;m<o;++m){i=k[m];a.b[i]|=Fsb}if(a.e[q]){for(c=Krb.Ji(a.i,q),e=0,g=c.length;e<g;++e){b=c[e];a.a[b]|=oub}for(j=Krb.Ji(a.j,q),l=0,n=j.length;l<n;++l){i=j[l];a.b[i]|=oub}}if(p){for(c=Krb.Ji(a.i,q),e=0,g=c.length;e<g;++e){b=c[e];a.a[b]|=bub}for(j=Krb.Ji(a.j,q),l=0,n=j.length;l<n;++l){i=j[l];a.b[i]|=bub}}}}};Jrb.Rr=function Rr(a,b,c){var d,e,f,g;g=b.length;for(f=0;f<g;f++){d=a.a[b[f]]&Gsb;if(d==0||d>g){a.a[b[f]]&=vub;a.a[b[f]]|=g}}for(e=0;e<g;e++){d=a.b[c[e]]&Gsb;if(d==0||d>g){a.b[c[e]]&=vub;a.b[c[e]]|=g}}};Jrb.Sr=function Sr(a,b,c){var d;d=Krb.Ji(a.j,b).length;while(c>=d)c-=d;while(c<0)c+=d;return c};Jrb.Tr=function Tr(a,b){Jrb.Ur.call(this,a,b)};Jrb.Ur=function Ur(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;this.g=a;this.f=7;this.i=new Krb.Yi;this.j=new Krb.Yi;this.a=tX(Drb.NY,Qsb,6,this.g.f,15,1);this.b=tX(Drb.NY,Qsb,6,this.g.g,15,1);this.g.zb(1);m=tX(Drb.c3,itb,6,this.g.f,16,1);n=tX(Drb.c3,itb,6,this.g.g,16,1);do{g=false;for(c=0;c<this.g.f;c++){if(!m[c]){q=0;for(l=0;l<Jrb.Gn(this.g,c);l++)m[Jrb.Fn(this.g,c,l)]||++q;if(q<2){m[c]=true;for(k=0;k<Jrb.Gn(this.g,c);k++)n[Jrb.Hn(this.g,c,k)]=true;g=true}}}}while(g);s=0;while(s<this.g.f&&m[s])++s;if(s==this.g.f)return;i=tX(Drb.NY,Qsb,6,this.g.f,15,1);i[0]=s;p=tX(Drb.NY,Qsb,6,this.g.f,15,1);p[0]=-1;h=tX(Drb.NY,Qsb,6,this.g.f,15,1);h[s]=1;f=0;j=0;o=1;while(f<=j){for(k=0;k<Jrb.Gn(this.g,i[f]);k++){e=Jrb.Fn(this.g,i[f],k);if(e==p[i[f]])continue;if(h[e]!=0){Jrb.pr(this,Jrb.Hn(this.g,i[f],k),m);continue}if(!m[e]){h[e]=o;p[e]=i[f];i[++j]=e}}++f;if(f>j){for(c=0;c<this.g.f;c++){if(h[c]==0&&!m[c]){h[c]=++o;i[++j]=c;p[c]=-1;break}}}}if((b&4)!=0){this.d=tX(Drb.c3,itb,6,this.i.a.length,16,1);this.e=tX(Drb.c3,itb,6,this.i.a.length,16,1);this.c=tX(Drb.NY,Qsb,6,this.i.a.length,15,1);Jrb.rr(this,this.d,this.e,this.c,(b&8)!=0);Jrb.Qr(this)}if((b&2)!=0){for(d=0;d<this.g.g;d++){if(!n[d]&&Jrb.Qk(this.g,d)!=0){r=Jrb.sr(this,d,m);r!=null&&Jrb.Rr(this,r,Jrb.Ar(this,r))}}}};Jrb.Vr=function Vr(a){return a==5||a==6||a==7||a==8||a==15||a==16||a==33||a==34};Z3(127,1,{},Jrb.Tr);_.f=0;Drb.uZ=B5(127);Jrb.Wr=function Wr(a,b){var c,d,e,f,g,h,i,j,k,l,m;if(b==2||b==5){Krb.Ei(a.D,Jrb.zs(a.F,a.F.length));!!a.b&&Krb.Ei(a.a,Jrb.As(a.B,a.B.length))}else if(b==4){m=Jrb.gs(Jrb.zs(a.F,a.F.length));if(!Krb.kkb(a.N,m)){Krb.ikb(a.N,m);Krb.Ei(a.D,Jrb.zs(a.F,a.F.length));!!a.b&&Krb.Ei(a.a,Jrb.As(a.B,a.B.length))}}else if(b==3){m=Jrb.gs(Jrb.zs(a.F,a.F.length));if(!Krb.kkb(a.N,m)){l=false;for(j=(h=new Krb.Hjb((new Krb.Njb((new Krb.ydb(a.N.a)).a)).b),new Krb.Hdb(h));Krb.gcb(j.a.a);){i=(g=Krb.Fjb(j.a),g.mc());k=0;for(d=m,e=0,f=d.length;e<f;++e){c=d[e];while(k<i.length&&i[k]<c)++k;if(k<i.length){if(c==i[k]){l=true;break}}}if(l)break}if(!l){Krb.ikb(a.N,m);Krb.Ei(a.D,Jrb.zs(a.F,a.F.length));!!a.b&&Krb.Ei(a.a,Jrb.As(a.B,a.B.length))}}}else if(b==6){m=Jrb.hs(a,Jrb.zs(a.F,a.F.length));if(!Krb.kkb(a.N,m)){Krb.ikb(a.N,m);Krb.Ei(a.D,Jrb.zs(a.F,a.F.length));!!a.b&&Krb.Ei(a.a,Jrb.As(a.B,a.B.length))}}};Jrb.Xr=function Xr(a,b,c){var d,e,f,g,h,i,j,k,l,m;h=Jrb.Gn(a.G,b);d=a.n[c];if(d>h)return false;j=Jrb.yk(a.G,b);f=Jrb.yk(a.g,c);e=Jrb.tk(a.g,c);i=Jrb.tk(a.G,b);if(E3(j3(f,1),0)){if(e!=null){if(E3(j3(j,1),0)){if(i==null)return false;if(!Jrb.ms(e,i))return false}else{if(i!=null){if(Jrb.os(i,e))return false}else{if(Jrb.ls(Jrb.Dk(a.G,b),e))return false}}}}else{if(E3(j3(j,1),0))return false;if(e!=null){if(i!=null){if(!Jrb.ms(i,e))return false}else{if(!Jrb.ls(Jrb.Dk(a.G,b),e))return false}}else{if(i!=null)return false;if(a.I[b]!=a.j[c])return false}}if(E3(G3(j,f),0)){if(E3(j3(f,Vtb),0)){if(a.G.K&&t3(j3(j,Vtb),0))return false;else if(d!=h)return false}if(E3(j3(f,qtb),0)){if(d>=h&&t3(j3(j,qtb),0))return false}}if(E3(j3(a.H[b],F3(a.i[c])),0))return false;if(E3(j3(a.A[c],F3(a.L[b])),0))return false;g=j3(f,Usb);if(a.G.K){k=j3(f,Usb);if(o3(k,0)!=0&&(o3(g,0)==0||E3(j3(g,F3(k)),0)))return false}else{if(o3(g,0)!=0&&t3(j3(g,a.L[b]),0))return false}if(Jrb.mk(a.g,c)!=0&&Jrb.mk(a.g,c)!=Jrb.mk(a.G,b))return false;if(Jrb.wk(a.g,c)!=0&&Jrb.wk(a.g,c)!=Jrb.wk(a.G,b))return false;if(Jrb.zk(a.g,c)!=0&&Jrb.zk(a.g,c)!=Jrb.zk(a.G,b))return false;l=N3(I3(j3(Jrb.yk(a.g,c),Stb),22));if(l!=0){if(a.G.K){m=N3(I3(j3(Jrb.yk(a.G,b),Stb),22));if(l!=m)return false}else{if(Jrb.An(a.G,b)!=l)return false}}return true};Jrb.Yr=function Yr(a,b,c){var d,e,f,g,h,i,j,k,l,m;j=a.J[b];g=a.k[c];if((Jrb.Sk(a.g,c)&uub)!=0){i=Jrb.Uk(a.G,b);e=Jrb.Uk(a.g,c);f=Jrb.Sk(a.g,c)&31;if(i!=e&&!(i==1&&(f&1)!=0)&&!(i==2&&(f&2)!=0)&&!(i==4&&(f&4)!=0)&&!(i==32&&(f&32)!=0)&&!(i==64&&(f&64)!=0)&&!(i==16&&(f&16)!=0)&&!(i==8&&(f&8)!=0))return false;j&=-32;g&=-32}if((j&~g)!=0)return false;m=(Jrb.Sk(a.g,c)&Gtb)>>17;if(m!=0){if(a.G.K&&m==(Jrb.Sk(a.G,c)&Gtb)>>17)return true;if(m<=2){k=Jrb.En(a.G,b);return m==1?k>=8&&k<=12:k>=12}d=false;l=Jrb.jo(a.G);for(h=0;h<l.i.a.length;h++){if(Krb.Ji(l.j,h).length==m){if(Jrb.Ir(l,h,b)){d=true;break}}}if(!d)return false}return true};Jrb.Zr=function Zr(a){var b,c;a.b=null;for(b=0;b<a.g.g;b++){if(Jrb.ll(a.g,b)){!a.b&&(a.b=new Krb.Yi);c=new Jrb.Bs;c.a=Jrb.Ik(a.g,0,b);c.b=Jrb.Ik(a.g,1,b);c.d=Jrb.Kk(a.g,b);c.c=Jrb.Jk(a.g,b);Krb.Ei(a.b,c)}}};Jrb.$r=function $r(a){var b,c,d,e,f,g,h,i,j,k,l,m;Jrb.ou(a.g,a.M);i=$wnd.Math.max(a.g.f,a.g.g)+16;a.r=tX(Drb.NY,Qsb,6,i,15,1);a.t=tX(Drb.NY,Qsb,6,i,15,1);a.u=tX(Drb.NY,Qsb,6,i,15,1);a.s=tX(Drb.c3,itb,6,i+1,16,1);g=tX(Drb.c3,itb,6,a.g.f,16,1);h=tX(Drb.c3,itb,6,a.g.g,16,1);d=0;for(c=0;c<a.g.f;c++){if(!a.C[c]&&!g[c]){a.r[d]=c;a.u[d]=-1;a.t[d]=-1;j=d;while(d<=j){for(k=0;k<Jrb.sn(a.g,a.r[d]);k++)j=Jrb.ws(a,d,j,k,g,h,-1);while(a.s[++d]);}}}a.v=d;if(a.o!=0){j=a.v-1;for(f=0;f<a.d;f++){d=0;while(d<=j){for(l=0;l<Jrb.sn(a.g,a.r[d]);l++)j=Jrb.ws(a,d,j,l,g,h,f);while(a.s[++d]);}}for(b=0;b<a.g.f;b++){if(a.C[b]&&!g[b]){a.r[d]=b;a.u[d]=-1;a.t[d]=-1;j=d;while(d<=j){for(l=0;l<Jrb.sn(a.g,a.r[d]);l++)Jrb.Fn(a.g,a.r[d],l)<a.g.f&&(j=Jrb.ws(a,d,j,l,g,h,a.f[b]));while(a.s[++d]);}}}a.e=tX(Drb.NY,Qsb,6,a.d,15,1);for(m=0;m<a.d;m++)a.e[m]=-1;for(k=a.v;k<d;k++){e=a.f[a.r[k]];a.e[e]==-1&&(a.e[e]=k)}}a.w=d};Jrb._r=function _r(a,b){var c,d,e,f,g,h,i,j;j=Jrb.jo(a.G);for(h=0;h<j.i.a.length;h++){if(Jrb.Ir(j,h,b)){i=tX(Drb.NY,Qsb,6,2,15,1);for(e=0;e<2;e++){i[e]=xsb;d=Jrb.Ik(a.G,e,b);for(f=0;f<Jrb.Gn(a.G,d);f++){c=Jrb.Fn(a.G,d,f);c!=Jrb.Ik(a.G,1-e,b)&&i[e]>c&&(i[e]=c)}}g=0;Jrb.Hr(j,h,i[0])&&++g;Jrb.Hr(j,h,i[1])&&++g;if(g==2)return 2;if(g==1)return 1;return 2}}return 0};Jrb.as=function as(a,b,c){var d,e,f,g,h;if(a.b){a.B=tX(Drb.c3,itb,6,b.length,16,1);for(e=new Krb.ueb(a.b);e.a<e.c.a.length;){d=Krb.teb(e);if(a.f==null||c==-1&&a.f[d.a]==-1&&a.f[d.b]==-1||c!=-1&&(a.f[d.a]==c||a.f[d.b]==c)){h=tX(Drb.NY,Qsb,6,d.c+2,15,1);f=Jrb.co(a.G,h,a.F[d.a],a.F[d.b],d.c+1,b,null)-1;if(f<d.d||f>d.c)return false;for(g=1;g<=f;g++)a.B[h[g]]=true}}}return true};Jrb.bs=function bs(a,b){var c,d,e,f,g,h,i,j;for(e=0;e<a.g.g;e++){if((Jrb.Sk(a.g,e)&qub)!=0){f=Jrb.Rk(a.g,e);if(f==0)continue;c=Jrb.Ik(a.g,0,e);d=Jrb.Ik(a.g,1,e);if(a.f==null||b==-1&&a.f[c]==-1&&a.f[d]==-1||b!=-1&&(a.f[c]==b||a.f[d]==b)){g=a.F[c];h=a.F[d];i=Jrb.Dn(a.G,g,h);j=Jrb.Rk(a.G,i);if(j==0){Jrb.Po(a.G,i)&&(j=Jrb._r(a,i));if(j==0)continue}if(f==3)continue;if(j==3)continue;if(Jrb.is(a,e)==(f==j))return false}}}return true};Jrb.cs=function cs(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;g=0;for(i=0;i<a.g.f;i++){if((a.f==null||a.f[i]==b)&&E3(j3(Jrb.yk(a.g,i),Utb),0)){m=a.F[i];l=Jrb.xk(a.g,i);o=Jrb.xk(a.G,m);if(l==0)continue;if(l==3)continue;if(o==0||o==3)return false;if(Jrb.rk(a.g,i)==1){++g;continue}if(Jrb.rk(a.G,m)==1)return false;if(Jrb.rk(a.g,i)==2){++g;continue}if(Jrb.rk(a.G,m)==2)return false;if(Jrb.ns(a,i)==(l==o))return false}}if(g!=0){e=tX(Drb.NY,Qsb,6,g,15,1);f=0;for(j=0;j<a.g.f;j++){if((a.f==null||a.f[j]==b)&&E3(j3(Jrb.yk(a.g,j),Utb),0)){l=Jrb.xk(a.g,j);l!=0&&l!=3&&(e[f++]=Jrb.qk(a.g,j)<<24|Jrb.rk(a.g,j)<<22|j)}}Hrb.Nmb(e,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));f=0;while(f<e.length){k=e[f]&Nub;n=a.F[k];c=e[f]&-4194304;d=Jrb.ns(a,k)^Jrb.xk(a.g,k)==Jrb.xk(a.G,n);for(++f;f<e.length&&(e[f]&-4194304)==c;f++){h=e[f]&Nub;m=a.F[h];if(Jrb.rk(a.G,m)!=Jrb.rk(a.G,n)||Jrb.qk(a.G,m)!=Jrb.qk(a.G,n))return false;p=Jrb.ns(a,h)^Jrb.xk(a.g,h)==Jrb.xk(a.G,m);if(p!=d)return false}}}return true};Jrb.ds=function ds(a,b,c){var d,e,f,g,h,i,j;a.O=false;a.D=new Krb.Yi;a.a=new Krb.Yi;Krb.ijb(a.N.a);if(!a.G||!a.g)return 0;if(a.g.f-a.o>a.G.f||a.g.g-a.p>a.G.g)return 0;if(a.g.f==0)return 0;b==6&&(a.M=63);Jrb.ss(a,c);d=tX(Drb.c3,itb,6,a.G.f,16,1);a.F=tX(Drb.NY,Qsb,6,a.g.f,15,1);Krb.Geb(a.F);h=tX(Drb.NY,Qsb,6,a.w,15,1);Krb.Meb(h,h.length,-1);f=0;while(!a.O){if(a.v!=0){j=a.t[f]==-1?a.G.f:Jrb.sn(a.G,a.F[a.t[f]]);++h[f];if(h[f]==j){h[f]=-1;if(f==0)break;--f;a.s[f]||(d[a.F[a.r[f]]]=false);continue}if(a.t[f]==-1){if(!d[h[f]]){if(Jrb.Xr(a,h[f],a.r[f])){a.F[a.r[f]]=h[f];d[h[f]]=true;++f}}}else{if(Jrb.Fn(a.G,a.F[a.t[f]],h[f])>=a.G.f)continue;e=Jrb.Fn(a.G,a.F[a.t[f]],h[f]);if(a.s[f]){e==a.F[a.r[f]]&&Jrb.Yr(a,Jrb.Hn(a.G,a.F[a.t[f]],h[f]),a.u[f])&&++f}else{if(!d[e]){if(Jrb.Xr(a,e,a.r[f])&&Jrb.Yr(a,Jrb.Hn(a.G,a.F[a.t[f]],h[f]),a.u[f])){d[e]=true;a.F[a.r[f]]=e;++f}}}}}if(f==a.v){if(Jrb.cs(a,-1)&&Jrb.bs(a,-1)&&Jrb.as(a,d,-1)){i=false;for(g=0;g<a.d;g++){if(Jrb.js(a,d,h,g)){i=true;break}}if(b==1&&!i)return 1;if(!i){Jrb.Wr(a,b);if(b==2)return 1}}if(f==0)break;--f;a.s[f]||(d[a.F[a.r[f]]]=false)}}return a.D.a.length};Jrb.es=function es(a,b){var c,d,e,f,g,h,i,j;i=0;if(a.K){b<a.f&&Jrb.Lr(a.p,b)?(i=G3(i,ivb)):b<a.f&&Jrb.Fr(a.p,b)&&(i=G3(i,2));j=(e=a.u[b]&Oub,e==0?0:e==vtb?2:e==Vtb?3:4);if(j!=0){i=G3(i,8);j>2&&(i=G3(i,16));j>3&&(i=G3(i,32))}c=a.s[b];c<0?(i=G3(i,ztb)):c>0&&(i=G3(i,ytb));g=a.j[b];switch(g){case 0:break;case 1:i=G3(i,oub);break;case 2:i=G3(i,Ftb);break;case 3:i=G3(i,Gtb);break;default:i=G3(i,Htb);}d=Jrb.vn(a,b);switch(d){case 0:break;case 1:i=G3(i,Otb);break;case 2:i=G3(i,Ptb);break;case 3:i=G3(i,Qtb);break;default:i=G3(i,Rtb);}h=a.o[b];h>0&&(i=G3(i,ptb));h>1&&(i=G3(i,Iub))}else{b<a.f&&Jrb.Lr(a.p,b)?(i=G3(i,ivb)):b<a.f&&Jrb.Fr(a.p,b)?(i=G3(i,2)):(i=G3(i,4));(a.u[b]&Hub)!=0?(i=G3(i,rtb)):(i=G3(i,stb));j=(e=a.u[b]&Oub,e==0?0:e==vtb?2:e==Vtb?3:4);j==0?(i=G3(i,112)):j==2?(i=G3(i,104)):j==3?(i=G3(i,88)):(i=G3(i,56));c=a.s[b];c==0?(i=G3(i,xtb)):c<0?(i=G3(i,ztb)):(i=G3(i,ytb));f=a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b);switch(f){case 0:i=G3(i,1792);break;case 1:i=G3(i,1664);break;case 2:i=G3(i,1408);break;default:i=G3(i,896);}g=a.j[b];switch(g){case 0:i=G3(i,3932160);break;case 1:i=G3(i,3801088);break;case 2:i=G3(i,Ctb);break;case 3:i=G3(i,Dtb);break;default:i=G3(i,Htb);}d=Jrb.vn(a,b);switch(d){case 0:i=G3(i,Jtb);break;case 1:i=G3(i,Ktb);break;case 2:i=G3(i,Ltb);break;case 3:i=G3(i,Mtb);break;default:i=G3(i,Rtb);}h=a.o[b];switch(h){case 0:i=G3(i,98304);break;case 1:i=G3(i,81920);break;default:i=G3(i,49152);}}return i};Jrb.fs=function fs(a,b){var c;c=0;if(b<a.g&&(Jrb.Kr(a.p,b)||a.H[b]==8)||a.H[b]==8)c|=8;else switch(Jrb.Qk(a,b)){case 0:c|=16;break;case 1:c|=1;break;case 2:c|=2;break;case 3:c|=4;break;case 4:c|=32;break;case 5:c|=64;}(a.F[b]&64)!=0?(c|=256):a.K||(c|=128);b<a.g&&Jrb.Gr(a.p,b)?(c|=Etb):a.K||(c|=jvb);return c};Jrb.gs=function gs(a){var b,c,d,e,f,g,h,i,j,k;i=0;for(d=a,f=0,h=d.length;f<h;++f){b=d[f];b==-1&&++i}if(i!=0){k=a;a=tX(Drb.NY,Qsb,6,k.length-i,15,1);j=0;for(c=k,e=0,g=c.length;e<g;++e){b=c[e];b!=-1&&(a[j++]=b)}}Hrb.Nmb(a,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));return a};Jrb.hs=function hs(a,b){var c,d,e,f,g,h,i,j;g=0;for(d=b,e=0,f=d.length;e<f;++e){c=d[e];c==-1&&++g}j=tX(Drb.NY,Qsb,6,b.length-g,15,1);i=0;for(h=0;h<b.length;h++){if(b[h]!=-1){j[i]=Jrb.zu(a.g,h)<<16|Jrb.zu(a.G,b[h]);++i}}Hrb.Nmb(j,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));return j};Jrb.is=function is(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;f=false;for(e=0;e<2;e++){c=Jrb.Ik(a.g,e,b);k=a.F[c];if(Jrb.Gn(a.G,k)>2){m=Jrb.Ik(a.g,1-e,b);i=xsb;for(h=0;h<Jrb.Gn(a.g,c);h++){d=Jrb.Fn(a.g,c,h);d!=m&&i>d&&(i=d)}n=a.F[m];j=xsb;for(g=0;g<Jrb.Gn(a.G,k);g++){l=Jrb.Fn(a.G,k,g);l!=n&&j>l&&(j=l)}a.F[i]!=j&&(f=!f)}}return f};Jrb.js=function js(a,b,c,d){var e,f,g,h,i,j,k,l;h=a.e[d];i=h+1;while(i<a.w&&a.f[a.r[i]]==d)++i;for(k=h;k<i;k++)c[k]=-1;g=h;while(true){l=a.t[g]==-1?a.G.f:Jrb.sn(a.G,a.F[a.t[g]]);++c[g];if(c[g]==l){c[g]=-1;if(g==h)break;--g;if(!a.s[g]){b[a.F[a.r[g]]]=false;a.F[a.r[g]]=-1}continue}if(a.t[g]==-1){if(!b[c[g]]){if(Jrb.Xr(a,c[g],a.r[g])){a.F[a.r[g]]=c[g];b[c[g]]=true;++g}}}else{if(Jrb.Fn(a.G,a.F[a.t[g]],c[g])>=a.G.f){++c[g];continue}f=Jrb.Fn(a.G,a.F[a.t[g]],c[g]);if(a.s[g]){f==a.F[a.r[g]]&&Jrb.Yr(a,Jrb.Hn(a.G,a.F[a.t[g]],c[g]),a.u[g])&&++g}else{if(!b[f]){if(Jrb.Xr(a,f,a.r[g])&&Jrb.Yr(a,Jrb.Hn(a.G,a.F[a.t[g]],c[g]),a.u[g])){b[f]=true;a.F[a.r[g]]=f;++g}}}}if(g==i){if(Jrb.cs(a,d)&&Jrb.bs(a,d)&&Jrb.as(a,b,d)){for(j=h;j<i;j++){if(!a.s[j]){e=a.r[j];b[a.F[e]]=false;a.F[e]=-1}}return true}--g;if(!a.s[g]){b[a.F[a.r[g]]]=false;a.F[a.r[g]]=-1}}}return false};Jrb.ks=function ks(a){return Jrb.ds(a,1,a.c)>0};Jrb.ls=function ls(a,b){var c;for(c=0;c<b.length;c++)if(b[c]==a)return true;return false};Jrb.ms=function ms(a,b){var c,d,e;e=0;for(d=0;d<a.length;d++){c=a[d];while(b[e]<c){++e;if(e==b.length)return false}if(b[e]>c)return false}return true};Jrb.ns=function ns(a,b){var c,d,e,f,g,h,i,j;g=false;if(Jrb.wn(a.g,b)==0){for(f=1;f<Jrb.Gn(a.g,b);f++){for(h=0;h<f;h++){d=Jrb.Fn(a.g,b,f);e=Jrb.Fn(a.g,b,h);a.F[d]>a.F[e]^d>e&&(g=!g)}}}else{for(f=0;f<Jrb.Gn(a.g,b);f++){c=Jrb.Fn(a.g,b,f);j=0;i=tX(Drb.NY,Qsb,6,3,15,1);for(h=0;h<Jrb.Gn(a.g,c);h++){i[j]=Jrb.Fn(a.g,c,h);i[j]!=b&&++j}j==2&&a.F[i[0]]>a.F[i[1]]^i[0]>i[1]&&(g=!g)}}return g};Jrb.os=function os(a,b){var c,d,e,f;e=0;f=0;while(e<a.length&&f<b.length){c=a[e];d=b[f];if(c==d)return true;c<d?++e:++f}return false};Jrb.ps=function ps(a,b){var c,d,e,f,g;if(!b||b.q==0||!b.K){a.g=null;return}a.g=b;a.q=false;Jrb.ou(a.g,1);a.M=7;for(d=0;d<a.g.f;d++)E3(j3(Jrb.yk(a.g,d),{l:Utb,m:0,h:3}),0)&&(a.M=15);for(g=0;g<a.g.g;g++)(Jrb.Sk(a.g,g)&qub)!=0&&(a.M=15);a.K&&a.M!=7&&Jrb.ou(a.G,a.M);a.o=0;a.p=0;a.C=tX(Drb.c3,itb,6,a.g.f,16,1);for(e=0;e<a.g.f;e++){a.C[e]=E3(j3(Jrb.yk(a.g,e),jtb),0);a.C[e]&&++a.o}a.d=0;a.f=null;if(a.o!=0){for(f=0;f<a.g.g;f++)(a.C[Jrb.Ik(a.g,0,f)]||a.C[Jrb.Ik(a.g,1,f)])&&++a.p;for(c=0;c<a.g.q;c++)Jrb._l(a.g,c,a.C[c]);a.f=tX(Drb.NY,Qsb,6,a.g.q,15,1);a.d=Jrb.Pn(a.g,a.f,true,false)}};Jrb.qs=function qs(a,b,c){Jrb.rs(a,c);Jrb.ps(a,b)};Jrb.rs=function rs(a,b){if(!b||b.q==0){a.G=null;return}a.G=b;a.K=false;Jrb.ou(a.G,1)};Jrb.ss=function ss(a,b){if(!a.K){Jrb.vs(a,b);a.K=true}if(!a.q){Jrb.ts(a,b);Jrb.$r(a);Jrb.Zr(a);a.q=true}};Jrb.ts=function ts(a,b){var c,d,e,f,g,h,i,j,k,l;f=null;i=null;g=null;Jrb.ou(a.g,a.M);a.n=tX(Drb.NY,Qsb,6,a.g.f,15,1);for(d=0;d<a.g.f;d++)a.n[d]=Jrb.Gn(a.g,d);if(a.o!=0){j=new Jrb.Hu(a.g.q,a.g.r);l=tX(Drb.c3,itb,6,a.g.q,16,1);for(e=0;e<a.g.q;e++)l[e]=!a.C[e];Jrb.hn(a.g,j,l,true,null);Jrb.ou(j,a.M);Jrb.us(a,j,b);f=a.i;i=a.k;g=a.j;k=0;for(c=0;c<a.g.f;c++)a.C[c]||(a.n[c]=Jrb.Gn(j,k++))}Jrb.us(a,a.g,b);if(a.o!=0){k=0;for(c=0;c<a.g.q;c++){if(!a.C[c]){a.i[c]=f[k];a.j[c]=g[k++]}}k=0;for(h=0;h<a.g.r;h++){!a.C[Jrb.Ik(a.g,0,h)]&&!a.C[Jrb.Ik(a.g,1,h)]&&(a.k[h]=i[k++])}}};Jrb.us=function us(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;p=b.f;a.i=tX(Drb.OY,iub,6,b.f,14,1);a.j=tX(Drb.NY,Qsb,6,b.f,15,1);for(h=0;h<p;h++){a.i[h]=P3(j3(G3(Jrb.es(b,h),b.B[h]),kvb),lvb);a.j[h]=b.C[h];(c&1)!=0&&(a.j[h]+=b.s[h]+16<<8);(c&2)!=0&&(a.j[h]+=b.A[h]<<16)}a.A=tX(Drb.OY,iub,6,b.f,14,1);r=(Jrb.ou(b,7),b.p);for(o=0;o<r.i.a.length;o++){n=false;for(j=Krb.Ji(r.j,o),k=0,l=j.length;k<l;++k){m=j[k];if((b.G[m]&Xtb)!=0){n=true;break}}if(!n){s=Krb.Ji(r.j,o).length;for(e=Krb.Ji(r.i,o),f=0,g=e.length;f<g;++f){d=e[f];s==3?(a.A[d]=G3(a.A[d],Wsb)):s==4?(a.A[d]=G3(a.A[d],Xsb)):s==5?(a.A[d]=G3(a.A[d],Ysb)):s==6?(a.A[d]=G3(a.A[d],Zsb)):s==7&&(a.A[d]=G3(a.A[d],$sb))}}}q=b.g;a.k=tX(Drb.NY,Qsb,6,b.g,15,1);for(i=0;i<q;i++){a.k[i]=(Jrb.fs(b,i)|b.G[i])&6291967^6291840;(c&4)!=0?(a.k[i]&2)!=0&&(a.k[i]|=8):(c&8)!=0&&(a.k[i]&2)!=0&&i<b.g&&Jrb.Gr(b.p,i)&&(a.k[i]|=8)}};Jrb.vs=function vs(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;Jrb.ou(a.G,a.M);k=a.G.f;a.I=tX(Drb.NY,Qsb,6,k,15,1);a.H=tX(Drb.OY,iub,6,k,14,1);for(g=0;g<k;g++){a.H[g]=P3(j3(G3(Jrb.es(a.G,g),Jrb.yk(a.G,g)),kvb),lvb);a.I[g]=Jrb.Dk(a.G,g);(b&1)!=0&&(a.I[g]+=Jrb.mk(a.G,g)+16<<8);(b&2)!=0&&(a.I[g]+=Jrb.wk(a.G,g)<<16)}a.L=tX(Drb.OY,iub,6,k,14,1);m=Jrb.jo(a.G);for(j=0;j<m.i.a.length;j++){n=Krb.Ji(m.j,j).length;for(d=Krb.Ji(m.i,j),e=0,f=d.length;e<f;++e){h=d[e];n==3?(a.L[h]=G3(a.L[h],Wsb)):n==4?(a.L[h]=G3(a.L[h],Xsb)):n==5?(a.L[h]=G3(a.L[h],Ysb)):n==6?(a.L[h]=G3(a.L[h],Zsb)):n==7&&(a.L[h]=G3(a.L[h],$sb))}}for(c=0;c<k;c++){n=Jrb.An(a.G,c);n==0?(a.L[c]=G3(a.L[c],Vsb)):n>7&&(a.L[c]=G3(a.L[c],_sb))}l=a.G.g;a.J=tX(Drb.NY,Qsb,6,l,15,1);for(i=0;i<l;i++)a.J[i]=(Jrb.fs(a.G,i)|Jrb.Sk(a.G,i))&6422527^6291840};Jrb.ws=function ws(a,b,c,d,e,f,g){var h,i;h=Jrb.Fn(a.g,a.r[b],d);if((!a.C[h]||a.f[h]==g)&&h!=a.t[b]){i=Jrb.Hn(a.g,a.r[b],d);if(!f[i]&&!Jrb.ll(a.g,i)){a.r[++c]=h;a.t[c]=a.r[b];a.u[c]=i;f[i]=true;e[h]?(a.s[c]=true):(e[h]=true)}}return c};Jrb.xs=function xs(){this.c=8;this.N=new Krb.okb(new Zrb.hV)};Jrb.ys=function ys(){this.c=1;this.N=new Krb.okb(new Zrb.hV)};Jrb.zs=function zs(a,b){var c;c=tX(Drb.NY,Qsb,6,b,15,1);Erb.Y7(a,0,c,0,$wnd.Math.min(a.length,b));return c};Jrb.As=function As(a,b){var c;c=tX(Drb.c3,itb,6,b,16,1);Erb.Y7(a,0,c,0,$wnd.Math.min(a.length,b));return c};Z3(66,1,{},Jrb.xs,Jrb.ys);_.c=0;_.d=0;_.o=0;_.p=0;_.q=false;_.v=0;_.w=0;_.K=false;_.M=0;_.O=false;Drb.xZ=B5(66);Jrb.Bs=function Bs(){};Z3(184,1,{184:1},Jrb.Bs);_.a=0;_.b=0;_.c=0;_.d=0;Drb.vZ=B5(184);\nJrb.Es=function Es(){Jrb.Es=_3;Jrb.Cs=BX(nX(Drb.B0,1),Esb,2,6,['QM@HzAmdqjF@','RF@Q``','qC`@ISTAlQE`','`J@H','QM@HzAmdqbF@','qC`@ISTAlQEhqPp@','sJP@DiZhAmQEb','RF@QPvR@','QM@HzA@','qC`@ISTAlQEhpPp@','qC`@Qz`MbHl','sJP@DiZhAmQEcFZF@','RFPDXH','qC`@IVtAlQE`','QM@HvAmdqfF@','sGP@DiVj`FsDVM@','`L@H','sJP@DizhAmQEcFBF@','sJP@DjvhAmQEb','sFp@DiTt@@AlqEcP','sGP@LdbMU@MfHlZ','QMHAIhD','QM@HzAy@','sJP@DkVhAmQEb','sNp@DiUjj@[\\\\QXu`','sJP@DiZhAmQEcFBF@','sGP@DjVj`FsDVM@','RFPDTH','RG@DXOH@','sGP@Divj`FsDVMcAC@','sGP@Dj}j`FsDVM@','qC`@Qz`MbHmFRF@','sNp@LdbJjj@[\\\\QXu`','QMHAIhGe@','QM@HzAyd`','QM`AIhD','qC`@ISTA@','sGP@DkUj`FsDVM@','qC`@IVtAlQEhqPp@','sNp@DiUjj@[\\\\QXuqea`@','KAx@@IRjuUPAlHPfES\\\\','QM`BN`P','sJP@DjZhAmQEcFJF@','Hid@@DjU^nBBH@FtaBXUMp`','sNp@Diujj@[\\\\QXuq`a`@','sJP@DjvhAmQEcFZF@','sJP@DjZhAmQEcFFF@','sOp@DjWkB@@FwDVM\\\\YhX@','sNp@Dj}Zj@[\\\\QXu`','sNp@DiWjj@[\\\\QXuq`a`@','sOp@DjWkB@@D','KAx@@ITouUPAlHPfES\\\\','KAx@@YIDTjjh@vDHSBin@','sNp@DkUZj@[\\\\QXu`','RFPDXOH@','QM`BN`^L`','qC`@ISTAy@','sGP@LdbMU@MfHl[FVF@','qCb@AIZ`H','KAx@@IRjuUPAlHPfES]FFa`@','KAx@@ITnuUPAlHPfES\\\\','HiD@@DiUVjj`AmHPfES\\\\H','sNp@DjUjj@[\\\\QXu`','sJP@DkVhAmQEcFJF@','sGP@DjVj`FsDVMcCC@','qC`@Qz`MbHmFBF@','sJP@DkfhAmQEb','qC`@IVtAlQEhsPp@','sGP@Djuj`FsDVM@','sGP@Dj}j`FsDVMcMC@','sJP@DiZhA@','KAx@@ISjuUPAlHPfES]F@a`@','sJP@DjZhAmQEcFRF@','KAx@@IRnuUPAlHPfES]F@a`@','HiD@@DjWvjj`AmHPfES\\\\H','QMHAIhGd@','sNp@DiUjj@[\\\\QXuq`a`@','KAx@@IVjmUPAlHPfES\\\\','sGP@DjVj`FsDVMcMC@','QM`AIhGe@','HiD@@LdbJRjjh@[RDIaTwB','qCp@AIZ`H','sGP@LdbMU@MfHl[FFF@','QMDARVA@','sNp@LdbJjj@[\\\\QXuqba`@','sNp@LdbJjj@[\\\\QXuqca`@','sGP@Dkej`FsDVM@','qCb@AIZ`OI@','HaD@@DjUZxHH@AlHPfES]FLa`@','sGP@DkYj`FsDVM@','qCb@AIV`H','sNp@LdbJjj@[\\\\QXuqea`@','sGP@DkUj`FsDVMcEC@','sFp@DiTt@@Axa@','Hmt@@DjU_ZxHHj@AmhPfES\\\\Lj','QM`BN`^P','qCb@AIZ`OH`','sFp@DiTt@@AxaP','sGP@Djuj`FsDVMcEC@','sGP@Djuj`FsDVMcIC@','sGP@DkUj`FsDVMcKC@','sJP@DkfhAmQEcFRF@','sGP@DjVj`FsDVMcIC@','HaD@@DjUZxHH@AlHPfES]FFa`@','qC`@IRtDVqDV@','sNp@Dj}Zj@[\\\\QXuqfa`@','KAx@@ITnuUPAlHPfES]FFa`@','HiD@@DkUUjj`AmHPfES\\\\H','sJQ@@dkU@H','qC`@Qz`H','KAx@@IUkmUPAlHPfES\\\\','KAx@@ITouUPAlHPfES]FJa`@','sJP@H~j@[TQX`','sGP@DjZj`FsDVM@','sJP@DkVhAmQEcFFF@','sJX@@eKU@H','sJP@DizhAy@','QMHAIhGbP','KAx@@ITouUPAlHPfES]FNa`@','HaD@@DjUZxHD@AlHPfES\\\\','HaD@@DjUZxHH@A@','sNp@LdbJjj@[\\\\QXuqaa`@','Hed@@LdbRQUUUP@vTHSBinFP','KAx@@ITouUPAlHPfES]FLa`@','sNp@DkUZj@[\\\\QXuqba`@','KAx@@ITjuUPAlHPfES]FNa`@','KAx@@YIDTjjh@vDHSBincGPp@','HaD@@DjYvxH`@AlHPfES]FLa`@','RF@QP`','qCb@AIj`H','sNp@DjUjj@[\\\\QXuqaa`@','sNp@DkVZj@[\\\\QXu`','KAx@@YIDUJjh@vDHSBin@','sGP@DkYj`FsDVMcIC@','sGP@DjVj`FsDVMcAC@','sGP@DiVj`D','sJP@DkVhAmQEcFZF@','sNp@LdbLjj@[\\\\QXu`','QM@HvAmdqbF@','HaD@@DjWjXHB@AlHPfES\\\\','sNp@DjwZj@[\\\\QXuqba`@','sNp@LdbJjj@[\\\\QXuqda`@','sFp@DiTt@@Axa`','HiD@@Djuujj`AmHPfES\\\\H','sNp@DkUZj@[\\\\QXuqca`@','sJP@DiZhAy@','KAx@@YIDTjjh@vDHSBincCPp@','KAx@@IWNmUPAlHPfES\\\\','KAx@@IVkMUPAlHPfES\\\\','sJQ@@dju@H','qCb@AIZ`OH@','qC`@ISTAxa@','sNp@DjyZj@[\\\\QXu`','Hid@@DjUfaBB`@FtaBXUMp`','HiD@@DiUVjj`AmHPfES\\\\LXBF@','KAx@@IUjmUPAlHPfES\\\\','HiD@@DjWvjj`AmHPfES\\\\LXjF@','sJP@DjVhAmQEb','qCb@AIV`OH`','HiD@@LdbJRjjh@[RDIaTwCFDa`@','KAx@@YIDTjjh@vDHSBinc@Pp@','sNp@DjUjj@[\\\\QXuqda`@','qC`@Qz`OED','sJP@DkfhAmQEcFZF@','KAx@@YIDbjjh@vDHSBincDPp@','sGP@Djyj`FsDVMcMC@','KAx@@IVrmUPAlHPfES\\\\','qCp@AIZ`OI@','sJX@@dkU@H','sJQ@@dkU@OH`','sNp@Di]ZjBBvxbqk@','Hkl@@DjU_Uk``bj`@[VDIaTwCJzX','sGP@DjZj`FsDVMcEC@','Hid@@DjU^nBBH@FtaBXUMpqcHX@','sNp@DkeZj@[\\\\QXu`','sNp@DjYjj@[\\\\QXuqca`@','sGQ@@djuT@`','HiD@@LdbJTjjh@[RDIaTwB','sOp@DjWkB@@Gd`','HeT@@LdbbRKBDQD@CYPaLJfxY@','qCr@XIKTA@','HiD@@DjW^jj`AmHPfES\\\\LXJF@','HeT@@DjU]k``b`@[JDIaTwCH','sGP@Djuj`FsDVMcCC@','`IH`B','sOp@DjWkB@@GdX','sJQ@@eKU@H','KAx@@YIDUJjh@vDHSBincBPp@','sJX@@eKU@OH@','KAx@@YIDTjjh@vDHSBincAPp@','sOq@@drm\\\\@@@`','KAx@@IUkMUPAlHPfES\\\\','qCp@AIj`H','Hed@@DjUUjjj@FraBXUMpr','sGX@@eJuT@`','sGP@DkUj`FsDVMcCC@','HiD@@Dj}Ujj`AmHPfES\\\\LXrF@','KAx@@ITouUPAlHPfES]FHa`@','Hed@@DjWujjj@FraBXUMpsFIa`@','sGP@DiUj``mfHlZ','sFp@DiTvjhAlqEcP','Hid@@DjU^nBBH@FtaBXUMpq`XX@','sJP@DkVdAmQEb','qCp@AIZ`OH`','QMhDRVA@','qC`@ISJAlQE`','qCp@BOTAyhl','sJX@@eOU@ODB','sFp@DiTt@@AyaB','sGP@DkUj`FsDVMcMC@','Hid@@DjYUaBH`@FtaBXUMpqcHX@','qC`@Qz`OH@','HiD@@DjUVjj`AmHPfES\\\\LXZF@','sJP@H~j@[TQXqda`@','sJX@@eKU@OI@','sNp@Djejj@[\\\\QXu`','sJQ@@dsU@H','sJQ@@dkU@OI`','KAx@@YIMDVjh@vDHSBin@','Hid@@DjU^nBBD@FtaBXUMp`','sNp@DkgZj@[\\\\QXuqca`@','qC`@IRtDVqDVcEC@','Hed@@LdbRQeUUP@vTHSBinFP','sNp@DiUjj@P','qC`@IRtDT','sNp@DkYZj@[\\\\QXuqca`@','KAx@@IUkmUPAlHPfES]FDa`@','KAx@@IVjmUPAlHPfES]FNa`@','sOx@@drm\\\\@@@`','KAx@@ITjuUPAlHPfES]FBa`@','QMDARVAyH','sJP`@dfvhA@','HeT@@DjU_k``b`@[JDIaTwCLXfF@','KAx@@IToUUPAlHPfES]FJa`@','sGP@DkYj`FsDVMcEC@','qCb@AIZ`ODH','`I@`B','KAx@@IUzmUPAlHPfES]FFa`@','sNp@DkfZj@[\\\\QXu`','KAx@@ITnuUPAlHPfES]F@a`@','HiD@@LddURjjh@[RDIaTwB','sNp@Dj~Zj@[\\\\QXuqfa`@','Hed@@Dj{uZjj@FraBXUMpr','KAx@@ITsUUPAlHPfES\\\\','Hid@@LdbRQk``b@AmHPfES\\\\LXrF@','sOp@DjWkB@@GdH','sJQ@@dkU@OH@','Hid@@DjU^nBBH@FtaBXUMpqahX@','sGP@DiYj``mfHlZ','KAx@@IToUUPAlHPfES]FLa`@','qCp@AJZ`ODH','Hmt@@DjU]ZxHHj@AmhPfES\\\\Lj','sGP@DkUjPFsDVM@','qC`@IVtA@','Hed@@LdbJReUUP@vTHSBinFP','sNp@DjuZj@[\\\\QXuqea`@','KAx@@IUkmUPAlHPfES]FNa`@','HiD@@DkVUjj`AmHPfES\\\\H','Hed@@DkUeZjj@FraBXUMpr','sNp@DkVZj@[\\\\QXuqea`@','sJP@DiVhHKZbKFLLL@','HiD@@Djuyjj`AmHPfES\\\\H','sNp@DjUjj@[\\\\QXuq`a`@','HeT@@DjYUXPbH`@[JDIaTwCH','HiD@@DjwUjj`AmHPfES\\\\LXRF@','sNq@@djmUPB','KAx@@YIEEZjh@vDHSBincCPp@','sGP@Di^V`dmfHlZ','Hid@@DjYUaBHP@FtaBXUMp`','sNp@DjYjj@[\\\\QXuqba`@','sGP@Dkej`FsDVMcKC@','HeT@@DjU^k``b`@[JDIaTwCH','qC`@Qv`MbHmFBF@','sGQ@@djmT@`','qCr@XIKTAyH','qC`@IVtAlQEhpPp@','Hid@@LdbbQxXF@@AmHPfES\\\\LXjF@','sGP@DkYj`FsDVMcCC@','KAx@@IVsMUPAlHPfES\\\\','qCp@AIj`ODl','HiD@@DkeUjj`AmHPfES\\\\H','deT@@DjU[k``b`@vTHSBinFP','sJP@DkVdAmQEcFRF@','HiD@@LdbJTjjh@[RDIaTwCFDa`@','HiD@@DkYyjj`AmHPfES\\\\H','sJP@DjZhAyH','KAx@@IVkMUPAlHPfES]FDa`@','sJX@@dkU@OI@','Hed@@LdbRQUUUP@vTHSBinFXpLL@','Hed@@DjuUZjj@FraBXUMpr','sGP@Djfj`FsDVMcKC@','sNp@DkVZj@[\\\\QXuqba`@','sNp@DjyZj@[\\\\QXuqfa`@','qCb@AIj`OH@','sNp@DjUZj@[\\\\QXu`','KAx@@IWOMUPAlHPfES\\\\','Hid@@DjU^nBBH@D','Hed@@DjuvZjj@FraBXUMpr','sJP@DiVhHKZbKFLtL@','dmt@@DjU_ZxHHj@C[PaLJfxYVLKC@','sNp@DjuZj@[\\\\QXuqca`@','sJP@DkfhAmQEcFJF@','sNp@LdbJZj@[\\\\QXu`','HeT@@DjU_k``b`@[JDIaTwCLXFF@','KAx@@IVlmUPAlHPfES]FNa`@','HeT@@LdbbRKBDQD@CYPaLJfxYcEPp@','Hid@@DjUZnBBH@FtaBXUMpqcHX@','qCa@CIKTA@','HiD@@Dj~]jj`AmHPfES\\\\LXFF@','sKP@Di\\\\Zj@[TQX`','sGP@Djfj`FsDVMcEC@','HiD@@DkgYjj`AmHPfES\\\\H','sNp@DjuZj@[\\\\QXuqaa`@','KAx@@YIMDVjh@vDHSBincDPp@','sJP@DjVhHKZbKFLTL@','Hid@@LdbRQk``b@AmHPfES\\\\LXZF@','HiD@@Dj}Ujj`AmHPfES\\\\LXzF@','HeT@@DjU_k``bP@[JDIaTwCH','sNp@DkUZi@[\\\\QXu`','HiD@@DjYfjj`AmHPfES\\\\H','sGP@DjZj`FsDVMcAC@','Hmt@@DjU_jxHHj@AmhPfES\\\\Lj','Hid@@LdbRQk``R@AmHPfES\\\\H','KAx@@YIDUJjh@vDHSBincDPp@','qCr@XIKTAyD','sOq@@drm\\\\@@@|`@','Hed@@DjW^jjj@FraBXUMpsFBa`@','HeT@@DjY]zXFB@@[JDIaTwCH','Hkl@@DjU_Vk``bj`@[VDIaTwCJzX','Hid@@DjY}nBHH@FtaBXUMpqcHX@','sGX@@eKuT@|d@','sGP@Dj^Y`FsDVM@','HcL@@DjU_ZnBBJh@FqaBXUMprn`','sJP@DkVdAmQEcFJF@','sOq@@drm\\\\@@@|b@','sNp@DjyZj@[\\\\QXuqaa`@','HaD@@DjUZxHH@AyD@','qC`@Qv`H','dmt@@DjU_ZxHHj@C[PaLJfxYVLYC@','sGP@Dkej`FsDVMcMC@','Hed@@DjUUjjj@FraBXUMpsFHa`@','HeT@@LdbbRkBDQD@CYPaLJfxY@','KAx@@IU{MUPAlHPfES]FLa`@','RG@DTH','sJY@DDeVhA@','KAx@@YIDUJjh@vDHSBinc@Pp@','sJX@@dkU@OI`','sJQ@@dju@OI`','HeT@@LdbbRKBDQD@CYPaLJfxYcFPp@','sFp@DiTvjhAlqEcXpPp@','HaD@@DjUZxHH@AyG@','sNx@@eJ}UPB','sNp@LddUjj@[\\\\QXuqca`@','HaDH@@RVU[j@@@D','sNp@DkgZi@[\\\\QXu`','sGY@LDeVj`D','sNp@LdbJfZBZvxbqk@','sJP`@dfvhAyL','sGX@AddQjhAxe`','Hmt@@DjU_ZxHHj@AmhPfES\\\\LkFIa`@','qCh@CIKTA@','sNp@LdbLjj@[\\\\QXuq`a`@','sOq@@drm\\\\@@@|a@','KAx@@IUzmUPAlHPfES]FJa`@','sNx@AddQUUPB','sGP@Di]jP`mfHlZ','sJP`@TeZhA@','KAx@@IRjmUPHKXPaLJfx','HeT@@LdbRTM\\\\DDT@CYPaLJfxY@','HaF@@@Rfu[j@@@D','Hid@@DjYUaBH`@FtaBXUMpqchX@','KAx@@IUjmTpAlHPfES\\\\','Hid@@DjU^nBBD@FtaBXUMpqcHX@','sGP@DiUj``mfHl[FFF@','KAx@@IUvmUPAlHPfES]FLa`@','Hed@@LdbQTUUUP@vTHSBinFXqDL@','sJP@DkVhA@','sOx@@drm\\\\@@@|b@','KAx@@IUkMUPAlHPfES]FDa`@','HeT@@LdbRQU\\\\DDT@CYPaLJfxY@','HiD@@Dj}Yjj`AmHPfES\\\\LXrF@','HiD@@Dj{ujj`AmHPfES\\\\LXFF@','KAx@@IWNmUPAlHPfES]FFa`@','KAx@@IRkMUPHKXPaLJfx','sJP@DjYdAmQEcFZF@','sJY@LDeZhAyL','HaDH@@RVU[f@@@D','sJP`@deVhAyB','HaD@@DjWjZjj`AlHPfES\\\\','sGP@DkYj`FsDVMcMC@','sNp@DkgZj@[\\\\QXuqea`@','sJQ@@dlu@H','HeT@@DjU]k``b`@[JDIaTwCLXrF@','sJX@@dkU@OH`','RFDDQFCr`','sJP@DiYXIKZbKFLLL@','KAx@@YIHjjjh@vDHSBincGPp@','Hk\\\\@@DjU^ukmLHH@@@AmXPfES\\\\Lki`','sGQ@@djmT@|b@','Hid@@DjUfaBB`@FtaBXUMpqahX@','sNx@@eRmUPB','Hmt@@LdbRVak``ah@FvaBXUMprh','qCr@XIJtA@','KAx@@IWMmUPAlHPfES]FNa`@','HeT@@DjYYZPbJ@@[JDIaTwCH','sNp@DkfZj@[\\\\QXuqea`@','Hid@@DjU^nBAHAEVtaBXUMp`','dmt@@DjUgZDHJJ@C[PaLJfxYT','sGP@DkejPFsDVM@','sNx@@eJmUPB','qCb@AIf`H','HcL@@DjU_VnBBJh@FqaBXUMprnqcXX@','Hid@@DjUZnBBH@FtaBXUMpqahX@','sNp@LdbQZjBBvxbqkcGC@','sOx@@drm\\\\@@@|c@','sJP@H~j@^R@','KAx@@YIDcFjhDElHPfES\\\\','Hid@@DjUZnBAH@FtaBXUMp`','sNp@LddUji@[\\\\QXu`','sGP@DjfjPFsDVM@','HeT@@DjYUXPbD`@[JDIaTwCH','KAx@@IUoMUPAlHPfES]FDa`@','sFp@DiTt@@AyaD','Hed@@DjuuZjj@FraBXUMpsFIa`@','HeT@@DjUghP`h`@[JDIaTwCLXfF@','sOp@DjWkjj`FwDVM\\\\YhX@','sGP@Djfj`FsDVMcIC@','KAx@@IRkmUPHKXPaLJfzL]C@','sNx@@djmUPB','QM`AIdD','sOp@DjWkB@@Gbe@','sNp@DjyZj@[\\\\QXuqca`@','QM@HuAmd`','sNp@LddUjj@[\\\\QXuqea`@','daD@@DjUZxHD@CXPaLJfzLYC@','qCb@AIZPH','HiD@@LdbJTjjh@[RDIaTwCF@a`@','Hmt@@DjU_ZxHHi@AmhPfES\\\\Lj','HaDH@@RYWih@H@D','HiD@@LdbJTjjh@[RDIaTwCFHa`@','sGX@@djuT@|a@','sNp@DkfZj@[\\\\QXuqaa`@','Hid@@DjU^nBBH@GdL','KAx@@IVkMUPAlHPfES]FJa`@','qCr@XIKTAy@','HmT@@Dj{uVjjh@[ZDIaTwCJqaXX@','dmt@@DjYWVDHbJ@C[PaLJfxYT','Hif@@@RUe^Fh@@@P','HaDH@@Rfu[j@@@GdH','KAx@@IVsMUPAlHPfES]FDa`@','sKP@Di\\\\Zj@[TQXq`a`@','sJX@@eMU@OH@','HeT@@DjU^k``b`@[JDIaTwCLXFF@','Hmt@@LdbbRJXPbHh@FvaBXUMprh','sJP@DjvhAmQEcFBF@','dmt@@LdbbRNXPbHh@MmBDpj[aeXplL@','sJP`@dfvhAyD','sGP@Di^V`dmfHl[FVF@','KAx@@IVsmUPAlHPfES]FBa`@','sOq@@drm\\\\@@@|PP','sJY@BDeZhA@','HeT@@LdbRbmBDED@CYPaLJfxY@','Hed@@Djy[Zjj@FraBXUMpr','HeT@@DjU]k``b`@[JDIaTwCLXFF@','Hid@@DjUfaBB`@D','qCa@CIJtA@','QMPARVA@','Hid@@DjUfaBB`@FtaBXUMpqcHX@','sJY@BDfZhA@','HeT@@DjUghP`hP@[JDIaTwCH','Hed@@Dj{uZjj@FraBXUMpsFIa`@','dmt@@DjYUvDHbJ@C[PaLJfxYVLUC@','sNp`@dfuZj@P','sJQ@@dmU@OH@','sJX@@dmU@H','HeT@@DjU]k``b`@[JDIaTwCLXZF@','HiD@@LdfbJZjh@[RDIaTwCFAa`@','sOx@@drm\\\\@@@|a@','deT@@DjUfhP`h`@vTHSBinFP','dmt@@DjU]ZxHHj@C[PaLJfxYVLKC@','sOp@DjWkjj`FwDVM\\\\XHX@','HcL@@LdbbRNSBDQEP@McBDpj[ae]cFpp@','HiD@@Dj}Yji`AmHPfES\\\\H','HaDH@@RYe[hB@@D','Hid@@DjU^njjj@FtaBXUMpq`XX@','deT@@LdbbRKBDQB@FraBXUMpr','QMPARZA@','sOq@@drm\\\\@@@|QX','HaD@@DjYvxH`@A@','HcL@@LdbbRNcBDQEP@McBDpj[ae]@','QMhDRZA@','RG@DXLHmP','QM`BN`XQYd','RG@DTLHmP','QMHAIXFEVd','QMDARVAaH','RFPDXLHmP','RF@Q`vRbdLEC@','RF@QpvR@','QO@HyjAmd`','`II@B','`II@CFspqJp','`II@CF[@hM@prB`','`H@[T[|B`XN@PdM@p|@bHrBcDk@','RG@DXMj}F@','QM`BN`[L~b@','RG@DTMj}D@','QMHAIXFt~j@','QMDARVA}L@','RFPDXMj}D@','sKP@Di\\\\YZ@[TQXqaa`@','eF`BHD'])};Jrb.Fs=function Fs(a,b){var c,d;if(!b)return null;d=tX(Drb.NY,Qsb,6,(Jrb.Cs.length+31)/32|0,15,1);b=Jrb.Ks(b);Jrb.rs(a.g,b);for(c=0;c<Jrb.Cs.length;c++){Jrb.ps(a.g,Jrb.Ds[c]);Jrb.ds(a.g,1,4)>0&&(d[c/32|0]|=1<<31-c%32)}return d};Jrb.Gs=function Gs(a,b){var c,d;if(!b)return null;d=tX(Drb.OY,iub,6,(Jrb.Cs.length+63)/64|0,14,1);b=Jrb.Ks(b);Jrb.rs(a.g,b);for(c=0;c<Jrb.Cs.length;c++){Jrb.ps(a.g,Jrb.Ds[c]);Jrb.ds(a.g,1,4)>0&&(d[c/64|0]=G3(d[c/64|0],H3(1,63-c%64)))}return d};Jrb.Hs=function Hs(){var a,b;if(Jrb.Ds==null){b=new Jrb.Fp(false);Jrb.Ds=tX(Drb.JZ,mvb,27,Jrb.Cs.length,0,1);for(a=0;a<Jrb.Cs.length;a++){Jrb.Ds[a]=Jrb.tp(b,Jrb.Cs[a]);Jrb.ou(Jrb.Ds[a],1)}}};Jrb.Is=function Is(a){var b;if(a.f!=null){for(b=0;b<a.f.length;b++)if((a.c[b]&~a.f[b])!=0)return false}else{return false}return Jrb.Js(a)};Jrb.Js=function Js(a){!a.d&&(a.d=Jrb.vp(new Jrb.Fp(false),a.e));!a.a&&(a.a=Jrb.vp(new Jrb.Fp(false),a.b));Jrb.rs(a.g,a.d);Jrb.ps(a.g,a.a);return Jrb.ks(a.g)};Jrb.Ks=function Ks(a){var b,c;if(a.K){for(b=0;b<a.q;b++){if(E3(j3(a.B[b],jtb),0)){a=new Jrb.Iu(a);for(c=b;c<a.q;c++)E3(j3(a.B[c],jtb),0)&&(a.C[c]=-1);Jrb.gk(a)}}}return a};Jrb.Ls=function Ls(a,b,c){a.b=null;a.a=b;c==null?(a.c=Jrb.Fs(a,b)):(a.c=c)};Jrb.Ms=function Ms(a,b,c){a.e=null;a.d=b;c==null?(a.f=Jrb.Fs(a,b)):(a.f=c)};Jrb.Ns=function Ns(){Jrb.Es();this.g=new Jrb.xs;Jrb.Hs()};Jrb.Os=function Os(a){Jrb.Es();var b,c,d,e,f,g;if(a==null)return null;b=tX(Drb.JY,nub,6,a.length*8,15,1);for(d=0;d<a.length;d++){g=a[d];for(e=7;e>=0;e--){c=g&15;c>9&&(c+=7);b[d*8+e]=48+c<<24>>24;g>>=4}}return Erb.i7((f=b,hsb.Kab(),f))};Jrb.Ps=function Ps(a){Jrb.Es();var b,c,d,e;if(Hrb.rnb(a).length==0||(Hrb.rnb(a).length&7)!=0)return null;d=tX(Drb.NY,Qsb,6,Hrb.rnb(a).length/8|0,15,1);for(c=0;c<Hrb.rnb(a).length;c++){e=c/8|0;b=(Hrb.mnb(c,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(c)-48);b>16&&(b-=7);d[e]<<=4;d[e]+=b}return d};Jrb.Qs=function Qs(a,b){Jrb.Es();var c,d,e,f;f=0;d=0;e=0;for(c=0;c<a.length;c++){f+=p6(a[c]&b[c]);d+=p6(a[c]);e+=p6(b[c])}return f/$wnd.Math.sqrt(d*e)};Jrb.Rs=function Rs(a,b){Jrb.Es();var c,d,e;e=0;c=0;for(d=0;d<a.length;d++){e+=p6(a[d]&b[d]);c+=p6(a[d]|b[d])}return e/c};Z3(141,1,{},Jrb.Ns);Drb.wZ=B5(141);Jrb.Ts=function Ts(a){a.j=1;a.k=10;a.n=400;a.f=400;a.i=true;a.d='black';a.b=new Krb.Yi;a.a=new Krb.Yi;a.c=new Erb.S7;a.e=new dsb.o4(12)};Jrb.Us=function Us(a,b){var c,d;c=Erb.U5(gsb.s8(gsb.o8(new gsb.t8(3*a.j),(gsb.Bab(),gsb.xab))));d='<line stroke-dasharray=\"'+c+','+c+btb+'x1=\"'+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.a),gsb.xab)))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.c),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.b),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b.d),gsb.xab)))+btb+ftb+a.d+btb+'stroke-width:'+a.j+htb;Jrb.dt(a,d)};Jrb.Vs=function Vs(a,b){var c,d;d=new Erb.U7('<polygon points=\"');for(c=0;c<b.a;c++){Erb.N7(d,u3($wnd.Math.round(b.b[c])));d.a+=',';Erb.N7(d,u3($wnd.Math.round(b.c[c])));d.a+=' '}Erb.P7(d,'\" fill=\"'+a.d+btb+ftb+a.d+btb+gtb+a.j+htb);Jrb.dt(a,d.a)};Jrb.Ws=function Ws(a,b,c,d){var e,f,g,h;g=(e=(h=dsb.m4(a.e,b),new esb.s4(h)).b,e);f='<text x=\"'+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(c-g/2),(gsb.Bab(),gsb.xab))))+btb+'y=\"'+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(d+a.k/3),gsb.xab)))+btb+'stroke=\"none\" '+'font-size=\"'+a.e.b+btb+'fill=\"'+a.d+'\">'+b+'<\\/text>';Jrb.dt(a,f)};Jrb.Xs=function Xs(a,b,c,d){var e;e='<circle cx=\"'+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(b+d/2),(gsb.Bab(),gsb.xab))))+btb+'cy=\"'+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(c+d/2),gsb.xab)))+btb+'r=\"'+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(d/2),gsb.xab)))+btb+'fill=\"'+a.d+htb;Jrb.dt(a,e)};Jrb.Ys=function Ys(a,b,c,d){var e,f;e=Jrb.vk(a.K,b);f='<circle id=\"'+(a.g!=null?a.g:'mol'+Jrb.Ss)+':Atom:'+b+btb+nvb+(e==0?'':'data-atom-map-no=\"'+e+btb)+'cx=\"'+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(c),(gsb.Bab(),gsb.xab))))+btb+'cy=\"'+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(d),gsb.xab)))+btb+'r=\"'+8+btb+ovb;Krb.Ei(a.a,f)};Jrb.Zs=function Zs(a,b,c,d,e,f){var g;g='<line id=\"'+(a.g!=null?a.g:'mol'+Jrb.Ss)+':Bond:'+b+btb+nvb+'x1=\"'+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(c),(gsb.Bab(),gsb.xab))))+btb+ctb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(d),gsb.xab)))+btb+dtb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(e),gsb.xab)))+btb+etb+Erb.U5(gsb.s8(gsb.o8(new gsb.t8(f),gsb.xab)))+btb+gtb+8+btb+ovb;Krb.Ei(a.b,g)};Jrb.$s=function $s(a,b){a.j=M3(u3($wnd.Math.round(100*$wnd.Math.max(b,1))))/100};Jrb._s=function _s(a,b){a.d='rgb('+((b&dub)>>16)+','+((b&Ssb)>>8)+','+(b&255)+')'};Jrb.at=function at(a,b){if(a.k!=b){a.k=b;a.e=new dsb.o4(b)}};Jrb.bt=function bt(a,b){a.n=N3(u3($wnd.Math.round(b.b)));a.f=N3(u3($wnd.Math.round(b.a)));return Jrb.Rd(a,b)};Jrb.ct=function ct(a){var b,c,d,e,f,g;f='<svg id=\"'+(a.g!=null?a.g:'mol'+Jrb.Ss)+btb+'xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" '+'width=\"'+a.n+'px\" '+'height=\"'+a.f+'px\" '+'viewBox=\"0 0 '+a.n+' '+a.f+'\">\\n';g=a.i?'<style> #'+(a.g!=null?a.g:'mol'+Jrb.Ss)+' { pointer-events:none; }'+' #'+(a.g!=null?a.g:'mol'+Jrb.Ss)+' .event '+' { pointer-events:all; }'+' line { stroke-linecap:round; }'+' polygon { stroke-linejoin:round; }'+' <\\/style>\\n':'<g style=\"font-size:'+a.k+'px; fill-opacity:1; stroke-opacity:1; fill:black; stroke:black;'+' font-weight:normal; text-rendering:optimizeLegibility; font-family:sans-serif;'+' stroke-linejoin:round; stroke-linecap:round; stroke-dashoffset:0;\">';f+='  ';f+=g;if(a.i){for(e=new Krb.ueb(a.b);e.a<e.c.a.length;){d=Krb.teb(e);Jrb.dt(a,d)}for(c=new Krb.ueb(a.a);c.a<c.c.a.length;){b=Krb.teb(c);Jrb.dt(a,b)}}a.i||Jrb.dt(a,'<\\/g>');return f+a.c.a+'<\\/svg>'};Jrb.dt=function dt(a,b){Erb.P7(a.c,'  ');Erb.P7(a.c,b);Erb.P7(a.c,rsb)};Jrb.et=function et(a,b,c){Jrb.Vc();Jrb.Ud.call(this,a,b);Jrb.Ts(this);this.g=c;++Jrb.Ss};Z3(228,263,{},Jrb.et);_.mb=function ft(){return Jrb.ct(this)};_.f=0;_.i=false;_.j=0;_.k=0;_.n=0;Jrb.Ss=0;Drb.yZ=B5(228);Jrb.gt=function gt(a,b){var c;if(a.c!=null)for(c=0;c<a.c.length;c++)if(b==a.c[c]&&a.d[c])return true;return false};Jrb.ht=function ht(a,b,c,d,e){this.a=a;this.b=b;this.g=c;this.f=d;this.e=e};Z3(150,1,{150:1},Jrb.ht);_.a=0;_.b=0;_.e=false;_.f=false;_.g=0;Drb.CZ=B5(150);Jrb.it=function it(a,b){!a.b&&(a.b=new Zrb.qV);Zrb.lV(a.b,Erb.A6(b))};Jrb.jt=function jt(a,b,c,d){var e,f,g,h,i,j;e=Jrb.Hj(b,a.d);Jrb.Sl(b,e,a.e);Jrb.$l(b,e,a.o,false);Jrb.Ql(b,e,a.a);if(E3(a.c,0)){if(E3(j3(a.c,2),0)){a.c=j3(a.c,-3);b.u[e]|=oub}else{b.u[e]&=Jub}Jrb.cm(b,e,a.c,true)}if(a.b){j=tX(Drb.NY,Qsb,6,a.b.d.a.length,15,1);for(i=0;i<a.b.d.a.length;i++)j[i]=Zrb.nV(a.b,i).a;Jrb.Yl(b,e,j);Hrb.Mmb(a.b.d.a,0)}else{if(String.fromCharCode(c).toLowerCase().charCodeAt(0)==c&&Erb.k5(c)){if(a.d!=5&&a.d!=6&&a.d!=7&&a.d!=8&&a.d!=15&&a.d!=16&&a.d!=33&&a.d!=34)throw h3(new Erb._z('SmilesParser: atomicNo '+a.d+' must not be aromatic. Position:'+(d-1)));b.u[e]|=oub}else{b.u[e]&=Jub}}if(a.f){for(h=new Krb.ueb(a.f);h.a<h.c.a.length;){g=Krb.teb(h);Jrb.jm(g,0,0);Jrb.Rj(b,g,e)}}if(a.g!=-1&&a.d!=1){f=tX(Drb.JY,nub,6,1,15,1);f[0]=a.g<<24>>24;Jrb.Wl(b,e,f)}return e};Jrb.kt=function kt(a,b){var c;c=0;while(b<a.length&&(a[b]!=93||c!=0)){a[b]==91?++c:a[b]==93&&--c;++b}if(b==a.length)throw h3(new Erb._z('SmilesParser: No matching closing bracket found.'));return b+1};Jrb.lt=function lt(a,b,c){var d,e;if(b<3)return false;d=b-1;(a[d]==43||a[d]==45)&&--d;if(!i5(a[d]&Gsb))return false;--d;if(a[d]!=68&&a[d]!=82&&a[d]!=88&&a[d]!=122)return false;c[0]=0;while(d>0&&j5(a[d-1])){--d;++c[0]}e=b+1;while(j5(a[d])){if(a.length<=e||a[d]!==a[e])return false;++d;++e}return true};Jrb.mt=function mt(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;if(b[c-1]==36){a.q=new Krb.Yi;c+=Jrb.qt(a,b,c-1,a.q)-1;if(b[c++]!=93){if(!f)throw h3(new Erb._z('SmilesParser: A positive recursive SMARTS followed by another one or by atom query features is not supported. Position:'+(c-1)));(a.k&128)==0&&(c=Jrb.kt(b,c))}return c}if(b[c-1]==42){a.d=6;a.c=G3(a.c,1)}else if(b[c-1]==63){a.d=0}else{j=b[c-1]==33;if(j){a.c=G3(a.c,1);++c}if(b[c-1]==82&&e&&(i5(b[c]&Gsb)||a.j&&b[c]==123)){a.d=6;a.c=G3(a.c,1);--c;j&&--c}else{k=new Jrb.st;if(!Jrb.nt(b,c-1,d,k))throw h3(new Erb._z(\"SmilesParser: Unexpected character in atom definition:'\"+String.fromCharCode(b[c-1]&Gsb)+pvb+(c-1)));a.d=k.a;c+=k.b-1;(a.k&3)!=2&&(a.g=9);if(e&&(b[c]==44||j)){n=k.d;m=k.c;t=c-k.b;while(t<d){if(!Jrb.nt(b,t,d,k)){if(!j)throw h3(new Erb._z(\"SmilesParser: Unexpected character in atom list:'\"+String.fromCharCode(b[t]&Gsb)+qvb+t));break}if(k.a==1){if(!j)throw h3(new Erb._z(\"SmilesParser: Hydrogen is not supported in positive atom lists:'\"+Erb.h7((Krb.zeb(b,t,d),Krb.Eeb(b,tX(Drb.JY,nub,6,d-t,15,1),t,d)))+qvb+t))}else{Jrb.it(a,k.a);n=n|k.d;m=m|k.c}t+=k.b;if(j&&b[t]!=59&&b[t]!=38)break;if(!j&&b[t]!=44)break;if(j&&b[t+1]!=33)break;++t;b[t]==33&&++t}if(!!a.b&&a.b.d.a.length>1){a.g=-1;m?n||(a.c=G3(a.c,4)):(a.c=G3(a.c,2))}c=t}}}p=new Jrb.wt(b);r=tX(Drb.NY,Qsb,6,1,15,1);s=true;while(s){if(b[c]==64){++c;if(b[c]==64){a.i=true;++c}a.p=true;continue}if(b[c]==58){++c;while(i5(b[c]&Gsb)){a.o=10*a.o+b[c]-48;++c}continue}if(b[c]==91)throw h3(new Erb._z('SmilesParser: nested square brackets found. Position:'+c));if(b[c]==93){++c;s=false;continue}a.e=Jrb.pt(b,c,r);if(r[0]!=0){c+=r[0];a.e==0&&(a.c=G3(a.c,xtb));continue}i=b[c]==33;i&&++c;if(b[c]==72){++c;c+=Jrb.tt(p,c,1);g=0;p.c<=0&&p.b>=0&&(g=G3(g,128));p.c<=1&&p.b>=1&&(g=G3(g,256));p.c<=2&&p.b>=2&&(g=G3(g,512));p.c<=3&&p.b>=3&&(g=G3(g,vtb));if(i){a.c=G3(a.c,g);a.g=-1}else{if(p.b==p.c){a.g=p.c}else{a.c=G3(a.c,j3(utb,F3(g)));a.g=-1}}continue}if(b[c]==68||b[c]==100){++c;c+=Jrb.tt(p,c,1);g=0;p.c<=0&&p.b>=0&&(g=G3(g,oub));p.c<=1&&p.b>=1&&(g=G3(g,bub));p.c<=2&&p.b>=2&&(g=G3(g,aub));p.c<=3&&p.b>=3&&(g=G3(g,qub));p.c<=4&&p.b>=4&&(g=G3(g,Etb));if(o3(g,0)!=0){if(i)a.c=G3(a.c,g);else if(E3(j3(a.c,Btb),0))a.c=j3(a.c,F3(g));else{g=P3(g,Btb);a.c=G3(a.c,g)}}continue}if(b[c]==122&&a.j){++c;c+=Jrb.tt(p,c,4);g=0;p.c<=0&&p.b>=0&&(g=G3(g,Otb));p.c<=1&&p.b>=1&&(g=G3(g,rvb));p.c<=2&&p.b>=2&&(g=G3(g,svb));p.c<=3&&p.b>=3&&(g=G3(g,tvb));p.c<=4&&p.b>=4&&(g=G3(g,Ntb));if(o3(g,0)!=0){if(i)a.c=G3(a.c,g);else if(E3(j3(a.c,Itb),0))a.c=j3(a.c,F3(g));else{g=P3(g,Itb);a.c=G3(a.c,g)}}continue}if(b[c]==88){++c;c+=Jrb.tt(p,c,1);v=(Jrb.Ej(),Jrb.zj)[a.d];if(v==null)continue;u=v[0];l=Jrb.pt(b,c,r);r[0]!=0&&(Jrb.Ym(a.d)?(u+=l):a.d==6?(u-=$wnd.Math.abs(l)):(u-=l));g=0;u-p.c<=0&&u-p.b>=0&&(g=G3(g,ptb));u-p.c<=1&&u-p.b>=1&&(g=G3(g,Iub));u-p.c<=2&&u-p.b>=2&&(g=G3(g,Fsb));if(o3(g,0)!=0){if(i)a.c=G3(a.c,g);else if(E3(j3(a.c,Atb),0))a.c=j3(a.c,F3(g));else{g=P3(g,Atb);a.c=G3(a.c,g)}}continue}if(b[c]==65||b[c]==97){a.c=G3(a.c,i^b[c]==65?4:2);++c;continue}if(b[c]==82){++c;c+=Jrb.tt(p,c,3);g=0;p.c<=0&&p.b>=0&&(g=G3(g,8));p.c<=1&&p.b>=1&&(g=G3(g,16));p.c<=2&&p.b>=2&&(g=G3(g,32));p.c<=3&&p.b>=3&&(g=G3(g,64));p.b>3&&Jrb.Ut(a.n,(i?'!R':'R')+p.b);if(o3(g,0)!=0){if(i)a.c=G3(a.c,g);else if(E3(j3(a.c,120),0))a.c=j3(a.c,F3(g));else{g=P3(g,120);a.c=G3(a.c,g)}}continue}if(b[c]==114){++c;c+=Jrb.tt(p,c,1);if(p.a){i?(a.c=G3(a.c,384)):(a.c=G3(a.c,8));continue}q=p.c;p.b>p.c&&Jrb.Ut(a.n,(i?'!r':'r')+('{'+p.c+'-'+p.b+'}'));!i&&q>=3&&q<=7?(a.c=G3(a.c,Drb.r3(q<<22))):p.b>p.c||Jrb.Ut(a.n,(i?'!r':'r')+q);continue}if(b[c]==118){++c;c+=Jrb.tt(p,c,1);u=p.c;p.b>p.c&&Jrb.Ut(a.n,(i?'!v':'v')+('{'+p.c+'-'+p.b+'}'));!i&&u<=14?(a.a=u):p.b>p.c||Jrb.Ut(a.n,(i?'!v':'v')+u);continue}if(b[c]==94){++c;h=b[c++]-48;if(h<1||h>3)throw h3(new Erb._z('SmilesParser: Unsupported hybridization. Position:'+c));o=h==1?Fsb:h==2?Iub:ptb;i||(o=j3(Atb,F3(o)));a.c=G3(a.c,o);continue}if(b[c]==36){if(!i)throw h3(new Erb._z('SmilesParser: non-negated recursive SMARTS relating to preceding atom are not supported yet. Position:'+c));!a.f&&(a.f=new Krb.Yi);c+=Jrb.qt(a,b,c,a.f);continue}if(e&&(b[c]==59||b[c]==38)){++c;continue}if(e&&b[c]==44&&Jrb.lt(b,c,r)){c+=r[0]+1;continue}if(e&&b[c]==44&&(a.k&128)!=0){c+=1;break}if(b[c]==44)throw h3(new Erb._z(\"SmilesParser: alternative atom definitions not supported. (Tip: enumerate SMARTS): '\"+String.fromCharCode(b[c]&Gsb)+uvb+c));throw h3(new Erb._z(\"SmilesParser: unexpected character inside brackets: '\"+String.fromCharCode(b[c]&Gsb)+uvb+c))}return c};Jrb.nt=function nt(a,b,c,d){var e,f;d.d=true;d.c=true;if(a[b]==35){++b;d.a=0;d.b=1;while(b<c&&i5(a[b]&Gsb)){d.a=10*d.a+a[b]-48;++d.b;++b}if(d.a==0||d.a>=(Jrb.Ej(),Jrb.yj).length)throw h3(new Erb._z('SmilesParser: Atomic number out of range. position:'+(b-1)));return true}if(a[b]>=65&&a[b]<=90){d.b=a[b+1]>=97&&a[b+1]<=122?2:1;d.a=(Jrb.Ej(),Jrb.Xm(Erb.D7(Hrb.Smb(a,b,(f=d.b,hsb.Kab(),f))),321));if(d.b==2&&d.a==0){d.b=1;d.a=Jrb.Xm(Erb.D7(Hrb.Smb(a,b,(e=d.b,e))),321)}d.d=false;if(d.a==0)throw h3(new Erb._z('SmilesParser: Unknown atom label. position:'+(b-1)));return true}if(a[b]==65&&a[b+1]==115||a[b]==83&&a[b+1]==101){d.b=2;d.a=(Jrb.Ej(),Jrb.Xm(Erb.D7(Hrb.Smb(a,b,(e=d.b,hsb.Kab(),e))),321));d.c=false;return true}if(a[b]==99||a[b]==110||a[b]==111||a[b]==112||a[b]==115){d.b=1;d.a=(Jrb.Ej(),Jrb.Xm(Erb.D7(Hrb.Smb(a,b,(e=d.b,hsb.Kab(),e))),321));d.c=false;return true}return false};Jrb.ot=function ot(a,b,c,d,e){if(b[c-1]==42){a.d=6;a.c=G3(a.c,1)}else if(b[c-1]==63){a.d=0}else if((b[c-1]==65||b[c-1]==97)&&e){a.d=6;a.c=G3(a.c,1);a.c=G3(a.c,b[c-1]==65?4:2)}else{switch(String.fromCharCode(b[c-1]).toUpperCase().charCodeAt(0)){case 66:if(c<d&&b[c]==114){a.d=35;++c}else a.d=5;break;case 67:if(c<d&&b[c]==108){a.d=17;++c}else a.d=6;break;case 70:a.d=9;break;case 73:a.d=53;break;case 78:a.d=7;break;case 79:a.d=8;break;case 80:a.d=15;break;case 83:a.d=16;}}return c};Jrb.pt=function pt(a,b,c){var d,e;c[0]=0;if(a[b]==43||a[b]==45){e=a[b];d=1;++c[0];while(a[b+c[0]]==e){++d;++c[0]}if(d==1&&i5(a[b+1]&Gsb)){d=a[b+1]-48;++c[0]}return e==43?d:-d}return 0};Jrb.qt=function qt(a,b,c,d){var e,f,g,h,i;if(b[c+1]!=40)throw h3(new Erb._z(\"SmilesParser: '$' for recursive SMARTS must be followed by '('. position:\"+c));h=1;f=c+2;while(f<b.length&&h>0){b[f]==40?++h:b[f]==41&&--h;++f}if(h>0)throw h3(new Erb._z(\"SmilesParser: Missing closing ')' for recursive SMARTS. '('-position:\"+(c+1)));g=new Jrb.Hu(16,16);Jrb.vm(g,true);i=new Jrb.Wt(a.k);Jrb.St(i,a.n.f);Jrb.Kt(i,g,b,c+2,f-1,true,true);Hrb.Kmb(d.a,g);if(b[c-1]==33)for(e=0;e<g.q;e++)Jrb.cm(g,e,jtb,true);return f-c};Jrb.rt=function rt(a,b){this.n=a;this.k=b;this.j=(b&16)==0;this.d=-1;this.e=0;this.o=0;this.a=-1;this.g=-1;this.c=0};Z3(248,1,{},Jrb.rt);_.a=0;_.c=0;_.d=0;_.e=0;_.g=0;_.i=false;_.j=false;_.k=0;_.o=0;_.p=false;Drb.BZ=B5(248);Jrb.st=function st(){this.a=-1};Z3(312,1,{},Jrb.st);_.a=0;_.b=0;_.c=false;_.d=false;Drb.zZ=B5(312);Jrb.tt=function tt(a,b,c){var d,e,f,g,h;a.a=false;a.d=b;if(i5(a.e[b]&Gsb)){h=Jrb.ut(a);a.c=a.b=h;d=b-1;while(d>1&&l5(a.e[d-1]))--d;while(a.e[a.d]==44){g=true;f=b-d;for(e=0;e<f;e++){if(a.e[d+e]!==a.e[a.d+1+e]){g=false;break}}if(!g)break;a.d+=1+f;h=Jrb.ut(a);a.c>h?(a.c=h):a.b<h&&(a.b=h)}return a.d-b}if(a.e[b]==123&&i5(a.e[b+1]&Gsb)){++a.d;a.c=Jrb.ut(a);if(a.e[a.d++]!=45)return 0;if(!i5(a.e[a.d]&Gsb))return 0;a.b=Jrb.ut(a);if(a.e[a.d++]!=125)return 0;return a.d-b}a.c=1;a.b=c;a.a=true;return 0};Jrb.ut=function ut(a){var b;b=a.e[a.d++]-48;i5(a.e[a.d]&Gsb)&&(b=10*b+(a.e[a.d++]-48));return b};Jrb.vt=function vt(a){return '{'+a.c+'-'+a.b+'}'};Jrb.wt=function wt(a){this.e=a};Z3(313,1,{},Jrb.wt);_.mb=function xt(){return Jrb.vt(this)};_.a=false;_.b=0;_.c=0;_.d=0;Drb.AZ=B5(313);Jrb.yt=function yt(a,b){var c,d,e,f;f=false;a.b=b;Jrb.ou(a.b,15);c=a.b.f;d=a.b.g;a.j=tX(Drb.c3,itb,6,d,16,1);for(e=0;e<d;++e)a.j[e]=false;a.g=tX(Drb.c3,itb,6,c,16,1);a.c=tX(Drb.NY,Qsb,6,c,15,1);for(e=0;e<c;++e){a.g[e]=false;a.c[e]=-1}a.e=tX(Drb.B0,Esb,2,3*c,6,1);a.i=0;a.d=0;a.a=0;while(!f){for(e=0;e<c;++e){if(!a.g[e]){a.a>0&&(a.e[a.i++]='.');Jrb.At(a,e,-1);++a.a;break}}e==c&&(f=true)}a.f='';for(e=0;e<a.i;++e)a.f+=''+a.e[e];return a.f};Jrb.zt=function zt(a){switch(a){case 5:case 6:case 7:case 8:case 9:case 15:case 16:case 17:case 35:case 53:return true;default:return false;}};Jrb.At=function At(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;d=true;i=0;p=0;m=a.i;a.c[b]=m;h=Jrb.Dk(a.b,b);g=Jrb.sk(a.b,b);e=Jrb.mk(a.b,b);f=Jrb.wk(a.b,b);k=Jrb.Gn(a.b,b);e==0&&f==0&&Jrb.zt(h)&&(d=false);a.e[m]='';if(c!=-1){switch(Jrb.Qk(a.b,c)){case 0:a.e[m]+='~';break;case 2:a.e[m]+='=';break;case 3:a.e[m]+='#';}}d&&(a.e[m]+='[');f!=0&&(a.e[m]+=''+f);a.e[m]+=''+g;if(d){if(0<(o=Jrb.Wn(a.b,b))){a.e[m]+='H';1<o&&(a.e[m]+=o)}}if(e!=0){e>0?(a.e[m]+='+'):(a.e[m]+='-');$wnd.Math.abs(e)>1&&(a.e[m]+=''+$wnd.Math.abs(e))}d&&(a.e[m]+=']');c!=-1&&(a.j[c]=true);a.g[b]=true;++a.i;for(n=0;n<k;++n)a.j[Jrb.Hn(a.b,b,n)]||++i;for(n=0;n<k;++n){j=Jrb.Fn(a.b,b,n);l=Jrb.Hn(a.b,b,n);if(a.j[l]){++p;continue}if(a.g[j]){++a.d;a.j[l]=true;switch(Jrb.Qk(a.b,l)){case 0:a.e[a.c[j]]+='~';a.e[m]+='~';break;case 2:a.e[a.c[j]]+='=';a.e[m]+='=';break;case 3:a.e[a.c[j]]+='#';a.e[m]+='3';}if(a.d>9){a.e[a.c[j]]+='%';a.e[m]+='%'}a.e[a.c[j]]+=''+a.d;a.e[m]+=''+a.d;continue}n-p<i-1&&(a.e[a.i++]='(');Jrb.At(a,j,l);n-p<i-1&&(a.e[a.i++]=')')}};Jrb.Bt=function Bt(){};Z3(227,1,{},Jrb.Bt);_.a=0;_.d=0;_.i=0;Drb.DZ=B5(227);Jrb.Ct=function Ct(a,b,c,d,e,f){var g;g=Jrb.Jj(a.k,b,c,d);Krb.xbb(a.s,b+'_'+c,BX(nX(Drb.NY,1),Qsb,6,15,[e,f]));Krb.xbb(a.s,c+'_'+b,BX(nX(Drb.NY,1),Qsb,6,15,[e,f]));Krb.tfb(a.a,b);Krb.tfb(a.a,c);return g};Jrb.Dt=function Dt(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;j=tX(Drb.NY,Qsb,6,a.k.f,15,1);h=tX(Drb.NY,Qsb,6,a.k.f,15,1);i=tX(Drb.NY,Qsb,6,a.k.f,15,1);k=tX(Drb.NY,Qsb,6,a.k.f,15,1);c=Jrb.Ik(a.k,0,b);d=Jrb.Ik(a.k,1,b);h[0]=c;h[1]=d;i[0]=-1;i[1]=b;j[c]=1;j[d]=2;k[c]=-1;k[d]=c;g=1;l=1;while(g<=l&&j[h[g]]<15){o=h[g];for(m=0;m<Jrb.Gn(a.k,o);m++){e=Jrb.Fn(a.k,o,m);if(e!=k[o]){f=Jrb.Hn(a.k,o,m);if(e==c){i[0]=f;for(n=0;n<=l;n++){if(!a.g[i[m]]){a.g[i[m]]=true;++a.c}}return}if(Jrb.sl(a.k,e)&&j[e]==0){++l;h[l]=e;i[l]=f;j[e]=j[o]+1;k[e]=o}}}++g}return};Jrb.Et=function Et(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;Jrb.ou(a.k,7);l=false;m=tX(Drb.NY,Qsb,6,2,15,1);n=tX(Drb.NY,Qsb,6,2,15,1);k=tX(Drb.NY,Qsb,6,2,15,1);for(d=0;d<a.k.g;d++){if(!Jrb.Po(a.k,d)&&Jrb.Tk(a.k,d)==2){for(g=0;g<2;g++){m[g]=-1;k[g]=-1;b=Jrb.Ik(a.k,g,d);for(j=0;j<Jrb.Gn(a.k,b);j++){e=Jrb.Hn(a.k,b,j);if(e!=d){if(m[g]==-1&&(Jrb.Tk(a.k,e)==257||Jrb.Tk(a.k,e)==129)){m[g]=Jrb.Fn(a.k,b,j);n[g]=e}else{k[g]=Jrb.Fn(a.k,b,j)}}}if(m[g]==-1)break}if(m[0]!=-1&&m[1]!=-1){i=Jrb.Tk(a.k,n[0])==Jrb.Tk(a.k,n[1]);for(h=0;h<2;h++)m[h]==Jrb.Ik(a.k,0,n[h])&&(i=!i);for(f=0;f<2;f++)k[f]!=-1&&k[f]<m[f]&&(i=!i);Jrb.qm(a.k,d,i?2:1,false);l=true}}}for(c=0;c<a.k.g;c++)(Jrb.Tk(a.k,c)==257||Jrb.Tk(a.k,c)==129)&&Jrb.tm(a.k,c,1);return l};Jrb.Ft=function Ft(a){return a==61?2:a==35?4:a==36?32:a==58?8:a==62?16:a==126?31:1};Jrb.Gt=function Gt(a,b){var c,d,e,f,g,h,i,j,k,l,m;for(c=0;c<a.k.f;c++){if(Jrb.sl(a.k,c)){i=tX(Drb.NY,Qsb,6,a.k.f,15,1);h=tX(Drb.NY,Qsb,6,a.k.f,15,1);j=tX(Drb.NY,Qsb,6,a.k.f,15,1);h[0]=c;i[c]=1;j[c]=-1;g=0;k=0;while(g<=k){e=(i[h[g]]&1)==1?1:2;for(l=0;l<Jrb.Gn(a.k,h[g]);l++){d=Jrb.Hn(a.k,h[g],l);if(Jrb.Qk(a.k,d)==e&&b[d]){f=Jrb.Fn(a.k,h[g],l);if(i[f]==0){if(e==1&&Jrb.sl(a.k,f)){m=h[g];while(m!=-1){Jrb.tm(a.k,Jrb.Dn(a.k,f,m),e==1?2:1);e=3-e;f=m;m=j[m]}Jrb._l(a.k,c,false);Jrb._l(a.k,f,false);a.b-=2;return true}h[++k]=f;j[f]=h[g];i[f]=i[h[g]]+1}}}++g}}}return false};\nJrb.Ht=function Ht(a){var b,c,d,e;for(b=0;b<a.k.f;b++){if(Jrb.Dk(a.k,b)==7&&Jrb.mk(a.k,b)==0&&Jrb.ao(a.k,b)>3&&Jrb.wn(a.k,b)>0){for(e=0;e<Jrb.Gn(a.k,b);e++){c=Jrb.Fn(a.k,b,e);d=Jrb.Hn(a.k,b,e);if(Jrb.Qk(a.k,d)>1&&Jrb.ql(a.k,c)){Jrb.Tk(a.k,d)==4?Jrb.tm(a.k,d,2):Jrb.tm(a.k,d,1);Jrb.Sl(a.k,b,Jrb.mk(a.k,b)+1);Jrb.Sl(a.k,c,Jrb.mk(a.k,c)-1);Jrb.Ql(a.k,b,-1);break}}}}};Jrb.It=function It(a){return !a.r?'':'Unresolved SMARTS features:'+a.r};Jrb.Jt=function Jt(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U;Jrb.ou(a.k,1);a.g=tX(Drb.c3,itb,6,a.k.g,16,1);a.c=0;for(l=0;l<a.k.g;l++){if(Jrb.Tk(a.k,l)==8){Jrb.tm(a.k,l,1);a.g[l]=true;++a.c}}t=tX(Drb.c3,itb,6,a.k.f,16,1);U=new Jrb.Tr(a.k,3);s=tX(Drb.c3,itb,6,U.i.a.length,16,1);for(Q=0;Q<U.i.a.length;Q++){S=Krb.Ji(U.i,Q);s[Q]=true;for(A=S,D=0,H=A.length;D<H;++D){v=A[D];if(!Jrb.sl(a.k,v)){s[Q]=false;break}}if(s[Q]){for(B=S,F=0,I=B.length;F<I;++F){v=B[F];t[v]=true}T=Krb.Ji(U.j,Q);for(w=T,C=0,G=w.length;C<G;++C){v=w[C];if(!a.g[v]){a.g[v]=true;++a.c}}}}for(m=0;m<a.k.g;m++){!a.g[m]&&(U.b[m]&Gsb)!=0&&Jrb.sl(a.k,Jrb.Ik(a.k,0,m))&&Jrb.sl(a.k,Jrb.Ik(a.k,1,m))&&Jrb.Dt(a,m)}for(n=0;n<a.k.g;n++){if(!a.g[n]){f=Jrb.Ik(a.k,0,n);g=Jrb.Ik(a.k,1,n);if(!t[f]&&!t[g]&&Jrb.sl(a.k,f)&&Jrb.sl(a.k,g)){a.g[n]=true;++a.c}}}Jrb.ou(a.k,7);(a.q==2||a.q==1&&a.p)&&Jrb.Qt(a);r=tX(Drb.c3,itb,6,a.k.g,16,1);a.k.g>=0&&Erb.Y7(a.g,0,r,0,a.k.g);for(R=0;R<U.i.a.length;R++){if(s[R]){S=Krb.Ji(U.i,R);for(K=S,L=0,M=K.length;L<M;++L){J=K[L];if(!Jrb.Rt(a,J)){if(Jrb.sl(a.k,J)){Jrb._l(a.k,J,false);--a.b}for(v=0;v<Jrb.Gn(a.k,J);v++){p=Jrb.Hn(a.k,J,v);if(a.g[p]){a.g[p]=false;--a.c}}}}}}Jrb.Pt(a);for(P=0;P<U.i.a.length;P++){if(s[P]&&Krb.Ji(U.j,P).length==6){T=Krb.Ji(U.j,P);u=true;for(i=T,j=0,k=i.length;j<k;++j){h=i[j];if(!a.g[h]){u=false;break}}if(u){Jrb.Ot(a,T[0]);Jrb.Ot(a,T[2]);Jrb.Ot(a,T[4]);Jrb.Pt(a)}}}for(O=5;O>=4;O--){do{N=false;for(h=0;h<a.k.g;h++){if(a.g[h]){d=0;for(q=0;q<2;q++){o=Jrb.Ik(a.k,q,h);for(v=0;v<Jrb.Gn(a.k,o);v++)a.g[Jrb.Hn(a.k,o,v)]&&++d}if(d==O){Jrb.Ot(a,h);Jrb.Pt(a);N=true;break}}}}while(N)}while(a.b>=2)if(!Jrb.Gt(a,r))break;if(b){if(a.b!=0){for(e=0;e<a.k.f;e++){if(Jrb.sl(a.k,e)){Jrb._l(a.k,e,false);Jrb.cm(a.k,e,2,true);--a.b;c=true}}}if(a.c!=0){for(h=0;h<a.k.g;h++){if(a.g[h]){a.g[h]=false;Jrb.tm(a.k,h,8);--a.c;c=true}}}}else{for(e=0;e<a.k.f;e++){if(Jrb.sl(a.k,e)&&Jrb.Wn(a.k,e)!=0){Jrb._l(a.k,e,false);Jrb.dm(a.k,e,32);--a.b}}}if(a.q==0||a.q==1&&!c){if(a.b!=0)throw h3(new Erb._z(vvb));if(a.c!=0)throw h3(new Erb._z(vvb))}};Jrb.Kt=function Kt(a,b,c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb,fb,gb,hb,ib;a.k=b;Jrb.mu(a.k);a.s=new Krb.thb;a.a=new Krb.ufb;!!a.r&&Erb.G4(a.r,0);a.b=0;a.p=false;j=a.q!=0;T=null;o=tX(Drb.NY,Qsb,6,32,15,1);o[0]=-1;Y=tX(Drb.NY,Qsb,6,16,15,1);ab=tX(Drb.NY,Qsb,6,16,15,1);$=tX(Drb.NY,Qsb,6,16,15,1);Z=tX(Drb.NY,Qsb,6,16,15,1);for(J=0;J<16;J++)Y[J]=-1;m=0;C=-1;bb=false;L=false;G=false;t=0;r=1;q=0;while(c[d]<=32)++d;while(d<e){cb=c[d++]&Gsb;if(Erb.k5(cb)||cb==42||cb==63||cb==33&&j&&bb||cb==35&&j&&bb||cb==36&&j&&bb){n=new Jrb.rt(a,a.j|a.q);if(bb){if((a.j&128)!=0){w=new Jrb.Yt(d-1);d=Jrb.mt(n,c,d,e,true,true);if(c[d-1]!=93){while(c[d-1]!=93){d=Jrb.mt(n,c,d+1,e,true,true);++w.a}a.f.add(w)}}else{d=Jrb.mt(n,c,d,e,j,false)}}else{d=Jrb.ot(n,c,d,e,j)}bb=false;if(!n.q?null:Krb.Ji(n.q,0)){C=o[t];o[t]=b.q;Jrb.Kj(b,!n.q?null:Krb.Ji(n.q,0));if(C!=-1&&r!=512){p=Jrb.Jj(a.k,C,C,r);if(q!=0){a.p=true;Jrb.sm(a.k,p,q,true);Jrb.Fj(a.k,p)}}r=1;q=0;continue}if(n.d==-1&&cb!=63)throw h3(new Erb._z('SmilesParser: unknown element label found. Position:'+(d-1)));(E3(n.c,0)||!!n.b)&&(a.p=true);l=Jrb.jt(n,a.k,cb,d);Jrb.sl(a.k,l)&&++a.b;C=o[t];if(C!=-1&&r!=512){p=Jrb.Jj(a.k,C,l,r);if(q!=0){a.p=true;Jrb.sm(a.k,p,q,true);Jrb.Fj(a.k,p)}}r=1;q=0;o[t]=l;if(m!=0){Jrb.am(a.k,l,m);m=0}if(g){R=!T?null:Krb.kdb(T,Erb.A6(C));!!R&&Jrb.$t(R,l,(M=d,n.d==1&&Jrb.wk(a.k,l)==0,M));if(n.p){!T&&(T=new Krb.xjb);H=n.g==9?0:n.g;Krb.pjb(T,Erb.A6(l),new Jrb.eu(a,l,d-2,C,H,n.i))}}continue}if(cb==46){o[t]=-1;r=512;continue}if(cb==45||cb==61||cb==35||cb==36||cb==58||cb==47||cb==92||cb==60||cb==126||cb==33||cb==64){if(bb)throw h3(new Erb._z(\"SmilesParser: unexpected bond symbol inside square brackets: '\"+String.fromCharCode(cb)+uvb+(d-1)));A=0;while(cb==45||cb==61||cb==35||cb==36||cb==58||cb==47||cb==92||cb==60||cb==126||cb==33||cb==64){if(cb==33){cb=c[d++]&Gsb;if(cb==64)q|=128;else if(cb==45&&c[d]==62||cb==60&&c[d]==45){A|=16;++d}else if(cb==45)A|=1;else if(cb==61)A|=2;else if(cb==35)A|=4;else if(cb==36)A|=32;else if(cb==58)A|=8;else throw h3(new Erb._z(\"SmilesParser: bond symbol '\"+String.fromCharCode(cb)+\"' not allowed after '!'. Position:\"+(d-1)))}else{if(cb==64)q|=256;else if(cb==61)r=2;else if(cb==35)r=4;else if(cb==36)r=32;else if(cb==58)r=8;else if(cb==126)q|=15;else if(cb==47){g&&(r=257)}else if(cb==92){g&&(r=129)}else if(cb==45&&c[d]==62||cb==60&&c[d]==45){r=16;++d}if(c[d]==44){q|=(r==16?62:cb)==61?2:(r==16?62:cb)==35?4:(r==16?62:cb)==36?32:(r==16?62:cb)==58?8:(r==16?62:cb)==62?16:(r==16?62:cb)==126?31:1;while(c[d]==44){if(c[d+1]==60&&c[d+2]==45||c[d+1]==45&&c[d+2]==62){q|=16;d+=3}else{q|=Jrb.Ft(c[d+1]&Gsb);d+=2}}}}if(c[d]==59){++d;cb=c[d++]&Gsb;continue}A!=0&&(q|=31&~A);break}continue}if(cb<=32){d=e;continue}if(i5(cb)){O=cb-48;if(bb){while(d<e&&i5(c[d]&Gsb)){O=10*O+c[d]-48;++d}m=O}else{s=L?d-3:d-2;F=c[s]==45||c[s]==47||c[s]==92||c[s]==61||c[s]==35||c[s]==36||c[s]==58||c[s]==62||c[s]==126;if(L&&d<e&&i5(c[d]&Gsb)){O=10*O+c[d]-48;L=false;++d}if(O>=Y.length){if(O>=100)throw h3(new Erb._z('SmilesParser: ringClosureAtom number out of range: '+O));P=Y.length;N=Y.length;while(N<=O)N=$wnd.Math.min(100,N+16);Y=(Hrb.cnb(N),Krb.Eeb(Y,tX(Drb.NY,Qsb,6,N,15,1),0,N));ab=(Hrb.cnb(N),Krb.Eeb(ab,tX(Drb.NY,Qsb,6,N,15,1),0,N));$=(Hrb.cnb(N),Krb.Eeb($,tX(Drb.NY,Qsb,6,N,15,1),0,N));Z=(Hrb.cnb(N),Krb.Eeb(Z,tX(Drb.NY,Qsb,6,N,15,1),0,N));for(I=P;I<N;I++)Y[I]=-1}if(Y[O]==-1){Y[O]=o[t];ab[O]=d-1;$[O]=F?r:-1;Z[O]=F?q:0}else{if(Y[O]==o[t])throw h3(new Erb._z('SmilesParser: ring closure to same atom'));if(g&&!!T){R=Krb.kdb(T,Erb.A6(Y[O]));!!R&&Jrb.$t(R,o[t],ab[O]);R=Krb.kdb(T,Erb.A6(o[t]));!!R&&Jrb.$t(R,Y[O],d-1)}$[O]!=-1?(r=$[O]):r==257?(r=129):r==129&&(r=257);h=Y[O];i=o[t];p=Jrb.Ct(a,h,i,r,ab[O],d-1);Z[O]!=0&&(q=Z[O]);if(q!=0){a.p=true;Jrb.sm(a.k,p,Z[O],true);Jrb.Fj(a.k,p)}Y[O]=-1}r=1;q=0}continue}if(cb==43){throw h3(new Erb._z(\"SmilesParser: '+' found outside brackets. Position:\"+(d-1)))}if(cb==40){if(o[t]==-1){G=true;continue}++t;o.length==t&&(o=Krb.Ceb(o,o.length+32));o[t]=o[t-1];continue}if(cb==41){if(t==0){if(!G)throw h3(new Erb._z(\"SmilesParser: Closing ')' without opening counterpart. Position:\"+(d-1)));o[0]=-1;G=false;continue}--t;continue}if(cb==91){bb=true;continue}if(cb==93){throw h3(new Erb._z('SmilesParser: closing bracket at unexpected position:'+(d-1)))}if(cb==37){L=true;continue}throw h3(new Erb._z(\"SmilesParser: unexpected character outside brackets: '\"+String.fromCharCode(cb)+pvb+(d-1)))}if(r!=1)throw h3(new Erb._z('SmilesParser: dangling open bond'));for(V=Y,W=0,X=V.length;W<X;++W){U=V[W];if(U!=-1)throw h3(new Erb._z('SmilesParser: dangling ring closure.'))}D=Jrb.Tn(a.k);Jrb.xm(a.k,true);Jrb.ou(a.k,1);for(k=0;k<a.k.q;k++){if(Jrb.ok(a.k,k)!=null){B=Jrb.pk(a.k,k)[0];if(a.p||a.q==2){if(B!=9){if(a.i){for(I=0;I<B;I++)Jrb.Jj(a.k,k,Jrb.Hj(a.k,1),1)}else{B==0&&Jrb.cm(a.k,k,1792,true);B==1&&Jrb.cm(a.k,k,1664,true);B==2&&Jrb.cm(a.k,k,1408,true);B==3&&Jrb.cm(a.k,k,896,true)}}}else{B==9&&(B=0);if(!Jrb.tl(a.k,k)&&(!Jrb.sl(a.k,k)||Jrb.Dk(a.k,k)==6&&Jrb.mk(a.k,k)==0)){ib=Jrb.Um(Jrb.Dk(a.k,k));u=false;db=Jrb.ao(a.k,k);db-=Jrb.Xk(a.k,k,db);db+=B;Jrb.sl(a.k,k)&&++db;for(fb=ib,gb=0,hb=fb.length;gb<hb;++gb){eb=fb[gb];if(db<=eb){u=true;eb==db+2?Jrb.dm(a.k,k,48):eb==db+1?Jrb.dm(a.k,k,32):(eb!=db||eb!=ib[0])&&Jrb.Ql(a.k,k,db);break}}u||Jrb.Ql(a.k,k,db)}if(a.i||!Jrb.ep(a.k,k))for(I=0;I<B;I++)Jrb.Jj(a.k,k,Jrb.Hj(a.k,1),1)}}else if(!a.i&&(a.p||a.q==2)){B=Jrb.Kn(a.k,k);B>=1&&Jrb.cm(a.k,k,128,true);B>=2&&Jrb.cm(a.k,k,256,true);B>=3&&Jrb.cm(a.k,k,512,true);B>=4&&Jrb.cm(a.k,k,vtb,true)}}!a.i&&(a.p||a.q==2)&&Jrb.Wo(a.k,true);Jrb.ou(a.k,1);Jrb.Ht(a);Jrb.Jt(a,j,a.p);a.k.t=null;Jrb.xm(a.k,false);if(g){Jrb.Et(a);if(T){for(S=(Q=(new Krb.Kcb(T)).a.hc().sb(),new Krb.Rcb(Q));S.a.jc();){R=(v=S.a.kc(),v.nc());Jrb.bm(a.k,D[R.a],Jrb._t(R,D),false)}Jrb._o(a.k,0)}}Jrb._o(a.k,0);if(f){K=new Nrb.zy(a.d);E3(a.n,0)&&Nrb.vy(K,a.n);Nrb.gy(K,a.k);g&&Jrb.Bu(a.k)}if(a.p||a.q==2){Jrb.vm(a.k,true);Jrb.gp(a.k);Jrb.hp(a.k)}};Jrb.Lt=function Lt(a,b,c,d,e){Jrb.Kt(a,b,c,0,c.length,d,e)};Jrb.Mt=function Mt(a,b){var c;return b==null?null:Jrb.Nt(a,Hrb.Umb((c=b,hsb.Kab(),c)))};Jrb.Nt=function Nt(a,b){var c,d,e,f,g,h,i,j,k,l,m;g=Zrb.WU(b,0);while(g>0&&b[g-1]==45)g=Zrb.WU(b,g+1);h=g==-1?-1:Zrb.WU(b,g+1);while(h>0&&b[h-1]==45)h=Zrb.WU(b,h+1);if(h==-1)throw h3(new Erb._z(\"Missing one or both separators ('>').\"));if(Zrb.WU(b,h+1)!=-1)throw h3(new Erb._z(\"Found more than 2 separators ('>').\"));m=new Urb.FF;l=0;f=0;c=-1;while(f<b.length){while(f<b.length&&b[f]==46)++f;if(b[f]==40){if(c!=-1)throw h3(new Erb._z('Second open group bracket found before closing first one.'));++f;i=0;for(e=f;e<b.length;e++){if(b[e]==40){++i}else if(b[e]==41){if(i--==0){c=e;break}}}}d=f;while(d<b.length&&b[d]!=62&&!(b[d]==46&&(a.o&&c==-1||c==d-1||d+1==b.length||b[d+1]==46)))++d;k=d;if(c==d-1){--k;c=-1}if(f!=k){j=new Jrb.Gu;Jrb.Kt(a,j,b,f,k,true,true);if(a.q==1&&a.p)return Jrb.Nt(new Jrb.Wt(a.j|2),b);l==0?(Krb.Ei(m.g,j),m.d=-1):l==1?Krb.Ei(m.a,j):(Krb.Ei(m.f,j),m.d=-1)}f=d;while(f<b.length&&b[f]==62){++f;++l}}return m};Jrb.Ot=function Ot(a,b){var c,d,e,f;Jrb.Tk(a.k,b)==1&&Jrb.tm(a.k,b,2);for(e=0;e<2;e++){c=Jrb.Ik(a.k,e,b);if(Jrb.sl(a.k,c)){Jrb._l(a.k,c,false);--a.b}for(f=0;f<Jrb.Gn(a.k,c);f++){d=Jrb.Hn(a.k,c,f);if(a.g[d]){a.g[d]=false;--a.c}}}};Jrb.Pt=function Pt(a){var b,c,d,e,f,g,h;do{h=false;for(c=0;c<a.k.g;c++){if(a.g[c]){f=false;for(e=0;e<2;e++){b=false;d=Jrb.Ik(a.k,e,c);for(g=0;g<Jrb.Gn(a.k,d);g++){if(c!=Jrb.Hn(a.k,d,g)&&a.g[Jrb.Hn(a.k,d,g)]){b=true;break}}if(!b){f=true;break}}if(f){h=true;Jrb.Ot(a,c)}}}}while(h)};Jrb.Qt=function Qt(a){var b,c,d,e,f,g;for(b=0;b<a.k.g;b++){if(a.g[b]){f=true;for(e=0;e<2&&f;e++){c=Jrb.Ik(a.k,e,b);for(g=0;g<Jrb.Gn(a.k,c)&&f;g++){b!=Jrb.Hn(a.k,c,g)&&a.g[Jrb.Hn(a.k,c,g)]&&(f=false)}}if(f){Jrb.tm(a.k,b,8);--a.c;for(d=0;d<2;d++){c=Jrb.Ik(a.k,d,b);if(Jrb.sl(a.k,c)){Jrb._l(a.k,c,false);--a.b}}}}}};Jrb.Rt=function Rt(a,b){var c,d;if(!Jrb.Vr(Jrb.Dk(a.k,b)))return false;if(Jrb.Dk(a.k,b)==6){if(!Jrb.sl(a.k,b))return false;if(Jrb.mk(a.k,b)>0)return false}c=Jrb.ok(a.k,b)==null||Jrb.pk(a.k,b)[0]==9?0:Jrb.pk(a.k,b)[0];d=Jrb.Rn(a.k,b)-c;if(d<1)return false;if(Jrb.Dk(a.k,b)==16||Jrb.Dk(a.k,b)==34||Jrb.Dk(a.k,b)==52){if(Jrb.Gn(a.k,b)==2&&Jrb.mk(a.k,b)<=0)return false;return d!=2}return true};Jrb.St=function St(a,b){a.f=b};Jrb.Tt=function Tt(a,b){a.n=b};Jrb.Ut=function Ut(a,b){if(a.e){!a.r&&(a.r=new Erb.S7);Erb.P7(a.r,' ');Erb.P7(a.r,b)}};Jrb.Vt=function Vt(){Jrb.Wt.call(this,0)};Jrb.Wt=function Wt(a){this.j=a&-4;this.q=a&3;this.o=(a&32)!=0;this.e=(a&64)!=0;this.i=(a&8)!=0;this.d=2;(a&4)!=0&&(this.d|=1);this.i&&(this.d&=-3)};Z3(100,1,{},Jrb.Vt,Jrb.Wt);_.b=0;_.c=0;_.d=0;_.e=false;_.i=false;_.j=0;_.n=0;_.o=false;_.p=false;_.q=0;Drb.HZ=B5(100);Jrb.Xt=function Xt(a,b){return q6(b.b,a.b)};Jrb.Yt=function Yt(a){this.b=a;this.a=1};Z3(185,1,{185:1,28:1},Jrb.Yt);_.rb=function Zt(a){return Jrb.Xt(this,a)};_.a=0;_.b=0;Drb.EZ=B5(185);Jrb.$t=function $t(a,b,c){if(!a.c){if(a.e.a.length==4){a.c=true;return}Krb.Ei(a.e,new Jrb.fu(a,b,c))}};Jrb._t=function _t(a,b){var c,d,e;if(a.c)return 3;for(e=new Krb.ueb(a.e);e.a<e.c.a.length;){d=Krb.teb(e);d.a!=wvb&&d.a!=xsb&&(d.a=b[d.a])}c=false;switch(a.e.a.length){case 2:c=Jrb.cu(a,b);break;case 3:Krb.Ei(a.e,new Jrb.fu(a,xsb,a.b));case 4:c=Jrb.du(a);break;default:return 3;}return a.d^c?1:2};Jrb.au=function au(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;t=a.f.k;e=Krb.Ji(a.e,c);H=e.a;l=b[a.a];q=Jrb.Wn(t,H)>0&&t.j[H]==t.e[H];p=Krb.qfb(a.f.a,a.f.t[H]);if(!q&&!p){g=t.i[H][2];if(t.C[g]==1){g=a.f.t[g];(c==0?g>H:a.f.t[t.i[H][1]]>g)&&(d=!d)}return d}if(q){f=t.i[H][c];g=a.f.t[f];if(g>H){d=!d;t.C[f]==1&&(d=!d)}}if(p){u=t.e[H];n=tX(Drb.NY,Qsb,6,u-1,15,1);o=tX(Drb.NY,Qsb,6,u-1,15,1);v=0;for(r=0,A=0;r<u;r++){g=t.i[H][r];if(g==l)continue;n[A]=g;j=Jrb.Dn(t,H,g);D=Krb.ubb(a.f.s,a.f.t[H]+'_'+a.f.t[g]);o[A++]=D==null?-1:j;D!=null&&++v}if(q){n[0]<H&&(d=!d)}else{switch(v){case 1:if(Jrb.Wn(t,H)>0){break}s=o[0]>=0;m=n[s?0:1];w=n[s?1:0];w>H?m>H&&t.C[w]!=1&&(d=!d):m<H&&(d=!d);break;case 2:h=Jrb.bu(a,o[0],H);i=Jrb.bu(a,o[1],H);F=Krb.ubb(a.f.s,H+'_'+a.f.t[h]);G=Krb.ubb(a.f.s,H+'_'+a.f.t[i]);k=a.b;if(c==0){B=F[1]<k?F[1]:F[0];C=G[1]<k?G[1]:G[0]}else{B=F[0]<k?F[1]:F[0];C=G[0]<k?G[1]:G[0]}B<C!=h<i&&(d=!d);}}}return d};Jrb.bu=function bu(a,b,c){return a.f.k.D[0][b]==c?a.f.k.D[1][b]:a.f.k.D[0][b]};Jrb.cu=function cu(a,b){var c,d;d=false;if(a.f.t==null){a.f.t=tX(Drb.NY,Qsb,6,b.length,15,1);for(c=a.f.t.length;--c>=0;){a.f.t[b[c]]=c}}d=Jrb.au(a,b,0,d);d=Jrb.au(a,b,1,d);return d};Jrb.du=function du(a){var b,c,d;c=false;for(b=1;b<a.e.a.length;b++){for(d=0;d<b;d++){Krb.Ji(a.e,d).a>Krb.Ji(a.e,b).a&&(c=!c);Krb.Ji(a.e,d).b>Krb.Ji(a.e,b).b&&(c=!c)}}return c};Jrb.eu=function eu(a,b,c,d,e,f){this.f=a;if(e!=0&&e!=1){this.c=true}else{this.a=b;this.b=c;this.d=f;this.e=new Krb.Yi;d!=-1&&Jrb.$t(this,d,c-1);d!=-1&&e==1&&Jrb.$t(this,wvb,c+1)}};Z3(186,1,{186:1},Jrb.eu);_.a=0;_.b=0;_.c=false;_.d=false;Drb.GZ=B5(186);Jrb.fu=function fu(a,b,c){this.c=a;this.a=b;this.b=c};Z3(149,1,{149:1},Jrb.fu);_.mb=function gu(){return '['+(this.a==wvb?'h':this.a==xsb?'lp':Jrb.sk(this.c.f.k,this.a))+this.b+']'};_.a=0;_.b=0;Drb.FZ=B5(149);Jrb.hu=function hu(a){a.c=new Krb.Yi};Jrb.iu=function iu(a,b){var c,d,e,f;f=a.c.a.length;if(f==0){Krb.Di(a.c,0,b);return 0}e=1;while(2*e<=f)e<<=1;d=e;--e;while(d!=0){d>>=1;if(e>=f){e-=d;continue}c=Erb.e7(b,Krb.Ji(a.c,e));if(c==0)return -1;if(d==0)break;c<0?(e-=d):(e+=d)}e<f&&Erb.e7(b,Krb.Ji(a.c,e))>0&&++e;Krb.Di(a.c,e,b);return e};Jrb.ju=function ju(a,b){var c,d,e,f;f=a.c.a.length;if(f==0)return -1;e=1;while(2*e<=f)e<<=1;d=e;--e;while(d!=0){d>>=1;if(e>=f){e-=d;continue}c=Erb.e7(b,Krb.Ji(a.c,e));if(c==0)return e;if(d==0)break;c<0?(e-=d):(e+=d)}return -1};Jrb.ku=function ku(){Jrb.hu(this)};Z3(87,1,{87:1,4:1},Jrb.ku);_.Cb=function lu(a){return Jrb.ju(this,a)};Drb.IZ=B5(87);Jrb.mu=function mu(a){Jrb.Wj(a);a.d=null};Jrb.nu=function nu(a,b){Jrb.ak(a,b);!!a.d&&(b.T=0)};Jrb.ou=function ou(a,b){var c,d,e,f;Jrb.kn(a,b);if((b&~a.T)==0)return;(a.T&15)!=0&&a.q>1&&Jrb.xh(a.J[0],a.J[1])&&Nrb.gy(new Nrb.zy(0),a);a.c&&(b|=128);for(c=0;c<a.q;c++)a.u[c]&=-67223560;for(d=0;d<a.g;d++)a.F[d]&=-64;e=0;f=0;if((b&32)!=0){e=32;f=1}else if((b&64)!=0){e=64;f=3}if((b&128)!=0){e|=128;f|=32}a.d=new Jrb.fg(a,f);Jrb.ag(a.d);Jrb.bg(a.d);Jrb._f(a.d);Jrb.Fu(a)&&(a.d=new Jrb.fg(a,f));a.T|=24|e};Jrb.pu=function pu(a,b){return Jrb.Pf(a.d,b)};Jrb.qu=function qu(a,b){return Jrb.Gf(a.d,b)};Jrb.ru=function ru(a){var b;Jrb.ou(a,31);b=a.I&Gsb;switch(a.I&vub){case Fsb:return null;case oub:return b==1?'meso':''+b+' meso diastereomers';case 0:return 'unknown chirality';case 196608:return 'both enantiomers';case bub:return 'this enantiomer';case 327680:return 'this or other enantiomer';case Ftb:return 'two epimers';default:return b==1?'one stereo isomer':''+b+' stereo isomers';}};Jrb.su=function su(a){var b;b=new Jrb.Hu(a.q,a.r);Jrb._j(a,b);return b};Jrb.tu=function tu(a){var b,c,d,e,f,g,h;Jrb.ou(a,15);g=tX(Drb.NY,Qsb,6,3,15,1);for(c=0;c<a.f;c++){if((a.u[c]&Hub)!=0){h=(a.u[c]&_tb)>>18;h!=0&&(g[h]=$wnd.Math.max(g[h],(a.u[c]&_tb)>>18!=1&&(a.u[c]&_tb)>>18!=2?-1:(a.u[c]&Cub)>>20))}}for(e=0;e<a.g;e++){if(((a.F[e]&3)==1||(a.F[e]&3)==2)&&a.H[e]==1){h=(a.F[e]&768)>>8;h!=0&&(g[h]=$wnd.Math.max(g[h],(a.F[e]&768)>>8!=1&&(a.F[e]&768)>>8!=2?-1:(a.F[e]&Dub)>>10))}}f=tX(Drb.NY,lub,7,3,0,2);f[1]=tX(Drb.NY,Qsb,6,1+g[1],15,1);f[2]=tX(Drb.NY,Qsb,6,1+g[2],15,1);for(b=0;b<a.f;b++){if((a.u[b]&Hub)!=0){h=(a.u[b]&_tb)>>18;h!=0&&++f[h][(a.u[b]&_tb)>>18!=1&&(a.u[b]&_tb)>>18!=2?-1:(a.u[b]&Cub)>>20]}}for(d=0;d<a.g;d++){if(((a.F[d]&3)==1||(a.F[d]&3)==2)&&a.H[d]==1){h=(a.F[d]&768)>>8;h!=0&&++f[h][(a.F[d]&768)>>8!=1&&(a.F[d]&768)>>8!=2?-1:(a.F[d]&Dub)>>10]}}return f};Jrb.uu=function uu(a){var b,c;b=tX(Drb.NY,Qsb,6,a.q,15,1);c=Jrb.Pn(a,b,false,false);return Jrb.vu(a,b,c)};Jrb.vu=function vu(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;q=tX(Drb.JZ,mvb,27,c,0,1);g=tX(Drb.NY,Qsb,6,c,15,1);j=tX(Drb.NY,Qsb,6,c,15,1);f=tX(Drb.NY,Qsb,6,a.q,15,1);for(e=0;e<a.q;e++)b[e]!=-1&&(f[e]=g[b[e]]++);for(i=0;i<a.r;i++){o=b[a.D[0][i]];p=b[a.D[1][i]];o==p&&o!=-1&&++j[o]}for(r=0;r<c;r++){q[r]=new Jrb.Hu(g[r],j[r]);Jrb.nu(a,q[r])}for(d=0;d<a.q;d++)b[d]!=-1&&Jrb.Yj(a,q[b[d]],d,0,0);for(h=0;h<a.r;h++){o=b[a.D[0][h]];p=b[a.D[1][h]];o==p&&o!=-1&&Jrb.$j(a,q[o],h,0,0,f,false)}for(l=q,m=0,n=l.length;m<n;++m){k=l[m];Jrb.Ml(k,1);Jrb.Ml(k,2)}return q};Jrb.wu=function wu(a){Jrb.ou(a,15);!a.d&&(a.f<2||!Jrb.xh(a.J[0],a.J[1]))&&(a.d=new Jrb.eg(a));return !a.d?null:Jrb.Kf(a.d)};Jrb.xu=function xu(a){Jrb.ou(a,15);!a.d&&(a.f<2||!Jrb.xh(a.J[0],a.J[1]))&&(a.d=new Jrb.eg(a));return !a.d?null:Jrb.Hf(a.d)};Jrb.yu=function yu(a){var b,c;Jrb.ou(a,31);c=0;for(b=0;b<a.f;b++)(a.u[b]&3)!=0&&(a.u[b]&4)==0&&++c;return c};Jrb.zu=function zu(a,b){return Jrb.Of(a.d,b)};Jrb.Au=function Au(a,b){a.c=b;a.T&=-144};Jrb.Bu=function Bu(a){Jrb.ou(a,31);!!a.d&&Jrb.cg(a.d)};Jrb.Cu=function Cu(a){var b,c;Jrb.ou(a,15);a.L=false;for(b=0;b<a.q;b++){a.u[b]&=Lub;(a.u[b]&3)!=0?(a.u[b]|=Gub):(a.u[b]&=Kub)}for(c=0;c<a.r;c++)(a.F[c]&3)!=0&&Jrb.Qk(a,c)==2?(a.H[c]=386):(a.H[c]&=-385);a.T&=-249};Jrb.Du=function Du(a,b,c){var d,e,f,g,h,i,j,k,l;l=a.u[b]&3;if(l==1||l==2){h=false;if(a.o[b]==2&&a.j[b]==2&&a.n[b][0]==2&&a.n[b][1]==2&&a.C[b]<=7){for(g=0;g<a.j[b];g++){d=a.i[b][g];k=0;j=tX(Drb.NY,Qsb,6,3,15,1);for(i=0;i<a.j[d];i++){j[k]=a.i[d][i];j[k]!=b&&++k}k==2&&j[0]<j[1]^c[j[0]]<c[j[1]]&&(h=!h)}}else{for(g=1;g<a.j[b];g++){for(i=0;i<g;i++){e=a.i[b][g];f=a.i[b][i];e<f^c[e]<c[f]&&(h=!h)}}}h&&(l=l==1?2:1)}return l};Jrb.Eu=function Eu(a){var b,c,d,e,f,g;Jrb.fp(a);Jrb.ou(a,31);for(d=0;d<a.f;d++){if(((a.u[d]&_tb)>>18==1||(a.u[d]&_tb)>>18==2)&&((a.u[d]&Hub)==0||(a.u[d]&3)==3))throw h3(new Erb._z(xvb));if((a.u[d]&Fsb)!=0)throw h3(new Erb._z(yvb));if(((a.u[d]&3)==1||(a.u[d]&3)==2)&&a.o[d]==0){b=tX(Drb.LY,Osb,6,a.j[d],15,1);for(f=0;f<a.j[d];f++)b[f]=Jrb.Hk(a,d,a.i[d][f]);for(e=1;e<a.j[d];e++)if(!Jrb.Al(a,a.k[d][e],d))for(g=0;g<e;g++)if(!Jrb.Al(a,a.k[d][g],d)){c=$wnd.Math.abs(Jrb.Wm(b[e],b[g]));if(c<0.08||c>Rub)throw h3(new Erb._z(zvb))}}}};Jrb.Fu=function Fu(a){var b,c,d,e,f,g,h;h=false;for(c=0;c<a.f;c++)((a.u[c]&Hub)==0||(a.u[c]&3)==3)&&(a.u[c]&=Lub);for(f=0;f<a.g;f++)(Jrb.Qk(a,f)!=1||(a.F[f]&3)==0||(a.F[f]&3)==3)&&(a.F[f]&=-32513);if(a.L){if((a.I&vub)!=oub){g=tX(Drb.c3,itb,6,a.f,16,1);for(d=0;d<a.f;d++)(a.u[d]&Hub)!=0&&(a.u[d]&3)!=3&&(a.u[d]&_tb)>>18==1&&(g[d]=true);for(e=0;e<a.f;e++){if((a.u[e]&Hub)!=0&&(a.u[e]&3)!=3){Jrb.Xl(a,e,1,0);h=true}}for(b=0;b<a.f;b++){if(g[b]){Jrb.bm(a,b,1,false);Jrb.Xl(a,b,1,-1);h=true}}}a.L=false}Jrb.Ml(a,1);Jrb.Ml(a,2);return h};Jrb.Gu=function Gu(){Jrb.Ej();Jrb.jp.call(this)};Jrb.Hu=function Hu(a,b){Jrb.Ej();Jrb.kp.call(this,a,b)};Jrb.Iu=function Iu(a){Jrb.Ej();Jrb.lp.call(this,a)};Z3(27,101,Avb,Jrb.Gu,Jrb.Hu,Jrb.Iu);_.xb=function Ju(a){Jrb.nu(this,a)};_.zb=function Ku(a){Jrb.ou(this,a)};_.c=false;Drb.JZ=B5(27);Jrb.Mu=function Mu(a,b){var c,d,e,f,g,h,i,j,k,l,m;h=new Krb.Yi;Jrb.ou(b,1);j=tX(Drb.c3,itb,6,b.f,16,1);for(c=0;c<b.f;c++){if(a.f[c]&&(Jrb.Dk(a.i,c)==7||Jrb.Dk(a.i,c)==8||Jrb.Dk(a.i,c)==16||Jrb.Dk(a.i,c)==34||Jrb.Dk(a.i,c)==52)){j[c]=true;for(i=0;i<b.j[c];i++){d=b.i[c][i];f=b.k[c][i];l=b.n[c][i];if(b.o[d]!=0&&b.o[c]<l){j[d]=true;Krb.Ei(h,Erb.A6(f));for(k=0;k<b.j[d];k++){e=b.i[d][k];if(!j[e]){j[e]=true;g=b.k[d][k];m=b.n[d][k];if(b.o[d]+2==l+m){Krb.Ei(h,Erb.A6(g));l>=m&&(b.o[e]<m?Jrb.Vu(b,e)&&Jrb.Pu(a,b,e,true,false,j,h):Jrb.Pu(a,b,e,true,true,j,h));m>=l&&Jrb.Vu(b,c)&&Jrb.Pu(a,b,e,false,false,j,h);if(a.f[e]&&(Jrb.Dk(a.i,e)==5||Jrb.Dk(a.i,e)==6||Jrb.Dk(a.i,e)==7||Jrb.Dk(a.i,e)==8||Jrb.Dk(a.i,e)==16||Jrb.Dk(a.i,e)==34||Jrb.Dk(a.i,e)==52)&&b.o[e]<m){l<=2&&m>=2&&Jrb.Vu(b,c)&&Jrb.Nu(a,b,f,g);l>=2&&m<=2&&Jrb.Vu(b,e)&&Jrb.Nu(a,b,g,f)}Krb.Qi(h,h.a.length-1)}j[e]=false}}Krb.Qi(h,h.a.length-1);j[d]=false}}j[c]=false}}};Jrb.Nu=function Nu(a,b,c,d){var e;e=new Jrb._u(a,b);Jrb.$u(e,c,Jrb.Qk(b,c)==1?2:3);Jrb.$u(e,d,Jrb.Qk(b,d)==2?1:2);a.g[c]=true;a.g[d]=true;Krb.ikb(a.e,e)&&(Krb.Ndb(a.d,e),true)};Jrb.Ou=function Ou(a,b){Krb.ikb(a.e,b)&&(Krb.Ndb(a.d,b),true)};Jrb.Pu=function Pu(a,b,c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r,s;for(n=0;n<b.j[c];n++){h=b.i[c][n];if(!f[h]){k=b.k[c][n];r=Jrb.Qk(b,k);if(d&&r>=2||!d&&r<=2){f[h]=true;g.add(Erb.A6(k));for(o=0;o<b.j[h];o++){i=b.i[h][o];if(!f[i]){l=b.k[h][o];s=Jrb.Qk(b,l);if(b.o[h]+2==r+s&&(d&&s<=2||!d&&s>=2)){f[i]=true;g.add(Erb.A6(l));if(a.f[i]&&(Jrb.Dk(a.i,i)==5||Jrb.Dk(a.i,i)==6||Jrb.Dk(a.i,i)==7||Jrb.Dk(a.i,i)==8||Jrb.Dk(a.i,i)==16||Jrb.Dk(a.i,i)==34||Jrb.Dk(a.i,i)==52)&&(!d||Jrb.Vu(b,i))){m=new Jrb._u(a,b);for(p=0;p<g.a.length;p++){j=(Hrb.fnb(p,g.a.length),g.a[p]).a;q=p<2?d^(p&1)==0:e^(p&1)==0;q?Jrb.$u(m,j,Jrb.Qk(b,j)==1?2:3):Jrb.$u(m,j,Jrb.Qk(b,j)==2?1:2);a.g[j]=true}Krb.ikb(a.e,m)&&(Krb.Ndb(a.d,m),true)}else{Jrb.Pu(a,b,i,d,e,f,g)}Krb.Qi(g,g.a.length-1);f[i]=false}}}Krb.Qi(g,g.a.length-1);f[h]=false}}}return false};Jrb.Qu=function Qu(a){var b,c,d,e,f,g,h,i,j,k,l;a.b=tX(Drb.NY,Qsb,6,a.i.f,15,1);h=tX(Drb.NY,Qsb,6,a.i.f,15,1);d=tX(Drb.c3,itb,6,a.i.g,16,1);l=0;for(c=0;c<a.i.g;c++){if(!d[c]&&a.g[c]){++l;a.b[Jrb.Ik(a.i,0,c)]=l;a.b[Jrb.Ik(a.i,1,c)]=l;d[c]=true;for(j=0;j<2;j++){b=Jrb.Ik(a.i,j,c);a.b[b]=l;g=0;i=0;h[0]=b;while(g<=i){for(k=0;k<Jrb.Gn(a.i,h[g]);k++){f=Jrb.Hn(a.i,h[g],k);if(!d[f]&&a.g[f]){d[f]=true;e=Jrb.Fn(a.i,h[g],k);if(a.b[e]==0){a.b[e]=l;h[++i]=e}}}++g}}}}a.j=l};Jrb.Ru=function Ru(a){var b,c,d;a.n=tX(Drb.NY,Qsb,6,a.j,15,1);a.k=tX(Drb.NY,Qsb,6,a.j,15,1);a.o=tX(Drb.NY,Qsb,6,a.j,15,1);for(b=0;b<a.i.f;b++){if(a.b[b]!=0){d=a.b[b]-1;a.a!=null&&(a.k[d]+=a.a[b]);a.c!=null&&(a.o[d]+=a.c[b])}}for(c=0;c<a.i.g;c++){a.g[c]&&Jrb.Qk(a.i,c)==2&&(a.n[a.b[Jrb.Ik(a.i,0,c)]-1]+=2)}};Jrb.Su=function Su(a){var b,c,d,e;for(d=0;d<a.i.r;d++){for(e=0;e<2;e++){b=Jrb.Ik(a.i,e,d);c=Jrb.Ik(a.i,1-e,d);if(Jrb.Dk(a.i,b)==1&&Jrb.wk(a.i,b)>1&&Jrb.Dk(a.i,c)>1&&a.b[c]!=0){if(Jrb.wk(a.i,b)==2){a.a==null&&(a.a=tX(Drb.NY,Qsb,6,a.i.q,15,1));++a.a[c]}else{a.c==null&&(a.c=tX(Drb.NY,Qsb,6,a.i.q,15,1));++a.c[c]}Jrb.Cl(a.i,b)}}}(a.a!=null||a.c!=null)&&Jrb.gk(a.i)};Jrb.Tu=function Tu(a){var b;a.e=new Krb.nkb;a.d=new Krb.Zdb;Jrb.Ou(a,new Jrb._u(a,a.i));b=Jrb.su(a.i);while(!Krb.Rdb(a.d)){Jrb.Zu(Krb.Tdb(a.d),b);Jrb.Mu(a,b);if(a.e.a.c>=Jrb.Lu){Erb.X7();'Tautomer count exceeds maximum: '+Jrb.Kf(new Jrb.eg(a.i));String.fromCharCode(10);break}}};Jrb.Uu=function Uu(a){var b,c,d,e,f,g,h,i,j,k;if(a.e.a.c==1)return a.i;j=Jrb.su(a.i);Jrb.vm(j,true);Jrb.ou(j,7);for(e=0;e<j.g;e++){if(a.g[e]){j.H[e]=1;j.T=0;Jrb.sm(j,e,3,true)}}for(c=0;c<j.f;c++){if(a.b[c]!=0&&Jrb._n(a.i,c)<4){Jrb.gn(j,c);j.u[c]&=Kub;j.T&=7;Jrb.Xl(j,c,0,-1)}}h=tX(Drb.NY,Qsb,6,a.j,15,1);i=tX(Drb.NY,Qsb,6,a.j,15,1);d=(new Jrb.eg(j)).e;for(b=0;b<j.f;b++){if(a.b[b]!=0){k=a.b[b]-1;if(i[k]<d[b]){i[k]=d[b];h[k]=b}}}for(f=0;f<a.j;f++){g=''+a.n[f]+'|'+a.k[f]+'|'+a.o[f];Jrb.Vl(j,h[f],g)}return j};Jrb.Vu=function Vu(a,b){if(a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)<=0)return false;if(Jrb.ql(a,b))return true;if(a.o[b]!=0)return false;return true};Jrb.Wu=function Wu(a){var b,c,d,e,f,g,h,i;Jrb.ou(a.i,1);h=a.i.f;do --h;while(h>=0&&Jrb.Dk(a.i,h)==1);for(b=0;b<h;b++){if(Jrb.Dk(a.i,b)==1){Jrb.Gm(a.i,b,h);do --h;while(Jrb.Dk(a.i,h)==1)}}if(h==a.i.f-1)return;g=tX(Drb.c3,itb,6,a.i.g,16,1);for(f=0;f<a.i.g;f++){c=Jrb.Ik(a.i,0,f);d=Jrb.Ik(a.i,1,f);(Jrb.Dk(a.i,c)==1||Jrb.Dk(a.i,d)==1)&&(g[f]=true)}i=a.i.g;do --i;while(i>=0&&g[i]);for(e=0;e<i;e++){if(g[e]){Jrb.Hm(a.i,e,i);g[e]=false;do --i;while(g[i])}}};Jrb.Xu=function Xu(a){var b,c;this.i=Jrb.su(a);Jrb.Wu(this);Jrb.ou(this.i,7);this.g=tX(Drb.c3,itb,6,this.i.g,16,1);this.f=tX(Drb.c3,itb,6,this.i.f,16,1);for(b=0;b<this.i.f;b++){c=Jrb.Um(Jrb.Dk(this.i,b))[0];this.f[b]=Jrb._n(this.i,b)<c}Jrb.Tu(this);Jrb.Qu(this);Jrb.Su(this);Jrb.Ru(this)};Z3(205,1,{},Jrb.Xu);_.j=0;Jrb.Lu=Bvb;Drb.LZ=B5(205);Jrb.Yu=function Yu(a,b){return Zrb.gV(a.a,b.a)};Jrb.Zu=function Zu(a,b){var c,d;for(d=0;d<a.b.i.g;d++){if(a.b.g[d]){c=3&a.a[d>>4]>>2*(d&15);Jrb.tm(b,d,c==1?1:c==2?a.b.g[d]&&!Jrb.Po(a.b.i,d)?386:2:c==3?4:16)}}};Jrb.$u=function $u(a,b,c){var d,e;d=b>>4;e=2*(b&15);a.a[d]&=~(3<<e);a.a[d]|=c<<e};Jrb._u=function _u(a,b){var c;this.b=a;this.a=tX(Drb.NY,Qsb,6,(a.i.g+15)/16|0,15,1);for(c=0;c<a.i.g;c++)this.a[c>>4]|=$wnd.Math.min(3,Jrb.Qk(b,c))<<2*(c&15)};Z3(137,1,{137:1,28:1},Jrb._u);_.rb=function av(a){return Jrb.Yu(this,a)};Drb.KZ=B5(137);Jrb.bv=function bv(a){var b,c,d,e,f;c=Erb.o7(a,A7(38));if(c==-1)return a;e=0;f=new Erb.I7;while(c!=-1){Erb.H7(f,(Hrb.lnb(e,c,Hrb.rnb(a).length),Hrb.rnb(a).substr(e,c-e)));Hrb.mnb(c+1,Hrb.rnb(a).length);if(Hrb.rnb(a).charCodeAt(c+1)==38){f.a+='&';e=c+2}else{b=(Hrb.mnb(c+1,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(c+1));b=b-(b<65?48:b<97?65:97);d=(Hrb.mnb(c+2,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(c+2));d=d-(d<65?48:d<97?65:97);Erb.F7(f,16*b+d&Gsb);e=c+3}c=Erb.p7(a,A7(38),e)}Erb.H7(f,(Hrb.mnb(e,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(e)));return f.a};Jrb.cv=function cv(a){var b,c;c=new Erb.I7;for(b=0;b<Hrb.rnb(a).length;b++){switch(Hrb.mnb(b,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(b)){case 38:c.a+='&&';break;case 9:c.a+='&09';break;case 10:c.a+='&0A';break;case 32:c.a+='&20';break;default:Erb.F7(c,(Hrb.mnb(b,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(b)));}}return c.a};Jrb.dv=function dv(a,b,c){a.e[0].a=b;a.e[0].b=c};Jrb.ev=function ev(b,c){try{b.a=g6(c)}catch(a){a=g3(a);if(!zY(a,39))throw h3(a)}};Jrb.fv=function fv(b,c){try{b.b=Erb.V5(c,_ub,xsb)}catch(a){a=g3(a);if(!zY(a,39))throw h3(a)}};Jrb.gv=function gv(a,b,c,d){a.c=b;a.a=c;a.b=d};Jrb.hv=function hv(b,c){try{b.e[0].a=g6(c)}catch(a){a=g3(a);if(!zY(a,39))throw h3(a)}};Jrb.iv=function iv(b,c){try{b.e[0].b=g6(c)}catch(a){a=g3(a);if(!zY(a,39))throw h3(a)}};Jrb.jv=function jv(){Jrb.lv.call(this,new Wrb.BG)};Jrb.kv=function kv(a){var b,c,d,e;Jrb.jv.call(this);b=0;while(b!=-1){c=Hrb.rnb(a).indexOf('=\"',b);if(c==-1)break;d=(Hrb.lnb(b+1,c,Hrb.rnb(a).length),Hrb.rnb(a).substr(b+1,c-(b+1)));b=Hrb.rnb(a).indexOf('\"',c+2);e=b==-1?(Hrb.mnb(c+1,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(c+1)):(Hrb.lnb(c+1,b,Hrb.rnb(a).length),Hrb.rnb(a).substr(c+1,b-(c+1)));Erb.k7(d,'text')?(this.c=Jrb.bv(e)):Erb.k7(d,'x')?Jrb.hv(this,e):Erb.k7(d,'y')?Jrb.iv(this,e):Erb.k7(d,'size')?Jrb.ev(this,e):Erb.k7(d,'style')&&Jrb.fv(this,e)}};Jrb.lv=function lv(a){this.c='';this.a=9;this.b=0;this.e=tX(Drb.e_,Bsb,52,1,0,1);this.e[0]=a};Z3(139,169,{169:1},Jrb.jv,Jrb.kv);_.nb=function mv(){var a;a=new Jrb.jv;Jrb.gv(a,this.c,this.a,this.b);Jrb.dv(a,this.e[0].a,this.e[0].b);a.d=this.d;return a};_.ob=function nv(){var a;a=new Erb.S7;Erb.P7(a,' text=\"'+Jrb.cv(this.c)+'\"');Erb.P7(a,' x=\"'+this.e[0].a+'\"');Erb.P7(a,' y=\"'+this.e[0].b+'\"');this.a!=9&&Erb.P7(a,' size=\"'+gsb.s8(new gsb.v8(this.a,new gsb.aab))+'\"');this.b!=0&&Erb.P7(a,' style=\"'+this.b+'\"');return a.a};_.pb=function ov(){return 'text'};_.a=0;_.b=0;Drb.MZ=B5(139);Jrb.pv=function pv(a){a.b=new Krb.Yi;a.a=new Krb.Yi};Jrb.qv=function qv(a,b){var c,d;c=Jrb.iu(a,b);if(c==-1)return -1;d=a.b.a.length;Krb.Ei(a.b,b);Krb.Di(a.a,c,new Erb.o6(d));return d};Jrb.rv=function rv(){Jrb.ku.call(this);Jrb.pv(this)};Z3(247,87,{87:1,4:1},Jrb.rv);_.Cb=function sv(a){var b;b=Jrb.ju(this,a);if(b==-1)return -1;return Krb.Ji(this.a,b).a};Drb.NZ=B5(247);Lrb.tv=function tv(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N;K=Jrb.jo(a.e);L=Krb.Ji(K.j,b).length;I=Krb.Ji(K.i,b);J=Krb.Ji(K.j,b);C=true;for(r=1;r<L;r++){if(Lrb.Iv(a.b,J[r])!=Lrb.Iv(a.b,J[0])){C=false;break}}if(C){f=(L-2)*Cvb/L;for(s=0;s<L;s++)Lrb.yv(a,I[s],J[s],J[s==0?L-1:s-1],f);return}G=tX(Drb.MY,Pub,6,L,15,1);e=0;for(t=0;t<L;t++){G[t]=Jrb.wn(a.e,I[t])==0?1.9106119386631804:Jrb.wn(a.e,I[t])==1?2.094499897810209:Cvb;e+=G[t]}d=((L-2)*Cvb-e)/L;for(u=0;u<L;u++)G[u]+=d;k=tX(Drb.MY,Pub,6,L,15,1);for(v=1;v<L;v++)k[v]=k[v-1]+Cvb-G[v];h=tX(Drb.MY,Pub,6,L,15,1);for(g=0;g<100;g++){M=0;N=0;for(s=0;s<L;s++){M+=Lrb.Iv(a.b,J[s])*$wnd.Math.sin(k[s]);N+=Lrb.Iv(a.b,J[s])*$wnd.Math.cos(k[s])}n=Jrb.Vm(0,0,M,N);p=$wnd.Math.sqrt(M*M+N*N);F=-1;D=0;for(w=0;w<L;w++){A=w==0?L-1:w-1;B=w+1==L?0:w+1;i=Jrb.Wm(k[w],k[A]);j=Jrb.Wm(k[B],k[w]);H=Jrb.Wm(G[w],G[B]);h[w]=2*i-2*j+2*H;o=$wnd.Math.cos(k[w]-Dvb-n);m=p*o-Evb*h[w];if($wnd.Math.abs(m)>$wnd.Math.abs(D)){D=m;F=w}}l=$wnd.Math.exp(-5*g/100);k[F]+=l*D}for(q=0;q<L;q++){A=q==0?L-1:q-1;c=k[A]+Cvb-k[q];c>mtb&&(c-=mtb);Lrb.yv(a,I[q],J[A],J[q],c)}};Lrb.uv=function uv(a,b){var c,d,e,f,g,h,i,j,k;i=Jrb.jo(a.e);j=Krb.Ji(i.j,b).length;h=Krb.Ji(i.j,b);k=false;for(e=0;e<j;e++){if(a.f[h[e]]==0){k=true;break}}if(k){c=(180*j-360)/j*0.01745329238474369;g=Krb.Ji(i.i,b);for(f=0;f<j;f++){Lrb.yv(a,g[f],h[f==0?j-1:f-1],h[f],c)}if(j<=4){for(d=0;d<j;d++)a.f[h[d]]+=j}}};Lrb.vv=function vv(a,b,c,d){var e,f,g,h;f=-1;g=-1;for(h=0;h<Jrb.rn(a.e,b);h++){e=Jrb.Fn(a.e,b,h);if(e==c||e==d){if(g==-1){g=h}else{f=h;break}}}return a.a[b][f][g]};Lrb.wv=function wv(a,b,c,d){return c<d?a.a[b][d][c]:a.a[b][c][d]};Lrb.xv=function xv(a,b){var c,d,e,f,g,h,i;d=tX(Drb.c3,itb,6,Jrb.Gn(a.e,b),16,1);i=0;for(e=0;e<Jrb.Gn(a.e,b);e++){h=0;g=-1;for(f=0;f<Jrb.Gn(a.e,b);f++){if(!d[f]){c=Jrb.Hn(a.e,b,f);if(h<a.f[c]){h=a.f[c];g=f}}}if(h==0)return i;i<<=8;i+=h;d[g]=true}return i};Lrb.yv=function yv(a,b,c,d,e){var f,g,h,i;f=-1;g=-1;for(i=0;i<Jrb.rn(a.e,b);i++){h=Jrb.Hn(a.e,b,i);if(h==c||h==d){if(f==-1){f=i}else{g=i;break}}}if(a.a[b][g][f]==0){a.a[b][g][f]=e;a.d[b]+=e;++a.c[b]}};Lrb.zv=function zv(a,b,c,d,e){var f,g,h,i,j,k;f=Jrb.rn(a.e,b);i=Jrb.Gn(a.e,b);for(j=1;j<f;j++){g=j<i?a.f[Jrb.Hn(a.e,b,j)]:0;for(k=0;k<j;k++){if(a.a[b][j][k]==0){h=k<i?a.f[Jrb.Hn(a.e,b,k)]:0;(g==c&&h==d||g==d&&h==c)&&(a.a[b][j][k]=e)}}}};\nLrb.Av=function Av(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;this.b=b;this.e=a;this.a=tX(Drb.MY,ssb,389,this.e.f,0,3);for(e=0;e<this.e.f;e++){this.a[e]=tX(Drb.MY,{389:1,4:1,10:1,5:1,8:1},40,Jrb.rn(this.e,e),0,2);for(i=1;i<Jrb.rn(this.e,e);i++)this.a[e][i]=tX(Drb.MY,Pub,6,i,15,1)}this.c=tX(Drb.NY,Qsb,6,this.e.f,15,1);this.d=tX(Drb.MY,Pub,6,this.e.f,15,1);this.f=tX(Drb.NY,Qsb,6,this.e.g,15,1);w=Jrb.jo(this.e);m=tX(Drb.c3,itb,6,w.i.a.length,16,1);Jrb.rr(w,m,tX(Drb.c3,itb,6,w.i.a.length,16,1),tX(Drb.NY,Qsb,6,w.i.a.length,15,1),true);for(h=3;h<=7;h++){for(r=0;r<w.i.a.length;r++){A=Krb.Ji(w.j,r).length;A==h&&(m[r]?Lrb.tv(this,r):A<=4&&Lrb.uv(this,r))}}l=tX(Drb.c3,itb,6,this.e.f,16,1);for(q=0;q<w.i.a.length;q++)if(m[q])for(t=Krb.Ji(w.i,q),u=0,v=t.length;u<v;++u){s=t[u];l[s]=true}f=BX(nX(Drb.NY,1),Qsb,6,15,[0,0,1,3,6,10,15,21]);for(d=0;d<this.e.f;d++){g=Jrb.rn(this.e,d);if(g>4){for(i=1;i<g;i++)for(o=0;o<i;o++)this.a[d][i][o]=Dvb;this.c[d]=f[g];continue}if(this.c[d]==f[g])continue;if(Jrb.Oo(this.e,d)&&(l[d]||Jrb.An(this.e,d)<=4&&Jrb.wn(this.e,d)>0)){if(g>2){if(this.c[d]==1){Jrb.Dk(this.e,d)<=14?(c=(Fvb-this.d[d])/2):(c=Gvb+(Gvb-this.d[d])*0.18000000715255737)}else{c=Fvb-this.d[d];if(g>3){if(this.c[d]==2){n=tX(Drb.c3,itb,6,Jrb.rn(this.e,d),16,1);for(j=1;j<g;j++){for(p=0;p<j;p++){if(this.a[d][j][p]!=0){n[j]=!n[j];n[p]=!n[p]}}}for(k=0;k<g;k++){if(n[k]){for(p=k+1;p<g;p++){if(n[p]){this.a[d][p][k]=c;break}}break}}}c=Dvb}}for(i=1;i<g;i++)for(o=0;o<i;o++)this.a[d][i][o]==0&&(this.a[d][i][o]=c)}}else if(Jrb.Oo(this.e,d)&&Jrb.An(this.e,d)<=4){switch(Lrb.xv(this,d)){case 771:Lrb.zv(this,d,0,3,2.0653998851776123);Lrb.zv(this,d,0,0,1.9814722631346626);break;case 1028:Lrb.zv(this,d,0,4,1.9797999858856201);Lrb.zv(this,d,0,0,1.94691481878138);break;case 393987:Lrb.zv(this,d,0,3,Hvb);Lrb.zv(this,d,0,6,Hvb);Lrb.zv(this,d,3,3,1.7229016938441077);break;case 459779:Lrb.zv(this,d,0,3,Ivb);Lrb.zv(this,d,0,4,Ivb);Lrb.zv(this,d,0,7,Ivb);Lrb.zv(this,d,3,4,1.9322539839360076);break;case 525316:Lrb.zv(this,d,0,4,Jvb);Lrb.zv(this,d,0,8,Jvb);Lrb.zv(this,d,4,4,1.99944913298566);case 394758:Lrb.zv(this,d,0,6,2.526099920272827);break;case 460550:Lrb.zv(this,d,0,6,Kvb);Lrb.zv(this,d,0,7,Kvb);break;case 526087:Lrb.zv(this,d,0,7,Lvb);Lrb.zv(this,d,0,8,Lvb);break;case 526344:Lrb.zv(this,d,0,8,2.186300039291382);break;case 50529027:Lrb.zv(this,d,3,3,2.4189000129699707);break;case 67371779:Lrb.zv(this,d,3,4,2.2298998832702637);break;case 67372036:Lrb.zv(this,d,4,4,2.094399929046631);break;case 101057283:Lrb.zv(this,d,3,6,1.839926051241747);Lrb.zv(this,d,3,3,2.9061476191098734);break;case 117834755:Lrb.zv(this,d,3,4,2.812249087174905);Lrb.zv(this,d,3,7,1.7910569124592968);Lrb.zv(this,d,4,6,2.1224948975613245);break;case 134677507:Lrb.zv(this,d,3,4,2.642428360523752);Lrb.zv(this,d,3,8,2.027723514585844);Lrb.zv(this,d,4,7,2.251474717631936);break;case 117900035:Lrb.zv(this,d,3,7,2.109753935530918);Lrb.zv(this,d,3,3,3.1052897491356646);break;case 117900292:Lrb.zv(this,d,4,7,2.090729910747413);Lrb.zv(this,d,4,4,2.551671293386306);break;case 134743044:Lrb.zv(this,d,4,8,2.139250042271712);Lrb.zv(this,d,4,4,2.3520055858942612);}}else{c=Jrb.Dk(this.e,d)>10?Mvb:Jrb.wn(this.e,d)==2?Cvb:Jrb.Fo(this.e,d,true)?Nvb:Jrb.wn(this.e,d)==0?Mvb:Nvb;for(i=1;i<g;i++)for(o=0;o<i;o++)this.a[d][i][o]=c}}};Z3(323,1,{},Lrb.Av);Drb.OZ=B5(323);Lrb.Hv=function Hv(){Lrb.Hv=_3;Lrb.Fv=BX(nX(Drb.c3,1),itb,6,16,[false,false,false,false,false,true,true,true,true,false,false,false,false,false,false,true,true])};Lrb.Iv=function Iv(a,b){return a.a[b]};Lrb.Jv=function Jv(a){Lrb.Hv();var b,c;Jrb.ou(a,7);this.a=tX(Drb.MY,Pub,6,a.r,15,1);this.b=tX(Drb.MY,Pub,6,a.r,15,1);for(b=0;b<a.r;b++){c=Lrb.Mv(a,b);if(c==-1){this.a[b]=Lrb.Nv(a,b);this.b[b]=Lrb.Ov(a,b)}else{this.a[b]=c==-1?2.000499963760376:Lrb.Dv[c];this.b[b]=c==-1?1:Lrb.Ev[c]}}};Lrb.Kv=function Kv(a,b){if(b>=a.f)return 0;if(b<a.f&&Jrb.Fr(a.p,b)&&a.C[b]==6&&a.s[b]!=0)return 1;return a.o[b]};Lrb.Lv=function Lv(a,b,c,d,e,f,g){var h,i,j,k,l;k=d<Lrb.Fv.length&&Lrb.Fv[d]?f<<8:0;l=e<Lrb.Fv.length&&Lrb.Fv[e]?g<<8:0;h=k+d;i=l+e;j=c?0:b?4+a:a;return (j<<24)+(h<i?(h<<12)+i:(i<<12)+h)};Lrb.Mv=function Mv(a,b){var c,d,e,f;c=a.D[0][b];d=a.D[1][b];e=a.C[c];f=a.C[d];return Lrb.Qv(Lrb.Lv(Jrb.Qk(a,b),b<a.g&&Jrb.Gr(a.p,b),b<a.g&&(Jrb.Kr(a.p,b)||a.H[b]==8),e,f,Lrb.Kv(a,c),Lrb.Kv(a,d)))};Lrb.Nv=function Nv(a,b){var c,d;c=Jrb.Dk(a,a.D[0][b]);d=Jrb.Dk(a,a.D[1][b]);return (c<(Lrb.nx(),Lrb.lx).length?Lrb.lx[c]:c<Lrb.mx.length?Ovb*Lrb.mx[c]:Pvb)+(d<Lrb.lx.length?Lrb.lx[d]:d<Lrb.mx.length?Ovb*Lrb.mx[d]:Pvb)};Lrb.Ov=function Ov(a,b){var c,d;c=Jrb.Dk(a,a.D[0][b]);d=Jrb.Dk(a,a.D[1][b]);return (c<(Lrb.nx(),Lrb.lx).length?Qvb:0.125)+(d<Lrb.lx.length?Qvb:0.125)};\nLrb.Pv=function Pv(){var b,c,d,e,f,g,h;if(!Lrb.Gv){b=(h=Erb.v7('2312\\n4099\\t2.403\\t0.282\\t466\\n4100\\t1.407\\t0.2\\t28\\n4103\\t1.561\\t0.023\\t5\\n4104\\t1.42\\t0.092\\t491\\n4105\\t1.313\\t0.149\\t32\\n4107\\t2.677\\t0.401\\t190\\n4108\\t2.118\\t0.244\\t325\\n4109\\t1.978\\t0.26\\t968\\n4113\\t1.819\\t0.033\\t4\\n4115\\t3.194\\t0.482\\t381\\n4116\\t2.771\\t0.32\\t198\\n4117\\t2.398\\t0.235\\t145\\n4118\\t2.317\\t0.22\\t208\\n4119\\t2.034\\t0.212\\t34\\n4120\\t2.033\\t0.286\\t103\\n4121\\t1.959\\t0.264\\t122\\n4122\\t1.918\\t0.267\\t664\\n4123\\t1.893\\t0.257\\t185\\n4124\\t1.877\\t0.218\\t259\\n4125\\t2.05\\t0.257\\t556\\n4126\\t2.012\\t0.239\\t129\\n4127\\t1.979\\t0.292\\t196\\n4133\\t3.305\\t0.429\\t34\\n4134\\t2.593\\t0.367\\t83\\n4135\\t2.74\\t0.174\\t706\\n4136\\t2.462\\t0.196\\t611\\n4137\\t2.207\\t0.264\\t78\\n4138\\t2.16\\t0.225\\t359\\n4140\\t2.004\\t0.188\\t2204\\n4141\\t1.916\\t0.256\\t610\\n4142\\t1.95\\t0.234\\t126\\n4143\\t2.3\\t0.213\\t81\\n4144\\t2.187\\t0.116\\t6\\n4145\\t2.103\\t0.153\\t21\\n4146\\t2.031\\t0.308\\t83\\n4147\\t1.752\\t0.443\\t21\\n4151\\t3.49\\t0.4\\t83\\n4152\\t3.017\\t0.331\\t40\\n4153\\t2.932\\t0.276\\t176\\n4154\\t2.39\\t0.34\\t24\\n4155\\t3.124\\t0.377\\t16\\n4156\\t2.907\\t0.232\\t198\\n4158\\t2.857\\t0.237\\t142\\n4159\\t2.687\\t0.244\\t49\\n4160\\t2.787\\t0.359\\t29\\n4161\\t2.785\\t0.306\\t37\\n4162\\t2.623\\t0.298\\t175\\n4163\\t2.812\\t0.154\\t70\\n4164\\t2.745\\t0.281\\t100\\n4165\\t2.719\\t0.184\\t37\\n4166\\t2.683\\t0.361\\t231\\n4167\\t2.655\\t0.253\\t198\\n4168\\t2.546\\t0.208\\t37\\n4169\\t2.259\\t0.231\\t190\\n4170\\t2.043\\t0.289\\t251\\n4171\\t2.001\\t0.221\\t391\\n4172\\t1.984\\t0.164\\t885\\n4173\\t1.904\\t0.228\\t1074\\n4174\\t2.036\\t0.224\\t250\\n4175\\t1.955\\t0.184\\t6\\n4176\\t2.35\\t0.15\\t12\\n4177\\t2.367\\t0.216\\t7\\n4178\\t2.47\\t0.186\\t11\\n4179\\t0.95\\t-1.0\\t1\\n4186\\t2.88\\t0.309\\t39\\n4188\\t2.804\\t0.289\\t136\\n4189\\t2.172\\t0.082\\t12\\n4190\\t2.321\\t0.0\\t2\\n4359\\t1.503\\t0.106\\t24\\n4360\\t1.425\\t0.052\\t40\\n12291\\t2.861\\t0.27\\t1069\\n12292\\t2.773\\t0.086\\t4\\n12293\\t2.507\\t0.251\\t27\\n12294\\t2.769\\t0.373\\t370\\n12299\\t3.1\\t0.221\\t116\\n12300\\t2.844\\t0.146\\t9\\n12301\\t3.636\\t0.002\\t3\\n12302\\t2.779\\t0.318\\t189\\n12307\\t3.639\\t0.518\\t25\\n12308\\t3.205\\t0.245\\t16\\n12317\\t3.036\\t0.064\\t4\\n12318\\t2.88\\t-1.0\\t1\\n12319\\t2.615\\t0.864\\t3\\n12320\\t2.857\\t0.129\\t247\\n12325\\t3.557\\t0.41\\t18\\n12326\\t3.273\\t0.208\\t23\\n12330\\t3.496\\t0.025\\t2\\n12333\\t3.012\\t0.276\\t2\\n12334\\t2.679\\t0.0\\t2\\n12338\\t2.886\\t0.196\\t80\\n12339\\t2.871\\t0.221\\t18\\n12343\\t3.628\\t0.266\\t9\\n12344\\t3.37\\t0.145\\t35\\n12346\\t2.859\\t0.0\\t4\\n12352\\t2.722\\t0.017\\t4\\n12354\\t3.317\\t0.016\\t4\\n12355\\t2.714\\t0.006\\t2\\n12357\\t2.703\\t0.005\\t2\\n12365\\t2.615\\t-1.0\\t1\\n12367\\t2.729\\t0.0\\t2\\n12368\\t2.841\\t0.0\\t2\\n12369\\t2.889\\t0.082\\t5\\n12370\\t2.913\\t0.126\\t64\\n12549\\t3.003\\t0.175\\t18\\n12550\\t2.797\\t0.21\\t1156\\n12805\\t2.63\\t0.0\\t2\\n12806\\t2.939\\t0.243\\t85\\n16388\\t2.29\\t0.104\\t57\\n16389\\t2.022\\t0.097\\t6\\n16390\\t2.097\\t0.127\\t21\\n16391\\t1.771\\t0.395\\t281\\n16392\\t1.648\\t0.242\\t634\\n16393\\t1.567\\t0.555\\t264\\n16395\\t2.926\\t0.104\\t14\\n16397\\t2.368\\t-1.0\\t1\\n16398\\t3.269\\t-1.0\\t1\\n16399\\t2.211\\t0.15\\t6\\n16400\\t2.1\\t-1.0\\t1\\n16401\\t2.065\\t0.622\\t37\\n16403\\t3.355\\t0.087\\t11\\n16404\\t2.9\\t0.136\\t2\\n16416\\t2.399\\t0.154\\t3\\n16417\\t2.06\\t0.0\\t2\\n16418\\t2.195\\t-1.0\\t1\\n16419\\t2.167\\t0.95\\t16\\n16421\\t3.378\\t-1.0\\t1\\n16422\\t2.886\\t0.031\\t2\\n16429\\t2.375\\t0.124\\t6\\n16435\\t2.635\\t-1.0\\t1\\n16436\\t2.399\\t-1.0\\t1\\n16437\\t2.417\\t0.96\\t23\\n16439\\t3.716\\t0.078\\t2\\n16442\\t3.052\\t0.0\\t4\\n16463\\t2.64\\t-1.0\\t1\\n16466\\t2.23\\t-1.0\\t1\\n16474\\t3.061\\t0.0\\t4\\n16476\\t3.017\\t0.004\\t8\\n16645\\t1.954\\t-1.0\\t1\\n16646\\t2.276\\t0.281\\t56\\n16647\\t1.966\\t0.14\\t51\\n16648\\t1.843\\t0.124\\t41\\n16902\\t1.739\\t0.003\\t2\\n16903\\t2.003\\t-1.0\\t1\\n20491\\t2.681\\t-1.0\\t1\\n20492\\t2.402\\t0.287\\t12\\n20493\\t2.373\\t0.17\\t6\\n20499\\t3.054\\t0.395\\t11\\n20500\\t3.076\\t0.081\\t2\\n20501\\t2.3\\t1.168\\t20\\n20502\\t2.221\\t0.057\\t3\\n20503\\t1.964\\t-1.0\\t1\\n20504\\t2.515\\t0.236\\t21\\n20505\\t1.97\\t0.231\\t70\\n20506\\t2.056\\t0.352\\t138\\n20507\\t2.553\\t0.302\\t81\\n20508\\t2.489\\t0.321\\t24\\n20509\\t2.215\\t0.363\\t36\\n20510\\t2.786\\t0.026\\t6\\n20511\\t2.418\\t0.106\\t10\\n20517\\t3.193\\t0.063\\t3\\n20519\\t2.598\\t0.187\\t9\\n20520\\t2.376\\t0.309\\t9\\n20522\\t2.708\\t0.265\\t154\\n20524\\t2.526\\t0.319\\t123\\n20525\\t2.262\\t0.289\\t122\\n20526\\t2.502\\t0.287\\t18\\n20527\\t2.365\\t0.284\\t11\\n20528\\t2.966\\t0.038\\t6\\n20529\\t2.584\\t0.061\\t7\\n20530\\t2.771\\t0.387\\t5\\n20531\\t1.29\\t0.001\\t12\\n20535\\t3.368\\t0.154\\t5\\n20536\\t3.023\\t0.074\\t6\\n20537\\t2.913\\t0.0\\t2\\n20538\\t3.021\\t0.331\\t2\\n20540\\t2.651\\t0.201\\t5\\n20543\\t2.735\\t0.344\\t5\\n20546\\t2.531\\t0.277\\t7\\n20549\\t3.267\\t-1.0\\t1\\n20550\\t2.329\\t0.34\\t7\\n20552\\t2.499\\t0.02\\t6\\n20553\\t2.703\\t0.218\\t20\\n20554\\t2.693\\t0.292\\t46\\n20555\\t2.639\\t0.27\\t40\\n20556\\t2.066\\t0.059\\t39\\n20557\\t2.599\\t0.324\\t183\\n20558\\t2.048\\t0.149\\t134\\n20559\\t2.327\\t0.386\\t34\\n20560\\t2.179\\t-1.0\\t1\\n20561\\t2.619\\t-1.0\\t1\\n20562\\t2.967\\t-1.0\\t1\\n20570\\t2.665\\t0.007\\t2\\n20572\\t2.63\\t0.19\\t9\\n20742\\t1.87\\t0.155\\t40\\n24587\\t3.525\\t0.393\\t28\\n24588\\t2.763\\t0.313\\t380\\n24589\\t2.462\\t0.308\\t5373\\n24595\\t4.077\\t0.356\\t19\\n24596\\t3.17\\t0.362\\t45\\n24597\\t2.829\\t0.525\\t432\\n24598\\t2.656\\t0.164\\t627\\n24599\\t2.654\\t0.158\\t57\\n24600\\t2.57\\t0.26\\t309\\n24601\\t2.625\\t0.288\\t208\\n24602\\t2.45\\t0.223\\t1004\\n24603\\t2.182\\t0.257\\t1071\\n24604\\t2.355\\t0.185\\t1159\\n24605\\t2.384\\t0.162\\t130\\n24606\\t2.479\\t0.188\\t1375\\n24607\\t2.547\\t0.23\\t805\\n24613\\t3.789\\t0.188\\t2\\n24614\\t3.484\\t0.291\\t8\\n24615\\t3.089\\t0.34\\t499\\n24616\\t2.809\\t0.177\\t912\\n24617\\t2.665\\t0.147\\t106\\n24618\\t2.632\\t0.3\\t598\\n24620\\t2.419\\t0.207\\t1127\\n24621\\t2.466\\t0.217\\t582\\n24622\\t2.456\\t0.168\\t1672\\n24623\\t2.573\\t0.135\\t12\\n24624\\t2.753\\t0.503\\t34\\n24625\\t2.695\\t0.487\\t478\\n24626\\t2.644\\t0.444\\t4321\\n24627\\t2.655\\t0.961\\t518\\n24631\\t3.712\\t0.709\\t3\\n24632\\t3.745\\t0.575\\t6\\n24633\\t3.382\\t0.306\\t128\\n24634\\t3.417\\t0.336\\t41\\n24635\\t3.236\\t0.278\\t27\\n24636\\t3.365\\t0.272\\t72\\n24638\\t3.236\\t0.316\\t52\\n24639\\t3.097\\t0.0\\t2\\n24640\\t2.718\\t0.258\\t39\\n24641\\t3.353\\t0.103\\t6\\n24642\\t3.087\\t0.178\\t51\\n24643\\t2.988\\t0.348\\t31\\n24644\\t2.995\\t0.182\\t58\\n24645\\t3.221\\t0.798\\t58\\n24646\\t3.104\\t0.353\\t86\\n24647\\t3.019\\t0.515\\t320\\n24648\\t2.735\\t0.176\\t341\\n24649\\t2.703\\t0.204\\t299\\n24650\\t2.595\\t0.331\\t829\\n24651\\t2.536\\t0.58\\t227\\n24652\\t2.472\\t0.25\\t206\\n24653\\t2.534\\t0.168\\t933\\n24654\\t2.491\\t0.326\\t1889\\n24655\\t2.445\\t0.168\\t254\\n24656\\t2.51\\t0.162\\t95\\n24657\\t3.004\\t0.801\\t27\\n24658\\t2.961\\t0.516\\t71\\n24659\\t3.105\\t0.444\\t106\\n24666\\t3.114\\t0.326\\t123\\n24668\\t3.098\\t0.303\\t230\\n28685\\t2.353\\t0.307\\t3006\\n28693\\t2.684\\t0.241\\t703\\n28694\\t2.452\\t0.242\\t3992\\n28695\\t2.409\\t0.319\\t1209\\n28696\\t2.464\\t0.534\\t2219\\n28697\\t2.577\\t0.289\\t2590\\n28698\\t2.456\\t0.2\\t6911\\n28699\\t2.41\\t0.36\\t7053\\n28700\\t2.487\\t0.231\\t7446\\n28701\\t2.406\\t0.194\\t9772\\n28702\\t2.479\\t0.227\\t5502\\n28703\\t2.471\\t0.309\\t929\\n28711\\t2.921\\t0.239\\t1714\\n28712\\t2.679\\t0.232\\t2798\\n28713\\t2.442\\t0.272\\t911\\n28714\\t2.445\\t0.293\\t2412\\n28716\\t2.475\\t0.298\\t2904\\n28717\\t2.428\\t0.335\\t1207\\n28718\\t2.458\\t0.222\\t3289\\n28719\\t2.487\\t0.247\\t1033\\n28720\\t2.81\\t0.231\\t768\\n28721\\t2.785\\t0.35\\t616\\n28722\\t2.606\\t0.37\\t1703\\n28723\\t2.599\\t0.29\\t531\\n28729\\t3.125\\t0.329\\t626\\n28730\\t3.082\\t0.337\\t728\\n28731\\t3.179\\t0.249\\t153\\n28732\\t3.022\\t0.208\\t458\\n28734\\t3.032\\t0.245\\t890\\n28735\\t3.194\\t0.258\\t616\\n28736\\t3.148\\t0.29\\t455\\n28737\\t3.124\\t0.266\\t301\\n28738\\t3.028\\t0.263\\t602\\n28739\\t2.987\\t0.306\\t159\\n28740\\t2.919\\t0.28\\t496\\n28741\\t3.182\\t0.365\\t119\\n28742\\t2.892\\t0.229\\t1179\\n28743\\t2.821\\t0.212\\t549\\n28744\\t2.607\\t0.225\\t683\\n28745\\t2.503\\t0.227\\t1194\\n28746\\t2.395\\t0.326\\t1012\\n28747\\t2.447\\t0.267\\t941\\n28748\\t2.383\\t0.233\\t326\\n28749\\t2.511\\t0.279\\t970\\n28750\\t2.457\\t0.24\\t1884\\n28751\\t2.393\\t0.172\\t533\\n28752\\t2.849\\t0.285\\t194\\n28753\\t2.973\\t0.272\\t62\\n28754\\t2.876\\t0.236\\t326\\n28755\\t2.753\\t0.232\\t424\\n28762\\t3.088\\t0.249\\t588\\n28764\\t2.972\\t0.34\\t2780\\n28765\\t3.016\\t0.335\\t10\\n28766\\t3.297\\t0.204\\t7\\n32781\\t2.145\\t0.448\\t7124\\n32789\\t2.625\\t0.845\\t799\\n32790\\t2.338\\t0.282\\t13095\\n32791\\t2.352\\t0.77\\t18035\\n32792\\t2.299\\t0.427\\t5228\\n32793\\t2.387\\t0.292\\t15567\\n32794\\t2.358\\t0.225\\t12153\\n32795\\t2.38\\t0.29\\t13623\\n32796\\t2.421\\t0.301\\t14996\\n32797\\t2.272\\t0.223\\t19019\\n32798\\t2.378\\t0.357\\t12982\\n32799\\t2.317\\t0.208\\t831\\n32807\\t2.796\\t0.315\\t3153\\n32808\\t2.497\\t0.249\\t4631\\n32809\\t2.375\\t0.365\\t1523\\n32810\\t2.347\\t0.467\\t31965\\n32812\\t2.419\\t0.158\\t3311\\n32813\\t2.436\\t0.193\\t2109\\n32814\\t2.4\\t0.154\\t2649\\n32815\\t2.661\\t0.256\\t865\\n32816\\t2.694\\t0.218\\t2847\\n32817\\t2.616\\t0.276\\t949\\n32818\\t2.579\\t0.438\\t4702\\n32819\\t2.309\\t0.553\\t1993\\n32825\\t2.994\\t0.343\\t2113\\n32826\\t2.856\\t0.3\\t2621\\n32827\\t2.93\\t0.228\\t1218\\n32828\\t2.905\\t0.207\\t2518\\n32830\\t2.869\\t0.237\\t2353\\n32831\\t2.827\\t0.209\\t3697\\n32832\\t2.834\\t0.197\\t5222\\n32833\\t2.78\\t0.177\\t4383\\n32834\\t2.738\\t0.205\\t8482\\n32835\\t2.747\\t0.193\\t1707\\n32836\\t2.742\\t0.193\\t2196\\n32837\\t2.798\\t0.21\\t502\\n32838\\t2.734\\t0.235\\t2716\\n32839\\t2.767\\t0.212\\t885\\n32840\\t2.498\\t0.29\\t774\\n32841\\t2.373\\t0.261\\t1221\\n32842\\t2.285\\t0.417\\t9618\\n32843\\t2.218\\t0.348\\t3304\\n32844\\t2.411\\t0.2\\t303\\n32845\\t2.462\\t0.304\\t1297\\n32846\\t2.393\\t0.203\\t1953\\n32847\\t2.305\\t0.24\\t286\\n32848\\t2.736\\t0.309\\t162\\n32849\\t2.822\\t0.336\\t202\\n32850\\t2.624\\t0.233\\t1404\\n32851\\t2.579\\t0.268\\t1906\\n32858\\t2.759\\t0.291\\t759\\n32860\\t2.611\\t0.412\\t7083\\n32861\\t2.503\\t0.425\\t287\\n32862\\t2.802\\t0.399\\t255\\n32863\\t2.837\\t0.483\\t20\\n32864\\t3.097\\t0.448\\t5\\n32865\\t2.94\\t0.02\\t3\\n32866\\t2.916\\t0.021\\t3\\n36877\\t1.811\\t0.461\\t1163\\n36885\\t2.022\\t0.295\\t129\\n36886\\t2.262\\t0.492\\t1106\\n36887\\t2.576\\t0.889\\t536\\n36888\\t1.937\\t0.267\\t474\\n36889\\t2.093\\t0.73\\t296\\n36890\\t1.929\\t0.743\\t373\\n36891\\t2.283\\t0.257\\t113\\n36892\\t2.221\\t0.196\\t116\\n36893\\t2.345\\t0.817\\t110\\n36894\\t2.065\\t0.336\\t75\\n36895\\t2.412\\t0.358\\t76\\n36903\\t2.125\\t0.259\\t44\\n36904\\t2.154\\t1.055\\t667\\n36905\\t2.12\\t0.459\\t502\\n36906\\t2.031\\t0.453\\t512\\n36908\\t2.395\\t0.388\\t43\\n36909\\t2.339\\t0.338\\t54\\n36910\\t2.361\\t0.307\\t101\\n36911\\t2.57\\t0.191\\t9\\n36912\\t2.427\\t0.207\\t26\\n36913\\t2.059\\t1.008\\t121\\n36914\\t2.126\\t0.626\\t419\\n36915\\t2.193\\t0.262\\t8674\\n36921\\t2.731\\t0.286\\t10\\n36922\\t2.995\\t1.207\\t51\\n36923\\t2.406\\t0.044\\t8\\n36924\\t2.742\\t0.246\\t33\\n36926\\t2.795\\t0.182\\t52\\n36927\\t2.799\\t0.303\\t24\\n36928\\t2.454\\t0.018\\t4\\n36929\\t1.96\\t0.0\\t6\\n36930\\t2.434\\t0.192\\t19\\n36931\\t2.857\\t-1.0\\t1\\n36932\\t2.747\\t0.211\\t25\\n36934\\t2.687\\t0.139\\t19\\n36935\\t2.806\\t0.003\\t4\\n36936\\t2.107\\t0.444\\t90\\n36937\\t2.149\\t0.225\\t250\\n36938\\t1.882\\t0.247\\t232\\n36939\\t2.0\\t0.93\\t274\\n36940\\t2.276\\t0.144\\t56\\n36941\\t2.293\\t1.188\\t69\\n36942\\t2.356\\t0.364\\t53\\n36943\\t1.893\\t0.555\\t149\\n36944\\t2.373\\t0.0\\t2\\n36945\\t2.015\\t0.261\\t45\\n36946\\t2.333\\t0.203\\t37\\n36947\\t2.152\\t0.196\\t94\\n36954\\t2.666\\t0.268\\t30\\n36955\\t2.205\\t0.007\\t16\\n36956\\t2.285\\t0.379\\t153\\n36957\\t2.26\\t0.017\\t10\\n45067\\t3.369\\t0.477\\t389\\n45068\\t3.242\\t-1.0\\t1\\n45069\\t3.524\\t0.425\\t2\\n45070\\t3.558\\t0.0\\t2\\n45075\\t3.592\\t0.346\\t36\\n45076\\t3.383\\t0.133\\t22\\n45081\\t3.221\\t0.182\\t3\\n45082\\t2.923\\t0.336\\t4\\n45083\\t3.382\\t-1.0\\t1\\n45084\\t2.961\\t0.097\\t3\\n45087\\t3.136\\t-1.0\\t1\\n45088\\t3.161\\t0.174\\t9\\n45093\\t3.645\\t0.249\\t17\\n45094\\t3.529\\t0.167\\t10\\n45101\\t3.618\\t-1.0\\t1\\n45106\\t3.243\\t0.311\\t72\\n45107\\t3.33\\t0.219\\t17\\n45111\\t3.704\\t0.248\\t22\\n45112\\t3.585\\t0.155\\t9\\n45134\\t3.136\\t-1.0\\t1\\n45136\\t3.234\\t0.09\\t7\\n45137\\t3.405\\t0.105\\t12\\n45138\\t3.441\\t0.118\\t15\\n45139\\t3.281\\t0.068\\t7\\n45317\\t3.245\\t0.017\\t2\\n45318\\t3.261\\t0.178\\t294\\n45573\\t2.685\\t-1.0\\t1\\n45574\\t3.187\\t0.261\\t35\\n49164\\t3.052\\t0.123\\t490\\n49165\\t3.401\\t-1.0\\t1\\n49166\\t2.887\\t0.569\\t39\\n49171\\t4.275\\t0.055\\t2\\n49172\\t3.412\\t0.019\\t8\\n49177\\t3.408\\t-1.0\\t1\\n49178\\t3.072\\t0.063\\t8\\n49181\\t3.334\\t0.086\\t3\\n49182\\t3.217\\t0.061\\t2\\n49183\\t2.836\\t0.772\\t13\\n49184\\t2.807\\t0.438\\t17\\n49190\\t3.648\\t0.307\\t28\\n49191\\t2.187\\t0.0\\t6\\n49194\\t2.466\\t0.0\\t2\\n49197\\t2.818\\t0.099\\t91\\n49202\\t2.927\\t0.036\\t9\\n49203\\t2.862\\t0.432\\t19\\n49207\\t3.807\\t0.0\\t2\\n49208\\t3.659\\t0.045\\t20\\n49209\\t3.53\\t0.075\\t16\\n49210\\t3.447\\t0.003\\t12\\n49211\\t3.506\\t0.0\\t3\\n49212\\t3.54\\t0.0\\t3\\n49214\\t3.463\\t0.0\\t3\\n49215\\t3.48\\t0.014\\t8\\n49216\\t3.364\\t0.0\\t3\\n49221\\t3.144\\t0.0\\t12\\n49229\\t2.7\\t0.086\\t48\\n49230\\t3.087\\t0.019\\t2\\n49233\\t3.145\\t0.004\\t2\\n49413\\t2.826\\t0.154\\t5\\n49414\\t2.811\\t0.216\\t411\\n49670\\t2.681\\t0.238\\t49\\n53261\\t3.147\\t0.471\\t69\\n53262\\t3.263\\t0.176\\t31\\n53263\\t3.143\\t0.346\\t218\\n53264\\t2.983\\t0.385\\t264\\n53265\\t2.601\\t0.322\\t2017\\n53268\\t3.669\\t-1.0\\t1\\n53272\\t2.557\\t-1.0\\t1\\n53273\\t2.309\\t-1.0\\t1\\n53274\\t2.908\\t0.179\\t18\\n53275\\t2.828\\t0.234\\t10\\n53276\\t2.655\\t0.245\\t6\\n53277\\t2.352\\t0.06\\t13\\n53278\\t3.3\\t0.187\\t3\\n53279\\t3.414\\t0.37\\t3\\n53280\\t2.499\\t0.185\\t12\\n53281\\t2.448\\t0.051\\t41\\n53282\\t2.875\\t0.469\\t72\\n53283\\t2.741\\t0.288\\t381\\n53286\\t3.495\\t0.045\\t15\\n53292\\t2.999\\t-1.0\\t1\\n53293\\t3.023\\t0.354\\t19\\n53294\\t2.951\\t0.089\\t21\\n53295\\t3.08\\t-1.0\\t1\\n53297\\t3.715\\t-1.0\\t1\\n53298\\t3.418\\t0.0\\t2\\n53299\\t2.655\\t0.502\\t19\\n53300\\t2.915\\t0.495\\t30\\n53301\\t3.049\\t0.382\\t137\\n53303\\t2.804\\t1.394\\t2\\n53304\\t3.582\\t0.06\\t4\\n53305\\t3.584\\t0.347\\t3\\n53308\\t3.56\\t0.086\\t2\\n53322\\t3.218\\t0.048\\t2\\n53325\\t3.468\\t0.243\\t2\\n53326\\t3.202\\t0.139\\t4\\n53331\\t3.74\\t0.255\\t4\\n53340\\t4.01\\t0.006\\t2\\n53509\\t2.605\\t0.31\\t8\\n53510\\t2.407\\t0.249\\t1700\\n53511\\t2.374\\t0.163\\t1982\\n53512\\t2.216\\t0.23\\t533\\n53519\\t2.935\\t0.196\\t5\\n53520\\t2.843\\t0.186\\t40\\n53766\\t2.468\\t0.199\\t96\\n53767\\t2.448\\t0.135\\t44\\n53768\\t1.978\\t0.199\\t4\\n57363\\t4.548\\t0.464\\t19\\n57364\\t3.083\\t0.417\\t13\\n57366\\t3.671\\t0.019\\t4\\n57367\\t3.246\\t0.035\\t4\\n57368\\t2.795\\t0.193\\t8\\n57369\\t2.811\\t0.292\\t27\\n57370\\t2.847\\t0.192\\t233\\n57371\\t2.715\\t0.262\\t77\\n57372\\t2.749\\t0.228\\t147\\n57373\\t2.884\\t0.306\\t43\\n57374\\t3.288\\t0.273\\t42\\n57375\\t3.561\\t0.36\\t4\\n57382\\t3.347\\t0.097\\t2\\n57384\\t3.775\\t0.176\\t18\\n57385\\t3.436\\t0.115\\t26\\n57386\\t3.224\\t0.255\\t49\\n57388\\t2.956\\t0.338\\t151\\n57389\\t2.78\\t0.227\\t106\\n57390\\t2.921\\t0.275\\t97\\n57391\\t3.357\\t0.302\\t20\\n57393\\t3.19\\t0.085\\t14\\n57394\\t3.662\\t0.527\\t210\\n57395\\t3.917\\t0.191\\t58\\n57399\\t3.91\\t0.0\\t4\\n57400\\t3.327\\t0.062\\t5\\n57402\\t3.01\\t0.585\\t8\\n57406\\t4.511\\t0.25\\t17\\n57407\\t4.503\\t0.08\\t6\\n57409\\t3.926\\t0.003\\t2\\n57411\\t3.905\\t0.012\\t2\\n57414\\t4.362\\t0.205\\t19\\n57416\\t3.87\\t0.205\\t13\\n57417\\t3.437\\t0.24\\t5\\n57418\\t3.085\\t0.21\\t66\\n57419\\t2.96\\t0.12\\t14\\n57420\\t3.028\\t0.125\\t7\\n57421\\t2.797\\t0.286\\t150\\n57422\\t2.978\\t0.215\\t175\\n57423\\t2.761\\t0.465\\t12\\n57424\\t3.53\\t0.211\\t22\\n57426\\t3.874\\t0.316\\t17\\n57427\\t4.031\\t0.321\\t9\\n61461\\t3.38\\t0.299\\t100\\n61462\\t3.21\\t0.369\\t276\\n61463\\t3.131\\t0.207\\t110\\n61464\\t2.873\\t0.244\\t730\\n61465\\t2.696\\t0.32\\t774\\n61466\\t2.697\\t0.243\\t4802\\n61467\\t2.679\\t0.235\\t3056\\n61468\\t2.676\\t0.196\\t4702\\n61469\\t2.64\\t0.179\\t5253\\n61470\\t2.912\\t0.244\\t119\\n61471\\t3.023\\t0.242\\t152\\n61479\\t3.617\\t0.27\\t57\\n61480\\t3.41\\t0.235\\t240\\n61481\\t3.284\\t0.297\\t129\\n61482\\t3.002\\t0.261\\t2058\\n61484\\t2.758\\t0.203\\t6616\\n61485\\t2.714\\t0.205\\t4052\\n61486\\t2.713\\t0.193\\t6710\\n61487\\t2.863\\t0.16\\t1964\\n61488\\t3.199\\t0.271\\t42\\n61489\\t3.285\\t0.255\\t93\\n61490\\t3.243\\t0.31\\t221\\n61491\\t3.183\\t0.277\\t77\\n61497\\t3.201\\t0.305\\t27\\n61498\\t2.934\\t0.476\\t9\\n61500\\t3.451\\t0.1\\t14\\n61502\\t3.794\\t0.117\\t26\\n61506\\t3.579\\t0.083\\t13\\n61507\\t3.584\\t0.109\\t8\\n61508\\t3.774\\t0.0\\t2\\n61510\\t3.577\\t0.217\\t22\\n61511\\t3.739\\t0.336\\t7\\n61512\\t3.408\\t0.222\\t72\\n61513\\t3.244\\t0.257\\t147\\n61514\\t3.003\\t0.256\\t1665\\n61515\\t2.906\\t0.239\\t1623\\n61516\\t2.798\\t0.241\\t1057\\n61517\\t2.754\\t0.215\\t2863\\n61518\\t2.714\\t0.201\\t6668\\n61519\\t2.668\\t0.172\\t4216\\n61520\\t2.879\\t0.203\\t76\\n61521\\t3.471\\t0.204\\t33\\n61522\\t3.487\\t0.164\\t39\\n61523\\t3.141\\t0.234\\t30\\n61530\\t3.726\\t0.298\\t60\\n61532\\t3.891\\t0.328\\t80\\n65557\\t3.412\\t0.368\\t35\\n65558\\t2.901\\t0.267\\t387\\n65559\\t2.852\\t0.348\\t489\\n65560\\t2.881\\t0.289\\t268\\n65561\\t2.726\\t0.281\\t883\\n65562\\t2.718\\t0.226\\t7921\\n65563\\t2.724\\t0.272\\t1489\\n65564\\t2.606\\t0.234\\t5975\\n65565\\t2.755\\t0.225\\t5038\\n65566\\t2.788\\t0.225\\t1360\\n65567\\t2.767\\t0.214\\t227\\n65575\\t3.418\\t0.184\\t159\\n65576\\t3.376\\t0.277\\t123\\n65577\\t2.954\\t0.528\\t373\\n65578\\t2.911\\t0.288\\t3355\\n65580\\t2.816\\t0.192\\t1907\\n65581\\t2.839\\t0.173\\t765\\n65582\\t2.775\\t0.192\\t2485\\n65583\\t3.093\\t0.232\\t4438\\n65584\\t3.087\\t0.238\\t609\\n65585\\t3.111\\t0.393\\t484\\n65586\\t2.949\\t0.477\\t1247\\n65587\\t2.995\\t0.415\\t696\\n65593\\t3.611\\t0.276\\t65\\n65594\\t3.5\\t0.164\\t59\\n65595\\t3.551\\t0.145\\t18\\n65596\\t3.459\\t0.169\\t45\\n65598\\t3.453\\t0.18\\t175\\n65599\\t3.683\\t0.232\\t44\\n65600\\t3.412\\t0.05\\t10\\n65601\\t3.114\\t0.282\\t6\\n65602\\t3.516\\t0.333\\t73\\n65603\\t3.018\\t0.572\\t5\\n65604\\t3.488\\t0.196\\t81\\n65605\\t3.266\\t0.272\\t10\\n65606\\t3.254\\t0.188\\t179\\n65607\\t3.336\\t0.194\\t34\\n65608\\t3.554\\t0.326\\t21\\n65609\\t2.461\\t0.31\\t329\\n65610\\t2.919\\t0.288\\t2082\\n65611\\t2.8\\t0.267\\t1996\\n65612\\t2.475\\t0.252\\t240\\n65613\\t2.833\\t0.153\\t655\\n65614\\t2.73\\t0.196\\t2208\\n65615\\t2.776\\t0.277\\t3697\\n65616\\t2.944\\t0.23\\t538\\n65617\\t3.031\\t0.277\\t17\\n65618\\t3.147\\t0.26\\t222\\n65619\\t3.099\\t0.284\\t350\\n65626\\t3.319\\t0.35\\t170\\n65628\\t3.382\\t0.265\\t290\\n65629\\t3.399\\t0.077\\t8\\n65630\\t2.931\\t0.387\\t17\\n65631\\t3.438\\t0.046\\t3\\n65632\\t3.441\\t0.047\\t3\\n69653\\t3.008\\t0.308\\t233\\n69654\\t2.799\\t0.246\\t2597\\n69655\\t2.789\\t0.215\\t490\\n69656\\t2.8\\t0.199\\t1394\\n69657\\t2.875\\t0.267\\t1182\\n69658\\t2.712\\t0.238\\t3474\\n69659\\t2.694\\t0.227\\t2713\\n69660\\t2.758\\t0.28\\t2082\\n69661\\t2.701\\t0.25\\t5780\\n69662\\t2.642\\t0.425\\t3822\\n69663\\t2.661\\t0.254\\t1485\\n69671\\t3.218\\t0.274\\t409\\n69672\\t2.991\\t0.248\\t1900\\n69673\\t2.903\\t0.356\\t1449\\n69674\\t2.907\\t0.475\\t2267\\n69676\\t2.885\\t0.203\\t5377\\n69677\\t2.863\\t0.235\\t2604\\n69678\\t2.776\\t0.213\\t6900\\n69679\\t3.032\\t0.245\\t617\\n69680\\t2.974\\t0.221\\t1026\\n69681\\t2.957\\t0.377\\t932\\n69682\\t2.928\\t0.391\\t2452\\n69683\\t2.872\\t0.46\\t1745\\n69689\\t3.393\\t0.345\\t120\\n69690\\t3.542\\t0.471\\t133\\n69691\\t3.384\\t0.328\\t54\\n69692\\t3.319\\t0.289\\t122\\n69694\\t3.354\\t0.248\\t151\\n69695\\t3.179\\t0.349\\t113\\n69696\\t3.251\\t0.372\\t116\\n69697\\t3.069\\t0.3\\t85\\n69698\\t3.114\\t0.336\\t295\\n69699\\t3.273\\t0.344\\t35\\n69700\\t3.214\\t0.336\\t160\\n69701\\t2.947\\t0.43\\t25\\n69702\\t3.224\\t0.207\\t183\\n69703\\t3.182\\t0.198\\t73\\n69704\\t2.972\\t0.302\\t357\\n69705\\t2.911\\t0.327\\t1000\\n69706\\t2.885\\t0.369\\t1787\\n69707\\t2.801\\t0.257\\t2221\\n69708\\t2.851\\t0.255\\t681\\n69709\\t2.879\\t0.222\\t2186\\n69710\\t2.757\\t0.265\\t4336\\n69711\\t2.675\\t0.201\\t2687\\n69712\\t2.804\\t0.27\\t1229\\n69713\\t2.554\\t0.473\\t192\\n69714\\t3.224\\t0.457\\t625\\n69715\\t3.107\\t0.371\\t1402\\n69722\\t3.417\\t0.306\\t157\\n69723\\t2.64\\t0.0\\t4\\n69724\\t3.21\\t0.343\\t893\\n69725\\t3.181\\t0.284\\t122\\n69726\\t3.088\\t0.296\\t154\\n69727\\t2.915\\t-1.0\\t1\\n69728\\t2.915\\t-1.0\\t1\\n69729\\t2.465\\t0.0\\t6\\n77843\\t3.904\\t0.444\\t476\\n77844\\t3.931\\t0.219\\t13\\n77847\\t3.213\\t0.001\\t2\\n77848\\t3.318\\t0.114\\t5\\n77849\\t3.574\\t0.313\\t3\\n77850\\t3.205\\t-1.0\\t1\\n77851\\t3.463\\t0.411\\t4\\n77852\\t3.491\\t0.534\\t2\\n77853\\t3.822\\t0.039\\t3\\n77854\\t3.511\\t0.765\\t6\\n77856\\t3.502\\t0.647\\t78\\n77861\\t3.9\\t0.078\\t12\\n77862\\t3.806\\t0.091\\t8\\n77864\\t3.807\\t-1.0\\t1\\n77865\\t3.535\\t0.137\\t7\\n77870\\t3.386\\t0.218\\t17\\n77871\\t3.245\\t0.006\\t2\\n77874\\t3.754\\t0.595\\t67\\n77875\\t3.655\\t0.42\\t25\\n77879\\t3.899\\t0.365\\t31\\n77880\\t4.729\\t0.676\\t2\\n77898\\t4.496\\t0.606\\t3\\n77902\\t3.48\\t0.0\\t4\\n77905\\t3.736\\t0.08\\t11\\n77906\\t3.724\\t0.099\\t26\\n77907\\t3.562\\t0.045\\t4\\n77917\\t4.592\\t-1.0\\t1\\n78085\\t3.76\\t0.113\\t8\\n78086\\t3.713\\t0.29\\t1287\\n78342\\t3.557\\t0.28\\t73\\n81940\\t3.661\\t0.289\\t176\\n81943\\t3.019\\t-1.0\\t1\\n81944\\t2.85\\t-1.0\\t1\\n81945\\t3.324\\t0.0\\t2\\n81951\\t3.151\\t-1.0\\t1\\n81952\\t3.185\\t0.116\\t25\\n81957\\t3.75\\t0.247\\t3\\n81958\\t3.579\\t0.106\\t3\\n81967\\t3.517\\t0.128\\t5\\n81969\\t3.26\\t0.128\\t3\\n81970\\t3.346\\t0.13\\t71\\n81971\\t3.246\\t0.132\\t128\\n81975\\t3.895\\t0.219\\t5\\n81976\\t3.719\\t0.202\\t10\\n81997\\t3.133\\t0.007\\t2\\n81999\\t3.088\\t0.086\\t20\\n82000\\t3.26\\t0.098\\t4\\n82001\\t3.332\\t-1.0\\t1\\n82002\\t3.427\\t0.083\\t10\\n82003\\t3.25\\t0.171\\t45\\n82012\\t3.805\\t-1.0\\t1\\n82182\\t3.212\\t0.212\\t411\\n82438\\t2.973\\t0.227\\t13\\n86044\\t2.357\\t-1.0\\t1\\n86050\\t3.301\\t0.106\\t5\\n86051\\t3.223\\t0.408\\t15\\n86053\\t3.906\\t-1.0\\t1\\n86062\\t2.711\\t0.034\\t2\\n86068\\t3.534\\t0.111\\t4\\n86069\\t3.014\\t0.266\\t86\\n86277\\t3.132\\t0.206\\t3\\n86278\\t3.08\\t0.205\\t1002\\n86279\\t2.704\\t0.168\\t460\\n86280\\t2.561\\t0.163\\t44\\n86287\\t3.292\\t0.078\\t26\\n86288\\t3.128\\t0.068\\t7\\n86534\\t2.902\\t0.101\\t13\\n86535\\t2.446\\t0.18\\t5\\n90134\\t3.158\\t0.093\\t9\\n90138\\t2.576\\t0.185\\t3\\n90139\\t2.835\\t0.161\\t13\\n90140\\t2.925\\t0.174\\t8\\n90141\\t3.761\\t-1.0\\t1\\n90143\\t3.058\\t0.0\\t2\\n90144\\t2.522\\t0.784\\t3\\n90145\\t2.482\\t0.209\\t46\\n90146\\t3.164\\t0.558\\t44\\n90147\\t2.774\\t0.281\\t113\\n90150\\t3.233\\t0.034\\t7\\n90156\\t3.193\\t-1.0\\t1\\n90157\\t2.921\\t-1.0\\t1\\n90161\\t3.271\\t0.0\\t2\\n90162\\t3.869\\t0.023\\t3\\n90163\\t3.573\\t0.143\\t28\\n90164\\t3.347\\t0.022\\t18\\n90165\\t2.62\\t0.414\\t54\\n90168\\t3.427\\t0.036\\t8\\n90194\\t3.897\\t-1.0\\t1\\n90373\\t3.171\\t0.268\\t3\\n90374\\t2.926\\t0.185\\t13105\\n90375\\t2.587\\t0.178\\t1875\\n90376\\t2.456\\t0.185\\t917\\n90383\\t3.113\\t0.322\\t22\\n90384\\t3.044\\t0.167\\t14\\n90630\\t2.624\\t0.183\\t73\\n90631\\t2.431\\t0.217\\t59\\n90632\\t2.541\\t0.214\\t13\\n94231\\t2.269\\t0.138\\t9\\n94234\\t2.503\\t0.095\\t6\\n94235\\t2.637\\t0.592\\t3\\n94236\\t3.236\\t0.203\\t2\\n94242\\t2.529\\t0.487\\t29\\n94243\\t2.969\\t0.254\\t17\\n94264\\t3.486\\t-1.0\\t1\\n94286\\t2.784\\t0.083\\t10\\n94470\\t2.664\\t0.196\\t1656\\n94471\\t2.46\\t0.141\\t1730\\n94472\\t2.373\\t0.21\\t563\\n94479\\t3.002\\t0.084\\t9\\n94480\\t2.809\\t0.211\\t72\\n94726\\t2.339\\t0.204\\t93\\n94727\\t2.461\\t0.173\\t28\\n94728\\t2.22\\t0.033\\t36\\n98328\\t2.585\\t0.33\\t139\\n98329\\t3.026\\t0.483\\t6\\n98330\\t3.053\\t0.116\\t7\\n98331\\t2.861\\t0.157\\t7\\n98332\\t3.016\\t0.06\\t2\\n98333\\t2.906\\t-1.0\\t1\\n98334\\t3.171\\t-1.0\\t1\\n98335\\t2.778\\t0.078\\t6\\n98336\\t2.83\\t0.006\\t4\\n98337\\t2.984\\t0.301\\t63\\n98338\\t3.557\\t0.536\\t97\\n98339\\t2.852\\t0.31\\t66\\n98341\\t3.47\\t0.104\\t3\\n98349\\t3.572\\t-1.0\\t1\\n98350\\t3.259\\t0.092\\t4\\n98354\\t3.11\\t0.137\\t19\\n98355\\t3.017\\t0.193\\t20\\n98356\\t3.203\\t0.219\\t43\\n98357\\t3.129\\t0.376\\t67\\n98378\\t3.04\\t-1.0\\t1\\n98381\\t3.568\\t-1.0\\t1\\n98382\\t3.15\\t0.188\\t5\\n98383\\t3.133\\t0.037\\t3\\n98384\\t3.045\\t0.0\\t2\\n98386\\t3.121\\t0.097\\t12\\n98387\\t3.325\\t0.016\\t2\\n98565\\t2.688\\t0.12\\t18\\n98566\\t2.619\\t0.153\\t6878\\n98567\\t2.404\\t0.141\\t2515\\n98568\\t2.41\\t0.174\\t638\\n98575\\t3.098\\t0.146\\t259\\n98576\\t2.876\\t0.25\\t37\\n98822\\t2.158\\t0.152\\t4143\\n98823\\t2.42\\t0.131\\t56\\n98824\\t2.468\\t0.236\\t5\\n102425\\t3.087\\t0.258\\t19\\n102426\\t2.867\\t0.103\\t4\\n102427\\t3.03\\t0.131\\t2\\n102428\\t2.886\\t-1.0\\t1\\n102431\\t3.326\\t0.375\\t7\\n102432\\t2.775\\t0.168\\t35\\n102433\\t2.737\\t0.092\\t14\\n102434\\t3.052\\t0.275\\t320\\n102435\\t2.947\\t0.279\\t501\\n102438\\t3.136\\t0.442\\t2\\n102442\\t3.198\\t-1.0\\t1\\n102444\\t2.998\\t0.081\\t3\\n102445\\t2.848\\t0.318\\t2\\n102447\\t3.116\\t0.312\\t4\\n102449\\t2.668\\t0.007\\t12\\n102450\\t2.65\\t0.156\\t37\\n102451\\t2.804\\t0.128\\t97\\n102452\\t3.71\\t0.389\\t143\\n102453\\t3.196\\t0.352\\t77\\n102476\\t2.993\\t0.038\\t4\\n102478\\t3.256\\t-1.0\\t1\\n102479\\t3.089\\t0.272\\t5\\n102480\\t2.61\\t0.003\\t4\\n102481\\t3.397\\t-1.0\\t1\\n102482\\t2.754\\t0.035\\t4\\n102483\\t2.878\\t0.096\\t25\\n102661\\t2.718\\t0.111\\t3\\n102662\\t2.482\\t0.226\\t2788\\n102663\\t2.511\\t0.177\\t8370\\n102664\\t2.493\\t0.179\\t2602\\n102671\\t2.643\\t0.184\\t45\\n102672\\t2.962\\t0.176\\t53\\n102918\\t2.052\\t0.149\\t4796\\n102919\\t2.51\\t0.179\\t433\\n102920\\t2.374\\t0.161\\t19\\n106522\\t2.941\\t0.371\\t219\\n106523\\t2.892\\t0.261\\t5\\n106524\\t2.877\\t0.111\\t7\\n106525\\t2.863\\t0.149\\t85\\n106526\\t2.98\\t0.096\\t34\\n106527\\t2.834\\t0.242\\t89\\n106528\\t2.743\\t0.335\\t128\\n106529\\t2.701\\t0.254\\t143\\n106530\\t2.739\\t0.223\\t715\\n106531\\t2.904\\t0.242\\t866\\n106536\\t3.002\\t0.349\\t8\\n106537\\t2.799\\t0.229\\t2\\n106538\\t3.086\\t0.144\\t4\\n106540\\t2.735\\t0.302\\t14\\n106541\\t2.768\\t0.387\\t2\\n106542\\t3.159\\t0.157\\t17\\n106543\\t2.781\\t0.205\\t11\\n106545\\t3.031\\t0.266\\t33\\n106546\\t3.013\\t0.266\\t96\\n106547\\t2.844\\t0.229\\t38\\n106548\\t2.92\\t0.185\\t202\\n106549\\t3.146\\t0.267\\t200\\n106551\\t3.701\\t0.004\\t2\\n106552\\t3.508\\t0.08\\t2\\n106554\\t3.692\\t-1.0\\t1\\n106556\\t3.882\\t-1.0\\t1\\n106566\\t3.665\\t0.215\\t7\\n106570\\t3.257\\t0.114\\t4\\n106571\\t2.863\\t0.015\\t4\\n106572\\t2.976\\t0.164\\t5\\n106574\\t3.224\\t0.085\\t11\\n106575\\t2.779\\t0.247\\t4\\n106576\\t2.981\\t0.124\\t18\\n106577\\t3.014\\t0.072\\t10\\n106579\\t3.124\\t0.117\\t28\\n106757\\t2.221\\t0.408\\t15\\n106758\\t2.401\\t0.141\\t81624\\n106759\\t2.351\\t0.184\\t21226\\n106760\\t2.431\\t0.13\\t2185\\n106767\\t2.782\\t0.218\\t230\\n106768\\t2.742\\t0.183\\t221\\n107014\\t2.077\\t0.157\\t13871\\n107015\\t2.286\\t0.144\\t1126\\n107016\\t2.261\\t0.186\\t6\\n107023\\t2.555\\t-1.0\\t1\\n110619\\t2.657\\t0.367\\t240\\n110620\\t2.816\\t0.234\\t12\\n110621\\t2.849\\t0.093\\t2\\n110622\\t2.914\\t0.068\\t12\\n110623\\t2.683\\t0.337\\t23\\n110624\\t2.349\\t0.547\\t34\\n110625\\t2.914\\t0.287\\t44\\n110626\\t2.37\\t0.334\\t254\\n110627\\t2.823\\t0.245\\t593\\n110629\\t3.216\\t-1.0\\t1\\n110632\\t3.168\\t0.262\\t18\\n110633\\t3.517\\t-1.0\\t1\\n110634\\t3.188\\t-1.0\\t1\\n110636\\t2.935\\t0.025\\t5\\n110637\\t2.659\\t0.073\\t4\\n110638\\t2.964\\t0.14\\t43\\n110641\\t2.808\\t0.245\\t6\\n110642\\t2.669\\t0.36\\t18\\n110643\\t2.899\\t0.004\\t2\\n110644\\t2.907\\t0.266\\t28\\n110645\\t3.111\\t0.233\\t239\\n110654\\t3.746\\t0.042\\t4\\n110664\\t3.213\\t0.095\\t2\\n110665\\t3.535\\t-1.0\\t1\\n110666\\t3.211\\t-1.0\\t1\\n110669\\t2.652\\t-1.0\\t1\\n110670\\t3.108\\t0.335\\t20\\n110671\\t3.078\\t0.114\\t48\\n110672\\t2.505\\t0.007\\t4\\n110673\\t2.66\\t0.009\\t3\\n110674\\t2.75\\t0.014\\t4\\n110675\\t2.821\\t0.241\\t50\\n110682\\t3.786\\t-1.0\\t1\\n110684\\t3.602\\t0.211\\t2\\n110853\\t2.51\\t0.032\\t24\\n110854\\t2.424\\t0.18\\t7855\\n110855\\t2.35\\t0.165\\t15280\\n110856\\t2.397\\t0.151\\t2600\\n110863\\t2.753\\t0.315\\t114\\n110864\\t2.718\\t0.212\\t256\\n111110\\t2.057\\t0.162\\t5916\\n111111\\t2.347\\t0.183\\t580\\n111120\\t3.119\\t-1.0\\t1\\n114716\\t2.861\\t0.204\\t423\\n114717\\t2.956\\t0.144\\t62\\n114718\\t3.07\\t0.105\\t55\\n114719\\t2.884\\t0.235\\t61\\n114720\\t2.67\\t0.388\\t26\\n114721\\t2.959\\t0.219\\t18\\n114722\\t2.832\\t0.233\\t173\\n114723\\t2.869\\t0.229\\t1269\\n114727\\t2.635\\t0.109\\t4\\n114728\\t2.753\\t-1.0\\t1\\n114730\\t2.796\\t0.0\\t2\\n114733\\t2.529\\t0.017\\t3\\n114737\\t2.923\\t0.325\\t25\\n114738\\t3.191\\t0.145\\t154\\n114739\\t3.085\\t0.122\\t9\\n114740\\t3.439\\t0.421\\t52\\n114741\\t3.061\\t0.179\\t190\\n114743\\t3.288\\t-1.0\\t1\\n114745\\t2.617\\t0.062\\t2\\n114759\\t3.289\\t0.325\\t3\\n114760\\t2.798\\t-1.0\\t1\\n114762\\t2.961\\t-1.0\\t1\\n114765\\t2.702\\t-1.0\\t1\\n114766\\t3.089\\t0.135\\t10\\n114767\\t3.047\\t0.066\\t62\\n114768\\t3.431\\t0.011\\t4\\n114769\\t3.198\\t-1.0\\t1\\n114770\\t3.331\\t0.009\\t16\\n114771\\t3.287\\t0.091\\t62\\n114780\\t3.048\\t-1.0\\t1\\n114949\\t2.438\\t0.289\\t13\\n114950\\t2.447\\t0.207\\t5143\\n114951\\t2.359\\t0.153\\t15318\\n114952\\t2.422\\t0.153\\t2635\\n114959\\t2.635\\t0.231\\t43\\n114960\\t2.669\\t0.201\\t795\\n115206\\t2.167\\t0.159\\t1651\\n115207\\t2.384\\t0.147\\t685\\n115208\\t2.377\\t-1.0\\t1\\n118813\\t2.913\\t0.463\\t3054\\n118814\\t2.839\\t0.079\\t11\\n118815\\t2.711\\t0.001\\t4\\n118816\\t2.916\\t0.195\\t36\\n118817\\t2.906\\t0.257\\t48\\n118818\\t3.003\\t0.19\\t1185\\n118819\\t2.89\\t0.233\\t2162\\n118821\\t4.015\\t-1.0\\t1\\n118826\\t2.96\\t-1.0\\t1\\n118828\\t2.952\\t0.11\\t39\\n118829\\t2.507\\t0.024\\t3\\n118830\\t2.938\\t0.19\\t22\\n118831\\t2.849\\t0.2\\t37\\n118834\\t2.765\\t0.134\\t305\\n118835\\t3.108\\t0.155\\t31\\n118836\\t3.39\\t0.219\\t189\\n118837\\t3.139\\t0.235\\t3644\\n118839\\t3.839\\t-1.0\\t1\\n118858\\t2.994\\t-1.0\\t1\\n118861\\t2.937\\t0.024\\t4\\n118862\\t2.749\\t0.231\\t11\\n118863\\t3.089\\t0.14\\t128\\n118864\\t2.73\\t0.419\\t10\\n118867\\t4.236\\t-1.0\\t1\\n119046\\t2.301\\t0.205\\t1784\\n119047\\t2.304\\t0.132\\t28601\\n119048\\t2.278\\t0.16\\t3943\\n119055\\t2.752\\t0.18\\t205\\n119056\\t2.764\\t0.209\\t1501\\n119302\\t2.425\\t0.207\\t1326\\n119303\\t2.302\\t0.163\\t1333\\n119304\\t2.514\\t0.012\\t2\\n122910\\t2.933\\t0.511\\t46\\n122911\\t2.702\\t0.368\\t7\\n122912\\t2.663\\t0.513\\t47\\n122913\\t2.561\\t0.197\\t22\\n122914\\t2.985\\t0.238\\t269\\n122915\\t2.799\\t0.235\\t1020\\n122917\\t3.448\\t-1.0\\t1\\n122920\\t3.428\\t0.0\\t2\\n122922\\t3.262\\t0.063\\t13\\n122924\\t3.141\\t0.257\\t36\\n122925\\t3.024\\t0.038\\t68\\n122926\\t3.08\\t0.273\\t30\\n122929\\t3.163\\t0.018\\t2\\n122930\\t2.751\\t0.402\\t11\\n122932\\t3.359\\t0.441\\t18\\n122933\\t3.021\\t0.24\\t382\\n122935\\t3.714\\t-1.0\\t1\\n122955\\t3.014\\t0.026\\t6\\n122957\\t3.238\\t0.02\\t4\\n122958\\t3.092\\t0.105\\t29\\n122960\\t3.074\\t0.0\\t2\\n122961\\t2.928\\t0.007\\t10\\n122962\\t3.518\\t0.023\\t8\\n122963\\t2.553\\t0.0\\t2\\n123142\\t2.737\\t0.301\\t850\\n123143\\t2.41\\t0.137\\t13630\\n123144\\t2.395\\t0.157\\t2260\\n123151\\t2.989\\t0.176\\t11\\n123152\\t2.86\\t0.169\\t504\\n123398\\t2.392\\t0.233\\t92\\n123399\\t2.348\\t0.155\\t241\\n127007\\t3.02\\t0.246\\t86\\n127008\\t2.974\\t0.088\\t8\\n127009\\t3.494\\t0.451\\t21\\n127010\\t2.829\\t0.38\\t37\\n127011\\t2.708\\t0.245\\t196\\n127014\\t3.469\\t0.079\\t7\\n127016\\t3.23\\t0.0\\t2\\n127018\\t3.049\\t0.131\\t23\\n127020\\t2.953\\t0.101\\t22\\n127021\\t3.009\\t0.238\\t45\\n127022\\t3.086\\t0.158\\t56\\n127023\\t3.058\\t0.009\\t4\\n127025\\t3.335\\t0.196\\t5\\n127026\\t3.283\\t0.062\\t7\\n127027\\t2.651\\t0.769\\t24\\n127028\\t3.434\\t0.203\\t18\\n127029\\t3.123\\t0.373\\t261\\n127031\\t3.789\\t0.084\\t6\\n127032\\t4.457\\t-1.0\\t1\\n127033\\t3.667\\t-1.0\\t1\\n127036\\t4.074\\t0.0\\t2\\n127039\\t4.048\\t-1.0\\t1\\n127046\\t4.093\\t-1.0\\t1\\n127050\\t2.953\\t0.101\\t7\\n127052\\t3.076\\t0.218\\t4\\n127053\\t3.176\\t0.156\\t3\\n127054\\t2.924\\t0.124\\t38\\n127055\\t2.909\\t0.082\\t10\\n127059\\t4.205\\t0.525\\t4\\n127068\\t3.948\\t0.013\\t2\\n127237\\t2.513\\t0.281\\t7\\n127238\\t2.422\\t0.173\\t417\\n127239\\t2.418\\t0.176\\t782\\n127240\\t2.39\\t0.178\\t153\\n127247\\t2.978\\t0.075\\t57\\n127248\\t2.775\\t0.184\\t61\\n127494\\t2.47\\t0.44\\t42\\n127495\\t2.406\\t0.044\\t2\\n131109\\t3.618\\t0.424\\t54\\n131110\\t3.321\\t0.053\\t36\\n131111\\t2.973\\t0.025\\t4\\n131112\\t3.771\\t0.94\\t5\\n131113\\t3.619\\t0.341\\t9\\n131114\\t3.143\\t0.38\\t30\\n131116\\t2.916\\t0.159\\t157\\n131117\\t2.917\\t0.159\\t121\\n131118\\t3.04\\t0.268\\t107\\n131119\\t2.922\\t0.222\\t15\\n131120\\t3.307\\t0.038\\t4\\n131122\\t3.411\\t0.477\\t35\\n131123\\t3.351\\t-1.0\\t1\\n131127\\t3.814\\t0.114\\t37\\n131128\\t3.49\\t0.107\\t29\\n131130\\t2.988\\t0.0\\t6\\n131137\\t2.864\\t-1.0\\t1\\n131138\\t3.615\\t0.013\\t2\\n131144\\t3.909\\t0.169\\t5\\n131146\\t3.079\\t0.227\\t59\\n131147\\t2.946\\t0.309\\t17\\n131148\\t2.938\\t0.152\\t48\\n131149\\t2.889\\t0.075\\t105\\n131150\\t2.932\\t0.142\\t86\\n131151\\t2.965\\t0.315\\t19\\n131154\\t4.158\\t0.0\\t3\\n131155\\t3.469\\t0.0\\t2\\n135208\\t3.392\\t0.193\\t9\\n135209\\t2.553\\t0.506\\t113\\n135210\\t2.846\\t0.341\\t42\\n135212\\t2.866\\t0.212\\t135\\n135213\\t2.927\\t0.123\\t16\\n135214\\t2.871\\t0.163\\t78\\n135215\\t2.95\\t0.206\\t41\\n135216\\t2.799\\t0.488\\t10\\n135217\\t2.858\\t0.374\\t47\\n135218\\t3.171\\t0.414\\t88\\n135219\\t3.525\\t0.292\\t6\\n135226\\t2.999\\t0.0\\t6\\n135230\\t3.926\\t0.069\\t11\\n135234\\t3.555\\t0.069\\t7\\n135237\\t4.014\\t0.007\\t2\\n135240\\t2.589\\t0.032\\t8\\n135241\\t2.464\\t0.036\\t10\\n135242\\t2.986\\t0.141\\t77\\n135243\\t2.924\\t-1.0\\t1\\n135244\\t2.773\\t0.037\\t5\\n135245\\t3.046\\t0.0\\t2\\n135246\\t2.825\\t0.185\\t175\\n135247\\t2.784\\t0.162\\t65\\n135248\\t3.475\\t0.422\\t13\\n135249\\t3.243\\t0.492\\t4\\n135250\\t3.627\\t0.385\\t15\\n135251\\t3.822\\t0.36\\t16\\n135258\\t3.001\\t0.0\\t2\\n135260\\t3.608\\t0.228\\t9\\n135430\\t2.312\\t0.051\\t4\\n139303\\t3.535\\t0.292\\t31\\n139304\\t3.38\\t0.183\\t24\\n139305\\t2.623\\t0.529\\t104\\n139306\\t3.083\\t0.33\\t321\\n139308\\t2.96\\t0.162\\t229\\n139309\\t2.923\\t0.274\\t63\\n139310\\t2.882\\t0.149\\t259\\n139311\\t3.27\\t0.202\\t438\\n139312\\t2.668\\t0.417\\t260\\n139313\\t3.241\\t0.429\\t63\\n139314\\t3.163\\t0.399\\t546\\n139315\\t3.191\\t0.461\\t290\\n139321\\t3.855\\t0.226\\t50\\n139322\\t3.709\\t0.138\\t100\\n139323\\t3.684\\t0.123\\t46\\n139324\\t3.633\\t0.072\\t70\\n139326\\t3.545\\t0.123\\t112\\n139327\\t3.991\\t0.038\\t4\\n139328\\t3.786\\t0.526\\t8\\n139329\\t3.979\\t0.001\\t4\\n139330\\t3.537\\t0.014\\t6\\n139331\\t3.355\\t0.108\\t12\\n139332\\t3.159\\t0.173\\t21\\n139333\\t3.624\\t0.136\\t27\\n139334\\t3.334\\t0.167\\t126\\n139336\\t3.239\\t0.487\\t10\\n139337\\t2.614\\t0.35\\t62\\n139338\\t3.123\\t0.251\\t218\\n139339\\t3.229\\t0.309\\t1334\\n139340\\t3.562\\t0.717\\t14\\n139341\\t2.945\\t0.19\\t49\\n139342\\t2.914\\t0.165\\t139\\n139343\\t2.866\\t0.183\\t165\\n139344\\t3.14\\t0.274\\t105\\n139345\\t3.078\\t0.295\\t50\\n139346\\t3.558\\t0.371\\t43\\n139347\\t3.512\\t0.445\\t86\\n139354\\t3.623\\t0.348\\t57\\n139356\\t3.581\\t0.414\\t207\\n139357\\t3.553\\t0.26\\t12\\n139358\\t3.738\\t0.14\\t26\\n139526\\t2.278\\t0.056\\t6\\n143399\\t2.881\\t0.269\\t29\\n143400\\t3.289\\t0.207\\t165\\n143401\\t2.903\\t0.415\\t136\\n143402\\t2.928\\t0.263\\t822\\n143404\\t2.981\\t0.274\\t225\\n143405\\t3.002\\t0.373\\t123\\n143406\\t2.929\\t0.211\\t1350\\n143407\\t3.15\\t0.245\\t392\\n143408\\t3.115\\t0.214\\t390\\n143409\\t2.892\\t0.454\\t277\\n143410\\t3.152\\t0.327\\t288\\n143411\\t3.118\\t0.344\\t421\\n143417\\t3.489\\t0.306\\t26\\n143418\\t3.66\\t0.441\\t102\\n143419\\t2.889\\t0.02\\t3\\n143420\\t3.311\\t0.239\\t14\\n143422\\t3.519\\t0.117\\t10\\n143423\\t3.405\\t0.182\\t14\\n143424\\t3.622\\t0.201\\t10\\n143425\\t2.902\\t0.279\\t14\\n143426\\t3.441\\t0.397\\t31\\n143427\\t2.869\\t0.248\\t16\\n143428\\t2.769\\t0.111\\t12\\n143430\\t3.342\\t0.101\\t8\\n143433\\t3.029\\t0.413\\t218\\n143434\\t2.63\\t0.358\\t237\\n143435\\t2.974\\t0.223\\t787\\n143436\\t2.871\\t0.256\\t91\\n143437\\t3.02\\t0.255\\t120\\n143438\\t2.97\\t0.262\\t730\\n143439\\t2.839\\t0.219\\t570\\n143440\\t2.939\\t0.303\\t600\\n143441\\t2.709\\t0.226\\t130\\n143442\\t3.393\\t0.358\\t470\\n143443\\t3.237\\t0.326\\t869\\n143450\\t3.569\\t0.067\\t21\\n143452\\t3.3\\t0.463\\t144\\n143453\\t2.771\\t0.0\\t6\\n143454\\t3.655\\t0.021\\t3\\n143455\\t2.882\\t0.023\\t3\\n151589\\t4.027\\t0.433\\t171\\n151590\\t3.818\\t0.355\\t2\\n151594\\t3.871\\t0.0\\t2\\n151598\\t3.586\\t0.162\\t20\\n151599\\t3.353\\t0.049\\t2\\n151601\\t3.937\\t0.0\\t2\\n151602\\t3.839\\t0.296\\t15\\n151603\\t3.859\\t0.378\\t36\\n151607\\t4.188\\t0.029\\t2\\n151631\\t3.626\\t0.064\\t26\\n151633\\t3.814\\t0.025\\t4\\n151634\\t3.849\\t0.071\\t10\\n151635\\t4.057\\t0.0\\t2\\n151814\\t3.815\\t0.247\\t64\\n152069\\t3.392\\t0.0\\t2\\n152070\\t3.728\\t0.185\\t7\\n155686\\t3.715\\t0.263\\t197\\n155692\\t3.291\\t0.0\\t2\\n155693\\t3.275\\t0.0\\t2\\n155695\\t3.371\\t-1.0\\t1\\n155696\\t3.544\\t0.083\\t4\\n155697\\t3.415\\t0.077\\t36\\n155698\\t3.446\\t0.074\\t26\\n155699\\t3.346\\t0.137\\t70\\n155703\\t4.039\\t0.114\\t2\\n155704\\t3.785\\t-1.0\\t1\\n155725\\t3.3\\t0.0\\t4\\n155726\\t3.174\\t0.064\\t8\\n155727\\t3.236\\t0.051\\t4\\n155728\\t3.411\\t0.02\\t2\\n155729\\t3.492\\t0.006\\t3\\n155730\\t3.53\\t0.066\\t10\\n155731\\t3.424\\t0.132\\t88\\n155740\\t3.534\\t-1.0\\t1\\n155910\\t3.584\\t0.272\\t112\\n156166\\t2.793\\t0.019\\t4\\n159783\\t4.713\\t0.009\\t2\\n159790\\t3.627\\t0.388\\t4\\n159795\\t3.832\\t0.039\\t12\\n159797\\t3.719\\t0.347\\t56\\n159799\\t4.168\\t0.0\\t2\\n159822\\t3.558\\t0.003\\t2\\n160005\\t3.476\\t0.074\\t35\\n160006\\t3.258\\t0.191\\t4054\\n160007\\t2.913\\t0.142\\t1412\\n160008\\t2.796\\t0.249\\t708\\n160015\\t3.636\\t0.026\\t3\\n160016\\t3.367\\t0.408\\t27\\n160262\\t2.99\\t0.127\\t72\\n160263\\t3.031\\t0.264\\t24\\n163884\\t3.712\\t0.084\\t3\\n163885\\t3.713\\t0.26\\t5\\n163889\\t3.399\\t0.0\\t2\\n163890\\t3.989\\t0.377\\t5\\n163892\\t3.476\\t0.0\\t2\\n163893\\t3.302\\t0.424\\t87\\n163917\\t3.364\\t0.045\\t5\\n163918\\t3.314\\t0.355\\t6\\n163922\\t4.034\\t-1.0\\t1\\n164101\\t3.255\\t0.125\\t9\\n164102\\t3.029\\t0.219\\t13290\\n164103\\t2.812\\t0.186\\t1007\\n164104\\t2.599\\t0.231\\t718\\n164111\\t3.355\\t0.275\\t19\\n164112\\t3.184\\t0.119\\t22\\n164358\\t2.805\\t0.151\\t103\\n164359\\t2.642\\t0.21\\t22\\n164360\\t2.844\\t0.216\\t9\\n167977\\t2.746\\t0.433\\t12\\n167986\\t3.166\\t-1.0\\t1\\n167988\\t3.668\\t0.819\\t15\\n167989\\t2.936\\t0.216\\t20\\n168198\\t2.975\\t0.237\\t953\\n168199\\t2.749\\t0.24\\t450\\n168200\\t2.532\\t0.296\\t44\\n168207\\t3.165\\t0.13\\t49\\n168208\\t3.318\\t0.08\\t14\\n168454\\t2.601\\t0.169\\t111\\n168455\\t2.727\\t0.161\\t25\\n172074\\t2.912\\t0.373\\t1298\\n172076\\t3.157\\t0.34\\t9\\n172078\\t3.301\\t0.025\\t5\\n172079\\t3.222\\t0.067\\t8\\n172082\\t3.28\\t0.259\\t30\\n172083\\t3.177\\t0.165\\t15\\n172084\\t3.327\\t0.193\\t23\\n172085\\t3.272\\t0.292\\t557\\n172087\\t3.799\\t-1.0\\t1\\n172088\\t3.528\\t-1.0\\t1\\n172106\\t2.727\\t0.462\\t6\\n172107\\t3.735\\t-1.0\\t1\\n172109\\t3.252\\t0.082\\t43\\n172110\\t3.239\\t0.183\\t9\\n172111\\t3.197\\t0.132\\t22\\n172112\\t3.584\\t0.076\\t4\\n172114\\t3.693\\t0.232\\t12\\n172115\\t3.359\\t0.28\\t40\\n172124\\t3.744\\t0.013\\t2\\n172293\\t3.03\\t0.256\\t14\\n172294\\t2.789\\t0.167\\t9278\\n172295\\t2.577\\t0.18\\t3098\\n172296\\t2.467\\t0.259\\t1296\\n172303\\t2.908\\t0.239\\t150\\n172304\\t2.957\\t0.217\\t165\\n172550\\t2.341\\t0.159\\t4663\\n172551\\t2.511\\t0.149\\t218\\n172559\\t2.202\\t0.279\\t10\\n180268\\t3.063\\t0.299\\t1102\\n180269\\t2.945\\t0.515\\t10\\n180270\\t3.082\\t0.36\\t14\\n180271\\t3.086\\t-1.0\\t1\\n180272\\t3.242\\t0.131\\t2\\n180273\\t3.439\\t0.268\\t6\\n180274\\t3.072\\t0.196\\t129\\n180275\\t3.213\\t0.211\\t24\\n180276\\t3.091\\t0.153\\t98\\n180277\\t3.22\\t0.208\\t173\\n180295\\t3.709\\t0.109\\t4\\n180296\\t3.674\\t0.024\\t2\\n180298\\t3.338\\t0.368\\t8\\n180299\\t3.08\\t0.02\\t2\\n180300\\t3.051\\t0.136\\t6\\n180301\\t3.2\\t0.237\\t31\\n180302\\t3.182\\t0.186\\t59\\n180303\\t2.975\\t0.164\\t24\\n180304\\t3.255\\t-1.0\\t1\\n180306\\t2.931\\t0.041\\t12\\n180307\\t2.734\\t0.077\\t20\\n180485\\t2.755\\t0.204\\t14\\n180486\\t2.611\\t0.146\\t28221\\n180487\\t2.363\\t0.139\\t11820\\n180488\\t2.408\\t0.153\\t1326\\n180495\\t2.75\\t0.202\\t77\\n180496\\t2.828\\t0.175\\t621\\n180742\\t2.163\\t0.16\\t10524\\n180743\\t2.394\\t0.13\\t880\\n180744\\t2.447\\t0.224\\t6\\n180751\\t2.688\\t0.012\\t5\\n180752\\t2.464\\t0.284\\t5\\n184365\\t2.871\\t0.285\\t392\\n184366\\t3.302\\t0.52\\t4\\n184367\\t2.634\\t0.029\\t2\\n184368\\t2.701\\t-1.0\\t1\\n184369\\t3.216\\t0.427\\t13\\n184370\\t3.333\\t0.264\\t124\\n184371\\t3.063\\t0.086\\t29\\n184372\\t3.343\\t0.188\\t5\\n184373\\t3.193\\t0.194\\t327\\n184396\\t2.794\\t0.148\\t26\\n184397\\t2.962\\t0.816\\t2\\n184398\\t2.985\\t0.39\\t19\\n184399\\t3.255\\t0.176\\t61\\n184400\\t3.215\\t0.059\\t6\\n184402\\t3.402\\t0.003\\t2\\n184403\\t3.348\\t0.247\\t21\\n184412\\t3.283\\t0.005\\t3\\n184581\\t2.634\\t0.295\\t6\\n184582\\t2.568\\t0.171\\t12855\\n184583\\t2.441\\t0.153\\t3081\\n184584\\t2.416\\t0.166\\t1225\\n184591\\t2.739\\t0.094\\t61\\n184592\\t2.805\\t0.202\\t148\\n184837\\t2.886\\t-1.0\\t1\\n184838\\t2.196\\t0.199\\t2670\\n184839\\t2.45\\t0.148\\t279\\n184848\\t2.287\\t0.009\\t6\\n188462\\t3.197\\t0.284\\t549\\n188463\\t3.567\\t0.174\\t71\\n188465\\t3.129\\t0.275\\t2\\n188466\\t3.378\\t0.343\\t81\\n188467\\t3.278\\t0.49\\t122\\n188468\\t3.121\\t0.318\\t140\\n188469\\t3.118\\t0.179\\t936\\n188472\\t3.155\\t0.189\\t11\\n188486\\t2.788\\t-1.0\\t1\\n188487\\t3.697\\t0.043\\t2\\n188490\\t3.361\\t-1.0\\t1\\n188491\\t3.319\\t0.01\\t2\\n188492\\t3.071\\t0.101\\t16\\n188494\\t3.253\\t0.286\\t17\\n188495\\t3.308\\t0.347\\t126\\n188496\\t3.082\\t0.313\\t5\\n188497\\t3.342\\t0.379\\t39\\n188498\\t3.685\\t0.035\\t11\\n188499\\t2.981\\t0.028\\t91\\n188508\\t3.265\\t0.257\\t3\\n188677\\t2.545\\t0.218\\t11\\n188678\\t2.381\\t0.169\\t6266\\n188679\\t2.365\\t0.135\\t7580\\n188680\\t2.446\\t0.147\\t1073\\n188687\\t2.778\\t0.159\\t82\\n188688\\t2.732\\t0.177\\t615\\n188934\\t2.405\\t0.21\\t1341\\n188935\\t2.38\\t0.131\\t281\\n188936\\t2.152\\t0.004\\t2\\n188944\\t2.657\\t0.082\\t9\\n192559\\t3.554\\t0.226\\t4083\\n192561\\t2.716\\t-1.0\\t1\\n192562\\t3.443\\t0.292\\t14\\n192563\\t3.163\\t0.241\\t12\\n192564\\t3.698\\t0.229\\t62\\n192565\\t3.522\\t0.275\\t796\\n192572\\t3.827\\t0.068\\t3\\n192587\\t3.3\\t0.096\\t6\\n192588\\t3.119\\t0.06\\t30\\n192589\\t3.417\\t0.237\\t27\\n192590\\t3.436\\t0.273\\t279\\n192591\\t3.326\\t0.24\\t399\\n192592\\t2.823\\t0.436\\t7\\n192774\\t2.472\\t0.2\\t1611\\n192775\\t2.535\\t0.173\\t5301\\n192776\\t2.731\\t0.17\\t305\\n192783\\t2.898\\t0.163\\t18\\n192784\\t3.194\\t0.23\\t847\\n193030\\t2.719\\t0.257\\t1011\\n193031\\t2.571\\t0.187\\t351\\n196656\\t2.962\\t0.143\\t4\\n196659\\t2.984\\t0.064\\t32\\n196660\\t3.488\\t0.2\\t53\\n196661\\t3.212\\t0.24\\t422\\n196664\\t3.568\\t0.009\\t4\\n196686\\t3.302\\t0.12\\t162\\n196687\\t3.375\\t0.136\\t15\\n196690\\t3.639\\t0.028\\t8\\n196691\\t3.016\\t0.052\\t32\\n196870\\t2.546\\t0.218\\t32\\n196871\\t2.669\\t0.125\\t3379\\n196872\\t2.711\\t0.152\\t719\\n196880\\t3.123\\t0.225\\t349\\n197126\\t2.828\\t0.381\\t77\\n197127\\t2.606\\t0.119\\t56\\n197128\\t2.751\\t-1.0\\t1\\n200753\\t2.968\\t0.291\\t109\\n200754\\t3.781\\t0.18\\t17\\n200755\\t2.926\\t0.006\\t4\\n200756\\t3.55\\t0.394\\t50\\n200757\\t3.215\\t0.314\\t179\\n200759\\t3.813\\t0.152\\t8\\n200760\\t3.68\\t0.079\\t15\\n200778\\t3.2\\t0.021\\t2\\n200779\\t2.798\\t0.024\\t24\\n200781\\t2.816\\t0.38\\t2\\n200782\\t3.146\\t0.138\\t51\\n200783\\t3.783\\t-1.0\\t1\\n200784\\t3.608\\t0.06\\t2\\n200787\\t3.701\\t0.063\\t13\\n200966\\t2.737\\t0.248\\t164\\n200967\\t2.638\\t0.193\\t666\\n200968\\t2.735\\t0.196\\t128\\n200975\\t3.61\\t0.145\\t5\\n200976\\t2.787\\t0.336\\t60\\n201222\\t2.754\\t0.18\\t12\\n201223\\t2.897\\t0.149\\t12\\n204850\\t3.629\\t0.476\\t976\\n204851\\t2.793\\t0.054\\t34\\n204852\\t3.367\\t0.645\\t98\\n204853\\t3.325\\t0.463\\t310\\n204855\\t3.996\\t0.344\\t33\\n204856\\t3.682\\t0.08\\t11\\n204857\\t3.947\\t0.023\\t6\\n204858\\t3.186\\t0.0\\t6\\n204863\\t3.44\\t0.0\\t11\\n204866\\t3.929\\t-1.0\\t1\\n204870\\t3.525\\t0.118\\t8\\n204872\\t4.135\\t0.14\\t3\\n204874\\t3.301\\t0.205\\t57\\n204875\\t3.121\\t0.234\\t55\\n204876\\t3.203\\t0.168\\t70\\n204877\\t3.061\\t0.08\\t42\\n204878\\t3.284\\t0.173\\t281\\n204879\\t4.309\\t0.589\\t23\\n204881\\t3.669\\t0.346\\t5\\n204882\\t3.46\\t0.055\\t10\\n204883\\t3.636\\t0.704\\t18\\n204892\\t4.537\\t-1.0\\t1\\n205061\\t2.753\\t0.308\\t17\\n205062\\t2.528\\t0.15\\t3869\\n205063\\t2.708\\t0.199\\t1070\\n205064\\t2.716\\t0.2\\t545\\n205071\\t3.421\\t0.246\\t38\\n205072\\t3.123\\t0.212\\t212\\n205318\\t2.574\\t0.174\\t88\\n205319\\t2.626\\t0.158\\t25\\n208947\\t2.969\\t0.506\\t259\\n208948\\t3.77\\t0.671\\t12\\n208949\\t3.392\\t0.45\\t229\\n208951\\t3.952\\t0.118\\t44\\n208952\\t3.545\\t0.115\\t138\\n208953\\t3.197\\t0.0\\t6\\n208954\\t3.176\\t0.0\\t6\\n208962\\t3.825\\t0.039\\t12\\n208968\\t3.44\\t-1.0\\t1\\n208970\\t3.273\\t0.166\\t30\\n208971\\t3.245\\t0.214\\t83\\n208972\\t2.968\\t0.115\\t113\\n208973\\t3.43\\t0.067\\t4\\n208974\\t3.1\\t0.205\\t80\\n208975\\t3.122\\t0.204\\t60\\n208976\\t3.551\\t0.081\\t6\\n208977\\t4.668\\t0.032\\t6\\n208978\\t4.088\\t0.033\\t12\\n208979\\t2.917\\t0.271\\t11\\n209158\\t2.495\\t0.15\\t1844\\n209159\\t2.721\\t0.28\\t225\\n209160\\t2.668\\t0.436\\t78\\n209167\\t3.017\\t0.046\\t5\\n209168\\t3.149\\t0.165\\t38\\n209414\\t2.509\\t0.24\\t10\\n209415\\t2.427\\t0.146\\t6\\n213050\\t4.433\\t0.045\\t6\\n213054\\t4.024\\t0.099\\t10\\n213065\\t5.027\\t-1.0\\t1\\n213066\\t2.704\\t0.455\\t23\\n213067\\t3.276\\t0.286\\t165\\n213068\\t3.025\\t0.034\\t20\\n213070\\t3.155\\t0.284\\t48\\n213071\\t3.03\\t0.209\\t38\\n213072\\t3.343\\t0.249\\t92\\n213073\\t4.446\\t0.01\\t2\\n213074\\t4.01\\t0.314\\t16\\n213075\\t3.489\\t0.653\\t32\\n213084\\t3.85\\t0.333\\t22\\n213086\\t4.355\\t0.043\\t6\\n217145\\t3.893\\t0.312\\t115\\n217146\\t4.057\\t0.272\\t72\\n217147\\t3.309\\t0.409\\t38\\n217148\\t3.875\\t0.23\\t104\\n217150\\t3.913\\t0.338\\t122\\n217151\\t4.078\\t0.166\\t14\\n217152\\t3.772\\t0.324\\t18\\n217153\\t3.606\\t0.456\\t25\\n217154\\t3.192\\t0.524\\t27\\n217156\\t3.103\\t0.413\\t22\\n217157\\t3.863\\t0.489\\t46\\n217158\\t3.761\\t0.157\\t82\\n217159\\t3.66\\t0.413\\t6\\n217160\\t3.35\\t0.322\\t22\\n217161\\t2.816\\t0.4\\t52\\n217162\\t2.801\\t0.247\\t341\\n217163\\t2.814\\t0.353\\t94\\n217164\\t2.999\\t0.191\\t26\\n217165\\t3.222\\t0.232\\t233\\n217166\\t3.234\\t0.277\\t811\\n217167\\t3.066\\t0.296\\t281\\n217168\\t3.131\\t0.252\\t665\\n217169\\t2.89\\t0.413\\t19\\n217170\\t3.801\\t0.427\\t565\\n217171\\t3.582\\t0.409\\t827\\n217178\\t3.927\\t0.242\\t20\\n217180\\t3.819\\t0.264\\t406\\n217182\\t3.899\\t0.189\\t7\\n217183\\t3.278\\t-1.0\\t1\\n225335\\t4.276\\t0.49\\t265\\n225336\\t4.479\\t0.154\\t3\\n225338\\t4.3\\t0.0\\t2\\n225345\\t4.243\\t-1.0\\t1\\n225346\\t4.182\\t-1.0\\t1\\n225354\\t3.789\\t-1.0\\t1\\n225359\\t3.687\\t0.153\\t5\\n225360\\t4.965\\t0.0\\t3\\n225361\\t4.086\\t0.077\\t5\\n225362\\t3.938\\t0.124\\t17\\n225363\\t4.209\\t0.153\\t5\\n225542\\t4.026\\t0.331\\t148\\n225797\\t3.377\\t0.162\\t3\\n225798\\t3.864\\t0.248\\t33\\n229432\\t4.077\\t0.334\\t194\\n229450\\t3.552\\t0.0\\t2\\n229455\\t3.61\\t0.0\\t2\\n229458\\t3.779\\t0.076\\t5\\n229459\\t3.62\\t0.105\\t15\\n229638\\t3.726\\t0.142\\t169\\n229893\\t2.88\\t0.148\\t17\\n233547\\t3.663\\t0.041\\t4\\n233733\\t3.661\\t0.127\\t9\\n233734\\t3.511\\t0.169\\t1320\\n233735\\t3.103\\t0.143\\t699\\n233736\\t2.952\\t0.191\\t544\\n233743\\t4.137\\t0.779\\t6\\n233744\\t3.541\\t0.191\\t21\\n233990\\t3.356\\t0.17\\t18\\n233991\\t3.128\\t0.157\\t55\\n237830\\t3.517\\t0.262\\t866\\n237831\\t3.053\\t0.238\\t780\\n237832\\t2.942\\t0.272\\t364\\n237839\\t3.058\\t0.078\\t3\\n237840\\t3.557\\t0.208\\t14\\n238086\\t3.309\\t0.197\\t15\\n238087\\t3.084\\t0.184\\t40\\n241926\\t3.477\\t0.124\\t197\\n241927\\t3.016\\t0.163\\t300\\n241928\\t2.871\\t0.151\\t320\\n241936\\t3.545\\t0.074\\t6\\n242182\\t3.213\\t0.142\\t3\\n242183\\t3.034\\t0.049\\t17\\n246021\\t3.749\\t-1.0\\t1\\n246022\\t3.442\\t0.199\\t803\\n246023\\t3.027\\t0.153\\t733\\n246024\\t2.83\\t0.16\\t737\\n246031\\t3.715\\t0.509\\t10\\n246032\\t3.489\\t0.117\\t10\\n246278\\t3.07\\t0.175\\t7\\n246279\\t3.018\\t0.113\\t65\\n254014\\t3.621\\t0.145\\t11\\n254027\\t3.568\\t0.017\\t3\\n254214\\t3.39\\t0.158\\t2671\\n254215\\t2.996\\t0.161\\t998\\n254216\\t2.805\\t0.192\\t556\\n254223\\t3.737\\t0.252\\t40\\n254224\\t3.439\\t0.148\\t13\\n254470\\t3.227\\t0.142\\t6\\n254471\\t3.139\\t0.173\\t24\\n254472\\t2.911\\t0.206\\t20\\n258111\\t2.215\\t0.23\\t2\\n258310\\t3.466\\t0.262\\t271\\n258311\\t2.927\\t0.187\\t1239\\n258312\\t2.76\\t0.166\\t1083\\n258320\\t3.383\\t0.05\\t12\\n258566\\t3.457\\t0.042\\t4\\n258567\\t2.819\\t0.112\\t11\\n262406\\t3.329\\t0.213\\t453\\n262407\\t2.926\\t0.184\\t889\\n262408\\t2.796\\t0.186\\t1231\\n262416\\t3.355\\t0.381\\t10\\n262662\\t2.919\\t0.044\\t2\\n262663\\t2.999\\t0.226\\t11\\n266502\\t3.401\\t0.179\\t388\\n266503\\t2.89\\t0.17\\t992\\n266504\\t2.734\\t0.193\\t1159\\n266511\\t3.732\\t-1.0\\t1\\n266512\\t3.445\\t0.0\\t2\\n266758\\t2.926\\t-1.0\\t1\\n266759\\t2.857\\t0.231\\t31\\n270597\\t3.404\\t0.076\\t3\\n270598\\t3.222\\t0.253\\t1595\\n270599\\t2.866\\t0.193\\t2042\\n270600\\t2.707\\t0.189\\t2073\\n270607\\t3.718\\t-1.0\\t1\\n270608\\t3.41\\t0.38\\t13\\n270854\\t2.9\\t-1.0\\t1\\n270855\\t2.794\\t0.192\\t30\\n274510\\t4.001\\t0.0\\t2\\n274694\\t3.388\\t0.171\\t354\\n274695\\t2.87\\t0.172\\t416\\n274696\\t2.724\\t0.185\\t439\\n274950\\t2.925\\t0.039\\t8\\n274951\\t2.479\\t0.253\\t12\\n278789\\t3.409\\t0.069\\t2\\n278790\\t3.158\\t0.169\\t1145\\n278791\\t2.849\\t0.175\\t801\\n278792\\t2.672\\t0.179\\t577\\n278799\\t3.625\\t-1.0\\t1\\n278800\\t3.474\\t0.092\\t7\\n279046\\t2.934\\t0.097\\t12\\n279047\\t2.89\\t0.09\\t12\\n282693\\t3.553\\t0.0\\t4\\n282886\\t3.443\\t0.178\\t536\\n282887\\t2.879\\t0.209\\t168\\n282888\\t2.725\\t0.147\\t129\\n282895\\t3.631\\t0.142\\t21\\n282896\\t3.222\\t0.01\\t8\\n283143\\t2.527\\t0.136\\t9\\n286981\\t3.507\\t0.084\\t5\\n286982\\t3.184\\t0.155\\t3390\\n286983\\t2.859\\t0.153\\t1245\\n286984\\t2.682\\t0.159\\t499\\n286991\\t3.54\\t0.155\\t13\\n286992\\t3.365\\t0.159\\t9\\n287238\\t3.019\\t0.138\\t24\\n287239\\t2.855\\t0.076\\t16\\n287240\\t2.979\\t0.21\\t26\\n290891\\t3.455\\t0.011\\t2\\n290894\\t3.514\\t-1.0\\t1\\n291077\\t3.476\\t0.16\\t11\\n291078\\t3.284\\t0.204\\t878\\n291079\\t2.84\\t0.187\\t460\\n291080\\t2.635\\t0.193\\t132\\n291088\\t3.528\\t0.062\\t2\\n291334\\t2.883\\t0.06\\t12\\n291335\\t2.948\\t0.137\\t14\\n294994\\t3.999\\t-1.0\\t1\\n295173\\t3.165\\t0.193\\t2\\n295174\\t3.107\\t0.177\\t2432\\n295175\\t2.774\\t0.182\\t341\\n295176\\t2.652\\t0.204\\t104\\n295184\\t3.109\\t0.166\\t9\\n295430\\t2.767\\t0.112\\t12\\n295431\\t2.657\\t0.278\\t12\\n299081\\t2.935\\t0.369\\t17\\n299085\\t3.119\\t0.214\\t10\\n299270\\t2.918\\t0.218\\t1400\\n299271\\t2.737\\t0.199\\t305\\n299272\\t2.492\\t0.248\\t40\\n299279\\t2.559\\t0.037\\t4\\n299526\\t2.488\\t0.241\\t28\\n299527\\t2.804\\t0.155\\t6\\n303178\\t2.675\\t0.417\\t434\\n303181\\t3.222\\t0.078\\t41\\n303182\\t3.654\\t-1.0\\t1\\n303183\\t3.21\\t0.023\\t4\\n303186\\t3.733\\t0.044\\t8\\n303187\\t3.128\\t0.192\\t8\\n303365\\t2.968\\t0.028\\t2\\n303366\\t2.8\\t0.213\\t3774\\n303367\\t2.584\\t0.227\\t2258\\n303368\\t2.49\\t0.297\\t312\\n303375\\t2.904\\t0.202\\t124\\n303376\\t3.053\\t0.272\\t32\\n303622\\t2.342\\t0.159\\t6180\\n303623\\t2.471\\t0.154\\t65\\n307275\\t3.127\\t0.383\\t1161\\n307276\\t3.076\\t0.401\\t28\\n307277\\t3.191\\t0.02\\t2\\n307278\\t3.567\\t0.117\\t38\\n307279\\t3.269\\t0.094\\t25\\n307280\\t3.228\\t0.038\\t20\\n307281\\t3.587\\t0.03\\t2\\n307283\\t3.205\\t0.081\\t30\\n307292\\t3.713\\t0.164\\t4\\n307462\\t2.629\\t0.197\\t1542\\n307463\\t2.457\\t0.127\\t3999\\n307464\\t2.435\\t0.206\\t207\\n307471\\t2.732\\t0.251\\t11\\n307472\\t2.825\\t0.122\\t121\\n307718\\t2.178\\t0.135\\t8471\\n307719\\t2.383\\t0.156\\t157\\n307720\\t2.299\\t0.121\\t3\\n307728\\t2.409\\t0.014\\t6\\n311372\\t3.106\\t0.207\\t804\\n311373\\t3.181\\t-1.0\\t1\\n311374\\t3.548\\t0.146\\t32\\n311375\\t3.12\\t0.036\\t62\\n311379\\t2.887\\t0.06\\t22\\n311558\\t2.597\\t0.187\\t2089\\n311559\\t2.357\\t0.157\\t1187\\n311560\\t2.486\\t0.163\\t95\\n311567\\t3.048\\t0.26\\t4\\n311568\\t3.082\\t0.291\\t44\\n311814\\t2.108\\t0.152\\t4572\\n311815\\t2.428\\t0.139\\t86\\n311824\\t2.543\\t0.001\\t4\\n315469\\t3.151\\t0.278\\t365\\n315470\\t3.549\\t0.122\\t63\\n315471\\t3.157\\t0.118\\t31\\n315475\\t3.22\\t0.061\\t39\\n315653\\t2.65\\t0.215\\t20\\n315654\\t2.552\\t0.195\\t16080\\n315655\\t2.382\\t0.126\\t6084\\n315656\\t2.483\\t0.127\\t418\\n315663\\t2.762\\t0.14\\t37\\n315664\\t2.816\\t0.196\\t162\\n315910\\t2.215\\t0.168\\t2203\\n315911\\t2.436\\t0.105\\t204\\n315920\\t2.977\\t-1.0\\t1\\n319566\\t3.225\\t0.248\\t552\\n319567\\t3.367\\t0.293\\t115\\n319568\\t3.169\\t0.205\\t20\\n319569\\t3.36\\t0.238\\t50\\n319570\\t3.392\\t0.286\\t42\\n319571\\t2.929\\t0.286\\t8\\n319580\\t2.758\\t-1.0\\t1\\n319749\\t2.528\\t0.434\\t19\\n319750\\t2.374\\t0.187\\t4743\\n319751\\t2.364\\t0.145\\t6282\\n319752\\t2.404\\t0.169\\t399\\n319759\\t2.743\\t0.15\\t63\\n319760\\t2.674\\t0.189\\t638\\n320005\\t2.585\\t0.095\\t3\\n320006\\t2.331\\t0.173\\t2612\\n320007\\t2.357\\t0.121\\t135\\n320015\\t2.781\\t0.006\\t2\\n320016\\t2.898\\t0.124\\t6\\n323663\\t3.245\\t0.336\\t4562\\n323664\\t3.526\\t0.142\\t2\\n323665\\t3.286\\t0.102\\t22\\n323666\\t3.306\\t0.022\\t2\\n323667\\t2.881\\t0.196\\t25\\n323846\\t2.35\\t0.15\\t3014\\n323847\\t2.354\\t0.137\\t1158\\n323848\\t2.403\\t0.253\\t6\\n323855\\t2.769\\t0.169\\t45\\n323856\\t2.739\\t0.213\\t222\\n324102\\t2.337\\t0.19\\t1691\\n324103\\t2.388\\t0.156\\t45\\n327760\\t2.694\\t0.474\\t53\\n327941\\t2.577\\t-1.0\\t1\\n327942\\t2.266\\t0.136\\t922\\n327943\\t2.741\\t0.157\\t953\\n327944\\t2.741\\t0.235\\t37\\n327951\\t2.904\\t0.093\\t8\\n327952\\t2.866\\t0.242\\t158\\n328198\\t2.38\\t0.168\\t94\\n328199\\t2.875\\t0.15\\t3\\n331857\\t3.111\\t0.21\\t60\\n332038\\t2.542\\t0.227\\t19\\n332039\\t2.984\\t0.13\\t175\\n332040\\t2.942\\t0.295\\t20\\n332048\\t3.399\\t0.21\\t18\\n332294\\t2.174\\t0.0\\t4\\n335954\\t3.231\\t0.429\\t436\\n336134\\t2.776\\t0.248\\t252\\n336135\\t2.833\\t0.135\\t693\\n336136\\t2.76\\t0.196\\t207\\n336143\\t3.678\\t0.123\\t15\\n336144\\t3.263\\t0.218\\t66\\n336390\\t2.874\\t0.122\\t4\\n336391\\t2.699\\t0.147\\t7\\n340051\\t3.126\\t0.27\\t404\\n340229\\t2.797\\t-1.0\\t1\\n340230\\t2.623\\t0.24\\t807\\n340231\\t2.807\\t0.169\\t491\\n340232\\t2.771\\t0.212\\t269\\n340239\\t3.206\\t0.012\\t2\\n340240\\t3.325\\t0.293\\t98\\n340486\\t2.701\\t0.167\\t16\\n340487\\t3.129\\t0.34\\t2\\n368902\\t3.528\\t0.229\\t2516\\n368903\\t3.077\\t0.237\\t337\\n368904\\t2.966\\t0.304\\t84\\n368911\\t3.616\\t0.121\\t7\\n368912\\t3.535\\t0.376\\t64\\n369158\\t3.14\\t0.113\\t14\\n369159\\t3.146\\t0.323\\t8\\n369160\\t3.179\\t0.006\\t2\\n376924\\t3.747\\t0.0\\t2\\n377094\\t3.44\\t0.227\\t3394\\n377095\\t2.982\\t0.201\\t1971\\n377096\\t2.826\\t0.242\\t770\\n377103\\t2.998\\t0.426\\t10\\n377104\\t3.462\\t0.179\\t110\\n377350\\t3.258\\t0.302\\t74\\n377351\\t3.02\\t0.219\\t96\\n377352\\t3.011\\t0.211\\t9\\n381190\\t3.595\\t0.186\\t49\\n381191\\t3.016\\t0.171\\t33\\n381192\\t3.071\\t0.23\\t47\\n381200\\t3.429\\t0.053\\t8\\n385286\\t3.676\\t0.046\\t15\\n385287\\t3.005\\t0.218\\t31\\n385288\\t3.065\\t0.263\\t47\\n385296\\t3.84\\t0.251\\t6\\n389383\\t3.107\\t0.032\\t5\\n389384\\t2.858\\t0.234\\t18\\n389392\\t3.517\\t0.038\\t3\\n393479\\t3.128\\t0.008\\t2\\n393488\\t3.419\\t0.064\\t3\\n397575\\t3.05\\t0.029\\t3\\n397576\\t2.942\\t0.008\\t3\\n401671\\t3.038\\t0.025\\t3\\n401672\\t2.931\\t0.016\\t3\\n1073414\\t1.594\\t0.077\\t2000853\\n1073415\\t1.527\\t0.071\\t91806\\n1073423\\t2.001\\t0.161\\t74\\n1073424\\t1.981\\t0.067\\t42\\n1073679\\t2.05\\t0.093\\t4\\n1073680\\t1.992\\t0.039\\t7\\n1077511\\t1.504\\t0.087\\t791\\n1077519\\t1.839\\t0.106\\t1862\\n1077520\\t1.811\\t0.097\\t38\\n1077776\\t1.753\\t0.11\\t23\\n1110287\\t2.325\\t0.221\\t8\\n16781317\\t1.299\\t0.138\\t2655\\n16781318\\t1.157\\t0.073\\t2154155\\n16781319\\t1.027\\t0.087\\t120477\\n16781320\\t1.0\\t0.102\\t99234\\n16781321\\t1.229\\t0.768\\t39\\n16781326\\t1.698\\t0.206\\t492\\n16781327\\t1.491\\t0.16\\t461\\n16781328\\t1.414\\t0.148\\t260\\n16781329\\t1.46\\t0.267\\t16\\n16781344\\t1.768\\t0.207\\t170\\n16781345\\t1.64\\t0.233\\t13\\n16781346\\t1.184\\t0.24\\t11\\n16781347\\t1.193\\t0.14\\t10\\n16781365\\t1.612\\t0.001\\t2\\n16781573\\t1.266\\t-1.0\\t1\\n16781574\\t1.083\\t0.054\\t1399983\\n16781575\\t1.026\\t0.08\\t10086\\n16781576\\t1.035\\t0.083\\t62\\n16781583\\t1.555\\t0.169\\t170\\n16781830\\t1.082\\t0.064\\t1503\\n16781831\\t1.012\\t0.075\\t9\\n16797701\\t2.055\\t0.175\\t200\\n16797702\\t1.917\\t0.136\\t1968\\n16797703\\t1.74\\t0.145\\t4307\\n16797704\\t1.627\\t0.111\\t7838\\n16797705\\t1.579\\t0.095\\t5410\\n16797710\\t2.643\\t0.184\\t32\\n16797711\\t2.367\\t0.191\\t736\\n16797712\\t2.279\\t0.266\\t207\\n16797713\\t2.22\\t0.188\\t513\\n16797728\\t2.564\\t0.128\\t21\\n16797729\\t2.481\\t0.101\\t5\\n16797730\\t2.577\\t0.148\\t48\\n16797731\\t2.401\\t0.231\\t244\\n16797748\\t2.725\\t0.14\\t4\\n16797749\\t2.87\\t0.374\\t77\\n16797958\\t1.838\\t0.106\\t11969\\n16797959\\t1.825\\t0.108\\t1915\\n16797967\\t2.268\\t0.255\\t20\\n16798214\\t1.868\\t0.127\\t268\\n16798215\\t1.772\\t0.141\\t42\\n16798224\\t2.259\\t-1.0\\t1\\n16801798\\t1.819\\t0.111\\t650683\\n16801799\\t1.721\\t0.104\\t153277\\n16801800\\t1.674\\t0.089\\t194202\\n16801801\\t1.483\\t0.083\\t37441\\n16801806\\t2.363\\t0.237\\t31159\\n16801807\\t2.243\\t0.189\\t5173\\n16801808\\t2.128\\t0.132\\t11654\\n16801809\\t2.024\\t0.124\\t15529\\n16801824\\t2.527\\t0.248\\t999\\n16801825\\t2.422\\t0.325\\t206\\n16801826\\t2.378\\t0.18\\t872\\n16801827\\t2.279\\t0.155\\t2704\\n16801844\\t2.666\\t0.308\\t172\\n16801845\\t2.522\\t0.166\\t717\\n16802054\\t1.762\\t0.092\\t352183\\n16802055\\t1.72\\t0.097\\t14388\\n16802056\\t1.688\\t0.108\\t6\\n16802063\\t2.207\\t0.172\\t3307\\n16802064\\t2.105\\t0.131\\t3350\\n16802310\\t1.696\\t0.091\\t7665\\n16802311\\t1.656\\t0.128\\t75\\n16802320\\t2.082\\t0.116\\t4919\\n16805895\\t1.623\\t0.108\\t3208\\n16805896\\t1.666\\t0.126\\t2100\\n16805897\\t1.415\\t0.162\\t17\\n16805902\\t2.205\\t0.191\\t1967\\n16805903\\t2.079\\t0.152\\t1682\\n16805904\\t1.93\\t0.103\\t249\\n16805905\\t1.958\\t0.111\\t24\\n16805920\\t2.362\\t0.195\\t1315\\n16805921\\t2.241\\t0.173\\t128\\n16805922\\t2.3\\t0.193\\t96\\n16805923\\t2.162\\t0.118\\t32\\n16805940\\t2.674\\t0.201\\t118\\n16805941\\t2.473\\t0.194\\t38\\n16806150\\t1.59\\t0.082\\t164495\\n16806151\\t1.574\\t0.081\\t7627\\n16806159\\t1.986\\t0.139\\t3197\\n16806160\\t2.009\\t0.09\\t401\\n16806406\\t1.512\\t0.069\\t153\\n16806407\\t1.394\\t0.086\\t533\\n16806416\\t1.9\\t0.093\\t9234\\n16809992\\t1.741\\t0.264\\t647\\n16809998\\t1.995\\t0.155\\t7813\\n16809999\\t1.925\\t0.144\\t1208\\n16810000\\t1.916\\t0.201\\t51\\n16810001\\t1.673\\t0.087\\t998\\n16810016\\t2.152\\t0.242\\t1021\\n16810017\\t1.796\\t0.244\\t670\\n16810018\\t2.006\\t0.2\\t174\\n16810019\\t1.965\\t0.381\\t4\\n16810036\\t2.404\\t0.302\\t460\\n16810037\\t2.386\\t0.22\\t205\\n16810246\\t1.562\\t0.08\\t163577\\n16810247\\t1.393\\t0.102\\t21110\\n16810255\\t1.861\\t0.129\\t9068\\n16810256\\t1.926\\t0.104\\t123\\n16810502\\t1.408\\t0.07\\t41\\n16810503\\t1.354\\t0.073\\t7\\n16810512\\t1.734\\t0.114\\t5958\\n16814089\\t1.446\\t0.064\\t5\\n16814094\\t1.979\\t0.162\\t679\\n16814095\\t1.82\\t0.095\\t9307\\n16814096\\t1.773\\t0.108\\t625\\n16814097\\t1.615\\t0.213\\t20\\n16814112\\t2.054\\t0.303\\t209\\n16814113\\t1.845\\t0.169\\t415\\n16814114\\t2.218\\t0.193\\t16\\n16814115\\t1.836\\t0.098\\t23\\n16814132\\t1.837\\t0.254\\t287\\n16814133\\t2.14\\t0.294\\t84\\n16814342\\t1.478\\t0.072\\t44091\\n16814343\\t1.246\\t0.169\\t3\\n16814351\\t1.618\\t0.194\\t150\\n16814352\\t1.613\\t0.103\\t16\\n16814608\\t1.556\\t0.127\\t44\\n16834574\\t3.378\\t0.364\\t2682\\n16834575\\t2.882\\t0.272\\t162\\n16834576\\t2.626\\t0.23\\t157\\n16834577\\t2.549\\t0.274\\t1011\\n16834592\\t3.473\\t0.286\\t507\\n16834593\\t3.314\\t0.371\\t24\\n16834594\\t2.897\\t0.327\\t42\\n16834595\\t2.87\\t0.389\\t169\\n16834612\\t3.665\\t0.536\\t15\\n16834613\\t3.09\\t0.417\\t78\\n16834822\\t2.235\\t0.149\\t6897\\n16834823\\t2.299\\t0.166\\t545\\n16835078\\t2.237\\t0.123\\t1405\\n16835079\\t2.102\\t0.162\\t46\\n16838671\\t2.751\\t0.246\\t664\\n16838672\\t2.368\\t0.224\\t165\\n16838673\\t2.447\\t0.27\\t425\\n16838688\\t3.18\\t0.313\\t89\\n16838689\\t2.773\\t0.119\\t26\\n16838690\\t2.582\\t0.333\\t127\\n16838691\\t2.563\\t0.288\\t58\\n16838708\\t3.027\\t0.178\\t12\\n16838709\\t2.915\\t0.394\\t101\\n16838918\\t2.115\\t0.115\\t8657\\n16838919\\t1.855\\t0.183\\t439\\n16838927\\t2.715\\t0.169\\t135\\n16838928\\t2.658\\t0.069\\t6\\n16839174\\t1.936\\t0.185\\t23\\n16839175\\t2.101\\t0.064\\t2\\n16839184\\t2.948\\t-1.0\\t1\\n16842768\\t2.281\\t0.201\\t1234\\n16842769\\t2.015\\t0.03\\t13\\n16842784\\t2.754\\t0.331\\t616\\n16842785\\t2.241\\t0.25\\t917\\n16842786\\t2.475\\t0.266\\t49\\n16842787\\t2.694\\t0.214\\t14\\n16842804\\t3.261\\t0.399\\t44\\n16842805\\t3.241\\t0.251\\t46\\n16843014\\t2.01\\t0.115\\t20813\\n16843015\\t1.834\\t0.133\\t156\\n16843023\\t2.464\\t0.209\\t339\\n16843024\\t2.494\\t0.161\\t19\\n16843270\\t1.935\\t0.13\\t225\\n16843280\\t2.489\\t0.19\\t50\\n16846865\\t1.992\\t0.399\\t44\\n16846880\\t2.745\\t0.286\\t511\\n16846881\\t2.728\\t0.235\\t235\\n16846882\\t2.384\\t0.337\\t109\\n16846900\\t3.03\\t0.369\\t277\\n16846901\\t2.906\\t0.468\\t87\\n16847110\\t1.969\\t0.095\\t20992\\n16847111\\t1.77\\t0.177\\t16\\n16847119\\t2.289\\t0.187\\t1133\\n16847120\\t2.181\\t0.113\\t8\\n16847366\\t1.923\\t0.203\\t4\\n16847376\\t2.231\\t0.165\\t28\\n16908320\\t3.119\\t0.561\\t1100\\n16908321\\t2.481\\t0.4\\t70\\n16908322\\t2.624\\t0.585\\t344\\n16908323\\t2.911\\t0.375\\t127\\n16908340\\t3.181\\t0.424\\t124\\n16908341\\t3.271\\t0.469\\t73\\n16908550\\t2.342\\t0.169\\t2233\\n16908551\\t2.432\\t0.175\\t414\\n16908552\\t2.284\\t0.062\\t14\\n16908559\\t3.148\\t0.384\\t31\\n16908806\\t2.273\\t0.193\\t233\\n16912417\\t2.568\\t0.286\\t226\\n16912418\\t2.384\\t0.277\\t52\\n16912419\\t2.383\\t0.526\\t37\\n16912436\\t2.868\\t0.102\\t3\\n16912437\\t3.175\\t0.376\\t43\\n16912646\\t2.247\\t0.155\\t563\\n16912647\\t2.196\\t0.137\\t13\\n16912655\\t2.8\\t0.063\\t13\\n16912902\\t1.902\\t0.429\\t4\\n16912903\\t2.164\\t0.088\\t7\\n16916514\\t2.705\\t0.288\\t257\\n16916515\\t2.826\\t0.329\\t129\\n16916532\\t3.054\\t0.385\\t17\\n16916533\\t3.596\\t0.24\\t25\\n16916742\\t2.215\\t0.127\\t1635\\n16916743\\t1.989\\t0.141\\t55\\n16916751\\t2.686\\t0.173\\t226\\n16916752\\t2.64\\t-1.0\\t1\\n16916998\\t2.197\\t0.154\\t196\\n16920611\\t3.015\\t0.264\\t187\\n16920628\\t3.279\\t0.255\\t239\\n16920629\\t3.195\\t0.403\\t63\\n16920838\\t2.164\\t0.108\\t13670\\n16920839\\t2.524\\t0.134\\t43\\n16920847\\t2.176\\t0.207\\t50\\n16920848\\t2.785\\t0.214\\t9\\n16921094\\t2.117\\t0.097\\t16\\n16990260\\t3.228\\t0.382\\t40\\n16990261\\t3.606\\t0.35\\t107\\n16990470\\t2.49\\t0.154\\t812\\n16990471\\t2.273\\t0.267\\t50\\n16990472\\t3.042\\t-1.0\\t1\\n16990479\\t3.31\\t0.124\\t16\\n16990726\\t2.535\\t0.253\\t17\\n16994357\\t3.54\\t0.331\\t863\\n16994566\\t2.373\\t0.134\\t5123\\n16994567\\t2.597\\t0.154\\t114\\n16994575\\t3.258\\t0.143\\t18\\n16994822\\t2.308\\t0.108\\t265\\n16994823\\t2.683\\t0.0\\t2\\n17846534\\t1.807\\t0.004\\t6\\n17850630\\t1.686\\t0.082\\t194786\\n17850631\\t1.634\\t0.082\\t26774\\n17850632\\t1.542\\t0.034\\t5\\n17850639\\t2.101\\t0.105\\t7379\\n17850640\\t2.077\\t0.073\\t1123\\n17850886\\t1.624\\t0.087\\t18128\\n17850887\\t1.587\\t0.111\\t90\\n17850896\\t2.041\\t0.093\\t13784\\n17854727\\t1.605\\t0.077\\t739\\n17854735\\t1.988\\t0.193\\t481\\n17854736\\t2.01\\t0.157\\t103\\n17854982\\t1.518\\t0.05\\t118\\n17854983\\t1.299\\t0.035\\t2\\n17854991\\t2.079\\t0.0\\t2\\n17854992\\t1.872\\t0.081\\t564\\n17858824\\t1.212\\t0.0\\t2\\n17887503\\t2.816\\t0.232\\t70\\n17887504\\t2.775\\t-1.0\\t1\\n17887750\\t2.038\\t0.159\\t42\\n17887760\\t2.72\\t0.033\\t2\\n17891600\\t2.75\\t0.187\\t12\\n17891856\\t2.984\\t-1.0\\t1\\n18899462\\t1.586\\t0.08\\t708\\n18899472\\t2.099\\t0.117\\t10\\n18940432\\t2.57\\t0.156\\t5\\n33611790\\t2.862\\t0.219\\t107\\n33611809\\t3.023\\t-1.0\\t1\\n33611810\\t1.697\\t0.952\\t3\\n33611828\\t3.382\\t-1.0\\t1\\n33612038\\t2.267\\t0.06\\t19\\n33612039\\t2.076\\t0.084\\t9\\n33612040\\t2.213\\t0.116\\t7\\n33612047\\t3.299\\t0.356\\t32\\n33612048\\t2.829\\t-1.0\\t1\\n33612294\\t2.498\\t0.086\\t4\\n33624117\\t2.68\\t0.0\\t2\\n33624326\\t2.051\\t0.166\\t7\\n33624328\\t1.644\\t0.085\\t2970\\n33685536\\t3.587\\t0.192\\t22\\n33685537\\t3.362\\t0.618\\t7\\n33685539\\t2.768\\t-1.0\\t1\\n33685766\\t2.418\\t0.096\\t23\\n33685767\\t2.3\\t-1.0\\t1\\n33685768\\t1.911\\t0.307\\t75\\n33685775\\t3.061\\t0.334\\t74\\n33685776\\t3.159\\t0.258\\t11\\n33686022\\t2.244\\t-1.0\\t1\\n33689633\\t2.268\\t0.368\\t3\\n33689634\\t3.2\\t0.0\\t2\\n33689653\\t3.142\\t0.113\\t4\\n33689862\\t1.874\\t0.13\\t10\\n33689863\\t1.999\\t-1.0\\t1\\n33689864\\t2.138\\t0.163\\t58\\n33689871\\t2.766\\t0.099\\t11\\n33689872\\t2.702\\t0.904\\t6\\n33693731\\t3.211\\t0.049\\t4\\n33693748\\t3.96\\t0.381\\t8\\n33693749\\t3.32\\t0.198\\t7\\n33693958\\t2.081\\t0.047\\t6\\n33693959\\t2.112\\t0.21\\t9\\n33693960\\t1.88\\t0.205\\t162\\n33693967\\t2.503\\t0.176\\t332\\n33697844\\t3.872\\t0.0\\t2\\n33698055\\t1.967\\t-1.0\\t1\\n33698056\\t1.612\\t0.028\\t8\\n33767476\\t2.657\\t-1.0\\t1\\n33767477\\t3.446\\t-1.0\\t1\\n33767686\\t2.131\\t0.005\\t3\\n33767687\\t2.1\\t-1.0\\t1\\n33767688\\t2.267\\t0.518\\t6\\n33767695\\t2.857\\t0.194\\t7\\n33767696\\t3.719\\t0.957\\t3\\n33771573\\t3.614\\t0.457\\t10\\n33771783\\t2.249\\t0.088\\t5\\n33771784\\t2.127\\t0.16\\t106\\n33771791\\t3.098\\t-1.0\\t1\\n33771792\\t3.166\\t0.428\\t3\\n34623750\\t1.78\\t0.012\\t7\\n34627846\\t1.55\\t0.083\\t65623\\n34627847\\t1.486\\t0.077\\t27424\\n34627848\\t1.404\\t0.071\\t156637\\n34627855\\t2.044\\t0.135\\t373\\n34627856\\t1.945\\t0.103\\t4751\\n34628102\\t1.526\\t0.109\\t716\\n34628112\\t1.965\\t0.141\\t8\\n34631943\\t1.436\\t0.08\\t1641\\n34631944\\t1.371\\t0.063\\t17326\\n34631951\\t1.879\\t0.175\\t1347\\n34631952\\t1.901\\t0.158\\t89\\n34632198\\t1.396\\t0.123\\t200\\n34632199\\t1.374\\t0.136\\t116\\n34632207\\t2.095\\t0.0\\t2\\n34632208\\t1.812\\t0.114\\t109\\n34636040\\t1.131\\t0.253\\t79\\n34636047\\t1.751\\t0.123\\t5003\\n34636048\\t1.76\\t0.092\\t2467\\n34636294\\t1.228\\t0.157\\t96\\n34636295\\t1.111\\t0.035\\t20\\n34636304\\t1.661\\t0.085\\t34493\\n34664719\\t2.605\\t0.159\\t86\\n34664720\\t2.299\\t0.162\\t912\\n34664966\\t1.951\\t0.174\\t35\\n34664967\\t1.804\\t0.217\\t28\\n34664975\\t2.749\\t0.0\\t2\\n34664976\\t2.399\\t-1.0\\t1\\n34668816\\t2.417\\t0.111\\t4\\n34669062\\t1.893\\t0.17\\t143\\n34669071\\t2.291\\t0.138\\t2\\n35676678\\t1.475\\t0.093\\t37\\n52453894\\t1.376\\t0.081\\t8518\\n52453895\\t1.293\\t0.068\\t14577\\n52453896\\t1.593\\t0.165\\t45\\n52453903\\t1.768\\t0.204\\t5\\n52457991\\t1.263\\t0.085\\t581\\n52458000\\t1.392\\t0.156\\t3\\n83914759\\t1.547\\t0.085\\t5\\n83915013\\t1.739\\t0.204\\t7\\n83915014\\t1.572\\t0.079\\t50584\\n83915015\\t1.539\\t0.074\\t8699\\n83915023\\t1.977\\t0.137\\t53\\n83919110\\t1.558\\t0.068\\t8984\\n83919111\\t1.575\\t0.101\\t961\\n83919119\\t2.014\\t0.019\\t9\\n83951650\\t2.389\\t0.04\\t4\\n83951878\\t1.973\\t0.109\\t22593\\n83951879\\t1.799\\t0.11\\t991\\n83951887\\t2.464\\t-1.0\\t1\\n83951888\\t2.672\\t0.158\\t11\\n84025378\\t2.575\\t0.005\\t2\\n84025606\\t2.151\\t0.135\\t549\\n84025607\\t2.077\\t0.132\\t184\\n84959494\\t1.626\\t0.085\\t32317\\n84959495\\t1.575\\t0.081\\t14689\\n84959503\\t2.111\\t0.074\\t20\\n84959504\\t2.015\\t0.127\\t36\\n84963591\\t1.557\\t0.073\\t2345\\n84963599\\t1.935\\t0.256\\t2\\n84963600\\t2.2\\t0.296\\t11\\n100802822\\t2.071\\t0.051\\t5\\n100802823\\t1.97\\t0.021\\t4\\n101732615\\t1.731\\t0.197\\t7\\n101736710\\t1.567\\t0.082\\t49304\\n101736711\\t1.502\\t0.079\\t23379\\n101736719\\t2.028\\t0.119\\t39\\n101736720\\t1.978\\t0.107\\t31\\n101740807\\t1.481\\t0.072\\t2974\\n101740815\\t1.989\\t0.139\\t38\\n101740816\\t1.737\\t0.078\\t11\\n101773584\\t2.915\\t0.094\\t4',rsb),h);d=b[0];c=Erb.V5(d,_ub,xsb);Lrb.Cv=tX(Drb.NY,Qsb,6,c,15,1);Lrb.Dv=tX(Drb.MY,Pub,6,c,15,1);Lrb.Ev=tX(Drb.MY,Pub,6,c,15,1);Lrb.Bv=tX(Drb.NY,Qsb,6,c,15,1);for(e=0;e<c;e++){g=b[e+1];f=Erb.v7(g,'\\t');if(f.length==4){try{Lrb.Cv[e]=Erb.V5(f[0],_ub,xsb);Lrb.Dv[e]=g6(f[1]);Lrb.Ev[e]=g6(f[2]);Lrb.Bv[e]=Erb.V5(f[3],_ub,xsb)}catch(a){a=g3(a);if(zY(a,39)){break}else throw h3(a)}}}Lrb.Gv=true}};\nLrb.Qv=function Qv(a){var b,c,d,e;Lrb.Gv||Lrb.Pv();e=Vtb;d=vtb;for(c=0;c<12;c++){b=e>=Lrb.Cv.length||a<Lrb.Cv[e]?-1:a==Lrb.Cv[e]?0:1;if(b==0)return e;e=b<0?e-d:e+d;d=d/2|0}return -1};Z3(322,1,{},Lrb.Jv);Lrb.Gv=false;Drb.PZ=B5(322);Lrb.Rv=function Rv(a,b){a.q=Lrb.Ow(new Lrb.Rw(a.o,b),a)};Lrb.Sv=function Sv(a,b){var c,d,e,f,g,h,i,j,k;c=Lrb.Yv(a,b[0]);d=Lrb.Yv(a,b[1]);e=Lrb.Yv(a,b[2]);f=Lrb.Yv(a,b[3]);i=new Jrb.Hh(d.a-c.a,d.b-c.b,d.c-c.c);j=new Jrb.Hh(e.a-d.a,e.b-d.b,e.c-d.c);k=new Jrb.Hh(f.a-e.a,f.b-e.b,f.c-e.c);g=new Jrb.Hh(i.b*j.c-i.c*j.b,-(i.a*j.c-i.c*j.a),i.a*j.b-i.b*j.a);h=new Jrb.Hh(j.b*k.c-j.c*k.b,-(j.a*k.c-j.c*k.a),j.a*k.b-j.b*k.a);return -$wnd.Math.atan2($wnd.Math.sqrt(j.a*j.a+j.b*j.b+j.c*j.c)*(i.a*h.a+i.b*h.b+i.c*h.c),g.a*h.a+g.b*h.b+g.c*h.c)};Lrb.Tv=function Tv(a,b){Lrb.Wv(a,b);return Lrb.Cw(a.q,b.q)};Lrb.Uv=function Uv(a,b){var c;for(c=0;c<b.q;c++)Jrb.Ch(a.k[c],b.J[c])};Lrb.Vv=function Vv(a,b){var c;for(c=0;c<b.k.length;c++)Jrb.Ch(a.k[c],b.k[c]);b.j==null?(a.j=null):(a.j=Krb.Deb(b.j,b.j.length))};Lrb.Wv=function Wv(a,b){var c;if(!a.q||!b.q){c=new Lrb.Qw(a.o);!a.q&&(a.q=Lrb.Ow(c,a));!b.q&&(b.q=Lrb.Ow(c,b))}};Lrb.Xv=function Xv(a,b){return a.j==null?-1:a.j[b]};Lrb.Yv=function Yv(a,b){return a.k[b]};Lrb.Zv=function Zv(a){return a.p==null?a.o.P:a.p};Lrb.$v=function $v(a,b){return a.k[b].a};Lrb._v=function _v(a,b){return a.k[b].b};Lrb.aw=function aw(a,b){return a.k[b].c};Lrb.bw=function bw(a,b,c){if(a.j==null){a.j=tX(Drb.b3,hub,6,a.o.r,15,1);Krb.Jeb(a.j)}while(c<0)c=c+360<<16>>16;while(c>=360)c=c-360<<16>>16;a.j[b]=c};Lrb.cw=function cw(a,b,c){Jrb.Ch(a.k[b],c)};Lrb.dw=function dw(a,b,c){a.k[b]=c};Lrb.ew=function ew(a,b){a.p=b};Lrb.fw=function fw(a,b,c){a.k[b].a=c};Lrb.gw=function gw(a,b,c){a.k[b].b=c};Lrb.hw=function hw(a,b,c){a.k[b].c=c};Lrb.iw=function iw(a,b){var c;!b&&(b=Jrb.su(a.o));for(c=0;c<b.q;c++)Jrb.Ch(b.J[c],a.k[c]);a.p!=null&&Jrb.Bm(b,a.p);return b};Lrb.jw=function jw(a){var b;this.o=a;this.k=tX(Drb.eZ,Fub,24,a.q,0,1);for(b=0;b<a.q;b++)this.k[b]=new Jrb.Ih(a.J[b]);this.n=NaN};Lrb.kw=function kw(a){Lrb.lw.call(this,a,a.o)};Lrb.lw=function lw(a,b){var c;this.o=b;this.k=tX(Drb.eZ,Fub,24,a.k.length,0,1);for(c=0;c<this.k.length;c++)this.k[c]=new Jrb.Ih(a.k[c]);a.j!=null&&(this.j=Krb.Deb(a.j,a.j.length));this.p=a.p==null||Erb.j7(a.p)?a.p:Erb.g7(a.p,Dsb);this.n=NaN};Z3(60,1,{60:1,28:1},Lrb.kw);_.rb=function mw(a){return Lrb.Tv(this,a)};_.n=0;Drb.QZ=B5(60);Lrb.ow=function ow(a,b){var c,d,e,f,g;if(b==null)return null;g=Krb.kdb(a.c,b);if(g)return g;d=Hrb.rnb('<').length;if(Erb.k7(Hrb.rnb(b).substr(Hrb.rnb(b).length-d,d),'<')||(e=Hrb.rnb('-').length,Erb.k7(Hrb.rnb(b).substr(Hrb.rnb(b).length-e,e),'-'))){g=Krb.kdb(a.c,(f=Hrb.rnb('<').length,Erb.k7(Hrb.rnb(b).substr(Hrb.rnb(b).length-f,f),'<')?Erb.x7(b,0,Hrb.rnb(b).length-1)+'>':(c=Hrb.rnb('-').length,Erb.k7(Hrb.rnb(b).substr(Hrb.rnb(b).length-c,c),'-')?Erb.x7(b,0,Hrb.rnb(b).length-1)+'+':b)));if(g){g=new Lrb.jx(g);Krb.pjb(a.c,b,g);return g}}return null};\nLrb.pw=function pw(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;a.b|=b;A=(m=Erb.v7('daD@h@\\\\H\\\\D\\\\L\\\\B\\\\Djfdrjj`Cj`XZV^[lgl|WjBp^C~RQdp\\ndaDD`HP@cIICISKUT@]LCbURss\\\\bCPVCp_rPmV@\\ndaDH@@RfzaJjjbHGWPhxdtl|yXEGDfgf}HDoTE`|G|dC]`<\\ndaDH@@RfzaJjjbHGWPhxdtl|yqGDf}HDoTE`|G|dC]`<\\ndaDH@@RfzaJjjbHGWPhxdtl|yqGDf}HDoTE`|G|dC]`>\\ndaT@`@\\\\DjfjZn[jjjkJcKhGP`phxdtl|wY@xD`uyo]{|lKUfp\\ndax@@DiU[zh@zHfegfzLG``\\ndax@@DiYn`@@wHmumm}l=\\ndax@@DiYn`@@wHmumm}t=\\ndax@@DiYn`@@wHmumn}t=\\ndax@@DiYn`@@wHmuum}t\\ndax@@DiYn`@@wHmuun}t=\\ndax@@DiYn`@@wHnuun}t=\\ndax@@DiYn`h@zsEgfyEnmlG``=\\ndax@@DiYnf@@zaJyEnnmom`=\\ndax@@DiYnf@@zaJyEvnmom`=\\ndax@@DiYnf@@zqDffyEv`mom`=\\ndax@@DiYnf@@zqDffyEv`mon`\\ndax@@DiYnf@@zqDff~TEm}l=\\ndax@@DiYnf@@zqDff~Uyn}t=\\ndax@@DiYnf@@zqDfjyEv`mom`=\\ndax@@DiYnf@@zqDfj~TEm}l=\\ndax@@Djfjjh@zDFEGDfegf{HG@dF`lG``\\ndax@@Djfjjh@zDFEGDfeggI@phdwY@xD`tE`|D\\ndax@@Djfjjh@zDFEGDfeggM@phdtwY@xD`tE`|D\\ndax@@Djfjjh@zDFEGDfeggN@pdwY@xD`tE`|D\\ndax@@Djfjjh@zDFEGDfeggN@plwY@xD`tE`}x\\ndax@@Djfjjh@zDFEGDjegj{HG@dF`lG``\\ndax@@DjfjjjHP]BCBcbSRssd`XRV[l`\\\\BPZBp^|>\\ndax@@DjfjjjHP]BCBcbSRsug@XR[l`\\\\BPZBp^B<\\ndax@@DjfjjjHP]BCBcbSRsug@XR[l`\\\\BPZBp^B>\\ndax@D@bH\\\\DbL\\\\B\\\\JbFbN\\\\Dfnjjh@zRGGNHxlwPo]x\\ndax@H@\\\\H\\\\D\\\\J\\\\Djfjjh@zXFGDegf{I{@dFoLG``\\ndax@H@\\\\H\\\\D\\\\J\\\\Djfjjh@zXFGDeggN@pdwYOXD`uy`|D\\ndax@H@\\\\H\\\\D\\\\L\\\\Djfjjh@zXFDfegf{I{ODF`lG``\\ndax@H@\\\\H\\\\J\\\\F\\\\Djfjjh@zXFEGDgj{HG@dFoM{``\\ndax@H@\\\\J\\\\F\\\\N\\\\Djfjjh@zhFEGDf{HG@dFoM{o@\\ndax@H@\\\\J\\\\F\\\\N\\\\Djfjjh@zhFEGDf}HG@dFoMx\\ndax@H@dDdJdFdDfnjjh@zJGDgfzDGo@\\ndax@H@dDdJdFdDfnjjh@zJGDgfzE{o@\\ndax@H@dDdJdFdDfnjjh@zJGDggNHxlwP`|D\\ndax@H@dDdJdFdDfnjjh@zJGDggNHxlwPo]x\\ndax@H@dDdJdFdDfnjjh@zJGDkfzDGo@\\ndax@H@dDdJdFdDfnjjh@zJGDkgNHxlwP`}x\\ndax@H@dDdJdFdDfnjjh@zJGDkjzDG``\\ndax@H@dDdLdJdLbdLeUT@]EBRss]F}w`\\ndax@H@dDdLdJdLbdLeUUAPNbaIZyncA{p<\\ndax@H@dDdLdJdLbdLeUUAPNbaIZyncA{p>\\ndax@P@BFBDiuZ{h@zHEEgfzHG``\\ndax@P@QFQDiuZ{h@zHEEgfzHG``\\ndax@P@\\\\H\\\\Djfjjh@zDFEGDfegf{HG@dF`lG``\\ndax@P@\\\\H\\\\Djfjjh@zDFEGDjegj{HG@dF`lG``\\ndax@P@\\\\H\\\\Djnjjh@zxEGDfegf{Q{@dF`lG``\\ndax@P@\\\\H\\\\Djnjjh@zxEGDfegf{Q{OEz`lG``\\ndax@P@\\\\H\\\\Djnjjh@zxEGDfegf}YxoTE`|D\\ndax@P@\\\\H\\\\Djnjjj@P]\\\\BcbSRss]h}`R}PVCpP<\\ndax@P@\\\\H\\\\Djnjjj@P]\\\\BcbSRss]h}`R}PVCpP>\\ndax@P@\\\\H\\\\Djnjjj@P]\\\\BcbSRss^lBWjBp^B<\\ndax@P@\\\\H\\\\Djnjjj@P]\\\\BcbSRss^lBWjBp^B>\\ndax@Q@|Bh@dnRjZjj`Ck`XT\\\\ZV^[t`\\\\CPVCpP\\ndax@R@BH|HeIijjj@NnaQqIiYyoV^KuAXOA@\\ndax@R@QH|HeIijjj@NnaQqIiYyoV^KuAXOA@\\ndax@R@\\\\H\\\\HyJkjjj@NnAQqIiYyoV^KuAXOA@\\ndax@X@\\\\H\\\\D\\\\L\\\\B\\\\J\\\\Djfjjh@zHFEgf{I{OEzoLG``\\ndax@X@\\\\H\\\\D\\\\L\\\\B\\\\J\\\\Djfjjh@zHFEggI@phdwYOYxoUy`|D\\ndax@X@\\\\H\\\\D\\\\L\\\\B\\\\J\\\\Djfjjh@zHFEggN@pdwYOYxoUy`|D\\ndax@X@kDdLdJkFdNdLbdLeUT@]IBR\\ndax@`@BDf]j^@@zbJyAoMmom`=\\ndax@`@BDf]j^@@zbJyAoNmom`=\\ndax@`@BDf]j^@@zbJyAoNmwn`=\\ndax@`@\\\\Df]j^@@zRGFyA{Nmom`=\\ndax@`@\\\\Djfjjh@zDFEGDfegf{HG@dF`lG``\\ndax@`@\\\\Djfjjh@zDFEGDfegf{HG@ez`lG``\\ndax@`@\\\\Djfjjh@zDFEGDjegf{HG@dF`lG``\\ndax@`@\\\\Djfjjh@zDFEGHjegf{HG@dF`lG``\\ndax@`@\\\\Djfjjh@zDFEKHjegf{HG@dF`lG``\\ndax@`@\\\\LddUUUr@]LBcbRss\\\\dC`RCwP\\ndax@`@dDffjjjHP]]BcbSRssgHTR[u`RCPVCpP<\\ndax@b@|@eJijjj@NaAaQqIiYynrApI^hKAxH\\ndax@b@|@eJijjj@NaAaQqIiYynrAsq^hKAxH\\ndax@b@|@eJijjj`DGP`phyDtl|wY@xDoTE`|D<\\ndax@b@|@eJijjj`DGP`phyDtl|wY@xDoTE`|D>\\ndax@h@BDdLdJdFdLbdLeUT@]YBSs]@}w`\\ndax@h@\\\\H\\\\D\\\\L\\\\B\\\\Djfjjh@zhFFegf{I{OEz`lG``\\ndax@h@\\\\H\\\\D\\\\L\\\\B\\\\Djfjjh@zhFFegf{I{OEz`lG`\\x7FddEB\\ndax@h@\\\\H\\\\D\\\\L\\\\B\\\\Djfjjh@zhFFegf}I{OTE`|D\\ndax@h@\\\\H\\\\D\\\\L\\\\J\\\\Djfjjh@zhFDegf{I{ODFoLG``\\ndax@h@\\\\H\\\\D\\\\L\\\\J\\\\Djfjjh@zhFDeggI@phdwYOYx`uy`|D\\ndax@h@\\\\H\\\\D\\\\L\\\\J\\\\Djfjjj@P]TCBRssg@XR[lgl|PZ|p^B<\\ndax@h@\\\\H\\\\D\\\\L\\\\J\\\\Djfjjj@P]TCBRssg@XR[lgl|PZ|p^B>\\ndax@h@dDdLdJdFdLbdLeUT@]YBSs^NB\\ndax@h@dDdLdJdFdLbdLeUT@]YBSs^N|\\ndax@h@dDdLdJdFdLbdLeUT@]YBSu^NB\\ndax@h@kDdLdJdFdLbdLeUT@]YBSs^N|\\ndax@p@\\\\H\\\\D\\\\Djfjjh@zxFGDfegf{I{@dF`lG``\\ndax@p@\\\\H\\\\D\\\\Djfjjh@zxFGDfegj{I{@dF`lG``\\ndax@p@\\\\J\\\\F\\\\Djfjjh@zXFEGDgf{HG@dFoM{``\\ndax@p@\\\\J\\\\F\\\\Djfjjh@zXFEGDgj{HG@dFoM{``\\ndax@p@\\\\J\\\\F\\\\DjfjjjHP]LCBcbSs^dC`RCWnB<\\ndax@p@\\\\J\\\\F\\\\DjfjjjHP]LCBcbSs^dC`RCWnB>\\ndax@p@dDdLdLbdLeUT@]UBSRss_JBp^B\\ndax@p@dDdLdLbdLeUT@]UBSRss_JBp^|\\ndax@p@dDdLdLbdLeUT@]UBSRsu_JBp^B\\ndax@p@dDdLdLbdLeUT@]UBSRuu_JBp^B\\ndax@p@dDdLdLbdLeUT@]UBSTus_JBp^|\\ndax@p@|D\\\\L\\\\DffjjjHP]MBbSRss^l|PZBp^B<\\ndax@p@|D\\\\L\\\\DffjjjHP]MBbSRss^l|PZBp^B>\\ndaxB@@RfRZzjjdaX`zJGDggN@hdwP`|D<\\ndaxB@@RfRZzjjdaX`zJGDggN@hdwP`|D>\\ndaxBRHSFCpkpslddlcUT`HdGV@d|wRo\\\\D>\\ndaxB`HSJCprRRrMUPAtPIKOMtXOA@\\ndaxD@@QIkjjj@NfaqIiYysbNIMrHMAXOA@\\ndaxD@@QIkjjjbDGSPxdtl|yHEGDfyDF`lG``<\\ndaxD@@QImYk`@Nhanc[{X=\\ndaxD@@iIijjj@NfaQqIYynVAHKAxH\\ndaxD@@iIijjj@NfaQqIYysTJNMKMrpIAXOA@\\ndaxD@@iIijjjRDbCihT\\\\RV^\\\\yBcS\\\\lBPVCpP\\ndaxD@@iIijjjRDdCihT\\\\RV^\\\\yBbs\\\\lBPVCw`>\\ndaxD@@iIijjjRDdCihT\\\\RV^\\\\yBcS\\\\lBPVCpP<\\ndaxD@@yIUVnz@NdaY@\\ndaxDHHP@biAiCiCIICHmU@GV@xdw```\\ndaxDPHP@b`cIICHmU@GU@xeL|wH`uy`|D\\ndaxD`HP@cIICHmU@GS@xdtl|wH`tE`|D\\ndaxD`HP@cIICHmU@GS@xeTl|wH`tE`|D\\ndaxD`HPGCIICIUU@GS@xdtl|wHoTE`|D\\ndaxDpJXIAICICHiCIUU@GVPd|wc``\\ndaxDpJXIAICICHiCIUU@GVPd|wco@\\ndaxH@@RYvjxHaAtdNM|pK[{X+\\ndaxH@@RZZjj`CkhT\\\\RZV^[u`RCPVCpP\\ndaxH@@RZZjj`CkhT\\\\RZV^\\\\lCBcbSS^lBPZBp^B\\ndaxH@@RZZjj`CkhT\\\\RZV^\\\\uBcbSS^lBPZBp^B\\ndaxH@@RZZjj`CkhT\\\\RZV^lmBcbSRs^lBPZBp^B\\ndaxH@@RZZjjhQAutJNIMKONZaQqIYoVAHMAXO^@<\\ndaxH@@RZZjjhaAutJNIMKONVAaQqIioVAKuAXOA@<\\ndaxH@@RZZjjhaAutJNIMKONZAaQIioVAHMAXOA@<\\ndaxH@@RZZjjhaAutJNIMKONZaQqIioVAKuAXOA@>\\ndaxH@@RZZjjhaAutJNIMKON\\\\aQIoVAHMAXOA@<\\ndaxH@@RZZjjhaAutJNIMKON\\\\aQIoVAHMAXOA@>\\ndaxH@@RZZjjhaAutJNIMKON\\\\aQYoVAHMAXO^@>\\ndaxH@@RZZjjhaAutJNIMKON\\\\aqIoVAKuAXOA@<\\ndaxH@@RZZjjhaAutJNIMKON\\\\aqIoVAKuAXOA@>\\ndaxH@@RZZjjhaAutJNIMKON\\\\aqYoVAKuAXO^@<\\ndaxHHBApapQpqpRjZjj`Cj`XZV^[tgl}PVCpP\\ndaxHPJBPRPRZzjjhrAuTNIKWM|KsA{p<\\ndaxHPJBPRPRZzjjhrAuTNIKWM|KsA{p>\\ndaxH`HApRjzjj`Ck`T\\\\RZV^[u`RCPVCpP\\ndaxH`HApRjzjj`Ck`T\\\\RZV^[ugb}PVCpP\\ndaxH`HApRjzjj`Ck`T\\\\bjV^[u`RCPVCpP\\ndaxH`HApRjzjjhAAupJNIMKOMzpI^hKAxH<\\ndaxH`HApRjzjjhAAupJNIMKOMzpI^hKAxH>\\ndaxH`JBHRZZjjhaAttJNIKONRaQiYnVAHKAxH>\\ndaxHpJBHRHrHrJPrUUPAtTIKOMtXOA@\\ndaxHpJBPRPrPrJPrUUPAtTIKOMtXOA@\\ndaxHpJBPRPrPrJPrUUPAtTIKOMt[w^@\\ndaxHpJBPRPrPrJPrUUTE@zJDegfzLGo@<\\ndaxHpJBPRPrPrJPrUUTE@zJDegfzLGo@>\\ndaxHpJBPRPrPrJPrUUTE@zJDegjzLG``<\\ndaxHpJBPRPrPrJPrUUTE@zJDegjzLG``>\\ndaxHpJBPRPrPrJPrUUTE@zJDekfzLGo@<\\ndaxHpJBPRPrPrJPrUUTE@zJDekfzLGo@>\\ndaxL@@RdfnjjjHP]UCbRsse`T\\\\RZV[xPVCpP<\\ndaxLHHS@BJdFdNdLddlbuT@]HBR\\ndaxLJHS@BJdFdNdL{IIKHmU@GR@d`\\ndaxL`HS@\\\\LddleUT@]TBSRss_JBp^B\\ndaxLhJ[`\\\\H\\\\D\\\\L\\\\B\\\\Djfjjh@zPFF~I{OEx\\nday@@@QIkjjj@NfaqIiYysPLJIMMrHMAXOA@\\ndayDaLJD@HrR{IICHmU@GU@xtl|wr`lG``\\ndaz@@@RYvHx@C\\\\`wfvwvp=\\ndaz@@@RYvHx@C\\\\`wfvwwP\\ndaz@@@RYvHx@C\\\\`wgVwvp=\\ndaz@@@RYvix@CjHkdF|zv~v=\\ndaz@@@RYvix@CjHkdG\\\\zv~v=\\ndaz@B@BTf]bN@@wHMymm}t\\ndaz@HBApapQpqpRjZjj`Cj`XZV^[tgl}PVCpP\\ndaz@bHCpBTjnjjh@zxEGDfegf}YxoTE`|D\\ndaz@pJBPRPrPrJPrUUPAtTIKOMtXOA@\\ndaz@pJBPRPrPrJPrUUTE@zJDegjzLG``>\\ndazDHLa@BJdFdNdLddlbuT@]HBR\\ndazDJLa@BJdFdNdL{IIKHmU@GR@d`\\ndazD`La@BLddlbuT@]TBSRss_JBp^B\\ndazH`D`OCIICHuUPBCi`\\\\RZV^[dWjBp^B<\\ndazH`D`OCIICHuUPBCi`\\\\RZV^[dWjBp^B>\\ndazHpFhIAICICHiCIUUPRCkHR^[qpP<\\ndazHpFhIAICICHiCIUUPRCkHR^[qpP>\\ndazLQFaLCpkpsfgIIKHuUHBIAu`IOMtkwA@<\\ndazLQFaLCpkpsfgIIKHuUHBIAu`IOMtkwA@>\\ndctD@@gHiDTeIU]uPAttNIHjnmrpIATNa@\\ndctD@@gHiDTeIU]uPAttNQPjvurpIATNa@\\nded@@DiUfoh@@Mr[_[G\\\\{@=\\nded@@DiUfoh@@Mr[_]G\\\\}@\\nded@P@\\\\F\\\\LddUTeUuPAtHJNIKOHlmvPNAHOADLa@\\ndedD@@{HiDUIU]T@]MCdTrMM\\\\lBPQCHP\\ndiD@@DiYkhJ`ChlV^Q[tVzvp^BHP=\\ndiD@@DiYkhJ`ChlV^Q[tVzzp^BHP\\ndiD@@DiYkhJ`ChlV^aktVzvp^BHP=\\ndiD@@DiYkhJ`ChlVnaktVzvp^BHP=\\ndiD@@DiYkhJ`ChlVnaktVzzp^BHP\\ndiD@H@\\\\H\\\\D\\\\L\\\\LddjTjn@@z`F}QyOY{nct=\\ndiD@`@\\\\LddUTjn@@zHEGDf}HG@dGmcl=\\ndiD@`@\\\\LddUTjn@@zHEGDf}HG@dGmct\\ndiD@`@\\\\LddUTjn@@zHEGDf}HG@dGnct=\\ndiD@`@\\\\LddUTjnX@zhEGDej}HG@dGnct\\ndiD@`@\\\\LddUTjnX@zxEGDegdV}HG@dGnbD\\ndiD@`@\\\\LddUTjnX@zxEGDegdZ}HG@dGnbD\\ndiDH@@rJQERjx@CkH\\\\R[e`RCvqv=\\ndiDH@@rJQERjx@CkH\\\\R[e`RCvqz\\ndiDH@@rJQERjx@CkH\\\\bke`RCvqv=\\ndiDH@@rJQERjx@CkH\\\\bke`RCvqz\\ndiDH@@rJQERjxHaAudNIMrpI^{X{@+\\ndiDH@@rJQERjxHaAudNIMrpI^{X{@-\\ndiDH@@rJQERjxHaAudNIMrpI^{X}@<\\ndiDH@@rJQERjy`Cih\\\\RV^Q[y`RBO`\\ndiDH@@rJQERjy`Cih\\\\bf^Q[e`RCwQB\\ndiF@@@rJQERjx@CkH\\\\R[e`RCvqv=\\ndiF@`NAprRQURjx@Ch`T\\\\R[t`\\\\BP^vNp\\ndiF@a@b`BX{HiDUJk`@NlarJnVAHO[Gh\\ndiFH@NCHiDUJk`@NlaqInVAHO[GX\\ngC`@Die@zHXir\\ngC`@Die@zHXis]Knz\\ngC`@Die@zHXis^Kh\\ngC`@Die@zHXisgAbd\\ngC`@Die@zHXisgAbfzW]t\\ngC`@Die@zHXisgAbf|WP\\ngC`@Dij@zHXis]HNB\\ngC`@Dij@zHXis]HN|\\ngC`@Dij@zHXis]Kv|\\ngC`@Dij@zHXisgAbfzP\\\\D\\ngC`@Dij@zHXisgAbfzP]x\\ngC`@Dij@zHXisgAbfzWmx\\ngC`@Dij@zHXiu]HNB\\ngC`@Dij@zHXiugAbfzP\\\\D\\ngC`@Dij@zHXjs]HN|\\ngC`@Dij@zHXjsgAbfzP]x\\ngC`@Dij@zHXju]HNB\\ngC`@Dij@zHXjugAbfzP\\\\D\\ngC`@DkZ@zHXis]SnB\\ngC`@DkZ@zHXis]Sn|\\ngC`@DkZ@zHXis^XH\\ngC`@DkZ@zHXis^[p\\ngC`@DkZ@zHXisgAbfzg\\\\D\\ngC`@DkZ@zHXisgAbfzg]x\\ngC`@DkZ@zHXisgAbf|pP\\ngC`@DkZ@zHXisgAbf|w`\\ngC`@DkZ@zHXiu]SnB\\ngC`@DkZ@zHXiu^XH\\ngC`@DkZ@zHXiugAbfzg\\\\D\\ngC`@DkZ@zHXiugAbf|pP\\ngC`B@DPHPQ`aJZ`NdFH\\ngC`B@DPHPQ`aJZ`NdFN\\\\FJP\\ngC`B@DPHWaoAJZ`NdFMto[p\\ngC`D@DPHRfhChabgMt`xH\\ngC`D@DPHRfhChabgN\\\\FJ[iApP\\ngC`D@DPHRfhChabgN\\\\FJ[i^w`\\ngC`D@DPHRfhChabkUt`xH\\ngC`D@DPHRnhCkASf|pP\\ngC`D@DPHRnhCkASj|pP\\ngC`D@DXHRVhCiQR\\ngC`D@DXHRVhCiQSgAbd\\ngC`D@DXHRfhCkAbf|PP\\ngC`D@DXHRfhCkAbgNCEMx``\\ngC`D@DXHRfhCkAbj|PP\\ngC`D@DYpRVhCiQS]Cv|\\ngC`D@VPlRfhChabkUt`xH\\ngC`D@VYpRfhCkAbfzP]x\\ngC`D@bQDRfhChabgMt`xH\\ngC`D@bQDRfhChabkUt`xH\\ngC`D@bSpRnhCkASfzglD\\ngC`D@xYpRVhCiQS]Cv|\\ngC`D@xYpRVhCiQSgAbfzGmx\\ngC`DABPHRVhCkQSj|pP\\ngC`DADZHRVhCiQR\\ngC`DAb[DRVhCiQR\\ngC`DAx[pRVhCiQR\\ngC`DAx[pRVhCiQS]Cv|\\ngC`Dax[pDzTej@zTTwP}o@\\ngC`H@DIKRAuhir\\ngC`H@DIKTAuhis]CvB\\ngC`H@DIKTAuhis^XH\\ngC`H@DIKTAuhis^[p\\ngC`H@DIKTAuhisgAbfzGlD\\ngC`H@DIKTAuhisgAbf|pP\\ngC`H@DIKTAuhisgAbf|w`\\ngC`H@DIKTAuhiu]CvB\\ngC`H@DIKTAuhiu^XH\\ngC`H@DISRAtPqSfzP]t\\ngC`H@DISRAtPqSf|PP\\ngC`H@DISRAtPqSgNCEMt`{h\\ngC`H@DISRAtPqSgNCEMx``\\ngC`H@DISRAtPqUfzP]t\\ngC`H@DISRAtPqUgNCEMt`{h\\ngC`H@DISTAtPqSfzP\\\\D\\ngC`H@DISTAtPqSfzP]x\\ngC`H@DISTAtPqSfzWlD\\ngC`H@DISTAtPqSgNCEMt`xH\\ngC`H@DISTAtPqSgNCEMt`{p\\ngC`H@DISTAtPqSgNCEMtoXH\\ngC`H@DISTAtPqSjzP\\\\D\\ngC`H@DISTAtPqSjzWlD\\ngC`H@DISTAtPqSkNCEMt`xH\\ngC`H@DISTAtPqUfzP\\\\D\\ngC`H@DISTAtPqUfzP]x\\ngC`H@DISTAtPqUgNCEMt`xH\\ngC`H@DISTAtPqUjzP\\\\D\\ngC`H@VIKTAuhis]CvB\\ngC`H@bIKTAuhis^XH\\ngC`H@bISRAtPqSf|PP\\ngC`H@bISTAtPqSfzP\\\\D\\ngC`H@bISTAtPqSgNCEMt`xH\\ngC`H@bISTAtPqSjzP\\\\D\\ngC`H@bISTAtPqUfzP\\\\D\\ngC`H@bISTAtPqUjzP\\\\D\\ngC`H@xIKRAuhis^Cp\\ngC`H@xIKTAuhis]CvB\\ngC`H@xIKTAuhis]Cv|\\ngC`H@xIKTAuhis^XH\\ngC`H@xIKTAuhisgAbfzGlD\\ngC`H@xIKTAuhiu]CvB\\ngC`HADIKTAuhis^XH\\ngC`HAVIKTAuhis^XH\\ngC`HAbIKTAuhis^XH\\ngC`HAxIKTAuhis]CvB\\ngC`HAxIKTAuhis^XH\\ngC`HAxIKTAuhisgAbfzGlD\\ngC`HAxIKTAuhiu]CvB\\ngC`HMPISTAu`qS]HN|\\ngC`HMPISTAu`qS^HH\\ngC`IAVBTii@zHXjs]HNz\\ngC`IAxBTej@ztTyna{A@\\ngC`IAxBTej@ztTys`qS]CvB\\ngC`IMP[dij@zpXindG^@\\ngC`L@DPHPPeMPGVCGMy``\\ngC`L@DPHPPeMPGVCGMyo@\\ngC`L@DPHPPeMPGVCGUy``\\ngC`L@DPHPPeMPGVCGV\\\\FJ[sA@\\ngC`L@VPHPPeMPGVCGMy``\\ngC`L@bPHPPeMPGVCGMy``\\ngC`PAEdij@zPXypXi@\\ngC``@deZ@ztTyoLD\\ngC``ADij@zHXis]HN|\\ngC``ADij@zHXis]Kv|\\ngC``ADij@zHXisgAbfzP\\\\D\\ngC``ADij@zHXisgAbfzP]x\\ngC``ADij@zHXisgAbfzWmx\\ngC``Adej@zTT`\\ngC``Adej@zTTypXi@\\ngC``Adij@zpXioDD\\ngC``Adij@zpXioEx\\ngC``Adij@zpXis`qS^HH\\ngC``Adij@zpXjoDD\\ngC``Adij@zpXjs`qS^HH\\ngC`hH`xIKTAuhis]Cv|\\ngCa@@dkHGVbgH\\ngCa@@dkHGVbgMyn`\\ngCa@@dkPGVbgMy``\\ngCa@@dmHGVbgH\\ngCa@@dmHGVbgMyn`\\ngCa@@dmHGVbgN\\\\FJP\\ngCa@@dmHGVbgN\\\\FJ[s]@\\ngCa@@dmPGVbgMy``\\ngCa@@dmPGVbgMyo@\\ngCa@@dmPGVbgN\\\\FJ[sA@\\ngCa@@dmPGVbgN\\\\FJ[s^@\\ngCa@@dmPGVbgUy``\\ngCa@@dmPGVbgV\\\\FJ[sA@\\ngCa@@eMHGQCEN[iAwP\\ngCa@@eMHGQCEN[qA@\\ngCa@@eMHGQCEN[q^@\\ngCa@@eMHGQCEN\\\\xLTwRCn`\\ngCa@@eMHGQCEN\\\\xLTwbB\\ngCa@@eMHGQCEV[iAwP\\ngCa@@eMHGQCEV\\\\xLTwRCn`\\ngCa@@eMHGQCEV\\\\xLTwbB\\ngCa@@eMPGQCEN[iApP\\ngCa@@eMPGQCEN[iAw`\\ngCa@@eMPGQCEN[i^pP\\ngCa@@eMPGQCEN[i^w`\\ngCa@@eMPGQCEN\\\\xLTwRC``\\ngCa@@eMPGQCEN\\\\xLTwRCo@\\ngCa@@eMPGQCEN\\\\xLTwR}``\\ngCa@@eMPGQCEN\\\\xLTwR}o@\\ngCa@@eMPGQCENkiApP\\ngCa@@eMPGQCENki^pP\\ngCa@@eMPGQCENlxLTwRC``\\ngCa@@eMPGQCENlxLTwR}``\\ngCa@@eMPGQCEV[iApP\\ngCa@@eMPGQCEV[iAw`\\ngCa@@eMPGQCEV\\\\xLTwRC``\\ngCa@@eMPGQCEV\\\\xLTwRCo@\\ngCa@@eMPGQCEVkiApP\\ngCa@@eMPGQCEVlxLTwRC``\\ngCaH@jAJZ`NlFN[i^pP\\ngCaH@jAJZ`NlFN\\\\xLTwR}``\\ngCaH@jAJZ`NlFN\\\\xLTwfB\\ngCaH@jAJZ`NlFN\\\\xLTwf|\\ngCaHDGAIZ`NmEN[h^pP\\ngCaHH@aIZ`NmEN[h^pP\\ngCaHH@aIZ`NmEN[h^w`\\ngCaHH@aIZ`NmEN\\\\xLTwP}``\\ngCaHHGAIZ`NmEN[h^pP\\ngCaHHGAIZ`NmEN[h^w`\\ngCaHHGAIZ`NmEN\\\\xLTwP}``\\ngCaHHGAIZ`NmENkh^pP\\ngCaHHOAIZ`NmEN[h^pP\\ngCaHHOAIZ`NmEN[h^w`\\ngCaHHOAIZ`NmEN[sA@\\ngCaHHOAIZ`NmEN\\\\xLTwP}``\\ngCaHHOAIZ`NmEN\\\\xLTwP}o@\\ngCaHHOAIZ`NmEN\\\\xLTwf|\\ngCaHHOAIZ`NmENkh^pP\\ngCaHHOAIZ`NmENlxLTwP}``\\ngCaHL@aIZ`NeEH\\ngCaHL@aIZ`NeEN\\\\FJP\\ngCaHLDQIZ`NeEH\\ngCaHLGAIZ`NeEMxO@\\ngCaHLHaIZ`NeEH\\ngCaHLLQIZ`NeEH\\ngCaHLOAIZ`NeEMxO@\\ngCaI@jA\\\\eMPGVCGMtoXH\\ngCaIHO@RdmPGVbgMtOXH\\ngCaIHO@RdmPGVbgN\\\\FJ[h^pP\\ngCaIL@`RdmPGRbd\\ngCd@@deZ@ztTyoLG}h`\\ngCd@@deZ@ztTys`qS^XO{Q@\\ngCd@@deZ@ztTzoLG}h`\\ngCd@@deZ@ztTzs`qS^XO{Q@\\ngCd@ADie@zHXis]Kn{~rD@\\ngCd@ADie@zHXis^Ko{HP\\ngCd@ADie@zHXisgAbfzW]w}dH\\ngCd@ADie@zHXis~rD@\\ngCd@ADif@zHXis]KnC~rD@\\ngCd@ADif@zHXis^XO{HP\\ngCd@ADif@zHXisgAbfzW\\\\G}dH\\ngCd@ADif@zHXisgAbf|p_vP`\\ngCd@ADif@zHXiu]KnC~rD@\\ngCd@ADif@zHXiu^XO{HP\\ngCd@ADij@zHXis]HNC~rD@\\ngCd@ADij@zHXis]HNC~t@\\ngCd@ADij@zHXiu]HNC~rD@\\ngCd@ADij@zHXju]HNC~rD@\\ngCd@ADkj@zpTzoLD\\ngCd@AdeY@zTT`\\ngCd@Adej@zTT`\\ngCd@Adej@zTTypXi@\\ngCd@Adij@zpXioDG}h@\\ngCd@Adij@zpXis`qS^HO{P@\\ngCd@Adij@zpXjoDG}h@\\ngCd@Adij@zpXjs`qS^HO{P@\\ngCd@aAteJz`NlEN[sA\\x7FZ@\\ngCd@aAteJz`NlEN[s^\\x7FZ@\\ngCd@aaNeIZ`NeEH\\ngCd@aaNeIZ`NeEN\\\\FJP\\ngCd@aaNeIZ`NeEN\\\\FJ[h^w`\\ngCd@aaNeIZ`NeEN\\\\FJ[p^@\\ngCdAAIrTs@]DLTznewA\\x7FYB@\\ngCdAAaJRu@]JJP\\ngCdAAaJRu@]JJ[p^@\\ngCdAAaJRu@]JJ\\\\xLT`\\ngCdAAaJRu@]JJ\\\\xLTw`|\\ngCdDE`DPHRfhCiAb\\ngCdHH`DIKRAuhis]Cv{~rb@\\ngCdHH`DIKRAuhis^Cw{JH\\ngCdHI`DIKTAthis`qS^Cw{R@\\ngCe@E`dkPGRbg}h`\\ngCh@@dkHGVbgH\\ngCh@@dkPGVbgMy``\\ngCh@@dmHGVbgH\\ngCh@@dmHGVbgMyn`\\ngCh@@dmHGVbgN\\\\FJP\\ngCh@@dmHGVbgN\\\\FJ[s]@\\ngCh@@dmPGVbgMtOXH\\ngCh@@dmPGVbgMy``\\ngCh@@dmPGVbgMyo@\\ngCh@@dmPGVbgN\\\\FJ[h^pP\\ngCh@@dmPGVbgN\\\\FJ[sA@\\ngCh@@dmPGVbgN\\\\FJ[s^@\\ngCh@@dmPGVbgUy``\\ngCh@@dmPGVbgV\\\\FJ[sA@\\ngCh@@eLhGQCEN\\\\xLTwR{n\\x7Fm@\\ngCh@@eLhGQCEN\\\\xLTwb{~t@\\ngCh@@eMHGQCEN[iAw_v`@\\ngCh@@eMHGQCEN[i^w_v`@\\ngCh@@eMHGQCEN[qA\\x7FZ@\\ngCh@@eMHGQCEN\\\\xLTwRCn\\x7Fm@\\ngCh@@eMHGQCEN\\\\xLTwbC~t@\\ngCh@@eMHGQCEV[iAw_v`@\\ngCh@@eMHGQCEV[qA\\x7FZ@\\ngCh@@eMPGQCEN[iApP\\ngCh@@eMPGQCEN[iAp_v`@\\ngCh@@eMPGQCEN[iAw`\\ngCh@@eMPGQCEN[iAwov`@\\ngCh@@eMPGQCEN[i^pP\\ngCh@@eMPGQCEN\\\\xLTwRC``\\ngCh@@eMPGQCEN\\\\xLTwRC`\\x7Fm@\\ngCh@@eMPGQCEN\\\\xLTwRCo@\\ngCh@@eMPGQCEN\\\\xLTwRCo_m@\\ngCh@@eMPGQCEN\\\\xLTwR}``\\ngCh@@eMPGQCENkiApP\\ngCh@@eMPGQCENkiAp_v`@\\ngCh@@eMPGQCENki^pP\\ngCh@@eMPGQCENlxLTwRC``\\ngCh@@eMPGQCEV[iApP\\ngCh@@eMPGQCEV[iAp_v`@\\ngCh@@eMPGQCEV[iAwov`@\\ngCh@@eMPGQCEV\\\\xLTwRC``\\ngCh@@eMPGQCEV\\\\xLTwRC`\\x7Fm@\\ngCh@@eMPGQCEVkiApP\\ngCh@@eMPGQCEVkiAp_v`@\\ngCh@@e[PGQCEN[j]p_v`@\\ngCh@@e[PGQCEN[sA\\x7FZ@\\ngCh@@e[PGQCEN[s^\\x7FZ@\\ngCh@@e[PGQCEN\\\\xLTwT{`\\x7Fm@\\ngCh@@e[PGQCENkj]p_v`@\\ngCh@@e[PGQCENksA\\x7FZ@\\ngCh@@e[PGQCENlxLTwT{`\\x7Fm@\\ngChA@IRUdCkQSf|GP\\ngChA@IRVdCkQSd\\ngChA@IRVhCkQSfzGlD\\ngChA@IRVhCkQSf|pP\\ngChA@IRVhCkQSf|w`\\ngChA@IRVhCkQSgNCEMtOXH\\ngChA@IRVhCkQSgNCEMy``\\ngChA@IRVhCkQSgNCEMyo@\\ngChA@IRVhCkQSj|pP\\ngChA@IRVhCkQSkNCEMy``\\ngChA@IRfhChabgMt`xH\\ngChA@IRfhChabgMt`{p\\ngChA@IRfhChabgMtoXH\\ngChA@IRfhChabgN\\\\FJ[iApP\\ngChA@IRfhChabgUt`xH\\ngChA@IRfhChabgUtoXH\\ngChA@IRfhChabgV\\\\FJ[iApP\\ngChA@IRfhChabkUt`xH\\ngChA@IRmhChabgMuNxO{P@\\ngChA@IRmhChabgMy`\\x7Fm@\\ngChA@IRmhChabgN\\\\FJ[j]p_v`@\\ngChA@IRmhChabgUuNxO{P@\\ngChDD@bABUt`]XJ\\\\wf{~tP\\ngChDDDRHbUt`]XJ\\\\wf{~tP\\ngChHD@aIZ`NmEN[h^p_vb@\\ngChHDOAIZ`NmENkh^p_vb@\\ngChHH@aIZPNmEN[h^w_vd@\\ngChHH@aIZ`NmEN[h^p_vd@\\ngChHH@aIZ`NmEN[h^wovd@\\ngChHH@aIZ`NmEN\\\\xLTwP}`\\x7FmH\\ngChHH@aIZ`NmENkh^p_vd@\\ngChHH@aJZPNbFJlypXindG]\\x7FZP\\ngChHHOAIZ`NmEN[h^p_vd@\\ngChHHOAIZ`NmEN\\\\xLTwP}`\\x7FmH\\ngChHHOAIZ`NmENkh^p_vd@\\ngChHL@aIZ`NeEH\\ngChHL@aIZ`NeEMxO@\\ngChHL@aIZ`NeEN\\\\FJP\\ngChHL@aJZ`NlFJ[qA@\\ngChHL@aJZ`NlFJ\\\\xLTwbB\\ngChHLHaIZ`NeEH\\ngChHLLQIZ`NeEH\\ngChHLOAIZ`NeEH\\ngChIDOARdmPGVbgMtOXH\\ngChIHOBRdkPGVbgMy`\\x7FmH\\ngChIL@cRdmPGRbd\\ngChIL@cRdmPGRbf|G`\\ngChILLSRdmPGRbd\\ngCh`LHe]PGRBd\\ngCi@DDeZ@ztTyoLG}h`\\ngCi@DDeZ@ztTyoM{}h`\\ngCi@DDeZ@ztTzoLG}h`\\ngCi@HDii@zHXis]HN{~t`\\ngCi@HDii@zHXis^HO{R@\\ngCi@HDii@zHXisgAbfzP]w}i@\\ngCi@HDii@zHXjs]HN{~t`\\ngCi@HDij@zHXis]HNB\\ngCi@HDij@zHXis]HNC~t`\\ngCi@HDkj@zpTyoLD\\ngCi@HDkj@zpTyoMx\\ngCi@HDkj@zpTys`qS^XH\\ngCi@HDkj@zpTzoLD\\ngCi@LDej@zTT`\\ngCi@LDej@zTTypXi@\\ngCi@LDej@zTTypXioMx\\ngCi@LDij@zpXioDD\\ngCi@LDij@zpXis`qS^HH\\ngCi@LDij@zpXjs`qS^HH\\ngCiALMJRu@]JJP\\ngCiALMJRu@]JJ[s^@\\ngCiALMJRu@]JJ\\\\xLT`\\ngCiALMJRu@]JJ\\\\xLTwf|\\ngCl@ADe[PGVBgUy`\\x7Fl``\\ngClAADnRmhCkASj|p_vPP\\ngFp@DjYZXHCkASfyW]x{n\\x7FrTrp=\\ngFp@DjYZjjQCiabgIZyHXis\\\\kv|_WwyJYX<\\ngFp@DjxujhCiabgIZwL{`dMC~RvN@\\ngFp@LdaahUPGVrVmsMkYCP\\x7Fdmc`=\\ngFp@LdaahUPGVrVmsMkY}__dmc`=\\ngFp@LdaahUPGVrVmsMkiCP\\x7Fdmc`\\ngFp@LdaahUTrGVrVmsMkYC__dmc`+\\ngFp@LdaahUTrGVrVmsMkYC__dmc`-\\ngFp@LdaahUTrGVrVmsMkiC__dmc`<\\ngFp@LdaahUTrGVrVmsMkiC__dmc`>\\ngFp@LddLUUPGSCENRusdyK\\\\pJBPtOyHZX\\ngFp@LddLUUPGSCENRusdyK\\\\sr|PtOyHZX\\ngFp@LddLUUTBGSCENRurPqRVy`Uxah_rPtp>\\ngFp@LddLUUTBGSCENRus`iK\\\\sr|PtOyHZX>\\ngFp@LddLUUTBGSCENRusdyK\\\\pJ|PtOyHZX<\\ngFp@LddLUUTBGSCENRusdyK\\\\pJ|PtOyHZX>\\ngFp@LddLUUTBGSCENRushiK\\\\pJ|PtOyHZX<\\ngFp`@TfXujjJChqSfnSENRwVCP\\x7Fdmc`<\\ngFp`@TizJjiRYChqSfn\\\\dm[iAh_rPup<\\ngFp`@TizJjiRZChqSfmtoTOyHZx<\\ngFp`@TizJjiRZChqSfmtoTOyHZx>\\ngFp`@TizJjiRZChqSfn\\\\dm[iAh_rPup<\\ngFp`@TizJjiRZChqSfn\\\\dm[iAh_rPup>\\ngFp`@dfxujhChqrVmtPtOyKXx\\ngFp`@dfxujhChqrVmt_WwyKXx\\ngFp`@dfxujjYChqrVmtPwwyKXx<\\ngFp`@dfxujjYChqrVmtPwwyKXx>\\ngFq@@dmXuU@]VJ\\\\ek_XICP\\x7Fdem`\\ngFq@@dsFmU@]VJ\\\\ek_XICP\\x7Fdmc`\\ngFq@@dsFmU@]VJ]Ek_XICP\\x7Fdmc`\\ngFq@@dsFmUQH]VJ]Ek_XIC__dmc`<\\ngFq@@dsFmUQH]VJ]Ek_XIC__dmc`>\\ngFq@@dsFuURH]VJ\\\\ek_XICP\\x7Fdmc`<\\ngFq@@dsFuURH]VJ\\\\ek_XICP\\x7Fdmc`>\\ngFq@@eMXuURH]LLTyKVyP\\\\D~h_rRvp<\\ngFq@@eMqUURH]VJ\\\\ek_HICP\\x7Fdak`<\\ngFq@@eMqUURH]VJ\\\\ek_HICP\\x7Fdak`>\\ngFq@@eMqUURH]VJ\\\\ek_KqCP\\x7Fdak`<\\ngFq@@eMqUURH]VJ\\\\ekdaRVm|oDMC~RFn@>\\ngFq@@eMqUURH]VJ\\\\ekgIKV~WbFa\\x7FICW@<\\ngFq@@eMqUURH]VJ\\\\ekgIKV~WbFa\\x7FICW@>\\ngFq@@eMqUURH]VJ\\\\ekgIrV~PRFa\\x7FICW@<\\ngFq@@eMqUURH]VJ\\\\ekgIrV~PRFa\\x7FICW@>\\ngFq@@eMqUURH]VJ\\\\ekgIrV~PSza\\x7FICW@<\\ngFq@@eOQUARP]JJ[yAN{o|dM\\\\+\\ngFq@@eOQUARP]JJ[yAN{o|dM\\\\-\\ngFq@@eOQUARP]JJ[y^N{o|dM\\\\+\\ngFq@@eOQUARP]JJ[y^N{o|dM\\\\-\\ngFq`@bdwFmUSP]ZNZweC~RvN@>\\ngFq`ALe\\\\qUU@]ENRunbFa\\x7FISW@\\ngFx@@eMXuU@]LLTyKVyP\\\\Dah_rRvuh@\\ngFx@@eOQMA@]JJ[y^N{o|dM\\\\=\\ngFx@@eOQUARP]JJ[yAN{o|dM\\\\+\\ngFx@@eOQUARP]JJ[yAN{o|dM\\\\-\\ngFx@@eOQUARP]JJ[y^N{o|dM\\\\+\\ngFx@@eOQUARP]JJ[y^N{o|dM\\\\-\\ngFx@@eSFuU@]LLTyKVyP\\\\Dah_rVquh@=\\ngFx@@eSFuU@]LLTzKVyP\\\\Dah_rVquh@\\ngFx@@eSFuU@]LLUZKVyP\\\\Dah_rVqp\\ngFxAAIRicZ`@NbFR\\\\wJC`gm{~RvN@=\\ngFxAAYRicZ`@NbFR\\\\wJC`gm{~RvNm@=\\ngFx`DBdwFmUSP]ZNZweC~RvN@<\\ngFy@DDfxujhChqrVmtPtOyKXx\\ngFy@DDfxujjYChqrVmtPwwyKXx<\\ngFy@DDfxujjYChqrVmtPwwyKXx>\\ngGP@DiWj`NbgIZwQCP`\\ngGP@DjZ@@Mrm{Yw]`=\\ngGP@DjZ@@Mrm{Yw^`=\\ngGP@DjZ@@Mrm{Y{^`=\\ngGP@DjZ@@Mrm{iw^`\\ngGP@DjZ@@Mrm{i{^`=\\ngGP@DjZ@@Mrn{i{^`=\\ngGP@DjZ@@NZFJ\\\\enUw]O[t=\\ngGP@DjZ@@N\\\\EI[e[wSn}@\\ngGP@DjZ@@N\\\\EN[e[wSv}@\\ngGP@DjZ@@N\\\\FN[e]wSv}@\\ngGP@DjZX@NhJyV}l{np=\\ngGP@DjZX@NhJyV}l{oP\\ngGP@DjZX@NhJyV}l}oP=\\ngGP@DjZX@NhJyV}t{np=\\ngGP@DjZX@NhJyV}t{oP\\ngGP@DjZX@NhJyW]l{np=\\ngGP@DjZX@NhJyW]l{oP\\ngGP@DjZX@NhJyW]l}oP=\\ngGP@DjZX@NhJyW]t{np=\\ngGP@DjZX@NhJyW]t{oP\\ngGP@DjZX@NhJyW]t}oP=\\ngGP@DjZX@NhKNBdmrn{iw^`\\ngGP@DjZX@NhKNCDmrn{Yw^`\\ngGP@DjZX@NhKNCDmrn{iw^`\\ngGP@DjZX@NlEN[e]pSn{@=\\ngGP@DjZX@NlEN[e]pSn{\\x7FIPh`=\\ngGP@DjZX@NlEN[e]pSn}@\\ngGP@DjZX@NlEN[e]pSv}@=\\ngGP@DjZX@NlEN[e]wcn{@=\\ngGP@DjZX@NlEN[e]wcn{\\x7FIPh`=\\ngGP@DjZX@NlEN[e]wcn}@\\ngGP@DjZX@NlEN[e]wcv}@=\\ngGP@DjZX@NlEN[{AN{l=\\ngGP@DjZX@NlEN[{AN{t\\ngGP@DjZX@NlEN[{AO[t=\\ngGP@DjZX@NlEN[{^N{l=\\ngGP@DjZX@NlEN[{^N{t\\ngGP@DjZX@NlEN\\\\xJRwJ{`g]z\\ngGP@DjZX@NlEN\\\\xJRwJ{oG]z\\ngGP@DjZX@NlEN\\\\xJRwvB]wh\\ngGP@DjZX@NlEN\\\\xJRwv|]wh\\ngGP@DjZX@NlEN\\\\xJ\\\\wJ{`gmz\\ngGP@DjZX@NlEN\\\\xJ\\\\wvB^wh\\ngGP@DjZX@NlEN\\\\xLRwJ{`g]z\\ngGP@DjZX@NlEN\\\\xLRwvB]wh\\ngGP@DjZX@NlEN\\\\xLRwv|]wh\\ngGP@DjZX@NlEN\\\\xL\\\\wJ{`gmz\\ngGP@DjZX@NlEN\\\\xL\\\\wvB^wh\\ngGP@DjZX@NlENke]pSn{@=\\ngGP@DjZX@NlENke]pSn}@\\ngGP@DjZX@NlENke]pSv}@=\\ngGP@DjZX@NlENk{AN{l=\\ngGP@DjZX@NlENk{AN{t\\ngGP@DjZX@NlENk{AO[t=\\ngGP@DjZX@NlENlxJRwJ{`g]z\\ngGP@DjZX@NlENlxJRwvB]wh\\ngGP@DjZX@NlENlxLRwJ{`g]z\\ngGP@DjZX@NlENlxLRwvB]wh\\ngGP@DjZX@NlENlxL\\\\wJ{`gmz\\ngGP@DjZX@NlENlxL\\\\wvB^wh\\ngGP@DjZY`NbFR\\\\wJ{`g]z\\ngGP@DjZY`NbFR\\\\wJ{`gmv\\ngGP@DjZY`NbFR\\\\wJ{`gmz\\ngGP@DjZY`NbFR\\\\wJ{oGmv\\ngGP@DjZY`NbFR\\\\wJ{oGmz\\ngGP@DjZY`NbFR\\\\wvB]wX\\ngGP@DjZY`NbFR\\\\wvB^wh\\ngGP@DjZY`NbFR]WJ{`gmv\\ngGP@DjZY`NbFR]WJ{`gmz\\ngGP@DjZY`NdJUrm{Yw]`\\ngGP@DjZY`NdJUrm{iw^`\\ngGP@DjZY`NdJUrn{Y{]`\\ngGP@DjZY`NdJUrn{i{^`\\ngGP@DjZY`NfFJ\\\\ek\\\\knB^tH\\ngGP@DjZY`NfFJ\\\\ek]XMB\\ngGP@DjZY`NfFJ\\\\ek_KnCP`\\ngGP@DjZY`NfFJ\\\\ek_XI{_@\\ngGP@DjZY`NfFJ\\\\ekfabgI[e]pSva@\\ngGP@DjZY`NfFJ\\\\ekfabgI[kAhP\\ngGP@DjZY`NfFJ\\\\ekfabgI[y]pZD\\ngGP@DjZY`NfFJ\\\\ekgARVyW\\\\D}hP\\ngGP@DjZY`NfFJ\\\\ekgARV~W\\\\Fa@\\ngGP@DjZY`NfFJ\\\\ekgASf~W\\\\Fa@\\ngGP@DjZY`NfFJ\\\\ekgAbVzpZD\\ngGP@DjZY`NfFJ\\\\ekgAbV~W\\\\Fa@\\ngGP@DjZY`NfFJ\\\\ekgAcfyW\\\\D}hP\\ngGP@DjZY`NfFJ\\\\ekgAcf~W\\\\Fa@\\ngGP@DjZY`NfFJ\\\\em\\\\knB^tH\\ngGP@DjZY`NfFJ\\\\em]XMB\\ngGP@DjZY`NfFJ\\\\em_KnCP`\\ngGP@DjZY`NfFJ\\\\em_XI{P`\\ngGP@DjZY`NfFJ\\\\emgAcfyW\\\\D}hP\\ngGP@DjZY`NfFJ\\\\emgAcf~W\\\\Fa@\\ngGP@DjZY`NfFJ]Em\\\\knB^tH\\ngGP@DjZY`NfFJ]Em]XMB\\ngGP@DjZY`NfFJ]Em_KnCP`\\ngGP@DjZY`NfFJ]EmgAcfyW\\\\D}hP\\ngGP@DjZj`NfFJ\\\\ek\\\\hNBPtH\\ngGP@DjZj`NfFJ\\\\ekfabgI[eApRFa@\\ngGP@DjZj`NfFJ\\\\fm\\\\hNBPtH\\ngGP@DjZj`NfFJmFm\\\\hNBPtH\\ngGP@DjZjdEDNfFJ\\\\ekdacdmr`xIC_@<\\ngGP@DjZjdEDNfFJ\\\\ekdacdmr`xIC_@>\\ngGP@DjZjdEDNfFJ\\\\ekfabgI[eAwbF~@<\\ngGP@DjZjdEDNfFJ\\\\ekfabgI[eAwbF~@>\\ngGP@DjZjdEDNfFJ\\\\ekgARVyP]xao`<\\ngGP@DjZjdEDNfFJ\\\\ekgARVyP]xao`>\\ngGP@DjZjdEDNfFJ\\\\ekgAbVyP\\\\Dao`<\\ngGP@DjZjdEDNfFJ\\\\ekgAbVyP\\\\Dao`>\\ngGP@DjZjdEDNfFJ\\\\ekgAcfyP\\\\DahP<\\ngGP@DjZjdEDNfFJ\\\\ekgAcfyP\\\\DahP>\\ngGP@DjZjdEDNfFJ\\\\ekgAcfyP\\\\Dao`<\\ngGP@DjZjdEDNfFJ\\\\ekgAcfyP\\\\Dao`>\\ngGP@DjZjdEDNfFJ\\\\emgAbVyP\\\\DahP<\\ngGP@DjZjdEDNfFJ\\\\emgAbVyP\\\\DahP>\\ngGP@DjZjdEDNfFJ\\\\emgAcfyP\\\\DahP<\\ngGP@DjZjdEDNfFJ\\\\emgAcfyP\\\\DahP>\\ngGP@DjZjdEDNfFJ\\\\fmgAcfyP\\\\DahP<\\ngGP@DjZjdEDNfFJ\\\\fmgAcfyP\\\\DahP>\\ngGP@DjZjdEDNfFJ]EkfabgI[eApRF~@<\\ngGP@DjZjdEDNfFJ]EkfabgI[eApRF~@>\\ngGP@DjZjdEDNfFJ]Em\\\\hNBPtH<\\ngGP@DjZjdEDNfFJ]Em\\\\hNBPtH>\\ngGP@DjZjdEDNfFJ]EmgAcfyP\\\\DahP<\\ngGP@DjZjdEDNfFJ]EmgAcfyP\\\\DahP>\\ngGP@DjZjdEDNfFJ]FmgAcfyP\\\\DahP<\\ngGP@DjZjdEHNfFJ\\\\ekfabgI[eAwbF~@\\ngGP@DjZjdEHNfFJ\\\\ekgARVyP]xao`\\ngGP@DjZjdEHNfFJ\\\\ekgAbVyP\\\\Dao`<\\ngGP@DjZjdEHNfFJ\\\\ekgAbVyP\\\\Dao`>\\ngGP@DjZjdEHNfFJ\\\\ekgAcfyP\\\\DahP\\ngGP@DjZjdEHNfFJ\\\\emgAbVyP\\\\DahP<\\ngGP@DjZjdEHNfFJ\\\\emgAbVyP\\\\DahP>\\ngGP@DjZjdEHNfFJ\\\\emgAcfyP\\\\DahP<\\ngGP@DjZjdEHNfFJ\\\\emgAcfyP\\\\DahP>\\ngGP@DjZjdEHNfFJ\\\\fkgAbVyP\\\\Dao`<\\ngGP@DjZjdEHNfFJ\\\\fkgAbVyP\\\\Dao`>\\ngGP@DjZjdEHNfFJ\\\\fmgAcfyP\\\\DahP<\\ngGP@DjZjdEHNfFJ\\\\fmgAcfyP\\\\DahP>\\ngGP@DjZjdEHNfFJ]EkfabgI[eApRF~@>\\ngGP@DjZjdEHNfFJ]EkgAbVyP\\\\Dao`<\\ngGP@DjZjdEHNfFJ]EkgAbVyP\\\\Dao`>\\ngGP@DjZjdEHNfFJ]Em\\\\hNBPtH\\ngGP@DjZjdEHNfFJ]EmgAbVyP\\\\DahP<\\ngGP@DjZjdEHNfFJ]EmgAbVyP\\\\DahP>\\ngGP@DjZjhDNfFJ\\\\fmdacdmr`xICP`<\\ngGP@DjZjhDNfFJ\\\\fmdacdmr`xICP`>\\ngGP@DjZjhDNfFJ]Fm\\\\hNBPtH>\\ngGP@DjZjiDNfFJ\\\\ek\\\\hNBPwp<\\ngGP@DjZjiDNfFJ\\\\ek\\\\hNBPwp>\\ngGP@DjZjiDNfFJ\\\\ekdabdmr`xIC_@<\\ngGP@DjZjiDNfFJ\\\\ekdabdmr`xIC_@>\\ngGP@DjZjiDNfFJ\\\\ekdabgMr`xICP`<\\ngGP@DjZjiDNfFJ\\\\ekdabgMr`xICP`>\\ngGP@DjZjiDNfFJ\\\\ekfabgI[eApRF~@<\\ngGP@DjZjiDNfFJ\\\\ekfabgI[eApRF~@>\\ngGP@DjZjiDNfFJ\\\\em\\\\hNBPtH<\\ngGP@DjZjiDNfFJ\\\\em\\\\hNBPtH>\\ngGP@DjZjiDNfFJ\\\\emdabgMr`xICP`<\\ngGP@DjZjiDNfFJ\\\\emdabgMr`xICP`>\\ngGP@DjZjiDNfFJ\\\\emfabgI[eApRFa@<\\ngGP@DjZjiDNfFJ\\\\emfabgI[eApRFa@>\\ngGP@Djfj`NfFJ\\\\ek\\\\hNBPtH\\ngGP@Djfj`NfFJ\\\\ek\\\\hNBPtOyJED\\ngGP@Djfj`NfFJ\\\\ek\\\\hNBPwp\\ngGP@Djfj`NfFJ\\\\ek\\\\hNB_TH\\ngGP@Djfj`NfFJ\\\\ek\\\\hNB_Wp\\ngGP@Djfj`NfFJ\\\\ek\\\\hN|_TH\\ngGP@Djfj`NfFJ\\\\ekdaSdmr`{q}P`\\ngGP@Djfj`NfFJ\\\\ekdaSdmr`{q}_@\\ngGP@Djfj`NfFJ\\\\ekdabdmr`xICP`\\ngGP@Djfj`NfFJ\\\\ekdabdmr`xIC_@\\ngGP@Djfj`NfFJ\\\\ekdabdmr`xI}P`\\ngGP@Djfj`NfFJ\\\\ekgAbVyP\\\\DahP\\ngGP@Djfj`NfFJ\\\\ekgAbVyP\\\\Dao`\\ngGP@Djfj`NfFJ\\\\ekgArVyP\\\\Dah_rTJH\\ngGP@Djfj`NfFJ\\\\ekgArVyP\\\\D~hP\\ngGP@Djfj`NfFJ\\\\ekgArVyP\\\\D~o`\\ngGP@Djfj`NfFJ\\\\em\\\\hNBPtH\\ngGP@Djfj`NfFJ\\\\em\\\\hNB_TH\\ngGP@Djfj`NfFJ\\\\emgAbVyP\\\\DahP\\ngGP@Djfj`NfFJ\\\\emgArVyP\\\\D~hP\\ngGP@Djfj`NfFJ\\\\fk\\\\hNBPtH\\ngGP@Djfj`NfFJ\\\\fk\\\\hNBPwp\\ngGP@Djfj`NfFJ\\\\fkdabdmr`xICP`\\ngGP@Djfj`NfFJ\\\\fkdabdmr`xIC_@\\ngGP@Djfj`NfFJ\\\\fkgArVyP\\\\DahP\\ngGP@Djfj`NfFJ\\\\fkgArVyP\\\\Dao`\\ngGP@Djfj`NfFJ\\\\fm\\\\hNBPtH\\ngGP@Djfj`NfFJ]Fk\\\\hNBPtH\\ngGP@Djfj`NfFJ]Fk\\\\hNBPwp\\ngGP@Djfj`NfFJ]FkgAbVyP\\\\DahP\\ngGP@Djfj`NfFJ]Fm\\\\hNBPtH\\ngGP@Djfj`NfFJmEk\\\\hNB_TH\\ngGP@Djfj`NfFJmFk\\\\hNBPtH\\ngGP@DjfjhDNfFJ\\\\ekdabdmr`{q}P`<\\ngGP@DjfjhDNfFJ\\\\ekdabdmr`{q}P`>\\ngGP@DjfjhDNfFJ\\\\ekdacdmr`xI}P`<\\ngGP@DjfjhDNfFJ\\\\ekdacdmr`xI}P`>\\ngGP@DjfjhDNfFJ\\\\ekdacdmr`xI}_@<\\ngGP@DjfjhDNfFJ\\\\ekdacdmr`xI}_@>\\ngGP@DjfjhDNfFJ\\\\ekgARVyP]x~hP<\\ngGP@DjfjhDNfFJ\\\\ekgARVyP]x~hP>\\ngGP@DjfjhDNfFJ\\\\ekgAbVyP\\\\D~hP<\\ngGP@DjfjhDNfFJ\\\\ekgAbVyP\\\\D~hP>\\ngGP@DjfjhDNfFJ\\\\fkgAbVyP\\\\DahP<\\ngGP@DjfjhDNfFJ\\\\fkgAbVyP\\\\DahP>\\ngGP@DjfjhDNfFJ]Ek\\\\hNB_TH<\\ngGP@DjfjhDNfFJ]Ek\\\\hNB_TH>\\ngGP@DjfjhDNfFJ]EkgAbVyP\\\\D~hP<\\ngGP@DjfjhDNfFJ]EkgArVyP\\\\D~hP<\\ngGP@DjfjhDNfFJ]EkgArVyP\\\\D~hP>\\ngGP@DjfjhDNfFJ]FkgARVyP\\\\DahP<\\ngGP@DjfjhDNfFJ]FkgARVyP\\\\DahP>\\ngGP@DjfjhDNfFJ]FkgARVyP\\\\Dao`<\\ngGP@DjfjhDNfFJ]FkgARVyP\\\\Dao`>\\ngGP@Djyj`NbIIZwLwmdMB\\ngGP@Djyj`NbIIZwLwndMB\\ngGP@Djyj`NbIIZwL{mdMB\\ngGP@Djyj`NbIIZwL{ndMB\\ngGP@Djyj`NbIIkWLwmdMB\\ngGP@Djyj`NbIIkWLwndMB\\ngGP@Djyj`NbIIkWL{ndMB\\ngGP@Djyj`NbIIkYLTyK\\\\s^zPtH\\ngGP@Djyj`NfFJ\\\\ek\\\\snBPtH\\ngGP@Djyj`NfFJ\\\\ek_XICP`\\ngGP@Djyj`NfFJ\\\\ek_XICP\\x7FdlRP\\ngGP@Djyj`NfFJ\\\\ekdacdmsNxICP`\\ngGP@Djyj`NfFJ\\\\ekdacdm}`dMB\\ngGP@Djyj`NfFJ\\\\ekdqSdmsNxICP`\\ngGP@Djyj`NfFJ\\\\ekdqSdmsN{qCP`\\ngGP@Djyj`NfFJ\\\\ekdqSdm}`dMB\\ngGP@Djyj`NfFJ\\\\ekfabgI[f]pRFa@\\ngGP@Djyj`NfFJ\\\\ekfabgI[{AHZD\\ngGP@Djyj`NfFJ\\\\ekfabgI[{^HZD\\ngGP@Djyj`NfFJ\\\\fm\\\\snBPtH\\ngGP@Djyj`NfFJ\\\\fm_XICP`\\ngGP@Djyj`NfFJ\\\\fmdacdmsNxICP`\\ngGP@Djyj`NfFJ]Ek\\\\snBPtH\\ngGP@Djyj`NfFJ]Ek_XICP`\\ngGP@Djyj`NfFJ]Ekdacdm}`dMB\\ngGP@Djyj`NfFJ]EkfabgI[f]pRFa@\\ngGP@Djyj`NfFJ]EkfabgI[{AHZD\\ngGP@Djyj`NfFJ]FmdacdmsNxICP`\\ngGP@DjyjhdNbIIZwLwmdM|>\\ngGP@DjyjhdNbIIZwLwndM|<\\ngGP@DjyjhdNbIIZypXynYw[HZD<\\ngGP@DjyjhdNbIIZypXynYw[HZD>\\ngGP@DjyjhdNbIIZypXynYw]HZD<\\ngGP@DjyjhdNbIIZypXynYw]HZD>\\ngGP@DjyjhdNbII[WLwndMB<\\ngGP@DjyjhdNbII[WLwndMB>\\ngGP@DjyjhdNbII[WL{ndMB<\\ngGP@DjyjhdNbII[WL{ndMB>\\ngGP@DjyjhdNbII[YpXynYw]HZD<\\ngGP@DjyjhdNbII[YpXynYw]HZD>\\ngGP@DjyjhdNbII[YtTynYw]HZD<\\ngGP@DjyjhdNbIIjypXenYw]H[x<\\ngGP@DjyjhdNfFJ\\\\ek_XIC_@<\\ngGP@DjyjhdNfFJ\\\\ek_XIC_@>\\ngGP@DjyjhdNfFJ\\\\ekdacdm}`dM|<\\ngGP@DjyjhdNfFJ\\\\ekdacdm}`dM|>\\ngGP@DjyjhdNfFJ\\\\ekdacdm}`dM}~RqI@>\\ngGP@DjyjhdNfFJ\\\\ekfabgI[f]pRF~@>\\ngGP@DjyjhdNfFJ\\\\ekfabgI[{AH[x<\\ngGP@DjyjhdNfFJ\\\\ekfabgI[{AH[x>\\ngGP@DjyjhdNfFJ\\\\ekfabgI[{^H[x<\\ngGP@DjyjhdNfFJ\\\\ekfabgI[{^H[x>\\ngGP@DjyjhdNfFJ\\\\ekgAbVyg\\\\Dao`<\\ngGP@DjyjhdNfFJ\\\\ekgAbVyg\\\\Dao`>\\ngGP@DjyjhdNfFJ\\\\ekgAbV~pRF~@<\\ngGP@DjyjhdNfFJ\\\\ekgAbV~pRF~@>\\ngGP@DjyjhdNfFJ\\\\ekgAcfyg\\\\DahP<\\ngGP@DjyjhdNfFJ\\\\ekgAcfyg\\\\DahP>\\ngGP@DjyjhdNfFJ\\\\ekgAcf~pRFa@<\\ngGP@DjyjhdNfFJ\\\\ekgAcf~pRFa@>\\ngGP@DjyjhdNfFJ\\\\ekgQRV~pRF~@<\\ngGP@DjyjhdNfFJ\\\\ekgQRV~pRF~@>\\ngGP@DjyjhdNfFJ\\\\ekgQRV~wbF~@<\\ngGP@DjyjhdNfFJ\\\\ekgQRV~wbF~@>\\ngGP@DjyjhdNfFJ\\\\ekgQSfyg\\\\DahP<\\ngGP@DjyjhdNfFJ\\\\ekgQSfyg\\\\DahP>\\ngGP@DjyjhdNfFJ\\\\ekgQSf~pRFa@<\\ngGP@DjyjhdNfFJ\\\\ekgQSf~pRFa@>\\ngGP@DjyjhdNfFJ\\\\ekgQSf~wbFa@<\\ngGP@DjyjhdNfFJ\\\\ekgQSf~wbFa@>\\ngGP@DjyjhdNfFJ\\\\em\\\\snBPtH<\\ngGP@DjyjhdNfFJ\\\\em\\\\snBPtH>\\ngGP@DjyjhdNfFJ\\\\em_XICP`<\\ngGP@DjyjhdNfFJ\\\\em_XICP`>\\ngGP@DjyjhdNfFJ\\\\emdacdmsNxICP`<\\ngGP@DjyjhdNfFJ\\\\emdacdmsNxICP`>\\ngGP@DjyjhdNfFJ\\\\emgAbVyg\\\\DahP<\\ngGP@DjyjhdNfFJ\\\\emgAbVyg\\\\DahP>\\ngGP@DjyjhdNfFJ\\\\emgAbV~pRFa@<\\ngGP@DjyjhdNfFJ\\\\emgAcfyg\\\\DahP<\\ngGP@DjyjhdNfFJ\\\\emgAcfyg\\\\DahP>\\ngGP@DjyjhdNfFJ\\\\emgAcf~pRFa@<\\ngGP@DjyjhdNfFJ\\\\emgAcf~pRFa@>\\ngGP@DjyjhdNfFJ\\\\emgQSfyg\\\\DahP<\\ngGP@DjyjhdNfFJ\\\\emgQSf~pRFa@>\\ngGP@DjyjhdNfFJ\\\\fkgAbVyg\\\\Dao`<\\ngGP@DjyjhdNfFJ\\\\fkgAbVyg\\\\Dao`>\\ngGP@DjyjhdNfFJ\\\\fkgAbV~pRF~@<\\ngGP@DjyjhdNfFJ\\\\fmgAcfyg\\\\DahP<\\ngGP@DjyjhdNfFJ\\\\fmgAcfyg\\\\DahP>\\ngGP@DjyjhdNfFJ]EkgAcfyg\\\\DahP<\\ngGP@DjyjhdNfFJ]EkgAcfyg\\\\DahP>\\ngGP@DjyjhdNfFJ]EkgAcf~pRFa@<\\ngGP@DjyjhdNfFJ]EkgQSfyg\\\\DahP<\\ngGP@DjyjhdNfFJ]EkgQSfyg\\\\DahP>\\ngGP@DjyjhdNfFJ]EmgAcf~pRFa@>\\ngGP@Dkij`NfFJ\\\\ek\\\\snBPtH\\ngGP@Dkij`NfFJ\\\\ek_XICP`\\ngGP@Dkij`NfFJ\\\\ek_XIC_@\\ngGP@Dkij`NfFJ\\\\ekdabgMsNxICP`\\ngGP@Dkij`NfFJ\\\\ekdabgM}`dMB\\ngGP@Dkij`NfFJ\\\\ekgAbVyg\\\\Dao`\\ngGP@Dkij`NfFJ\\\\ekgAbV~pRF~@\\ngGP@Dkij`NfFJ\\\\ekgAbfyg\\\\DahP\\ngGP@Dkij`NfFJ\\\\ekgAbf~pRFa@\\ngGP@Dkij`NfFJ\\\\em_XICP`\\ngGP@Dkij`NfFJ\\\\fmgAbfyg\\\\DahP\\ngGP@Dkij`NfFJ\\\\fmgAbf~pRFa@\\ngGP@DkijhdNfFJ\\\\ekdabdm}`dM|<\\ngGP@DkijhdNfFJ\\\\ekgAbfyg\\\\Dao`>\\ngGP@DkijhdNfFJ\\\\ekgAbf~pRF~@<\\ngGP@DkijhdNfFJ\\\\ekgAbf~pRF~@>\\ngGP@DkijhdNfFJ\\\\emgAbfyg\\\\DahP<\\ngGP@DkijhdNfFJ\\\\emgAbfyg\\\\DahP>\\ngGP@DkijhdNfFJ\\\\emgAbf~pRFa@<\\ngGP@DkijhdNfFJ\\\\emgAbf~pRFa@>\\ngGP@Lda`U@][IZwLvmdMB=\\ngGP@Lda`U@][IZwLvmdMC~RqI@=\\ngGP@Lda`U@][IZwLvmgu|=\\ngGP@Lda`U@][IZwLvmgu}~RqI@=\\ngGP@Lda`U@][IZwLvndMB\\ngGP@Lda`U@][IZwLvndMC~RqI@\\ngGP@Lda`U@][IZwLzndMB=\\ngGP@Lda`U@][IZwLzndMC~RqI@=\\ngGP@Lda`U@][IZyHTyK\\\\sjzPtH\\ngGP@Lda`U@][IZyLTyK\\\\sZzPtH\\ngGP@Lda`U@][IZyhXirVygUtahP=\\ngGP@Lda`U@][IkWLvmdMB=\\ngGP@Lda`U@][IkWLvndMB\\ngGP@Lda`U@][IkWLzndMB=\\ngGP@Lda`U@][IkYHTyK\\\\sjzPtH\\ngGP@Lda`U@][IkYLTyK\\\\sZzPtH\\ngGP@Lda`USH][IZwLvmdM|+\\ngGP@Lda`USH][IZwLvmdM|-\\ngGP@Lda`USH][IZwLvmdM}~RqI@+\\ngGP@Lda`USH][IZwLvmdM}~RqI@-\\ngGP@Lda`USH][IZwLvndM|<\\ngGP@Lda`USH][IZwLvndM|>\\ngGP@Lda`USH][IZyHTyK\\\\sjzPwp>\\ngGP@Lda`USH][IZyLTyK\\\\sZzPwp>\\ngGP@Lda`USH][IZyLTyK\\\\sZzPwwyKDd>\\ngGP@Lda`USH][IZypTynYu]HZD<\\ngGP@Lda`USH][IZypTynYu]HZD>\\ngGP@Lda`USH][IZytTenYm]H[x<\\ngGP@Lda`USH][IZytTenYm]H[x>\\ngGP@Lda`USH][IZytTenYm]H[{|ebR<\\ngGP@Lda`USH][IZytTenYm]H[{|ebR>\\ngGP@Lda`USH][IZytTynYm]HZD<\\ngGP@Lda`USH][IZytTynYm]HZD>\\ngGP@Lda`USH][IZytTynYm]HZG|ebR<\\ngGP@Lda`USH][IZytTynYm]HZG|ebR>\\ngGP@Lda`USH][IZytTynYm]H[x<\\ngGP@Lda`USH][IZytTynYm]H[x>\\ngGP@Lda`USH][IZytTynYm]Okx<\\ngGP@Lda`USH][IZytTynYm]Okx>\\ngGP@Lda`USH][I[WLvmdMB+\\ngGP@Lda`USH][I[WLvmdMB-\\ngGP@Lda`USH][I[WLvndMB<\\ngGP@Lda`USH][I[WLvndMB>\\ngGP@Lda`USH][I[WLzndMB+\\ngGP@Lda`USH][I[WLzndMB-\\ngGP@Lda`USH][I[YHTyK\\\\sjzPtH<\\ngGP@Lda`USH][I[YHTyK\\\\sjzPtH>\\ngGP@Lda`USH][I[YLTyK\\\\sZzPtH<\\ngGP@Lda`USH][I[YLTyK\\\\sZzPtH>\\ngGP@Lda`USH][I[YpTenYu]HZD<\\ngGP@Lda`USH][I[YpTenYu]HZD>\\ngGP@Lda`USH][I[YpTynYu]HZD<\\ngGP@Lda`USH][I[YpTynYu]HZD>\\ngGP@Lda`USH][I[YtTenYm]HZD<\\ngGP@Lda`USH][I[YtTenYm]HZD>\\ngGP@Lda`USH][I[YtTynYm]HZD<\\ngGP@Lda`USH][I[YtTynYm]HZD>\\ngGP@Lda`USH][IjwLvmdM|+\\ngGP@Lda`USH][IjwLvmdM|-\\ngGP@Lda`USH][IjwLvndM|<\\ngGP@Lda`USH][IjwLvndM|>\\ngGP@Lda`USH][IjyHTyK\\\\sjzPwp<\\ngGP@Lda`USH][IjyHTyK\\\\sjzPwp>\\ngGP@Lda`USH][IjyLTyK\\\\sZzPwp<\\ngGP@Lda`USH][IjyLTyK\\\\sZzPwp>\\ngGP@Lda`USH][IjytTenYm]H[x<\\ngGP@Lda`USH][IjytTenYm]H[x>\\ngGP@Lda`USH][IjytTynYm]H[x<\\ngGP@Lda`USH][IjytTynYm]H[x>\\ngGP@Lda`USH][IkYpTynYu]HZD<\\ngGP@Lda`USH][IkYpTynYu]HZD>\\ngGP@Lda`USH][IkYtTynYm]HZD<\\ngGP@Lda`USH][IkYtTynYm]HZD>\\ngGPAEJU\\\\uPGSCENRusPqSdmsNxICP`\\ngGPAEJU\\\\uPGSCENRusPqSdm}`dMB\\ngGPAKrUM@@FyV}l}oP=\\ngGPAMJUML@GVBgN\\\\EI[{AN{t\\ngGPAMNRPpJ`Nmdm[f]WRFa@=\\ngGPAMNRPpJ`Nmdukf[VrFa@=\\ngGPAMNRPpJ`Nmdukf[WRFa@\\ngGPAMNRPpJ`Nmdukf]WRFa@=\\ngGPAMNRPpJ`NmdultLTyK\\\\sjzPtH=\\ngGPAMNRPpJ`NmdulxJ\\\\wLzndMB>\\ngGPAMNRPpJ`NmdulzJ\\\\wLvndMB>\\ngGPAMvRPpJ`Nijyful}oP=\\ngGPB@DZPLaYAJZjhCkAbf|PP\\ngGPB@DZPLaYAJZjhCkAbj|PP\\ngGPBABRDKaWAJnjhCkASf~pSz~@>\\ngGPBADJHLQXaInjhCiQr\\ngGPD@DDHRYjY@zTeWHwmg]v\\ngGPD@DDHRYjY@zTeWHwmg]z\\ngGPD@DDHRYjY@zTeWHwng]z\\ngGPD@DDHRYjY@zTeYtTenQo]N{t\\ngGPD@DDHRYjY@ztdunao[@\\ngGPD@DDHRYjjTR`zLTykgAcfzpZD>\\ngGPD@DFPRYfi@zLTykgQRVzp[t\\ngGPD@DGpRYjY@ztduoao[oP\\ngGPD@DHHRZzj@zL\\\\ek]DMB\\ngGPD@DHHRZzj@zL\\\\ekgIrVyGexahP\\ngGPD@DHHRZzj@zL\\\\ekgIrVzHZD\\ngGPD@DHHR[f`@zd[h{np=\\ngGPD@DHHR[ff@zL\\\\ek]GmB\\ngGPD@DHHR[j`@zd[h{np=\\ngGPD@DHHR[j`@zd[h{oP\\ngGPD@DKpRYjZ@zLdfm\\\\c^vPtH\\ngGPD@DSpRZVj@zlTyKV~pRFa@\\ngGPD@DXHRfjj@zhXiKV~PRFa@\\ngGPD@DXHRfjj@zhXiKWNCEM|`dMB\\ngGPD@DXHRfjj@zhXjKV~PRFa@\\ngGPD@DXHRfjjdPzhXiK[NCEM|`dMB<\\ngGPD@DXHRfjjdPzhXiK[NCEM|`dMB>\\ngGPD@DZ`R[ij@zLlfm\\\\cZvPtH\\ngGPD@VIpRVjj@zlTyKV~pRFa@\\ngGPD@bSpRZVj@zlTzMV~pRFa@\\ngGPD@xIpR[j`@zd[d^Wcn{@=\\ngGPD@xIpR[j`@zd[d^Wcn}@\\ngGPD@xQpRjzj@zhTyKVyglDahP\\ngGPD@xQpRkf`@zP\\\\wL{`gmz+\\ngGPD@xQpRkf`@zP]WL{`g]v+\\ngGPD@xQpRkf`@zP]WL{`gmz+\\ngGPD@xUpRjZj@zhXirVyP\\\\Dao`\\ngGPDADFHRYjY@zLTykgQRVzw[t\\ngGPDADFHRYjjTRPzLTyk]XMB\\ngGPDAHFPRYjjTRPzLTykgQRVzpZD\\ngGPDAHFPRYjjTRPzLTykgQRVzp[x<\\ngGPDAHFPRYjjTRPzLTykgQRVzp[x>\\ngGPDAHJPRZzj@zL\\\\ek]DMB\\ngGPDAHJPRZzj@zL\\\\ek]DM|\\ngGPDAHJPRZzj@zL\\\\ek]GuB\\ngGPDAbGDRYjjTRPzLTyk]XMB\\ngGPDAbGDRYjjTRPzLTym]XMB>\\ngGPDAbR`RYj`@zT]YtTeolD{oP>\\ngGPDAxKpRYfj@zlTyKV~pRFa@\\ngGPDAxSpRijj@zXXirVmr`xICP`\\ngGPDAxSpRkj``PzP]WL}`g]v+\\ngGPDAxSpRkj``PzP]WL}`g]v-\\ngGPDAxSpRkj``PzP]WvB]wX+\\ngGPDAxSpRkj``PzP]WvB]wX-\\ngGPDAxSpRkjj`PzhTyKV~pRFa@<\\ngGPDAxSpRkjj`PzhTyKV~pRFa@>\\ngGPDaxF`Dgdjfj`NjFJ\\\\unTGAOjD\\ngGPDaxF`Dgdjfj`NjFJ\\\\uodGAhP\\ngGPDaxF`DgdjfjhDNjFJ]UodGAhP<\\ngGPDaxF`DgdjfjhDNjFJ]UodGAhP>\\ngGPEAxSpdiUuPPH]HNkf^pSn{@+\\ngGPEAxSpdiUuPPH]HNkf^pSn{@-\\ngGPFAVRDTIhPueaDfZj`NeEN]EIP>\\ngGPH@DIJm]@]ZIZweB\\ngGPH@DIKUU@]VJ\\\\ek\\\\cvBPtH\\ngGPH@DIKUU@]VJ\\\\ek\\\\cvBPwp\\ngGPH@DIKUU@]VJ\\\\ek_XICP`\\ngGPH@DIKUU@]VJ\\\\ekgAbf~pRFa@\\ngGPH@DILsP@]JNlzJRwvB]wh\\ngGPH@DILuH@]JN[d^wSn{@=\\ngGPH@DILuH@]JN[h{np=\\ngGPH@DILuH@]JN[x^N{l=\\ngGPH@DILuH@]JN[{]N{l=\\ngGPH@DILuH@]RUrM{Yw]`=\\ngGPH@DILuH@]RUrM{Yw^`\\ngGPH@DILuH@]RUrM{Y{^`=\\ngGPH@DILuH@]RUrM{iw]`=\\ngGPH@DILuH@]RUrM{iw^`\\ngGPH@DILuH@]RV]EI[d[wSn}@\\ngGPH@DILuK@]FRRunQo[OZD\\ngGPH@DILuK@]FRRunQo]OZD\\ngGPH@DILuK@]FRRunQo]O[x\\ngGPH@DILuK@]FRRuoao[hP\\ngGPH@DILuK@]FRRvnQo[OZD\\ngGPH@DILuK@]JRkd[vsn}@\\ngGPH@DILuK@]JRkd[vsv}@\\ngGPH@DILuPRH]JN[d^pSn{@+\\ngGPH@DILuPRH]JN[d^pSn{@-\\ngGPH@DILuPRH]JN[{AN{l+\\ngGPH@DILuPRH]JN[{AN{l-\\ngGPH@DILuPRH]JN[{AN{t>\\ngGPH@DILuPRH]JNk{AN{l-\\ngGPH@DIMMU@]VJ\\\\ekdqSdm}`dMB\\ngGPH@DIMMU@]VJ\\\\ekgAbV~pRFa@\\ngGPH@DIMMURH]VJ\\\\ekgQRV~pRFa@<\\ngGPH@DIMMURH]VJ\\\\ekgQRV~pRFa@>\\ngGPH@DIMtu@]FVRunQm[HZD\\ngGPH@DIMtu@]FVRunQm]HZD\\ngGPH@DISUU@]LLTyKVyP\\\\DahP\\ngGPH@DISUU@]LLTyKWNCDmr`xIC_@\\ngGPH@DISUU@]LLTyKWNCEMr`xICP`\\ngGPH@DISUU@]LLTzMZyP\\\\DahP\\ngGPH@DISUU@]LLUYKVyP\\\\DahP\\ngGPH@DISUU@]LLUYKWNCEMr`xICP`\\ngGPH@DISUU@]LLUYKZyP\\\\DahP\\ngGPH@DISm]@]DJRundFa@\\ngGPH@VILuH@]JN[h{np=\\ngGPH@VILuH@]JN[x^N{l=\\ngGPH@VILuH@]JN[{]N{l=\\ngGPH@bILuH@]JN[h{np=\\ngGPH@bILuH@]JN[{]N{l=\\ngGPH@bILuH@]RUrM{Yw]`=\\ngGPH@bILuH@]RUrM{iw]`=\\ngGPH@bISUU@]LLUYKVyP\\\\DahP\\ngGPH@xIKUU@]VJ\\\\ek\\\\cvBPtH\\ngGPH@xILuH@]JN[d^wSn{@=\\ngGPH@xILuH@]JN[x^N{l=\\ngGPH@xIMMU@]VJ\\\\ek\\\\cvBPtH\\ngGPH@xITuP@]XJ\\\\wJC`g]z\\ngGPH@xITuP@]XJmWJC`g]v=\\ngGPH@xITuP@]XJmWJC`g]z\\ngGPH@xITuPPH]XJ]WJC`g]v+\\ngGPH@xITuPPH]XJ]WJC`g]v-\\ngGPH@xITuU@]LLTyKVyP\\\\DahP\\ngGPH@xIUMT`]LLTyKVyP\\\\DaoP\\ngGPH@xIUMT`]LLTyKV~P\\\\Da@\\ngGPH@xIUMT`]LLTyMV~P\\\\Da@\\ngGPH@xIUMT`]LLTzMV~P\\\\Da@\\ngGPH@xIUMU@]LLTyKVyP\\\\DahP\\ngGPH@xIUMU@]LLTyKVyP\\\\Dao`\\ngGPH@xIUMU@]LLTyKVyP\\\\D~hP\\ngGPH@xIUMU@]LLTyKWNCDmr`xICP`\\ngGPH@xIUMU@]LLTyKZyP\\\\DahP\\ngGPH@xIUMU@]LLTyMVyP\\\\DahP\\ngGPH@xIUMU@]LLTzMVyP\\\\DahP\\ngGPH@xIUMU@]LLTzMWNCDmr`xICP`\\ngGPH@xIUMU@]LLTzMZyP\\\\DahP\\ngGPHABILuH@]JN[h{np=\\ngGPHABITuP@]XJmWJC`g]v=\\ngGPHABITuP@]XJmWJC`g]z\\ngGPHABITuP@]XJmWJC`gmz=\\ngGPHABITuS@]LLTyKWNCGMr`xI{P`>\\ngGPHADILuH@]JN[h{np=\\ngGPHADILuH@]JN[{]N{l=\\ngGPHADILuH@]JN\\\\zJRwvz]wh\\ngGPHADILuPRH]JN[{AN{l+\\ngGPHADILuPRH]JN[{AN{l-\\ngGPHADILuUJIP]VJ\\\\ekgQRV~pRF~@<\\ngGPHADIMMU@]VJ\\\\ek_XICP`\\ngGPHADIMMU@]VJ\\\\ekdqSdm}`dMB\\ngGPHADIMMURH]VJ\\\\ekgQRV~pRFa@<\\ngGPHADIMMURH]VJ\\\\ekgQRV~pRFa@>\\ngGPHADIMMURH]VJ\\\\ekgQrV~pSza@>\\ngGPHAHILuH@]JN[{]N{l=\\ngGPHAHILuK@]VJ\\\\ekgQRVzOZD\\ngGPHAHILuK@]VJ\\\\ekgQRV~wSva@\\ngGPHAHILuPRH]JN[{AN{l-\\ngGPHAHIMMU@]VJ\\\\ekdqSdm}`dMB\\ngGPHAHIMMURH]VJ\\\\ekgQRV~pRFa@<\\ngGPHAHIMMURH]VJ\\\\ekgQRV~pRFa@>\\ngGPHAVILuH@]JN[{]N{l=\\ngGPHAVILuH@]JN\\\\zJRwvz]wh\\ngGPHAVIMMU@]VJ\\\\ekdqSdm}`dMB\\ngGPHAbIKUU@]VJ\\\\ek_XICP`\\ngGPHAbILuH@]JN[{]N{l=\\ngGPHAbILuPRH]JN[{AN{l+\\ngGPHAbILuPRH]JN[{AN{l-\\ngGPHAbILuPRH]JN\\\\zJ\\\\wvB^wh<\\ngGPHAbILuUJIH]VJ]EmgQSf~pRFa@>\\ngGPHAbIMMU@]VJ\\\\ekdqSdm}`dM|\\ngGPHAxILsP@]JNk{AN{l=\\ngGPHAxILuH@]JN[d^wSn{@=\\ngGPHAxILuH@]JN[h{np=\\ngGPHAxILuH@]JN[x^N{l=\\ngGPHAxILuH@]JN[x^N{t\\ngGPHAxILuH@]JN[{]N{l=\\ngGPHAxILuPRH]JN[d^pSn{@+\\ngGPHAxILuPRH]JN[d^pSn{@-\\ngGPHAxILuUJIH]VJ\\\\ekgQSfyGlDahP<\\ngGPHAxIMMU@]VJ\\\\ekdqSdmrOXICP`\\ngGPHAxIMMU@]VJ\\\\ekdqSdm}`dMB\\ngGPHAxITuP@]XJ\\\\wJC`g]v=\\ngGPHAxITuP@]XJ\\\\wJC`g]z\\ngGPHAxITuP@]XJ\\\\wJC`gmz=\\ngGPHAxITuP@]XJmWJC`g]v=\\ngGPHAxITuP@]XJmWJC`g]z\\ngGPHAxITuP@]XJmWJC`gmz=\\ngGPHAxITuP@]XJmYHXiK\\\\hNB]wh\\ngGPHAxITuP@]XJmYhXirVyP\\\\D}oP=\\ngGPHAxITuPPH]XJ]WJC`g]v+\\ngGPHAxITuPPH]XJ]WJC`g]v-\\ngGPHAxITuPPH]XJ]WJC`g]z<\\ngGPHAxITuPPH]XJ]WJC`g]z>\\ngGPHAxITuPPH]XJ]WJC`gmz+\\ngGPHAxITuPPH]XJ]WJC`gmz-\\ngGPHAxITuPPH]XJlwJCoG]v+\\ngGPHAxITuPPH]XJlwJCoG]v-\\ngGPHAxITuS@]LLUZKVyP\\\\D}hP\\ngGPHAxITuU@]LLTyKVyP\\\\DahP\\ngGPHAxITuU@]LLUZKVyP\\\\DahP\\ngGPHAxITuUPH]LLTzKVyP\\\\DahP<\\ngGPHAxITuUPH]LLTzKVyP\\\\DahP>\\ngGPHKPITuURH]TLTyM\\\\hNBPwp<\\ngGPHKPYIC@jfPzVRwtvmdH+\\ngGPHKPYIC@jfPzVRwtvmdH-\\ngGPHKPYIC@jfPzVRytTenYm]H[x>\\ngGPHMPITtp@]HJ[e]wcn{@=\\ngGPHMPITtp@]HJ[e]wcv}@=\\ngGPHMPITtp@]HJ[h{np=\\ngGPHMPITtp@]HJ[y]N{l=\\ngGPHMPITtp@]HJ[y]O[t=\\ngGPHMPYIC@j@zvRunYu]HZD=\\ngGPHMPYIC@j@zvRvnYu]HZD+\\ngGPHMPYIC@j@zvRvshis\\\\sZzPtH>\\ngGPHMPYIC@j@zvSVnYm[HZD=\\ngGPHMPYIC@j@zvSVnYm]HZD\\ngGPHMPYIC@j@zvSVnYu]HZD=\\ngGPHMPYIC@j@zvSVsPqSdmsNkiCP`=\\ngGPHMPYIC@j@zvSVshis\\\\sZzPtH>\\ngGPHMPYICFj@zXXjrVv\\\\EN[f]PRFa@>\\ngGPHMPYICFj@zXXjrZusNhICP`\\ngGPHMPYICJj@zXXirVnRFJ\\\\wLB`dMB>\\ngGPHaxCeJSLuPGUbgI[YtTynQwAHZD>\\ngGPI@DBTjZh@NlEVkeApSn{@=\\ngGPI@DBTjZhHDNlENkeApSn}@<\\ngGPI@DBTjZhHDNlENlxJRwJC`g]z<\\ngGPI@DBTjZhHDNlENlxJRwJC`g]z>\\ngGPI@DZTfzZ`NcKIkWHvmdMB\\ngGPI@VBTjZh@NlEVkeApSn{@=\\ngGPIAxBTfZd@NeGMrO[iw]`=\\ngGPIAxBTfZhIDNeGMrOXIw]`+\\ngGPIAxBTfZhIDNeGMrOXIw]`-\\ngGPIAxBTffj`NkENRurXirVyGlDahP\\ngGPIAxBTffj`NkENRurXirV~pRFa@\\ngGPIAxBTijj`NfFJ\\\\ek\\\\kvBPtH\\ngGPIAxBTjZh@NlEN[eApSn}@\\ngGPIAxBTjZh@NlEVkeApSn{@=\\ngGPIAxBTjZh@NlEVkeApSn}@\\ngGPIAxBTjZh@NlEVkeApSv}@=\\ngGPIAxBTjZhHDNlENkeApSv}@+\\ngGPIAxBTjZhHDNlENkeApSv}@-\\ngGPIAxBTjZj`NfFJ\\\\ek\\\\hNBPtH\\ngGPIAxBTjZjhDNfFJ]Ek\\\\hNBPtH<\\ngGPIAxBTjZjhDNfFJ]Ek\\\\hNBPtH>\\ngGPIAxBTjfjPNfFJmFk\\\\hNBPwh\\ngGPIAxBTjfj`NfFJ\\\\ek\\\\hNBPtH\\ngGPIAxBTjfj`NfFJ\\\\em\\\\hNBPtH\\ngGPIAxBTjfj`NfFJ\\\\fk\\\\hNBPtH\\ngGPIAxBTjfj`NfFJ]Fk\\\\hNBPtH\\ngGPIAxBTjfj`NfFJ]FkgAbVyP\\\\DahP\\ngGPIAxBTjfj`NfFJmFk\\\\hNBPtH\\ngGPIAxBTjfj`NfFJmFm\\\\hNBPtH\\ngGPIEPKdkij`NfFJ]Fm\\\\snBPtH\\ngGPIEPKdkjj`NfFJ\\\\em\\\\pNBPtH\\ngGPIEPKdkjj`NfFJ\\\\fm\\\\pNBPtH\\ngGPIEPKdkjj`NfFJ\\\\fmgAbfy`\\\\DahP\\ngGPIEPKdkjj`NfFJ]Fm\\\\pNBPtH\\ngGPIMP[djZX@NdEMrn{qw]`=\\ngGPIMP[djZX@NdEMrn{q{^`=\\ngGPIMP[lda`U@][I[WLzndMB+\\ngGPIMP[lda`U@][IkWLvndMB\\ngGPIMP[lda`U@][IkWLzndMB=\\ngGPIMP[ldaeU@]LLTyK[ICEN[fAPRFa@>\\ngGPIMP[ldaeU@]LLTyMZy`TDahP\\ngGPJ@DQpSa``aBTuUPGVCFvRFJ\\\\wR}P`\\ngGPJ@xQpSagBnFRRVj`NdDmsOKv}_@\\ngGPL@DXHHPeMUTAtPqSWICEN[i^hP\\ngGPL@xIpsadTajhCkQKWNSdm|OKuB\\ngGPL@xQpSaddLZ@CjAnYu^O[t+\\ngGPL@xQpSaddajhCharVmsOKqCP`\\ngGPL@xQpSaddajhCharVmsOKqC__d`XP\\ngGPLADHHhPdtuTAtXirVzwc{|dcb\\ngGPLAHJPtadTajdCkQKT\\ngGPLAHJPtadTajdCkQKV|oP\\ngGPLAHJPtadTajhCkQKV|hP\\ngGPLAHJPtadTajhCkQKV|o`\\ngGPLAHJPtadTajhCkQKZ|hP\\ngGPP@cTfyi`NeGH\\ngGPPAcTijj`NlFJ\\\\xLTwbB\\ngGPP`cUuyInZXCiQr\\ngGPQ@c[rS\\\\tpGRcd\\ngGPT@cYPZ`R[jj@zT\\\\`\\ngGPTHlPxUpRjZj@zPXwe|\\ngGPTHlPxUpRjZj@zPXypXeoKx\\ngGPTHlQxUpRjvj@zPTwe|\\ngGPTHlQxWpRjvj@zPTwe|\\ngGPTIcQxIpRVjj@zTTw`|\\ngGPUHlQxWpOIU[UPH]HJ[r~@<\\ngGPUHlQxWpOIU[UPH]HJ[r~@>\\ngGPXHlPDYIHUj@zp\\\\uoJD\\ngGPXHlPDYIHUj@zp\\\\usdyK^TH\\ngGPXHlPxIUMU@]XLZweB\\ngGPXHlPxIUMU@]XL[WeB\\ngGPXHlQxIU[U@]XJZweB\\ngGPXHlQxIU[U@]XJZyLTyK^TH\\ngGPXHlQxIU[U@]XJ[WeB\\ngGPXHlQxIU[UPH]XJZytTeoJD<\\ngGPXHlQxIU[UPH]XJZytTeoJD>\\ngGPXHlQxIU[UPH]XJ[YtTeoJD<\\ngGPXHlQxIU[UPH]XJ[YtTeoJD>\\ngGPXIcPVIKUU@]JJP\\ngGPXhlQx[crUVuPGVBfmyP`\\ngGPYAcUPKdkjj`NlFJ[rA@\\ngGPYAcUPKdkjj`NlFJ\\\\xLTwdB\\ngGPYAcUPKdkjj`NlFR\\\\xLTwdB\\ngGPYHlPDGlddJu@]XNZweB\\ngGPYHlQxGdjmjhDNlEM[ra@<\\ngGPYHlQxGdjmjhDNlEM[ra@>\\ngGPYHlQxGdjmjhDNlEM\\\\zJRweB<\\ngGPYHlQxGdjmjhDNlEM\\\\zJRweB>\\ngGPYHlQxGdjmjhDNlEMkra@<\\ngGPYHlQxGdjmjhDNlEMkra@>\\ngGPYHlQxGdjmjhDNlEMlzJRweB<\\ngGPYHlQxGdjmjhDNlEMlzJRweB>\\ngGP`@TfYi`NcENZytTenlFa@\\ngGP`@TfYi`NcEN[YtTenlFa@\\ngGP`@TfYi`NcENkWVCP`\\ngGP`@TfYi`NcENkYtTenlFa@\\ngGP`@TfYjPNcENZytTenlF}@\\ngGP`@TfYjPNcENZytTenmz}@\\ngGP`@TfYjPNcENZytTeoLD\\ngGP`@TfYjPNcENjytTenlF}@\\ngGP`@TfYjPNcENjytTeoLD\\ngGP`@TfYjPNmEV[{AN{l\\ngGP`@TfYjPNmEV[{AN{t\\ngGP`@TfYjPNmEVk{AN{l\\ngGP`@TfYjPNmEVk{AN{t\\ngGP`@TfYjPNmEVlzJRwvB]wh\\ngGP`@TfYjhhNcENZwVCP`<\\ngGP`@TfYjhhNcENZwVCP`>\\ngGP`@TfYjhhNcENZwV}P`<\\ngGP`@TfYjhhNcENZyLTyK]XMB<\\ngGP`@TfYjhhNcENZyLTyK]XMB>\\ngGP`@TfYjhhNcENZytTenlFa@<\\ngGP`@TfYjhhNcENZytTenlFa@>\\ngGP`@TfYjhhNcENZytTenlF~@<\\ngGP`@TfYjhhNcENZytTenlF~@>\\ngGP`@TfYjhhNcENZytTenmza@<\\ngGP`@TfYjhhNcENjwVCP`<\\ngGP`@TfYjhhNcENjwVCP`>\\ngGP`@TfZfPNeIUrM{Yw]`\\ngGP`@TfZfPNeIV]EI[d[wSn}@\\ngGP`@TfZjeDdNcENZwVCP`\\ngGP`@TfZjeDdNcENZwVC_@<\\ngGP`@TfZjeDdNcENZyHXiK]XMB<\\ngGP`@TfZjeDdNcENZyHXiK]XMB>\\ngGP`@TfZjeDdNcENZyHXiK]XM|<\\ngGP`@TfZjeDdNcENZyhXirVzpZD\\ngGP`@TfZjeDdNcENZypXenlFa@<\\ngGP`@TfZjeDdNcENZypXenlFa@>\\ngGP`@TfZjeDdNcENZypXenlF~@>\\ngGP`@TfZjeDdNcENZytTenlFa@\\ngGP`@TfZjeDdNcENZytTenlF~@<\\ngGP`@TfZjeDdNcENZytTenlF~@>\\ngGP`@TfZjeDdNcEN[WVCP`<\\ngGP`@TfZjeDdNcEN[WVCP`>\\ngGP`@TfZjeDdNcEN[YtTynlFa@<\\ngGP`@TfZjeDdNcEN[YtTynlFa@>\\ngGP`@TfZjeDdNcENkWVCP`\\ngGP`@TfZjeDhNcENZwVCP`<\\ngGP`@TfZjeDhNcENZwVCP`>\\ngGP`@TfZjeDhNcENZwVC_@<\\ngGP`@TfZjeDhNcENZwVC_@>\\ngGP`@TfZjeDhNcENZyHXiK]XMB<\\ngGP`@TfZjeDhNcENZyHXiK]XMB>\\ngGP`@TfZjeDhNcENZyhXirVzpZD<\\ngGP`@TfZjeDhNcENZyhXirVzpZD>\\ngGP`@TfZjeDhNcENZypXenlFa@<\\ngGP`@TfZjeDhNcENZypXenlFa@>\\ngGP`@TfZjeDhNcENZypXynlFa@>\\ngGP`@TfZjeDhNcENZytTenlFa@<\\ngGP`@TfZjeDhNcENZytTenlFa@>\\ngGP`@TfZjeDhNcENZytTenlF~@<\\ngGP`@TfZjeDhNcENZytTenlF~@>\\ngGP`@TfZjeDhNcENZytTenmz~@<\\ngGP`@TfZjeDhNcEN[WVCP`<\\ngGP`@TfZjeDhNcEN[WVCP`>\\ngGP`@TfZjeDhNcEN[YpXenlFa@<\\ngGP`@TfZjeDhNcENkWVCP`<\\ngGP`@TfZjeDhNcENkWVCP`>\\ngGP`@TfzZihNcENZweB>\\ngGP`@TfzZihNcENZytTeneva@>\\ngGP`@TfzZihNmKM[x[VzD<\\ngGP`@TfzZihNmKM[x[VzD>\\ngGP`@dfnjPNcGIZyr\\\\enbF}@\\ngGP`@dfnjPNcGIZyr\\\\eoBD\\ngGP`@dfnj`NcGIZwQCP`\\ngGP`@dfnj`NcGIZyHXiK]DMB\\ngGP`@dfnj`NcGIZyHXiK]DM|\\ngGP`@dfnj`NcGIZyr\\\\enbFa@\\ngGP`@dfnj`NcGIZyr\\\\enbF~@\\ngGP`@dfnj`NcGIZyr\\\\encza@\\ngGP`@dfnj`NcGI[WQCP`\\ngGP`@dfnj`NcGIjyHXiK]DMB\\ngGP`@dfnjiDNcGIZyHTyK]DMB<\\ngGP`@dfnjiDNcGIZyHTyK]DMB>\\ngGP`@dfnjiDNcGIZypTenbFa@<\\ngGP`@dfnjiDNcGIZypTenbFa@>\\ngGP`@dfnjiDNcGIZypTenbF~@<\\ngGP`@dfnjiDNcGIZypTencza@<\\ngGP`@dfnjiDNcGIZypTencza@>\\ngGP`@dfyh@NiFzN{l=\\ngGP`@dfyh@NiFzN{t\\ngGP`@dfyh@NiFzO[t=\\ngGP`@dfyh@NiGNbdmt]wh\\ngGP`@dfyh@NiGNbgMt^wh\\ngGP`@dfyi`NcGIZwQ{P`\\ngGP`@dfyi`NcGIZwQ{P\\x7FdlRP\\ngGP`@dfyi`NcGIZwQ{_@\\ngGP`@dfyi`NcGIZweB\\ngGP`@dfyi`NcGIZwe|\\ngGP`@dfyi`NcGIZytTencva@\\ngGP`@dfyi`NcGIZytTeoJD\\ngGP`@dfyi`NcGIZytTyncva@\\ngGP`@dfyi`NcGIZytTyncv~@\\ngGP`@dfyi`NcGIZytTyoJD\\ngGP`@dfyi`NcGI[WQ{P`\\ngGP`@dfyi`NcGI[WeB\\ngGP`@dfyi`NcGI[YtTyncva@\\ngGP`@dfyi`NcGI[YtTyoJD\\ngGP`@dfyi`NeGUt]wX\\ngGP`@dfyi`NeGUt]wh\\ngGP`@dfyi`NeGUt^wX\\ngGP`@dfyi`NeGUt^wh\\ngGP`@dfyi`NeGV]EN[h}oP\\ngGP`@dfyj`NcGIZwQCP`\\ngGP`@dfyj`NcGIZwQCP\\x7FdlRP\\ngGP`@dfyj`NcGIZwQ}_@\\ngGP`@dfyj`NcGIkWQCP`\\ngGP`@dfyjidNcGIZwQC_@<\\ngGP`@dfyjidNcGIZwQC_@>\\ngGP`@dfyjidNcGIZyLTyK]DM|>\\ngGP`@dfyjidNcGIZytTenbF~@<\\ngGP`@dfyjidNcGIZytTenbF~@>\\ngGP`@dfyjidNcGIZytTynbFa@<\\ngGP`@dfyjidNcGIZytTynbFa@>\\ngGP`@dfyjidNcGIZytTynbF~@<\\ngGP`@dfyjidNcGIZytTynbF~@>\\ngGP`@dfyjidNcGI[WQCP`<\\ngGP`@dfyjidNcGI[WQCP`>\\ngGP`@dfyjidNcGI[YtTynbFa@>\\ngGP`@dfyjidNcGIjwQC_@<\\ngGP`@dfyjidNcGIjwQC_@>\\ngGP`@dfzh@NiFzN{l=\\ngGP`@dfzh@NiFzN{t\\ngGP`@dfzh@NiGICEI[h{oP\\ngGP`@dfzhIDNiGNBdmt]wh<\\ngGP`@dfzhIDNiGNBdmt]wh>\\ngGP`@dfzj`NcGIZwQCP`\\ngGP`@dfzj`NcGIZyhXirVzHZD\\ngGP`@dfzjeEdNcGIZypTynbFa@<\\ngGP`@dfzjeEdNcGIZypTynbFa@>\\ngGP`@dfzjeEhNcGIZypTynbFa@>\\ngGP`ADkjj`NjENRuolDahP\\ngGP`ADkjj`NjENRurPqSf~pRFa@\\ngGP`ADkjj`NjENRus`qK_XIC_@\\ngGP`ADkjj`NjENRus`qS_XICP`\\ngGP`ADkjj`NjENRvolDahP\\ngGP`ADkjj`NjENcVolDahP\\ngGP`ADkjj`NjENcVrPqSf~pRFa@\\ngGP`ATeVn`NeDh\\ngGP`ATffj`NcENRwVBP`\\ngGP`ATffjiDNcENRwVB_@<\\ngGP`ATffjiDNcENRwVB_@>\\ngGP`ATffjiDNcENRytTenlDa@<\\ngGP`ATffjiDNcENRytTenlDa@>\\ngGP`ATffjiDNcENSWVBP`>\\ngGP`Adeij`NcEIZwQCP`\\ngGP`Adijj`NjFJRuodDahP\\ngGP`Adijj`NjFJRuodD~o`\\ngGP`Adijj`NjFJRurPqrV~WbFa@\\ngGP`Adijj`NjFJRus`qS_HICP`\\ngGP`Adijj`NjFJRus`qS_KqCP`\\ngGP`Adijj`NjFJSVs`qS_HICP`\\ngGP`Adijj`NjFJbus`qS_HICP`\\ngGP`AdijjiDNjFJRuodDao`<\\ngGP`AdijjiDNjFJRuodDao`>\\ngGP`AdijjiDNjFJRurPqSf~PRFa@>\\ngGP`AdijjiDNjFJRurPqSf~WbFa@<\\ngGP`AdijjiDNjFJRurPqSf~WbFa@>\\ngGP`AdijjiDNjFJRurPqrV~PRF~@>\\ngGP`AdijjiDNjFJRus`qK_HIC_@<\\ngGP`AdijjiDNjFJRus`qK_HIC_@>\\ngGP`AdijjiDNjFJRus`qK_KqC_@>\\ngGP`AdijjiDNjFJRus`qS_HIC_@<\\ngGP`AdijjiDNjFJRus`qs_HICP`<\\ngGP`AdijjiDNjFJRus`qs_HICP`>\\ngGP`AdijjiDNjFJRus`qs_HIC_@<\\ngGP`AdijjiDNjFJRus`qs_HIC_@>\\ngGP`AdijjiDNjFJRus`qs_KqCP`<\\ngGP`AdijjiDNjFJRus`qs_KqCP`>\\ngGP`AdijjiDNjFJRvodDahP<\\ngGP`AdijjiDNjFJRvodDahP>\\ngGP`AdijjiDNjFJRvs`qS_HICP`<\\ngGP`AdijjiDNjFJRvs`qS_HICP`>\\ngGP`AdijjiDNjFJRvs`qs_HICP`<\\ngGP`AdijjiDNjFJRvs`qs_HICP`>\\ngGP`AdijjiDNjFJSUs`qK_HIC_@<\\ngGP`AdijjiDNjFJSUs`qK_HIC_@>\\ngGP`AdijjiDNjFJbus`qK_HIC_@<\\ngGP`AdijjiDNjFJbus`qs_HICP`<\\ngGP`AdijjiDNjFJbus`qs_HICP`>\\ngGP`AdijjiDNjFJbvs`qs_HICP`<\\ngGP`AdijjiDNjFJbvs`qs_HICP`>\\ngGPa@SrSLuHGQbgM\\\\zJRwVC^`\\ngGPa@SrSMSHGQbgM\\\\zJRwV{^`\\ngGPa@erS\\\\t@GTc]G]v=\\ngGPa@erS\\\\t@GTc]G]z\\ngGPa@erS\\\\t@GTc]Gmz=\\ngGPa@erS\\\\tpGQcdm[ra@\\ngGPa@erS\\\\uPGQcdm[hahP\\ngGPa@erS\\\\uPGQcdm[hah_rVIH\\ngGPa@erS\\\\uTrGQcdmkhahP<\\ngGPa@iJS]T@GTc]G]v=\\ngGPa@krS\\\\t@GTc]Gmz\\ngGPa@mrS\\\\uPGRcjzO[t\\ngGPdCPVZ`R[ij@ztTyoEt\\ngGPdE`DRPrRRrtAu`ek^TH\\ngGPdH`DTHrRPkTAu`yK]DM|\\ngGPdH`DWprRPkTAu`yK]DM|\\ngGPdH`VTlRjZj@zHXzM_XIC_@\\ngGPdH`VUpRjZj@zHXzM_XIC_@\\ngGPdH`xUpRjZj@zHXyK_XIC_@\\ngGPdH`xUpRjZj@zHXyKgAbV~pRF~@\\ngGPdH`xUpRjZj@zHXzM_XIC_@\\ngGPdH`xUpRjZj@zHXzMgAbV~pRF~@\\ngGPdH`xUpRjZj`PzHXyM_XIC_@<\\ngGPdH`xUpRjZj`PzHXyM_XIC_@>\\ngGPdH`xV`RjZj@zHXzM]XIB\\ngGPdI`VIpRVjj@zLTfm_CqCP`\\ngGPeE`DSpGIM\\\\uRH]FNSUnbFa@>\\ngGPeH`VUDliUMU@]DL]FnlDa@\\ngGPh@iPIMuP@]RMt]wX=\\ngGPh@iPIMuP@]RMt]wh\\ngGPh@iPIMuP@]RMt^wh=\\ngGPh@iPIMuP@]RN\\\\EI[h{oP>\\ngGPh@iPIMuS@]FNRuncva@\\ngGPh@iPIMuS@]FNRuoJD\\ngGPh@iPIMuS@]FNRvncva@\\ngGPh@iPIMuS@]FNRvoJD\\ngGPh@iPIMuS@]JNkh{oP\\ngGPh@iPIMuU@]FNRunbFa@\\ngGPh@iPIMuUSH]FNRvnbFa@>\\ngGPhCPDILuK@]JR[h[vp\\ngGPhCPDILuK@]JR[h[wP\\ngGPhCPDILuK@]ZJ\\\\`\\ngGPhCPDILuK@]ZJ\\\\wfz\\ngGPhCPDILuSRH]ZJ\\\\wP}``>\\ngGPhCPDILuSRH]ZJ\\\\wfB<\\ngGPhCPDILuSRH]ZJ\\\\wfB>\\ngGPhCQBILuK@]ZJ\\\\wfz\\ngGPhCQDILuSRH]ZJ\\\\wfB>\\ngGPhCQbILuSRH]ZJ\\\\wfB>\\ngGPhCQxILsS@]ZJ\\\\wfB\\ngGPhCQxILuK@]ZJ\\\\wP}n`\\ngGPhCQxILuK@]ZJ\\\\wfz\\ngGPhDPDIMuUJKH]ZNZytTeoJD<\\ngGPhDPDIMuUJKH]ZNZytTeoJD>\\ngGPhH`DYIHUi@zH\\\\ek^DH\\ngGPhH`DYIHUi@zH\\\\ekgIrVzH[t\\ngGPhH`DYIHUi@zH\\\\fk]DMz\\ngGPhH`DYIHUi@zH\\\\fk^DH\\ngGPhH`DYIHUj@zH\\\\ek]DMB\\ngGPhH`DYIHUj@zH\\\\ekgIrVzHZD\\ngGPhH`DYIHUj@zH\\\\em]DMB\\ngGPhH`DYIHUj@zH\\\\fk]DMB\\ngGPhH`DYIHUj@zH\\\\fk]DM|\\ngGPhH`DYIHUj@zH\\\\fm]DMB\\ngGPhH`xIUMU@]TL\\\\ek_XICP`\\ngGPhH`xIUMU@]TL\\\\ek_[q}P`\\ngGPhH`xIUMU@]TL\\\\ekgAbV~pRF~@\\ngGPhH`xIUMU@]TL\\\\ekgAbV~wcza@\\ngGPhH`xIUMU@]TL\\\\em_XICP`\\ngGPhH`xIUMU@]TL]Fm_XICP`\\ngGPhH`xYIHZj@zH\\\\ek]DMB\\ngGPhHaVYICE`@z`[h{oP\\ngGPhHaVYICJ`@z`[h{np=\\ngGPhHaxIU[U@]TJ\\\\ek_XICP`\\ngGPhHaxIU[U@]TJ]Fm_XICP`\\ngGPhHaxIU[UPH]TJ\\\\fk_XICP`<\\ngGPhHaxYICJ`@z`[h{oP\\ngGPhI`xIKUU@]FJRuoaxahP\\ngGPhaePRUrUuUPGUCEIkWtBPtH\\ngGPhaePRUrUuUPGUCEIkYpXiohDahP\\ngGPiAePKdkjj`NjFJSVs`qS_PICP`\\ngGPiCPDWdfZe`NeIMtM{X\\ngGPllQHR`TaNliM]U@]ZNZyr\\\\eoJD\\ngGPmLQHR`TaNRZzj@zt\\\\usdyK^TH\\ngGQ@@dmMTAuXirVm}`dMB\\ngGQ@@dmMTAuXirVm}`dM|\\ngGQ@@dmMTAuXirVu}`dMB\\ngGQ@@dmMTAuXirZu}`dMB\\ngGQ@@dmUTAuXirVm}`dMB\\ngGQ@@dmUTAuXirVm}`dM|\\ngGQ@@dmUTAuXirVnRFJ\\\\wvBPtH\\ngGQ@@dmUTAuXirVn\\\\FJ[{AHZD\\ngGQ@@dmUTAuXirVu}`dMB\\ngGQ@@dsM@AthyolD{np=\\ngGQ@@dsM@AthyolD{oP\\ngGQ@@dsM@AthyolD}oP=\\ngGQ@@dsM@Athyomx{np=\\ngGQ@@dsM@Athyomx{oP\\ngGQ@@dsM@AthyshiK_XIw^`\\ngGQ@@dsM@AthyshiK_[qw^`\\ngGQ@@dsM@Athyshis_XI{^`\\ngGQ@@dsM@Athyshis_[q{^`\\ngGQ@@dsM@AthzolD{np=\\ngGQ@@dsM@AthzolD{oP\\ngGQ@@dsM@AthzolD}oP=\\ngGQ@@dsM@AthzshiK_XIw^`\\ngGQ@@dsM@Athzshis_XI{^`\\ngGQ@@dsMLAuXirVmu`tH\\ngGQ@@dsMLAuXirVmu`wp\\ngGQ@@dsMLAuXirVmuoTH\\ngGQ@@dsMLAuXirVm}`gmB\\ngGQ@@dsMLAuXirVm}`gm|\\ngGQ@@dsMLAuXirVn]EI[kAhP\\ngGQ@@dsMLAuXirVn]EI[kAo`\\ngGQ@@dsMLAuXirVn]EI[k^hP\\ngGQ@@dsMLAuXirVn]EI[{AOZD\\ngGQ@@dsMLAuXirVn]EI[{AO[x\\ngGQ@@dsMLAuXirVn]EI[{^OZD\\ngGQ@@dsMLAuXirVn]EN[kAhP\\ngGQ@@dsMLAuXirVn]EN[kAo`\\ngGQ@@dsMLAuXirVn]EN[k^hP\\ngGQ@@dsMLAuXirVn]EN[{AOZD\\ngGQ@@dsMLAuXirVn]EN[{AO[x\\ngGQ@@dsMLAuXirVn]EN[{^OZD\\ngGQ@@dsMLAuXirVu}`gmB\\ngGQ@@dsMLAuXirVv]EI[{AOZD\\ngGQ@@dsMLAuXirVv]EN[kAhP\\ngGQ@@dsMLAuXirVv]EN[{AOZD\\ngGQ@@dsMLAuXitVmu`tH\\ngGQ@@dsMLAuXitVmu`wp\\ngGQ@@dsMLAuXitVm}`gmB\\ngGQ@@dsMLAuXitVm}`gm|\\ngGQ@@dsMLAuXitVn]EI[kAhP\\ngGQ@@dsMLAuXitVn]EI[kAo`\\ngGQ@@dsMLAuXitVn]EI[{AOZD\\ngGQ@@dsMLAuXitVn]EI[{AO[x\\ngGQ@@dsMLAuXitVn]EN[kAhP\\ngGQ@@dsMLAuXitVn]EN[kAo`\\ngGQ@@dsMLAuXitVn]EN[{AOZD\\ngGQ@@dsMLAuXitVn]EN[{AO[x\\ngGQ@@dsMLAuXitVuu`tH\\ngGQ@@dsMLAuXitVu}`gmB\\ngGQ@@dsMLAuXitVv]EN[kAhP\\ngGQ@@dsMLAuXitVv]EN[{AOZD\\ngGQ@@dsMLAuhjs_XIw]`\\ngGQ@@dsMLAuhjs_XIw^`\\ngGQ@@dsMLAuhjs_XI{]`\\ngGQ@@dsMLAuhjs_XI{^`\\ngGQ@@dsMLAuhjs_[qw^`\\ngGQ@@dsMLAuhjsgQSf~pSv{@\\ngGQ@@dsMLAuhjsgQSf~pSv}@\\ngGQ@@dsMLAuhju_XIw^`\\ngGQ@@dsMLAuhju_XI{]`\\ngGQ@@dsMLAuhju_XI{^`\\ngGQ@@dsMLAuhjugQSf~pSv{@\\ngGQ@@dsMLAuhjugQSf~pSv}@\\ngGQ@@dsMTAuXirVm}`dMB\\ngGQ@@dsMTAuXirVm}`dMC~RqI@\\ngGQ@@dsMTAuXirVm}oDMB\\ngGQ@@dsMTAuXirVnSENRwvBPtH\\ngGQ@@dsMTAuXirVnSENRwv|PtH\\ngGQ@@dsMTAuXirZvSENRwvBPtH\\ngGQ@@dsMTAuXitVm}`dMB\\ngGQ@@dsMTAuXitVm}`dMC~RqI@\\ngGQ@@dsMTAuXitVm}`gu|\\ngGQ@@dsMTAuXitZu}`dMB\\ngGQ@@dsMUDauXirVm}`dM|<\\ngGQ@@dsMUDauXirVm}`dM|>\\ngGQ@@dsMUDauXirVnSENRwvBPwp<\\ngGQ@@dsMUDauXirVnSENRwvBPwp>\\ngGQ@@dsMUDauXirVnSENRwv|Pwp>\\ngGQ@@dsMUDauXirVn]EI[{AH[x<\\ngGQ@@dsMUDauXirVn]EI[{AH[x>\\ngGQ@@dsMUDauXirVn]EI[{AH[{|ebR>\\ngGQ@@dsMUDauXirVn]EN[{AHZD<\\ngGQ@@dsMUDauXirVn]EN[{AHZD>\\ngGQ@@dsMUDauXirVn]EN[{AHZG|ebR<\\ngGQ@@dsMUDauXirVn]EN[{AHZG|ebR>\\ngGQ@@dsMUDauXirVn]EN[{AH[x<\\ngGQ@@dsMUDauXirVn]EN[{AH[x>\\ngGQ@@dsMUDauXirVn]EN[{AOkx<\\ngGQ@@dsMUDauXirVn]EN[{AOkx>\\ngGQ@@dsMUDauXirVn]EN[{^HZD<\\ngGQ@@dsMUDauXirVn]EN[{^HZD>\\ngGQ@@dsMUDauXirVv]EN[{AHZD<\\ngGQ@@dsMUDauXirVv]EN[{AHZD>\\ngGQ@@dsMUDauXitVm}`dM|<\\ngGQ@@dsMUDauXitVm}`dM|>\\ngGQ@@dsMUDauXitVn]EI[{AH[x<\\ngGQ@@dsMUDauXitVn]EN[{AHZD<\\ngGQ@@dsMUDauXitVn]EN[{AHZD>\\ngGQ@@dsMUDauXitVu}`dMB<\\ngGQ@@dsMUDauXitVu}`dMB>\\ngGQ@@dsT`Athyncn{@=\\ngGQ@@dsT`Athyncn}@\\ngGQ@@dsT`Athyncv}@=\\ngGQ@@dsT`Athyomt{np=\\ngGQ@@dsT`Athyomt{oP\\ngGQ@@dsT`Athys`qK]G]z\\ngGQ@@dsT`Athys`qK_[iw^`\\ngGQ@@dsT`AthyshiK]G]z\\ngGQ@@dsT`AthyshiK_[iw^`\\ngGQ@@dsT`Athyshis_[i{^`\\ngGQ@@dsT`AuIWHwmg]v=\\ngGQ@@dsT`AuIWHwmg]z\\ngGQ@@dsT`AuIWHwmgmz=\\ngGQ@@dsT`AuIWHwng]v=\\ngGQ@@dsT`AuIWHwng]z\\ngGQ@@dsT`AuIYtTenQo]N{t\\ngGQ@@dsTlAtYIKV~F}na@\\ngGQ@@dsTlAtYIKZyF}l}hP\\ngGQ@@dsTlAuXirVnZFJ\\\\encva@\\ngGQ@@dsTlAuXirVn]EN[{]OZD\\ngGQ@@dsUAHathyolD{np+\\ngGQ@@dsUAHathyolD{np-\\ngGQ@@dsUAHathyolD{oP<\\ngGQ@@dsUAHathyolD{oP>\\ngGQ@@dsUAHathyolD}oP+\\ngGQ@@dsUAHathyolD}oP-\\ngGQ@@dsUAHathyomx{np+\\ngGQ@@dsUAHathyomx{np-\\ngGQ@@dsUAHathyomx{oP<\\ngGQ@@dsUAHathyomx{oP>\\ngGQ@@dsUAHathyrPqRV~pSn}@<\\ngGQ@@dsUAHathyrPqRV~pSn}@>\\ngGQ@@dsUAHathys`qK_XIw^`<\\ngGQ@@dsUAHathys`qK_XIw^`>\\ngGQ@@dsUAHathyshiK_XIw^`<\\ngGQ@@dsUAHathyshiK_XIw^`>\\ngGQ@@dsUAHathyshiK_[qw^`<\\ngGQ@@dsUAHathyshiK_[qw^`>\\ngGQ@@dsUAHathyshis_XI{^`<\\ngGQ@@dsUAHathyshis_XI{^`>\\ngGQ@@dsUAHathyshis_[q{^`<\\ngGQ@@dsUAHathyshis_[q{^`>\\ngGQ@@dsUAHathzolD{np+\\ngGQ@@dsUAHathzolD{np-\\ngGQ@@dsUAHathzolD{oP<\\ngGQ@@dsUAHathzolD{oP>\\ngGQ@@dsUAHathzolD}oP-\\ngGQ@@dsUAHathzs`qK_XIw^`<\\ngGQ@@dsUAHathzs`qK_XIw^`>\\ngGQ@@dsUMHauXirVmu`tH<\\ngGQ@@dsUMHauXirVmu`tH>\\ngGQ@@dsUMHauXirVm}`gmB<\\ngGQ@@dsUMHauXirVm}`gmB>\\ngGQ@@dsUMHauXirVm}`gm|>\\ngGQ@@dsUMHauXirVnRFJ\\\\wVCP`<\\ngGQ@@dsUMHauXirVnZFJ\\\\enlFa@>\\ngGQ@@dsUMHauXirVn\\\\FN[{AOZD<\\ngGQ@@dsUMHauXirVn\\\\FN[{AOZD>\\ngGQ@@dsUMHauXirVn]EI[kAhP<\\ngGQ@@dsUMHauXirVn]EI[kAhP>\\ngGQ@@dsUMHauXirVn]EI[kAo`<\\ngGQ@@dsUMHauXirVn]EI[kAo`>\\ngGQ@@dsUMHauXirVn]EI[k^hP>\\ngGQ@@dsUMHauXirVn]EI[{AO[x>\\ngGQ@@dsUMHauXirVn]EI[{^OZD<\\ngGQ@@dsUMHauXirVn]EN[kAhP<\\ngGQ@@dsUMHauXirVn]EN[kAhP>\\ngGQ@@dsUMHauXirVn]EN[{AOZD<\\ngGQ@@dsUMHauXirVn]EN[{AOZD>\\ngGQ@@dsUMHauXirVuu`tH<\\ngGQ@@dsUMHauXitVmu`tH<\\ngGQ@@dsUMHauXitVmu`tH>\\ngGQ@@dsUMHauhjs_XIw]`<\\ngGQ@@dsUMHauhjs_XIw]`>\\ngGQ@@dsUMHauhjs_[qw]`<\\ngGQ@@dsUMHauhjs_[qw]`>\\ngGQ@@dsUThdauXirVm}`dM|<\\ngGQ@@dsUThdauXirVm}`dM|>\\ngGQ@@dsUThdauXirVnRFJRwvBPwp<\\ngGQ@@dsUThdauXirVnRFJ\\\\wvBPtH>\\ngGQ@@dsUThdauXirVnSENRwvBPwp>\\ngGQ@@dsUThdauXirVn\\\\FN[{AHZD<\\ngGQ@@dsUThdauXirVn\\\\FN[{AHZD>\\ngGQ@@dsUThdauXirVn]EI[{AH[x<\\ngGQ@@dsUThdauXirVn]EI[{AH[x>\\ngGQ@@dsUThdauXirVn]EN[{AHZD<\\ngGQ@@dsUThdauXirVn]EN[{AHZD>\\ngGQ@@dsUThdauXirVn]EN[{AH[x<\\ngGQ@@dsUThdauXirVn]EN[{AH[x>\\ngGQ@@dsUThdauXirVn]EN[{AOkx<\\ngGQ@@dsUThdauXirVn]EN[{AOkx>\\ngGQ@@dsUThdauXirVn]EN[{^HZD<\\ngGQ@@dsUThdauXirVn]EN[{^HZD>\\ngGQ@@dsUThdauXirVn]EN[{^Okx<\\ngGQ@@dsUThdauXirVu}`dMB<\\ngGQ@@dsUThdauXirVv]EN[{AHZD<\\ngGQ@@dsUThdauXirVv]EN[{AHZD>\\ngGQ@@dsUThdauXitVn]EN[{AHZD<\\ngGQ@@dsUThdauXitVn]EN[{AHZD>\\ngGQ@@dsUTheAuXirVm}`dM|<\\ngGQ@@dsUTheAuXirVm}`dM|>\\ngGQ@@dsUTheAuXirVm}oDM|<\\ngGQ@@dsUTheAuXirVnRFJRwvBPwp>\\ngGQ@@dsUTheAuXirVnRFJ\\\\wvBPtH<\\ngGQ@@dsUTheAuXirVnRFJ\\\\wvBPtH>\\ngGQ@@dsUTheAuXirVn\\\\FN[{AHZD<\\ngGQ@@dsUTheAuXirVn\\\\FN[{AHZD>\\ngGQ@@dsUTheAuXirVn]EI[{AH[x<\\ngGQ@@dsUTheAuXirVn]EI[{AH[x>\\ngGQ@@dsUTheAuXirVn]EI[{^H[x>\\ngGQ@@dsUTheAuXirVn]EN[{AHZD<\\ngGQ@@dsUTheAuXirVn]EN[{AHZD>\\ngGQ@@dsUTheAuXirVn]EN[{AH[x<\\ngGQ@@dsUTheAuXirVn]EN[{AH[x>\\ngGQ@@dsUTheAuXirVn]EN[{AOkx<\\ngGQ@@dsUTheAuXirVn]EN[{AOkx>\\ngGQ@@dsUTheAuXirVu}`dMB<\\ngGQ@@dsUTheAuXirVu}`dMB>\\ngGQ@@dsUTheAuXirVv]EN[{AHZD<\\ngGQ@@dsUTheAuXitVm}`dM|>\\ngGQ@@dsUTiDauXirVn]EN[{^HZD<\\ngGQ@@dsUTiDauXirVn]EN[{^HZD>\\ngGQ@@dsUTiDauXitVn\\\\FN[{AHZD<\\ngGQ@@dsUTiDauXitVn\\\\FN[{AHZD>\\ngGQ@@dsUTiDauXitVn]EN[{AHZD>\\ngGQ@@dsUUHauXirVm}`dMB<\\ngGQ@@dsUUHauXirVm}`dMB>\\ngGQ@@dsUUHauXirVm}`dMC~RqI@<\\ngGQ@@dsUUHauXirVm}`gu|>\\ngGQ@@dsUUHauXirVm}oDMB<\\ngGQ@@dsUUHauXirVm}oDMB>\\ngGQ@@dsUUHauXirVm}oGu|<\\ngGQ@@dsUUHauXirVnSENRwvBPtH<\\ngGQ@@dsUUHauXirVnSENRwvBPtH>\\ngGQ@@dsUUHauXirVnSENRwv|PtH<\\ngGQ@@dsUUHauXirVnZFJ\\\\eolDahP<\\ngGQ@@dsUUHauXirVnZFJ\\\\eolDahP>\\ngGQ@@dsUUHauXirVnZFJ\\\\eomxahP<\\ngGQ@@dsUUHauXitVm}`dMB<\\ngGQ@@dsUUHauXitVm}`dMB>\\ngGQ@@dtuRAuXirVmu`dH\\ngGQ@@dtuRAuXirVnSENRwVBP`\\ngGQ@@dtuRAuXirVn\\\\FI[kAHP\\ngGQ@@dtuRAuXirVn\\\\FI[{AH[t\\ngGQ@@dtuRAuXitZn\\\\FI[kAHP\\ngGQ@@dtuSHauXirVmu`gp>\\ngGQ@@dtuSHauXirVnRFJRwVBP`<\\ngGQ@@dtuSHauXirVnRFNRwVB_@<\\ngGQ@@dtuSHauXirVnSENRwVB_@>\\ngGQ@@dtuSHauXirVn]EI[kAHP<\\ngGQ@@dtuSHauXirVn]EI[kAHP>\\ngGQ@@dtuSHauXirVn]EI[{AH[t<\\ngGQ@@dtuSHauXirVn]EI[{AH[t>\\ngGQ@@dtuSHauXirVn]GI[kAO`<\\ngGQ@@dtuSHauXirZn]EI[kAHP<\\ngGQ@@dtuSHauXirZn]EI[kAHP>\\ngGQ@@dtuTAuXirVm}`dMB\\ngGQ@@dtuTAuXirVm}oGuB\\ngGQ@@dtuTAuXirVnSENRwvBPtH\\ngGQ@@dtuTAuXirVnSENRwvBPwp\\ngGQ@@dtuTAuXirVn\\\\FI[{AHZD\\ngGQ@@dtuTAuXirVn\\\\FI[{AH[x\\ngGQ@@dtuTAuXirVu}`dMB\\ngGQ@@dtuTAuXitZm}`dMB\\ngGQ@@dtuUHauXirVm}`guB<\\ngGQ@@dtuUHauXirVm}`guB>\\ngGQ@@dtuUHauXirVnRFJRwvBPtH<\\ngGQ@@dtuUHauXirVnRFJRwvBPtH>\\ngGQ@@dtuUHauXirVnRFNRwvB_TH<\\ngGQ@@dtuUHauXirVnRFNRwvB_TH>\\ngGQ@@dtuUHauXirVnSENRwvB_TH<\\ngGQ@@dtuUHauXirVn]EI[{AHZD<\\ngGQ@@dtuUHauXirVn]EI[{AHZD>\\ngGQ@@dtuUHauXirVn]EI[{AHZG|dcb>\\ngGQ@@dtuUHauXirVn]EI[{AH[x<\\ngGQ@@dtuUHauXirVn]EI[{AH[x>\\ngGQ@@dtuUHauXirVn]EI[{AOjD<\\ngGQ@@dtuUHauXirVn]EI[{AOjD>\\ngGQ@@dtuUHauXirVn]EI[{^OjD<\\ngGQ@@dtuUHauXirVn]EI[{^OjD>\\ngGQ@@dtuUHauXirVn]GI[{AOjD<\\ngGQ@@dtuUHauXirVn]GI[{AOjD>\\ngGQ@@dtuUHauXirVn]GI[{AOkx<\\ngGQ@@dtuUHauXirVn]GI[{AOkx>\\ngGQ@@dtuUHauXirVv]EI[{AHZD<\\ngGQ@@dtuUHauXirZm}`dMB<\\ngGQ@@dtuUHauXirZm}`dMB>\\ngGQ@@dtuUHauXirZm}`dM|<\\ngGQ@@dtuUHauXirZn\\\\FI[{AHZD<\\ngGQ@@dtuUHauXirZn\\\\FI[{AHZD>\\ngGQ@@dtuUHauXirZn]EI[{AHZD<\\ngGQ@@dtuUHauXirZn]EI[{AHZD>\\ngGQ@@dtuUHauXirZu}`dMB<\\ngGQ@@dtuUHauXirZu}`dMB>\\ngGQ@@dtuUHauXitVm}`guB<\\ngGQ@@dtuUHauXitVm}`guB>\\ngGQ@@dtuUHauXitVn]GI[{AOjD>\\ngGQ@@dwSTAtYYKVyFulahP\\ngGQ@@dwSTAuXirVmtPtH\\ngGQ@@dwSTAuXirVm|ndMB\\ngGQ@@dwSULauXirVn]EN[hahP>\\ngGQ@@dwSULauXirVn]EN[y]HZD<\\ngGQ@@eMUTAtpqSdm[eApRFa@\\ngGQ@@eMUTAtpqSdm[eApRFa\\x7FIHx`\\ngGQ@@eMUTAtpqSdm[eApRF~@\\ngGQ@@eMUTAtpqSdm[eApSz~@\\ngGQ@@eMUTAtpqSdm\\\\dLTynTGAHZD\\ngGQ@@eMUTAtpqSdm\\\\dLTynU{AHZD\\ngGQ@@eMUTAtpqSdm\\\\xLRwJC`dM|\\ngGQ@@eMUTAtpqSdm\\\\xLRwJ}`dM|\\ngGQ@@eMUTAtpqSdm\\\\xLTwJC`dMB\\ngGQ@@eMUTAtpqSdm\\\\xLTwJ}`dMB\\ngGQ@@eMUTAtpqSdmkeApRFa@\\ngGQ@@eMUTAtpqSdmkeApRFa\\x7FIHx`\\ngGQ@@eMUTAtpqSdukeApRFa@\\ngGQ@@eMUTAtpqShukeApRFa@\\ngGQ@@eMUTAtpqShulxLTwJ}`dMB\\ngGQ@@eMUTAtpqUdm[eApRFa@\\ngGQ@@eMUTAtpqUdm\\\\xLRwJC`dM|\\ngGQ@@eMUTAtpqUdm\\\\xLTwJC`dMB\\ngGQ@@eMUTAtpqUdulxLTwJC`dMB\\ngGQ@@eMUUHatpqSdm\\\\dLTenU{AH[x>\\ngGQ@@eMUUHatpqSdm\\\\xLTwJC`dM|<\\ngGQ@@eMUUHatpqSdm\\\\xLTwJC`dM|>\\ngGQ@@eMUUHatpqSdmlxLTwJC`dMB<\\ngGQ@@eMUUHatpqSdmlxLTwJC`dMB>\\ngGQ@@eMUUHatpqSdu[eApRF~@<\\ngGQ@@eMUUHatpqSdu[eApRF~@>\\ngGQ@@eMUUHatpqUdmlxLTwJC`dMB>\\ngGQA@NRYjP@zT\\\\wQw]`=\\ngGQA@NRYjP@zT\\\\wvz]wX=\\ngGQA@NRYjP@zT\\\\ytTeomt{oP\\ngGQAAIRYj`@zT\\\\wvB]wX+\\ngGQAAIRYjf@zlTyK[Nbdm}`gmB>\\ngGQBBGBNB\\\\LxYIIZj@zpRunYy^wjD\\ngGQDHGBnBUSUPGUCENRwJC`dM|\\ngGQDHGBnBUSUPGUCENRwJC`gu|\\ngGQDHGBnBUSUPGUCENRypXenTGAH[x\\ngGQDHGBnBUSUPGUCENSWJC`dM|\\ngGQDHGBnBUSUPGUCEVcWJC`dM|\\ngGQDJ@aABSWUPGVcdmxP`\\ngGQDJIARBSWUPGVcdmx_@\\ngGQDJIARBSWUPGVcdn\\\\gI[p~@\\ngGQDLOA^FQRFj`NmDm[x^WjD\\ngGQHAJAIfj@CiQs_XIw]`+\\ngGQHAJAIfj@CiQs_XI{^`+\\ngGQHAJAIfj@CiQu_XIw^`>\\ngGQHAJAIfj@CiQu_XI{^`+\\ngGQHAJAIfj@CiQugQRV~pSn}@>\\ngGQHAJAIfj@CiQugQSf~pSv}@>\\ngGQHAJAIfjXCjqShmk{AOZD>\\ngGQHAJAIfjhCjqSdm[{AHZD>\\ngGQHAjAInfhChrrZurMkYCP`\\ngGQHB@aIfiXChqSfn]EI[k]hP\\ngGQHB@aIfiXChqSfuyP`\\ngGQHB@aIfiXChqSfv]EI[k]hP\\ngGQHB@aIfiXCkRSV~F}na@\\ngGQHB@aIfiXCkRSV~F}va@\\ngGQHB@aIfiXCkRSWNbdm|M{mB\\ngGQHB@aIfiXCkRSZ~F}na@\\ngGQHB@aIfiXCkRSZ~F}va@\\ngGQHB@aIfiXCkRS[Nbdm|M{mB\\ngGQHB@aIfidCiRU\\\\c^v]wX\\ngGQHB@aIfjiQJChqSjn\\\\FI[kAhP>\\ngGQHB@aInfjZCkRsV~Fuva@<\\ngGQHBGAIfiXChqSfn]EI[h^hP\\ngGQHBHaIfiXChqSfn]EI[k]hP\\ngGQHBHaIfiXChqSfn]EI[k]o`\\ngGQHBHaIfiXChqSfn]EI[ra@\\ngGQHBHaIfiXChqSfv]EI[k]hP\\ngGQHBHaIfjiQIChqSfmu`tH<\\ngGQHBHaIfjiQJChqSfmu`tH>\\ngGQHBHaIfjiQJChqSfn]EI[kAhP<\\ngGQHBHaIfjiQJChqSfn]EI[kAhP>\\ngGQHBIAIfiXChqSfn]EI[k]hP\\ngGQHBIAIfjiQIChqSfnSENRwVCP`>\\ngGQHBIAIfjiQIChqSfn]EI[kAhP>\\ngGQHBIAIfjiQJChqSfn]EI[kAhP<\\ngGQHBIAIfjiQJChqSfn]EI[kAhP>\\ngGQHBJqIfiXChqSfn]EI[k]hP\\ngGQHBJqIfiXChqSfn]EI[ra@\\ngGQHBJqIfjiQJChqSfn]EI[kAhP<\\ngGQHBLQIfiXChqSfn]EI[k]hP\\ngGQHBLQIfiXChqSfn]EI[ra@\\ngGQHBLQIfiXChqSfv]EI[k]hP\\ngGQHBLQIfjZQChqSfuu`tH<\\ngGQHBLQIfjZQChqSfuu`tH>\\ngGQHBLQIfjiQIChqSfmu`tH>\\ngGQHBLQIfjiQJChqSfmu`tH>\\ngGQHBLQInfjZChqSfn]EI[ra@>\\ngGQHD@aInZ@CjQshiK]G]z\\ngGQHD@aInf@CjQncn{@=\\ngGQHD@aInfhChqrVmtPtH\\ngGQHDHaInf@CjQncn{@=\\ngGQHDOAIijjQCjqSdm\\\\dLTenQ{AH[x<\\ngGQHDOAIijjQCjqSdm\\\\dLTeolDao`<\\ngGQHDOAIkjjQChqrVnRFJRwQC_@<\\ngGQHDOAIkjjQChqrVnRFJRwp|Pwp<\\ngGQHDOAInf@CjQncn{@=\\ngGQHDOAInjBQCjQoax{np+\\ngGQHDOAInjBQCjQoax{np-\\ngGQHH@aJnZBACiAs_XIw]`+\\ngGQHH@aJnZBACiAs_XIw]`-\\ngGQHH@aJnZBACiAs_XIw^`>\\ngGQHH@aJnZBACiAs_[qw]`-\\ngGQHH@aJnZBACiAu_XIw]`+\\ngGQHH@aJnZBACiAu_XIw]`-\\ngGQHH@aJnZBACiAu_XIw^`<\\ngGQHH@aJnZBACiAu_XIw^`>\\ngGQHH@aJnZBACiAugQRV~pSn}@<\\ngGQHH@aJnZBACiAugQRV~pSn}@>\\ngGQHH@aJnZZACkAUf~pSv}@<\\ngGQHH@aJnZZACkAUf~pSv}@>\\ngGQHH@aJnZZACkAUj~pSv}@<\\ngGQHH@aJnZZACkAUj~pSv}@>\\ngGQHH@aJnZjACjaShm[{AHZD>\\ngGQHHDQJnZ@CiAu_XIw^`>\\ngGQHHGAIZjhCjqSdm[d^pRFa@\\ngGQHHGAIZjhCjqSdm[d^pRF~@\\ngGQHHGAIZjhCjqSdm\\\\xLTwH}`dMB\\ngGQHHGAIZjhCjqSdmkd^pRFa@\\ngGQHHGAIZjhCjqSdukd^pRFa@\\ngGQHHGAJijhCiabgIZwJC`dMB\\ngGQHHGAJijhCiabgIZwJC`dM|\\ngGQHHGAJijhCiabgIZwJC`guB\\ngGQHHGAJijhCiabgIZwJC`gu|\\ngGQHHGAJijhCiabgI[WJC`dMB\\ngGQHHGAJijhCiabgI[WJC`guB\\ngGQHHGAJijhCiabkQZwJC`guB\\ngGQHHGAJijhCiabkQ[WJC`guB\\ngGQHHGAJijhCiabkQjwJC`dMB\\ngGQHHGAJkjdCjaSdm[kAHP\\ngGQHHGAJkjhCjaSdm[{AHZD\\ngGQHHOAJkZhCjaSdm[{AHZD\\ngGQHHOAJkZhCjaShu[{AHZD\\ngGQHHOAJkZhCjaShuk{AHZD\\ngGQHJGAJijhCjabgI[yApRD\\ngGQH`jBRnRnjj@zXXitZus@xICP`\\ngGQI@jA\\\\e]UTAtpqSdukfApRFa@\\ngGQI@jA\\\\e]UTAtpqSdulxLTwLC`dMB\\ngGQI@jA\\\\e]UTAtpqShukfApRFa@\\ngGQIAJB\\\\dsU@AthzolD}oP+\\ngGQIAJB\\\\dtuTAuXirVm}`dMB\\ngGQIAJB\\\\dtuTAuXitZn\\\\FI[{AHZD\\ngGQIB@`|dsTrAuiIkgQRV~F}v}@\\ngGQIHBpReWU@At`zolD{oP>\\ngGQIHO@ReUuTAuPirVm}`dMB\\ngGQIJO@ReTuTAuPqSdm|`xIB\\ngGQLBIARFdLbdMU@]ZIZweB\\ngGQLBIARFdLbdMU@]ZI[WeB\\ngGQLJHaQFbLbdMU@]JIP\\ngGQLJIARFdLbdMU@]JIP\\ngGQLL@b^BBDfmjiDNcGIjwQCP`<\\ngGQ`@ZdsMTAuhisdqSdmy``\\ngGQ`@ZdwSTAtiYnam[@\\ngGQ`@bdwMLAuhyk^TH\\ngGQ`@bdwMLAuhym^TH\\ngGQ`@bdwMRAthzncn{@\\ngGQ`@bdwMRAthzncn}@\\ngGQ`@bdwMRAuhyj\\ngGQ`@bdwMRAuhyk^Wh\\ngGQ`@bdwMUMAuhyk^TH<\\ngGQ`@bdwMUMAuhyk^TH>\\ngGQ`@bdwMUMAuhyk^Wp<\\ngGQ`@bdwMUMAuhyk^Wp>\\ngGQ`@bdwMUMAuhykgQSf|hP<\\ngGQ`@bdwMUMAuhykgQSf|hP>\\ngGQ`@bdwMUMAuhym^TH<\\ngGQ`@bdwMUMAuhym^TH>\\ngGQ`@bdwUThlauhykgARV|hP<\\ngGQ`@bdwUThlauhykgARV|hP>\\ngGQ`@bdwUThmAuhykgARV|hP<\\ngGQ`@bdwUThmAuhykgARV|hP>\\ngGQ`@bdwUThmAuhykgARV|o`<\\ngGQ`@bdwUUMAuhykdabdmyP`<\\ngGQ`@bdwUUMAuhykdabdmyP`>\\ngGQ`@jduuTAuhyK^DH\\ngGQ`@jduuTAuhyKgIrV|HP\\ngGQ`@jduuTAuhyM^DH\\ngGQ`ALe]UTAtPiKVzHZD\\ngGQ`ALe]UTAtPiKWNCEMtPtH\\ngGQ`ALe]UUDatPiKWICEN[hahP<\\ngGQ`AbeMUTAtPqSVzPZD\\ngGQ`AbeMUTAtPqSWICEN[iAhP\\ngGQ`AbeMUTAtPqS[ICEN[iAhP\\ngGQa@bnR[fjf`zt\\\\uoJD<\\ngGQa@bnR[fjf`zt\\\\uoJD>\\ngGQa@bnR[fjf`zt\\\\voJD<\\ngGQa@bnR[fjf`zt\\\\voJD>\\ngGQdEb@b^BSRuPGVbfmyP`\\ngGQdEb@b^BSRuPGVbfuyP`\\ngGQdEbGBNBUWUPGVBfmuOTH\\ngGQdHl@btFRREZ`NlGI[h~o`\\ngGQdHlGBnBUSUPGVCDmtPwp\\ngGQdHlGBnBUSUPGVCDmt_Wp\\ngGQdHlGBnBUSUPGVCDutPwp\\ngGQdHlGBtBUSUPGVCDuxP`\\ngGQdHlOB~BUVuTBGVBdutPwp>\\ngGQdHlOB~BUVuTBGVBdv]EI[hao`<\\ngGQdHlOB~BUVuTBGVBdv]EI[hao`>\\ngGQdIbBqNBRuUPGVbfmtOWp\\ngGQdLZ@a^BRuSPGRbf|G`\\ngGQdhlOBt@f|eTuTAu`qM]DM|\\ngGQdibOAT@e\\\\dmUTAuhim]CuB\\ngGQeEb@bN@yIijhCkQSV|o`\\ngGQeEb@bN@yIijhCkQSZ|hP\\ngGQhHl@cIIBmPGQCdm[hahP\\ngGQhHl@cIIBmPGQCdm[h~hP\\ngGQhHl@cIIBmPGQCdmkhahP\\ngGQhHl@cIIBmPGQCdmkh~hP\\ngGQhHl@cIIBmPGQCdu[hahP\\ngGQhHl@cIIBmPGQCdukhahP\\ngGQhHl@cIIJmPGVBVmy_@\\ngGQhHlBqJijhChabZv\\\\GI[hah_rTJH\\ngGQhHlGAJijhChabVmtPtH\\ngGQhHlGAJijhChabVmtPwp\\ngGQhHlGCIIKUHGVBVh\\ngGQhHlGCIIKUPGVBVmyP`\\ngGQhHlOAJkZjAChaRVmtPtH<\\ngGQhHlOAJkZjAChaRVmtPtH>\\ngGQhHlOAJkZjAChaRVmt_TH<\\ngGQhHlOAJkZjAChaRVmt_TH>\\ngGQhHlOAJkZjAChaRVn]EI[hahP<\\ngGQhHlOAJkZjAChaRVn]EI[hahP>\\ngGQhHlOAJkZjAChaRVn]EI[h~hP<\\ngGQhHlOAJkZjAChaRVn]EI[h~hP>\\ngGQhHlOAJkZjAChaRVutPtH<\\ngGQhHlOAJkZjAChaRVutPtH>\\ngGQhHlOAJkZjAChaRZmtPtH<\\ngGQhHlOAJkZjAChaRZmtPtH>\\ngGQhHlOAJkZjAChaRZutPtH<\\ngGQhHlOAJkZjAChaRZutPtH>\\ngGQhHlOCIIJuHGVBVmy^`\\ngGQhHlOCIIJuPGVBVmyP`\\ngGQhHlOCIIJuPGVBVuyP`\\ngGQiAbjA\\\\e]UTAtPqSZz`ZD\\ngGQiHl@c]ddeVhCkAKV|hP\\ngGQiHl@c]ddeVhCkAKV|o`\\ngGQiHlOC]ddeZjACkAKV|hP<\\ngGQiHlOC]ddeZjACkAKV|hP>\\ngGR@@cTfxH@MrMkYw]`=\\ngGR@@cTfyi`NeKUrMkYw]`\\ngGR@@cTfyi`NeKUrMkYw^`\\ngGR@@cTfyi`NeKUrMkiw^`\\ngGR@@cTfzj`NeGNZFJ\\\\e@\\ngGR@@lTfYj`NeEUt]wo{Q@\\ngGR@@lTfYj`NeIUrM{Yw^\\x7FmD\\ngGR@@lTfxJ`NijyFul{n\\x7Fvf@=\\ngGR@@lTfxJ`NijyFul{o_vf@=\\ngGR@@m\\\\bdMU@]JIP\\ngGR@ACTjzj`NdIMuM{_{P@\\ngGR@ACTjzj`NdIMuM{o{P@\\ngGRA@l]rSLuPGRdjyF}l{o_vb@\\ngGRD@cYPZ`R[jj@zT\\\\`\\ngGRDHlQxWpRjYi@zPX\\x7FmH\\ngGREHlQxWpTiULtpH]HL\\\\xJR\\x7FmH<\\ngGREHlQxWpTiULtpH]HL\\\\xJR\\x7FmH>\\ngGREHlQxWpWIU[U@]HJ\\\\xLRwe}~tP\\ngGREIcQxKpTiKSU@]JJ\\\\xLT\\x7FmH\\ngGRHHlQxIU[U@]XJZweC~tP\\ngGRHHlQxYIHPj@zVZwtvmtO{S@\\ngGRHHlQxYIHPj@zVZwtvmww{S@\\ngGRHHlQxYIHPj@zVZyr\\\\eoim[h_vf@\\ngGRHHlQxYIHPj@zV[WtvmtO{S@\\ngGRIHlQxBTjfj`NlFM[ra@\\ngGRIHlQxRTjmj`NlEM[ra\\x7FZH\\ngGT@@TfX`@MrM{Yw]`\\ngGT@@TfX`@MrM{Yw^`\\ngGT@@TfX`@MrM{Y{]`\\ngGT@@TfX`@MrM{iw^`\\ngGT@@TfX`@N]EI[d[wSn}@\\ngGT@@TfXa`NdfmrM{Y{P`\\ngGT@@TfXa`Ndfm|M{]B\\ngGT@@TfXa`NdfurM{Y{P`\\ngGT@@TfXa`Ndfu|M{]B\\ngGT@@TfXbPNdfmtM{X\\ngGT@@TfXbPNdfm|M{]z\\ngGT@@TfXbPNhjyF}l{np\\ngGT@@TfXbPNhjyF}l{oP\\ngGT@@TfXbPNhjyF}l}np\\ngGT@@TfXbPNhjyF}t{np\\ngGT@@TfXbPNhjyF}t{oP\\ngGT@@TfXbPNhkNbdmrM{iw^`\\ngGT@@TfYh@NiJyF}l{np\\ngGT@@TfYh@NiJyF}t{np\\ngGT@@TfYi`NcENZwVCP`\\ngGT@@TfYi`NcENkWH{`gmB\\ngGT@@TfYjPNcENZytTeoLD\\ngGT@@TfYjPNmEV[{AN{l\\ngGT@@TfYjPNmEV[{AN{t\\ngGT@@TfZfPNeIUrM{Yw]`\\ngGT@@TfZfPNeIUrM{Yw^`\\ngGT@@TfZfPNeIUrM{Y{]`\\ngGT@@TfZfPNeIUrM{iw^`\\ngGT@@TfZfPNeIUrN{Y{]`\\ngGT@@TfZfPNeIUrN{i{^`\\ngGT@@TfZjeDdNcENZwVCP`\\ngGT@@TfZjeDdNcENZytTenlFa@\\ngGT@@TfZjeDdNcEN[WVCP`<\\ngGT@@TfZjeDdNcEN[YtTynlFa@>\\ngGT@@TfZjeDdNcENkWVCP`\\ngGT@@TfZjeDhNcENZwVCP`<\\ngGT@@TfZjeDhNcENZwVCP`>\\ngGT@@TfZjeDhNcENZyhXirVzpZD<\\ngGT@@TfZjeDhNcENZytTenlFa@<\\ngGT@@TfZjeDhNcENZytTenlFa@>\\ngGT@@TfZjeDhNcEN[WVCP`<\\ngGT@@TfZjeDhNcEN[WVCP`>\\ngGT@@TfZjeDhNcEN[YpXynlFa@>\\ngGT@@TfZjeDhNcENkWVCP`<\\ngGT@@TfZjeDhNcENkWVCP`>\\ngGT@@TfZjeDhNcENkYpXynlFa@>\\ngGT@@TfxJihNefm|Mk]B<\\ngGT@@TfxJihNefm|Mk]B>\\ngGT@@TfxJihNefm|Mk]|>\\ngGT@@TfzZihNmKM\\\\zJ\\\\wpvntH<\\ngGT@@TfzZihNmKM\\\\zJ\\\\wpvntH>\\ngGT@@TfzZihNmKM\\\\zJ\\\\wpzntH>\\ngGT@@TfzZihNmKMlzJ\\\\wpvntH<\\ngGT@@TfzZihNmKMlzJ\\\\wpvntH>\\ngGT@@TjZjPNbFR\\\\wJC`g]z=\\ngGT@@TjZjPNbFR\\\\wJC`gmz=\\ngGT@@TjZjPNbFR\\\\ypXenTGAN{w}h@\\ngGT@@TjZjPNbFR\\\\ypXenTGAO[t\\ngGT@@TjZjPNbFR\\\\ypXenTGAO[w}h@\\ngGT@@TjZjPNjFJ\\\\undGA\\x7FZ@=\\ngGT@@TjZjPNjFJ\\\\uodGAo_v`@=\\ngGT@@TjZjPNjFJ\\\\usPqSdm|`xM{~t@=\\ngGT@@TjZjPNjFJ\\\\us`qK]HNC~t@\\ngGT@@TjZjPNjFJ\\\\us`qK_HNC^\\x7Fm@\\ngGT@@TjZjPNjFJ]Us`is_HNC^\\x7Fm@\\ngGT@@TjZjPNjFJ]Us`qK_HNC^\\x7Fm@\\ngGT@@TjZjdEDNjFJ\\\\vs`qs_HNCP`<\\ngGT@@TjZjiDNjFJ\\\\uodGAh_v`@+\\ngGT@@TjZjiDNjFJ\\\\urPqrV~P\\\\Fa\\x7FZ@<\\ngGT@@TjZjiDNjFJ\\\\usPqSdm|`xMB<\\ngGT@@TjZjiDNjFJ\\\\usPqSdm|`xMB>\\ngGT@@TjZjiDNjFJ\\\\usPqSdm|`xMC~t@-\\ngGT@@TjZjiDNjFJ\\\\us`qK_HNC__m@<\\ngGT@@TjZjiDNjFJ\\\\us`qK_HNC__m@>\\ngGT@@TjZjiDNjFJ\\\\us`qs_HNCP\\x7Fm@>\\ngGT@@TjZjiDNjFJ\\\\vodGAhP>\\ngGT@@TjZjiDNjFJ\\\\vrPqSf~P\\\\Fa@<\\ngGT@@TjZjiDNjFJ\\\\vrPqSf~P\\\\Fa@>\\ngGT@@TjZjiDNjFJ\\\\vs`qs_HNCP\\x7Fm@<\\ngGT@@TjZjiDNjFJ]Vs`qs_HNCP\\x7Fm@<\\ngGT@@TjZjiDNjFJ]Vs`qs_HNCP\\x7Fm@>\\ngGT@@TjZjiDNlJM\\\\xJRwrwntO{P@<\\ngGT@@TjZjiDNlJM\\\\xJRwrwntO{P@>\\ngGT@@TjZjiDNlJMlxL\\\\wr{ntO{P@<\\ngGT@@TjZjiDNlJMlxL\\\\wr{ntO{P@>\\ngGT@@dfXb`NhjyF}l{n\\x7Fvb@=\\ngGT@@dfXb`NhjyF}l{o_vb@\\ngGT@@dfXb`NhjyF}l}o_vb@=\\ngGT@@dfXb`NhjyF}t{n\\x7Fvb@=\\ngGT@@dfXb`NhjyF}t{o_vb@\\ngGT@@dfXb`Nldm[d[vrFa\\x7FZH=\\ngGT@@dfXb`Nldm[d[wRFa@\\ngGT@@dfXb`Nldm[d[wRFa\\x7FZH=\\ngGT@@dfXb`Nldm\\\\zJ\\\\wHwndMC~tP\\ngGT@@dfXb`Nldmkd[vrFa\\x7FZH\\ngGT@@dfXb`Nldmkd[wRFa\\x7FZH\\ngGT@@dfXb`Nldukd[vrFa\\x7FZH=\\ngGT@@dfXb`Nldukd[wRFa\\x7FZH=\\ngGT@@dfXbhdNldm\\\\zJ\\\\wHwndMB<\\ngGT@@dfXbhdNldmlzJRwHwndMB<\\ngGT@@dfXbhdNldmlzJRwHwndMB>\\ngGT@@dfYj`NcIIZwHwndMC~tP=\\ngGT@@dfYj`NkENRuolDah_vb@=\\ngGT@@dfYj`NkENRuomxah_rPJMh`=\\ngGT@@dfYj`NkENRusPqSdm}`dMC~tP=\\ngGT@@dfYj`NkENRus`qs_XICP\\x7FmD\\ngGT@@dfYj`NkENRushis_XICP\\x7FmD\\ngGT@@dfYj`NkENRvs`qs_XICP\\x7FmD\\ngGT@@dfYj`NkENRvshiK_XICP\\x7FmD\\ngGT@@dfYj`NkENRvshiK_[qCP\\x7FmD\\ngGT@@dfYj`NkENRvshis_XICP\\x7FmD\\ngGT@@dfYj`NkENbuolDah_vb@=\\ngGT@@dfYj`NkENbusPqSdm}`dMC~tP=\\ngGT@@dfYj`NkENbus`qs_XICP\\x7FmD\\ngGT@@dfYj`NkENbvs`qs_XICP\\x7FmD\\ngGT@@dfnjPNcGIZyr\\\\eoBD\\ngGT@@dfnj`NcGIZwQCP`\\ngGT@@dfnj`NcGIZyHXiK]DMB\\ngGT@@dfnj`NcGIZyr\\\\enbFa@\\ngGT@@dfnj`NcGI[WQCP`\\ngGT@@dfxH@MrMkYw]`=\\ngGT@@dfxH@MrMkYw^`=\\ngGT@@dfxH@MrMkY{^`=\\ngGT@@dfyh@NiFzN{l=\\ngGT@@dfyh@NiFzN{t\\ngGT@@dfyh@NiFzO[t=\\ngGT@@dfyh@NiF~GSn{@=\\ngGT@@dfyh@NiF~GSn{\\x7FI@p`=\\ngGT@@dfyh@NiF~GSn}@\\ngGT@@dfyh@NiGNBdmt]wh\\ngGT@@dfyh@NiGNbdmt]wh\\ngGT@@dfyh@NiJyFul{np=\\ngGT@@dfyh@NiJyFul{oP\\ngGT@@dfyh@NiJyFul}oP=\\ngGT@@dfyh@NiJyFut{np=\\ngGT@@dfyh@NiJyFut{oP\\ngGT@@dfyh@NiJyFut}oP=\\ngGT@@dfyh@NiKNbdmrMkiw^`\\ngGT@@dfyi`NcGIZytTyncva@\\ngGT@@dfyi`NeGV\\\\EN[h}np\\ngGT@@dfyi`NeKUrMkiw^`\\ngGT@@dfyj`NcGIZwQCP`\\ngGT@@dfyj`NcKIZwHvndMB\\ngGT@@dfyjidNcGI[WQCP`<\\ngGT@@dfzh@NiFzN{l=\\ngGT@@dfzh@NiFzN{t\\ngGT@@dfzhIDNiGNBdmt]wh<\\ngGT@@dfzhIDNiGNBdmt]wh>\\ngGT@@dfzi`NeGUt]wh\\ngGT@ADjZj`NbJIZwJ{ndMC~t@=\\ngGT@ADjZj`NfFJ\\\\ek\\\\hNBPtO{HP=\\ngGT@ADjZj`NfFJ\\\\ekgAcfyP\\\\Dah_vP`\\ngGT@ADjZj`NfFJ\\\\em\\\\hNBPtO{HP=\\ngGT@ADjZjiDNfFJ\\\\ekgAcfyP\\\\Dah_v`@<\\ngGT@ADjzh@NdGM}`g]w~t@=\\ngGT@ADjzh@NdGM}`g]{~t@\\ngGT@ADjzh@NdGM}`gm{~t@=\\ngGT@ADjzh@NdGM}oG]w~t@=\\ngGT@ADjzh@NdGU}`g]w~t@=\\ngGT@ADjzh@NhJyf}l{n\\x7Fv`@=\\ngGT@ADjzh@NhJyf}l{o_v`@\\ngGT@ADjzh@NhJyf}l}o_v`@=\\ngGT@ADjzh@NhJyf}t{n\\x7Fv`@=\\ngGT@ADjzh@NhJyf}t{o_v`@\\ngGT@ADjzh@NhJyf}t}o_v`@=\\ngGT@ADjzh@NhKNbdmsM{iw^\\x7Fm@\\ngGT@ADjzi`NbIIZwLwmgmC~t@\\ngGT@ADjzi`NbIIZwtwmtO{P@\\ngGT@ADjzi`NjENRushis_XI{P\\x7Fm@\\ngGT@ADjzj`NbIIZwLwmdMC~t@\\ngGT@ADjzj`NbIIZwLwndMC~t@\\ngGT@ADjzj`NjENRuolDah_v`@\\ngGT@ADjzj`NjENRurPqrV~pRFa\\x7FZ@\\ngGT@ADjzjdDhNjENRus`qs_XICP`<\\ngGT@ADjzjhdNbII[WLwndMC~t@>\\ngGT@ADjzjhdNbII[YtTynYo]HZG}h@>\\ngGT@ADjzjhdNjENRurPqrV~pRF~\\x7FZ@<\\ngGT@ADjzjhdNjENRurPqrV~pRF~\\x7FZ@>\\ngGT@ADjzjhdNjENRus`qs_XICP\\x7Fm@<\\ngGT@ADjzjhdNjENRus`qs_XICP\\x7Fm@>\\ngGT@ADjzjhdNjENRvolDah_v`@<\\ngGT@ADjzjhdNjENRvolDah_v`@>\\ngGT@ADjzjhdNjENRvshis_XICP\\x7Fm@<\\ngGT@ADjzjhdNjENRvshis_XICP\\x7Fm@>\\ngGT@ADkij`NjENRuolDah_v`@\\ngGT@ATeVn`NeDh\\ngGT@ATffj`NcENRwVBP`\\ngGT@ATffj`NcENRyLTyK]XIB\\ngGT@ATffjiDNcENRytTenlDa@<\\ngGT@ATffjiDNcENRytTenlDa@>\\ngGT@Adijj`NjFJRuodDah_v`@\\ngGT@Adijj`NjFJRus`qS_HICP\\x7Fm@\\ngGT@Adijj`NjFJbus`qS_HICP\\x7Fm@\\ngGT@`QIeIfH@C\\\\c^v]wX\\ngGT@`QIeIfH@CgAcfyG]l}np\\ngGT@`QIeIfjiQJChqSfn]EI[kAhP<\\ngGT@`QIeIfjiQJChqSjuu`tH<\\ngGT@`QIeIfjiQJChqSjuu`tH>\\ngGT@`aJyInZ@CjRnQu[N{l=\\ngGT@aAteJzjhCjaSdm[{AHZG}h@\\ngGTA@QJSLP@FyF}l{np\\ngGTA@QJSLP@FyF}l{oP\\ngGTA@QJSLPpGRSV~F}na@\\ngGTA@QJSLuHGVbkM}`g]v\\ngGTA@QJSLuHGVbkV]EN[{AO[l\\ngGTA@QJSMURbTGQbgM\\\\zJRwVCP`<\\ngGTA@aJSLuPGUbgIZwH{`dMC~tP=\\ngGTA@aJSLuPGUbgIZyhXirV~pRFa\\x7FZH=\\ngGTA@aJS\\\\D@FyFul{np=\\ngGTA@aJS\\\\t@GTc]G]v=\\ngGTA@aJS\\\\t@GTc]G]z\\ngGTA@aJS\\\\t@GTc_Ciw]`=\\ngGTA@aJS\\\\t@GTc_Ciw]\\x7Fd`XP=\\ngGTA@aJS\\\\t@GTe\\\\cZv]wX=\\ngGTA@aJS\\\\t@GTe\\\\cjz]wX=\\ngGTA@erS\\\\t@GTe\\\\cZv]wX=\\ngGTAAAJU\\\\t@GTE\\\\s^z^wo{P@=\\ngGTAAAJU]R@GTE\\\\s^v]w_{P@=\\ngGTAAAJU]R@GTE\\\\s^z]w_{P@=\\ngGTAAIJTuMPGSCENRus`qS\\\\knBPtO{P@\\ngGTAAQJSSUPGQbgI[kAHP\\ngGTAAQJUSUPGUCENRyHXiK_HNBP`\\ngGTBLQDSpTQ_AIkjTCiQs~tp\\ngGTCLQDSpTQ_@}dTaihCiQKgIrV|oova@\\ngGTD@UPZ`Rkjj@zHYImgQSfz`ZG}h@>\\ngGTD@]PV`rRFUTAtPqSfz`TD>\\ngGTDCPDZ`R[ij@zTlwPvm`\\ngGTDEPDDHR[ff@zT\\\\`\\ngGTDEPDDHR[ii@zTmWHvmg]v\\ngGTDEaxSpRkjj`PzHTek]DMB<\\ngGTDEaxSpRkjj`PzHTek]DMB>\\ngGTDQMPV`Dr]uyJffXChabdnZFJ\\\\enmz~\\x7FYB@\\ngGTDcPDHHWFTfyi`NeGUt^wh\\ngGTEIaxKpTiKSU@]FJSVs`qS]DMC~t`\\ngGTH@]PYICJj@zhXisV~`TFa@>\\ngGTH@]PYICJj@zhXisZ~`TFa@>\\ngGTH@iPIMuP@]RMt]wX=\\ngGTH@iPIMuP@]RMt^wh=\\ngGTHAMPIUuP@]PMt]w_{P@=\\ngGTHAMPIUuP@]PM}oG]w~t@=\\ngGTHCPDILsS@]ZJ\\\\ytTenlD}@\\ngGTHCPDILuH@]RUrM{Yw]`=\\ngGTHCPDILuK@]JR[h[vp\\ngGTHCPDILuK@]JRkd[vsn{@\\ngGTHCPDILuK@]JRkd[vsn}@\\ngGTHCQHILuK@]ZJ\\\\ytTy@\\ngGTHCQxITuS@]DLeZnTGAN{t\\ngGTHDPDIMtp@]RUrMkYw]`\\ngGTHDPDIMtuSP]ZVZwpvmtH>\\ngGTHE`DILsU@]FJRunbFa\\x7FZH=\\ngGTHE`DILsU@]FJRushis]DMC~tP\\ngGTHE`DILsU@]FJRvnbFa\\x7FZH\\ngGTHE`DILsU@]FJRvshis]DMC~tP\\ngGTHE`DIMtu@]FNRunbFa\\x7FZX=\\ngGTHE`DIMtu@]FNRushis]DMC~tp\\ngGTHE`DIMtu@]FVRunQm[HZG}i`=\\ngGTHHPxILuS@]FJ\\\\voa{Ah_vd@\\ngGTHHPxILuS@]FJ\\\\voa{^h_vd@\\ngGTHHaxITuUPH]TL]Ek_XICP`<\\ngGTHHaxITuUPH]TL]Ek_XICP`>\\ngGTHHaxYICJ`@z`[h{np=\\ngGTH`iPBYrSWUTbGQcdm[hahP<\\ngGTH`iPBYrSWUTbGQcdm[hahP>\\ngGTHaMPB]rU\\\\t@GTC_[qw]\\x7Fm@=\\ngGTHdPDCeJS]L@GTc]G]v\\ngGTHe`DCeJS]MPGQcdm\\\\zJ\\\\wQCP\\x7FmL\\ngGTHe`DCeJS]MPGQcdmlzJ\\\\wQCP\\x7FmL\\ngGTICQHFTfZe`NmEN\\\\zJR`\\ngGTICQxFTjZi`NbFRmWJC`gmz\\ngGT`CPdfyi`NeGH\\ngGT`CPdfyj`NeGH\\ngGT`EPTfyi`NeGH\\ngGT`EPTfyi`NeGN]EIP\\ngGT`EPTfzZPNeKUrMkYw]`\\ngGT`E`TfYjhhNmEM[ra@<\\ngGT`LPdfyj`NmGM[ra\\x7FZX\\ngGT`LPdfyj`NmGM[r~\\x7FZX\\ngGT`LPdfyj`NmGMkra\\x7FZX\\ngGT`hPiJyInZ@CjQncn}\\x7FZP\\ngGT`hPiJyInZXCiQu]G]w~t`\\ngGT`hPiJyInZXCiQu]G]{~t`\\ngGT`hPiJyInZdCiQu]G]w~t`\\ngGT`hPiJyInZdCiQu]G]{~t`\\ngGT`hPiJyInZdCiQu]Gmw~t`\\ngGT`hPiJyInZdCiQu]Gm{~t`\\ngGT`hPiJyInZdCkQsV|o_vd@\\ngGT`hPiJyInZjYCkQsZ|h_vd@<\\ngGT`hPiJyInZjYCkQsZ|h_vd@>\\ngGT`i`iJyInZhChqrVmtPtO{JX=\\ngGT`i`iJyInZhChqrVutPtO{JX\\ngGTahPiJx|dwMRAthzncn}\\x7FZP\\ngGTdLXaxWpRjvj@zPTwe|\\ngGTdlX`DTHwF\\\\ddJu@]HN[h~oovf@\\ngGTeI\\\\QxKpTiKSU@]JJ\\\\xLR\\x7FmH\\ngGTeLXaxWpOYIIZZ@zPRyr\\\\eoK{}hP\\ngGThLX`DYIHUj@zp\\\\uoJG}i`\\ngGThLX`DYIHUj@zp\\\\voJG}i`\\ngGThLXaxIUMA@]JM[{[NzD\\ngGThLXaxIUMA@]JM\\\\xLRwvv]tH\\ngGThLXaxIUMA@]JMk{[NzD\\ngGThLXaxIUMA@]JMlxLRwvv]tH\\ngGThLXaxIU[U@]XJ[WeB\\ngGThLXaxIU[U@]XJ[WeC~RQq@\\ngGThLXaxYIHVj`Pzp\\\\voJG}i`<\\ngGThLXaxYIHVj`Pzp\\\\voJG}i`>\\ngGThMX`DYIHUj@zp\\\\foBG}i`\\ngGThmX`D[kNRREZ`NlGIkpa\\x7FZX\\ngGTiCQePKdkjj`NlFJ[rA@\\ngGTiCQePKdkjjhdNlFR\\\\xL\\\\wdB<\\ngGTiLXaxGdjffhDNlFMkra@<\\ngGTiLXaxGdjffhDNlFMkra@>\\ngGU@CPdsMLAuhiu^XH\\ngGU@CPdsMLAuhjs_XIw^`\\ngGU@CPdsMLAuhju_XIw^`\\ngGU@CPdsTlAtiJnQo[N{t\\ngGU@DPdsMTAtXisVzpZG}h`\\ngGU@DPdsMTAtXisVzp[{}h`\\ngGU@DPdsMTAtXisWNbdmu`tO{Q@\\ngGU@DPdsMTAtXisWNbgMu`tO{Q@\\ngGU@DPdsMTAtXisZzpZG}h`\\ngGU@DPdsMTAtXis[NbgMu`tO{Q@\\ngGU@DPdsMTAtXiuVzpZG}h`\\ngGU@DPdsMTAtXiuVzp[{}h`\\ngGU@DPdsMTAtXiuWNbdmu`tO{Q@\\ngGU@DPdsMTAtXiuWNbgMu`tO{Q@\\ngGU@DPdsMTAtXiu[NbgMu`tO{Q@\\ngGU@DPdsMTAuhjs_XIw]\\x7FmD\\ngGU@DPdsMTAuhjs_XIw^\\x7FmD\\ngGU@DPdsMTAuhjsgQRV~pSn}\\x7FZH\\ngGU@DPdsMTAuhju_XIw^\\x7FmD\\ngGU@DPdsUUHauhjs_XIw]\\x7FmD<\\ngGU@DPdsUUHauhjs_XIw^\\x7FmD<\\ngGU@DPdsUUHauhjs_XIw^\\x7FmD>\\ngGU@DPdwM@AuHwQw]`\\ngGU@DPdwM@AuHwQw^`\\ngGU@DPdwM@AuHytTencn}@\\ngGU@DPdwMLAthzncn{@\\ngGU@DPdwMLAthzncn}@\\ngGU@DPdwMLAuhyk]GmB\\ngGU@DPdwMLAuhyk^TH\\ngGU@DPdwMLAuhykgQRVzOZD\\ngGU@DPdwMLAuhykgQRV|hP\\ngGU@DPdwMLAuhykgQSf|hP\\ngGU@DPdwMLAuhym^TH\\ngGU@DPdwMLAuhymgQSf|hP\\ngGU@DPdwMRAthzncn{@\\ngGU@DPdwMRAthzncn}@\\ngGU@DPdwMRAthzncv{@\\ngGU@DPdwMRAthzncv}@\\ngGU@DPdwMRAthzshiK]G]z\\ngGU@DPdwMRAthzshiK]Gmz\\ngGU@DPdwMRAthzshis]Gmv\\ngGU@DPdwMRAuhyj\\ngGU@DPdwMRAuhyk^Wh\\ngGU@DPdwMRAuhykgQRT\\ngGU@DPdwMRAuhykgQRV|oP\\ngGU@DPdwMRAuhykgQSd\\ngGU@DPdwMUMAuhyk^TH<\\ngGU@DPdwMUMAuhyk^TH>\\ngGU@DPdwMUMAuhyk^Wp<\\ngGU@DPdwMUMAuhyk^Wp>\\ngGU@DPdwMUMAuhykgQRV|hP<\\ngGU@DPdwMUMAuhykgQRV|hP>\\ngGU@DPdwMUMAuhykgQSf|hP<\\ngGU@DPdwMUMAuhykgQSf|hP>\\ngGU@DPdwMUMAuhym^TH<\\ngGU@DPdwMUMAuhym^TH>\\ngGU@DPdwS@AuHwQw]`\\ngGU@DPdwS@AuIWHvmg]v\\ngGU@DPdwSRAtiZnQm[N{t\\ngGU@DPdwSUMAuhykgQSf|hP<\\ngGU@DPdwSUMAuhykgQSf|hP>\\ngGU@E`dsMTAtXiKVzHZG}h`=\\ngGU@E`dsMTAtXiKVzH[{}h`\\ngGU@E`dsMTAtXiKWNbdmtPww{Q@\\ngGU@E`dsMTAtXiKWNbgMtPtO{Q@\\ngGU@E`dsMTAtXiKWNbgMtPww{Q@\\ngGU@E`dsMTAtXiKZzHZG}h`\\ngGU@E`dsMTAtXiK[NbdmtPtO{Q@\\ngGU@E`dsMTAtXiK[NbgMtPtO{Q@\\ngGU@E`dsMTAtXiMZzHZG}h`=\\ngGU@E`dsMTAthjshiK]G]{~tP\\ngGU@E`dsMTAthjshis]Gm{~tP\\ngGU@E`dwSTAtXyKVzHZG}i`=\\ngGU@E`dwSTAtXyKWNbgMtPtO{S@\\ngGU@E`dwSTAtXyK[NbgMtPtO{S@\\ngGU@LPdmUTAuhik^TH\\ngGU@h`NdiMtp@]RMt]w_{R@=\\ngGUACPYRYjV@ztTynmt}@\\ngGUADPYR[fi@zT]YtTencn}@\\ngGUADPYR[fi@zT]YtTencv}@\\ngGUADPYR[fjf`zt\\\\uoJD<\\ngGUADPYR[fjf`zt\\\\uoJD>\\ngGUADP^R[fi@zT]WQw^`\\ngGUAE`iRYff@zLTekgQSfzOZG}h`\\ngGUAE`iR[ij@zL\\\\ek]DMC~tp=\\ngGUAE`iR[ij@zL\\\\fm]DMC~tp=\\ngGUAIQIRZZj@zLTyKdqSdmu`dH\\ngGUDLT@b^BSRuPGVbfmyP\\x7Fdd\\\\P\\ngGUDLT@b^BSRuPGVbfuyP`\\ngGUDLTHb^BSSPPGRSV~vsna@\\ngGUDLTHb^BSSPPGRSZ~vsna@\\ngGUHEjICHiCUPGRbT\\ngGUHeaZCS^RYfj@ztTfshiK]DM}~tP\\ngGX@@dmMTAuXirVm}`dMB\\ngGX@@dmUTAuXirVm}`dMB\\ngGX@@dmUTAuXirVnRFJ\\\\wvBPtH\\ngGX@@dmUTAuXirVn\\\\FI[{AH[x\\ngGX@@dmUTAuXirVn\\\\FJ[{AHZD\\ngGX@@dmUTAuXirVu}`dMB\\ngGX@@dmUTAuXirVv\\\\FI[{AHZD\\ngGX@@dmUTAuXirZu}`dMB\\ngGX@@dmUUDauXirVn\\\\FJ[{AH[x<\\ngGX@@dmUUDauXirVn\\\\FJ[{AH[x>\\ngGX@@dmUUDauXirVv\\\\FJ[{AHZD>\\ngGX@@dsD@AnQo[N{l=\\ngGX@@dsD@AnQo[N{t\\ngGX@@dsD@AnQo[O[t=\\ngGX@@dsD@AnQo]N{l=\\ngGX@@dsD@AnQo]N{t\\ngGX@@dsD@AnQo]O[t=\\ngGX@@dsD@AnQw[N{l=\\ngGX@@dsD@AnQw]N{l=\\ngGX@@dsD@As`qK\\\\cnv]wh\\ngGX@@dsD@AshiK\\\\c^z]wh\\ngGX@@dsD@Ashis\\\\c^z^wh\\ngGX@@dsDLAuEWHwng]z\\ngGX@@dsDLAudek\\\\c^v^tH\\ngGX@@dsDLAudek\\\\cnv^wp\\ngGX@@dsDLAudek_C^wP`\\ngGX@@dsDLAudem\\\\c^v^tH\\ngGX@@dsDLAudemgAcfyG]l}hP\\ngGX@@dsDLAudemgQRVyF}t}hP\\ngGX@@dsM@AthynQwAN{l=\\ngGX@@dsM@AthynQwAN{t\\ngGX@@dsM@AthynQw^N{l=\\ngGX@@dsM@AthyolD{np=\\ngGX@@dsM@AthyolD{oP\\ngGX@@dsM@AthyolD}oP=\\ngGX@@dsM@Athyomx{np=\\ngGX@@dsM@Athys`qK\\\\cnB]wh\\ngGX@@dsM@Athys`qK_XIw^`\\ngGX@@dsM@AthyshiK\\\\cnB]wh\\ngGX@@dsM@AthyshiK_XIw^`\\ngGX@@dsM@AthyshiK_[qw^`\\ngGX@@dsM@Athyshis_XI{^`\\ngGX@@dsM@AthznQwAN{l=\\ngGX@@dsM@AthznQwAN{t\\ngGX@@dsM@AthzolD{np=\\ngGX@@dsM@AthzolD{oP\\ngGX@@dsM@Athzs`qK\\\\cnB]wh\\ngGX@@dsM@Athzs`qK_XIw^`\\ngGX@@dsM@AthzshiK\\\\cnB]wh\\ngGX@@dsM@AthzshiK_XIw^`\\ngGX@@dsM@AuIWHwmg]v=\\ngGX@@dsM@AuIWHwmg]z\\ngGX@@dsM@AuIWHwmgmz=\\ngGX@@dsM@AuIWHwng]v=\\ngGX@@dsM@AuIWHwng]z\\ngGX@@dsM@AuIWHwngmz=\\ngGX@@dsM@AuIYtTenQo]N{t\\ngGX@@dsMLAuXirVmu`tH\\ngGX@@dsMLAuXirVm}`gmB\\ngGX@@dsMLAuXirVn]EN[kAhP\\ngGX@@dsMLAuXirVn]EN[{AOZD\\ngGX@@dsMLAuXirVn]EN[{^OZD\\ngGX@@dsMLAuXirVu}`gmB\\ngGX@@dsMLAuXitVmrNxI{P`\\ngGX@@dsMLAuXitVn\\\\FN[kAhP\\ngGX@@dsMLAuhjs_XIw^`\\ngGX@@dsMTAtYIKVyF}lahP\\ngGX@@dsMTAtYIKVyF}tahP\\ngGX@@dsMTAtYIM[IbgI[d[wRFa@\\ngGX@@dsMTAuXirVmrNxICP`\\ngGX@@dsMTAuXirVm}`dMB\\ngGX@@dsMTAuXirVnSENRwH{`dMB\\ngGX@@dsMTAuXirVnSENRwvBPtH\\ngGX@@dsMUDauXirVn]EN[{AHZD<\\ngGX@@dsMUDauXirVn]EN[{AHZD>\\ngGX@@dsT`Athyncn{@=\\ngGX@@dsT`Athyncn}@\\ngGX@@dsT`Athyomt{np=\\ngGX@@dsT`Athyomt{oP\\ngGX@@dsT`Athys`qK]G]z\\ngGX@@dsT`Athys`qK_[iw^`\\ngGX@@dsT`AthyshiK_[iw^`\\ngGX@@dsT`AuIWHwmg]v=\\ngGX@@dsT`AuIWHwmg]z\\ngGX@@dsT`AuIWHwmgmz=\\ngGX@@dsT`AuIWHwng]v=\\ngGX@@dsT`AuIWHwng]z\\ngGX@@dsT`AuIWHwngmz=\\ngGX@@dsT`AuIWH{mg]v=\\ngGX@@dsT`AuIWH{mg]z\\ngGX@@dsT`AuIWH{ng]v=\\ngGX@@dsT`AuIWH{ng]z\\ngGX@@dsT`AuIYpXenQw[N{t\\ngGX@@dsT`AuIYpXenQw]N{t\\ngGX@@dsT`AuIYtTenQo]N{t\\ngGX@@dsT`AuIYtTenQw]N{t\\ngGX@@dsTlAtYIKVyF}l}hP\\ngGX@@dsTlAtYIKVyF}t}o`\\ngGX@@dsTlAtYIKV~F}na@\\ngGX@@dsTlAtYIKV~F}va@\\ngGX@@dsTlAtYIKWNCGMrN{Y{P`\\ngGX@@dsTlAtYIKZyF}l}hP\\ngGX@@dsTlAtYIKZyF}t}hP\\ngGX@@dsTlAtYIKZyG]l}hP\\ngGX@@dsTlAtYIK[NCDm|N{]B\\ngGX@@dsTlAtYIK[NCDm|N{mB\\ngGX@@dsTlAtiJnQo]O[l\\ngGX@@dsTlAtiJnQw]N{t\\ngGX@@dsUAHathyolD{np+\\ngGX@@dsUAHathyolD{np-\\ngGX@@dsUAHathyolD{n\\x7FrPJH+\\ngGX@@dsUAHathyolD{n\\x7FrPJH-\\ngGX@@dsUAHathyolD{oP<\\ngGX@@dsUAHathyolD{oP>\\ngGX@@dsUAHathyolD}oP+\\ngGX@@dsUAHathyolD}oP-\\ngGX@@dsUAHathyomx{np+\\ngGX@@dsUAHathyomx{np-\\ngGX@@dsUAHathyomx{n\\x7FrPJH+\\ngGX@@dsUAHathyomx{n\\x7FrPJH-\\ngGX@@dsUAHathyomx{oP<\\ngGX@@dsUAHathyomx{oP>\\ngGX@@dsUAHathys`qK_XIw^`<\\ngGX@@dsUAHathys`qK_XIw^`>\\ngGX@@dsUAHathys`qK_[qw^`<\\ngGX@@dsUAHathys`qK_[qw^`>\\ngGX@@dsUAHathys`qs_XI{^`<\\ngGX@@dsUAHathys`qs_XI{^`>\\ngGX@@dsUAHathyshiK_XIw^`<\\ngGX@@dsUAHathyshiK_XIw^`>\\ngGX@@dsUAHathyshiK_[qw^`<\\ngGX@@dsUAHathyshiK_[qw^`>\\ngGX@@dsUAHathzolD{np+\\ngGX@@dsUAHathzolD{np-\\ngGX@@dsUAHathzolD{oP<\\ngGX@@dsUAHathzolD{oP>\\ngGX@@dsUAHathzolD}oP+\\ngGX@@dsUAHathzolD}oP-\\ngGX@@dsUAHathzs`qK_XIw^`<\\ngGX@@dsUAHathzs`qK_XIw^`>\\ngGX@@dsUAHathzs`qs_XI{^`<\\ngGX@@dsUAHathzs`qs_XI{^`>\\ngGX@@dsUMHauXirVmu`tH<\\ngGX@@dsUMHauXirVmu`tH>\\ngGX@@dsUMHauXirVm}`gmB<\\ngGX@@dsUMHauXirVn\\\\FN[{AOZD<\\ngGX@@dsUMHauXirVn\\\\FN[{AOZD>\\ngGX@@dsUMHauXirVv\\\\FN[{AOZD>\\ngGX@@dsUMHauXitVmu`tH>\\ngGX@@dsUMHauXitVn\\\\FN[{AOZD<\\ngGX@@dsUMHauXitVn\\\\FN[{AOZD>\\ngGX@@dsUMHauhjs_XIw^`<\\ngGX@@dsUMHauhjs_XIw^`>\\ngGX@@dsUThdauXirVnRFJ\\\\wvBPtH>\\ngGX@@dsUThdauXirVn\\\\FN[{AHZD<\\ngGX@@dsUThdauXirVn\\\\FN[{AHZD>\\ngGX@@dsUThdauXirVn]EN[{AHZD<\\ngGX@@dsUThdauXirVn]EN[{AHZD>\\ngGX@@dsUThdauXirVu}`dMB<\\ngGX@@dsUThdauXirVu}`dMB>\\ngGX@@dsUThdauXirVv]EN[{AHZD<\\ngGX@@dsUThdauXirVv]EN[{AHZD>\\ngGX@@dsUThdauXirVv]EN[{^HZD<\\ngGX@@dsUThdauXitVn\\\\FN[{AHZD<\\ngGX@@dsUThdauXitVn\\\\FN[{AHZD>\\ngGX@@dsUThdauXitVu}`dMB<\\ngGX@@dsUThdauXitVu}`dMB>\\ngGX@@dsUTheAuXirVnRFJRwvBPwp<\\ngGX@@dsUTheAuXirVnRFJRwvBPwp>\\ngGX@@dsUTheAuXirVnRFJ\\\\wvBPtH<\\ngGX@@dsUTheAuXirVnRFJ\\\\wvBPtH>\\ngGX@@dsUTheAuXirVn\\\\FN[{AHZD<\\ngGX@@dsUTheAuXirVn\\\\FN[{AHZD>\\ngGX@@dsUTheAuXirVn]EN[{AHZD<\\ngGX@@dsUTheAuXirVn]EN[{AHZD>\\ngGX@@dsUTheAuXirVu}`dMB<\\ngGX@@dsUTheAuXirVu}`dMB>\\ngGX@@dsUTheAuXirVvZFJ\\\\eolDahP>\\ngGX@@dsUTheAuXirVv]EI[{AHZD<\\ngGX@@dsUTheAuXirVv]EN[{AHZD>\\ngGX@@dsUTheAuXirZn]EI[{AH[x<\\ngGX@@dsUTheAuXitVv\\\\FN[{AHZD<\\ngGX@@dsUTheAuXitVv\\\\FN[{AHZD>\\ngGX@@dsUTiDauXitVn\\\\FN[{AHZD<\\ngGX@@dsUTiDauXitVn\\\\FN[{AHZD>\\ngGX@@dsUTiDauXitVn]EN[{AHZD<\\ngGX@@dsUUHauXirVm}`dMB<\\ngGX@@dsUUHauXirVm}`dMB>\\ngGX@@dsUUHauXirVm}oDMB<\\ngGX@@dsUUHauXirVm}oDMB>\\ngGX@@dsUUHauXirVnSENRwvBPtH>\\ngGX@@dsUUHauXirVnZFJ\\\\eolDahP<\\ngGX@@dsUUHauXirVnZFJ\\\\eolDahP>\\ngGX@@dsUUHauXirVnZFJ\\\\eomxahP<\\ngGX@@dsUUHauXirZu}`dMB<\\ngGX@@dsUUHauXirZu}`dMB>\\ngGX@@dsUUHauXitVm}`dMB<\\ngGX@@dsUUHauXitVm}`dMB>\\ngGX@@dsUUHauXitVnRFNRwvBPtH<\\ngGX@@dsUUHauXitVnRFNRwvBPtH>\\ngGX@@dtuRAuXirVmu`dH\\ngGX@@dtuRAuXirVn\\\\FI[{AH[t\\ngGX@@dtuSHauXirVn]EI[kAHP<\\ngGX@@dtuSHauXirVn]EI[kAHP>\\ngGX@@dtuSHauXirZn]EI[{AH[t>\\ngGX@@dtuTAuXirVm}`dMB\\ngGX@@dtuTAuXirVm}`dM|\\ngGX@@dtuTAuXirVnSENRwvBPtH\\ngGX@@dtuTAuXirVnSENRwvBPwp\\ngGX@@dtuTAuXirVn\\\\FI[{AHZD\\ngGX@@dtuTAuXirVn\\\\FI[{AH[x\\ngGX@@dtuTAuXirVu}`dMB\\ngGX@@dtuTAuXirVv\\\\FI[{AHZD\\ngGX@@dtuUHauXirVm}`guB<\\ngGX@@dtuUHauXirVm}`guB>\\ngGX@@dtuUHauXirVnRFJRwvBPtH<\\ngGX@@dtuUHauXirVnRFJRwvBPtH>\\ngGX@@dtuUHauXirVn]EI[{AHZD<\\ngGX@@dtuUHauXirVn]EI[{AHZD>\\ngGX@@dtuUHauXirVn]EI[{AOjD<\\ngGX@@dtuUHauXirVn]EI[{AOjD>\\ngGX@@dtuUHauXirVn]GI[{AOjD<\\ngGX@@dtuUHauXirVn]GI[{AOjD>\\ngGX@@dtuUHauXirZm}`dMB<\\ngGX@@dtuUHauXirZm}`dMB>\\ngGX@@dtuUHauXirZn\\\\FI[{AHZD<\\ngGX@@dtuUHauXirZn\\\\FI[{AHZD>\\ngGX@@dtuUHauXirZn]EI[{AHZD<\\ngGX@@dtuUHauXirZn]EI[{AHZD>\\ngGX@@dwATAulek\\\\cZvPtH\\ngGX@@dwATAulek\\\\cZvPtOyKDd\\ngGX@@dwATAulek\\\\cZzPtH\\ngGX@@dwATAulfm\\\\cZvPtH\\ngGX@@dwAULaulekgQSfyFutahP<\\ngGX@@dwAULaulekgQSfyFutahP>\\ngGX@@dwAULaulem\\\\cZvPtH<\\ngGX@@dwSTAtYYKVyFutahP\\ngGX@@dwSTAtYYKVyGUlahP\\ngGX@@dwSTAtYYMZyFulahP\\ngGX@@dwSTAtYYMZyFutahP\\ngGX@@dwSTAtYYMZyGUlahP\\ngGX@@dwSTAuXirVmtPtH\\ngGX@@dwSULatYYKWNbgMrMkiCP`<\\ngGX@@dwSULatYYKWNbgMrMkiCP`>\\ngGX@@dwSULatYYKWNbgMrNkiCP`>\\ngGX@@dwSULatYYKZyFulahP<\\ngGX@@dwSULatYYKZyFulahP>\\ngGX@@dwSULauXirVn\\\\EN[hahP>\\ngGX@@dwSULauXirVv]EN[y]HZD<\\ngGX@@eMUTAtpqSdm[eApRFa@\\ngGX@@eMUTAtpqSdm[eApRFa\\x7FIHxv`@\\ngGX@@eMUTAtpqSdm[eApRFa\\x7FZ@\\ngGX@@eMUTAtpqSdm[eApRF~\\x7FZ@\\ngGX@@eMUTAtpqSdm\\\\dLTynTGAHZG}h@\\ngGX@@eMUTAtpqSdm\\\\xLTwJC`dMB\\ngGX@@eMUTAtpqSdm\\\\xLTwJC`dMC~t@\\ngGX@@eMUTAtpqSdm\\\\xLTwJ}`dMB\\ngGX@@eMUTAtpqSdmkeApRFa@\\ngGX@@eMUTAtpqSdmkeApRFa\\x7FZ@\\ngGX@@eMUTAtpqSdmlxLRwJC`dMC~t@\\ngGX@@eMUTAtpqSdukeApRFa\\x7FZ@\\ngGX@@eMUTAtpqSdulxLTwJC`dMC~t@\\ngGX@@eMUTAtpqShukeApRFa@\\ngGX@@eMUTAtpqShukeApRFa\\x7FZ@\\ngGX@@eMUTAtpqUdm[eApRFa@\\ngGX@@eMUTAtpqUdm[eApRFa\\x7FZ@\\ngGX@@eMUTAtpqUdm\\\\xLTwJC`dMB\\ngGX@@eMUTAtpqUdm\\\\xLTwJC`dMC~t@\\ngGX@@eMUTAtpqUdmkeApRFa\\x7FZ@\\ngGX@@eMUUHatpqSdu[eApRF~\\x7FZ@<\\ngGX@@eMUUHatpqSdu[eApRF~\\x7FZ@>\\ngGX@@eSU@AuAWJwmg]w~t@=\\ngGX@@eSU@AuAWJwmg]{~t@=\\ngGX@@eSU@AuAWJwmgm{~t@=\\ngGX@@eSU@AuAWJwng]w~t@=\\ngGX@@eSU@AuAWJwng]{~t@\\ngGX@@eSU@AuAWJwngm{~t@=\\ngGX@@eSU@AuAWJ{ng]w~t@=\\ngGX@@eSU@AuAWJ{ng]{~t@=\\ngGX@@eSU@AuAWJ{ngm{~t@=\\ngGX@@eSU@AuAYpTenUo]N{w}h@\\ngGX@@eSU@AuAYpXenUw]N{w}h@\\ngGX@@eSU@Au`is\\\\hNB]w_yJEFt@=\\ngGX@@eSU@Au`is\\\\hNB]w_{P@=\\ngGX@@eSU@Au`is\\\\hNB]wh\\ngGX@@eSU@Au`is\\\\hNB]woyJEFt@=\\ngGX@@eSU@Au`is\\\\hNB]wo{P@=\\ngGX@@eSU@Au`is\\\\hNB^wh=\\ngGX@@eSU@Au`is\\\\hNB^wo{P@=\\ngGX@@eSU@Au`is\\\\hN|]w_yJEFt@=\\ngGX@@eSU@Au`is\\\\hN|]w_{P@=\\ngGX@@eSU@Au`is\\\\hN|]wo{P@\\ngGX@@eSU@Au`is\\\\hN|^wo{P@=\\ngGX@@eSU@Au`isfabgI[eApSv}@=\\ngGX@@eSU@Au`isfabgI[eApSv}\\x7FZ@=\\ngGX@@eSU@Au`isgARVyP]x{o_v`@\\ngGX@@eSU@Au`isgAbVyP\\\\D{o_v`@\\ngGX@@eSU@Au`isgAcfyP\\\\D}o_v`@\\ngGX@@eSU@Au`iu\\\\hNB]w_{P@=\\ngGX@@eSU@Au`iu\\\\hNB]wo{P@\\ngGX@@eSU@Au`iu\\\\hNB^wo{P@=\\ngGX@@eSU@Au`iugARVyP\\\\D{o_v`@\\ngGX@@eSU@Au`iugAbVyP\\\\D{o_v`@\\ngGX@@eSU@Au`js\\\\hN|]w_{P@=\\ngGX@@eSU@Au`ju\\\\hNB]w_{P@=\\ngGX@@eSU@Au`ju\\\\hNB]wh\\ngGX@@eSU@Au`ju\\\\hNB]wo{P@=\\ngGX@@eSU@Au`ju\\\\hNB^wh=\\ngGX@@eSU@Au`ju\\\\hNB^wo{P@=\\ngGX@@eSU@Au`jufabgI[eApSv}@=\\ngGX@@eSU@Au`jugAbVyP\\\\D{o_v`@\\ngGX@@eSU@Au`jugAcfyP\\\\D}o_v`@\\ngGX@@eSUA@au`is\\\\hN|^wh-\\ngGX@@eSUA@au`isgARVyP]x{oP<\\ngGX@@eSUA@au`isgARVyP]x{oP>\\ngGX@@eSUA@au`isgAbVyP\\\\D{oP<\\ngGX@@eSUA@au`isgAbVyP\\\\D{oP>\\ngGX@@eSUA@au`isgAcfyP\\\\D}oP<\\ngGX@@eSUA@au`isgAcfyP\\\\D}oP>\\ngGX@@eSUA@au`iugARVyP\\\\D{oP<\\ngGX@@eSUA@au`iugARVyP\\\\D{oP>\\ngGX@@eSUA@au`iugASfyP\\\\D}oP<\\ngGX@@eSUA@au`iugASfyP\\\\D}oP>\\ngGX@@eSUA@au`jugAbVyP\\\\D{oP<\\ngGX@@eSUA@au`jugAbVyP\\\\D{oP>\\ngGX@@eSULAtPrSfyP\\\\D}o_v`@=\\ngGX@@eSULAtaRnUw]N{w}h@=\\ngGX@@eSULAtpqSdm[eApSva\\x7FZ@=\\ngGX@@eSULAtpqSdm[yApZG}h@=\\ngGX@@eSULAtpqSdm[yAwjG}h@\\ngGX@@eSULAtpqSdm\\\\dLTenTGAOZG}h@=\\ngGX@@eSULAtpqSdm\\\\tLTyK_HNCP\\x7Fm@=\\ngGX@@eSULAtpqSdm\\\\xLRwJC`gmC~t@\\ngGX@@eSULAtpqSdm\\\\xLRwrC`tO{P@\\ngGX@@eSULAtpqSdm\\\\xL\\\\wJC`gmC~t@\\ngGX@@eSULAtpqSdm\\\\xL\\\\wrC`tO{P@\\ngGX@@eSULAtpqSdmkeApSva\\x7FZ@=\\ngGX@@eSULAtpqSdmkyApZG}h@=\\ngGX@@eSULAtpqSdmltLTyK\\\\hNB^tO{P@=\\ngGX@@eSULAtpqSdmlxL\\\\wJC`gmC~t@\\ngGX@@eSULAtpqSdmlxL\\\\wrC`tO{P@\\ngGX@@eSULAtpqShm[yApZG}h@\\ngGX@@eSULAtpqShm\\\\xL\\\\wJC`gmC~t@\\ngGX@@eSULAtpqShm\\\\xL\\\\wrC`tO{P@\\ngGX@@eSULAtpqShmkeApSva\\x7FZ@\\ngGX@@eSULAtpqShmkyApZG}h@\\ngGX@@eSULAtpqShmlxL\\\\wJC`gmC~t@\\ngGX@@eSULAtpqShmlxL\\\\wrC`tO{P@\\ngGX@@eSULAtpqUdm\\\\xJ\\\\wJCoGmC~t@\\ngGX@@eSUTAtQQKVyV}lah_v`@=\\ngGX@@eSUTAtQQKVyV}tah_v`@\\ngGX@@eSUTAtQQKVyW]tah_v`@=\\ngGX@@eSUTAtpqSdm[eApRFa@\\ngGX@@eSUTAtpqSdm[eApRFa\\x7FIPhv`@=\\ngGX@@eSUTAtpqSdm[eApRFa\\x7FIXdv`@=\\ngGX@@eSUTAtpqSdm[eApRFa\\x7FZ@=\\ngGX@@eSUTAtpqSdm[eAwbFa\\x7FZ@\\ngGX@@eSUTAtpqSdm\\\\dL\\\\enTGAHZG}h@\\ngGX@@eSUTAtpqSdm\\\\tLTyK\\\\hNBPtH\\ngGX@@eSUTAtpqSdm\\\\tLTyK\\\\hNBPtO{P@=\\ngGX@@eSUTAtpqSdukeApRFa@\\ngGX@@eSUTAtpqSdukeApRFa\\x7FZ@=\\ngGX@@eSUTAtpqShm[eApRFa\\x7FZ@\\ngGX@@eSUTAtpqShm\\\\dL\\\\enTGAHZG}h@\\ngGX@@eSUT`hatpqSdm\\\\dL\\\\enTGAH[x>\\ngGX@@eSUT`hatpqSdm\\\\xLRwJC`dM|>\\ngGX@@eSUT`hatpqSdm\\\\xL\\\\wJC`dMB<\\ngGX@@eSUT`hatpqSdm\\\\xL\\\\wJC`dMB>\\ngGX@@eSUT`hatpqSdmlxL\\\\wJC`dMB<\\ngGX@@eSUT`hatpqSdmlxL\\\\wJC`dMB>\\ngGX@@eSUT`hatpqSdulxL\\\\wJC`dMB<\\ngGX@@eSUT`hatpqSdulxL\\\\wJC`dMB>\\ngGX@@eSUT`hatpqShm\\\\xJ\\\\wJC`dMB>\\ngGX@@eSUT`hatpqShmlxJ\\\\wJC`dMB<\\ngGX@@eSUT`iAtpqSdm\\\\xL\\\\wJC`dMB<\\ngGX@@eSUT`iAtpqSdm\\\\xL\\\\wJC`dMB>\\ngGX@@eSUT`iAtpqSdmldL\\\\enTGAHZD>\\ngGX@@eSUT`iAtpqSdmlxLRwJC`dMB<\\ngGX@@eSUT`iAtpqSdmlxLRwJC`dMB>\\ngGX@@eSUT`iAtpqSdmlxL\\\\wJC`dMB<\\ngGX@@eSUT`iAtpqSdu\\\\xLRwJC`dM|<\\ngGX@@eSUT`iAtpqSdu\\\\xLRwJC`dM|>\\ngGX@@eSUT`iAtpqShm\\\\xJ\\\\wJC`dMB<\\ngGX@@eSUU@atpqSdm\\\\dL\\\\enTGAHZD<\\ngGX@@eSUU@atpqSdm\\\\dL\\\\enTGAHZD>\\ngGX@@eSUU@atpqShm[eApRFa@<\\ngGX@@eSUU@atpqShm[eApRFa@>\\ngGX@@eSUUHatQQKWNCGMrn{iCP\\x7Fm@<\\ngGX@@eSUUHatQQKZyV}lah_v`@+\\ngGX@@eSUUHatpqSdm[eApRF~\\x7FZ@+\\ngGX@@eSUUHatpqSdm[eApRF~\\x7FZ@-\\ngGX@@eSUUHatpqSdm\\\\dLTynTGAHZD<\\ngGX@@eSUUHatpqSdm\\\\dLTynTGAHZD>\\ngGX@@eSUUHatpqSdm\\\\dL\\\\enTGAH[{}h@<\\ngGX@@eSUUHatpqSdm\\\\tLTyK\\\\hNBPwp<\\ngGX@@eSUUHatpqSdm\\\\tLTyK\\\\hNBPwp>\\ngGX@@eSUUHatpqSdm\\\\xJ\\\\wJCoDMC~t@<\\ngGX@@eSUUHatpqSdm\\\\xJ\\\\wJCoDMC~t@>\\ngGX@@eSUUHatpqSdm\\\\xLRwJC`dM}~t@<\\ngGX@@eSUUHatpqSdm\\\\xLRwJC`dM}~t@>\\ngGX@@eSUUHatpqSdm\\\\xL\\\\wJC`dMC~t@<\\ngGX@@eSUUHatpqSdm\\\\xL\\\\wJC`dMC~t@>\\ngGX@@eSUUHatpqSdm\\\\xL\\\\wJC`dM}~t@<\\ngGX@@eSUUHatpqSdmkeApRFa@<\\ngGX@@eSUUHatpqSdmkeApRFa@>\\ngGX@@eSUUHatpqSdmkeApRFa\\x7FZ@+\\ngGX@@eSUUHatpqSdmkeApRFa\\x7FZ@-\\ngGX@@eSUUHatpqSdmldLTynTGAHZD<\\ngGX@@eSUUHatpqSdmldLTynTGAHZD>\\ngGX@@eSUUHatpqSdmltLTyK\\\\hNBPtH<\\ngGX@@eSUUHatpqSdmltLTyK\\\\hNBPtH>\\ngGX@@eSUUHatpqSdmltLTyK\\\\hNBPtO{P@+\\ngGX@@eSUUHatpqSdmltLTyK\\\\hNBPtO{P@-\\ngGX@@eSUUHatpqSdmlxLRwJC`dMC~t@<\\ngGX@@eSUUHatpqSdmlxLRwJC`dMC~t@>\\ngGX@@eSUUHatpqSdmlxL\\\\wJC`dMC~t@<\\ngGX@@eSUUHatpqSdmlxL\\\\wJC`dMC~t@>\\ngGX@@eSUUHatpqSdu\\\\tLTyK\\\\hNBPwp>\\ngGX@@eSUUHatpqSdu\\\\xLRwJC`dM}~t@<\\ngGX@@eSUUHatpqSdulxL\\\\wJC`dMC~t@>\\ngGX@@eSUUHatpqShm\\\\xJ\\\\wJC`dMC~t@<\\ngGX@@eSUUHatpqShm\\\\xJ\\\\wJC`dMC~t@>\\ngGX@@eSUUHatpqShm\\\\xL\\\\wJC`dMC~t@<\\ngGX@@eSUUHatpqShm\\\\xL\\\\wJC`dMC~t@>\\ngGX@@eSUUHatpqShmkeApRFa\\x7FZ@>\\ngGX@@eSUUHatpqShmlxJ\\\\wJC`dMC~t@<\\ngGX@@eSUUHatpqShmlxJ\\\\wJC`dMC~t@>\\ngGX@@eSUUHatpqShmlxLRwJC`dMC~t@<\\ngGX@@eSUUHatpqShmlxLRwJC`dMC~t@>\\ngGX@@eSUUHatpqShmlxL\\\\wJC`dMC~t@<\\ngGX@@eSUUHatpqShmlxL\\\\wJC`dMC~t@>\\ngGX@@eSUUHatpqShulxL\\\\wJC`dMC~t@<\\ngGX@@eSUUHatpqShulxL\\\\wJC`dMC~t@>\\ngGX@@e]MTAtpqSdm[f]pRFa\\x7FZ@\\ngGX@@e]MTAtpqSdm[{AHZG}h@\\ngGX@@e]MTAtpqSdm\\\\xLTwL{`dMC~t@\\ngGX@@e]MTAtpqSdmk{AHZG}h@\\ngGX@`IWITtp@]PUrm{Y{^\\x7Fm@=\\ngGX@`IWITtp@]PUrm{i{^\\x7Fm@=\\ngGX@`IWITtp@]XJ\\\\wvB^wo{P@=\\ngGX@`NtiMtu@]FVSVnQm[HZD\\ngGXA@IRVjj@zlTyKV~pRFa@\\ngGXA@IRVjj@zlTyKWICEN[{AHZD\\ngGXA@IRVjj@zlTyKWNCEM}`dMB\\ngGXA@IRYb@@wH{mg]v=\\ngGXA@IRYb@@wH{ng]v=\\ngGXA@IRYb@@ypXenQw[N{t\\ngGXA@IRYb@@ypXynQw[O[t\\ngGXA@IRYb@@ypXynQw]O[t\\ngGXA@IRYf`@zT\\\\wH{`g]v=\\ngGXA@IRYf`@zdkd[vsn{@=\\ngGXA@IRYjP@zdkd[vsn{@=\\ngGXA@IRYjP@zdkd[wSn{@=\\ngGXA@IRYjP@zdkd]vsn{@=\\ngGXA@IRYjP@zdkd]wSn{@=\\ngGXA@IRYj`dPzT\\\\wvB]wX+\\ngGXA@IRYj`dPzT\\\\wvB]wX-\\ngGXA@IRYj`dPzT\\\\wvB]wh<\\ngGXA@IRYj`dPzT\\\\wvB]wh>\\ngGXA@IRYj`dPzT\\\\ypXeolD{oP<\\ngGXA@IRYj`dPzT\\\\ypXeolD{oP>\\ngGXA@IRYj`dPzT]WvB]wX+\\ngGXA@IRYj`dPzT]WvB]wX-\\ngGXA@IRYjfdPzlTzKWNCGM}`gmB<\\ngGXA@IRYjfdPzlTzKWNCGM}`gmB>\\ngGXA@IRYjjTR`zlTyKWNCGM}`dMB>\\ngGXA@IRYjjdPzlTyKV~pRFa@<\\ngGXA@IRYjjdPzlTyKV~pRFa@>\\ngGXA@IRZZi@zlTyKWNCDm}`dMz\\ngGXA@IRZZj@zlTyKV~pRFa@\\ngGXA@IRZZj@zlTyKV~pRF~@\\ngGXA@IRZZj@zlTyKWIbgI[d^pRF~@\\ngGXA@IRZZj@zlTyKWIbgI[{AHZD\\ngGXA@IRZZj@zlTyKWNCDm}`dMB\\ngGXA@IRZZjdPzlTyKWICEI[{AHZD<\\ngGXA@IRZZjdPzlTyKWICEI[{AHZD>\\ngGXA@IRZZjdPzlTyKWNbdm}`dMB<\\ngGXA@IRZZjdPzlTyKWNbdm}`dMB>\\ngGXA@IRfjj@zXXirVmr`xICP`\\ngGXA@IRfjj@zXXirVn\\\\FJ[e^pRFa@\\ngGXA@IRih@@wJwmg]w~t@=\\ngGXA@IRih@@wJwng]w~t@=\\ngGXA@IRih@@wJ{ng]w~t@=\\ngGXA@IRihF@ztRunUo[OZG}h@=\\ngGXA@IRii`@z`ke[vsn{\\x7FZ@=\\ngGXA@IRii`@z`ke[vsn}\\x7FZ@\\ngGXA@IRii`@z`ke[vsv}\\x7FZ@=\\ngGXA@IRii`@z`ke]vsv}\\x7FZ@=\\ngGXA@IRii`@z`ke]wSn{\\x7FZ@=\\ngGXA@IRii`@z`ke]wSv}\\x7FZ@=\\ngGXA@IRii`@zpTynUwAN{o}h@=\\ngGXA@IRii`@zpTynUwAO[w}h@=\\ngGXA@IRii`@zpTynUw^O[w}h@=\\ngGXA@IRii`@zpTyolD{o_v`@\\ngGXA@IRii`@zpTyolD}o_v`@=\\ngGXA@IRii`@zpTznUwAN{o}h@=\\ngGXA@IRij`@zpTynTGAN{l=\\ngGXA@IRij`@zpTynTGAN{t\\ngGXA@IRijj@zXXirVmr`xICP`\\ngGXA@IRijj@zXXirVnZFJ\\\\enTGAHZD\\ngGXA@IRijjPTPzXXirVn\\\\FN[eApRFa@<\\ngGXA@IRijjPT`zXXirVn\\\\FN[eApRFa@>\\ngGXA@IRijjdPzXXirVnRFJ\\\\wJC`dMB<\\ngGXA@IRijjdPzXXirVur`xICP`>\\ngGXA@IRjZj@zXXirVmr`xICP`\\ngGXA@IRjZj@zXXirVnRFJRwJC`dMB\\ngGXA@IRjZj@zXXirVnRFJRwJC`dM|\\ngGXA@IRjZj@zXXirVn\\\\FI[eApRFa@\\ngGXA@IRjZj@zXXirVur`xICP`\\ngGXA@IRjZj@zXXirVv\\\\FI[eApRFa@\\ngGXA@IRkfj@zHdek\\\\s^vPtO{P@\\ngGXA@IRkfj@zHdek\\\\s^zPtO{P@\\ngGXA@IRkfj@zHdek\\\\snvPtO{P@\\ngGXA@IRkfj@zHdek\\\\snzPtO{P@\\ngGXA@IRkfj@zXXirVmsNxICP\\x7Fm@\\ngGXA@IRkfj@zXXirVm}`dMC~t@\\ngGXA@IRnfj@zXXirVn\\\\FJ[f]pRFa\\x7FZ@\\ngGXA@NRYjP@zdkd[vsn{@=\\ngGXA@NRYjP@zdkd[wSn{@=\\ngGXA@NRYjV@zLdem\\\\c^v^tH\\ngGXA@NRZZj@zlTyKWIbgI[{AHZD\\ngGXAAiR[ij@zLlemgARVyGUlahP>\\ngGXAAiR[ij@zLlemgARVyGUtahP>\\ngGXAAiR[ij@zLlfkgASfyGUlao`>\\ngGXAAiR[ij@zLlfm\\\\cZvPtH\\ngGXAAiR[ij@zLlfm\\\\cZzPtH\\ngGXAAiR[ij@zLlfmgASfyGUlahP>\\ngGXAAiR[ij@zLlfmgASfyGUtahP>\\ngGXD@jCTBUMT@GTC]G]w~t@=\\ngGXDAjBtFRPrj`NjFJ\\\\eohEAHP>\\ngGXDD@`aBS]MHGRejyFul{np\\ngGXDD@`aBS]MHGRejyFul{oP\\ngGXDD@b^BSRuPGUbgQjwvBPtO{Q@\\ngGXDH@aABS]T@GTc\\\\cr|]w_{R@=\\ngGXDH@aABS]T@GTc\\\\cr|]wo{R@=\\ngGXDHGANBS]T@GTc\\\\cr|^wh=\\ngGXDHGANBS]T@GTc\\\\cr|^woyHFD=\\ngGXDHHQPbS]T@GTc]Gmz=\\ngGXDHHQPbS]T@GTc]Gm{~RAa@=\\ngGXDHO@~BUMUTbGUCEVjwrC`tH<\\ngGXDHO@~BUMUTbGUCEVjwrC`tH>\\ngGXDHOANBRtuPGUbgIZwvBPtO{R@\\ngGXDHOA^BS]T@GTc]G]w~RAamH=\\ngGXDHOA^BS]T@GTc]G]w~t`=\\ngGXDHOA^BS]T@GTc]Gmz=\\ngGXDHOA^BS]T@GTc]Gm{~RAa@=\\ngGXDHOA^BS]UPGQcdm[d^WbFa\\x7FI@pvd@=\\ngGXDJDR^BSRuPGQbgI[kAHP\\ngGXDJIARBSWUPGVcdmx_@\\ngGXDL@aABS\\\\uPGQcdm[hah_vf@=\\ngGXDL@bABUuUTRGQBdm\\\\dLTynbFa@<\\ngGXDL@bABUuUTRGQBdm\\\\dLTynbFa@>\\ngGXEHOA^BeIZZhCjqShuk{AHZG}i@\\ngGXEHOA^DeInZ@CjQoat}o_rPLMi@=\\ngGXEL@aAByInZhChqrVmtPtO{S@=\\ngGXEaJAT@f\\\\nRfjj@zhXzMZyWlDahP\\ngGXHAJAIfj@CiQs_XIw]`+\\ngGXHAJAIfj@CiQs_XI{^`+\\ngGXHAJAIfj@CiQu_XIw]`+\\ngGXHAJAIfj@CiQu_XI{^`+\\ngGXHAJAIfj@CiQugAbV~pSn}@>\\ngGXHAJAIfj@CiQugAcf~pSv}@>\\ngGXHAJAIfjXCkQUkNCGM}`gmv>\\ngGXHAJAIfjhCjqSdm\\\\fJ\\\\eolDahP>\\ngGXHAjAJfj@CiAS\\\\hN|]w_{P@=\\ngGXHAjAJfj@CiAS\\\\hN|^wo{P@=\\ngGXHAjAJfj@CiAS_HIw]\\x7Fm@=\\ngGXHAjAJfj@CiAS_HI{^\\x7Fm@=\\ngGXHAjAJfj@CiAU_HIw]\\x7Fm@=\\ngGXHAjAJfjBACiAS_HI{^`+\\ngGXHAjAJfjBACiAS_HI{^`-\\ngGXHAjAJfjBACiAU_HI{^`+\\ngGXHAjAJfjBACiAU_HI{^`-\\ngGXHAjAJfjXCjabhmlxJ\\\\wrCoTO{P@\\ngGXHAjAJfjjACjabdm[yAHZD<\\ngGXHAjAJfjjACjabdm[yAHZD>\\ngGXHAjCIHYUPGSCENRunXEAHZD\\ngGXHAjCIHYUPGSCENRusPqSdms@hICP\\x7Fm@=\\ngGXHB@aIfi@CjRnQo[N{l\\ngGXHB@aIfi@CjRnQo[N{t\\ngGXHB@aIfi@CjRnQo]N{l\\ngGXHB@aIfiXCiRU\\\\c^v]wh\\ngGXHB@aIfiXCkRSV~F}na@\\ngGXHB@aIfidCiRU\\\\c^v^wX\\ngGXHB@aIfidCiRU\\\\c^v^wh\\ngGXHB@aIfidCkRSV~F}n}@\\ngGXHB@aIfjBQCiQsgAbV~pSn}@>\\ngGXHB@aIfjiQJChqSfn]EN[kAhP<\\ngGXHB@aInfjZCkRsV~Funa@<\\ngGXHB@aInfjZCkRsV~Funa@>\\ngGXHBOAJfj@CkAUjyP\\\\D{np\\ngGXHBOAJfjdCjabgM\\\\dLTeodGAoP\\ngGXHD@aIfZhCjqSdm[{AHZG}h`=\\ngGXHD@aIfZhCjqSdm\\\\zJ\\\\wvBPtO{Q@\\ngGXHD@aIfZhCjqShm[{AHZG}h`=\\ngGXHD@aIfZhCjqShm\\\\zJ\\\\wvBPtO{Q@\\ngGXHD@aIfZhCjqShmk{AHZG}h`\\ngGXHD@aIfihChrRVmrM{YCP\\x7FmD=\\ngGXHD@aIfihChrRVmrM{iCP`=\\ngGXHD@aIfihChrRZurM{YCP\\x7FmD=\\ngGXHD@aIfihCiRU\\\\c^v]w_{Q@=\\ngGXHD@aIfjjQCjqShmlxL\\\\wvBPtO{Q@>\\ngGXHD@aIkjjQChqrVn\\\\gI[hahP<\\ngGXHD@aIkjjQChqrVn\\\\gI[hahP>\\ngGXHD@aInZ@CjQncn{@=\\ngGXHD@aInZ@CjQncn}@\\ngGXHD@aInZ@CjQshiK]G]z\\ngGXHD@aInZXChqrVmt^tH\\ngGXHD@aInZXChqrVmyP`\\ngGXHD@aInZhChqrVmtPtH\\ngGXHD@aInf@CjQncn{@=\\ngGXHD@aInf@CjQncn}@\\ngGXHD@aInf@CjRnQm[N{l=\\ngGXHD@aInf@CjRnQm[N{t\\ngGXHD@aInf@CjRnQm[O[t=\\ngGXHD@aInf@CjRshiK\\\\cZz]wh\\ngGXHD@aInfXChrrVm|Mk]B\\ngGXHD@aInfXCiRu\\\\cZv^wh\\ngGXHD@aInjBQCjQncn{@+\\ngGXHD@aInjBQCjQncn{@-\\ngGXHD@aInjBQCjQncn}@>\\ngGXHDDQInf@CjRnQm[N{l=\\ngGXHDOAInjBQCjQoax{np+\\ngGXHDOAInjBQCjQoax{np-\\ngGXHH@aIZjhCjqSdm[d^pRFa\\x7FZP\\ngGXHH@aIZjhCjqSdmk{AHZG}i@\\ngGXHH@aIfj@CiQs\\\\cvB]w_{R@=\\ngGXHH@aIfj@CiQs\\\\cvB]wo{R@\\ngGXHH@aIfj@CiQsgAbVyGlD{o_vd@\\ngGXHH@aIfj@CiQsgQRVyGlD{o_vd@\\ngGXHH@aIfj@CiQsgQSfyGlD}o_vd@\\ngGXHH@aIfj@CiQu\\\\cvB]w_{R@=\\ngGXHH@aIfjXCjqSdm[d^pSva\\x7FZP\\ngGXHH@aIfjXCjqSdm\\\\xL\\\\wH}`gmC~t`\\ngGXHH@aIfjXCjqSdmlzJ\\\\wp}`tO{R@\\ngGXHH@aIfjXCkQUgNCDmrOXI{^\\x7FmH\\ngGXHH@aIfjXCkQUgNbgMrOXI{^\\x7FmH\\ngGXHH@aIfjhCjqSdm[d^pRFa\\x7FZP\\ngGXHH@aIfjhCjqSdm[{AHZG}i@\\ngGXHH@aIfjhCjqSdm\\\\fJ\\\\enQ{AHZG}i@\\ngGXHH@aIfjjICjqSdm\\\\zJ\\\\wH}`dMC~t`<\\ngGXHH@aIfjjICjqSdm\\\\zJ\\\\wH}`dMC~t`>\\ngGXHH@aIfjjICjqSdmlzJRwH}`dMC~t`>\\ngGXHH@aIfjjICjqSdmlzJ\\\\wH}`dMC~t`<\\ngGXHH@aIfjjICjqSdmlzJ\\\\wH}`dMC~t`>\\ngGXHH@aIfjjICjqSdulzJ\\\\wH}`dMC~t`>\\ngGXHH@aIfjjICjqShm\\\\zJ\\\\wH}`dMC~t`<\\ngGXHH@aIfjjICjqShm\\\\zJ\\\\wH}`dMC~t`>\\ngGXHH@aJnZBACiAu_XIw]`+\\ngGXHH@aJnZBACiAu_XIw]`-\\ngGXHHGAIfj@CiQs\\\\cvB]w_{R@=\\ngGXHHGAIfj@CiQs\\\\cvB^wo{R@=\\ngGXHHGAIfj@CiQs_XI{^\\x7FmH=\\ngGXHHGAIfjXCjqShm\\\\xLRwp}`tO{R@\\ngGXHHGAIfjXCjqShm\\\\xL\\\\wVCP\\x7FmH\\ngGXHHGAIfjXCjqShm\\\\xL\\\\wp}`tO{R@\\ngGXHHGAIfjhCjqSdm[d^pRFa\\x7FZP\\ngGXHHGAIfjhCjqSdm[{AHZG|dBcZP\\ngGXHHOAIZZhCjqSdm[{AHZG}i@\\ngGXHHOAIZjhCjqSdm[d^pRFa\\x7FZP\\ngGXHHOAIZjhCjqSdm[{AHZD\\ngGXHHOAIfj@CiQs\\\\cvB]w_{R@=\\ngGXHHOAIfj@CiQs\\\\cvB^wo{R@=\\ngGXHHOAIfj@CiQs_XIw]\\x7FmH=\\ngGXHHOAIfj@CiQs_XI{^\\x7FmH=\\ngGXHHOAIfjBQCiQs_XI{^`+\\ngGXHHOAIfjBQCiQs_XI{^`-\\ngGXHHOAIfjhCjqSdm[d^pRFa\\x7FZP\\ngGXHHOAIfjhCjqSdm[{AHZG}i@\\ngGXHHOAIfjjICjqSdmkd^pRFa\\x7FZP<\\ngGXHHOAIfjjQCjqSdm[{AHZD<\\ngGXHHOAIfjjQCjqSdm[{AHZD>\\ngGXHHOAJkZhCjaSdm[f]pRFa@\\ngGXHHOAJkZhCjaSdm[{AHZD\\ngGXHHOAJnjBACiAu_XIw]`+\\ngGXHHOAJnjBACiAu_XIw]`-\\ngGXHHOAJnjjACjaSdm[{AHZD<\\ngGXHHOAJnjjACjaSdm[{AHZD>\\ngGXHL@aJZjhCjabdm[yAHZD\\ngGXH`Z@R^RjZj@zhXisV~P\\\\Fa@\\ngGXH`Z@R^RjZj@zhXisWICEI[yApZD\\ngGXHaJ@SNRYj`@zT]WvB^wh+\\ngGXHaJ@SNRZZj@zlTyKV~pRFa@\\ngGXHaJ@SNRZZjdPzlTyMV~pRFa@<\\ngGXHaJ@SNRZZjdPzlTyMV~pRFa@>\\ngGXHaj@SnRii`@zPTwJ{oG]w~t@=\\ngGXHaj@SnRii`@zPTwJ{oGm{~t@=\\ngGXHaj@SnRii`@zPTwv|]w_{P@=\\ngGXHaj@SnRii`@zPTwv|]wo{P@\\ngGXHaj@SnRii`@zPTwv|^wo{P@=\\ngGXHaj@SnRii`@zPTypTeomx{o_v`@\\ngGXHaj@SnRkfj@zhXiKVyg]xah_rPJMh@\\ngGXHaj@SnRkfj@zhXiKV~wbFa\\x7FZ@\\ngGXHhG@]IR[ij@zlTyKV~WRFa\\x7FI@pvd@\\ngGXI@Z@ReTuTAuPqSfm|`xMB\\ngGXIAjC\\\\eSU@At`inTG^N{o}h@=\\ngGXIDHaRdmUTAuXirVm}`dMB\\ngGXIHDPReWU@At`zolD{np+\\ngGXIHO@ReUuTAuPirVm}`dMB\\ngGXIHOBRdmMTAuXirVm}`dMC~t`\\ngGXIHOBRdsMTAuXirVm}`dMC~t`\\ngGXLJIARFdLbdMU@]JIP\\ngGX`BDdwM@AuHwQw]`\\ngGX`BDdwM@AuHwQw^`\\ngGX`BDdwMLAthzncn{@\\ngGX`BDdwMLAthzncn}@\\ngGX`BDdwMLAuhyk]GmB\\ngGX`BDdwMLAuhyk^TH\\ngGX`BDdwMLAuhym]GmB\\ngGX`BDdwMLAuhym^TH\\ngGX`BDdwMRAthzncn{@\\ngGX`BDdwMRAthzncn}@\\ngGX`BDdwMRAthzncv{@\\ngGX`BDdwMRAthzncv}@\\ngGX`BDdwMRAthzshiK]Gmz\\ngGX`BDdwMRAuhyj\\ngGX`BDdwMRAuhyk^Wh\\ngGX`BDdwMRAuhykgQRT\\ngGX`BDdwMRAuhykgQRV|oP\\ngGX`BDdwMUMAuhyk^TH<\\ngGX`BDdwMUMAuhyk^TH>\\ngGX`BDdwMUMAuhyk^Wp<\\ngGX`BDdwMUMAuhyk^Wp>\\ngGX`BDdwMUMAuhykgQRV|hP>\\ngGX`BDdwMUMAuhykgQSf|hP<\\ngGX`BDdwMUMAuhykgQSf|hP>\\ngGX`BDdwMUMAuhym^TH<\\ngGX`BDdwMUMAuhym^TH>\\ngGX`BDdwULAuhykdabdmyP`\\ngGX`BDdwUThlauhykgARV|hP>\\ngGX`BDdwUThmAuhykgARV|hP<\\ngGX`DBdsMTAtXisVzpZG}h`\\ngGX`DBdsMTAtXisWNbdmu`tO{Q@\\ngGX`DBdsMTAtXiuVzpZG}h`\\ngGX`DBdsMTAtXiuWNbdmu`tO{Q@\\ngGX`DBdsMTAtXiuZzpZG}h`\\ngGX`DBdwMLAuhyk^TH\\ngGX`DBdwMLAuhym^TH\\ngGX`DBdwMRAthzncn{@\\ngGX`DBdwMRAthzncn}@\\ngGX`DBdwMRAthzshiK]G]z\\ngGX`DBdwMRAuhyj\\ngGX`DBdwMRAuhykgQRT\\ngGX`DBdwMRAuhykgQRV|oP\\ngGX`DBdwMUMAuhyk^TH<\\ngGX`DBdwMUMAuhyk^TH>\\ngGX`DBdwMUMAuhykgQRV|hP<\\ngGX`DBdwMUMAuhykgQRV|hP>\\ngGX`DBdwMUMAuhykgQSf|hP>\\ngGX`DBdwMUMAuhym^TH<\\ngGX`DBdwMUMAuhym^TH>\\ngGX`DBdwSRAtiZnQm[N{l\\ngGX`DBdwUThmAuhykgARV|hP<\\ngGX`DBdwUThmAuhykgARV|hP>\\ngGX`JDduuTAuhyK^DH\\ngGX`JDduuTAuhyM^DH\\ngGX`LDdwMTAtXyKVzHZG|ebSZX=\\ngGX`LDdwMTAtXyKVzHZG}i`=\\ngGX`LDdwMTAtXyKVzH[{|ebSZX\\ngGX`LDdwMTAtXyKVzH[{}i`\\ngGX`LDdwMTAtXyKWNbgMtPtO{S@\\ngGX`LDdwMTAtXyKZzHZG}i`\\ngGX`LDdwMTAtXyK[NbgMtPtO{S@\\ngGX`LDdwMTAtXyMVzH[{}i`\\ngGX`LDdwMTAtXyMZzHZG}i`=\\ngGX`LDdwMTAthzncn{\\x7FZX=\\ngGX`LDdwMTAthzncn}\\x7FZX\\ngGX`LDdwMTAthzncv}\\x7FZX=\\ngGX`bDnLiMsP@]RMt]wX\\ngGX`bDnLiMsT`]ZNZ`\\ngGX`bDnLiMsUSP]ZNZweB<\\ngGX`bDnLiMsUSP]ZNZweB>\\ngGX`hEIWIMsP@]RMt]w_{R@=\\ngGX`hEIWIMsP@]RMt]wo{R@\\ngGX`hEIWIMsP@]RMt^wo{R@=\\ngGX`hEIWIMsS@]FNRuncva\\x7FZP\\ngGX`hEIWIMsS@]FNRuncv~\\x7FZP\\ngGX`hEIWIMsS@]FNRuoJG}i@\\ngGX`hEIWIMsS@]JNkh{n\\x7Fvd@\\ngGX`hEIWIMsS@]JNkh{o_vd@\\ngGX`hEIWIMsS@]JNkh}n\\x7Fvd@\\ngGX`hEIWIMsS@]JNkh}o_vd@\\ngGX`hEIWIMsU@]FNRunbFa\\x7FZP\\ngGX`hEIWIMsUSH]FNRunbF~\\x7FZP<\\ngGX`hEIWIMsUSH]FNRunbF~\\x7FZP>\\ngGXaBDYR[f`@zd[h{np\\ngGXaBDYR[fi@zt\\\\uoKt\\ngGXaBDYR[fjf`zt\\\\uoJD<\\ngGXaBDYR[fjf`zt\\\\uoJD>\\ngGXaBDYR[fjf`zt\\\\voJD<\\ngGXaBDnR[f`@zd[h{np\\ngGXaBDnR[f`@zd[h{oP\\ngGXaBDnR[ff@zT]WQw^`\\ngGXaBDnR[fi@zT]WQw]`\\ngGXaBDnR[fi@zT]WQw^`\\ngGXaBDnR[fi@zt\\\\u@\\ngGXaBDnR[fi@zt\\\\uoKt\\ngGXaBDnR[fjf`zt\\\\uoJD<\\ngGXaBDnR[fjf`zt\\\\uoJD>\\ngGXaLDnR[fj@zL\\\\ek]DMC~tp=\\ngGXdBl@b^BSRuTbGVbfmyP`<\\ngGXdBl@b^BSRuTbGVbfmyP`>\\ngGXdBl@b^BSRuTbGVbfuyP`<\\ngGXdBl@b^BSRuTbGVbfuyP`>\\ngGXdBl@b^FQREj`NmDm[ra\\x7FZD\\ngGXdMD@baFRREZPNlGIkhao_vf@\\ngGXdMD@baFRREZPNlGIkpa\\x7FZX\\ngGXdMD@baFRREZ`NlGI[haoovf@\\ngGXdMD@baFRREZ`NlGIkhaoovf@\\ngGXeMD@baF{IIBmPGVCdmtPww{S@\\ngGXeMD@baF{IIBmPGVCdmt_Ww{S@\\ngGXeMD@baF{IIBmPGVCdutPww{S@\\ngGXhHZ@aIfjXCkQSfzGlG}i@\\ngGXhHZ@aIfjXCkQSgNbdmtOXO{R@\\ngGXhLEJAInjhChqrVmtPtO{S@=\\ngGXhLEJAInjhChqrVutPtO{S@\\ngGXhMD@cIIBmHGQCdu[hao_vf@\\ngGXhMD@cIIBmHGQCdu[pa\\x7FZX\\ngGXhMD@cIIBmHGQCdu\\\\yNRwQC^\\x7FmL\\ngGXhMD@cIIBmHGQCdu\\\\yNRwaC~tp\\ngGXhMD@cIIBmPGQCdm[hah_vf@\\ngGXhMD@cIIBmPGQCdm[h~h_vf@\\ngGXhMD@cIIBmPGQCdmkhah_vf@\\ngGXhMD@cIIBmPGQCdu[hah_vf@\\ngGXhMD@cIIBmPGQCdu[haoovf@\\ngGXhMD@cIIBmPGQCdu\\\\yNRwQCP\\x7FmL\\ngGXhMD@cIIBmPGQCdukhah_vf@\\ngGXhMD@cIIJmPGVBVmyP`\\ngGXhMD@cIIJmPGVBVmy_@\\ngGXhMD@cIIJmPGVBVn\\\\gI[ra@\\ngGXhMD@cIIJmPGVBVuyP`\\ngGXhMDOCIHYUPGQCdm[hahP\\ngGXhbLjA\\\\YRnjjbPzHYImgAcfz`ZD<\\ngGXhbLjA\\\\YRnjjbPzHYImgAcfz`ZD>\\ngGXhdZ@aS^RYjV@zTdwPwm\\x7FmD\\ngGXiMD@c]ddaVhCharZmtPtO{S@\\ngGXiMD@c]ddaVhCharZutPtO{S@\\ngGY@BDfYh@NeGM}`g]v\\ngGY@BDfYh@NeGN]EI[{AN{t\\ngGY@BDfYh@NeGU}`g]v\\ngGY@BDfYh@NeGU}`g]z\\ngGY@BDfYh@NeGV]EI[{AN{t\\ngGY@BDfYi`NcENZwVCP`\\ngGY@BDfYi`NcENZwvB^tH\\ngGY@BDfYi`NcENZytTenlFa@\\ngGY@BDfYi`NcEN[YtTeolD}hP\\ngGY@BDfYi`NcENjwVCP`\\ngGY@BDfYi`NcENkWvB^tH\\ngGY@BDfYi`NmEV[{AN{t\\ngGY@BDfYi`NmEVk{AN{t\\ngGY@BDfYi`NmEVlzJRwvB]wh\\ngGY@BDfYjPNcENZytTenlF}@\\ngGY@BDfYjPNcENZytTeoLD\\ngGY@BDfYjPNcENZytTyoLD\\ngGY@BDfYjPNcENjwVC^`\\ngGY@BDfYjPNcENjwfB\\ngGY@BDfYjPNcENjytTenlF}@\\ngGY@BDfYjPNcENjytTeoLD\\ngGY@BDfYjPNmEV[{AN{l\\ngGY@BDfYjPNmEV[{AN{t\\ngGY@BDfYjPNmEV[{AO[l\\ngGY@BDfYjPNmEV\\\\zJRwvB]wh\\ngGY@BDfYjPNmEV\\\\zJRwvB^wh\\ngGY@BDfYjPNmEVk{AN{l\\ngGY@BDfYjPNmEVk{AN{t\\ngGY@BDfYjPNmEVk{AO[l\\ngGY@BDfYjPNmEVk{AO[t\\ngGY@BDfYjPNmEVlzJRwvB]wh\\ngGY@BDfYjPNmEVlzJRwvB^wh\\ngGY@BDfYjhhNcENZwVCP`>\\ngGY@BDfYjhhNcENjwVCP`<\\ngGY@BDfYjhhNcENjwVCP`>\\ngGY@BDfZd@NiJyF}l{oP\\ngGY@BDfZe`NmIM[x[vzD\\ngGY@BDfZfPNeIUrM{Yw]`\\ngGY@BDfZfPNmEV[h{np\\ngGY@BDfZfPNmEV[h{oP\\ngGY@BDfZfPNmIM[x[v{t\\ngGY@BDfZhIDNeGM}`g]v>\\ngGY@BDfZhIDNeGN]EI[{AO[t>\\ngGY@BDfZjeDdNcENZwVCP`<\\ngGY@BDfZjeDdNcENZwVCP`>\\ngGY@BDfZjeDdNcENZypXenlFa@<\\ngGY@BDfZjeDdNcENZypXenlFa@>\\ngGY@BDfZjeDdNcENZytTenlFa@<\\ngGY@BDfZjeDdNcENZytTenlFa@>\\ngGY@BDfZjeDdNcENZytTynlFa@<\\ngGY@BDfZjeDdNcENZytTynlFa@>\\ngGY@BDfZjeDdNcEN[WVCP`<\\ngGY@BDfZjeDdNcEN[YtTynlFa@<\\ngGY@BDfZjeDdNcEN[YtTynlFa@>\\ngGY@BDfZjeDdNcENkWVCP`>\\ngGY@BDfZjeDhNcENZwVCP`<\\ngGY@BDfZjeDhNcENZwVCP`>\\ngGY@BDfZjeDhNcENZyLTyK]XMB<\\ngGY@BDfZjeDhNcENZyLTyK]XMB>\\ngGY@BDfZjeDhNcENZytTenlFa@<\\ngGY@BDfZjeDhNcENZytTenlFa@>\\ngGY@BDfZjeDhNcENZytTynlFa@<\\ngGY@BDfZjeDhNcENZytTynlFa@>\\ngGY@BDfZjeDhNcEN[WVCP`<\\ngGY@BDfZjeDhNcEN[WVCP`>\\ngGY@BDfZjeDhNcENjwVCP`<\\ngGY@BDfZjeDhNcENjwVCP`>\\ngGY@BDfZjeHhNcENjwVCP`<\\ngGY@BDfZjeHhNcENjwVCP`>\\ngGY@BDfZjeHhNcENjypXynlFa@>\\ngGY@BDfzZihNmKM[x[VzD<\\ngGY@BDfzZihNmKM[x[VzD>\\ngGY@DDfYj`NkENRuolDah_vb@=\\ngGY@DDfYj`NkENRuolDaoovb@\\ngGY@DDfYj`NkENRuomxah_vb@=\\ngGY@DDfYj`NkENRushiK_XIC__mD\\ngGY@DDfYj`NkENRushiK_[qC__mD\\ngGY@DDfYj`NkENRushis_XICP\\x7FmD\\ngGY@DDfYj`NkENRushis_XIC__mD\\ngGY@DDfYj`NkENRushis_[qCP\\x7FmD\\ngGY@DDfYj`NkENRvolDah_vb@\\ngGY@DDfYj`NkENRvomxah_vb@\\ngGY@DDfYj`NkENRvshiK_XICP\\x7FmD\\ngGY@DDfYj`NkENRvshiK_[qCP\\x7FmD\\ngGY@DDfYj`NkENRvshis_XICP\\x7FmD\\ngGY@DDfYj`NkENRvshis_[qCP\\x7FmD\\ngGY@DDfYj`NkENSUolDaoovb@\\ngGY@DDfYj`NkENSUshiK_XIC__mD\\ngGY@DDfYj`NkENSUshiK_[qC__mD\\ngGY@DDfYj`NkENSVolDah_vb@=\\ngGY@DDfYj`NkENSVshis_XICP\\x7FmD\\ngGY@DDfYj`NkENbuolDah_vb@=\\ngGY@DDfYj`NkENbuolDaoovb@\\ngGY@DDfYj`NkENbushiK_XIC__mD\\ngGY@DDfYj`NkENbushis_XICP\\x7FmD\\ngGY@DDfYj`NkENbushis_XIC__mD\\ngGY@DDfYj`NkENbvolDah_vb@\\ngGY@DDfYj`NkENbvshiK_XICP\\x7FmD\\ngGY@DDfYj`NkENbvshis_XICP\\x7FmD\\ngGY@DDfYj`NkENcVolDah_vb@=\\ngGY@DDfYj`NkENcVshis_XICP\\x7FmD\\ngGY@DDfYj`NmEV[{AN{w}h`\\ngGY@DDfYj`NmEV[{AO[w}h`=\\ngGY@DDfYj`NmEV\\\\zJRwvB]wo{Q@\\ngGY@DDfYj`NmEV\\\\zJ\\\\wvB^wo{Q@\\ngGY@DDfYj`NmEVk{AN{w}h`\\ngGY@DDfYj`NmEVk{AO[w}h`=\\ngGY@DDfYj`NmEVlzJ\\\\wvB^wo{Q@\\ngGY@DDfZf`NcIIZwHwndMB=\\ngGY@DDfZf`NkENRuomtah_vb@=\\ngGY@DDfZf`NkENRushis_[iCP\\x7FmD\\ngGY@DDfZjiDNkENRuolDah_vb@+\\ngGY@DDfZjiDNkENRuolDah_vb@-\\ngGY@DDfZjiDNkENRushis_XICP\\x7FmD<\\ngGY@DDfZjiDNkENRvolDah_vb@<\\ngGY@DDfZjiDNmEV[{AN{w}h`<\\ngGY@DDfZjiDNmEV[{AN{w}h`>\\ngGY@DDfZjiDNmEV[{AO[w}h`-\\ngGY@DDffj`NkENRuolDah_vb@\\ngGY@DDffjiDNkENRushiK_XICP\\x7FmD>\\ngGY@DDfnjYDNcGIZypTeoCx<\\ngGY@DDfnjYDNcGIZypTeoCx>\\ngGY@DDfnjiDNcGIZwQCP`<\\ngGY@DDfnjiDNcGIZwQCP`>\\ngGY@DDfnjiDNcGIZyHXiK]DMB>\\ngGY@DDfnjiDNcGIZyr\\\\enbFa@<\\ngGY@DDfnjiDNcGIZyr\\\\enbFa@>\\ngGY@DDfnjiDNcGIZytTenbFa@<\\ngGY@DDfnjiDNcGIZytTenbFa@>\\ngGY@DDfyh@NiFzN{l=\\ngGY@DDfyh@NiFzN{t\\ngGY@DDfyh@NiFzO[t=\\ngGY@DDfyh@NiGNbdmt]wh\\ngGY@DDfyh@NiGNbgMt^wh\\ngGY@DDfyi`NcGIZwQ{P`\\ngGY@DDfyi`NcGIZweB\\ngGY@DDfyi`NcGIZytTencva@\\ngGY@DDfyi`NcGIZytTeoJD\\ngGY@DDfyi`NcGIZytTyncva@\\ngGY@DDfyi`NcGIZytTyncv~@\\ngGY@DDfyi`NcGIZytTyoJD\\ngGY@DDfyi`NcGI[WQ{P`\\ngGY@DDfyi`NcGI[WeB\\ngGY@DDfyi`NcGI[YtTyncva@\\ngGY@DDfyi`NcGI[YtTyoJD\\ngGY@DDfyi`NeGUt]wh\\ngGY@DDfyi`NeGUt^wX\\ngGY@DDfyi`NeGUt^wh\\ngGY@DDfyi`NeGV]EI[h}oP\\ngGY@DDfyi`NeGV]EN[h}np\\ngGY@DDfyi`NeGV]EN[h}oP\\ngGY@DDfyj`NcGIZwQCP`\\ngGY@DDfyj`NcGIZwQCP\\x7FdlRP\\ngGY@DDfyj`NcGIZyLTyK]DMB\\ngGY@DDfyj`NcGIkWQCP`\\ngGY@DDfyjidNcGIZwQC_@<\\ngGY@DDfyjidNcGIZwQC_@>\\ngGY@DDfyjidNcGIZytTenbF~@<\\ngGY@DDfyjidNcGIZytTenbF~@>\\ngGY@DDfyjidNcGIZytTynbFa@<\\ngGY@DDfyjidNcGIZytTynbFa@>\\ngGY@DDfyjidNcGIZytTynbF~@>\\ngGY@DDfyjidNcGI[WQCP`<\\ngGY@DDfyjidNcGI[WQCP`>\\ngGY@DDfyjidNcGI[YtTynbFa@<\\ngGY@DDfyjidNcGI[YtTynbFa@>\\ngGY@DDfzX@NiFzN{l=\\ngGY@DDfzX@NiFzN{t\\ngGY@DDfzX@NiGNBdmt]wh\\ngGY@DDfzX@NiJyFul{np=\\ngGY@DDfzX@NiJyFul{oP\\ngGY@DDfzX@NiJyFul}oP=\\ngGY@DDfzX@NiKNbdmrMkiw^`\\ngGY@DDfzY`NcGIZypTyoJD\\ngGY@DDfzY`NcKIZwpvmtH\\ngGY@DDfzZ`NcKIZwHvmdMB\\ngGY@DDfzZ`NcKIZwHvmdMC~RqI@\\ngGY@DDfzhIDNiFzN{l+\\ngGY@DDfzhIDNiFzN{l-\\ngGY@DDfzhIDNiFzN{t<\\ngGY@DDfzhIDNiGNbdmt]wh<\\ngGY@DDfzhIDNiGNbdmt]wh>\\ngGY@HDfZh@NeGM}`g]w~t`=\\ngGY@HDfZh@NeGN]EI[{AN{w}i@\\ngGY@HDfZhIDNeGM}`g]v+\\ngGY@HDfZhIDNeGM}`g]v-\\ngGY@HDfZhIDNeGM}oG]v-\\ngGY@HDfZhIDNeGM}oG]z<\\ngGY@HDfZhIDNeGM}oG]z>\\ngGY@HDfZhIDNeGNRFJRwvB]wh<\\ngGY@HDfZhIDNeGNRFJRwvB]wh>\\ngGY@HDfZi`NkENRushis]XMC~t`\\ngGY@HDfZj`NkENRurPqrV~pRFa\\x7FZP\\ngGY@HDkjj`NjENRuolDahP\\ngGY@HDkjj`NjENRus`qS_XICP`\\ngGY@JDffj`NcENRwVBP`\\ngGY@JDffjiDNcENRytTenlDa@<\\ngGY@JDffjiDNcENRytTenlDa@>\\ngGY@JDffjiDNcENRyt\\\\enlD~@>\\ngGY@JDffjiDNcENSWVBP`<\\ngGY@JDffjiDNcENSWVBP`>\\ngGY@LDejj`NcEIZwQCP`\\ngGY@LDejj`NcEIZypXinbFa@\\ngGY@LDejjhhNcEIZwQC_@>\\ngGY@LDejjhhNcEIZypXynbFa@<\\ngGY@LDejjhhNcEIZypXynbFa@>\\ngGY@LDijj`NjFJRuodDahP\\ngGY@LDijj`NjFJRus`qS_HICP`\\ngGY@LDijjiDNjFJRus`qs_HICP`<\\ngGY@LDijjiDNjFJRus`qs_HICP`>\\ngGY@LDijjiDNjFJbus`qs_HICP`<\\ngGY@LDijjiDNjFJbus`qs_HICP`>\\ngGY@LDijjiDNjFJbus`qs_HIC_@<\\ngGY@LDijjiDNjFJbus`qs_HIC_@>\\ngGY@bAqeIfiXChqSfn]EI[ra@\\ngGY@dAreInf@CjQshiK]G]z\\ngGY@hAteIfi@CiQs]G]w~t`=\\ngGY@hAteIfi@CiQs_[iw]\\x7FmH=\\ngGY@hAteIijhCjqSdm[{AHZD\\ngGY@hAteIijjQCjqSdm\\\\zJRwvBPtH<\\ngGY@hAteIijjQCjqSdm\\\\zJRwvBPtH>\\ngGYABCJSLuTTGQbgU[kAhP<\\ngGYABCJSLuTTGQbgU[kAhP>\\ngGYABCJSMURbRGQbgM\\\\zJRwVCP`<\\ngGYABCJSMURbRGQbgUkkAhP<\\ngGYABCJSMURbTGQbgM[kAhP<\\ngGYABCJSMURdTGQbgU[kAhP<\\ngGYABCJSMURdTGQbgU[kAhP>\\ngGYABIJSMUHGVbkM}`g]v>\\ngGYABIJSMUHGVbkM}`g]z>\\ngGYABIJSMUHGVbkV]EN[{AO[l>\\ngGYADArSMSPGUbgIZytTyomtah_vb@\\ngGYADArS]L@GTc]G]v=\\ngGYADEJSMTDbGRcf~pSn}\\x7FZH<\\ngGYADEJS]L@GTc_Ki{^`=\\ngGYAJKJSSUPGQbgI[kAHP\\ngGYALMJRuUPGQbdm[hahP\\ngGYDJQDJHR[jf@zT\\\\`\\ngGYHBaxIMtp@]RMt]wX\\ngGYHDIPIMuP@]RN]EI[h{oP>\\ngGYHDPDIMts@]ZVZwpvmtH\\ngGYHDQxILuUJIP]FJ\\\\uoa{^o`>\\ngGYHE@DIUsUPH]TJ\\\\ek_[qCP\\x7FmD-\\ngGYHE@DYICF``Pz`[h{np+\\ngGYHEAxIU[U@]TJ]Fk_XICP\\x7FmD\\ngGYHEAxIU[U@]TJ]Fm_XICP\\x7FmD\\ngGYHHPDILuS@]FJ\\\\uoa{Ah_vd@\\ngGYHHPDILuS@]FJ\\\\ushiK_CvCP\\x7FmH\\ngGYHHPDILuS@]FJ\\\\voa{Ah_vd@\\ngGYHHPDILuS@]FJ\\\\vshiK_CvCP\\x7FmH\\ngGYHHPDILuS@]FJ]Uoa{Ah_vd@\\ngGYHHPDILuS@]FJ]UshiK_CvCP\\x7FmH\\ngGYHHPDILuS@]FJ]UshiK_CvC__mH\\ngGYHHPDILuT`]FJ\\\\uoa{Ao_vd@\\ngGYHHPDILuUQP]FJ\\\\ushiK_CvCP\\x7FmH<\\ngGYHHPxILuS@]FJ\\\\ushiK_CvCP\\x7FmH\\ngGYHJPDILuK@]JR[h[vp\\ngGYHJPDILuK@]JR[h[wP\\ngGYHJPDILuK@]JR\\\\zJRwPwn`\\ngGYHJPDILuK@]ZJ\\\\`\\ngGYHJPDILuK@]ZJ\\\\wfz\\ngGYHJPDILuK@]ZJ\\\\ypXe@\\ngGYHJPDILuL`]JRkd[vsn{@\\ngGYHJPDILuL`]JRkd[wSn{@\\ngGYHJPDILuSRH]ZJ\\\\wfB<\\ngGYHJQDILuK@]ZJ\\\\ytTeoMt\\ngGYHJQHILuK@]ZJ\\\\ytTe@\\ngGYHJQHILuSRH]ZJ\\\\wfB>\\ngGYHK@xIUMU@]TLTyK_HNB_@\\ngGYHKAxIU[U@]DJ\\\\enlDa@\\ngGYHKAxIU[U@]DJ\\\\erXirVzpRD\\ngGYHKAxIU[U@]DJ]FnlDa@\\ngGYHL`DIMsU@]FNRunbFa\\x7FZX=\\ngGYHL`DIMtu@]FNRunbFa\\x7FZX=\\ngGYHdIPSeJSWUTbGQcdm[hahP<\\ngGYHdIPSeJSWUTbGQcdm[hahP>\\ngGYHlEPKmJUuUPGUCEIkYpXiohDahP\\ngGYHlEPKmJUuUPGUCIIkYpXiohDahP\\ngGYIHEPKdkjj`NjENcVolDahP\\ngGYILEPKdkjj`NjFJSVs`qS_PICP`\\ngGYLcaHR`TaNLiM]U@]ZNZyr\\\\eoJD\\ngGYLcaHR`TaNLiM]U@]ZN[Yr\\\\eoJD\\ngGY`JDTfyi`NeGH\\ngGY`LDTfyj`NmGM[ra\\x7FZX\\ngGY`hDYJyInZdCiQu]G]w~t`\\ngGY`hDYJyInZjZCkQsV|h_vd@>\\ngGYhCE`DYIHUj@zp\\\\uoJD\\ngGYhCE`DYIHUj@zp\\\\usdyK^TH\\ngGYhCE`DYIHUj@zp\\\\voJD\\ngGYhCE`DYIHUj@zp\\\\vsdyK^TH\\ngGYhCE`DYIIUi@zpRusdyK^Wo{P`\\ngGYhCE`DYIIUj@zpRuoJG}hP\\ngGYhCE`DYIIUj@zpRusdyK^TO{P`\\ngGYhCE`DYIIUj@zpRusdyK^Ww{P`\\ngGYhCEaxIU[UPH]XJZweB<\\ngGYhCEaxIU[UPH]XJZweB>\\ngGYhCEaxIU[UPH]XJZytTeoJD<\\ngGYhCEaxIU[UPH]XJZytTeoJD>\\ngGYhCEaxIU[UPH]XJ[WeB<\\ngGYhCEaxIU[UPH]XJ[WeB>\\ngGYhCEaxYIIVj@zpRuoJG}hP\\ngGYhCEaxYIIVj@zpRvoJG}hP\\ngGYhKE`DYIHUj@zp\\\\foBD\\ngGYhjLUPKkJUuUPGVCEMy@`\\ngGYhjLUPKkJUuUPGVCIMy@`\\ngGYhjLUPKkJUuUPGVCIN\\\\FI[rA@\\ngGYhkEax[kNRRUjhDNdDh<\\ngGYhkEax[kNRRUjhDNdDh>\\ngGYiKE`D[lddju@]HIP\\ngG\\\\@@ZdsDLAuDwPwm`\\ngG\\\\@@ZdsMLAtiInao]@\\ngG\\\\@@ZdwATAuLwPvm`\\ngG\\\\@@bdsDTAtduoao[h_vb@\\ngG\\\\@@bdsDTAuEWHwmg]w~tP\\ngG\\\\@@bdsDTAuEWHwmg]{~tP\\ngG\\\\@@bdsDTAuEWHwng]{~tP\\ngG\\\\@@bdsMTAtXisWNCDmu`tO{Q@\\ngG\\\\@@bdsMTAtXisWNCGMu`tO{Q@\\ngG\\\\@@bdsMTAtXiuWNCGMu`tO{Q@\\ngG\\\\@@bdwA@AnQm[N{l=\\ngG\\\\@@bdwM@AuIWHvmg]v\\ngG\\\\@@bdwM@AuIWHvng]v\\ngG\\\\@@bdwMLAtiZnQm[N{t\\ngG\\\\@@bdwMLAtiZnQm]N{t\\ngG\\\\@@bdwMUMAuiYk_CZ{P`>\\ngG\\\\@@ldsMTAtXiKVzHZG}h`=\\ngG\\\\@@ldsMTAtXiKWMCENRwQCP\\x7FmD=\\ngG\\\\@@ldsMTAtXiKWMCENRwpzPtO{Q@=\\ngG\\\\@@ldsMTAtXiKWNCGMtPtO{Q@\\ngG\\\\@@ldsMTAtXiKWNbgMtPtO{Q@\\ngG\\\\@@ldsMTAtXiK[NCGMtPtO{Q@\\ngG\\\\@@ldsMTAtXiK[NbgMtPtO{Q@\\ngG\\\\@@ldsMTAtYIKVyF}lah_vb@=\\ngG\\\\@@ldsMTAthjoat}o_vb@=\\ngG\\\\@@ldwATAuMWHvmg]w~tp=\\ngG\\\\@@ldwATAuMWHvmgm{~tp=\\ngG\\\\@@ldwATAulek\\\\cZvPtO{S@=\\ngG\\\\@@ldwATAulem\\\\cZvPtO{S@=\\ngG\\\\@@ldwATAulfm\\\\cZvPtO{S@=\\ngG\\\\@ABeWURAuaIk_S^{^\\x7Fm@\\ngG\\\\@ABeWUUDatPisWIbgI[kAh_v`@<\\ngG\\\\@ABeWUUDatPisWIbgI[kAh_v`@>\\ngG\\\\@ABeWUUDauaIk_S^{P\\x7Fm@<\\ngG\\\\@ABeWUUDauaIk_S^{P\\x7Fm@>\\ngG\\\\@ABeWUUDauaIm_S^wP\\x7Fm@<\\ngG\\\\@ABeWUUDauaIm_S^wP\\x7Fm@>\\ngG\\\\@ABeWUUDauaIm_S^{P\\x7Fm@<\\ngG\\\\@ABeWUUDauaIm_S^{P\\x7Fm@>\\ngG\\\\@AEddLj@CjBnYm[N{o}h@=\\ngG\\\\@AEddLj@CjBnYm[N{w}h@=\\ngG\\\\A@ZIRYb@@wHwmg]v=\\ngG\\\\A@lIRYfj@zLTek]DMC~tP=\\ngG\\\\A@lIRYfj@zLTek_CiCP\\x7FmD=\\ngG\\\\A@lIRYfj@zLTekfabgI[hah_vb@=\\ngG\\\\A@lIRYfj@zLTekgAcf~GRFa\\x7FZH\\ngG\\\\DEb@b^BSRuPGVbfmy__dd\\\\[Q@\\ngG\\\\DEb@b^BSRuPGVbfuyP\\x7FmD\\ngG\\\\EebDR^@yRYRZyjdPzt\\\\unev~\\x7FIPxvf@>\\ngG\\\\H@[jCIHYUPGQCEN[jAPP\\ngG\\\\HEb@aIfZhCkQSV|h_vb@\\ngG\\\\HEb@aInfhCkRsV~Funa\\x7FZX\\ngG\\\\HHlOAJfjhChabVmtPtH\\ngG\\\\HHlOAJfjhChabVutPtO{R@\\ngG\\\\IHl@`ReSUTAtPqKVzHZD\\ngG\\\\`hZEIWIMsS@]JN_vd@\\ngG\\\\`hZEIWIMsS@]JNkh{n\\x7Fvd@\\ngG\\\\`hZEIWIMsS@]JNkh{o_vd@\\ngG\\\\ahZEIWWdfyi`NeGUt]w_{R@\\ngG]@DZDfyi`NeGUt]wX\\ngG]@DZDfyi`NeGUt]wh\\ngG]@EbDfYj`NmEM[ra\\x7FZH\\ngG]@EbDfYj`NmEM\\\\zJ\\\\weC~tP\\ngG]@LZDejj`NeEH\\ngG]HEcAxIULE@]JM[y[vzD\\ngG]HEcAxIULE@]JM\\\\xNRwrwmtH\\ngG]HEcAxIULE@]JMlxNRwrwmtH\\ngG]HEcAxIU[U@]XJZweC~tP\\ngG]HEcAxIU[U@]XJ[WeC~tP\\ngG]HEcAxYIIXJ@zQZyp\\\\eoeo[h_va@\\ngG]HlZEPKmJUuUPGVCIMy@`\\ngJP@DjXDCiQK]K^v=\\ngJP@DjXDCiQK]K^z\\ngJP@DjXDCiQK]Knz=\\ngJP@DjXDCiQK_K^v^`=\\ngJP@DjXDCiQK_K^z^`\\ngJP@DjXDCiQK_Knz^`=\\ngJP@DjXDCiQKgASfzV}t\\ngJP@DjXDCiQKgASf~V}t}@\\ngJP@DjXDCiQKgAcfzW]t\\ngJP@DjXDCiQKgAcf~W]t}@\\ngJP@DjYdCjabgI[i]pP\\ngJP@DjYdCjabgI[i]w`\\ngJP@DjYdCjabgI[kAOP\\ngJP@DjYdCjabgI[sA@\\ngJP@DjYdCjabgI[y]pSt\\ngJP@DjYdCjabgI\\\\xJ\\\\wR{``\\ngJP@DjYdCjabgI\\\\xJ\\\\wR{o@\\ngJP@DjYdCjabgI\\\\xJ\\\\wVB^`\\ngJP@DjYdCjabgI\\\\xJ\\\\wV|^`\\ngJP@DjYdCjabgI\\\\xJ\\\\wfB\\ngJP@DjYdCjabgI\\\\xJ\\\\wf|\\ngJP@DjYdCjabgI\\\\xJ\\\\wr{`gh\\ngJP@DjYdCjabgI\\\\xJ\\\\wr{oGh\\ngJP@DjYdCjabgI\\\\xL\\\\wR{``\\ngJP@DjYdCjabgI\\\\xL\\\\wR{o@\\ngJP@DjYdCjabgI\\\\xL\\\\wVB^`\\ngJP@DjYdCjabgI\\\\xL\\\\wV|^`\\ngJP@DjYdCjabgI\\\\xL\\\\wfB\\ngJP@DjYdCjabgI\\\\xL\\\\wf|\\ngJP@DjYdCjabgI\\\\xL\\\\wr{`gh\\ngJP@DjYdCjabgI\\\\xL\\\\wr{oGh\\ngJP@DjYdCjabgQ[i]pP\\ngJP@DjYdCjabgQ[sA@\\ngJP@DjYdCjabgQ[y]pSt\\ngJP@DjYdCjabgQ\\\\xJ\\\\wR{``\\ngJP@DjYdCjabgQ\\\\xJ\\\\wr{`gh\\ngJP@DjYdCjabgQ\\\\xL\\\\wVB^`\\ngJP@DjYdCjabgQ\\\\xL\\\\wr{`gh\\ngJP@DjYdCkBbVzV}l\\ngJP@DjYdCkBbVzV}t\\ngJP@DjYdCkBbVzW]l\\ngJP@DjYdCkBbVzW]t\\ngJP@DjYdCkBbV~V}t}@\\ngJP@DjYdCkBbV~W]t}@\\ngJP@DjZhCjabgI[yApRD\\ngJP@DjZhCjabgI[yApRG|eBb\\ngJP@DjZhCjabgI[yApSx\\ngJP@DjZhCjabgI[y^wbD\\ngJP@DjZhCjabgI\\\\dLTyodGAHP\\ngJP@DjZhCjabgI\\\\dLTyodGAO`\\ngJP@DjZhCjabgI\\\\dLTyoe{^HP\\ngJP@DjZhCjabgIkyApRD\\ngJP@DjZhCjabgIldLTyodGAHP\\ngJP@DjZhCjabkQ[yApRD\\ngJP@DjZhCjabkQ\\\\dLTyodGAHP\\ngJP@DjZhCjabkQ\\\\dLTyodGAO`\\ngJP@DjZhCjabkQkyApRD\\ngJP@DjZjACjabgI[yAwbD<\\ngJP@DjZjACjabgI[yAwbD>\\ngJP@DjZjACjabgI[yAwbG|eBb>\\ngJP@DjZjACjabgI[yAwcx<\\ngJP@DjZjACjabgI\\\\dLTyodG^HP<\\ngJP@DjZjACjabgI\\\\dLTyodG^HP>\\ngJP@DjZjACjabgI\\\\dLTyodG^H_rTJH<\\ngJP@DjZjACjabgI\\\\dLTyodG^H_rTJH>\\ngJP@DjZjACjabgI\\\\dLTyodG^O`<\\ngJP@DjZjACjabgI\\\\dLTyodG^O`>\\ngJP@DjZjACjabgI\\\\xJ\\\\wrCoDH<\\ngJP@DjZjACjabgI\\\\xJ\\\\wrCoDH>\\ngJP@DjZjACjabgI\\\\xJ\\\\wrCoDOyJED<\\ngJP@DjZjACjabgI\\\\xJ\\\\wrCoDOyJED>\\ngJP@DjZjACjabgI\\\\xJ\\\\wrCoGp<\\ngJP@DjZjACjabgI\\\\xJ\\\\wrCoGp>\\ngJP@DjZjACjabgI\\\\xL\\\\wrC`dH<\\ngJP@DjZjACjabgI\\\\xL\\\\wrC`dH>\\ngJP@DjZjACjabgI\\\\xL\\\\wrC`dOyJED<\\ngJP@DjZjACjabgI\\\\xL\\\\wrC`dOyJED>\\ngJP@DjZjACjabgI\\\\xL\\\\wrC`gp<\\ngJP@DjZjACjabgI\\\\xL\\\\wrC`gp>\\ngJP@DjZjACjabgI\\\\xL\\\\wrCoDH<\\ngJP@DjZjACjabgI\\\\xL\\\\wrCoDH>\\ngJP@DjZjACjabgI\\\\xL\\\\wrCoDOyJED<\\ngJP@DjZjACjabgI\\\\xL\\\\wrCoGp<\\ngJP@DjZjACjabgI\\\\xL\\\\wrCoGp>\\ngJP@DjZjACjabgI\\\\xL\\\\wr}oDH<\\ngJP@DjZjACjabgI\\\\xL\\\\wr}oDH>\\ngJP@DjZjACjabgI\\\\xL\\\\wr}oGp<\\ngJP@DjZjACjabgI\\\\xL\\\\wr}oGp>\\ngJP@DjZjACjabgIkyAwbD<\\ngJP@DjZjACjabgIkyAwbD>\\ngJP@DjZjACjabgIldLTyodG^H_rTJH<\\ngJP@DjZjACjabgIlxJ\\\\wrCoDH<\\ngJP@DjZjACjabgIlxJ\\\\wrCoDH>\\ngJP@DjZjACjabgIlxL\\\\wrC`dH<\\ngJP@DjZjACjabgIlxL\\\\wrC`dH>\\ngJP@DjZjACjabgIlxL\\\\wrCoDH<\\ngJP@DjZjACjabgIlxL\\\\wr}oDH<\\ngJP@DjZjACjabgIlxL\\\\wr}oDH>\\ngJP@DjZjACjabgQ[yApRD<\\ngJP@DjZjACjabgQ[yApRD>\\ngJP@DjZjACjabgQ[yApSx>\\ngJP@DjZjACjabgQ\\\\dLTyodGAHP<\\ngJP@DjZjACjabgQ\\\\dLTyodGAHP>\\ngJP@DjZjACjabgQ\\\\dLTyodGAO`>\\ngJP@DjZjACjabgQ\\\\xJ\\\\wrC`dH<\\ngJP@DjZjACjabgQ\\\\xJ\\\\wrC`dH>\\ngJP@DjZjACjabgQ\\\\xJ\\\\wrC`gp>\\ngJP@DjZjACjabgQ\\\\xL\\\\wrC`dH<\\ngJP@DjZjACjabgQ\\\\xL\\\\wrC`dH>\\ngJP@DjZjACjabgQ\\\\xL\\\\wrC`gp<\\ngJP@DjZjACjabgQ\\\\xL\\\\wrC`gp>\\ngJP@DjZjACjabgQkyApRD<\\ngJP@DjZjACjabgQkyApRD>\\ngJP@DjZjACjabgQlxJ\\\\wrC`dH<\\ngJP@DjZjACjabgQlxL\\\\wrC`dH<\\ngJP@DjZjACjabgQlxL\\\\wrC`dH>\\ngJP@DjZjACjabkI[yAwbD<\\ngJP@DjZjACjabkI[yAwbD>\\ngJP@DjZjACjabkI\\\\xJ\\\\wrCoDH<\\ngJP@DjZjACjabkI\\\\xJ\\\\wrCoDH>\\ngJP@DjZjACjabkI\\\\xJ\\\\wrCoGp<\\ngJP@DjZjACjabkI\\\\xJ\\\\wrCoGp>\\ngJP@DjZjACjabkQ\\\\xL\\\\wrC`dH<\\ngJP@DjZjACjabkQ\\\\xL\\\\wrC`dH>\\ngJP@DjZjACjabkQ\\\\xL\\\\wrC`gp<\\ngJP@DjZjACjabkQ\\\\xL\\\\wrC`gp>\\ngJP@DjvhCjabgI[kAHP\\ngJP@DjvhCjabgI[kAO`\\ngJP@DjvhCjabgI[k^HP\\ngJP@DjvhCjabgI[z]pRD\\ngJP@DjvhCjabgI[z]pSx\\ngJP@DjvhCjabgI[z]wbD\\ngJP@DjvhCjabgI\\\\xL\\\\wVBP`\\ngJP@DjvhCjabgI\\\\xL\\\\wVB_@\\ngJP@DjvhCjabgI\\\\xL\\\\wV|P`\\ngJP@DjvhCjabgI\\\\xL\\\\wt{`dH\\ngJP@DjvhCjabgI\\\\xL\\\\wt{`gp\\ngJP@DjvhCjabgI\\\\xL\\\\wt{oDH\\ngJP@DjvhCjabgI\\\\zJ\\\\wVBP`\\ngJP@DjvhCjabgI\\\\zJ\\\\wVB_@\\ngJP@DjvhCjabgI\\\\zJ\\\\wV|P`\\ngJP@DjvhCjabgI\\\\zJ\\\\wV|_@\\ngJP@DjvhCjabgI\\\\zJ\\\\wt{`dH\\ngJP@DjvhCjabgI\\\\zJ\\\\wt{`gp\\ngJP@DjvhCjabgI\\\\zJ\\\\wt{oDH\\ngJP@DjvhCjabgI\\\\zJ\\\\wt{oGp\\ngJP@DjvhCjabgIkkAHP\\ngJP@DjvhCjabgIkz]pRD\\ngJP@DjvhCjabgIlxL\\\\wt{`dH\\ngJP@DjvhCjabgQ[kAHP\\ngJP@DjvhCjabgQ[z]pRD\\ngJP@DjvhCjabgQ\\\\xL\\\\wVBP`\\ngJP@DjvhCjabgQ\\\\xL\\\\wVB_@\\ngJP@DjvhCjabgQ\\\\xL\\\\wt{`dH\\ngJP@DjvhCjabgQ\\\\xL\\\\wt{`gp\\ngJP@DjvhCjabgQ\\\\zJ\\\\wt{`dH\\ngJP@DjvhCjabgQkz]pRD\\ngJP@DjvhCkBRV~f}la@\\ngJP@DjvhCkBRV~f}ta@\\ngJP@DjvhCkBRV~f}t~@\\ngJP@DjvhCkBRV~g]la@\\ngJP@DjvhCkBRV~g]ta@\\ngJP@DjvhCkBRWNCGM}N{YB\\ngJP@DjvhCkBRWNCGM}N{Y|\\ngJP@DjvhCkBRWNCGM}N{iB\\ngJP@DjvhCkBRWNCGM}N{i|\\ngJP@DjvhCkBRWNbgM}M{iB\\ngJP@DjvhCkBRWNbgM}M{i|\\ngJP@DjvhCkBRWNbgM}N{iB\\ngJP@DjvhCkBRZ~f}ta@\\ngJP@DjvhCkBRZ~g]ta@\\ngJP@DkfhCjabgI[kAHP\\ngJP@DkfhCjabgI[kAH_rRNH\\ngJP@DkfhCjabgI[z]pRD\\ngJP@DkfhCjabgI\\\\dLTynlDa@\\ngJP@DkfhCjabgI\\\\dLTyoiwAHP\\ngJP@DkfhCjabgQkkAHP\\ngJP@DkfhCjabgQkz]pRD\\ngJP@DkfjICjabgI[kAO`<\\ngJP@DkfjICjabgI[kAO`>\\ngJP@DkfjICjabgI[z]pSx<\\ngJP@DkfjICjabgI[z]pSx>\\ngJP@DkfjICjabgI\\\\dLTynlD~@<\\ngJP@DkfjICjabgI\\\\dLTynlD~@>\\ngJP@DkfjICjabgI\\\\dLTyoiwAO`<\\ngJP@DkfjICjabgI\\\\dLTyoiwAO`>\\ngJP@DkfjICjabgI\\\\xLTwVBP`<\\ngJP@DkfjICjabgI\\\\xLTwVBP`>\\ngJP@DkfjICjabgI\\\\xLTwVB_@<\\ngJP@DkfjICjabgI\\\\xLTwVB_@>\\ngJP@DkfjICjabgI\\\\xLTwV|_@<\\ngJP@DkfjICjabgI\\\\xLTwV|_@>\\ngJP@DkfjICjabgI\\\\xLTwt{`dH<\\ngJP@DkfjICjabgI\\\\xLTwt{`dH>\\ngJP@DkfjICjabgI\\\\xLTwt{`gp<\\ngJP@DkfjICjabgI\\\\xLTwt{`gp>\\ngJP@DkfjICjabgI\\\\xLTwt{oGp<\\ngJP@DkfjICjabgI\\\\xL\\\\wVB_@<\\ngJP@DkfjICjabgI\\\\xL\\\\wVB_@>\\ngJP@DkfjICjabgI\\\\xL\\\\wt{`gp<\\ngJP@DkfjICjabgI\\\\xL\\\\wt{`gp>\\ngJP@DkfjICjabgIkkAHP<\\ngJP@DkfjICjabgIkkAHP>\\ngJP@DkfjICjabgIkz]pRD<\\ngJP@DkfjICjabgIkz]pRD>\\ngJP@DkfjICjabgIldLTynlDa@<\\ngJP@DkfjICjabgIldLTynlDa@>\\ngJP@DkfjICjabgIlxLTwVBP`<\\ngJP@DkfjICjabgIlxLTwVBP`>\\ngJP@DkfjICjabgIlxLTwt{`dH<\\ngJP@DkfjICjabgIlxLTwt{`dH>\\ngJP@DkfjICjabgQ[kAO`<\\ngJP@DkfjICjabgQ[kAO`>\\ngJP@DkfjICjabgQ\\\\xL\\\\wt{`gp<\\ngJP@DkfjICjabgQ\\\\xL\\\\wt{`gp>\\ngJP@DkfjICjabgQlxLTwVBP`<\\ngJP@DkfjICjabgQlxLTwVBP`>\\ngJP@LdaB`Nedm}MkYB=\\ngJP@LdaB`Nedm}MkY|=\\ngJP@LdaB`Nedm}MkiB\\ngJP@LdaB`Nedm}Mki|\\ngJP@LdaB`Nedm}NkiB=\\ngJP@LdaB`Nedm}Nki|=\\ngJP@LdaB`Nedn\\\\EN[z]WRD\\ngJP@LdaB`Nedn\\\\EN[z]WSx\\ngJP@LdaB`Nedn]EN[z[WRD\\ngJP@LdaB`Nedn]EN[z[WSx\\ngJP@LdaB`Nedu}MkYB=\\ngJP@LdaB`Nedu}MkiB\\ngJP@LdaB`Nedu}NkiB=\\ngJP@LdaB`Nedv\\\\EN[z]WRD\\ngJP@LdaB`Nedv]EN[z[WRD\\ngJPAEJUsTAuPqSdv\\\\FJ[kAHP>\\ngJPAMJULrAuPqSdn\\\\EN[sA@\\ngJPBABPHPQ`aJfj@zpXeoBD\\ngJPBABRHPQ`aJnj@zpTeoBD>\\ngJPD@DHHRYZ`NcENRwVBP`\\ngJPD@DHHRYZ`NcENbwVBP`\\ngJPD@DHHR[j`NmGI[pa@\\ngJPD@DHHR[j`NmGI[x^WbD\\ngJPD@DJ`Rfh@NhFzvsl=\\ngJPD@DPHRnh@NhFzvsl=\\ngJPD@DPHRnh@NhFzvst\\ngJPD@DPHRnh@NhFzwSt=\\ngJPD@DPHRnh@NhGNCGMumgh\\ngJPD@DPHRni`NdEUungh\\ngJPD@DPHRni`NdEV\\\\FN[k]OP\\ngJPD@DPHRnj`NbENRwVBP`\\ngJPD@DSpRnh@NhF~gml{@=\\ngJPD@DXHRfjPNbFJRwRB^`\\ngJPD@DXHRfjPNbFJRwbB\\ngJPD@DXHRfjPNbFJRypXyndD}@\\ngJPD@DXHRfjPNbFJbwRB^`\\ngJPD@DXHRfjPNbFJbypXyndD}@\\ngJPD@DXHRfjPNlFR[yAvsl\\ngJPD@DXHRfjPNlFR[yAvst\\ngJPD@DXHRfjPNlFRkyAvsl\\ngJPD@DXHRfjPNlFRkyAvst\\ngJPD@DXHRfjPNlFRlxL\\\\wrCmgh\\ngJPD@DXHRfjiDNbFJRypXindDa@<\\ngJPD@DXHRfjiDNbFJRypXindDa@>\\ngJPD@DXHRfjiDNbFJSYpXindDa@<\\ngJPD@DXHRfjiDNbFJSYpXindDa@>\\ngJPD@VPlRnh@NhFzvst\\ngJPD@bQDRnh@NhFzvsl=\\ngJPD@bQDRnh@NhFzvst\\ngJPD@bSpRnh@NhF~gml{@=\\ngJPDAxGpRij`NbFJmWRC``\\ngJPDAxSpRnX@NhFzwSt=\\ngJPE@bSpdiWT@GTC_Svv]`=\\ngJPH@DIKT@GTc][Yv=\\ngJPH@DIKT@GTc][Yz\\ngJPH@DIKT@GTc][iz=\\ngJPH@DIKT@GTc_Cvv]`=\\ngJPH@DIKT@GTc_Cvv^`\\ngJPH@DIKT@GTcgAcfzvst\\ngJPH@DIKTpGQbgI\\\\xLTwVzP`\\ngJPH@DIKTpGQbgIkpa@\\ngJPH@DIKUPGQbgI[kAHP\\ngJPH@DIKUPGQbgI[x^pRD\\ngJPH@DIKUTRGQbgI\\\\xLTwVBP`<\\ngJPH@DIKUTRGQbgI\\\\xLTwVBP`>\\ngJPH@DILmHGQbgI\\\\zJ\\\\wVB^`\\ngJPH@DILmHGQbgI\\\\zJ\\\\wfB\\ngJPH@DILthGVddmtM{X\\ngJPH@DILthGVddmtM{h\\ngJPH@DILthGVddm|M{Yz\\ngJPH@DILthGVddm|M{iz\\ngJPH@DILuTbGQbgI[kAHP<\\ngJPH@DILuTbGQbgI[kAHP>\\ngJPH@DILuTbGQbgI[x^pRD<\\ngJPH@DILuTbGQbgI\\\\xL\\\\wVBP`<\\ngJPH@DILuTbGQbgI\\\\xL\\\\wVBP`>\\ngJPH@DILuTbGQbgI\\\\zJ\\\\wVBP`<\\ngJPH@DILuTbGQbgI\\\\zJ\\\\wVBP`>\\ngJPH@DILuTbGQbgI\\\\zJ\\\\wV|P`<\\ngJPH@DILuTbGQbgI\\\\zJ\\\\wV|P`>\\ngJPH@DILuTbGQbgI\\\\zJ\\\\wp}`dH<\\ngJPH@DILuTbGQbgI\\\\zJ\\\\wp}`dH>\\ngJPH@DILuTbGQbgQ[kAHP>\\ngJPH@DILuTbGQbgQ\\\\xL\\\\wVBP`<\\ngJPH@DILuTbGQbgQ\\\\xL\\\\wVBP`>\\ngJPH@DIMsPGQbgI\\\\zJ\\\\wRzP`\\ngJPH@DIMsPGVedm|MkYB\\ngJPH@DIMsPGVedm|MkiB\\ngJPH@DIMsPGVedn]EN[x[WRD\\ngJPH@DIMsPGVedu|MkiB\\ngJPH@DIST@GRBf~P]l{@=\\ngJPH@DIST@GRBf~P]l}@\\ngJPH@DIST@GRBf~P]t}@=\\ngJPH@DIST@GRBf~Wml{@=\\ngJPH@DIST@GRBf~Wml}@\\ngJPH@DIST@GRBgNCEM|`{iz\\ngJPH@DIST@GRBgNCGM|`{Yz\\ngJPH@DIST@GRBgNCGM|o[Yz\\ngJPH@DIST@GRBj~P]l{@=\\ngJPH@DIST@GRBj~P]l}@\\ngJPH@DIST@GRBj~P]t}@=\\ngJPH@DIST@GRBkNCEM|`{iz\\ngJPH@DIST@GRBkNCGM|`{Yz\\ngJPH@DISTpGUCENRwRBP`\\ngJPH@DISTpGUCENRwrCndH\\ngJPH@DISTpGUCENRypXiodG]HP\\ngJPH@DISTpGUCENRypXioe{]HP\\ngJPH@DISTpGUCENSWrCndH\\ngJPH@DISTpGUCENSYpXindDa@\\ngJPH@DISTpGUCENSYpXiodG]HP\\ngJPH@DISTpGUCEVRwRBP`\\ngJPH@DISTpGUCEVRwrCndH\\ngJPH@DISTpGUCEVRypXiodG]HP\\ngJPH@DISTpGUCEVRypXyodG]HP\\ngJPH@DISTpGUCEVSWrCndH\\ngJPH@DISTpGVCIM|`{Yz\\ngJPH@DISTpGVCIM|`{iv\\ngJPH@DISTpGVCIM|`{iz\\ngJPH@DISTpGVCIN\\\\FN[yAwSt\\ngJPH@DISTpGVCIU|`{Yz\\ngJPH@DISTpGVCIU|`{iz\\ngJPH@DISUPGUCENRwrC`dH\\ngJPH@DISUPGUCEVRwrC`dH\\ngJPH@DISUTbGUCENRypXiodGAHP<\\ngJPH@DISUTbGUCENRypXiodGAHP>\\ngJPH@DISUTbGUCENSWrC`dH<\\ngJPH@DISUTbGUCENSWrC`dH>\\ngJPH@DISUTbGUCENSYHXis_HNBP`<\\ngJPH@DISUTbGUCENSYpXiodGAHP<\\ngJPH@DISUTbGUCENSYpXiodGAHP>\\ngJPH@DISUTbGUCEVRwrC`gp>\\ngJPH@DISUTbGUCEVRypXiodGAHP<\\ngJPH@DISUTbGUCEVSWrC`dH<\\ngJPH@DISUTbGUCEVSWrC`dH>\\ngJPH@DISUTbGUCEVSYpXiodGAHP<\\ngJPH@DISUTbGUCEVSYpXiodGAHP>\\ngJPH@VIST@GRBj~P]l{@=\\ngJPH@VIST@GRBj~P]l}@\\ngJPH@VIST@GRBj~P]t}@=\\ngJPH@VISTpGUCENSYpXiodG]HP\\ngJPH@bIKT@GTc][Yv=\\ngJPH@bIKT@GTc][Yz\\ngJPH@bIKT@GTc][iz=\\ngJPH@bIMsPGVedm|MkiB\\ngJPH@bIST@GRBf~P]l{@=\\ngJPH@bIST@GRBf~P]l}@\\ngJPH@bIST@GRBf~Wml{@=\\ngJPH@bIST@GRBj~P]l{@=\\ngJPH@bIST@GRBj~P]l}@\\ngJPH@bIST@GRBj~P]t}@=\\ngJPH@bIST@GRBkNCGM|`{Yz\\ngJPH@bISTpGUCEVRwrCndH\\ngJPH@bISTpGUCEVSWrCndH\\ngJPH@bISTpGVCIU|`{iz\\ngJPH@bISUPGUCEVRwrC`dH\\ngJPH@xIKT@GTc][iz=\\ngJPH@xIKT@GTc_Cvv]`=\\ngJPH@xIKT@GTc_Cvz^`=\\ngJPH@xIKUPGQbgI[x^pRD\\ngJPH@xILuTbGQbgI[x^pRD<\\ngJPH@xILuTbGQbgI[x^pRD>\\ngJPH@xILuTbGQbgI\\\\zJ\\\\wp}`dH<\\ngJPH@xILuTbGQbgI\\\\zJ\\\\wp}`dH>\\ngJPH@xIMsPGQbgI[x^WRD\\ngJPH@xITuPGUCENRwrC`dH\\ngJPH@xITuPGUCENSWrC`dH\\ngJPHABIKT@GTcgAcfzvst\\ngJPHADIKT@GTc][Yv=\\ngJPHADIKT@GTc][Yz\\ngJPHADIKUPGQbgI[kAHP\\ngJPHADILthGQbgI\\\\zJ\\\\`\\ngJPHADILuTbGQbgI[kAHP<\\ngJPHADILuTbGQbgI[kAHP>\\ngJPHADILuTbGQbgI\\\\zJ\\\\wVBP`<\\ngJPHADILuTbGQbgI\\\\zJ\\\\wVBP`>\\ngJPHADILuTbGQbgI\\\\zJ\\\\wV|P`<\\ngJPHADILuTbGQbgI\\\\zJ\\\\wV|P`>\\ngJPHAHILuLbGQbgI[sA@>\\ngJPHAHILuTbGQbgI[kAHP<\\ngJPHAHILuTbGQbgI[kAHP>\\ngJPHAHILuTbGQbgI\\\\zJ\\\\wVBP`<\\ngJPHAHILuTbGQbgI\\\\zJ\\\\wVBP`>\\ngJPHAVIKUPGQbgI[kAHP\\ngJPHAVILuTbGQbgI\\\\zJ\\\\wVBP`<\\ngJPHAVILuTbGQbgI\\\\zJ\\\\wVBP`>\\ngJPHAbIKT@GTc][Yv=\\ngJPHAbIKT@GTc][Yz\\ngJPHAbIKT@GTc][iz=\\ngJPHAbIKTpGQbgI[k]HP\\ngJPHAbIKTpGQbgI[pa@\\ngJPHAbILuTbGQbgI[kAHP<\\ngJPHAbILuTbGQbgI[kAHP>\\ngJPHAbILuTbGQbgI\\\\zJ\\\\wVBP`<\\ngJPHAbILuTbGQbgI\\\\zJ\\\\wVBP`>\\ngJPHAbILuTbGQbgI\\\\zJ\\\\wVB_@>\\ngJPHAbILuTbGQbgI\\\\zJ\\\\wV|P`<\\ngJPHAbILuTbGQbgI\\\\zJ\\\\wV|P`>\\ngJPHAxIKT@GTc][Yv=\\ngJPHAxIKT@GTc][Yz\\ngJPHAxIKT@GTc_Cvv]`=\\ngJPHAxIKT@GTc_Cvv^`\\ngJPHAxIKT@GTc_Cvz^`=\\ngJPHAxIKTpGQbgI\\\\xLTwVzP`\\ngJPHAxIKTpGQbgI\\\\xLTwp}ndH\\ngJPHAxIKUPGQbgI[x^pRD\\ngJPHAxILuTbGQbgI[x^pRD<\\ngJPHAxILuTbGQbgI\\\\xL\\\\wVBP`<\\ngJPHAxILuTbGQbgI\\\\xL\\\\wVBP`>\\ngJPHAxILuTbGQbgI\\\\xL\\\\wp}`dH>\\ngJPHAxILuTbGQbgI\\\\zJ\\\\wVBP`<\\ngJPHAxILuTbGQbgI\\\\zJ\\\\wVBP`>\\ngJPHAxILuTbGQbgI\\\\zJ\\\\wp}`dH<\\ngJPHAxILuTbGQbgI\\\\zJ\\\\wp}`dH>\\ngJPHAxILuTbGQbgQ[x^pRD<\\ngJPHAxISR@GRBfzwSt=\\ngJPHAxISR@GRBf~W]t}@=\\ngJPHAxITuPGUCENRwrC`dH\\ngJPHAxITuPGUCENSWrC`dH\\ngJPHAxITuPGUCENSWr}oDH\\ngJPHAxITuPGUCEVbwrC`dH\\ngJPHAxITuPGUCEVcWrC`dH\\ngJPHAxITuTBGUCENbwrC`dH<\\ngJPHAxITuTBGUCENbwrC`dH>\\ngJPHCPITuPGQCEN\\\\dLTyodGAO`\\ngJPHEPIWUPGUCENcWtC`dH\\ngJPHMPITsHGQCEI[i]worTJH\\ngJPHMPITuTBGQCEI\\\\xJ\\\\wRBP`<\\ngJPHMPITuTBGQCEI\\\\xJ\\\\wRBP`>\\ngJPHMPITuTBGQCEI\\\\xJ\\\\wrCoDH<\\ngJPHMPITuTBGQCEI\\\\xJ\\\\wrCoDH>\\ngJPHMPITuTBGQCEI\\\\xL\\\\wRBP`<\\ngJPHMPITuTBGQCEI\\\\xL\\\\wRBP`>\\ngJPHMPITuTBGQCEI\\\\xL\\\\wrCoDH<\\ngJPHMPITuTBGQCEI\\\\xL\\\\wrCoDH>\\ngJPHMPYIBE@]KIkz[WRD\\ngJPI@DBTjZhCjabgI[yApRD\\ngJPIAVBTij@CiAS_HNv]`=\\ngJPIAVBTij@CiAS_Kvv^`\\ngJPIAVBTij@CiAU_HNv]`=\\ngJPIAVBTij@CiAU_HNv^`\\ngJPIAVBTij@CiAU_HNz^`=\\ngJPIAxBTej@CjQoa{[Np=\\ngJPIAxBTej@CjQoa{[OP\\ngJPIAxBTfZjQChqSdn]EN[kAHP<\\ngJPIAxBTfZjQChqSdn]EN[kAHP>\\ngJPIAxBTfZjQChqSdn]EN[x^pRD<\\ngJPIAxBTfZjQChqSdn]EN[x^pRD>\\ngJPIAxBTjZhCjabkQ[yApRD\\ngJPIMPZTjZjAChabdn\\\\EN[yAwbD<\\ngJPIMPZTjZjAChabdn\\\\EN[yAwbD>\\ngJPIMP[djZjAChabdn\\\\EN[iAHP<\\ngJPIMP[djZjAChabdn\\\\EN[iAHP>\\ngJPIMP[djZjAChabdn\\\\EN[yAwbD<\\ngJPIMP[djZjAChabdn\\\\EN[yAwbD>\\ngJPIMP[djZjAChabdn\\\\FN[yAwbD>\\ngJPL@DHHpPdru@]ZJRwaB\\ngJP`@TfVhCkQSf|pP\\ngJP`@TfVhCkQSf|w`\\ngJP`@TfVhCkQSgNbgMy``\\ngJP`@TfVhCkQSj|pP\\ngJP`@TfZjQCkQSf|pP<\\ngJP`@TfZjQCkQSf|pP>\\ngJP`@TfZjQCkQSf|w`<\\ngJP`@TfZjQCkQSf|w`>\\ngJP`@TfZjQCkQSgICEN[sA@>\\ngJP`@TfZjQCkQSgNCGMy``<\\ngJP`@TfZjQCkQSgNCGMy``>\\ngJP`@TfZjQCkQSgNbgMy``<\\ngJP`@TfZjQCkQSgNbgMy``>\\ngJP`@TfZjQCkQSj|pP>\\ngJP`@TfyhCiRs]CZv\\ngJP`@TfyhCiRs]CZz\\ngJP`@dfVhChqSdmu`dH\\ngJP`@dfVhChqSdmu`gp\\ngJP`@dfVhChqSdmuoDH\\ngJP`@dfVhChqSdmuoGp\\ngJP`@dfVhChqSdn]EN[kAHP\\ngJP`@dfVhChqSdn]EN[kAO`\\ngJP`@dfVhChqSdn]EN[k^HP\\ngJP`@dfVhChqSdn]EN[k^O`\\ngJP`@dfVhChqSduu`dH\\ngJP`@dfVhChqSduuoDH\\ngJP`@dfVhChqSdv]EN[kAHP\\ngJP`@dfVhChqSdv]EN[k^HP\\ngJP`@dfVhChqShmu`dH\\ngJP`@dfVhChqShmu`gp\\ngJP`@dfVhChqShn]EN[kAHP\\ngJP`@dfVhChqShn]EN[kAO`\\ngJP`@dfVhChqShuu`dH\\ngJP`@dfVhChqShv]EN[kAHP\\ngJP`@dfvdCkQrT\\ngJP`@dfvdCkQrV|OP\\ngJP`@dfvdCkQrWNbgH\\ngJP`@dfvdCkQrWNbgMx^`\\ngJP`@dfvhCkQrV|HP\\ngJP`@dfvhCkQrV|O`\\ngJP`@dfvhCkQrWNbgMxP`\\ngJP`@dfvhCkQrWNbgMx_@\\ngJP`@dfvhCkQrZ|HP\\ngJP`@dfzhCkQrV|HP\\ngJP`@dfzhCkQrWICEN[pa@\\ngJP`@dfzjQCkQrWNBgMxP`<\\ngJP`@dfzjQCkQrWNBgMxP`>\\ngJP`@dfzjQCkQrWNBgMx_@<\\ngJP`@dfzjQCkQrWNBgMx_@>\\ngJP`ADkjhChaSdnRFJ\\\\wVBP`\\ngJP`ADkjjIChaSdn\\\\FJ[kAHP<\\ngJP`AdefdCiQU][Yv\\ngJP`AdijdChabdmt`gh\\ngJP`AdijdChabdn\\\\FN[iAOP\\ngJP`AdijdCkAdf~P]l}@\\ngJP`AdijjQChabdmt`dH<\\ngJP`AdijjQChabdmt`dH>\\ngJP`AdijjQChabdmt`gp<\\ngJP`AdijjQChabdmt`gp>\\ngJP`AdijjQChabdmtoDH<\\ngJP`AdijjQChabdmtoDH>\\ngJP`AdijjQChabdnRFJ\\\\wRBP`<\\ngJP`AdijjQChabdnRFJ\\\\wRBP`>\\ngJP`AdijjQChabdn\\\\FJ[iAHP<\\ngJP`AdijjQChabdn\\\\FJ[iAHP>\\ngJP`AdijjQChabdn\\\\FJ[iAO`<\\ngJP`AdijjQChabdn\\\\FJ[iAO`>\\ngJP`AdijjQChabdn\\\\FN[iAHP<\\ngJP`AdijjQChabdn\\\\FN[iAHP>\\ngJP`AdijjQChabdn\\\\FN[iAO`<\\ngJP`AdijjQChabdn\\\\FN[iAO`>\\ngJP`AdijjQChabdn\\\\FN[i^O`<\\ngJP`AdijjQChabdut`dH<\\ngJP`AdijjQChabdut`dH>\\ngJP`AdijjQChabdv\\\\FJ[iAHP<\\ngJP`AdijjQChabdv\\\\FJ[iAHP>\\ngJP`AdijjQChabdv\\\\FN[iAHP>\\ngJP`AdijjQChabhmt`dH<\\ngJP`AdijjQChabhmt`dH>\\ngJP`AdijjQChabhn\\\\FN[iAHP<\\ngJP`AdijjQChabhn\\\\FN[iAHP>\\ngJPa@erS[RAuhyJ\\ngJPa@erS[RAuhyK^Gh\\ngJPa@erS[TAuhyK^DH\\ngJPa@erS[TAuhyK^Gp\\ngJPa@erS[TAuhyM^DH\\ngJPa@mrSKTAtXitVzpRD\\ngJPaAiJTuTAtPqRVzPRD>\\ngJPdAePF`Rnj`NlFJ\\\\xLTwdB>\\ngJPdAiPJ`Rfj`NlFI\\\\xLTwa|>\\ngJPdAiPJ`Rfj`NlFIlxLTwR|P`>\\ngJPdAiPJ`Rfj`NlFIlxLTwaB>\\ngJPdHaBFDRij`NlFN\\\\dLTyoLD>\\ngJPdHaVFlRij`NlFNksA@>\\ngJPdI`xJ`RVj`NmEIkh^HP>\\ngJPeI`VIDTiKUPGVbdutODH>\\ngJPh@iPIMuHGVcdh\\ngJPh@iPIMuHGVcdmx^`\\ngJPh@iPIMuPGVcdmxP`\\ngJPhAePIWUPGQCEIkjAHP>\\ngJPhAePIWUPGQCEIlxLTwTBP`>\\ngJPhAePIWUPGQCIIkjAHP>\\ngJPhAePIWUPGQCIIlxLTwTBP`>\\ngJPhAePIWUPGQCIIlxL\\\\wTBP`>\\ngJPhDPDIMuTbGRcd<\\ngJPhE`DIMsPGVcdmxP`\\ngJPhHaVITuPGQCGQ[kAHP>\\ngJPhI`xIKTpGVbdmtODH\\ngJPhIaVIKTpGVbdmxP`\\ngJPhIaVIKTpGVbdmx_@\\ngJPhLPDIKTpGRbd\\ngJPhLQDIKTpGRbd\\ngJPhLQxIKTpGRbf|G`\\ngJPhaePRUrTuTAu`qK]KqB>\\ngJPhaePRUrTuTAu`qM]KqB>\\ngJPhaePRUrTuTAu`qMgAbfzWbD>\\ngJPi@cPGdfVhCkQSkNbgMu`gp\\ngJPiLPDGdejXCiQR\\ngJQ@@dlp@]RMumgX=\\ngJQ@@dlp@]RMumgh\\ngJQ@@dlp@]RMungh=\\ngJQ@@dls@]FJ\\\\enmta@\\ngJQ@@dls@]FJ\\\\eoBD\\ngJQ@@dls@]FJ\\\\foBD\\ngJQ@@dls@]JJkk[OP\\ngJQ@@dls@]JJkk]Np\\ngJQ@@dls@]JJkk]OP\\ngJQ@@dlu@]FJ\\\\enlDa@\\ngJQ@@dluQH]FJ\\\\enlD~@<\\ngJQ@@dluQH]FJ\\\\enlD~@>\\ngJQ@@dmP@]RMumgX=\\ngJQ@@dmP@]RMumgh\\ngJQ@@dmP@]RMungh=\\ngJQ@@dmP@]RN\\\\FJ[k]OP\\ngJQ@@dmP@]RN\\\\FN[k[OP\\ngJQ@@dmS@]FJ\\\\enmta@\\ngJQ@@dmS@]FJ\\\\eoBD\\ngJQ@@dmS@]FJ\\\\eoCx\\ngJQ@@dmS@]FJ\\\\es`qS][iB\\ngJQ@@dmS@]FJ\\\\es`qs][iB\\ngJQ@@dmS@]FJ\\\\es`qs^DH\\ngJQ@@dmS@]FJ\\\\es`qs^Gp\\ngJQ@@dmS@]FJ\\\\fnmta@\\ngJQ@@dmS@]FJ\\\\foBD\\ngJQ@@dmS@]JJkk[OP\\ngJQ@@dmS@]JJkk]OP\\ngJQ@@dmS@]JJlxL\\\\wVz^`\\ngJQ@@dmU@]FJ\\\\enlDa@\\ngJQ@@dmU@]FJ\\\\enlDa\\x7FIHx`\\ngJQ@@dmU@]FJ\\\\enmx~@\\ngJQ@@dmU@]FJ\\\\erPqSfzpRD\\ngJQ@@dmU@]FJ\\\\erPqSfzpRG|dcb\\ngJQ@@dmU@]FJ]FnlDa@\\ngJQ@@dmUQH]FJ\\\\enlD~@<\\ngJQ@@dmUQH]FJ\\\\enlD~@>\\ngJQ@@dmUQH]FJ\\\\enlD~\\x7FIHx`>\\ngJQ@@dmUQH]FJ\\\\es`qS]XIB<\\ngJQ@@dmUQH]FJ\\\\es`qS]XIB>\\ngJQ@@dmUQH]FJ\\\\es`qS]XI|<\\ngJQ@@dmUQH]FJ\\\\es`qS]XI|>\\ngJQ@@dmUQH]FJ\\\\es`qs]XI|<\\ngJQ@@dmUQH]FJ\\\\es`qs]XI|>\\ngJQ@@dmUQH]FJ\\\\fnlDa@<\\ngJQ@@dmUQH]FJ\\\\fnlDa@>\\ngJQ@@dmUQH]FJ\\\\fs`qS]XIB<\\ngJQ@@dmUQH]FJ\\\\fs`qS]XIB>\\ngJQ@@drt`]FJ\\\\enlD}@\\ngJQ@@drt`]FJ\\\\enmx}@\\ngJQ@@drt`]FJ\\\\eoLD\\ngJQ@@drt`]FJ\\\\eoMx\\ngJQ@@drt`]FJ\\\\eshis]XIz\\ngJQ@@drt`]FJ\\\\eshis][qz\\ngJQ@@drt`]FJ\\\\eshis^XH\\ngJQ@@drt`]FJ\\\\eshis^[p\\ngJQ@@drt`]FJ]EnlD}@\\ngJQ@@drt`]FJ]EoLD\\ngJQ@@drt`]FJ]Eshis]XIz\\ngJQ@@drt`]FJ]Eshis^XH\\ngJQ@@dru@]FJ\\\\enlDa@\\ngJQ@@dru@]FJ\\\\enlD~@\\ngJQ@@dru@]FJ\\\\enmxa@\\ngJQ@@dru@]FJ\\\\eshis]XIB\\ngJQ@@dru@]FJ\\\\eshis]XI|\\ngJQ@@dru@]FJ\\\\eshis][qB\\ngJQ@@dru@]FJ\\\\eshis][q|\\ngJQ@@dru@]FJ\\\\fnlDa@\\ngJQ@@dru@]FJ]EnlDa@\\ngJQ@@dru@]FJ]EnlD~@\\ngJQ@@dru@]FJ]Eshis]XIB\\ngJQ@@dru@]FJ]Eshis]XI|\\ngJQ@@dru@]FJ]FnlDa@\\ngJQ@@dsR`]FJ\\\\e@\\ngJQ@@dsR`]FJ\\\\eoCt\\ngJQ@@dsR`]FJ\\\\eoMt\\ngJQ@@dsR`]FJ\\\\eshir\\ngJQ@@dsR`]FJ\\\\eshis][iz\\ngJQ@@dsR`]FJ\\\\eshis^Gh\\ngJQ@@dsR`]FJ\\\\eshis^[h\\ngJQ@@dsR`]ZRRwPwm`\\ngJQ@@dsR`]ZRRwpwmgh\\ngJQ@@dsTrH]FJ\\\\enlD}@<\\ngJQ@@dsTrH]FJ\\\\enlD}@>\\ngJQ@@dsTrH]FJ\\\\eoLD<\\ngJQ@@dsTrH]FJ\\\\eoLD>\\ngJQ@@dsTrH]FJ\\\\eoMx<\\ngJQ@@dsTrH]FJ\\\\eoMx>\\ngJQ@@dsTrH]FJ\\\\erPqSfzpSt>\\ngJQ@@dsTrH]FJ\\\\erPqSf|pP<\\ngJQ@@dsTrH]FJ\\\\erPqSf|pP>\\ngJQ@@dsTrH]FJ\\\\eshis]XIz<\\ngJQ@@dsTrH]FJ\\\\eshis]XIz>\\ngJQ@@dsTrH]FJ\\\\eshis][qz<\\ngJQ@@dsTrH]FJ\\\\eshis][qz>\\ngJQ@@dsTrH]FJ\\\\eshis^XH<\\ngJQ@@dsTrH]FJ\\\\eshis^XH>\\ngJQ@@dsTrH]FJ\\\\eshis^[p<\\ngJQ@@dsTrH]FJ\\\\eshis^[p>\\ngJQ@@dsURH]FJ\\\\enlDa@<\\ngJQ@@dsURH]FJ\\\\enlDa@>\\ngJQ@@dsURH]FJ\\\\enlD~@<\\ngJQ@@dsURH]FJ\\\\enlD~@>\\ngJQ@@dsURH]FJ\\\\enmxa@<\\ngJQ@@dsURH]FJ\\\\enmxa@>\\ngJQ@@dsURH]FJ\\\\enmx~@>\\ngJQ@@dsURH]FJ\\\\erPqSfzpRD<\\ngJQ@@dsURH]FJ\\\\erPqSfzpRD>\\ngJQ@@dsURH]FJ\\\\erPqSfzpSx<\\ngJQ@@dsURH]FJ\\\\erPqSfzpSx>\\ngJQ@@dsURH]FJ\\\\erPqSfzwbD>\\ngJQ@@dsURH]FJ\\\\erPqSfzwcx>\\ngJQ@@dsURH]FJ\\\\es`qs]XIB<\\ngJQ@@dsURH]FJ\\\\es`qs]XIB>\\ngJQ@@dsURH]FJ\\\\es`qs]XI|<\\ngJQ@@dsURH]FJ\\\\es`qs]XI|>\\ngJQ@@dsURH]FJ\\\\es`qs][qB<\\ngJQ@@dsURH]FJ\\\\es`qs][qB>\\ngJQ@@dsURH]FJ\\\\eshis]XIB<\\ngJQ@@dsURH]FJ\\\\eshis]XIB>\\ngJQ@@dsURH]FJ\\\\eshis]XI|<\\ngJQ@@dsURH]FJ\\\\eshis]XI|>\\ngJQ@@dsURH]FJ\\\\eshis][qB<\\ngJQ@@dsURH]FJ\\\\eshis][qB>\\ngJQ@@dsURH]FJ\\\\eshis][qC~RAQ@>\\ngJQ@@dsURH]FJ\\\\eshis][q|<\\ngJQ@@dsURH]FJ\\\\eshis][q|>\\ngJQ@@dsURH]FJ\\\\fnlDa@<\\ngJQ@@dsURH]FJ\\\\fnlDa@>\\ngJQ@@dsURH]FJ\\\\frPqSfzpRD<\\ngJQ@@dsURH]FJ\\\\frPqSfzpRD>\\ngJQ@@dsURH]FJ\\\\fs`qs]XIB<\\ngJQ@@dsURH]FJ\\\\fs`qs]XIB>\\ngJQ@@dsURH]FJ\\\\fshis]XIB<\\ngJQ@@dsURH]FJ\\\\fshis]XIB>\\ngJQ@@dsURH]FJ\\\\fshis][qB<\\ngJQ@@dsURH]FJ]EnlDa@<\\ngJQ@@dsURH]FJ]EnlDa@>\\ngJQ@@dsURH]FJ]Es`qs]XIB<\\ngJQ@@dsURH]FJ]Es`qs]XIB>\\ngJQ@@dsURH]FJ]Es`qs]XI|<\\ngJQ@@dsURH]FJ]Es`qs]XI|>\\ngJQ@@dsURH]FJ]Eshis]XIB<\\ngJQ@@dsURH]FJ]Eshis]XIB>\\ngJQ@@dsURH]FJ]Eshis]XI|<\\ngJQ@@dsURH]FJ]FnlDa@>\\ngJQ@@dwM@]FJ\\\\eneta@\\ngJQ@@dwM@]FJ\\\\eoBD\\ngJQ@@dwM@]FJ\\\\es`is]KiB\\ngJQ@@dwM@]FJ\\\\eshis]KiB\\ngJQ@@dwM@]FJ\\\\eshis]Ki|\\ngJQ@@dwM@]FJ\\\\eshis^DH\\ngJQ@@dwM@]FJ\\\\eshis^Gp\\ngJQ@@dwM@]FJ\\\\foBD\\ngJQ@@dwM@]ZVRwpvmdH\\ngJQ@@dwM@]ZVRwpvndH\\ngJQ@@dwM@]ZVRytTyoam]HP\\ngJQ@@dwM@]ZVRytTyoam]O`\\ngJQ@@eMP@]HJ[yAvsl=\\ngJQ@@eMP@]HJ[yAvst\\ngJQ@@eMP@]HJ[yAwSt=\\ngJQ@@eMP@]HJ[y^vsl=\\ngJQ@@eMP@]HJ[y^vst\\ngJQ@@eMP@]HJ[y^wSt=\\ngJQ@@eMP@]HJ\\\\xLTwrCngh\\ngJQ@@eMP@]HJ\\\\xLTwr}ngh\\ngJQ@@eMP@]HJ\\\\xL\\\\wrCmgh\\ngJQ@@eMP@]HJ\\\\xL\\\\wr}mgh\\ngJQ@@eMP@]HJkyAvsl=\\ngJQ@@eMP@]HJkyAvst\\ngJQ@@eMP@]HJkyAwSt=\\ngJQ@@eMP@]HJlxLTwrCngh\\ngJQ@@eMP@]HJlxL\\\\wrCmgh\\ngJQ@@eMS@]TLTyK]HIB\\ngJQ@@eMS@]TLTyK]HI|\\ngJQ@@eMS@]TLTyK_HNzP`\\ngJQ@@eMS@]TLTyK_HNzP\\x7Fdd\\\\P\\ngJQ@@eMS@]TLTyK_HNz_@\\ngJQ@@eMS@]TLTyKgAbfzPRD\\ngJQ@@eMS@]TLTyKgAbfzPSx\\ngJQ@@eMS@]TLTyKgAbfzWbD\\ngJQ@@eMS@]TLTyKgAbf~P]ta@\\ngJQ@@eMS@]TLTyKgAbf~P]t~@\\ngJQ@@eMS@]TLTyKgAbf~Wmta@\\ngJQ@@eMS@]TLTyKgAbf~Wmt~@\\ngJQ@@eMS@]TLTyKgAcfzPRD\\ngJQ@@eMS@]TLTyKgAcf~P]ta@\\ngJQ@@eMS@]TLTyKgAcf~Wmt~@\\ngJQ@@eMS@]TLTyM]HIB\\ngJQ@@eMS@]TLTyM_HNzP`\\ngJQ@@eMS@]TLTyMgAbfzPRD\\ngJQ@@eMS@]TLTyMgAbfzWbD\\ngJQ@@eMS@]TLTyMgAbf~P]ta@\\ngJQ@@eMS@]TLTyMgAbf~Wmta@\\ngJQ@@eMS@]TLTyMgAcf~P]ta@\\ngJQ@@eMS@]TLUYK]HIB\\ngJQ@@eMS@]TLUYK_HNzP`\\ngJQ@@eMS@]TLUYKgAbfzPRD\\ngJQ@@eMS@]TLUYKgAbf~P]ta@\\ngJQ@@eMS@]TLUYKgAbf~P]t~@\\ngJQ@@eMS@]TLUYKgAcfzPRD\\ngJQ@@eMS@]TLUYKgAcf~P]ta@\\ngJQ@@eMS@]TLUYM_HNzP`\\ngJQ@@eMS@]TLUYMgAbfzPRD\\ngJQ@@eMS@]TLUYMgAbf~P]ta@\\ngJQ@@eMS@]XLdwrCmgh\\ngJQ@@eMS@]XLdwrCngX\\ngJQ@@eMS@]XLdwrCngh\\ngJQ@@eMS@]XLdypXiodG]OP\\ngJQ@@eMS@]XLdypXyodG[OP\\ngJQ@@eMS@]XLdypXyodG]OP\\ngJQ@@eMS@]XLeYpXiodG]OP\\ngJQ@@eMS@]XLeYpXyodG[OP\\ngJQ@@eMU@]TLTyK_HNBP`\\ngJQ@@eMU@]TLTyK_HNBP\\x7Fdd\\\\P\\ngJQ@@eMU@]TLTyK_HN|_@\\ngJQ@@eMU@]TLTyK_KvBP`\\ngJQ@@eMU@]TLTyKdabgM|`xIB\\ngJQ@@eMU@]TLTyKdabgM|oXIB\\ngJQ@@eMU@]TLTzM_HNBP`\\ngJQ@@eMU@]TLUYK_HNBP`\\ngJQ@@eMU@]TLUYK_HNBP\\x7Fdd\\\\P\\ngJQ@@eMURH]TLTyK_HNB_@<\\ngJQ@@eMURH]TLTyK_HNB_@>\\ngJQ@@eMURH]TLTyK_HNB__dd\\\\P<\\ngJQ@@eMURH]TLTyK_HNB__dd\\\\P>\\ngJQ@@eMURH]TLTyK_KvB_@<\\ngJQ@@eMURH]TLTyKdabgM|`xI|<\\ngJQ@@eMURH]TLTyKdabgM|`xI|>\\ngJQ@@eMURH]TLTyKgAbf~P\\\\Da@<\\ngJQ@@eMURH]TLTyKgAbf~P\\\\Da@>\\ngJQ@@eMURH]TLTyKgAbf~P\\\\D~@<\\ngJQ@@eMURH]TLTyKgAbf~P\\\\D~@>\\ngJQ@@eMURH]TLTyKgAbf~WlDa@<\\ngJQ@@eMURH]TLTyKgAbf~WlDa@>\\ngJQ@@eMURH]TLTyKgAcf~P\\\\D~@<\\ngJQ@@eMURH]TLTyKgAcf~P\\\\D~@>\\ngJQ@@eMURH]TLTyKgAcf~WlD~@<\\ngJQ@@eMURH]TLTyKgAcf~WlD~@>\\ngJQ@@eMURH]TLTyM_HNBP`<\\ngJQ@@eMURH]TLTyM_HNBP`>\\ngJQ@@eMURH]TLTyMgAbf~P\\\\Da@<\\ngJQ@@eMURH]TLTyMgAbf~P\\\\Da@>\\ngJQ@@eMURH]TLTyMgAbf~WlDa@<\\ngJQ@@eMURH]TLTyMgAbf~WlDa@>\\ngJQ@@eMURH]TLTyMgAcf~P\\\\Da@<\\ngJQ@@eMURH]TLTyMgAcf~P\\\\Da@>\\ngJQ@@eMURH]TLTzK_HNB_@<\\ngJQ@@eMURH]TLTzK_HNB_@>\\ngJQ@@eMURH]TLTzKgAcf~P\\\\D~@<\\ngJQ@@eMURH]TLTzKgAcf~P\\\\D~@>\\ngJQ@@eMURH]TLTzMgAbf~P\\\\Da@<\\ngJQ@@eMURH]TLTzMgAbf~P\\\\Da@>\\ngJQ@@eMURH]TLUYKgAbf~P\\\\Da@<\\ngJQ@@eMURH]TLUYKgAbf~P\\\\Da@>\\ngJQ@@eMURH]TLUYKgAbf~P\\\\D~@<\\ngJQ@@eMURH]TLUYKgAcf~P\\\\D~@<\\ngJQ@@eMURH]TLUYKgAcf~P\\\\D~@>\\ngJQ@@eMURH]TLUYM_HNBP`<\\ngJQ@@eMURH]TLUYM_HNBP`>\\ngJQ@@eMURH]TLUYMgAbf~P\\\\Da@<\\ngJQ@@eMURH]TLUYMgAbf~P\\\\Da@>\\ngJQ@@eMURH]TLUZKgAcf~P\\\\D~@<\\ngJQ@@eMURH]TLUZKgAcf~P\\\\D~@>\\ngJQAAIRYjPNcENRytTyoLD>\\ngJQAAIRYjPNcENbwVB^`>\\ngJQAAIRYjPNcENbypXynlD}@>\\ngJQDAJATBTuTAtPqtZzpRD\\ngJQDHHPpbU]TAu`isdabgMy``>\\ngJQDL@aABSKTAuhiK^DH\\ngJQDL@aABS[TAuhyK^DH\\ngJQH@jAJZ`@z`[k[OP\\ngJQH@jAJZ`@z`[k]OP=\\ngJQH@jAJZ`@z`[y^vsl=\\ngJQH@jAJZ`@z`[y^vst\\ngJQH@jAJZ`@z`[y^wSt=\\ngJQH@jAJZ`@z`\\\\xLTwr}ngh\\ngJQH@jAJZ`@z`\\\\xL\\\\wVv^`\\ngJQH@jAJZ`@z`\\\\xL\\\\wr}mgh\\ngJQH@jAJZf@zHXyKgAbfzWbD\\ngJQH@jAJZf@zHXyMgAbfzWbD\\ngJQH@jAJZf@zHXyMgAbf~Wmta@\\ngJQH@jAJZj@zHXyK]XIB\\ngJQH@jAJZjdPzHXyKgAbfzpRD<\\ngJQH@jAJzj@zhXitZ~`\\\\Da@\\ngJQHB@aIfe@zTdwPwm`\\ngJQHB@aInZ@zTlwPvm`\\ngJQHB@aInZ@ztTyoEt\\ngJQHBDQIfjdPztTyoLD<\\ngJQHBHaIfjdPztTyoLD<\\ngJQHBHaIfjdPztTyoLD>\\ngJQHBIAIfjdPztTyoLD>\\ngJQHBOAIfjdPztTyna{A@<\\ngJQHD@aIej@zLTzKgQSfzpRD\\ngJQHD@aIff@zLTyKgQSfzwRD\\ngJQHD@aIff@ztdeoao[HP\\ngJQHD@aIfjdPzLTyKgQSfzpRD<\\ngJQHD@aIfjdPzLTyKgQSfzpRD>\\ngJQHDIAIfjdPzLTyKgQSfzpRD<\\ngJQHH@aIZ`@zd[x^vsl=\\ngJQHH@aIZ`@zd[x^vst\\ngJQHH@aIZ`@zd[x^wSt=\\ngJQHH@aIZ`@zd\\\\xL\\\\wp}mgh\\ngJQHH@aIZf@zLTyK]CqB\\ngJQHH@aIZf@zLTyK_CvzP`\\ngJQHH@aIZf@zLTyKgAbfzGbD\\ngJQHH@aIZf@zLTyM_CvzP`\\ngJQHH@aIZj@zLTyK_CvBP`\\ngJQHH@aIZjbPzLTyK_CvB_@<\\ngJQHH@aJmj`PzHTyK]XIB<\\ngJQHH@aJmj`PzHTyK]XIB>\\ngJQHH@aJmj`PzHTyKgQSfzpRD<\\ngJQHH@aJmj`PzHTyKgQSfzpRD>\\ngJQHH@aJmj`PzHTyM]XIB<\\ngJQHH@aJmj`PzHTyM]XIB>\\ngJQHH@aJmj`PzHTzK]XIB<\\ngJQHH@aJmj`PzHTzK]XIB>\\ngJQHH@aJmj`PzHTzM]XIB>\\ngJQHHBqIZ`@zd\\\\xLTwp}ngh\\ngJQHHGAIZ`@zd[x^vsl=\\ngJQHHGAIZ`@zd[x^vst\\ngJQHHGAIZ`@zd[x^wSt=\\ngJQHHGAIZ`@zd\\\\xLTwVz^`\\ngJQHHGAIZ`@zd\\\\xL\\\\wVv^`\\ngJQHHGAIZf@zLTyK]CqB\\ngJQHHGAIZf@zLTyK_CvzP`\\ngJQHHGAIZj@zLTyK_CvBP`\\ngJQHHGAIZjbPzLTyK_CvB_@<\\ngJQHHGAIZjbPzLTyK_CvB_@>\\ngJQHHGAIZjbPzLTyKgAbf~GlDa@>\\ngJQHHGAIZjbPzLTyM_CvBP`<\\ngJQHHGAIZjbPzLTyM_CvBP`>\\ngJQHHOAIZ`@zd[k[Np=\\ngJQHHOAIZ`@zd[k[OP\\ngJQHHOAIZ`@zd[k]OP=\\ngJQHHOAIZ`@zd[x^vsl=\\ngJQHHOAIZ`@zd[x^vst\\ngJQHHOAIZ`@zd[x^wSt=\\ngJQHHOAIZ`@zd\\\\xLTwVz^`\\ngJQHHOAIZ`@zd\\\\xLTwp}ngh\\ngJQHHOAIZ`@zd\\\\xL\\\\wVv^`\\ngJQHHOAIZ`@zd\\\\xL\\\\wp}mgh\\ngJQHHOAIZf@zLTyM_CvzP`\\ngJQHHOAIZj@zLTyK]XIB\\ngJQHHOAIZj@zLTyK_CvBP`\\ngJQHHOAIZjbPzLTyKgAbf~GlDa@<\\ngJQHHOAIZjbPzLTyKgAbf~GlDa@>\\ngJQHHOAIZjbPzLTyMgAbf~GlDa@>\\ngJQHHOAIZjbPzLTzKgAcf~GlD~@>\\ngJQHL@aIZf@ztTeoBD\\ngJQHL@aIZf@ztTfnaxa@\\ngJQHL@aIZf@ztTfoBD\\ngJQHL@aIZjb`ztTeoBD<\\ngJQHL@aIZjb`ztTeoBD>\\ngJQHL@aIZjb`ztTes`qs^DH<\\ngJQHL@aIZjb`ztTes`qs^DH>\\ngJQHL@aJZf@zHXiK]HIB\\ngJQHL@aJZf@zHXiK]HI|\\ngJQHL@aJZf@zHXiK]KqB\\ngJQHL@aJZf@zHXiM]HIB\\ngJQHL@aJZf@zHXjK]HIB\\ngJQHL@aJZf@zHXjK]HI|\\ngJQHL@aJZf@zHXjM]HIB\\ngJQHL@aJZjdPzHXiK]HIB<\\ngJQHL@aJZjdPzHXiK]HIB>\\ngJQHL@aJZjdPzHXjK]HIB<\\ngJQHL@aJZjdPzHXjK]HIB>\\ngJQHLHaIZf@ztTeoBD\\ngJQHLHaIZf@ztTfoBD\\ngJQHLHaIZjb`ztTeoBD<\\ngJQHLHaIZjb`ztTeoBD>\\ngJQHLJqIZjb`ztTeoBD>\\ngJQHLLQIZf@ztTfoBD\\ngJQH`jBRnRfj`NbFNSYpXioe{AHP>\\ngJQI@jA\\\\eMP@]PN\\\\FJ[y^wSt\\ngJQI@jA\\\\eMP@]PN\\\\FN[y^vst\\ngJQI@jA\\\\eMS@]DL\\\\fs`qS]KqB\\ngJQI@jA\\\\eMS@]DL\\\\fs`qS_KvzP`\\ngJQIHO@RdmP@]RM|O[Yv=\\ngJQ`@bdvu@]JNP\\ngJQ`@ldru@]ZJRwaB\\ngJQ`@ldru@]ZJRwa|\\ngJQ`@ldru@]ZJRytTyoBD\\ngJQ`@ldru@]ZJRytTyoCx\\ngJQ`@ldru@]ZJSWaB\\ngJQ`AbeMU@]XLTyHXis^HH\\ngJQa@bnR[Z`NeGH\\ngJQdAcJATBTuTAt`qs`qR>\\ngJQeAcJATByJZj@zPXypXioEx>\\ngJQhAbjAJzj@zpXioHD\\ngJQhAbjAJzj@zpYIoHD\\ngJQhAbjAJzj@zpYIs`qS^PH>\\ngJQhHl@aJmj`PzpTeshis^DH<\\ngJQhHl@aJmj`PzpTeshis^DH>\\ngJQhHlOAJfj@zpXeoBD\\ngJQhHlOAJfj@zpXerPqSf|HP\\ngJQhHlOAJfj@zpXfoBD\\ngJQhHlOAJfj`PzpXfs`qs^DH<\\ngJQhHlOAJfj`PzpXfs`qs^DH>\\ngJR@@lTfVhCiRS]C^w~tP\\ngJR@@lTfphCjYnam[\\x7FZX=\\ngJR@ALTkfXCiAU][Yw~t@\\ngJR@ALTkfXCiAU][Y{~t@\\ngJR@`lQJyIej@zTdwPwm\\x7FmD\\ngJR@`lQJyIej@zTdwPwn\\x7FmD\\ngJR@`lQJyIej@zTdwP{n\\x7FmD\\ngJR@`lUqeIej@zTdwPwm\\x7FmD\\ngJR@`l]qeIlJ@zf[h[V\\x7Fvf@=\\ngJRA@lQJSKTAthi\\x7FZH\\ngJRA@lUrSKTAtiInao[\\x7FZH\\ngJRA@lUrSKTAtiInao]\\x7FZH\\ngJRAALSrUsLAt`jnml{\\x7FZ@\\ngJRAAL]JUsLAt`jnmt}\\x7FZ@\\ngJT@@TfRDCjInao[@\\ngJT@@TfVhCkQSf|pP\\ngJT@@TfVhCkQSkNbgMtNxH\\ngJT@@TfZjQCkQSf|pP<\\ngJT@@TfZjQCkQSf|pP>\\ngJT@@TfZjQCkQSgNCGMy``<\\ngJT@@TfZjQCkQSgNCGMy``>\\ngJT@@TfZjQCkQSgNbgMy``<\\ngJT@@TfZjQCkQSgNbgMy``>\\ngJT@@TfZjQCkQSkNCGMy``<\\ngJT@@TfZjQCkQSkNCGMy``>\\ngJT@@TfphCjYnam[@\\ngJT@@TfphCjYnam]@\\ngJT@@TfyhCiRs]CZv\\ngJT@@TfyhCiRs]CZz\\ngJT@@TfyhCiRs]Cjv\\ngJT@@TfyhCiRs]Cjz\\ngJT@@TfyhCiRsgASfzGUl\\ngJT@@TfyhCiRsgQSfzGUt\\ngJT@@TjZhChabgMt`xH\\ngJT@@TjZhChabgMt`xO{P@=\\ngJT@@TjZhChabgMt`{w{P@\\ngJT@@TjZhChabgNRFJ\\\\wRC``\\ngJT@@TjZhChabgNRFJ\\\\wrC`gp\\ngJT@@TjZhChabgN\\\\EN[iAwov`@\\ngJT@@TjZhChabgN\\\\FN[iAp_v`@\\ngJT@@TjZhChabgUt`xO{P@\\ngJT@@TjZhChabgV\\\\FN[iAp_v`@\\ngJT@@TjZhCiBc]K^w~t@=\\ngJT@@TjZhCiBc]K^{~t@\\ngJT@@TjZhCiBcgASfzV}w}h@\\ngJT@@TjZjAChabgN\\\\FN[iApP<\\ngJT@@TjZjAChabgN\\\\FN[iApP>\\ngJT@@TjZjAChabgN\\\\FN[iAw`<\\ngJT@@TjZjAChabgN\\\\FN[iAw`>\\ngJT@@TjZjAChabgVRFJ\\\\wRC``<\\ngJT@@TjZjAChabgVRFJ\\\\wRC``>\\ngJT@@TjZjAChabgV\\\\FN[iApP>\\ngJT@@defhChqSdmu`dO{Q@=\\ngJT@@defhChqSdn\\\\FJ[kAH_vb@\\ngJT@@defhChqSdv\\\\FJ[kAH_vb@\\ngJT@@dfRHCiIK_C^vP\\x7FmD\\ngJT@@dfRHCiIK_C^zP\\x7FmD\\ngJT@@dfRHCiIK_CnvP\\x7FmD\\ngJT@@dfRHCiIKgQSf~F}ta\\x7FZH\\ngJT@@dfRHCiIM_C^vP\\x7FmD\\ngJT@@dfRHCiIM_C^zP\\x7FmD\\ngJT@@dfRHCiIMgQSf~F}ta\\x7FZH\\ngJT@@dfVhChqSdmu`dO{Q@\\ngJT@@dfVhChqSdn\\\\FN[kAH_vb@\\ngJT@@dfVhChqSdn\\\\FN[k^H_vb@\\ngJT@@dfVhChqSdn]EN[x]pRG}h`\\ngJT@@dfVhChqSduu`dO{Q@\\ngJT@@dfVhChqSduuoDO{Q@\\ngJT@@dfVhChqSdu|NxIC~tP\\ngJT@@dfVhChqSdv\\\\FN[kAH_vb@\\ngJT@@dfVhChqShmu`dO{Q@\\ngJT@@dfVhChqShmu`gw{Q@\\ngJT@@dfVhChqShn\\\\FN[kAH_vb@\\ngJT@@dfVhChqShuu`dO{Q@\\ngJT@@dfVhChqShu|NxIC~tP\\ngJT@@dfVhChqShv\\\\FN[kAH_vb@\\ngJT@@dfVhCkRRV~F}la\\x7FZH\\ngJT@@dfVhCkRRV~F}ta\\x7FZH\\ngJT@@dfVhCkRRWNbgM|M{iC~tP\\ngJT@@dfVhCkRRZ~F}ta\\x7FZH\\ngJT@@dfphCiYK_CZvP`=\\ngJT@@dfvdCkQrWNBgH\\ngJT@@dfvdCkQrWNbgH\\ngJT@@dfvdCkRrVzFut\\ngJT@@dfvhCkQrV|HP\\ngJT@@dfvhCkQrWNbgMxP`\\ngJT@@dfvhCkQrZzGRD\\ngJT@@dfvhCkQrZ|HP\\ngJT@@dfvhCkRrV~Fula@\\ngJT@@dfvhCkRrV~Futa@\\ngJT@@dfvhCkRrZ~Fula@\\ngJT@@dfvhCkRrZ~Futa@\\ngJT@@dfzhCkQrV|HP\\ngJT@@dfzhCkQrWICEN[pa@\\ngJT@@dfzjQCkQrWNBgMxP`<\\ngJT@@dfzjQCkQrWNBgMxP`>\\ngJT@ADiihCjabgI[kAH_vP`=\\ngJT@ADiihCjabgI[kAOovP`\\ngJT@ADiihCjabgI[y]pRG}dH=\\ngJT@ADiihCjabgI\\\\xLTwVBP\\x7Fla@\\ngJT@ADiihCjabgI\\\\xLTwr{`dO{HP\\ngJT@ADiihCjabgIkkAH_vP`\\ngJT@ADiihCjabgIlxLTwr{`dO{HP\\ngJT@ADiihCjabgQkkAH_vP`=\\ngJT@ADiihCkAdfzvso}dH=\\ngJT@ADiihCkAdfzwSw}dH=\\ngJT@ADiihCkAdgNCEM|n{i{~rD@\\ngJT@ADiihCkAdgNCGM|n{Y{~rD@\\ngJT@ADjZhCjabgI[yApRG}dH=\\ngJT@ADjZhCjabgI[yApRG}h@=\\ngJT@ADjZhCjabgI[yApRG}i@\\ngJT@ADjZhCjabgI[yAwbG}dH\\ngJT@ADjZhCjabgI\\\\xL\\\\wrC`dO{P@\\ngJT@ADjZhCjabgIkyApRG}dH=\\ngJT@ADjZhCjabgQ[yApRG}dH\\ngJT@ADjZhCjabgQkyApRG}dH\\ngJT@ADjZhCkBbV~W]ta\\x7FYB@=\\ngJT@ADjzhChaSdmu`dO{P@\\ngJT@ADjzhChaSdn\\\\FN[kAH_v`@\\ngJT@ADjzhChaSdn]EN[kAH_v`@\\ngJT@ADjzhChaSduu`dO{P@\\ngJT@ADjzhChaShmu`dO{P@\\ngJT@ADjzhCkBRV~f}la\\x7FZ@\\ngJT@ADjzhCkBRV~f}l~\\x7FZ@\\ngJT@ADjzhCkBRV~f}ta\\x7FZ@\\ngJT@ADjzhCkBRWNbgM}M{iC~t@\\ngJT@ADjzhCkBRZ~f}la\\x7FZ@\\ngJT@ADjzhCkBRZ~f}ta\\x7FZ@\\ngJT@ADjzjAChaSdmu`dH<\\ngJT@ADjzjAChaSdmu`dH>\\ngJT@ADjzjAChaSdn]EN[kAHP<\\ngJT@ADjzjAChaSdn]EN[kAHP>\\ngJT@ADjzjAChaSduu`dH<\\ngJT@ADjzjAChaSduu`dH>\\ngJT@ADkf@CjAnml{\\x7FZ@=\\ngJT@ADkf@CjAnml}\\x7FZ@\\ngJT@ADkf@CjAnmt}\\x7FZ@=\\ngJT@ADkf@CjAoiw[N\\x7Fv`@=\\ngJT@ADkf@CjAoiw[O_v`@\\ngJT@ADkf@CjAoiw]O_v`@=\\ngJT@ADkfXChaSdmundO{P@\\ngJT@ADkfXChaSduundO{P@\\ngJT@ADkfXCiAU][i{~t@\\ngJT@ADkj@CjAnml{\\x7FZ@=\\ngJT@ADkj@CjAnml}\\x7FZ@\\ngJT@ADkj@CjAnmt}\\x7FZ@=\\ngJT@ADkjXChaSdmundO{P@\\ngJT@AdefdCiQU][Yv\\ngJT@AdefdCiQU][Yz\\ngJT@AdefdCiQU][iv\\ngJT@AdefdCiQUgAbf~G]t}@\\ngJT@Adii@CiAS][Yw~t@\\ngJT@Adii@CiAS_Knv]\\x7Fm@\\ngJT@Adii@CiASgAbf~W]t{\\x7FZ@\\ngJT@Adii@CiASgAcf~W]l}\\x7FZ@\\ngJT@AdiiXChabdmtngw{P@\\ngJT@AdiiXChabdv\\\\FJ[y]wRG}h@\\ngJT@AdiiXChabdv\\\\FN[y]wRG}h@\\ngJT@AdiidChabdn\\\\FN[i]O_v`@\\ngJT@AdiidChabdn\\\\FN[q]\\x7FZ@\\ngJT@AdiidCkAdfzwSo}h@\\ngJT@AdiidCkAdfzwSw}h@\\ngJT@AdiidCkAdgNCEM|n{i{~t@\\ngJT@AdiidCkAdgNCGMumgo{P@\\ngJT@AdiidCkAdgNCGMungo{P@\\ngJT@AdiidCkAdgNCGM|n{Y{~t@\\ngJT@AdiidCkAdgNCGM|n{i{~t@\\ngJT@AdijdChabdmt`go{P@\\ngJT@AdijdChabdn\\\\FJ[iAO_v`@\\ngJT@AdijdChabdn\\\\FN[iAO_v`@\\ngJT@AdijdChabdn\\\\FN[qA\\x7FZ@\\ngJT@AdijdCkAdf~P]t{\\x7FZ@\\ngJT@AdijdCkAdf~P]t}@\\ngJT@AdijdCkAdf~Wmt}@\\ngJT@AdijdCkAdgNCEM|`{iz\\ngJT@AdijdCkAdgNCGM|`{Y{~t@\\ngJT@AdijdCkAdgNCGM|`{iz\\ngJT@AdijjQChabdmt`dO{P@<\\ngJT@AdijjQChabdmt`dO{P@>\\ngJT@AdijjQChabdnRFJ\\\\wRBP`>\\ngJT@AdijjQChabdv\\\\FJ[iAHP<\\ngJT@AdijjQChabdv\\\\FJ[iAH_v`@<\\ngJT@AdijjQChabdv\\\\FJ[iAH_v`@>\\ngJT@AdijjQChabhmt`dO{P@<\\ngJT@AdijjQChabhv\\\\FJ[iAH_v`@<\\ngJT@AdijjQChabhv\\\\FJ[iAH_v`@>\\ngJT@`QIeIfjdPztTys`qs^XH>\\ngJT@`QIeIlJ@zf[h[Vp\\ngJT@`aJyIdb@zRRypXyoaw[H_vb@\\ngJT@`aJyIdb@zRRytTyoaw]H_vb@\\ngJT@aAteJz`@z`[k[N\\x7Fv`@=\\ngJT@aAteJz`@z`[k[O_v`@\\ngJT@aAteJz`@z`[k]O_v`@=\\ngJT@aAteJzj@zHTyK]XIC~t@\\ngJTA@QJSIBAuDwPwm`\\ngJTA@QJSMUHauhis^XH<\\ngJTA@QJSMUHauhis^XH>\\ngJTA@QJSXTAuLwPvm`\\ngJTA@QJUMTAtPqSgICEN[iApP\\ngJTA@SJSXTAuLwPvm`\\ngJTA@SJUMTAtPqSgICEN[iApP\\ngJTA@SJUMTAtPqSgICEN[yApSx\\ngJTA@aJRsTAtXirWNCEM|NxIC~tP\\ngJTA@aJRsTAtXir[NCEM|NxIC~tP\\ngJTA@aJSIDAtdeoao[H_vb@\\ngJTA@aJSIDAtdeoaw[H_vb@\\ngJTA@aJSIDAtdfoao[H_vb@\\ngJTA@aJSKTAtXirWNbgMu`dO{Q@\\ngJTA@aJS[RAuhyKgQSd\\ngJTA@aJS[TAuiYK_CZvP`\\ngJTA@aJS[TAuiYM_CjzP`\\ngJTAAAJU[TAuaIK_S^vP\\x7Fm@\\ngJTAAaJRuRAthjnml{@\\ngJTAAaJRuUEAuhiK^DH>\\ngJTD@UPZ`Rkj`NlFR\\\\zJ\\\\wdC~t@\\ngJTDAePF`Rnj`NlFR\\\\xL\\\\wdC~t@>\\ngJTDAiPJ`Rfj`NlFI\\\\xLTwaB>\\ngJTDE`DGpRYZ`NeEMx__mD\\ngJTDEaxR`RYj`NmEIlzJ\\\\waC~tP>\\ngJTDLPDHHR[Z`NeGO{S@\\ngJTDLPDPHRnh@NhFzvsl=\\ngJTDLPDPHRni`NdEUumgX\\ngJTDLPDPHRni`NdEUumgh\\ngJTD`UPZ`DkdjzjACkAbgNbgMyO@<\\ngJTD`UPZ`DkdjzjACkAbgNbgMyO@>\\ngJTDe`DDHT{dfyhCiRs_CZv__mL\\ngJTDlQVPHGZTejXCiQR\\ngJTELPDPHtiWTpGRBd\\ngJTHACPISSPGQCENlxL\\\\wr{`gw{HP\\ngJTHAePIWUPGQCII\\\\xLTwTBP\\x7Fm@>\\ngJTHDPDIMsPGRefzFul\\ngJTHE`DILmHGVbdmx^\\x7FmD\\ngJTHE`DILmHGVbdn]EN[p}\\x7FZH\\ngJTHE`DILmPGVbdmxP\\x7FmD\\ngJTHE`DILmPGVbdmx__mD\\ngJTHE`DILmPGVbdn]EN[pa\\x7FZH\\ngJTHE`DILmPGVbduxP\\x7FmD\\ngJTHE`DILmPGVbdv]EN[pa\\x7FZH\\ngJTHE`DILthGVddmtM{_{Q@\\ngJTHE`DILthGVddm|M{Y{~tP\\ngJTHE`DILthGVddn]EN[x[wSw}h`\\ngJTHE`DIMsPGVcdmxP\\x7FmL\\ngJTHE`DIMsPGVcdn]EN[pa\\x7FZX\\ngJTHE`DIMsPGVcduxP\\x7FmL\\ngJTHE`DIMsPGVedm|MkYC~tp\\ngJTHE`DIMsPGVedu|MkYC~tp\\ngJTHEaDILthGVbdn]EN[p}\\x7FZH\\ngJTHHPDILuPGVbgN]EN[h^p_vd@\\ngJTHH`xIKUPGQbgI[x^pRD\\ngJTHHaxILuHGQbgI[h^p_vTP\\ngJTHI`DIKT@GTc_Cvv]\\x7FmH\\ngJTHI`DIKTpGRbj~Gml{\\x7FZP\\ngJTHI`DIKUHGRbj~Gmt}\\x7FZP\\ngJTHIaxIKT@GTc_Cvv]\\x7FmH\\ngJTHLPDIST@GRBf~P]l{@=\\ngJTHLPDIST@GRBj~P]l{@=\\ngJTHLPDISTpGVCEMx``\\ngJTHLPDISTpGVCEN\\\\FJ[qA@\\ngJTHLPDISTpGVCEN\\\\FN[iAwP\\ngJTHLPDISTpGVCIM|`{Yv\\ngJTHLPDISTpGVCIM|`{Yz\\ngJTHLPDISTpGVCIN\\\\FN[yAvst\\ngJTH`mPB]rS[TAuiYK_CjzP`\\ngJTHe`DCeJS\\\\tAuhyKgQSf|H_vf@\\ngJTHe`DJ]rS\\\\tAuiYKgQSf~Futa\\x7FZX\\ngJTHe`bCeJS\\\\tAuhyK]KiC~tp\\ngJTHi`DSmJRu@AuHwp}mg_{R@\\ngJTHlQxCmJTuLAu`rU_HNz^`\\ngJTIE`DJTfyhCkRrV~Fula\\x7FZX\\ngJTILPDZTijXCkAbf|PP\\ngJTIhaVCiJeJZ`@z`[k[N\\x7Fvd@=\\ngJTIhaVCiJeJZ`@z`[k]O_vd@=\\ngJTIhabCiJeJZ`@z`[k[N\\x7Fvd@=\\ngJTIhabCiJeJZ`@z`[k]O_vd@=\\ngJT`E`TfVhCiQR\\ngJT`LPdfVhCiQR\\ngJT`LPdfvhCiQs~tp\\ngJT`i`iJyImi@zt\\\\eoCw}eL\\ngJT`i`iJyImj@zt\\\\eoBG}eL\\ngJT`i`iJyImj@zt\\\\foBG}eL\\ngJTai`iJ{\\\\dvu@]ZNRwaC~rf@\\ngJTai`iJ{\\\\dvu@]ZNSWaC~rf@\\ngJU@DPdru@]ZJ\\\\wfC~tP\\ngJU@DPdru@]ZJ\\\\wf}~tP\\ngJU@DPdru@]ZJ\\\\ytTyoLG}h`\\ngJU@DPdru@]ZJ]WfC~tP\\ngJU@DPdru@]ZJ]YtTyoLG}h`\\ngJU@DPdvt`]JN\\\\zJ\\\\`\\ngJU@DPdvu@]JNP\\ngJU@DPdvu@]JN\\\\zJ\\\\`\\ngJU@E`drt`]ZJRwa{~tP\\ngJU@E`drt`]ZJRytTyoCw}h`\\ngJU@E`dru@]ZJRwaC~tP\\ngJU@E`dru@]ZJRwa}~tP\\ngJU@E`dru@]ZJRytTyoBG}h`\\ngJU@E`dru@]ZJRytTyoC{}h`\\ngJU@E`dru@]ZJSWaC~tP\\ngJU@E`dru@]ZJSYtTyoBG}h`\\ngJU@E`dwM@]ZVSWpvmdO{S@\\ngJU@H`dlu@]FJ\\\\enlDa\\x7FYQ@=\\ngJU@H`dlu@]FJ\\\\fnlDa\\x7FYQ@\\ngJU@I`eMU@]XLdwrCmgo{R@\\ngJU@LPdmS@]JJkk[Np\\ngJU@LPdmS@]JJkk[OP\\ngJU@LPdmS@]JJlxL\\\\wVv^`\\ngJU@LPeMP@]HJ[yAvsl=\\ngJU@LPeMP@]HJkyAvsl=\\ngJU@LPeMS@]XLTwbB\\ngJU@LPeMS@]XLUWbB\\ngJU@LPeMU@]XLTwbB\\ngJU@e`NTiMsPGVcdn]EN[pa\\x7FZX\\ngJUADPYRYZ`NmENksA\\x7FZH\\ngJUADPYR[Z`NeGH\\ngJUAE`nRYZ`NmEI\\\\zJ\\\\waC~tP\\ngJUAE`nRYZ`NmEIlzJ\\\\waC~tP\\ngJUAEanRYZ`NmEI[pa\\x7FZH\\ngJUAEanRYZ`NmEI\\\\zJ\\\\waC~tP\\ngJUDEhO@~BUMTAt`q\\x7FIPh`\\ngJUHEhOAJfj@zpXfoBG|eBb\\ngJUHH\\\\@aIZf@zTTw`}~t`\\ngJUHLPjAJzj@zpXioHD\\ngJUIH\\\\@b\\\\dmS@]JJ[p^\\x7FZP\\ngJX@@dlp@]RMumgX=\\ngJX@@dlp@]RMumgh\\ngJX@@dlp@]RMungh=\\ngJX@@dlp@]RM|N{Yv=\\ngJX@@dlp@]RM|N{Yz\\ngJX@@dlp@]RN\\\\FJ[x]wSt\\ngJX@@dlp@]RN\\\\FN[k[OP\\ngJX@@dlp@]RN\\\\FN[x]vst\\ngJX@@dls@]FJ\\\\enmta@\\ngJX@@dls@]FJ\\\\eoBD\\ngJX@@dls@]FJ\\\\foBD\\ngJX@@dls@]JJkk[OP\\ngJX@@dls@]JJkk]OP\\ngJX@@dlu@]FJ\\\\enlDa@\\ngJX@@dmP@]RMumgX=\\ngJX@@dmP@]RMumgh\\ngJX@@dmP@]RMungh=\\ngJX@@dmP@]RN\\\\FJ[k]OP\\ngJX@@dmP@]RN\\\\FN[k[OP\\ngJX@@dmP@]RN\\\\FN[x^vst\\ngJX@@dmS@]FJ\\\\enmta@\\ngJX@@dmS@]FJ\\\\eoBD\\ngJX@@dmS@]FJ\\\\es`qS][iB\\ngJX@@dmS@]FJ\\\\es`qS^DH\\ngJX@@dmS@]FJ\\\\es`qs][iB\\ngJX@@dmS@]FJ\\\\es`qs^DH\\ngJX@@dmS@]FJ\\\\foBD\\ngJX@@dmS@]FJ\\\\fs`qs][iB\\ngJX@@dmS@]JJlxLTwVz]`\\ngJX@@dmS@]JJlxLTwVz^`\\ngJX@@dmU@]FJ\\\\enlDa@\\ngJX@@dmU@]FJ\\\\erPqSfzpRD\\ngJX@@dmU@]FJ]FnlDa@\\ngJX@@dmUQH]FJ\\\\enlD~@<\\ngJX@@dmUQH]FJ\\\\es`qS]XIB<\\ngJX@@dmUQH]FJ\\\\es`qS]XIB>\\ngJX@@dmUQH]FJ\\\\es`qS]XI|<\\ngJX@@dmUQH]FJ\\\\es`qS]XI|>\\ngJX@@dmUQH]FJ\\\\es`qs]XI|<\\ngJX@@dmUQH]FJ\\\\es`qs]XI|>\\ngJX@@dmUQH]FJ\\\\fnlDa@<\\ngJX@@dmUQH]FJ\\\\fnlDa@>\\ngJX@@dmUQH]FJ\\\\frPqSfzpRD>\\ngJX@@dmUQH]FJ\\\\fs`qS]XIB<\\ngJX@@dmUQH]FJ\\\\fs`qS]XIB>\\ngJX@@dmUQH]FJ\\\\fs`qs]XIB<\\ngJX@@dmUQH]FJ]EnlD~@<\\ngJX@@dmUQH]FJ]EnlD~@>\\ngJX@@drP`]II[h[vp\\ngJX@@drP`]II[h[wP\\ngJX@@drP`]II[x[vst\\ngJX@@drP`]II\\\\xL\\\\wp{mgh\\ngJX@@drt`]FJ\\\\enlD}@\\ngJX@@drt`]FJ\\\\enmx}@\\ngJX@@drt`]FJ\\\\eoLD\\ngJX@@drt`]FJ\\\\eoMx\\ngJX@@drt`]FJ\\\\es`qs]XIz\\ngJX@@drt`]FJ\\\\es`qs_CnB^`\\ngJX@@drt`]FJ\\\\eshis]CnB\\ngJX@@drt`]FJ\\\\eshis]XIz\\ngJX@@drt`]FJ\\\\eshis^XH\\ngJX@@drt`]FJ\\\\eshis_CnB^`\\ngJX@@drt`]FJ]EnawA@\\ngJX@@drt`]FJ]Es`qs]XIz\\ngJX@@drt`]FJ]Eshis_CnB^`\\ngJX@@dru@]FJ\\\\enlDa@\\ngJX@@dru@]FJ\\\\enlD~@\\ngJX@@dru@]FJ\\\\eoawAHP\\ngJX@@dru@]FJ\\\\eoaw^HP\\ngJX@@dru@]FJ\\\\es`qs]XIB\\ngJX@@dru@]FJ\\\\eshis]XIB\\ngJX@@dru@]FJ\\\\eshis][qB\\ngJX@@dru@]FJ\\\\eshis_CnBP`\\ngJX@@dru@]FJ\\\\eshis_Cn|P`\\ngJX@@dru@]FJ\\\\fnlDa@\\ngJX@@dru@]FJ]EnlDa@\\ngJX@@dru@]FJ]EoawAHP\\ngJX@@dru@]FJ]Es`qs]XIB\\ngJX@@dru@]FJ]Es`qs]XI|\\ngJX@@dru@]FJ]Eshis_CnBP`\\ngJX@@dru@]ZRRwpwmdH\\ngJX@@dru@]ZRRwpwndH\\ngJX@@dru@]ZRRytTyoao]HP\\ngJX@@dsR`]FJ\\\\e@\\ngJX@@dsR`]FJ\\\\es`qs^Gh\\ngJX@@dsR`]FJ\\\\es`qs^[h\\ngJX@@dsR`]FJ\\\\eshir\\ngJX@@dsR`]FJ\\\\eshis][iz\\ngJX@@dsR`]FJ\\\\eshis^Gh\\ngJX@@dsR`]ZRRwPwm`\\ngJX@@dsR`]ZRRwPwn`\\ngJX@@dsR`]ZRRwP{m`\\ngJX@@dsR`]ZRRwP{n`\\ngJX@@dsR`]ZRRwpwmgh\\ngJX@@dsR`]ZRRwpwngh\\ngJX@@dsR`]ZRRwp{mgh\\ngJX@@dsR`]ZRRytTyoaw]OP\\ngJX@@dsTrH]FJ\\\\enlD}@>\\ngJX@@dsTrH]FJ\\\\eoLD<\\ngJX@@dsTrH]FJ\\\\eoLD>\\ngJX@@dsTrH]FJ\\\\erPqSf|pP<\\ngJX@@dsTrH]FJ\\\\erPqSf|pP>\\ngJX@@dsTrH]FJ\\\\erPqSf|w`<\\ngJX@@dsTrH]FJ\\\\erPqSf|w`>\\ngJX@@dsTrH]FJ\\\\es`qs^XH<\\ngJX@@dsTrH]FJ\\\\es`qs^XH>\\ngJX@@dsTrH]FJ\\\\eshis]XIz<\\ngJX@@dsTrH]FJ\\\\eshis^XH<\\ngJX@@dsTrH]FJ\\\\eshis^XH>\\ngJX@@dsTrH]FJ\\\\eshis^[p<\\ngJX@@dsTrH]FJ]EoLD<\\ngJX@@dsURH]FJ\\\\enlDa@<\\ngJX@@dsURH]FJ\\\\enlDa@>\\ngJX@@dsURH]FJ\\\\enlD~@<\\ngJX@@dsURH]FJ\\\\enlD~@>\\ngJX@@dsURH]FJ\\\\enmxa@<\\ngJX@@dsURH]FJ\\\\enmxa@>\\ngJX@@dsURH]FJ\\\\erPqSfzpRD<\\ngJX@@dsURH]FJ\\\\erPqSfzpRD>\\ngJX@@dsURH]FJ\\\\erPqSfzwbD<\\ngJX@@dsURH]FJ\\\\erPqSfzwbD>\\ngJX@@dsURH]FJ\\\\es`qs]XIB<\\ngJX@@dsURH]FJ\\\\es`qs]XIB>\\ngJX@@dsURH]FJ\\\\es`qs]XI|<\\ngJX@@dsURH]FJ\\\\es`qs]XI|>\\ngJX@@dsURH]FJ\\\\es`qs][qB<\\ngJX@@dsURH]FJ\\\\es`qs][qB>\\ngJX@@dsURH]FJ\\\\eshis]XIB<\\ngJX@@dsURH]FJ\\\\eshis]XIB>\\ngJX@@dsURH]FJ\\\\eshis]XI|<\\ngJX@@dsURH]FJ\\\\eshis]XI|>\\ngJX@@dsURH]FJ\\\\eshis][qB<\\ngJX@@dsURH]FJ\\\\eshis][qB>\\ngJX@@dsURH]FJ\\\\fnlDa@<\\ngJX@@dsURH]FJ\\\\fnlDa@>\\ngJX@@dsURH]FJ\\\\fnmxa@<\\ngJX@@dsURH]FJ\\\\fnmxa@>\\ngJX@@dsURH]FJ\\\\fs`qs]XIB<\\ngJX@@dsURH]FJ\\\\fs`qs]XIB>\\ngJX@@dsURH]FJ\\\\fshis]XIB<\\ngJX@@dsURH]FJ\\\\fshis]XIB>\\ngJX@@dsURH]FJ\\\\fshis][qB>\\ngJX@@dsURH]FJ]EnlDa@<\\ngJX@@dsURH]FJ]EnlDa@>\\ngJX@@dsURH]FJ]ErPqSfzpRD<\\ngJX@@dsURH]FJ]Es`qs]XIB<\\ngJX@@dsURH]FJ]Es`qs]XIB>\\ngJX@@dsURH]FJ]Es`qs]XI|<\\ngJX@@dsURH]FJ]Es`qs]XI|>\\ngJX@@dsURH]FJ]Eshis]XIB<\\ngJX@@dsURH]FJ]Eshis]XIB>\\ngJX@@dsURH]FJ]FnlDa@<\\ngJX@@dsURH]FJ]FnlDa@>\\ngJX@@dsURH]FJ]Fs`qs]XIB<\\ngJX@@dsURH]FJ]Fs`qs]XIB>\\ngJX@@dvE@]KI[x[VrD\\ngJX@@dvE@]KI[x[Vsx\\ngJX@@dvE@]KI[x[WRD\\ngJX@@dvE@]KI[x]VrD\\ngJX@@dvE@]KI\\\\zJ\\\\wpvndH\\ngJX@@dvE@]KI\\\\zJ\\\\wpvngp\\ngJX@@dvE@]KIkx[VrD\\ngJX@@dvE@]KIkx[WRD\\ngJX@@dwM@]FJ\\\\eneta@\\ngJX@@dwM@]FJ\\\\eoBD\\ngJX@@dwM@]FJ\\\\es`is]KiB\\ngJX@@dwM@]FJ\\\\es`is^DH\\ngJX@@dwM@]FJ\\\\eshis]KiB\\ngJX@@dwM@]FJ\\\\eshis]Ki|\\ngJX@@dwM@]FJ\\\\eshis^DH\\ngJX@@dwM@]FJ\\\\eshis^Gp\\ngJX@@dwM@]FJ\\\\fneta@\\ngJX@@dwM@]ZVRwpvmdH\\ngJX@@dwM@]ZVRwpvndH\\ngJX@@dwM@]ZVRwpzmdH\\ngJX@@dwM@]ZVRwpzndH\\ngJX@@dwM@]ZVRypTyoau[HP\\ngJX@@dwM@]ZVRypTyoau]HP\\ngJX@@dwM@]ZVRytTyoam]HP\\ngJX@@dwM@]ZVRytTyoau]HP\\ngJX@@dwM@]ZVRytTyoau]O`\\ngJX@@dwM@]ZVSWpvmdH\\ngJX@@dwM@]ZVSWpvndH\\ngJX@@dwM@]ZVSWpzmdH\\ngJX@@dwM@]ZVSWpzndH\\ngJX@@eMH@]HJ[k[N\\x7Fv`@=\\ngJX@@eMH@]HJ[k[O_v`@\\ngJX@@eMH@]HJ[k]O_v`@=\\ngJX@@eMH@]HJ[y]vso}h@=\\ngJX@@eMH@]HJ[y]vsw}h@\\ngJX@@eMH@]HJ[y]wSw}h@=\\ngJX@@eMH@]HJ\\\\xLTwVz^\\x7Fm@\\ngJX@@eMH@]HJ\\\\xLTwr{ngo{P@\\ngJX@@eMH@]HJ\\\\xL\\\\wVv^\\x7Fm@\\ngJX@@eMH@]HJ\\\\xL\\\\wr{mgo{P@\\ngJX@@eMK@]TLTyK][iC~t@\\ngJX@@eMK@]TLTyK_KnzP\\x7Fm@\\ngJX@@eMK@]TLTyKgAbfzWRG}h@\\ngJX@@eMK@]TLTyKgAbf~W]ta\\x7FZ@\\ngJX@@eMK@]XLdypXioew]O_v`@\\ngJX@@eMP@]HJ[yAvso}h@=\\ngJX@@eMP@]HJ[yAvsw}h@\\ngJX@@eMP@]HJ[yAwSt=\\ngJX@@eMP@]HJ[yAwSw}h@=\\ngJX@@eMP@]HJ[y^vso}h@=\\ngJX@@eMP@]HJ[y^vsw}h@\\ngJX@@eMP@]HJ\\\\xLTwrCngh\\ngJX@@eMP@]HJ\\\\xLTwrCngo{P@\\ngJX@@eMP@]HJ\\\\xLTwr}ngh\\ngJX@@eMP@]HJ\\\\xL\\\\wrCmgo{P@\\ngJX@@eMP@]HJ\\\\xL\\\\wr}mgo{P@\\ngJX@@eMP@]HJkyAvso}h@=\\ngJX@@eMP@]HJkyAvsw}h@\\ngJX@@eMP@]HJkyAwSt=\\ngJX@@eMP@]HJkyAwSw}h@=\\ngJX@@eMP@]HJlxLTwrCngh\\ngJX@@eMP@]HJlxLTwrCngo{P@\\ngJX@@eMP@]HJlxL\\\\wrCmgo{P@\\ngJX@@eMS@]TLTyK]HIC~t@\\ngJX@@eMS@]TLTyK_HNzP\\x7Fdd\\\\[P@\\ngJX@@eMS@]TLTyK_HNzP\\x7Fm@\\ngJX@@eMS@]TLTyKgAbfzPRG}h@\\ngJX@@eMS@]TLTyKgAbf~P]ta\\x7FZ@\\ngJX@@eMS@]TLTyKgAbf~Wmta\\x7FZ@\\ngJX@@eMS@]TLTyKgAcf~P]ta\\x7FZ@\\ngJX@@eMS@]TLTyM_HNzP\\x7Fm@\\ngJX@@eMS@]TLTyMgAbfzPRG}h@\\ngJX@@eMS@]TLTyMgAbf~P]ta\\x7FZ@\\ngJX@@eMS@]TLUYK]HIC~t@\\ngJX@@eMS@]TLUYK_HNzP\\x7Fdd\\\\[P@\\ngJX@@eMS@]TLUYK_HNzP\\x7Fm@\\ngJX@@eMS@]TLUYKgAbfzPRG}h@\\ngJX@@eMS@]TLUYKgAbf~P]ta\\x7FZ@\\ngJX@@eMS@]TLUYKgAcf~P]ta\\x7FZ@\\ngJX@@eMS@]TLUYM_HNzP\\x7Fm@\\ngJX@@eMS@]TLUYMgAbf~P]ta\\x7FZ@\\ngJX@@eMS@]XLdwrCng_{P@\\ngJX@@eMS@]XLdwrCngo{P@\\ngJX@@eMS@]XLeWrCmgo{P@\\ngJX@@eMS@]XLeWrCngo{P@\\ngJX@@eMU@]TLTyK_HNBP`\\ngJX@@eMU@]TLTyK_HNBP\\x7Fdd\\\\[P@\\ngJX@@eMU@]TLTyK_HNBP\\x7Fm@\\ngJX@@eMU@]TLTyK_KvBP`\\ngJX@@eMU@]TLTzM_HNBP`\\ngJX@@eMU@]TLTzM_HNBP\\x7Fm@\\ngJX@@eMU@]TLUYK_HNBP`\\ngJX@@eMU@]TLUYK_HNBP\\x7Fm@\\ngJX@@eMU@]TLUZM_HNBP\\x7Fm@\\ngJX@@eMURH]TLTyK_HNB__m@<\\ngJX@@eMURH]TLTyK_HNB__m@>\\ngJX@@eMURH]TLTyKgAbf~P\\\\Da@<\\ngJX@@eMURH]TLTyKgAbf~P\\\\Da@>\\ngJX@@eMURH]TLTyKgAbf~P\\\\Da\\x7FZ@<\\ngJX@@eMURH]TLTyKgAbf~P\\\\Da\\x7FZ@>\\ngJX@@eMURH]TLTyKgAbf~WlDa@<\\ngJX@@eMURH]TLTyM_HNBP`<\\ngJX@@eMURH]TLTyM_HNBP`>\\ngJX@@eMURH]TLTyM_HNBP\\x7Fm@<\\ngJX@@eMURH]TLTyM_HNBP\\x7Fm@>\\ngJX@@eMURH]TLTyMgAbf~P\\\\Da@<\\ngJX@@eMURH]TLTyMgAbf~P\\\\Da@>\\ngJX@@eMURH]TLTyMgAbf~P\\\\Da\\x7FZ@<\\ngJX@@eMURH]TLTyMgAbf~P\\\\Da\\x7FZ@>\\ngJX@@eMURH]TLTzK_HNB__m@<\\ngJX@@eMURH]TLTzK_HNB__m@>\\ngJX@@eMURH]TLTzKgAcf~P\\\\D~@<\\ngJX@@eMURH]TLTzKgAcf~P\\\\D~@>\\ngJX@@eMURH]TLTzMgAbf~P\\\\Da@<\\ngJX@@eMURH]TLUYK_HNB__m@>\\ngJX@@eMURH]TLUYKgAbf~P\\\\Da@<\\ngJX@@eMURH]TLUYKgAbf~P\\\\Da@>\\ngJX@@eMURH]TLUYKgAbf~P\\\\Da\\x7FZ@<\\ngJX@@eMURH]TLUYKgAbf~P\\\\Da\\x7FZ@>\\ngJX@@eMURH]TLUYM_HNBP\\x7Fm@<\\ngJX@@eMURH]TLUYM_HNBP\\x7Fm@>\\ngJX@@eMURH]TLUYMgAbf~P\\\\Da\\x7FZ@<\\ngJX@@eMURH]TLUYMgAbf~P\\\\Da\\x7FZ@>\\ngJX@@eMURH]TLUZK_HNB__m@<\\ngJX@@eMURH]TLUZK_HNB__m@>\\ngJX@@eST`]TLTyK]HNC~t@=\\ngJX@@eST`]TLTyK_HNB^\\x7Fm@=\\ngJX@@eST`]TLTyKgASfzP]{}h@\\ngJX@@eST`]TLTyKgASf~P]x}\\x7FZ@\\ngJX@@eST`]TLTyKgAcfzP\\\\G}h@\\ngJX@@eST`]TLTyKgAcf~P\\\\D}\\x7FZ@\\ngJX@@eST`]TLTzK]HNC~t@\\ngJX@@eST`]TLTzK_HNB^\\x7Fm@\\ngJX@@eST`]TLTzKgASf~P\\\\D}\\x7FZ@\\ngJX@@eST`]TLTzKgAcfzP\\\\G}h@\\ngJX@@eST`]TLTzKgAcf~P\\\\D}\\x7FZ@\\ngJX@@eST`]XTRwRwn\\x7Fm@\\ngJX@@eST`]XTRwR{n\\x7Fm@=\\ngJX@@eSU@]TLTyK_HNBP`\\ngJX@@eSU@]TLTyK_HNBP\\x7FdhT[P@=\\ngJX@@eSU@]TLTyK_HNBP\\x7Fm@=\\ngJX@@eSU@]TLTyK_HNB_@\\ngJX@@eSU@]TLTyK_HNB__m@=\\ngJX@@eSU@]TLTyK_HN|P\\x7Fm@\\ngJX@@eSU@]TLTyKdabgM|`xIB\\ngJX@@eSU@]TLTyKdabgM|`xIC~t@=\\ngJX@@eSU@]TLTyKdabgM|`xI|\\ngJX@@eSU@]TLTyKgASf~P]xa\\x7FZ@\\ngJX@@eSU@]TLTyKgAcf~P\\\\Da\\x7FZ@\\ngJX@@eSU@]TLTyKgAcf~P\\\\D~\\x7FZ@\\ngJX@@eSU@]TLTyKgAcf~P]xa\\x7FZ@\\ngJX@@eSU@]TLTyM_HNBP`\\ngJX@@eSU@]TLTyM_HNBP\\x7FdhT[P@=\\ngJX@@eSU@]TLTyM_HNBP\\x7Fm@=\\ngJX@@eSU@]TLTyM_HN|P\\x7Fm@\\ngJX@@eSU@]TLTyMgASf~P]xa\\x7FZ@\\ngJX@@eSU@]TLTyMgAcf~P\\\\Da\\x7FZ@\\ngJX@@eSU@]TLTzK_HNBP\\x7Fm@\\ngJX@@eSU@]TLTzKgASf~P\\\\Da\\x7FZ@\\ngJX@@eSU@]TLTzKgAcf~P\\\\Da\\x7FZ@\\ngJX@@eSU@]TLTzKgAcf~P\\\\D~\\x7FZ@\\ngJX@@eSU@]TLTzM_HNBP\\x7Fm@\\ngJX@@eSU@]TLTzMgASf~P\\\\Da\\x7FZ@\\ngJX@@eSU@]TLTzMgAcf~P\\\\Da\\x7FZ@\\ngJX@@eSU@]TLUZK_HNBP`\\ngJX@@eSU@]TLUZK_HNBP\\x7Fm@=\\ngJX@@eSU@]TLUZM_HNBP\\x7Fm@=\\ngJX@@eSU@]XTRwrwmdO{P@=\\ngJX@@eSU@]XTRwrwmgw{P@=\\ngJX@@eSU@]XTRwrwndO{P@\\ngJX@@eSU@]XTRwrwngw{P@\\ngJX@@eSU@]XTRwr{ndO{P@=\\ngJX@@eSU@]XTRypTyoeo]H_v`@\\ngJX@@eSU@]XTRypXyoew]H_v`@\\ngJX@@eSU@]XTSWrwmdO{P@=\\ngJX@@eSU@]XTSWrwndO{P@\\ngJX@@eSU@]XTSWr{ndO{P@=\\ngJX@@eSU@]XTSYpXyoew]H_v`@\\ngJX@@eSUPH]TLTyK_HN|P`<\\ngJX@@eSUPH]TLTyK_HN|P`>\\ngJX@@eSUPH]TLTyKgASf~P]xa@<\\ngJX@@eSUPH]TLTyKgASf~P]xa@>\\ngJX@@eSUPH]TLTyKgAcf~P\\\\Da@<\\ngJX@@eSUPH]TLTyKgAcf~P\\\\Da@>\\ngJX@@eSUPH]TLTyKgAcf~P\\\\D~@<\\ngJX@@eSUPH]TLTyKgAcf~P\\\\D~@>\\ngJX@@eSUPH]TLTyKgAcf~P]xa@<\\ngJX@@eSUPH]TLTyKgAcf~P]xa@>\\ngJX@@eSUPH]TLTyM_HN|P`<\\ngJX@@eSUPH]TLTyM_HN|P`>\\ngJX@@eSUPH]TLTyMgAcf~P\\\\Da@<\\ngJX@@eSUPH]TLTyMgAcf~P\\\\Da@>\\ngJX@@eSUPH]TLTzK_HNBP`<\\ngJX@@eSUPH]TLTzK_HNBP`>\\ngJX@@eSUPH]TLTzKdabgM|`xIB<\\ngJX@@eSUPH]TLTzKgASf~P\\\\Da@<\\ngJX@@eSUPH]TLTzKgASf~P\\\\Da@>\\ngJX@@eSUPH]TLTzKgAcf~P\\\\Da@<\\ngJX@@eSUPH]TLTzKgAcf~P\\\\Da@>\\ngJX@@eSUPH]TLTzM_HNBP`<\\ngJX@@eSUPH]TLTzM_HNBP`>\\ngJX@@eSUPH]TLTzMgAcf~P\\\\Da@<\\ngJX@@eSUPH]TLTzMgAcf~P\\\\Da@>\\ngJX@@eSUPH]TLUYK_HN|P`<\\ngJX@@eSUPH]TLUYK_HN|P`>\\ngJX@@eSUPH]TLUYM_HN|P`<\\ngJX@@eSUPH]TLUYM_HN|P`>\\ngJX@@e\\\\u@]TLTyK]XIC~t@\\ngJX@@e\\\\u@]TLTyK_SnBP\\x7Fm@\\ngJX@@e\\\\u@]TLTzM]XIC~t@\\ngJX@@e\\\\uQH]TLTyK]XI}~t@>\\ngJX@@e\\\\uQH]TLTyKgAbf~g\\\\Da\\x7FZ@<\\ngJX@@e\\\\uQH]TLTyKgAbf~g\\\\Da\\x7FZ@>\\ngJX@@e\\\\uQH]TLTyM]XIC~t@<\\ngJX@@e\\\\uQH]TLTyM]XIC~t@>\\ngJX@@e\\\\uQH]TLTyMgAbf~g\\\\Da\\x7FZ@<\\ngJX@@e\\\\uQH]TLTyMgAbf~g\\\\Da\\x7FZ@>\\ngJXA@IRVX@NiFzvst\\ngJXA@IRVX@NiGNCGM|N{Yz\\ngJXA@IRVh@NiFzvsl=\\ngJXA@IRVh@NiFzvst\\ngJXA@IRVh@NiFzwSt=\\ngJXA@IRVh@NiF~Gml{@=\\ngJXA@IRVh@NiF~Gml}@\\ngJXA@IRVh@NiF~Gmt}@=\\ngJXA@IRVh@NiGNCEMungh\\ngJXA@IRVh@NiGNCEM|O[iz\\ngJXA@IRVh@NiGNCGMumgh\\ngJXA@IRVi`NcENRwaB\\ngJXA@IRVi`NcENRypXynmta@\\ngJXA@IRVi`NcENRypXyoBD\\ngJXA@IRVj`NcENRwVBP`\\ngJXA@IRVjhdNcENRypXinlDa@<\\ngJXA@IRVjhdNcENRypXinlDa@>\\ngJXA@IRVjhdNcENRypXioa{AHP<\\ngJXA@IRVjhdNcENSWVBP`>\\ngJXA@IRVjhdNcENSYpXinlDa@<\\ngJXA@IRYHPNddmtN{X\\ngJXA@IRYZPNcENRwP{o@\\ngJXA@IRYZPNcENRwVB^`\\ngJXA@IRYZPNcENRwp{`gh\\ngJXA@IRYZPNcENRypXyoawAOP\\ngJXA@IRYZPNcENRytTyoawAOP\\ngJXA@IRYjiDNcENRwVBP`<\\ngJXA@IRYjiDNcENRwVBP`>\\ngJXA@IRYjiDNcENRwVB_@<\\ngJXA@IRYjiDNcENRwVB_@>\\ngJXA@IRYjiDNcENRyHXis]XIB>\\ngJXA@IRYjiDNcENRyHXis][qB<\\ngJXA@IRYjiDNcENRyHXis_CvBP`<\\ngJXA@IRYjiDNcENRyHXis_CvBP`>\\ngJXA@IRYjiDNcENRypXynlDa@<\\ngJXA@IRYjiDNcENRypXynlDa@>\\ngJXA@IRYjiDNcENRytTynlDa@<\\ngJXA@IRYjiDNcENRytTynlDa@>\\ngJXA@IRYjiDNcENSWVBP`<\\ngJXA@IRYjiDNcENSWVBP`>\\ngJXA@IRYjiDNcENSYpXynlDa@<\\ngJXA@IRYjiDNcENSYtTynlDa@>\\ngJXA@IRYjiDNcENbwVBP`>\\ngJXA@IRYjiDNcENbypXynlDa@<\\ngJXA@IRYjiDNcENbypXynlDa@>\\ngJXA@IR[B`Nedm|MkYB\\ngJXA@IR[B`Nedm|MkiB\\ngJXA@IRfd@NdEMumg_{P@=\\ngJXA@IRfd@NdEMumgo{P@\\ngJXA@IRfd@NdEM|n{Yw~t@=\\ngJXA@IRfd@NdEM|n{Y{~t@\\ngJXA@IRfd@NdEM|n{i{~t@=\\ngJXA@IRfd@NdEN\\\\FN[y]vsw}h@\\ngJXA@IRfe`NjFJ\\\\es`qS]KiC~t@\\ngJXA@IRfh@NdEM|`{Yv=\\ngJXA@IRfj`NjFJ\\\\eodGAHP\\ngJXA@IRfjiDNjFJ\\\\es`qS_HNBP`<\\ngJXA@IRfjiDNjFJ\\\\es`qS_HNBP`>\\ngJXA@IRfjiDNjFJ\\\\fodGAHP<\\ngJXA@IRfjiDNjFJ\\\\fodGAHP>\\ngJXA@IRij`NjFJ\\\\eodGAHP\\ngJXA@IRij`NjFJ\\\\eodGAO`\\ngJXA@IRij`NjFJ\\\\erPqSf~P\\\\Da@\\ngJXA@IRij`NjFJ\\\\erPqSf~P\\\\D~@\\ngJXA@IRij`NjFJ\\\\fodGAHP\\ngJXA@IRijhDNjFJ\\\\es`qs_HNBP`<\\ngJXA@IRijhDNjFJ\\\\es`qs_HNBP`>\\ngJXA@IRijhDNjFJ\\\\fs`qs_HNBP`<\\ngJXA@IRijhDNjFJ\\\\fs`qs_HNBP`>\\ngJXA@IRkZ`NjFJ\\\\enlDa\\x7FZ@\\ngJXA@IRkZ`NjFJ\\\\eoiwAH_v`@\\ngJXA@IRkZ`NjFJ\\\\es`qs]XIC~t@\\ngJXA@IRkZ`NjFJ\\\\es`qs_SnBP\\x7Fm@\\ngJXA@IRkZ`NjFJ\\\\eshis]XIC~t@\\ngJXA@IRkZ`NjFJ\\\\eshis_SnBP\\x7Fm@\\ngJXA@IRkZ`NjFJ\\\\fnlDa\\x7FZ@\\ngJXA@IRkZ`NjFJ\\\\foiwAH_v`@\\ngJXA@IRkZ`NjFJ]EoiwAH_v`@\\ngJXA@IRkZ`NjFJ]Es`qs]XIC~t@\\ngJXA@IRkZ`NlII[z[vrG}h@\\ngJXA@IRkZ`NlII[z[wRG}h@\\ngJXA@IRkZ`NlII[z]vrG}h@\\ngJXA@IRkZ`NlII[z]wRG}h@\\ngJXA@IRkZ`NlIIkz[vrG}h@\\ngJXA@IRkZ`NlIIkz[wRG}h@\\ngJXA@IRkZ`NlIIkz]vrG}h@\\ngJXA@IRkZ`NlIIkz]wRG}h@\\ngJXA@IRnZ`NjFJ\\\\eoiwAH_v`@\\ngJXA@IRnZhdNjFJ\\\\fs`qS_SnBP\\x7Fm@<\\ngJXA@IRnZhdNjFJ\\\\fs`qS_SnBP\\x7Fm@>\\ngJXA@IrRDJ@zVRwtvmdO{P@=\\ngJXA@IrRDJ@zVRwtvndO{P@\\ngJXA@IrRDJ@zVRwtzndO{P@=\\ngJXA@IrRDJ@zVRypTyoiu]H_v`@\\ngJXA@IrRDJ@zVRytTyoim]H_v`@\\ngJXA@IrRDJ@zVSWtvmdO{P@=\\ngJXA@IrRDJ@zVSWtvndO{P@\\ngJXA@NRfh@NdEM|`{Yw~t@=\\ngJXA@NRfi`NjFJles`qS_HNzP\\x7Fm@\\ngJXAAnR[f`NmKIkx[WRD\\ngJXDB@cABTuRAu`qS^HH\\ngJXDB@cABTuRAu`rS_HNv]`\\ngJXDD@bABUuTAtPirVzpRG}h`=\\ngJXDHOA^BS]TAuhyK^DH\\ngJXDHOA^BS]TAuhyK_Cr|P\\x7FmH=\\ngJXDL@aABSKTAuhiK^DH\\ngJXDL@aABS[TAuhyK^DO{S@\\ngJXDL@bABUu@Au@wVv]`\\ngJXH@jAJZ`@z`[k[N\\x7Fv`@=\\ngJXH@jAJZ`@z`[k]OP=\\ngJXH@jAJZ`@z`\\\\xLTwVz^`\\ngJXH@jAJZ`@z`\\\\xL\\\\wVv^\\x7Fm@\\ngJXH@jAJzj@zhYIr[NCEM}@xIC~t@>\\ngJXH@jAJzj@zhYIt[NCEM}@xIB>\\ngJXH@jAJzj@zhYIt[NCEM}@xIC~t@>\\ngJXHAJAIfi@zLTyKgAcf|pP>\\ngJXHAJAIfi@zLTzKgAcf|pP>\\ngJXHAjAJfi@zHXiKgASf|P_v`@\\ngJXHAjAJfi@zHXiKgAcfzPSw}h@\\ngJXHAjAJfi@zHXiKgAcf|P_v`@\\ngJXHAjAJfi@zHXjK]HI{~t@\\ngJXHAjAJfj@zHXiKgAcf~P]xa\\x7FZ@\\ngJXHAjAJfj`PzHXjK]HIB<\\ngJXHAjAJfj`PzHXjK]HIB>\\ngJXHB@aIfe@zTdwPwm`\\ngJXHB@aInZ@zTlwPvm`\\ngJXHB@aInZ@zTlwPvn`\\ngJXHB@aInZ@zTlytTynam]@\\ngJXHBOAJfj@zHXis]HNB\\ngJXHBOAJfj@zHXisdabgMt`xH\\ngJXHBOAJfj@zHXju]HNB\\ngJXHBOAJfj`PzHXiu]HNB<\\ngJXHBOAJfj`PzHXiu]HNB>\\ngJXHD@aIZjbPzLTyKgAbfzpRD<\\ngJXHD@aIZjbPzLTyKgAbfzpRD>\\ngJXHD@aIej@zLTyK]XIC~tP\\ngJXHD@aIej@zLTyKgQSfzpRG}h`\\ngJXHD@aIej@zLTyM]XIC~tP\\ngJXHD@aIej@zLTyMgQSfzpRG}h`\\ngJXHD@aIej@zLTzK]XIC~tP\\ngJXHD@aIej@zLTzKgQSfzpRG}h`\\ngJXHD@aIej@zLTzM]XIC~tP\\ngJXHD@aIfe@ztdenao]\\x7FZH\\ngJXHD@aIfe@ztdeshis_C^z^\\x7FmD\\ngJXHD@aIff@zLTyK][iC~tP\\ngJXHD@aIff@zLTyM][iC~tP\\ngJXHD@aIff@ztdeoao]H_vb@\\ngJXHD@aIff@ztdfoao]H_vb@\\ngJXHD@aIff@ztdfshis_C^zP\\x7FmD\\ngJXHD@aImi@zt\\\\eshir\\ngJXHD@aImj@zt\\\\eshis^DH\\ngJXHD@aInZ@ztleoam[HP\\ngJXHD@aInZ@ztlfoam[HP\\ngJXHDHaIfe@zLTyKgQSf|O_vb@\\ngJXHDOAIZj@zLTyK]XIB\\ngJXHDOAIZj@zLTyK_CvBP`\\ngJXHDOAIZj@zLTyKdabgMu`dH\\ngJXHDOAIZj@zLTyKdabgM|OXIB\\ngJXHDOAIZj@zLTyM]XIC~tP\\ngJXHDOAIfjdPzLTzM_CvBP\\x7FmD>\\ngJXHH@aIYj@zLTyK]XIC~t`\\ngJXHH@aIZ`@zd[x^vso}i@=\\ngJXHH@aIZ`@zd[x^vsw}i@\\ngJXHH@aIZ`@zd[x^wSw}i@=\\ngJXHH@aIZ`@zd\\\\xL\\\\wp}mgo{R@\\ngJXHH@aIZf@zLTyK_CvzP\\x7FmH\\ngJXHH@aIZf@zLTyKgAbf~Gmta\\x7FZP\\ngJXHH@aIZf@zTUWp}ngo{R@\\ngJXHH@aIZj@zLTyK]XIC~t`\\ngJXHH@aIZj@zLTyK_CvBP\\x7FmH\\ngJXHH@aIZj@zLTzM]XIC~t`\\ngJXHH@aIZj@zLTzM_CvBP\\x7FmH\\ngJXHH@aIZjbPzLTyK]XI}~t`<\\ngJXHH@aIZjbPzLTyK]XI}~t`>\\ngJXHH@aIZjbPzLTyK_CvB__mH<\\ngJXHH@aIZjbPzLTyK_CvB__mH>\\ngJXHH@aIZjbPzLTyKgAbf~GlDa\\x7FZP<\\ngJXHH@aIZjbPzLTyKgAbf~GlDa\\x7FZP>\\ngJXHH@aIZjbPzLTyM]XIC~t`<\\ngJXHH@aIZjbPzLTyM]XIC~t`>\\ngJXHH@aIZjbPzLTyM_CvBP\\x7FmH<\\ngJXHH@aIZjbPzLTyM_CvBP\\x7FmH>\\ngJXHH@aIZjbPzLTzK]XI}~t`<\\ngJXHH@aIZjbPzLTzK_CvB__mH<\\ngJXHH@aIZjbPzLTzK_CvB__mH>\\ngJXHH@aIfi@zLTyK_CvB^\\x7FmH\\ngJXHH@aIfi@zLTyKgQSfzGlG}i@\\ngJXHH@aIfi@zLTyKgQSf~GlD}\\x7FZP\\ngJXHH@aIfj@zLTyK_CvBP\\x7FmH\\ngJXHH@aIfj@zLTyKgAcf~GlDa\\x7FZP\\ngJXHH@aIfj@zLTyKgQSf~GlDa\\x7FZP\\ngJXHH@aIfj@zLTyKgQSf~GlD~\\x7FZP\\ngJXHH@aIfj@zLTyKgQSf~Gmxa\\x7FZP\\ngJXHH@aIfj@zLTyM_CvBP\\x7FmH\\ngJXHH@aIfj@zLTyMgQSf~GlDa\\x7FZP\\ngJXHH@aIfj@zLTzK_CvBP\\x7FmH\\ngJXHH@aIfj@zLTzKgQSf~GlDa\\x7FZP\\ngJXHH@aIfj@zLTzKgQSf~GlD~\\x7FZP\\ngJXHH@aIfj@zLTzM_CvBP\\x7FmH\\ngJXHH@aJz`@z`[k[OP\\ngJXHH@aJz`@z`\\\\xL\\\\wVv^`\\ngJXHHGAIZ`@zd[x^vsw}i@\\ngJXHHGAIZ`@zd[x^wSt=\\ngJXHHGAIfj@zLTyKgQSf~GlDa\\x7FZP\\ngJXHHGAIfjdPzLTzK_CvB_@<\\ngJXHHGAIfjdPzLTzK_CvB_@>\\ngJXHHOAIY`@zd[k[N\\x7Fvd@=\\ngJXHHOAIY`@zd[k[O_vd@\\ngJXHHOAIY`@zd[k]O_vd@=\\ngJXHHOAIZ`@zd[k[O_vd@\\ngJXHHOAIZ`@zd[x^vso}i@=\\ngJXHHOAIZ`@zd[x^vsw}i@\\ngJXHHOAIZ`@zd[x^wSw}i@=\\ngJXHHOAIZ`@zd\\\\xL\\\\wp}mgo{R@\\ngJXHHOAIZj@zLTyK_CvBP\\x7FmH\\ngJXHHOAIZjbPzLTyM_CvBP\\x7FmH<\\ngJXHHOAIZjbPzLTyM_CvBP\\x7FmH>\\ngJXHHOAIfj@zLTyK_CvBP\\x7FmH\\ngJXHHOAIfj@zLTyKgAcf~GlDa\\x7FZP\\ngJXHHOAIfj@zLTyKgAcf~GlD~\\x7FZP\\ngJXHHOAIfj@zLTyKgQSf~GlDa\\x7FZP\\ngJXHHOAIfj@zLTyM_CvBP\\x7FmH\\ngJXHHOAIfj@zLTyMgAcf~GlDa\\x7FZP\\ngJXHHOAIfj@zLTzK]XIC~t`\\ngJXHHOAIfjdPzLTyK]XIB<\\ngJXHHOAIfjdPzLTyK]XIB>\\ngJXHHOAIfjdPzLTyK_CvBP`>\\ngJXHHOAJfj@zhXjtZ~P\\\\Da\\x7FZP\\ngJXHL@aIZ`@zd[k[Np\\ngJXHL@aIZ`@zd[k[OP\\ngJXHL@aIZf@ztTfs`qS^DH\\ngJXHL@aIZf@ztTfs`qs_CvzP`\\ngJXHL@aIZjb`ztTeoBD<\\ngJXHL@aIZjb`ztTeoBD>\\ngJXHL@aJZ`@zPTwrCmgX\\ngJXHL@aJZ`@zPTwrCmgh\\ngJXHL@aJZ`@zPTwrCngX\\ngJXHL@aJZ`@zPTypXyodG[OP\\ngJXHL@aJZ`@zPUWrCmgX\\ngJXHL@aJZ`@zPUWrCmgh\\ngJXHL@aJZ`@zPUYpXyodG[OP\\ngJXHL@aJZf@zHXiK]HIB\\ngJXHL@aJZf@zpYIodG[OP\\ngJXHL@aJZf@zpYIs`qs_HNv^`\\ngJXHL@aJZi@zHXiK]HIz\\ngJXHL@aJZi@zHXjK]HIz\\ngJXHL@aJZi@zpYIodG[OP\\ngJXHL@aJZjdPzHXjMgAbfzPRD<\\ngJXHL@aJZjdPzHXjMgAbfzPRD>\\ngJXHLDQJZ`@zPTwrCmgX\\ngJXHLJqIZjb`ztTeoBD<\\ngJXHLLQIZ`@zd[k[OP\\ngJXHLLQIZ`@zd[k]OP\\ngJXHLLQIZjb`ztTeoBD<\\ngJXHLOAIZ`@zd[x^vsl\\ngJXHLOAIZi@zTUWp}mgX\\ngJXHaj@SnRkZ`NbFJRwV|P\\x7Fm@\\ngJXIB@`rdwM@]JV[h[Vp\\ngJXID@aRdwL`]ZVRwPvn`\\ngJXIDOARdmU@]FJ\\\\eoa{AHP\\ngJXIH@b\\\\dmP@]RM|O[Yw~t`=\\ngJXIHOBRdlp@]RMungo{R@=\\ngJXIHOBRdlu@]FJ\\\\enlDa\\x7FZP\\ngJXIHOBRdru@]FJ\\\\enlDa\\x7FZP\\ngJXIL@cRdmP@]RMumgX\\ngJXIL@cRdmUQP]ZJRwaB<\\ngJXIL@cRdmUQP]ZJRwaB>\\ngJXLB@bAFBDkjdCiAU][Yv\\ngJXLL@aAABDfVhCiQR\\ngJX`BDdru@]ZJ\\\\wfB\\ngJX`BDdru@]ZJ\\\\wf|\\ngJX`BDdru@]ZJ]WfB\\ngJX`BDdvu@]JNP\\ngJX`BDdwU@]JNP\\ngJX`BLeMT`]XLTwbB\\ngJX`DBdru@]ZJ\\\\wfC~tP\\ngJX`DBdru@]ZJ\\\\wf}~tP\\ngJX`DBdru@]ZJ]WfC~tP\\ngJX`DBdvu@]JNP\\ngJX`DBdvu@]JN\\\\zJ\\\\`\\ngJX`DBdwM@]JV[h[Vp\\ngJX`LDdru@]ZJRwaB\\ngJX`LDdru@]ZJRwa|\\ngJX`LDdru@]ZJRytTyoBD\\ngJX`LDdru@]ZJRytTyoCx\\ngJX`LDdru@]ZJSWaB\\ngJX`LDdru@]ZJSYtTyoBD\\ngJX`LDdvt`]ZNRwa{~tp\\ngJX`LDdvu@]ZNRwaC~tp\\ngJX`LDdvu@]ZNRwa}~tp\\ngJX`LDdvu@]ZNRytTyoBG}i`\\ngJX`LDdvu@]ZNRytTyoC{}i`\\ngJX`LDdvu@]ZNSWaC~tp\\ngJX`LDdvu@]ZNSYtTyoBG}i`\\ngJX`bDnLiMmPGRcd\\ngJX`bDnLiMmPGRcf|O`\\ngJX`hEIWIMmHGVcdmx^\\x7FmH\\ngJX`hEIWIMmHGVcdo{R@\\ngJX`hEIWIMmPGVcdmxP\\x7FmH\\ngJX`hEIWIMmPGVcdmx__mH\\ngJXaBDYR[Z`NeGH\\ngJXaBDYR[Z`NeGMx_@\\ngJXaBDnR[Z`NeGH\\ngJXaLDnR[Z`NmGI[pa\\x7FZX\\ngJXhMDOAJfj`PzpXfoBD<\\ngJXhMDOAJfj`PzpXfoBD>\\ngJXhMDOAJfj`PzpXfs`qs^DH<\\ngJXhMDOAJfj`PzpXfs`qs^DH>\\ngJY@BDfVhCkQSf|pP\\ngJY@BDfVhCkQSj|pP\\ngJY@BDfZTCiRS]C^v\\ngJY@BDfZjQCkQSf|pP<\\ngJY@BDfZjQCkQSf|pP>\\ngJY@BDfZjQCkQSgNCGMy``<\\ngJY@BDfZjQCkQSgNCGMy``>\\ngJY@BDfZjQCkQSgNbgMy``<\\ngJY@BDfZjQCkQSgNbgMy``>\\ngJY@BDfZjQCkQSj|pP<\\ngJY@BDfZjQCkQSj|pP>\\ngJY@BDfZjQCkQSkNCGMy``>\\ngJY@BDfyhCiRs]CZv\\ngJY@DDefhChqSdmu`dO{Q@=\\ngJY@DDefhChqSduu`dO{Q@\\ngJY@DDejhChqSdmu`dO{Q@=\\ngJY@DDejhChqSdn\\\\FN[kAOovb@\\ngJY@DDejhChqSduu`dO{Q@\\ngJY@DDejhChqSdv\\\\FJ[kAH_vb@\\ngJY@DDejhCiQU][Y{~tP\\ngJY@DDejjIChqSdn\\\\FJ[kAHP<\\ngJY@DDejjIChqSdn\\\\FJ[kAHP>\\ngJY@DDfVdChqSdn]EN[kAO_vb@\\ngJY@DDfVdChqShmu`go{Q@\\ngJY@DDfVdChqShn]EN[kAO_vb@\\ngJY@DDfVhChqSdmu`dO{Q@\\ngJY@DDfVhChqSdmu`gw{Q@\\ngJY@DDfVhChqSdmuoDO{Q@\\ngJY@DDfVhChqSdmuoGw{Q@\\ngJY@DDfVhChqSdn]EN[kAH_vb@\\ngJY@DDfVhChqSdn]EN[kAOovb@\\ngJY@DDfVhChqSdn]EN[k^H_vb@\\ngJY@DDfVhChqSdn]EN[k^Oovb@\\ngJY@DDfVhChqSduu`dO{Q@\\ngJY@DDfVhChqSduuoDO{Q@\\ngJY@DDfVhChqSdv]EN[kAH_vb@\\ngJY@DDfVhChqSdv]EN[k^H_vb@\\ngJY@DDfVhChqShmu`dO{Q@\\ngJY@DDfVhChqShmu`gw{Q@\\ngJY@DDfVhChqShn]EN[kAH_vb@\\ngJY@DDfVhChqShn]EN[kAOovb@\\ngJY@DDfVhChqShuu`dO{Q@\\ngJY@DDfVhChqShv]EN[kAH_vb@\\ngJY@DDfZTCkRRVzF}w}h`\\ngJY@DDfZXChqSdmundO{Q@\\ngJY@DDfZXChqSduundO{Q@\\ngJY@DDfZjQChqSdmu`dO{Q@<\\ngJY@DDfZjQChqSdmu`dO{Q@>\\ngJY@DDfZjQChqSdn]EN[k^H_vb@<\\ngJY@DDfZjQChqSduu`dO{Q@<\\ngJY@DDfZjQChqShuu`dO{Q@<\\ngJY@DDfZjQChqShuu`dO{Q@>\\ngJY@DDfvdCkQrT\\ngJY@DDfvdCkQrV|OP\\ngJY@DDfvdCkQrWNbgH\\ngJY@DDfvdCkQrWNbgMx^`\\ngJY@DDfvhCkQrV|HP\\ngJY@DDfvhCkQrV|O`\\ngJY@DDfvhCkQrWNbgMxP`\\ngJY@DDfvhCkQrWNbgMx_@\\ngJY@DDfvhCkQrZ|HP\\ngJY@DDfvhCkQr[NbgMxP`\\ngJY@DDfydCkRrVzFul\\ngJY@DDfyhCkRrV~Fula@\\ngJY@DDfyhCkRrZ~Fula@\\ngJY@DDfzjQCkQrWNBgMxP`<\\ngJY@DDfzjQCkQrWNBgMxP`>\\ngJY@DDfzjQCkQrWNbgMxP`<\\ngJY@DDfzjQCkQrWNbgMxP`>\\ngJY@HDef@CjQnmt}\\x7FZP=\\ngJY@HDfZjQChqSdn]EN[kAHP<\\ngJY@HDfZjQChqSdn]EN[kAHP>\\ngJY@HDfZjQChqSduu`dH<\\ngJY@HDfZjQChqSduu`dH>\\ngJY@HDfZjQChqShn\\\\FN[kAHP<\\ngJY@HDijhCjabgI[yApRD\\ngJY@HDijhCjabgI[yApRG}i@=\\ngJY@HDijhCjabgI[yApS{}i@\\ngJY@HDijhCjabgI[yAwcx\\ngJY@HDijhCjabgI\\\\xLTwrC`dO{R@\\ngJY@HDijhCjabgIkyApRG}i@\\ngJY@HDijjQCjabgI[yApSx<\\ngJY@HDijjQCjabgI[yApSx>\\ngJY@HDijjQCjabgI\\\\xLTwrC`dH<\\ngJY@HDijjQCjabgI\\\\xLTwrC`dH>\\ngJY@HDijjQCjabgIlxLTwrC`dH<\\ngJY@HDijjQCjabgIlxLTwrC`dH>\\ngJY@HDkjhChaSdmu`dH\\ngJY@HDkjhChaSdnRFJ\\\\wVBP`\\ngJY@HDkjjIChaSdn\\\\FJ[kAHP<\\ngJY@HDkjjIChaSdn\\\\FJ[kAHP>\\ngJY@HDkjjIChaSduu`dH<\\ngJY@HDkjjIChaSduu`dH>\\ngJY@HDkjjIChaSdv\\\\FJ[kAHP<\\ngJY@HDkjjIChaSdv\\\\FJ[kAHP>\\ngJY@LDef@CjQnml{@\\ngJY@LDefdCiQU][Yv\\ngJY@LDefdCiQU][Yz\\ngJY@LDefdCiQU][iv\\ngJY@LDefdCiQU][iz\\ngJY@LDej@CjQnml{@\\ngJY@LDejXCkQRV|HP\\ngJY@LDejdCiQU][Yv\\ngJY@LDejdCiQU][Yz\\ngJY@LDejdCiQU][iz\\ngJY@LDejdCiQUgAbfzwSl\\ngJY@LDejjJCkQRV|HP<\\ngJY@LDejjJCkQRV|HP>\\ngJY@LDejjJCkQRWNCEMxP`<\\ngJY@LDejjJCkQRWNCEMxP`>\\ngJY@LDejjJCkQRWNCGMxP`<\\ngJY@LDejjJCkQRWNCGMxP`>\\ngJY@LDejjJCkQRZ|HP<\\ngJY@LDejjJCkQRZ|HP>\\ngJY@LDejjJCkQR[NCEMxP`<\\ngJY@LDejjJCkQR[NCEMxP`>\\ngJY@LDij@CiAS_HNv]`\\ngJY@LDij@CiAS_HNv^`\\ngJY@LDij@CiASgAcf~P]l}@\\ngJY@LDij@CiAU_HNv]`\\ngJY@LDij@CiAU_HNv^`\\ngJY@LDij@CiAUgAcf~P]l}@\\ngJY@LDijXChabdmt`dH\\ngJY@LDijXChabdmt`gp\\ngJY@LDijXChabdn\\\\FJ[iAHP\\ngJY@LDijXChabdut`dH\\ngJY@LDijXChabdv\\\\FJ[iAHP\\ngJY@LDijXChabdv\\\\FN[yAwRD\\ngJY@LDijXChabhn\\\\FN[yAwRD\\ngJY@LDijXCkAdf~P]l}@\\ngJY@LDijXCkAdgNCGM|`{Yz\\ngJY@LDijXCkAdj~P]l}@\\ngJY@LDijdChabdmx``\\ngJY@LDijdChabdn\\\\FN[iAOP\\ngJY@LDijdChabdn\\\\FN[i^OP\\ngJY@LDijdChabhn\\\\FN[iAOP\\ngJY@LDijdCkAdf~P]t{@\\ngJY@LDijdCkAdf~P]t}@\\ngJY@LDijdCkAdgNCGM|`{Yz\\ngJY@LDijdCkAdgNCGM|`{iz\\ngJY@LDijdCkAdj~P]t}@\\ngJY@LDijjQChabdmt`dH<\\ngJY@LDijjQChabdmt`dH>\\ngJY@LDijjQChabdn\\\\FJ[iAHP<\\ngJY@LDijjQChabdn\\\\FJ[iAHP>\\ngJY@LDijjQChabdn\\\\FN[iAHP<\\ngJY@LDijjQChabdn\\\\FN[iAHP>\\ngJY@LDijjQChabdut`dH<\\ngJY@LDijjQChabdut`dH>\\ngJY@LDijjQChabdv\\\\FJ[iAHP<\\ngJY@LDijjQChabdv\\\\FJ[iAHP>\\ngJY@LDijjQChabhv\\\\FJ[iAHP<\\ngJY@LDijjQChabhv\\\\FJ[iAHP>\\ngJY@dAreInZ@zt\\\\eshis^DH\\ngJYABCJSKTAuhiu^XH\\ngJYABCJSMUHauhis]XI|<\\ngJYABCJSMUHauhis^XH<\\ngJYABCJSMUHauhis^XH>\\ngJYABCJSMUHauhiu^XH<\\ngJYABCJSMUHauhiu^XH>\\ngJYABCJS\\\\tAtiYnam[@\\ngJYADArSMLAtXirWNbgMxP\\x7FmD\\ngJYADEJS[RAuhyKgQSf|OP\\ngJYALMJRuUEAuhiK^DH<\\ngJYALMJRuUEAuhiK^DH>\\ngJYALMJTu@At`iodG[Np\\ngJYDC`DPHRni`NdEH\\ngJYHC`DIKTpGRbd\\ngJYHC`DIKTpGRbgNCGH\\ngJYHC`DISTpGVCEUx``\\ngJYHC`DISUHGVCIM|`{Yv\\ngJYHC`VIKTpGRbf|G`\\ngJYHCaDIKTpGRbd\\ngJYHCaxIKTpGRbf|G`\\ngJYHDPDIMsPGRefzFul\\ngJYHE@DIUmLBGQBgI[k^O_vb@<\\ngJYHE@DIUmTBGQBgI[k^H_vb@<\\ngJYHE@DIUmTBGQBgI[k^H_vb@>\\ngJYHE@DIUmTBGQBgI[k^Oovb@<\\ngJYHE@DIUmTBGQBgI[k^Oovb@>\\ngJYHE@DIUmTBGQBgQ[kAH_vb@>\\ngJYHI`DIKTpGVbdmtODO{R@\\ngJYHI`DIKTpGVbdutODO{R@\\ngJYHIaxIKTpGVbdmtOGw{R@\\ngJYHIaxIKTpGVbdutODO{R@\\ngJYHLEPISTpGVCDv\\\\FJ[i^HP\\ngJYHL`DILmPGVbdmxP`\\ngJYHL`DILmPGVbduxP`\\ngJYHL`DILtpGVbdmxP`\\ngJYHL`DILtpGVddm|M{YB\\ngJYHL`DIMmPGVcdmxP\\x7FmL\\ngJYHL`DIMmPGVcduxP\\x7FmL\\ngJYHM@DIKT@GTc_Cvv^`\\ngJYHlEPKmJTuLAu`qMgAbf~Wmta@\\ngJY`BEdfVhCiQR\\ngJY`LDTfvhCiQs~tp\\ngJY`hEiNyIej@ztTeoBG}i@\\ngJYieLPxAeIyIZf@zTT\\x7FmD\\ngJ\\\\@@bdrQ@]QMtM{_{Q@\\ngJ\\\\@@bdrQ@]QMtM{o{Q@\\ngJ\\\\@@bdru@]JR[h[w_vb@\\ngJ\\\\@@bdru@]ZJ]YpXyoLG}h`\\ngJ\\\\@@bdru@]ZJ]YtTynawA\\x7FZH\\ngJ\\\\@@bdvt`]JV[h[Vp\\ngJ\\\\@@bdvt`]JV[h[WP\\ngJ\\\\@@bdvu@]JNP\\ngJ\\\\@@bdvu@]JV[h[Vp\\ngJ\\\\@@bdvu@]JV[h[WP\\ngJ\\\\@@ldru@]ZJRwPzP\\x7FmD\\ngJ\\\\@@ldru@]ZJRwaC~tP\\ngJ\\\\@@ldru@]ZJRypXyoBG}h`\\ngJ\\\\@@ldru@]ZJRytTyoBG}h`\\ngJ\\\\@@ldru@]ZJSWPzP\\x7FmD\\ngJ\\\\@@ldru@]ZJSWaC~tP\\ngJ\\\\@@ldru@]ZRRwpwmdO{Q@\\ngJ\\\\@@ldru@]ZRRwpwndO{Q@\\ngJ\\\\@@ldru@]ZRRytTyoao]H_vb@\\ngJ\\\\@@ldru@]ZRSWpwmdO{Q@\\ngJ\\\\@@ldru@]ZRSWpwndO{Q@\\ngJ\\\\@@ldvE@]KI[x[VrG}i`=\\ngJ\\\\@@ldvE@]KI[x[Vs{}i`=\\ngJ\\\\@@ldvE@]KIkx[VrG}i`=\\ngJ\\\\@ABeWU@]HR[j[v\\x7Fv`@\\ngJ\\\\@ABeWU@]HR[j[w_v`@\\ngJ\\\\@ABeWU@]XJ\\\\wfC~t@\\ngJ\\\\@ABeWU@]XJ\\\\ytTyoLG}h@\\ngJ\\\\@ADeSU@]XTSWrwndO{HP\\ngJ\\\\@ADe\\\\u@]DJ\\\\enlDa\\x7FYA@=\\ngJ\\\\@ADe\\\\u@]DJ\\\\es`qS]XIC~rB@\\ngJ\\\\@AEddMTAuaYK_SZvP\\x7Fm@=\\ngJ\\\\@AEddMTAuaYM_SZvP\\x7Fm@=\\ngJ\\\\@ALe\\\\p@]PMumg_{P@\\ngJ\\\\@ALe\\\\s@]HJkk[O_v`@\\ngJ\\\\@ALe\\\\s@]XJSYpXinita\\x7FZ@\\ngJ\\\\@ALe\\\\t`]HJkk[N\\x7Fv`@\\ngJ\\\\@ALe\\\\t`]HJlxLTwVz^\\x7Fm@\\ngJ\\\\@AbeMK@]XLTwb{~t@\\ngJ\\\\@AbeMK@]XLTypXioEw}h@\\ngJ\\\\@AbeMK@]XLTypXyoEw}h@\\ngJ\\\\@`bnLiLmPGRdfzF}o}h`\\ngJ\\\\A@bIR[Z`NeKMtMkX\\ngJ\\\\A@bnR[Z`NeKMtMkX\\ngJ\\\\A@lIRYZ`NmEI[h]H_vb@\\ngJ\\\\A@lIRYZ`NmEI[pa\\x7FZH\\ngJ\\\\A@lIRYZ`NmEI\\\\xL\\\\wPzP\\x7FmD\\ngJ\\\\A@lIRYZ`NmEI\\\\xL\\\\waC~tP\\ngJ\\\\A@lIRYZ`NmEI\\\\zJ\\\\waC~tP\\ngJ\\\\A@lIRYZ`NmEIkh]H_vb@\\ngJ\\\\A@lIRYZ`NmEIkpa\\x7FZH\\ngJ\\\\A@lIRYZ`NmII[x[vrG}h`\\ngJ\\\\A@lIR[B`Nedm|MkYC~tp\\ngJ\\\\AAciRfe`NlFJ[i]w_v`@\\ngJ\\\\AAciRfe`NlFJ[q]\\x7FZ@\\ngJ\\\\DAcJATBTuTAt`qs`qR>\\ngJ\\\\HEb@aIej@zTT\\x7FmD\\ngJ\\\\HEb@aIfe@zTdwPwm\\x7FmD\\ngJ\\\\HEb@aInZ@zTlwPvm\\x7FmL\\ngJ\\\\HHlOAJfj@zpXeoC{|eBb\\ngJ\\\\HHlOAJfj@zpXfoBG|eBcZP\\ngJ\\\\HIb@aIZ`@zd[x^vso}i@=\\ngJ\\\\HIbOAIY`@zd[k[N\\x7Fvd@=\\ngJ\\\\H`cj@SnR[Z`NeKMtNkh\\ngJ\\\\Hib@b]iRVh@NiF~Gml{\\x7FZP\\ngJ\\\\IIb@b\\\\dmP@]RM|O[Yw~t`=\\ngJ\\\\aibEIW[dfvhCiQs~rf@\\ngJ]@EbDfVhCiQS~tP\\ngJ]@ebEqeIej@zTT\\x7FmD\\ngJ]AEbCJSKTAthi\\x7FZH\\ngKP@DklVj@zhXirVzpRG|dml\\ngKP@DklVj@zhXirWICEN[kAH_rRvp\\ngKP@DklVj@zhXirWICEN[z]pRG|dml\\ngKP@DklVjbPzhXirV~g\\\\D~\\x7FIK[@<\\ngKP@DklVjbPzhXirV~g\\\\D~\\x7FIK[@>\\ngKP@DklVjbPzhXirWICEN[kAOorRvp<\\ngKP@DklVjbPzhXirWICEN[kAOorRvp>\\ngKP@LdabjhCjabgI[zAPRG|dML\\ngKP@LdabjjACjabgI[zAWbG|dML<\\ngKP@LdabjjACjabgI[zAWbG|dML>\\ngKP@LdabjjACjabgI\\\\dLTyohE^H_rPtp<\\ngKP@LdabjjACjabgI\\\\dLTyohE^H_rPtp>\\ngKP@LdabjjACjabgI\\\\xJ\\\\wtBoDOyHZX<\\ngKP@LdabjjACjabgI\\\\xJ\\\\wtBoDOyHZX>\\ngKP@LdabjjACjabgI\\\\zJ\\\\wtBoDOyHZX<\\ngKP@LdabjjACjabgI\\\\zJ\\\\wtBoDOyHZX>\\ngKP`@TixjjdPztTyoDG|dL\\\\<\\ngKQ@@dmcUPGQbgI[kAH_rRvp\\ngKQ@@eOEUTbGQbgI[iAH_rPqp<\\ngKQ@@eOEUTbGQbgI[iAH_rPqp>\\ngKQ@@eOEUTbGQbgI[i^H_rPqp<\\ngKQ@@eOEUTbGQbgI[i^H_rPqp>\\ngKQ@@eOEUTbGQbgI\\\\yNRwRBP\\x7Fdac`<\\ngKQ@@eOEUTbGQbgI\\\\yNRwRBP\\x7Fdac`>\\ngKQ@@eOEUTbGQbgI\\\\yNRwR|P\\x7Fdac`<\\ngKQ@@eOEUTbGQbgI\\\\yNRwR|P\\x7Fdac`>\\ngKX@@dmcUPGQbgI[kAH_rRvp\\ngNp@DiYzA@zVVwQw]`=\\ngNp@DiYzA@zVVwqw]oh=\\ngNp@DiYzB@zVVwqw]lH=\\ngNp@DiYzB@zVVwqw^lH\\ngNp@DiYzB@zVVwq{^lH=\\ngNp@Djfjj@zxXirVk[uApRFaXP\\ngNp@Djfjj@zxXirVk\\\\dLRuoTGAHZEa@\\ngNp@Djfjj@zxXirVk\\\\dNRuoTGAOjEa@\\ngNp@Djfjj@zxXirVk\\\\lLTyKV}P\\\\DahVD\\ngNp@Djfjj@zxXirVk\\\\lLTyKV}P\\\\Daogx\\ngNp@Djfjj@zxXirVk\\\\lLTyKV}P\\\\D~hVD\\ngNp@Djfjj@zxXirVk\\\\tLTek^hNBPtKB\\ngNp@Djfjj@zxXirVk\\\\tLTek^hNB_TKB\\ngNp@Djfjj@zxXirVskuApRFaXP\\ngNp@Djfjj@zxXirVsldNRuoTGAOjEa@\\ngNp@Djfjj@zxXirZk[uApRFaXP\\ngNp@Djfjj@zxXirZk\\\\lLTyKV}P\\\\DahVD\\ngNp@Djfjj@zxXirZk\\\\tLTek^hNBPtKB\\ngNp@Djfjj@zxXitZk[uApRFaXP\\ngNp@Djfjj@zxXitZskuApRFaXP\\ngNp@DjfjjPTPzxXirVk\\\\tL\\\\ek^hNB_TK|<\\ngNp@DjfjjPTPzxXirVk\\\\tL\\\\ek^hNB_TK|>\\ngNp@DjfjjPTPzxXirZk\\\\tL\\\\ek^hNBPtK|<\\ngNp@DjfjjPTPzxXirZk\\\\tL\\\\ek^hNBPtK|>\\ngNp@DjfjjPTPzxXirZk\\\\xLRwjC`dMBp`<\\ngNp@DjfjjPTPzxXirZk\\\\xLRwjC`dMBp`>\\ngNp@DjfjjPTPzxXirZklxLRwjC`dMBp`<\\ngNp@DjfjjPT`zxXirVk\\\\dL\\\\eoTGAOjEa@>\\ngNp@DjfjjPT`zxXirVk\\\\tL\\\\ek^hNB_TK|>\\ngNp@DjfjjPT`zxXirZk\\\\xLRwjC`dMBp`<\\ngNp@DjfjjPT`zxXirZk\\\\xLRwjC`dMBp`>\\ngNp@DjfjjPT`zxXirZklxLRwjC`dMBp`<\\ngNp@DjfjjPT`zxXirZklxLRwjC`dMBp`>\\ngNp@Djfjj`PzxXirVk\\\\tL\\\\ek^hNB_TKB<\\ngNp@Djfjj`PzxXirVk\\\\tL\\\\ek^hNB_TKB>\\ngNp@Djfjj`PzxXirZk\\\\dLRuoTGAHZEa@<\\ngNp@Djfjj`PzxXirZk\\\\tL\\\\ek^hNBPtKB<\\ngNp@Djfjj`PzxXirZk\\\\tL\\\\ek^hNBPtKB>\\ngNp@DjfjjdPzxXirVk[uApRFa_`>\\ngNp@DjfjjdPzxXirVk\\\\dLTeoTGAHZEa@<\\ngNp@DjfjjdPzxXirVk\\\\dLTeoTGAHZEa@>\\ngNp@DjfjjdPzxXirVk\\\\dLTuoTGAHZE~@<\\ngNp@DjfjjdPzxXirVk\\\\dLTuoTGAHZE~@>\\ngNp@DjfjjdPzxXirVk\\\\lLTyKV}P\\\\DahWx<\\ngNp@DjfjjdPzxXirVk\\\\lLTyKV}P\\\\DahWx>\\ngNp@DjfjjdPzxXirVk\\\\lLTyKV}P\\\\D~hWx<\\ngNp@DjfjjdPzxXirVk\\\\tLTek^hNBPtK|<\\ngNp@DjfjjdPzxXirVk\\\\tLTek^hNBPtK|>\\ngNp@DjfjjdPzxXirVk\\\\xLRwjC`dMBp`<\\ngNp@DjfjjdPzxXirVk\\\\xLRwjC`dMBp`>\\ngNp@DjfjjdPzxXirVk\\\\xLZwjC`dMB\\x7F@<\\ngNp@DjfjjdPzxXirVk\\\\xLZwjC`dMB\\x7F@>\\ngNp@DjfjjdPzxXirVk\\\\xNRwjC`guBp`<\\ngNp@DjfjjdPzxXirVk\\\\xNRwjC`guBp`>\\ngNp@DjfjjdPzxXirVk\\\\xNZwjC`guB\\x7F@<\\ngNp@DjfjjdPzxXirVk\\\\xNZwjC`guB\\x7F@>\\ngNp@DjfjjdPzxXirVkkuApRFaXP<\\ngNp@DjfjjdPzxXirVkkuApRFaXP>\\ngNp@DjfjjdPzxXirVkldLTeoTGAHZEa@>\\ngNp@DjfjjdPzxXirVkltLTek^hNBPtKB<\\ngNp@DjfjjdPzxXirVklxLRwjC`dMBp`<\\ngNp@DjfjjdPzxXirVklxLRwjC`dMBp`>\\ngNp@DjfjjdPzxXirVklxLZwjC`dMBp`<\\ngNp@DjfjjdPzxXirVklxLZwjC`dMBp`>\\ngNp@DjfjjdPzxXirVslxLRwjC`dMBp`>\\ngNp@DjfjjdPzxXirZk\\\\xNRwjC`dMBp`<\\ngNp@DjfjjdPzxXirZk\\\\xNRwjC`dMBp`>\\ngNp@DjfjjdPzxXirZkkuApRFaXP<\\ngNp@DjfjjdPzxXirZkkuApRFaXP>\\ngNp@DjfjjdPzxXitZk\\\\dJ\\\\eoTGAHZEa@>\\ngNp@DjzZj@zhdejv}f}tahVD\\ngNp@DjzZj@zhdejwNCGM{N{iCPlH\\ngNp@DjzZj@zhdejwNbgM{M{iCPlH\\ngNp@DjzZj@zhdejz}f}tahVD\\ngNp@DjzZj@zhdelz}f}tahVD\\ngNp@DjzZj@zxXirVk[gAHZEa@\\ngNp@DjzZj@zxXirVk[v]pRFaXP\\ngNp@DjzZj@zxXirVk\\\\fJ\\\\en]xahVD\\ngNp@DjzZj@zxXirVk\\\\lLTyKVywbFaXP\\ngNp@DjzZj@zxXirVk\\\\lLTyKV}g\\\\DahVD\\ngNp@DjzZj@zxXirVk\\\\tLTyK\\\\xICPlH\\ngNp@DjzZj@zxXirVk\\\\tLTyK\\\\{qCPlH\\ngNp@DjzZj@zxXirVk\\\\tLTyK^snBPtKB\\ngNp@DjzZj@zxXirVk\\\\tLTyK^sn|PtKB\\ngNp@DjzZj@zxXirVk\\\\xLZwl{`dMB\\x7F@\\ngNp@DjzZj@zxXirVk\\\\xL\\\\wNBPtKB\\ngNp@DjzZj@zxXirVk\\\\xL\\\\wl{`dMBp`\\ngNp@DjzZj@zxXirVk\\\\zJZwNBPtK|\\ngNp@DjzZj@zxXirVk\\\\zJ\\\\wNBPtKB\\ngNp@DjzZj@zxXirVk\\\\zJ\\\\wN|PtKB\\ngNp@DjzZj@zxXirVk\\\\zJ\\\\wl{oDMBp`\\ngNp@DjzZj@zxXirVkkgAHZEa@\\ngNp@DjzZj@zxXirVsldLRuoYwAHZEa@\\ngNp@DjzZj@zxXitVk[gAHZEa@\\ngNp@DjzZj@zxXitVk[v]pRFaXP\\ngNp@DjzZj@zxXitVk\\\\tLTyK^snBPtKB\\ngNp@DjzZj@zxXitVk\\\\xL\\\\wNBPtKB\\ngNp@DjzZj@zxXitVkldL\\\\eoYwAHZEa@\\ngNp@DjzZjbPzhdej{NCGM{N{iCPlH<\\ngNp@DjzZjbPzxXirVk\\\\tLTyk\\\\xICPop<\\ngNp@DjzZjbPzxXirVk\\\\tLTyk\\\\xICPop>\\ngNp@DjzZjbPzxXirVk\\\\tLTyk^snBPtK|>\\ngNp@DjzZjbPzxXirVklxL\\\\wl{`dMBp`<\\ngNp@DjzZjbPzxXirVklxL\\\\wl{`dMBp`>\\ngNp@DjzZjbPzxXirVslxLRwl{`dMBp`<\\ngNp@DjzZjbPzxXirVslxLRwl{`dMBp`>\\ngNp@LdadBj@zNRu[^sZvPtKB=\\ngNp@LdadBj@zNRu[^sZvPtKC~RqI@=\\ngNp@LdadBj@zNRu[^sZvPtKC~VqIi@=\\ngNp@LdadBj@zNRu[^sZvPtK|=\\ngNp@LdadBj@zNRu[^sZvPtK}~VqIi@=\\ngNp@LdadBj@zNRu[^sZzPtKB\\ngNp@LdadBj@zNRu[^sjzPtKB=\\ngNp@LdadBj@zNRu[^sjzPtKC~RqI@=\\ngNp@LdadBj@zNRu[dqSdm{MkiCPlH\\ngNp@LdadBj@zNRu[gASV}gUtahWx\\ngNp@LdadBj@zNRu[gASf}gUtahVD\\ngNp@LdadBj@zNRu[gQSV}futahWx\\ngNp@LdadBj@zNRu[gQSf}futahVD\\ngNp@LdadBj@zNRu]^sZvPtKB=\\ngNp@LdadBj@zNRu]^sZvPtKC~RqI@=\\ngNp@LdadBj@zNRu]^sZzPtKB\\ngNp@LdadBj@zNRu]dqSdm{MkiCPlH\\ngNp@LdadBj@zNRu]gQSV}futahVD\\ngNp@LdadBj@zNRu]gQSV}futahVG|ebR\\ngNp@LdadBj@zNRv]^sZvPtKB=\\ngNp@LdadBj@zNRv]^sZzPtKB\\ngNp@LdadBj@zNRv]daRVm{NkiCPlH\\ngNp@LdadBj@zNRv]dqRVm{MkiCPlH\\ngNp@LdadBj@zNRv]gQSf}futahVD\\ngNp@LdadBj@zNSU[^sZvPws|=\\ngNp@LdadBj@zNSV[^sZvPtK|=\\ngNp@LdadBj@zNSV[gQSV}futahWx\\ngNp@LdadBj@zNSV]^sZvPtKB=\\ngNp@LdadBj@zNSV]^sZzPtKB\\ngNp@LdadBj@zNSV]dqSdm{MkiCPlH\\ngNp@LdadBj@zNSV]gQSf}futahVD\\ngNp@LdadBjfPzNRu[^sZvPtK}~Rqi@-\\ngNp@LdadBjfPzNRu[gQSf}futahWx>\\ngNp@LdadBjfPzNRu]dqSfm{MkiCPlH<\\ngNp@LdadBjfPzNRu]dqSfm{MkiCPlH>\\ngNp@LdadBjfPzNRu]gQSf}futahVD<\\ngNp@LdadBjfPzNRu]gQSf}futahVD>\\ngNp@LdadBjfPzNRv[^sZvPtK|+\\ngNp@LdadBjfPzNRv[^sZvPtK|-\\ngNp@LdadBjfPzNRv[^sZvPtK}~Rqi@+\\ngNp@LdadBjfPzNRv[^sZvPtK}~Rqi@-\\ngNp@LdadBjfPzNRv[gQRV}futahW{|ecR<\\ngNp@LdadBjfPzNRv[gQRV}futahW{|ecR>\\ngNp@LdadBjfPzNRv]gQRV}futahVD<\\ngNp@LdadBjfPzNRv]gQRV}futahVD>\\ngNp@LdadBjfPzNSV[gQSf}futahWx<\\ngNp@LdadBjfPzNSV[gQSf}futahWx>\\ngNpB@xQpSagCIIKJj`NbDmVwl|o[uBp\\x7Fe`XTP\\ngNpB@xQpk`wAJkjj`NbENRwNBPws|\\ngNpBADFPl`yAInij`NmENP\\ngNpCAHR`TaiB]dTaeT@GTc]W[z\\ngNpD@DHHRZzj@CiQK_DMv}`=\\ngNpD@DHHRZzj@CiQK_Guv}`=\\ngNpD@DHHRZzj@CiQM_DMv}`=\\ngNpD@DHHRZzjhCjqrVk\\\\eNRuobFaXP\\ngNpD@DIpRYjfhCiqSdmVwH|PtK|\\ngNpD@DIpRYjfhCjrRVk[t[vrFaXP\\ngNpD@DIpRYjfhCjrRVk[t[vrFa_`\\ngNpD@DIpRYjfhCjrRVk[t[wRFaXP\\ngNpD@DSpRZYj@CkQrVypRF{^p=\\ngNpD@DSpRZYj@CkQtZypRF{^p=\\ngNpD@DSpRZYj@CkQtZypRF{_P\\ngNpD@DSpRZYj@CkQtZypRF}_P=\\ngNpD@DSpRZYj@CkQt[MbgIZwNBPwkz=\\ngNpD@DSpRZYjBQCkQrZypRF{^p+\\ngNpD@DSpRZYjBQCkQrZypRF{^p-\\ngNpD@DSpRZYjhCiqSdmVwNBPtKB\\ngNpD@DSpRZYjjQCiqSduVwNBPtKB<\\ngNpD@DSpRZYjjQCiqSduVwNBPtKB>\\ngNpD@bIpRYjfhCjrRVk[t[vrFaXP\\ngNpD@bQpRZZj@CkQtZypRF{^p=\\ngNpD@bSpRZYj@CkQtZypRF{^p=\\ngNpD@bSpRZYj@CkQtZypRF{_P\\ngNpD@bSpRZYjBQCkQrZypRF{^p+\\ngNpD@bSpRZYjBQCkQrZypRF{^p-\\ngNpD@bSpRZYjhCiqSdmVwNBPtKB\\ngNpD@xN`RjZjXCiabgIZwJC`dMz\\ngNpD@xQpRjzj@CkArV}glDanwl=\\ngNpD@xQpRjzj@CkArV}glDanwt\\ngNpD@xQpRjzj@CkAtZ}glDanwl=\\ngNpD@xQpRjzj@CkAt[IbgM[v^pRF{_P\\ngNpD@xQpRjzjBACkArZ}glDanwl-\\ngNpD@xQpRjzjhCiaSdmVwNBPtKB\\ngNpD@xQpRjzjhCiaSdmVwl}`dMBp`\\ngNpD@xRPRjzj@CkAtZypRF{^p=\\ngNpD@xRPRjzj@CkAtZypRF{_P\\ngNpD@xUpRjZjdCiabgIVwJC`dM|\\ngNpD@xUpRjZjjQCiabgIWWjC`dM|p`<\\ngNpD@xUpRjZjjQCiabgIWWjC`dM|p`>\\ngNpDADFHR[jZhCjqSfk\\\\fJRuoevaXP\\ngNpDAHJPRZzj@CiQK_DMv~`\\ngNpDAHJPRZzj@CiQK_Guv}`=\\ngNpDAHJPRZzj@CiQK_Guv~`\\ngNpDAHJPRZzj@CiQK_Guz~`=\\ngNpDAHJPRZzjXCjqrVk[xaoVD\\ngNpDAxKpR[ijhCjqrVk[xahVD\\ngNpDAxSpRjyj@CkAtZypRF{^p=\\ngNpDAxSpRjyjBACkArZypRF{^p+\\ngNpDAxSpRjyjBACkArZypRF{^p-\\ngNpD`DR`Dsdffj`@zt]Fn\\\\DaoWt=\\ngNpDaxF`Dgdjfj`@zpTynTGAnwl=\\ngNpDaxF`Dgdjfj`@zpUZnTGAnwl=\\ngNpDaxF`Dgdjfj`@zpUZoTGAOkm{@=\\ngNpDaxF`Dgdjfj``PzpTznTGAnwl+\\ngNpDaxF`Dgdjfj``PzpTznTGAnwl-\\ngNpDaxF`Dgdjfj``PzpTznTGAnwt<\\ngNpDaxF`Dgdjfj``PzpTzoTGAOkm{\\x7FIPx`+\\ngNpDaxF`Dgdjfj``PzpTzoTGAOkm{\\x7FIPx`-\\ngNpDaxF`Dgdjfjj@zXXisUmr`xMBp`\\ngNpDaxF`Dgdjfjj@zXXisUmz`xI}PlH\\ngNpDaxF`Dgdjfjj@zXXjuUmr`xMBp`\\ngNpDaxF`Dgdjfjj`PzXXiuUmr`xMBp`<\\ngNpDaxF`Dgdjfjj`PzXXiuUmr`xMBp`>\\ngNpDaxR`Dsdffj`@zt]Fn\\\\DaoWt=\\ngNpDaxR`Dsdffj`@zt]FoQ{AH[u}@=\\ngNpDaxR`Dsdffj`dPzt\\\\foQ{AH[u}\\x7FI@h`+\\ngNpDaxR`Dsdffj`dPzt\\\\foQ{AH[u}\\x7FI@h`-\\ngNpE@DSpdiMMU@AuhzM\\\\xIC]oX=\\ngNpE@bSpdiMMU@AuhzM\\\\xIC]oX=\\ngNpE@bSpdiMMUAHauhyM\\\\xIC]oX+\\ngNpE@bSpdiMMUAHauhyM\\\\xIC]oX-\\ngNpE@bSpdiMMUTAtxirVk[gAHZEa@\\ngNpEADR`gIMMU@AuhzM\\\\xIC^oh=\\ngNpEAHR`gIMMU@AuhzM\\\\xIC]oX=\\ngNpEAHR`gIMMU@AuhzM\\\\xIC^oh=\\ngNpEAHR`gIMMU@AuhzMfqSdm[gAH[u}@=\\ngNpEAVRDdiMMU@AuhzM\\\\xIC]oX=\\ngNpEAVSpdiMMU@AuhzM\\\\xIC]oX=\\ngNpEAVSpdiMMU@AuhzM\\\\xIC]oh\\ngNpEAVSpdiMMUTAtxirVk[gAHZEa@\\ngNpEAbSpdiMMU@AuhzM\\\\xIC]oX=\\ngNpEAxF`DiUMU@Au`ju\\\\hNC]oX=\\ngNpEAxF`DiUMUTAtpqSfk[eApZEa@\\ngNpEAxRPDiU]U@Au`zM\\\\xIC]oX=\\ngNpEAxRPDiU]U@Au`zM\\\\xIC^oh=\\ngNpEAxR`gIMMU@AuhzM\\\\xIC^oh=\\ngNpEAxSpDiUMUTAupqSdmgWjC`dMBp`\\ngNpEAxSpDiU]U@Au`zM\\\\xIC]oX=\\ngNpEAxSpDiU]UA@au`yM\\\\xIC]oX+\\ngNpEAxSpDiU]UA@au`yM\\\\xIC]oX-\\ngNpEAxSpDiU]UTAtpirVk[gAHZEa@\\ngNpH@DIMMU@AuhyK\\\\xIC]oX=\\ngNpH@DIMMU@AuhzM\\\\xIC]oX=\\ngNpH@DIMMU@AuhzMdqSfms`dMv~`\\ngNpH@DIMMUAHauhyK^cvBPw[w~RAQ@-\\ngNpH@DIMMUAHauhyMdqSfms`dMv~`<\\ngNpH@DIMMUAHauhyMdqSfms`dMv~`>\\ngNpH@DIMuMTAuYYKUmzMkYCPlH\\ngNpH@DIMuMTAuYYKUuzMkYCPlH\\ngNpH@DIMuMTAuYYKYuzMkYCPlH\\ngNpH@DISmW@At`iodF{_P\\ngNpH@bIMMU@AuhzMdqSfms`dMv~`\\ngNpH@bISmW@At`iodF{_P\\ngNpH@xIUMU@AtPirV}P\\\\Danwl=\\ngNpH@xIUMU@AtPirV}P\\\\Danwt\\ngNpH@xIUMU@AtPirV}P\\\\DaoWt=\\ngNpH@xIUMU@AtPirV}P\\\\D~nwl=\\ngNpH@xIUMU@AtPirWNCFmz`xIC]oh\\ngNpH@xIUMU@AtPirZ}P\\\\Danwl=\\ngNpH@xIUMU@AtPirZ}P\\\\Danwt\\ngNpH@xIUMU@AtPirZ}P\\\\DaoWt=\\ngNpH@xIUMU@AtPir[NCfmz`xIC]oh\\ngNpH@xIUMU@AtPitZ}P\\\\Danwl=\\ngNpH@xIUMU@AtPitZ}P\\\\Danwt\\ngNpH@xIUMU@AtPjtV}P\\\\D~nwl=\\ngNpH@xIUMU@AtPjtZ}P\\\\Danwl=\\ngNpH@xIUMU@AtPjtZ}P\\\\Danwt\\ngNpH@xIUMU@AtPjt[NCFmz`xIC]oh\\ngNpH@xIUMUA@atPitV}P\\\\D~nwl+\\ngNpH@xIUMUA@atPitV}P\\\\D~nwl-\\ngNpH@xIUMULAuPrSdmz`xIC^oX\\ngNpH@xIUMULAupqSdmVwJC`dKB\\ngNpH@xIUMULAupqSdmVwjC`dMzp`\\ngNpH@xIUMULAupqSdmVwjC`dMzp\\x7FdbZP\\ngNpH@xIUMULAupqSdmWWjC`dMzp`\\ngNpH@xIUMULAupqSduVwJC`dKB\\ngNpH@xIUMUTAupqSdmVwjC`dMBp`\\ngNpH@xIUMUTAupqSdmVwjC`guBp`\\ngNpH@xIUMUTAupqSduVwjC`dMBp`\\ngNpH@xIUMUTAupqShuVwjC`dMBp`\\ngNpHABIUMM@AtPitZ}W\\\\Danwl=\\ngNpHADIMMULAtxirVk\\\\vJ\\\\ek\\\\xIC^op\\ngNpHAHILuUUHatxirVk\\\\zJ\\\\wNBPtKB<\\ngNpHAHIMMU@AuhyK\\\\xIC]oX=\\ngNpHAHIMMUUHatxirVk\\\\vJ\\\\ek\\\\xI}PlH<\\ngNpHAbILuUUHatxirVk\\\\zJ\\\\wNBPtKB>\\ngNpHAxIMMU@AuhzM\\\\xIC]oX=\\ngNpHAxIMMU@AuhzM^cvBPw[v=\\ngNpHAxITuUTAupqUhmVwjC`dMBp`\\ngNpHAxITuUU@aupqSdmVwjCoDMBp`<\\ngNpHAxITuUU@aupqSdmVwjCoDMBp`>\\ngNpHAxITuUU@aupqUdmVwjCoDMBp`<\\ngNpHAxITuUU@aupqUdmVwjCoDMBp`>\\ngNpHAxIUMA@AoUw]H[m{@=\\ngNpHAxIUMM@AtPitZypRF{^p=\\ngNpHAxIUMM@AtPitZ}W\\\\Danwl=\\ngNpHAxIUMMA@atPirZ}W\\\\Danwl+\\ngNpHAxIUMMA@atPirZ}W\\\\Danwl-\\ngNpHGPYICHETAulfm\\\\sZvPtH=\\ngNpIABBTjfj`@zHTzM^hNBPw[v=\\ngNpIABBTjfj`@zHUZM^hNBPw[v=\\ngNpIAxBTjZjj@zxXirVk[u^wbFaXP\\ngNpIAxBTjZjj`PzxXirVk[uAwbFaXP<\\ngNpIAxBTjZjj`PzxXirVk[uAwbFaXP>\\ngNpIAxBTjfj`@zHTyK^hNBPwkz=\\ngNpIAxBTjfj`@zHTyM^hNBPw[v=\\ngNpIAxBTjfj`@zHTyM^hNBPwkz=\\ngNpIAxBTjfj`@zHTzM^hNBPw[v=\\ngNpIAxBTjfj`@zHTzM^hNBPw[z\\ngNpIAxBTjfj`@zHTzM^hNBPwkz=\\ngNpIAxBTjfj`@zHTzMgAcV}P\\\\Danwt\\ngNpIAxBTjfj`@zHUZK^hNB_W[v=\\ngNpIAxBTjfj`@zHUZM^hNBPw[v=\\ngNpIAxBTjfj`@zHUZM^hNBPw[z\\ngNpIAxBTjfjf@zxXjtZk[eApREa@\\ngNpIAxBTjfjj@zxXirVk[uApRFaXP\\ngNpIAxBTjfjj@zxXirZk[uApRFaXP\\ngNpIMP[ldadBj@zNRu[^sZvPtKB=\\ngNpIMP[ldadBj@zNRu]^sjzPtKB=\\ngNpIMP[ldadBj@zNRv]^sZvPtKB=\\ngNpIMP[ldadBj@zNRv]^sjzPtKB=\\ngNpIMP[ldadBj@zNSV]^sZvPtKB=\\ngNpIMP[ldadBj@zNSV]^sjzPtKB=\\ngNpIMP[ldadBj@zNSV]dqSdm{MkiCPlH\\ngNpL@DIpK`dsUMPGQdfk[t[vszaXP\\ngNpL@VSDVIddaeT@GRBZ~H[m{@=\\ngNpL@VSDVIddaeT@GRBZ~H[m}@\\ngNpL@xIpsadTaeT@GTc^cr}oW[v=\\ngNpL@xQpSaddaeT@GRBZ}gexanwl=\\ngNpL@xQpSaddaeT@GRBZ}gexaoWw|dCB=\\ngNpL@xQpSaddaeUPGUCdmVwl|oDMBp\\x7Fd`XP\\ngNpL@xUp[`eTuUPGUCENRwjC`dM|\\x7F@\\ngNpLABIps`dsUUTbGUbdmVwN|PtKB<\\ngNpLABIps`dsUUTbGUbdmVwN|PtKB>\\ngNpLADJHtQdTaeUPGQbVskjaXP\\ngNpLAHJPtadTaeT@GTc]W[v=\\ngNpLAHJPtadTaeT@GTc]W[z\\ngNpLAHJPtadTaeT@GTc]Wkz=\\ngNpLAHJPtadTaeTpGQbVk[j}XP\\ngNpLAHJPtadTaeTpGQbVk[qa@\\ngNpLAHJPtadTaeTpGQbVkkqa@\\ngNpLAHJPtadTaeTpGRbZzoWl\\ngNpLAHJPtadTaeTpGRbZzoWt\\ngNpLAHJPtadTaeUPGQbVk[jaXP\\ngNpLAHJPtadTaeUTJGQbVk[ja_`<\\ngNpLAHJPtadTaeUTJGQbVkkjaXP<\\ngNpLAHJPtadTaeUTJGQbVkkjaXP>\\ngNpLAxIps`dsUUTbGUbdmVwN|PtKB<\\ngNpLAxIps`dsUUTbGUbdmVwN|PtKB>\\ngNpLaxKpw`itiLtuTAuXiMYusoDMBp`\\ngNpMAxZ`M@IRjZjhCjabfk[uAwczaX_rRNH\\ngNpMAxZ`M@IRjZjjACjabfk[eAwjEa\\x7FIHx`<\\ngNpMAxZ`M@IRjZjjACjabfk[eAwjEa\\x7FIHx`>\\ngNpP@cTfzZj@zt\\\\moFD\\ngNpXHmQxYIIXuUBau`e[^LH<\\ngNpXHmQxYIIXuUBau`e[^LH>\\ngNpXHmQxYIIXuUBau`e]^LH<\\ngNpXHmQxYIIXuUBau`e]^LH>\\ngNp`@TfZZj@zlTyjv~pZEa@\\ngNp`@TfZZj@zlTzjv~pZEa@\\ngNp`@TfZZjb`zlTyjv~pZE~@<\\ngNp`@TfZZjb`zlTyjv~pZE~@>\\ngNp`@TfZZjb`zlTyjwIbgI[{AhVD>\\ngNp`@TfZZjb`zlTyjwNbdm}`tKB<\\ngNp`@TfZZjb`zlTyjwNbdm}`tKB>\\ngNp`@TfZZjb`zlTyjwNbdm}`tK|>\\ngNp`@TfZZjb`zlTyjwNbdm}oTKB<\\ngNp`@TfZZjb`zlTyjwNbdm}oTKB>\\ngNp`@TfZZjb`zlTyjwNbfm}`tK|<\\ngNp`@TfZZjb`zlTyjwNbfm}`tK|>\\ngNp`@TfZZjb`zlTyj{Nbfm}`tKB<\\ngNp`@TfZZjb`zlTzjwNbdm}`tKB<\\ngNp`@TfZZjb`zlTzjwNbdm}`tKB>\\ngNp`@TfZZjb`zlTzjwNbfm}`tK|<\\ngNp`@Tfzfjf`zlTyjwNbdmuPlH>\\ngNp`@dfnj`@zTRwqC]oX=\\ngNp`@dfnj`@zTRwqC]oh\\ngNp`@dfnj`@zTRwq}]oX=\\ngNp`@dfnj`@zTRyr\\\\uobF{_P\\ngNp`@dfnj`@zTRyr\\\\uocz{_P\\ngNp`@dfnj`@zTSWqC]oX=\\ngNp`@dfnj`dPzTRypTuobF{_P>\\ngNp`@dfnjf@zl\\\\ejwNSdmtPlH\\ngNp`@dfnjj@zl\\\\ejv~HZEa@\\ngNp`@dfnjj@zl\\\\ejwISdm[xahVD\\ngNp`@dfnjjTV`zl\\\\ejwNBdm|PtKB<\\ngNp`@dfnjjTV`zl\\\\ejwNBdm|PtKB>\\ngNp`@dfnjjdPzl\\\\ejwMBgIZwqCPlH<\\ngNp`@dfnjjdPzl\\\\ejwMBgIZwqCPlH>\\ngNp`@dfnjjfPzl\\\\ejwICEM[xahWx<\\ngNp`@dfnjjfPzl\\\\ejwNSdm|PtKB<\\ngNp`@dfnjjfPzl\\\\ejwNSdm|PtKB>\\ngNp`@dfzZj@zl\\\\ejv~HZEa@\\ngNp`@dfzZj@zl\\\\ejv~HZEa\\x7FIXd`\\ngNp`@dfzZj@zl\\\\ejv~HZEa\\x7FKXdt`\\ngNp`@dfzZj@zl\\\\ejv~HZE~@\\ngNp`@dfzZj@zl\\\\ejv~H[y~@\\ngNp`@dfzZj@zl\\\\ejwIbgI[xahVD\\ngNp`@dfzZj@zl\\\\ejwNbgM|PtKB\\ngNp`@dfzZj@zl\\\\ejz~HZEa@\\ngNp`@dfzZj@zl\\\\elz~HZEa@\\ngNp`@dfzZjfPzl\\\\ejv~HZE~\\x7FIXt`<\\ngNp`@dfzZjfPzl\\\\elv~HZE~@<\\ngNp`@dfzZjfPzl\\\\elv~HZE~@>\\ngNp`@dfzjj@zl\\\\ejv~HZEa@\\ngNp`@dfzjjdPzl\\\\ejwNBgM|PtKB>\\ngNp`ATffjjTRPzlTyJv~pSya@<\\ngNp`ATffjjTRPzlTyJwMCEIZwvBPlH<\\ngNp`ATffjjTRPzlTyJwMCEIZwvBPlH>\\ngNp`ATffjjTRPzlTyJwNbfm}`dKB<\\ngNp`ATffjjTRPzlTyJwNbfm}`dKB>\\ngNp`ATffjjTRPzlTyJwNbfm}`dK|<\\ngNp`ATffjjTRPzlTyJwNbfm}`dK|>\\ngNp`ATffjjTRPzlTyJwNbfm}`gsB>\\ngNp`ATffjjTRPzlTyJwNbfm}oGsB>\\ngNp`ATffjjTRPzlTyJwNcfm}`gsB<\\ngNp`ATffjjTRPzlTyJwNcfm}`gsB>\\ngNp`ATffjjTR`zlTyJwICEM[{AHVD>\\ngNp`ATffjjTR`zlTyJwNbdm}`dKB<\\ngNp`ATffjjTR`zlTyJwNbfm}`dKB<\\ngNp`ATffjjTR`zlTyJwNbfm}`dKB>\\ngNp`ATffjjTR`zlTyJwNbfm}`dK|<\\ngNp`ATffjjTR`zlTyJwNcfm}`gsB<\\ngNp`ATffjjTR`zlTyLv~pREa@<\\ngNp`ATffjjTR`zlTyLz~pREa@>\\ngNp`ATffjjb`zlTyJv~pREa@<\\ngNp`ATffjjb`zlTyJv~pREa@>\\ngNp`ATffjjb`zlTyJv~wcya@<\\ngNp`ATffjjb`zlTyJwIbgM[{AHVD>\\ngNp`ATffjjb`zlTyJwNCFm}`dKB<\\ngNp`ATffjjb`zlTyJwNCFm}`dKB>\\ngNp`ATffjjb`zlTyJz~pREa@>\\ngNp`ATffjjb`zlTzLv~pREa@<\\ngNp`ATffjjb`zlTzLv~pREa@>\\ngNpa@erS]MU@]VNRu[_DMBp`\\ngNpa@erS]MU@]VNRu[_DMBp\\x7FdlRP\\ngNpa@erS]MU@]VNSV]_DMBp`\\ngNpdH`DTHrRPqZjYCharYm|PwsB<\\ngNpdH`DTHrRPqZjYCharYm|PwsB>\\ngNpdJqHJPRZzjXCkQrV|HP\\ngNpdJqHJPRZzjXCkQrV|O`\\ngNpdJqHJPRZzjXCkQrZ|HP\\ngNpeE`DSpGYEHYMAHauHwUv}`+\\ngNphH`DYIHXm@At`eobF{^p=\\ngNphH`DYIHXm@At`eobF{_P\\ngNphH`DYIHXm@At`eocz{^p=\\ngNphH`DYIHXm@At`eocz}_P=\\ngNphH`DYIHXm@At`fobF{^p=\\ngNphH`DYIHXm@At`fobF{_P\\ngNphH`DYIHXm@At`fobF}_P=\\ngNphH`DYIHXm@At`fsdyk_DMv~`\\ngNphH`DYIHXmLAuPyMUmtPlH\\ngNphH`DYIHXmLAuPyMUm|PwkB\\ngNphH`DYIHXmLAuPyMUutPlH\\ngNphH`DYIHXmLAuPyMUu|PwkB\\ngNphH`DYIHXmLAu`zK_DMz~`\\ngNphH`DYIHXmLAu`zM_DMz~`\\ngNphH`DYIHXmTAuPyKUm|PtKB\\ngNphH`DYIHXmTAuPyMUm|PtKB\\ngNphH`DYIHXmULauPyKUn\\\\gI[xahVD<\\ngNphH`DYIHXmULauPyKUn\\\\gI[xahVD>\\ngNphH`DYIHXmULauPyMUm|PtK|<\\ngNphH`DYIHXmULauPyMUu|PtKB<\\ngNphH`DYIHXmULauPyMUu|PtKB>\\ngNphH`VYIHYU@At`fobF{^p=\\ngNphH`xYIHYU@At`eobF{^p=\\ngNphH`xYIHYU@At`fobF{^p=\\ngNphH`xYIHYU@At`fobF{_P\\ngNphH`xYIHYU@At`fobF}_P=\\ngNphH`xYIHYUTAuPyKUm|PtKB\\ngNphHaxYIHXuA@at`eobF{^p+\\ngNphHaxYIHXuA@at`eobF{^p-\\ngNphHaxYIHXuA@at`fobF{^p+\\ngNphHaxYIHXuA@at`fobF{^p-\\ngNphJpDIMMULAtXirVzpRD\\ngNphJqHIMMULAtXirVzpRD\\ngNphJqbIMMULAtXirVzpRD\\ngNpi@iPSdfnj`@zTSWqC]oX=\\ngNpi@iPSdfnj`@zTSWqC^oh=\\ngNplJqDJHtQdTaeTpGRbT\\ngNplJqHJPtadTaeTpGRbT\\ngNpmJqDJHtP~rJPrjXCiQJ\\ngNpmJqHJPt`~rJPrjXCiQJ\\ngNq@@dju\\\\@GTc]W[v=\\ngNq@@dju\\\\@GTc]W[z\\ngNq@@dsSUPGSbgIZmn\\\\DahVD\\ngNq@@dsSUPGSbgIZmn\\\\DahWx\\ngNq@@dsSUPGSbgIZmn]xahVD\\ngNq@@dsSUPGSbgIZmrXirVypRFaXP\\ngNq@@dsSUPGSbgIZmrXirVywbFaXP\\ngNq@@dsSUPGSbgIZmshik\\\\xICPop\\ngNq@@dsSUPGSbgIZmshik\\\\{qCPop\\ngNq@@dsSUPGSbgIZmshis\\\\xICPlH\\ngNq@@dsSUPGSbgIZmshis\\\\{qCPlH\\ngNq@@dsSUPGSbgIZnn\\\\DahVD\\ngNq@@dsSUPGSbgIZnn]xahVD\\ngNq@@dsSUPGSbgIZnshik\\\\xICPlH\\ngNq@@dsSUPGSbgI[Nn\\\\DahVD\\ngNq@@dsSUPGSbgQZmn\\\\DahVD\\ngNq@@dsSUPGSbgQZmn\\\\DahWx\\ngNq@@dsSUPGSbgQZmshik\\\\xICPop\\ngNq@@dsSUPGSbgQZmshis\\\\xICPlH\\ngNq@@dsSUPGSbgQZnn\\\\DahVD\\ngNq@@dsSUTRGSbgIZmrXisVypRFa_`<\\ngNq@@dsSUTRGSbgIZmrXisVypRFa_`>\\ngNq@@dsSUTRGSbgIZmrXisVywbFa_`<\\ngNq@@dsSUTRGSbgIZmrXisVywbFa_`>\\ngNq@@dsSUTRGSbgIZmshis\\\\xICPop<\\ngNq@@dsSUTRGSbgIZmshis\\\\xICPop>\\ngNq@@dsSUTRGSbgIZmshis\\\\{qCPop<\\ngNq@@dsSUTRGSbgIZnshis\\\\xICPlH<\\ngNq@@dsSUTRGSbgIZnshis\\\\xICPlH>\\ngNq@@dsSUTRGSbgQZmshis\\\\xICPop>\\ngNq@@dsSUTRGSbgQZnshis\\\\xICPlH<\\ngNq@@dsUURbRGSbgIZmsPqSfms`dMB\\x7F@<\\ngNq@@dsUURbRGSbgIZmshis\\\\xICPop<\\ngNq@@dsUURdRGSbgIZmshiK\\\\xIC_Op>\\ngNq@@dsUURdRGSbgIZmshis\\\\xICPop<\\ngNq@@dsUURdRGSbgIZmshis\\\\xICPop>\\ngNq@@dsUURdRGSbgIZnshis\\\\xICPlH<\\ngNq@@dsUUTbGSbgIZmn\\\\DahVD<\\ngNq@@dsUUTbGSbgIZmn\\\\DahVD>\\ngNq@@dsUUTbGSbgIZmn\\\\DahWx>\\ngNq@@dsUUTbGSbgIZmrPqSfypRFaXP<\\ngNq@@dsUUTbGSbgIZmrXirVypRFaXP<\\ngNq@@dsUUTbGSbgIZmrXirVypRFaXP>\\ngNq@@dsUUTbGSbgIZmrXirVywbFaXP<\\ngNq@@dsUUTbGSbgIZmrXirVywbFaXP>\\ngNq@@dsUUTbGSbgIZmsPqSdms`dMBp`<\\ngNq@@dsUUTbGSbgIZmsPqSdms`dMBp`>\\ngNq@@dsUUTbGSbgIZms`qs\\\\xICPlH<\\ngNq@@dsUUTbGSbgIZmshik\\\\xICPop<\\ngNq@@dsUUTbGSbgIZmshik\\\\xICPop>\\ngNq@@dsUUTbGSbgIZmshis\\\\xICPlH<\\ngNq@@dsUUTbGSbgIZmshis\\\\xICPlH>\\ngNq@@dsUUTbGSbgIZmshis\\\\{qCPlH<\\ngNq@@dsUUTbGSbgIZmshis\\\\{qCPlH>\\ngNq@@dsUUTbGSbgIZnshik\\\\xICPlH>\\ngNq@@dsUUTbGSbgQZmn\\\\DahVD<\\ngNq@@dsUUTbGSbgQZmn\\\\DahVD>\\ngNq@@dsUUTbGSbgQZms`qk\\\\xICPop>\\ngNq@@dsUUTbGSbgQZms`qs\\\\xICPlH<\\ngNq@@dsUUTbGSbgQZms`qs\\\\xICPlH>\\ngNq@@dsUUTbGSbgQZmshis\\\\xICPlH>\\ngNq@@dtuT@GVcdms`dMv}`=\\ngNq@@dtuT@GVcdms`dMv}\\x7Fdd\\\\P=\\ngNq@@dtuT@GVcdms`dMv~`\\ngNq@@dtuT@GVcdmsoGuv~`\\ngNq@@dtuT@GVcdn\\\\FM[gAH[m}@\\ngNq@@dtuT@GVchus`dMv}`=\\ngNq@@dtuT@GVchus`dMv~`\\ngNq@@dtuT@GVchus`dMz~`=\\ngNq@@dtuT@GVchvSENZwNBPw[z\\ngNq@@dtuT@GVchvVFJ\\\\ek\\\\xIC^oh=\\ngNq@@dtuT@GVchv\\\\FM[gAH[m}@\\ngNq@@dtuTDbGVcdms`guv}`+\\ngNq@@dtuTDbGVcdms`guv}`-\\ngNq@@dtuTDbGVcdms`guv}\\x7Fdd\\\\P-\\ngNq@@dtuTDbGVcdn]EM[gAH[m}@<\\ngNq@@dtuTDbGVcdn]EM[gAH[m}@>\\ngNq@@dtuTDbGVcdn]GM[gAOkm}@<\\ngNq@@dtuTDbGVcdn]GM[gAOkm}@>\\ngNq@@dtuTDbGVcdus`dMv}`+\\ngNq@@dtuTDbGVcdus`dMv}`-\\ngNq@@dtuTDbGVcdus`dMv~`<\\ngNq@@dtuTDbGVcdus`dMv~`>\\ngNq@@dtuTDbGVcdv]EM[gAH[m}@<\\ngNq@@dtuTDbGVcdv]EM[gAH[m}@>\\ngNq@@dtuTDbGVcdv]GI[gAH[u}@<\\ngNq@@dtuTDbGVcdv]GI[gAH[u}@>\\ngNq@@dtuTDbGVcdv]GM[gAH[m}@<\\ngNq@@dtuTDbGVcdv]GM[gAH[m}@>\\ngNq@@dtuTDbGVchms`guv}`+\\ngNq@@dtuTDbGVchms`guv}`-\\ngNq@@dtuTDbGVchvRFJZwNBPw[z<\\ngNq@@dtuTDbGVchvRFJZwNBPw[z>\\ngNq@@dtuTDbGVchv]EM[gAH[m}@<\\ngNq@@dtuTDbGVchv]EM[gAH[m}@>\\ngNq@@dtuTpGSbgIZmolDaXP\\ngNq@@dtuTpGSbgIZmrpqSdm[{AHVD\\ngNq@@dtuTpGSbgIZmsXirVm}`dKB\\ngNq@@dtuTtbGSbgIZmsXirVm}`gsB<\\ngNq@@dtuTtbGSbgIZmshiK\\\\xIC^lH<\\ngNq@@dtuTtbGSbgIZmshik_XIBp`<\\ngNq@@dtuTtbGSbgIZmshik_XIBp`>\\ngNq@@dtuTtbGSbgIZmshik_XIB\\x7F@<\\ngNq@@dtuTtbGSbgIZmshyk_XI|p`<\\ngNq@@dtuUPGSbgIZmn\\\\DahVD\\ngNq@@dtuUPGSbgIZmn\\\\DahVG|dSR\\ngNq@@dtuUPGSbgIZmrpqSdm[gAHZEa@\\ngNq@@dtuUPGSbgIZmsXirVms`dMBp`\\ngNq@@dtuUPGSbgI[Nn\\\\DahVD\\ngNq@@dtuURbRGSbgIZmrPqRVypRFaXP<\\ngNq@@dtuURbRGSbgIZmrXiKVypRFa_orQMH<\\ngNq@@dtuURbRGSbgIZmrXiKVypRFa_orQMH>\\ngNq@@dtuURbRGSbgIZmshiK\\\\xICPlH<\\ngNq@@dtuURbRGSbgIZmshiK\\\\xICPlH>\\ngNq@@dtuURbRGSbgIZmshik\\\\xICPop<\\ngNq@@dtuURbRGSbgIZmshik\\\\xICPop>\\ngNq@@dtuURbRGSbgIZmshyK\\\\xI}PlH<\\ngNq@@dtuURbRGSbgIZmshyK\\\\xI}PlH>\\ngNq@@dtuURbRGSbgIjmshyK\\\\xICPlH>\\ngNq@@dtuURbRGSbgIjnn\\\\DahVD<\\ngNq@@dtuURbRGSbgIjnn\\\\DahVD>\\ngNq@@dtuURbTGSbgIZmrPqRVypRFaXP<\\ngNq@@dtuURbTGSbgIZmsPqRVms`dMB\\x7F@<\\ngNq@@dtuURbTGSbgIZmsPqRVms`dMB\\x7F@>\\ngNq@@dtuURbTGSbgIZmshiK\\\\xICPlH<\\ngNq@@dtuURbTGSbgIZmshiK\\\\xICPlH>\\ngNq@@dtuURbTGSbgIZmshik\\\\xICPop<\\ngNq@@dtuURbTGSbgIZmshik\\\\xICPop>\\ngNq@@dtuURbTGSbgIZmshik\\\\xICPowyIGD>\\ngNq@@dtuURbTGSbgIZmshyK\\\\xI}PlH>\\ngNq@@dtuURbTGSbgIZnshiK\\\\xICPlH<\\ngNq@@dtuURbTGSbgIjmshiK\\\\xICPlH<\\ngNq@@dtuURbTGSbgIjmshiK\\\\xICPlH>\\ngNq@@dtuURbTGSbgIjnn\\\\DahVD>\\ngNq@@dtuUTRGSbgIZmn\\\\DahWx<\\ngNq@@dtuUTRGSbgIZmrXirVypRFaXP<\\ngNq@@dtuUTRGSbgIZmrXirVypRFaXP>\\ngNq@@dtuUTRGSbgIZmsXirVms`dMB\\x7F@<\\ngNq@@dtuUTRGSbgIZmsXirVms`dMB\\x7F@>\\ngNq@@dtuUTRGSbgIZms`qK\\\\xICPlH<\\ngNq@@dtuUTRGSbgIZms`qK\\\\xICPlH>\\ngNq@@dtuUTRGSbgIZms`qk\\\\xICPop>\\ngNq@@dtuUTRGSbgIZnn\\\\DahVD<\\ngNq@@dtuUTRGSbgIZnn\\\\DahVD>\\ngNq@@dtuUTRGSbgQjnn\\\\DahVD<\\ngNq@@dtuUTRGSbgQjnn\\\\DahVD>\\ngNq@@dtuUTbGSbgIZmn\\\\D~hVD>\\ngNq@@dtuUTbGSbgIZmrXiKVypRFaXP<\\ngNq@@dtuUTbGSbgIZmrXiKVypRFaXP>\\ngNq@@dtuUTbGSbgIZmrXyKVypSzaXP<\\ngNq@@dtuUTbGSbgIZmrXyKVypSzaXP>\\ngNq@@dtuUTbGSbgIZmsPqRVms`dMBp`<\\ngNq@@dtuUTbGSbgIZmsPqRVms`dMBp`>\\ngNq@@dtuUTbGSbgIZmsXirVms`guBp`<\\ngNq@@dtuUTbGSbgIZmsXirVms`guBp`>\\ngNq@@dtuUTbGSbgIjmn\\\\DahVD<\\ngNq@@dtuUTbGSbgIjmn\\\\DahVD>\\ngNq@@dtuUTbGSbgIkNn\\\\DahVD>\\ngNq@@dwTuPGSbgIZmnUtahVD\\ngNq@@dwTuPGSbgIZmobFaXP\\ngNq@@dwTuPGSbgIZmshis\\\\kiCPlH\\ngNq@@dwTuPGSbgIZmshis_DMBp`\\ngNq@@dwTuPGUedmVwhvmdMBp`\\ngNq@@dwTuPGUedmWWhvmdMBp`\\ngNqDJDR^BSSMT`]FJmFn\\\\Danwl\\ngNqDJHaQBSWUS@]FNRnnbEa@\\ngNqDJIARBSWUUSP]FNRmsdyk]GsB<\\ngNqHB@aInij`NcKMgWHvmtKB\\ngNqHB@aInijihNcKMWWHvmtKB<\\ngNqHB@aInijihNcKMWWHvmtKB>\\ngNqHBLQInijihNkENZmshiK_KmBp`<\\ngNqHBLQInijihNkENZmshiK_KmBp`>\\ngNqHD@aInij`NkGIZmobFaXP\\ngNqHH@aJnfjhDNfENRu[\\\\xICPlH>\\ngNqHH@aJnfjhDNfENbu[\\\\xICPlH<\\ngNqHH@aJnfjhDNfENbu[\\\\xICPlH>\\ngNqHHGAJkjh@NlGI[gAH[m{@=\\ngNqHHGAJkjh@NlGQkgAH[m{@=\\ngNqHHGAJkjhHDNlGIkgAH[m{@+\\ngNqHHGAJkjhHDNlGIkgAH[m{@-\\ngNqHHGAJkjhHDNlGQ[gAOkm{@+\\ngNqHHGAJkjhHDNlGQ[gAOkm{@-\\ngNqHHGAJkjj`NfENRu[\\\\xICPlH\\ngNqHHGAJkjjhDNfENSU[\\\\xICPlH<\\ngNqHHGAJkjjhDNfENSU[\\\\xICPlH>\\ngNqHHOAJkfh@NlGI[gAH[m{@=\\ngNqHHOAJkfh@NlGI[gAH[m}@\\ngNqHHOAJkfh@NlGQkgAH[m{@=\\ngNqHHOAJkfh@NlGQkgAH[m}@\\ngNqHHOAJkfh@NlGQkgAH[u}@=\\ngNqHHOAJkfh@NlGQlvJ\\\\ek\\\\xIC^oh=\\ngNqHHOAJkfhHDNlGIkgAH[m{@+\\ngNqHHOAJkfhHDNlGIkgAH[m{@-\\ngNqHHOAJkfhHDNlGIkgAH[m}@<\\ngNqHHOAJkfhHDNlGIkgAH[m}@>\\ngNqHHOAJkfhHDNlGQ[gAOkm{@+\\ngNqHHOAJkfhHDNlGQ[gAOkm{@-\\ngNqHHOAJkfi`NfENcU[\\\\xIC^lH\\ngNqHHOAJkfi`NfENcU]\\\\xIC^lH\\ngNqHHOAJkfi`NfENcU]_XIBp`\\ngNqHHOAJkfj`NfENRu[\\\\xICPlH\\ngNqHHOAJkfj`NfENcU[\\\\xICPlH\\ngNqHHOAJkfjhDNfENSU[\\\\xICPlH<\\ngNqHHOAJkfjhDNfENSU[\\\\xICPlH>\\ngNqHHOAJkfjhdNfENcU]\\\\xICPlH<\\ngNqHJIAIijjeDhNkENRmshik_XI|p`>\\ngNqHaJ@SNRZZj@CkQtZypRF}_P=\\ngNqIAJB\\\\dtuT@GVchus`dMv}`=\\ngNqIAJB\\\\dtuT@GVchus`dMz~`=\\ngNqIAJB\\\\dtuTDbGVcdus`dMz~`+\\ngNqIAJB\\\\dtuTDbGVcdus`dMz~`-\\ngNqIHO@ReUuT@GVChus`dMv}`=\\ngNqIHO@ReUuT@GVChus`dMz~`=\\ngNqLJIARFdLbdLjf@ztRmoFD\\ngNqLJIARFdLbdLjf@ztRnoFD\\ngNqLJIARFdLbdLji@ztRmoGt\\ngNqLJIARFdLbdLjja`ztRmoFD<\\ngNqLJIARFdLbdLjja`ztRmoFD>\\ngNqLJIARFdLbdLjja`ztRmoGx<\\ngNqLJIARFdLbdLjja`ztRmoGx>\\ngNqLL@b^BBLbdLZ`dPzd[j{^p+\\ngNqLL@b^BBLbdLZ`dPzd[j{^p-\\ngNq`@ZdsSUPGQbgK\\\\zJZwVBp`\\ngNq`@ZdsSUPGQbgK\\\\zJZwV|p`\\ngNq`@ZdsSUTRGQbgK\\\\zJ\\\\wVBp`<\\ngNq`@bdwSUPGQcfk[jaXP\\ngNq`@bdwSUPGQcfk[j~_`\\ngNq`@bdwSUPGQcfskjaXP\\ngNq`@bdwSUTtGQcfk[ja_`<\\ngNq`@bdwSUTtGQcfk[ja_`>\\ngNq`@bdwSUTtGQcfk\\\\zJRwUBp`>\\ngNq`@bdwSUTtGQcfkkjaXP<\\ngNq`@bdwSUTtGQcfkkjaXP>\\ngNq`@bdwSUTtGQcfs[ja_`<\\ngNq`@bdwSUTtGQcfs[ja_`>\\ngNq`@jduuURbrGQcdk\\\\xJZwQBp`<\\ngNq`@jduuURbtGQcdk\\\\dJ\\\\uncya@>\\ngNq`@jduuUTtGQcdk[haXP<\\ngNq`@jduuUTtGQcdk\\\\yNZwQBp`<\\ngNq`@mdTaeT@GTc]W[v=\\ngNq`AVdtuUPGQbgI\\\\lLTyKVzpRD\\ngNqa@bnR[ijhChqsUmuPlH\\ngNqhHl@cIIKEh@NhFznwl=\\ngNqhHl@cIIKEh@NhFznwt\\ngNqhHlBsIIKJh@NhGNSdmu^ooyHFD\\ngNqhHlGCIIKJh@NhFznwl=\\ngNqhHlGCIIKJh@NhFznwt\\ngNqhHlGCIIKJj`NbDmVwUBp`\\ngNqhHlOCIIKFh@NhFznwl=\\ngNqhHlOCIIKFh@NhFznwt\\ngNqhHlOCIIKFh@NhFzoWt=\\ngNqhHlOCIIKFi`NbDmVwUzp`\\ngNqhHlOCIIKFi`NbDmVwcB\\ngNqhHlOCIIKFi`NbDmWWUzp`\\ngNqhHlOCIIKFj`NbDmVwUBp`\\ngNqhHlOCIIKFjhTNbDmWWUBp`>\\ngNqi@mJB]dTaeT@GTc]W[v=\\ngNqi@mJB]dTaeT@GTc]W[z\\ngNqiHl@c]ddebt@GTC]W[v=\\ngNqiHl@c]ddebt@GTC]W[z\\ngNqiHl@c]ddebt@GTC]Wkz=\\ngNqiHlOC]ddecTDBGTC]W[v+\\ngNqiHlOC]ddecTDBGTC]W[v-\\ngNr@ACTjzjj@zpdmoio[X_v`@\\ngNr@ACTjzjj@zpdnoio[X_v`@\\ngNrDEcPDSpRZYjhCkQRv|X_vb@\\ngNrDHlQxWpRjyjhCkARwNCDmu_LO{Q@\\ngNrHEcQxIMMUTAthjnkm{\\x7FZH\\ngNrHHlPxIUMUTAt`rnkm}\\x7FZP\\ngNrHHlQxIU\\\\uTAtPijvzhVG}h`=\\ngNrHHlQxIU\\\\uTAtPijwIbgI[jaX_vb@\\ngNrHHlQxYIHXETAulu[\\\\sZwPlO{S@=\\ngNrHHlQxYIHXETAulu[gIrVyfunaX_vf@\\ngNrIHlQxRTjnZj@zHTu[]TKC~tP=\\ngNrIHlQxRTjnZj@zHTu[_SmBp\\x7FmD=\\ngNrIXlPxAiJgRYRjZj@CjAnkm{\\x7Fb@[R@=\\ngNr`hZpiJyInfj`NeGO{R@\\ngNt@@TfzBj@zvZmnQm[hVD\\ngNt@@Tfzfj@zLlu[gASfyGUnaXP\\ngNt@@Tfzfj@zLlu[gQSfyFuvaXP\\ngNt@@TjZjj`PzXXiuUn\\\\EN[eApZEa@<\\ngNt@@TjZjj`PzXXiuUn\\\\EN[eApZEa@>\\ngNt@@dfnj`@zTRwqC]oX=\\ngNt@@dfnj`@zTRwq}]oX=\\ngNt@@dfnj`@zTSWqC]oX=\\ngNt@@dfzZj@zl\\\\ejvyGRFaXP\\ngNt@@dfzZj@zl\\\\ejv~HZEa@\\ngNt@@dfzjj@zl\\\\ejv~HZEa@\\ngNt@@dfzjj@zl\\\\ejwICEN[xahVD\\ngNt@ADjzjj@zXTyKUms`dMBp\\x7Fm@\\ngNt@ADjzjj@zhdejv}f}tahVG}h@\\ngNt@ATffjjb`zlTyJz~pREa@>\\ngNtDHpxUpRjZjjQCjabgI[eApRF~@<\\ngNtDHpxUpRjZjjQCjabgI[eApRF~@>\\ngNtDJqHJPRZzj@CiQK_Guv}`=\\ngNtHH`xIUMUTAtpqrVk[gAHZEa\\x7FZP=\\ngNtHH`xYIHYU@At`fobF{^p=\\ngNtHHaxYIHXE@AoYm[H[m{@=\\ngNtH`iPBYrSWUPRH]JIkxanwl+\\ngNtH`iPBYrSWUPRH]JIkxanwl-\\ngNtI@]P[ldadjj@zHlv]gASfygUvaX_v`@\\ngNtI@iPSdfnj`@zTSWqC]oX=\\ngNtIHaxB\\\\ddLj`@zPSWqC]oX=\\ngNtI`]PB]qgIHYFj`NbKMVwLvmtKC~t@\\ngNtI`iPBYreIkjh@NeDu|Pw[v=\\ngNtI`iPBYreIkjj`NkGIZmrTyKV~HZEa@\\ngNtLJqDJHtQdTaeTpGRbT\\ngNtLJqHJPtadTaeT@GTc]W[v=\\ngNtLJqHJPtadTaeTpGRbT\\ngNtLJqHJPtadTaeTpGRbZznwl\\ngNtLJqHJPtadTaeTpGRbZznwt\\ngNtLlQHR`TaNLiM]UTAtXyjwNSdmuPlO{S@\\ngNtLlQHR`TaNLiM]UTAtXyj{NSdmuPlO{S@\\ngNtLlQHR`TaNLiM]UTAthzsdyK]Wk{~tp\\ngNtLlQHR`TaNtiM]U@AuHyr\\\\unkm}\\x7FZX\\ngNtLlQHR`TaNtiM]ULAtXyj{NSdmu^lO{S@\\ngNtLlQHR`TaNtiM]ULAthzsdyK]Wk{~tp\\ngNtMLQHR`TaNRZzjhCiQugIrVzoWw}i`\\ngNtMLQHR`TaNRZzjhCiQugIsVznww}i`\\ngNt`CPdfzZj@zt\\\\moFD\\ngNt`CPdfzZj@zt\\\\moGx\\ngNt`EPTfzZjfPzt\\\\mshiK^LH<\\ngNt`EPTfzZjfPzt\\\\mshiK^LH>\\ngNt`hPiJyInfj`NcGMVwUBp\\x7FdbZ[R@\\ngNt`hPiJyInfj`NcGMVwUBp\\x7FmH\\ngNtdLx`DTHrRRqZdCiAM]W[v\\ngNthJx`DYIHXmLAu`zK_DMv~`\\ngNthLX`DYIHXmTAtPyjvzhVG}i`=\\ngNthLX`DYIHXmTAtPyjwNSdmuPlO{S@\\ngNthLX`DYIHXmTAt`znkm{\\x7FZX=\\ngNthMX`DYIHXmTAtPyLvzHVG}i`\\ngNthMX`DYIHXmTAtPyLvzHW{}i`\\ngNthMX`DYIHXmTAu`zM_DMv~\\x7FmL\\ngNthMX`DYIIXm@Au@wUv}`\\ngNthejqHJWrSSUSRH]ZJRwaC~tP<\\ngNthejqHJWrSSUSRH]ZJRwaC~tP>\\ngNtiLPiPSdfnjj@zT]Yr\\\\enku}\\x7FZX\\ngNtiLPiPSdfnjjdPzT]YhTyKVzoWw}i`-\\ngNu@DPdwSUPGQcfk[jaXP\\ngNu@DPdwSUPGQcfk[jaX_rQMH\\ngNu@DPdwSUPGQcfk\\\\zJ\\\\wUBp`\\ngNu@DPdwSUTtGQcfk\\\\fJ\\\\enjEa@<\\ngNu@DPdwSUTtGQcfk\\\\fJ\\\\enjEa@>\\ngNu@DPdwSUTtGQcfk\\\\zJRwUBp`<\\ngNu@DPdwSUTtGQcfk\\\\zJRwUBp`>\\ngNu@DPdwSUTtGQcfkkjaXP<\\ngNu@DPdwSUTtGQcfkkjaXP>\\ngNuHDz@aIkjiiDNmGI\\\\dLTuoBD<\\ngNuHDz@aIkjiiDNmGI\\\\dLTuoBD>\\ngNuHDz@aIkjiiDNmGI\\\\zJZwaB<\\ngNuHEhOCIIKFh@NhFznwl=\\ngNx@@dju\\\\@GTc]W[v=\\ngNx@@dsSUPGSbgIZmn\\\\DahVD\\ngNx@@dsSUPGSbgIZmshis\\\\xICPlH\\ngNx@@dsSUPGSbgQZmn\\\\DahVD\\ngNx@@dsSUPGUddmVwhwmdMBp`\\ngNx@@dsSUPGUddmVwhwndMBp`\\ngNx@@dsUUTbGSbgIZmn\\\\DahVD<\\ngNx@@dsUUTbGSbgIZmn\\\\DahVD>\\ngNx@@dsUUTbGSbgIZmrPqSfypRFaXP<\\ngNx@@dsUUTbGSbgIZmsPqSdms`dMBp`<\\ngNx@@dsUUTbGSbgIZmsPqSdmsoDMBp`<\\ngNx@@dsUUTbGSbgIZmsPqSdmsoDMBp`>\\ngNx@@dsUUTbGSbgIZms`qs\\\\xICPlH<\\ngNx@@dsUUTbGSbgIZms`qs\\\\xICPlH>\\ngNx@@dsUUTbGSbgIZmshis\\\\xICPlH>\\ngNx@@dsUUTbGSbgQZmn\\\\DahVD<\\ngNx@@dsUUTbGSbgQZmn\\\\DahVD>\\ngNx@@dsUUTbGSbgQZmsPqSdms`dMBp`<\\ngNx@@dsUUTbGSbgQZms`qs\\\\xICPlH<\\ngNx@@dsUUTbGSbgQZms`qs\\\\xICPlH>\\ngNx@@dtuT@GVcdms`dMv}`=\\ngNx@@dtuT@GVcdms`dMv~`\\ngNx@@dtuT@GVcdn\\\\FM[gAH[m}@\\ngNx@@dtuT@GVchus`dMv}`=\\ngNx@@dtuT@GVchus`dMv~`\\ngNx@@dtuT@GVchvSENZwNBPw[z\\ngNx@@dtuTDbGVcdms`guv}`+\\ngNx@@dtuTDbGVcdms`guv}`-\\ngNx@@dtuTDbGVcdn]EM[gAH[m}@<\\ngNx@@dtuTDbGVcdn]EM[gAH[m}@>\\ngNx@@dtuTDbGVcdus`dMv}`+\\ngNx@@dtuTDbGVcdus`dMv}`-\\ngNx@@dtuTDbGVchv]EM[gAH[m}@<\\ngNx@@dtuTDbGVchv]EM[gAH[m}@>\\ngNx@@dtuTpGSbgIZms`qK\\\\xIC^lH\\ngNx@@dtuTtbGQbkIkgAH[m}@>\\ngNx@@dtuUPGSbgIZmn\\\\DahVD\\ngNx@@dtuUPGSbgIZmrpqSdm[gAHZEa@\\ngNx@@dtuURbRGSbgIZmshiK\\\\xICPlH>\\ngNx@@dtuURbTGSbgIZmshiK\\\\xICPlH>\\ngNx@@dtuUTRGSbgIZms`qK\\\\xICPlH<\\ngNx@@dtuUTRGSbgIZnn\\\\DahVD<\\ngNx@@dtuUTRGSbgIZnn\\\\DahVD>\\ngNx@@dtuUTbGSbgIZmrXiKVypRFaXP<\\ngNx@@dtuUTbGSbgIZmrXiKVypRFaXP>\\ngNx@@dtuUTbGSbgIZmsPqRVms`dMBp`<\\ngNx@@dtuUTbGSbgIZmsPqRVms`dMBp`>\\ngNx@@dtuUTbGSbgIjmn\\\\DahVD<\\ngNx@@dtuUTbGSbgIjmn\\\\DahVD>\\ngNx@@dwPUPGQrVk[t[VrFaXP\\ngNx@@dwPUPGQrVk\\\\zJ\\\\whvndMBp`\\ngNx@@dwPUPGQrVkkt[VrFaXP\\ngNx@@dwTuPGSbgIZmobFaXP\\ngNx@@dwTuPGSbgIZmshis\\\\kiCPlH\\ngNx@@dwTuPGUedmVwhvmdMBp`\\ngNx@@dwTuPGUedmVwhvndMBp`\\ngNx@@dwTuPGUedmVwhzmdMBp`\\ngNx@@dwTuPGUedmVypTyoQu]HZEa@\\ngNx@@dwTuPGUedmVytTyoQm]HZEa@\\ngNx@@dwTuPGUedmWWhvmdMBp`\\ngNx@@dwTuPGUedmWWhvndMBp`\\ngNx@@dwTuPGUedmgWhvmdMBp`\\ngNx@@dwTuPGUedmgWhvndMBp`\\ngNx@@dwTuPGUedugWhvmdMBp`\\ngNx@@eSUUPGUEDmVwjwmdMBp\\x7Fm@=\\ngNx@@eSUUPGUEDmVwjwndMBp\\x7Fm@\\ngNx@@eSUUPGUEDmVwj{ndMBp\\x7Fm@=\\ngNx@@eSUUPGWCENRu[^hNBPtKB\\ngNx@@eSUUPGWCENRu[^hNBPtKC~t@=\\ngNx@@eSUUPGWCENRu[^hN|PtKC~t@\\ngNx@@eSUUPGWCENRu[gASf}P]xahVG}h@\\ngNx@@eSUUPGWCENRu[gAcf}P\\\\DahVG}h@\\ngNx@@eSUUPGWCENRu]gAcV}P\\\\DahVG}h@\\ngNx@@eSUUPGWCENbu[^hNBPtKC~t@\\ngNx@@eSUUPGWCENcV]^hNBPtKC~t@\\ngNx@@eSUUTBGWCENRu[gASf}P]xahVD<\\ngNx@@eSUUTBGWCENRu[gASf}P]xahVD>\\ngNx@@eSUUTBGWCENRu[gAcf}P\\\\DahVD<\\ngNxA@IRZZj@CkQrVypRF{^p=\\ngNxA@IRZZj@CkQtZypRF{^p=\\ngNxA@IRijjhCkabgIZmoTGAHZEa@\\ngNxA@IRijjjACkabgIZms`is^hN|PtKB<\\ngNxA@IRijjjACkabgIZms`is^hN|PtKB>\\ngNxA@IRjZj@ChaSdmz`xIC]oX=\\ngNxA@IRjZjhCkabgIZmoTGAHZEa@\\ngNxA@IRkijhCjbRVk[v[vrFaX_v`@\\ngNxA@IRkijhCjbRVk[v]vrFaX_v`@\\ngNxA@IRkijhCkabgIZmshis\\\\{qCPlO{P@\\ngNxA@IRkijhCkabgQZmrPqrV}g\\\\DahVG}h@\\ngNxDD@b^BSWMPRH]JIkxanwl+\\ngNxDD@b^BSWMPRH]JIkxanwl-\\ngNxDDDR^BSWMPRH]JIkxanwl+\\ngNxDDDR^BSWMPRH]JIkxanwl-\\ngNxDHDQHbS]UU@]VNRu[_DMBp`\\ngNxDHGBnBUSUURH]LLTyJz}P\\\\DaofD<\\ngNxDHGBnBUSUURH]LLTyJz}P\\\\DaofD>\\ngNxDHOANBS]UU@]VNRu[^cr|PtKC~RAamH\\ngNxDHOA^BS]UU@]VNRu[\\\\cqCPlOyHFFt`\\ngNxDHOA^BS]UU@]VNRu[^cr|PtKC~RAamH=\\ngNxDHOA^BS]UU@]VNRu[_DMBp`\\ngNxDHOA^BS]UU@]VNRu[_DMBp\\x7Fd`XP\\ngNxDHOA^BS]UU@]VNRu[_DMBp\\x7Fd`X[R@=\\ngNxDL@aNBSMTu@]VRRu[^c^vPtKB\\ngNxE@jCT@eJfjj`NjFIZmobFaXP\\ngNxEHBqE`eInjjiDNkGIZmnUxahVG|dCB<\\ngNxEHBqE`eInjjiDNkGIZmnUxahVG|dCB>\\ngNxEHOA^DeInfj`NkGIZmnQtahVG|dCCZP\\ngNxEHOA^DeInfj`NkGIZmnUxahVG|dCCZP\\ngNxHAjAJfjj`NfFJRu[\\\\hICPlO{P@\\ngNxHAjAJfjjhDNfFJRu[\\\\hICPlH>\\ngNxHAjAJfjjhDNfFJRu[gAcfyWbFaXP<\\ngNxHAjAJfjjhDNfFJRu[gAcfyWbFaXP>\\ngNxHD@aIkjhIDNeDm|Pw[v-\\ngNxHD@aInfj`NkGIZmobFaXP\\ngNxHD@aInij`NkKIZmoQm[HZEa@\\ngNxHDOAInjjiDNkGIZmnQxahVD>\\ngNxHH@aIfjj`NgENRu[gQSf}GlDahVG}i@\\ngNxHHGAIfjj`NgENRu[\\\\xICPlOyHEFt`\\ngNxHHGAIfjj`NgENRu[^cvBPtKC~RAQmH\\ngNxHHGAIfjj`NgENRu[^cvBPtKC~t`\\ngNxHHGAIfjjiDNgENRu[^cvBPtKB<\\ngNxHHGAIfjjiDNgENRu[^cvBPtKB>\\ngNxHHGAJijj`NnFJ\\\\ejv}P\\\\DahVG}i@=\\ngNxHHGAJkjh@NlGQkgAH[m{@=\\ngNxHHGAJkjj`NfENRu[\\\\xICPlH\\ngNxHHOAJkfh@NlGQkgAH[m{@=\\ngNxHHOAJkfh@NlGQkgAH[m}@\\ngNxHHOAJkfhHDNlGIkgAH[m{@+\\ngNxHHOAJkfhHDNlGIkgAH[m{@-\\ngNxHHOAJkfhHDNlGIkv]pRF}_P+\\ngNxHHOAJkfhHDNlGIkv]pRF}_P-\\ngNxHHOAJkfj`NfENRu[\\\\xICPlH\\ngNxHHOAJnjjhDNfENRu[\\\\{qCPlH<\\ngNxHHOAJnjjhDNfENRu[\\\\{qCPlH>\\ngNxHJIAIiji`NcEVRwN|_W[v\\ngNxHaJ@SNRZZj@CkQrVypRF{^p=\\ngNxHaJ@SNRZZj@CkQtZypRF{^p=\\ngNxHaJ@SNRZZj@CkQtZypRF}_P=\\ngNxHaJ@SNRZZj@CkQt[MbgIZwNBPwkz=\\ngNxHaJ@SNRZZj@CkQt[NCFms`dMv~`\\ngNxHaJ@SNRZZjBQCkQrZypRF{^p+\\ngNxHaJ@SNRZZjBQCkQrZypRF{^p-\\ngNxHaJ@SNRZZjBQCkQrZypRF}_P+\\ngNxHaJ@SNRZZjBQCkQrZypRF}_P-\\ngNxHaJ@SNRZZjBQCkQt[Nbfms`dMv~`<\\ngNxHaJ@SNRZZjBQCkQt[Nbfms`dMv~`>\\ngNxHaJ@SNRZZjjQCiqSdmVyLTek\\\\xICPlH<\\ngNxHaJ@SNRZZjjQCiqSdmVyLTek\\\\xICPlH>\\ngNxHaj@SnrRFPJhChyKUu{MkYCPlO{P@=\\ngNxHaj@SnrRFPJhChyKYu{MkYCPlO{P@=\\ngNxHaj@SnrRFPJhChyKYv]EN[v[WRFaX_v`@\\ngNxHaj@SnrRFPJhChyMYu{MkYCPlO{P@=\\ngNxHaj@SnrRFPJhChyMYu{MkiCPlO{P@\\ngNxHhG@]IR[jZhCiqSdmVwJzPtKC~RAamH\\ngNxIAJB\\\\dtuT@GVchus`dMv}`=\\ngNxIAJB\\\\dtuT@GVchus`dMz~`=\\ngNxIAJB\\\\dtuTDbGVcdus`dMz~`+\\ngNxIAJB\\\\dtuTDbGVcdus`dMz~`-\\ngNxIAjC\\\\dwTuPGUedugWhzmdMBp`\\ngNxIHGBRdwTuPGSbgIZmoQy]HZEa\\x7FI@pvd@\\ngNxIHO@ReUuT@GVChus`dMv}`=\\ngNxIHO@ReUuTDBGVCdus`dMv}`+\\ngNxIHO@ReUuTDBGVCdus`dMv}`-\\ngNxIHOBReUsT@GVChus`dMv}`=\\ngNxIHOB\\\\eUsT@GVChu{NxIC]oX=\\ngNxLHGBnC\\\\Djfjj@zhXirV}P\\\\Daogx\\ngNxLHGBnC\\\\Djnjj@zHTyK\\\\xIC_Op\\ngNxLHGBnChDjfjjdPzhXirVyP\\\\Dao`<\\ngNxLHGBnChDjfjjdPzhXirVyP\\\\Dao`>\\ngNxLHOANF\\\\DfZjjdPzlTejvywbFaXP<\\ngNxLHOANF\\\\DfZjjdPzlTejvywbFaXP>\\ngNxLJHaQFbLbdLj`@zd[j{^p\\ngNxLJIARFdLbdLj`@zd[j{^p\\ngNxLJIARFdLbdLj`@zd[j{_P\\ngNxLJIARFdLbdLjf@zTSWUv}`\\ngNxLJIARFdLbdLjf@zTSWUv~`\\ngNxLJIARFdLbdLjf@ztRmoFD\\ngNxLJIARFdLbdLjf@ztRnoFD\\ngNxLJIARFdLbdLji@zTSWUv}`\\ngNxLJIARFdLbdLji@zTSWUv~`\\ngNxLJIARFdLbdLji@zTSWUz~`\\ngNxLJIARFdLbdLji@ztRm@\\ngNxLJIARFdLbdLji@ztRmoGt\\ngNxLJIARFdLbdLjja`ztRmoFD<\\ngNxLJIARFdLbdLjja`ztRmoFD>\\ngNxMHOANF\\\\IJSMMU@]VJRu[\\\\{qCPlO{R@\\ngNx`BDdwSUPGQcfk[jaXP\\ngNx`BDdwSUPGQcfk[jaX_rQMH\\ngNx`BDdwSUPGQcfk\\\\zJ\\\\wUBp`\\ngNx`BDdwSUPGQcfskjaXP\\ngNx`BDdwSUTtGQcfk[ja_`<\\ngNx`BDdwSUTtGQcfk[ja_`>\\ngNx`BDdwSUTtGQcfk\\\\zJRwUBp`<\\ngNx`BDdwSUTtGQcfk\\\\zJRwUBp`>\\ngNx`BDdwSUTtGQcfkkjaXP<\\ngNx`BDdwSUTtGQcfkkjaXP>\\ngNx`DBdwSUPGQcfk[jaXP\\ngNx`DBdwSUPGQcfk\\\\zJ\\\\wUBp`\\ngNx`DBdwSUTtGQcfk[ja_`<\\ngNx`DBdwSUTtGQcfk\\\\zJRwUBp`>\\ngNx`bDnLiMtuTAtXyjvzhVD\\ngNx`hEIWIMtuTAuXyKUm|PtKC~t`\\ngNx`hEIWIMtuTAuXyKUm|PtK}~t`\\ngNx`hEIWIMtuTAuXyKUu|PtKC~t`\\ngNxaBDYR[ijhChqsUmuPlH\\ngNxdMD@baFRRFKU@]DNSMobF~X_vf@\\ngNxdMD@baFRRFKU@]DNSNobF~X_vf@\\ngNxdMD@baFRRVKT`]HIkj{^p\\ngNxhKD@cIICEh@NdDm|Pw[v\\ngNxhMD@cIICEj`NjGIZmobFaX_vf@=\\ngNxhMD@cIICEj`NjGIZmoczaX_vf@=\\ngNxhMD@cIICEj`NjGIZnobFaX_vf@\\ngNxhMD@cIICEj`NjGIZnsdyk_DMBp\\x7FmL\\ngNxhMD@cIICEj`NjGIjmobFaX_rQMMi`=\\ngNxhMD@cIICEj`NjGIjmobFaX_vf@=\\ngNxhMD@cIICEj`NjGIjmobFa_ovf@\\ngNxhMD@cIICEj`NjGIjmsdyK_DMBp\\x7FmL\\ngNxhMD@cIICEj`NjGIjnobFaX_vf@\\ngNxhMD@cIICEj`NjGIjnsdyk_DMBp\\x7FmL\\ngNxhMD@cIICEj`NjGIkMobFa_ovf@\\ngNxhMD@cIICEj`NlGQ[xaoWw}i`=\\ngNxhMD@cIICEj`NlGQkxanwo}i`=\\ngNxhMD@cIICEj`NlGQkxanww}i`\\ngNxhMD@cIICEj`NlGQkxaoWw}i`=\\ngNxhMD@cIIKEh@NhFznwl=\\ngNxhMD@cIIKEh@NhFznwt\\ngNxhMD@cIIKEh@NhFzoWt=\\ngNxhMD@cIIKEh@NhGNSfmu]oh\\ngNxhMD@cIIKEi`NbDmVyr\\\\enkua@\\ngNxhMD@cIIKEi`NdDv\\\\gI[j}^p\\ngNxhlEJB]iRZzj@CiQM_DMv}\\x7FmL=\\ngNxhlEJB]irJPrj@CjQnkm{@=\\ngNxhlEJB]irJPrj@CjQomz{^p=\\ngNxhlEJB]irJPrj@CjQsdyk]W[z\\ngNxiMD@c]ddebt@GTC]W[v=\\ngNy@BDfZZj@zlTyjv~pZEa@\\ngNy@BDfZZjb`zlTyjwNbdm}`tKB>\\ngNy@BDfZZjb`zlTzjwNbdm}`tKB>\\ngNy@BDfZjjTR`zlTzjwNCDm}`tKB>\\ngNy@BDfZjjdPzlTyjv~pZEa@>\\ngNy@BDfZjjdPzlTyl{NbgM}`tKB<\\ngNy@DDffjjdPz\\\\TyKUn]EI[gAHZEa\\x7FZH<\\ngNy@DDffjjdPz\\\\TyKUn]EI[gAHZEa\\x7FZH>\\ngNy@DDfnj`dPzTRwqC]oX+\\ngNy@DDfnj`dPzTRwqC]oX-\\ngNy@DDfnj`dPzTRwq}]oX-\\ngNy@DDfnj`dPzTRytTuobF{_P>\\ngNy@DDfnj`dPzTSWqC]oX+\\ngNy@DDfnj`dPzTSWqC]oX-\\ngNy@DDfzZj@zl\\\\ejv~HZEa@\\ngNy@DDfzZj@zl\\\\ejv~HZE~@\\ngNy@DDfzZj@zl\\\\ejwNbfm|PtK|\\ngNy@DDfzZj@zl\\\\ejwNbgM|PtKB\\ngNy@DDfzZj@zl\\\\ejz~HZEa@\\ngNy@DDfzZj@zl\\\\ej{Nbfm|PtKB\\ngNy@DDfzZj@zl\\\\elz~HZEa@\\ngNy@DDfzZj@zl\\\\flz~HZEa@\\ngNy@DDfzZjfPzl\\\\ej{NbgM|PtKB<\\ngNy@DDfzZjfPzl\\\\ej{NbgM|PtKB>\\ngNy@DDfzfj@zl\\\\ejv~HZEa@\\ngNy@DDfzfj@zllejv}FulahVD\\ngNy@DDfzjjdPzl\\\\ejv~HZEa@<\\ngNy@HDfZjjdPz\\\\TyKUms`dMBp`<\\ngNy@HDfZjjdPz\\\\TyKUms`dMBp`>\\ngNy@HDfZjjdPz\\\\TyKUn]EN[g^HZEa@<\\ngNy@HDfZjjdPz\\\\TyKUn]EN[g^HZEa@>\\ngNy@HDfZjjdPz\\\\TzKUms`dMBp`<\\ngNy@HDfZjjdPz\\\\TzKUms`dMBp`>\\ngNy@JDffj`@zt\\\\en\\\\Danwl\\ngNy@JDffj`@zt]Fn\\\\Danwl\\ngNy@JDffji@zLUYK\\\\xIC]oX\\ngNy@JDffjjTRPzlTyJwNbfm}`dKB<\\ngNy@JDffjjTR`zlTyJwIcdm[{AOfD<\\ngNy@JDffjjTR`zlTyJwNbfm}`dK|<\\ngNy@JDffjjb`zlTyJv~pREa@<\\ngNy@JDffjjb`zlTyJv~pREa@>\\ngNy@JDffjjb`zlTzLv~pREa@<\\ngNy@JDffjjb`zlTzLv~pREa@>\\ngNy@hAteInij`NgENRu[_DMBp\\x7FmH\\ngNyAHIJSMMU@]NJ\\\\ejwNbgMsoDMBp\\x7FmH\\ngNyDGQDJHRZzjXCkQrWNSfmxP`\\ngNyDGQHJPRZzjXCkQrV|HP\\ngNyDGQHJPRZzjXCkQrV|O`\\ngNyHE@DYICHuU@auPyKUm|PtKB<\\ngNyHE@DYICHuU@auPyKUm|PtKB>\\ngNyHE@DYIHXmA@at`eobF{^p+\\ngNyHE@DYIHXmA@at`eobF{^p-\\ngNyHEAxIU\\\\uTAtPjrVywcz{__vb@\\ngNyHEAxIU\\\\uTAtpitZk[gAHZEa\\x7FZH=\\ngNyHEAxYIHXuA@at`fobF{^p+\\ngNyHEAxYIHXuA@at`fobF{^p-\\ngNyHKAxIU\\\\u@Au`zM\\\\xIC]oX\\ngNyHdIPSeJSSUP@]ZNcYpXun\\\\Danww}h`\\ngNyHdIPSeJSSUS@]FJmFs`qK\\\\xIC^oo{Q@\\ngNyHdIPSeJSWUPRH]JIkxanwl+\\ngNyHdIPSeJSWUPRH]JIkxanwl-\\ngNyHdIPSeJSWUPRH]JIkxanwt<\\ngNyHdIPSeJSWUPRH]JIkxaoWt+\\ngNyHdIPSeJSWUPRH]JIkxaoWt-\\ngNyHdIPSeJSWUPRH]JIlyNZwqC]oh<\\ngNyHdIPSeJSWUPRH]JIlyNZwqC]oh>\\ngNyIDIPSdffjj@z\\\\TzMUv\\\\FI[gAHZEa\\x7FZH\\ngNyIDIPSdfnj`dPzTSWqC^oh+\\ngNyIDIPSdfnj`dPzTSWqC^oh-\\ngNyIDMP[dfzfj@zl\\\\ej{IbgI[e]HZEa@\\ngNyLGQDJHtQdTaeTpGRbT\\ngNyLGQDJHtQdTaeUHGRbT\\ngNyLGQHJPtadTaeTpGRbT\\ngNyLGQHJPtadTaeUHGRbT\\ngNyLGQbKDvIdTaeTpGRbT\\ngNyLcaHR`TaNLyEHYU@AuHyr\\\\enku}\\x7FZD\\ngNyLcaHR`TaNLyEHYU@AuHyr\\\\unkm}\\x7FZD\\ngNyLcaHR`TaNLyEHYULAtXejwNSdmxp\\x7FmB\\ngNyLcaHR`TaNLyEHYULAtXej{NSdmxp\\x7FmB\\ngNyLcaHR`TaNLyEHYULAthfsdyK]Wk{~tH\\ngNy`JDTfzZjfPzt\\\\moFD>\\ngNydMDpDTHrRPqZhCkAr[NSdmtPww{S@\\ngNyhCE`DYIIXmTAtPejwNSdmuPlO{P`\\ngNyhCEaxYIIXuTAtPejvzhVG}hP=\\ngNyhKEaxYIIXuUBau`e[^LH>\\ngNyhKEaxYIIXuUBau`e[^Op>\\ngNyhKEaxYIIXuUBau`e]^LH<\\ngNyhKEaxYIIXuUBau`e]^LH>\\ngNyhMEPDYIHXmTAtPyLvzHVG}i`\\ngNyhbEiPScNQRFUS@]FIZms`yK^LO{P`\\ngNzHHlZGAJijj`NdFUu]oo{R@\\ngN|@@ZeSUUPGVEEu|n{kC~t@=\\ngN|@@bdwSUPGQefk[d[WZEa@\\ngN|@@bdwSUPGQefk\\\\zJ\\\\wHvntKB\\ngN|@@mdTaeT@GTc]W[z\\ngN|DEbHb^FQRFPU@]XmVwJwmtKC~tH=\\ngN|LlZIBTBdIqeIkjj`NmGKlyNRwcC~tp\\ngN|LlZIBTBdIveIkjjPNmGK\\\\yNR\\x7FmL\\ngN|`hZEIWIMtuTAuhy[^LO{R@\\ngN|`hZEIWIMtuTAuhy]^LO{R@\\ngN}HEcAxIU\\\\uTAtPijvzhVG}h`=\\ngN}HEcAxYIIYATAubu[gArVyV}naX_va@\\ngN}HebIPSeJSSUS@]FJZmsXirVmu^lO{Q@\\ngN}HebIPSmJSSUURH]FJZmsXirVmuPlO{Q@+\\ngN}HebIPSmJSSUURH]FJZmsXirVmuPlO{Q@-\\ngN}HebIPSmJSSUURH]JJlvJ\\\\ek]Wk{~tP+\\ngN}HebIPSmJSSUURH]JJlvJ\\\\ek]Wk{~tP-\\ngOp@DjfVjjdEDNnFJ\\\\ejwMBgIZwjCoDMB\\x7F_die`<\\ngOp@DjfVjjdEDNnFJ\\\\ejwMBgIZwjCoDMB\\x7F_die`>\\ngOp@DjfVjjdEHNnFJ\\\\ejwMBgIZwjCoDMB\\x7F_die`>\\ngOp@DjfVjjdEHNnFJ\\\\ejwMCGIZwj}oDMB\\x7F_die`<\\ngOp@DjzfZj`NnFJ\\\\ejv}g\\\\DahVG|dLl\\ngOp@LdadMBj`NcdmVwlvmdMBp\\x7Fdmc`=\\ngOp@LdadMBj`NcdmVwlvmdMB\\x7F_dmc`=\\ngOp@LdadMBj`NcdmVytTuoYm]HZEa\\x7FI[G@\\ngOp@LdadMBj`NcdmWWlvmdMBp\\x7Fdmc`=\\ngOp@LdadMBjidNcdmVwlvmdM|p\\x7Fdmc`+\\ngOp@LdadMBjidNcdmVwlvmdM|p\\x7Fdmc`-\\ngOp@LdadMBjidNcdmWWlvmdM|p\\x7Fdmc`+\\ngOp@LdadMBjidNcdmWWlvmdM|p\\x7Fdmc`-\\ngOpB@xQpSagCIIKHjhHCjAoYy^wku}\\x7FKCSH`=\\ngOpBADQpSagCHiCEjhHCjQnU{^oWw|eLl=\\ngOpL@xQpSaddadUTDAt`foYy^H[u}\\x7FICS@=\\ngOpMAxZ`M@IRj[Fjj@zhXijv}P]x~hVG|dml\\ngOp`@dfzMZj`NkGIZmobFaX_rVqp\\ngOp`@dfzMZj`NkGIZnobFaX_rVqp\\ngOp`@dfzMZjidNkGIZmobF~X_rVqp<\\ngOp`@dfzMZjidNkGIZmobF~X_rVqp>\\ngOp`@dfzMZjidNkGIZnobF~X_rVqp<\\ngOp`@dfzMZjidNkGIZnobF~X_rVqp>\\ngOphH`DYIHYVmU@]TNSU[_DMBp\\x7Fdck`\\ngOq@@dsQkUTAtxitVk[gAHZEa\\x7FI[G@\\ngOq@@eMtUTEIAuhiK\\\\hIC]o_yHYx+\\ngOq@@eMtUUUIAtxirVk[eAHZEa\\x7FICO@<\\ngOq`@bdwQkUUMAtXyjvzhVG|el\\\\<\\ngOt@@TjZkjj`NfFJ]U[gAcfyP\\\\FaX_rQuuh@\\ngOu@DPdwU[UTAtXyjvzhVG|d]\\\\\\ngOx@@eSQmUTAupqSdmVwjC`dMBp\\x7FdmckP@=\\ngOx`hEIWIMtZuU@]VNRu[_DMBp\\x7FdmckR@\\ngOxhMD@cIICJujhCjarZk[xahVG|d]]ZX=\\ngOxhMD@cIICJujjYCjarZk[xahW{|d]]ZX\\ngOy@DDfzMZj`NkGIZmobFaX_rVqp\\ngOy@DDfzMZj`NkGIZnobFaX_rVqp',rsb),m);d=(b&1)==0?null:(n=Erb.v7('26,60,96,180\\n42,68,91,94\\n147,176\\n170,261\\n210,231,244,267\\n59,180\\n26,30,38,55,81,96,118,180\\n0,54,58,90\\n0,55,90\\n0,59,68,73\\n0,57,77,180\\n0,40,90\\n0,31,35,46,68\\n24,29,55,90\\n1,47,51,56,70,75,78,85,88,90\\n12,33,67\\n0,38\\n3,180\\n0,44,61,87,90\\n27\\n0,14,29,35,61,78\\n11,28,33,45,55,57\\n57,61,63,90,145,148,180\\n180\\n0,40,47,51,72,179\\n0,58\\n0,52\\n39,60,76,180\\n51\\n54,59,305\\n47,50,66,311\\n0,4,62\\n63,84,125,163,180\\n2,18,56\\n60,94,178,180\\n52,92,149,178\\n42,82,160\\n42,79,161\\n67,180\\n56,166,180\\n51\\n51\\n61,174,180\\n42\\n0,2,28,174,180\\n46,76,163\\n60,88,180,208,306\\n61,76,304\\n0,7,10,13,60,82\\n0,60\\n3,37,57,60,97,129,180\\n0,10,28,136,165,180\\n59,61,63,71,169,180\\n44,76,165\\n44,75,165\\n26,47,62,64,68,71,167,186,274,280,301\\n27,43,49,55,68,74,145,169,184,190,283,297,301\\n24,39,45,58,74,146,184,202,276,302\\n47,52,149,162,179,285,287,308\\n46,69,180\\n40,43,77,158,180\\n42,78,80,169\\n42,44,49,62,68,156,178,180\\n42,47,55,59,81,84,161,178,180\\n170\\n0,29,57\\n180\\n2,11,15,44,76,87,90\\n0,24,43,76,90\\n3\\n0,10,18,21,37,44,64\\n59,180\\n50,72,175,180\\n57,180\\n58,180\\n58,90,150,159,164,168,176,180\\n0,3,30,60,64,75,94,123,154,180\\n59\\n46,52,72,168,172,180\\n43,75,164,180\\n50,72,172,195,284,315\\n45,173,177,180,199,291,315\\n170\\n16,47,74,166\\n53,100,159,180\\n43,71,74,111,122,125,180\\n31,49,64\\n132,171\\n32,58,334\\n29,58,337,339\\n56,180\\n54,67,177\\n58,160,180\\n180\\n41,80,173,180\\n48,63,84,118,179\\n3,41,73,147,166,179\\n41,60,72,161,176,180\\n48,51,53,78,157,194,282,316\\n32,50,81,155,161,166,192,206,280,286,315,325,328\\n59,180\\n50,60,66,82,158,180\\n61,179\\n60,180\\n48,74,168\\n50,85,159,199,220,297,315,351\\n61,71,77,83,90,173,193,284,300\\n308\\n308\\n68,192,305\\n59,169,174,180\\n53\\n62\\n0,3,9,23,26,28,49\\n52,60,62,180\\n33,55,180\\n35,56\\n28,34,53,311\\n185,288,290\\n0,9,34,37,57,75,77,90,95,102,125,139,142,162,180\\n17,62,77,170\\n48,76,167,180\\n54,58,65,180\\n63,80,82,180\\n45,48,72,167,179\\n59,180\\n56,70,74\\n18,67,106\\n56,180\\n56,180\\n50,180\\n180\\n65,186,299\\n175\\n52,189,191,221,287\\n56,175\\n62,177\\n65,175\\n51,72,90,138,181\\n188,214,294\\n192,226,296\\n201,224,275,289\\n48,68,77,174,180\\n71,299\\n44,52,57,59,61,75,298,321\\n60,180\\n41,73,88,164,180\\n59,180\\n47,57,60,63,165,167,171,181,287,311\\n51,77,80,161,188,204,279,303\\n303\\n59,180\\n61,180\\n48,75,167,171,180\\n65,183,290,305\\n66,178,303\\n54,70,178,191,303\\n66,181,304\\n62,178,194,304\\n64,182,309\\n53,294\\n61,180\\n60,180\\n60,160,180\\n41,45,54,68,93,159,180\\n44\\n39,55,162,180\\n0,35\\n0,10,64,92,141,180\\n0,6,34\\n8,46\\n0,22,27,29,42,45,69,90\\n0,31,180\\n0,29,49,72,98,142,170,179\\n42,71,163\\n55,172,180\\n56,179,295\\n60,180\\n60,180\\n60,180\\n43,64,175,191,289,296,303\\n45,67,168,176,185,287\\n59,178,303\\n62,180,301\\n53,60,68,70,108,165,289,295,302,305,328\\n44,48,51,55,59,64,67,71,75,108,289,294,297,304,308,321\\n0,5,41,106\\n163,180\\n0,15,17,70\\n0,20,35,123,180\\n61,180\\n0,180\\n0,20,53,55,75,84\\n23,41,60,84,106,138,157\\n17,34,53,82,90\\n0,10,20,36,46,50,62,66,90\\n0,59,61,107,123,180\\n13,17,19,33,36,90\\n1,31,36,56,58,70,77,90\\n0,12,19,27,40,45,48,57,60,68,70,84,109,118,124,128,131,137,157,160,180\\n7,54,67,85,90\\n2,34,61,65,92,95,106,130,139,144,151,159,173,177\\n2,25,28,65,87,109,180\\n0,9,66,77,111,114,117,158\\n13,34,72,90\\n48,63,70,77,90,105,120,134,161,164,179\\n0,14,30,54\\n17,39,52,57,63,85,151,172,180\\n30,51,53,59,69,71,114,136\\n2,28,44,66,94,110,113,139,178\\n14,34,65,79,136,211,235\\n15\\n28,35,45,179\\n0,60,78\\n12,26,40,83,86,105,126,129,137,155,180\\n40,110,129,149,180\\n24,57,69,180\\n180\\n62,180\\n180\\n0,32\\n0,31\\n0,25,30\\n68,180\\n66,82,180\\n59,83,90,93,104,107,113,120,164,166,180\\n55\\n56\\n0,56\\n66,180\\n47,77\\n45,71,73,148,180\\n48\\n0,10,58,66,180\\n0,7,56\\n15,112,130,156,180\\n118,147\\n0,59,120,180\\n123\\n13,46,65\\n15,44,66\\n14,41,62\\n17,46,63,65\\n93,128,132,159\\n0,93,123,149,153,168\\n0,4,9,15,17,24,32,45,68\\n1,44\\n80,86,98\\n76\\n94,100,111,128,180\\n89\\n60,77,80,86\\n0,14,84,106\\n86\\n63,164,173,177,180\\n61,77,80,157,171\\n62,180\\n0,14,68\\n64,70,81,147,168,180\\n59,61,109\\n51,53,77,124,179\\n180\\n60,63,71,92,180\\n47,72,114\\n87,103,180\\n85,109,150,180\\n54,73,148,167\\n114,180\\n43,60,80\\n0,50,84\\n66,180\\n67,180\\n60,180\\n163,180\\n133,140,142,145,147,162,165,169,180\\n15,114\\n68,88,180\\n65,180\\n97,180\\n62,97\\n65\\n62\\n79,176,180\\n65,180\\n122,163,179\\n0,62,128,171\\n0,36\\n1,39\\n137,152,180\\n0,26,56\\n70,180\\n90,114,153,170,180\\n78,97,116,129,142,154,180\\n0,56\\n45,61,76,96\\n59,94\\n66,180\\n180\\n46,63,66,69,79,83\\n73,75,122,180\\n85,91,157,162,175,180\\n53,75,78\\n74,126,180\\n178,180\\n68,180\\n71,136,154,163,173,175\\n68,111,119,175,179\\n0,12,57,76\\n3,58,62,163,180\\n62,65,67,79,85,163,180\\n45,48,72,146,169,180\\n106,121,123\\n69,78,180\\n180\\n180\\n16,54,77\\n74,164,167,179\\n65,180\\n66,180\\n65,180\\n180\\n55,67,74,180\\n48,66,87\\n180\\n180\\n68,180\\n69,96,99,115\\n180\\n72\\n73,180\\n72,91\\n72,94\\n86\\n89\\n78,106,180\\n82,91,100,180\\n0,28,31,39\\n0\\n100,113,116,163,180\\n117,137,148,158,180\\n0,76,78,108\\n0,6,69,105\\n0,46,71,73,76,117\\n68,180\\n59\\n69\\n73,92,111,155,161,168\\n0,28,49,64,88\\n75,92,180\\n46\\n136\\n180\\n180\\n0,9,121,162\\n0,33,82,124\\n51,72,78,94,98,115,147,177,180\\n11,21,32,58\\n14,41,65\\n64,180\\n61,75,78,180\\n57\\n56\\n0,67,180\\n49\\n152,154,179\\n0,151,180\\n34,55,58,66,75,79,82,104,131,164\\n0\\n0\\n160,180\\n0\\n0\\n84,180\\n117,134,137,139,180\\n125,134,179\\n110,116,119,179\\n59\\n16,58,85\\n58,93\\n0,57\\n77,180\\n131,168,180\\n22,50,72,86\\n48\\n77,180\\n77,125,141,144,180\\n2,47,87\\n27,30,51,77\\n76,180\\n18,55,83\\n169,172,180\\n62,94\\n30,77\\n29\\n62,156,176\\n97,123,180\\n144,151,153,156,164,180\\n68,96\\n47,78,129,148,153,175,178\\n119,121,145,148,154,180\\n29,36,51,53\\n90,110,162,179\\n104,107,129,133,179\\n104,127,147,159,161,174,180\\n88,111,144,166\\n57,82,105\\n0,55,93\\n0,56\\n121,156,180\\n36,56,80\\n68,180\\n68\\n67,180\\n51,179\\n39,66,180\\n16,25,66,153,180\\n67,160\\n106,167,171,180\\n85,91,105,111,125,132,139,142,178\\n59,92\\n61\\n0,180\\n0,26\\n0,180\\n0,45\\n132,138,180\\n130,180\\n0,33,60\\n180\\n180\\n180\\n0,38\\n0,27\\n180\\n180\\n79,90,105,135,180\\n77,111,145\\n77,91,96,120,142,146,150\\n77,101,111,121,140,180\\n72,180\\n180\\n65,180\\n0,57\\n76,88,91,126,166\\n32,38\\n80\\n40\\n78,96,98,128,135,147,179\\n78,93,112,154,158,172,178,180\\n73,180\\n8,57\\n15,57\\n1\\n180\\n63,180\\n67,73,81,84,119,122,166\\n0,57\\n0,58\\n92,180\\n112,178\\n165,180\\n64\\n0,180\\n180\\n0,98,117,129,138,145\\n0,125\\n12,80,83,116,125,142,146,157,167,170,173,180\\n0,12,52,66\\n12,32,69\\n155,158,180\\n64,180\\n26,61,76,84,180\\n15,56\\n0,55,76\\n0,54\\n63,180\\n49,76\\n0,38\\n0\\n180\\n180\\n180\\n0\\n0\\n180\\n180\\n70,180\\n85,131,180\\n95,152,180\\n79,81,105,180\\n84,106,180\\n57\\n0,26,52,66\\n55\\n19,30,73,88\\n56\\n65,68,180\\n85,90,94,96,122,131,176\\n171\\n45,47\\n54,72,82,148,152,180\\n81,116,120,180\\n81,84,87,104,113,124,129,134,149,167,178\\n0,23,42\\n29,46,80\\n69,139,175\\n80,128,142,146,180\\n91,123,137,146,154,180\\n123,178\\n134,180\\n21,37,72\\n100,109,136,150,179\\n6,8,12,14,27,40,119,153,156,180\\n0,54,70\\n180\\n0,121\\n180\\n65,180\\n136,169,171\\n0,9,16,56\\n1,55,83\\n56\\n63,180\\n54\\n63,180\\n149,180\\n152,180\\n56\\n62,180\\n73,81,170\\n47\\n180\\n89,109,125,127,153,160,180\\n106,123,141,151\\n0,27,31,69\\n56,69,72,93,102,108,117,126,179\\n180\\n180\\n97\\n94,108,112,133,167,180\\n153,157,165,177\\n96,113,123,167,180\\n141,155,180\\n54\\n63,101,123,130,143,148,159,161,164,180\\n32\\n87,95,97,104,106,149,153,156,163,180\\n0,19,57\\n83,101,116,133,159,180\\n0,67,180\\n67,85,173,179\\n62\\n62,83\\n42,57,80,94\\n65,81,83,180\\n65,180\\n42,57,72,178,180\\n70,156,180\\n83,113,135,149,153,155,161,164\\n58,82,180\\n74,178\\n65,179\\n0,25,33,36,40,52,89\\n0,180\\n0\\n0,180\\n180\\n180\\n1,3,36,53,55\\n180\\n96,102,122,126,145,156\\n76,94,110,121\\n75,180\\n155,171\\n23,56\\n72,180\\n64,180\\n57\\n59\\n73,131,159,174,179\\n60\\n47\\n61,180\\n65,78,180\\n58\\n58\\n0,3,180\\n180\\n6\\n201,249,265\\n0,4,9,23,28,30,33,86,109\\n0,4,28,50,53,72,75,85,87\\n0,85\\n122,125,167,180\\n10,35,37,168\\n2,25,28,40,47,65,170\\n0,28\\n5,11,29\\n35,55,85\\n60\\n1,31,53,261,356\\n71\\n83,110,183,189,200,215,219\\n89\\n221,284,312,329\\n233\\n274,300,307,309,338\\n275,277,295,314\\n260,289,291,296,305,308\\n160,168,180,203,257\\n177,196,226\\n0,180\\n0,104,134,163,170,180\\n25,312,341\\n24,310,313,332,358\\n58,69,73,163,168,174,180\\n160,180\\n117,166,169\\n357\\n3,17,23,31,304,320,343,345\\n59,187\\n63,65\\n74,204\\n68,71,205,236\\n69,204,221,223,242,284,307\\n54,72,98,190,209\\n281,297,313,338\\n219,222,233,283,286,312,336\\n279,313,338\\n59,80,190,221\\n58,78,188\\n72,99,183,196\\n2,12,17,31,33,41\\n1,27\\n4,6,35,167\\n4,35,153\\n30,181,348\\n180\\n72\\n0\\n0,21,31,36,38,164,173\\n0,16,19,35,52\\n1,12,137,158\\n11,147\\n89\\n102\\n180\\n90\\n0\\n4,170\\n123,134,140,178\\n3,5,25,346\\n5,341\\n32,56,69,84,105,122,161,180\\n0,31\\n51,90\\n69\\n60,95,103,107\\n90\\n90\\n0,48\\n0,41\\n153,180\\n32,53\\n0,21,30\\n46,127,130,143,158,173,180\\n0,11,17,90\\n0,36,90\\n62,137,180\\n0,40,60,81,84,90\\n37,41,44,49,95,104,118\\n54,57,69,74,85,90\\n56,90\\n59,91,119\\n57,90\\n0,29\\n142,180\\n134,137,158,180\\n1,57\\n3,38\\n71,88,95,113,129\\n71,78,90\\n8,37,56,71,90\\n11,42,58,76\\n82,103,106,108,123\\n46,55,60,64,73,79,90\\n27,30,81\\n54,97,125,128,152,167,173,178,180\\n1,45,61,81,83,86,90\\n0,12,35,42,44,80,89\\n67,69,91,121,171\\n0,32\\n13,35,43\\n0,47,56,62\\n0,11,15,25,28,56,58\\n131\\n123,144,166,180\\n180\\n180\\n165,180\\n0,21\\n0,20\\n50,90\\n67,89,120\\n90\\n0,33\\n59,84,122\\n56,64,72,90\\n43\\n33\\n180\\n143,162,177,180\\n7,28,48,51,54\\n2,50\\n0,36,46,50,52,54,152\\n47,108,134\\n57,77,88,118,138\\n47\\n52,68,85,105\\n0,150,154,180\\n59,73,107,123,126,129,138,157\\n50,119,148\\n58,66,86,114,130\\n0,3,159,166,180\\n44,46,66,104,136,162,180\\n52,137\\n60,64,74,117,119\\n54,72,77,83,90,111,124,141,153\\n0,55,85,90,93,96,99,106,129,180\\n0,57,72,77,130,180\\n63,91,108,152\\n15,180\\n0,155,168,179\\n0,25,175\\n70,89\\n53\\n149,180\\n154,165,179\\n180\\n0,45\\n0,39\\n70,122,126,180\\n50,86,167\\n53,123,127,136,142,154\\n23,38,53,78,103,172\\n0,35,37,44\\n0,17,41\\n60,75,97,107,139,158\\n38,45,49,57,157,180\\n40,62,75,81\\n0,44\\n66,180\\n0,34,59,180\\n0,63,65,180\\n0,74,180\\n282,307,334\\n305\\n68,163,179,246,321\\n21,42,55,72,162,180,231,236,242\\n52,71\\n55,102,113\\n177,199,239,290\\n155,158,178,201,285\\n6,55,318\\n10,56,312,354\\n30,59,313,358\\n0,23,45,47,50,56,58,309,327,335,338,341\\n151,194,284\\n152,185,279\\n12,14,55,312\\n15,54,313,358\\n49,314\\n46,314\\n58,80,183,200,280,285,288\\n47,61,185,283\\n52,68,71,172,297,311\\n64,77,144,169,171,300,308\\n31,34,37,51\\n0,42,46,58,302\\n44,312\\n0,54,180\\n0,56\\n182\\n76,87,182\\n0,52,79\\n67,80,153,164,174\\n70,76,80,83,85,87,166,186\\n52,309\\n46,307,325,345\\n71,181\\n176\\n51\\n46,49,307\\n49,168,182,310,316\\n83,130,175\\n80,86,92,95,107,128,157,178\\n66,180\\n74,175\\n74,163,175\\n181\\n181\\n32,52,85,123,180,293,295\\n201,300\\n63,198,299\\n50\\n4,56,84\\n183\\n184\\n62,116,118,131,174,293\\n61,293\\n19,28,50,182,300\\n53,184,297\\n183,226\\n182,187,226\\n66,164,298\\n69,167,297\\n60,180\\n59,180\\n0,54,71,171\\n70,179\\n63,78,177,179\\n33,42,45,51,59,66,71,88,180\\n131,166,178,180\\n178\\n180\\n180\\n180\\n53\\n0,2,4,6,49\\n28,55\\n9,54\\n0,25,46,49\\n59,180\\n64,180\\n49,76\\n48\\n55,180\\n67,179\\n180\\n180\\n46,74\\n0,37\\n58,175\\n61,180\\n164\\n55\\n52,55,58,66,179\\n76,180\\n63,88,180\\n297,303\\n300\\n58,100\\n57,102\\n56,96\\n54,87\\n192,267,292\\n189,191,193,201,291\\n42,53,311\\n306\\n9,36,56,307,352\\n56,307,339,359\\n53,276,296\\n36,49,55,300\\n31,306\\n63,74,174,177,185\\n76,175,179,181\\n186,207,278,282,291,304\\n183,196,280,294\\n199,274\\n199,271\\n9,25,55,61,68,96,102,104,142,174,180\\n1,140\\n0,30\\n1,178,180\\n0,2,108,123,125,160\\n0,3,9,129,165\\n0,8,40,121,129,160\\n0\\n0,2,138,179\\n0,39,135,166,170\\n25,94,102,126,133,143,155,161\\n157,160,180\\n161,180\\n0\\n0,7,45\\n3\\n66,99,129\\n62,78,103,124,127\\n106,124\\n0,27,30,38,171,180\\n0,5,133,146,150,163\\n180\\n3,39,164\\n1,18,21,127,168,180\\n162,180\\n63,114\\n67,85,88,90,105,125\\n180\\n123,148,322,336,347,357\\n125,297,318,326\\n8,50,342\\n6,8,10,12,23,335\\n2,16,342\\n16,305,335,343\\n1,6,111,231,245,324,347,350,359\\n103,108,114,240,249,260,276,300,319,349\\n72,78,85,101,105,110,120,271,287,307\\n111,133,185,267,301,350\\n9,25,332,348\\n16,335,337,352,354\\n162,164,173,188\\n210,251\\n13,137,235,238,298,320\\n5,128,237,314,317,327,334,339\\n283,303,327\\n304,330\\n314\\n15,224,357\\n3,18,43,74,212,249\\n13,15,188,220,246,248,340\\n200,208,226,248\\n204,217,246\\n202,219,231,234,252,265\\n154,174,211,248,265,267\\n219,264\\n210,249\\n1,8,10,12,45,77,291,338\\n12,52,296,341\\n17,27,328,345,347\\n14,48,339,348\\n110,329,348\\n21,53,76,79,103,351\\n2,6,90,105,339\\n10,89,351\\n122,140,166,173,208,210,220\\n134,147,167\\n136,217,236,266\\n128,145,147,191,194,236,265\\n119,126,132,136,226,239,248\\n135,154,226,241\\n93,116,119,123,276,302,340\\n92,110,122,130,243,277,299\\n98,107,114,117,123,253,310,316,342\\n99,121,251,271,335,343,348,351\\n306\\n306\\n236,250,276\\n180,229,252,255,257\\n247,279\\n16,339\\n339\\n5,308,342\\n13,339\\n122,145\\n137,155,229\\n215,218,221,254,260\\n216,221,224,230,232,253,269\\n222,228,234,254,270\\n313,343\\n347\\n34,54,290,309,320,345\\n1,33,50,293,311,320,328,339\\n10,20,26,335,353\\n114,126,136,160\\n103,120,204\\n10,290,329,352\\n0,3,25,46,56,87,123,127,135,142,145,155,180\\n0,27,45,48,50,76,122,165,177,180\\n78,118,148,151\\n180\\n180\\n0,21,42\\n0,2,29\\n1\\n0\\n0,14,25,50,84,121,180\\n0,13,34,41\\n0,30\\n56,81\\n21,330,357\\n17,345\\n356\\n6,20,34,341,351\\n9,33,36,350,352,356\\n31,56,355\\n17,27,30,321,358\\n0\\n0,22,24,42,44,51,85,90\\n0,66\\n0,2,16,42\\n180\\n0,132,160,180\\n0,45\\n5,9,22,54\\n180\\n0,18\\n62,88\\n33\\n20,145,180\\n1,10,12,20,27\\n180\\n0\\n137\\n135\\n144,148,161,163\\n6,18,120,142,146,161,164,166\\n122,271,313,325\\n114,261,318,343\\n305,325\\n123,147\\n134\\n0,8,302,304,331\\n2,301,335\\n5,32,54,75,79,89,338\\n9,26,44,47,51,87\\n77,83,106\\n51,75,104\\n119,121,123,150,199,220,251\\n116,150,161,199,225,247,250\\n149,167,184,189,195\\n132,135,138,150,167,182\\n152,156,216\\n149,175\\n130,150,162,164,181\\n169,177\\n3,7,50,114\\n2,4,48,112,169,175\\n261,285,322\\n261,287,323\\n110,115,127,147\\n116,139,155\\n303\\n303,323\\n101,122\\n102,121\\n247,255,257,261,281\\n247,281\\n287,332,334\\n8,290,332\\n9,80,101,348\\n12,101,348\\n128,164,197,234,241\\n119,125,128,148,163,190,194,196,231,233\\n72,99,117,119,136\\n49,96,98,106,112,134,165\\n279,291,301,304,322\\n250,266,278,287,301,305,332,352\\n289,304\\n304\\n126\\n126\\n11,18,23,33,70,77,86,113\\n21,39,59,88\\n136\\n136\\n51,337,355\\n47,338\\n118,146,168,170,221,244\\n118,141,154,169,172,188,221,244\\n89\\n90\\n52,55,90\\n0\\n0,8\\n1,3,38,58\\n0,132,151,174,180\\n0\\n74,90\\n24,337\\n162,179,198\\n0,10,19,39\\n39,59,180\\n59,180\\n23,93,252,268,322,338\\n0,66,180\\n0,180\\n0,7,33,112,142,180\\n0,22,51,87,107,129,150,180\\n0,43\\n19,177,180\\n74,296\\n0\\n21,159,166,173,175\\n56,180\\n31,46\\n53\\n0,10,14,29\\n0\\n0,44\\n136,143,146,180\\n60,110,150,167,180\\n43,56,102,168\\n60\\n56\\n60,68,75,80,90,178,180\\n59,303\\n59,302\\n71,85,97,105\\n49,72\\n56\\n0\\n180\\n69\\n69,88,103,111,136\\n0,14,18,21,34,41,131,134,156,162\\n15,20,29,59,61,90,111,139,141,144,165\\n48,80,164\\n0\\n67,180\\n0,56\\n56,305\\n56,305\\n59,173,180\\n54,75,123,169,177\\n57,180\\n69,180\\n182\\n0\\n0,22\\n61,74,109,141,180\\n29,54,77,83,89,108,162\\n38,52,87,90,97,105,174\\n46,62,71,107\\n31,49,97,143\\n35,48,73,95,141,172,286\\n35,74,94,155,171,293,317\\n58,83,158,164,166,180\\n19,41,59,174,180\\n61,63,80,179,284,338\\n91,178,180,189,306\\n52,57,61,114\\n63,114\\n99,261\\n58,82,168\\n61,80,177,180\\n60,79,102,105,113,116,124,127,133,156,176\\n63,180\\n36,65\\n0\\n34,36,43,47,59,80,90\\n1,9,35,90\\n13,21,35,52,55\\n49\\n0\\n8,12,49,126,154,180\\n0,34,36,50,71,90\\n1,4,39,73\\n66,68,86,136,151,153,155,166,180\\n0,27\\n0,57,84,122,141,144,146,149,164,180\\n0,47,99,131\\n137\\n0,39,152,180\\n1,8,29,51,58,62,73,84,89,100,104,106,109,131,152,180\\n0,162,180\\n0,8,26,81,150,180\\n65,75,81\\n80\\n27,29,66,68,109\\n51,71,98,105\\n31,33,59,79,102,235,256\\n36,38,41,56,62,90,158\\n180\\n66\\n67,108\\n67,174\\n12,39,54,96,153,158,174\\n161,167,180\\n60,145,180\\n33\\n24,28,45\\n48,54,56,59,66,78,162,180\\n55,67,86,180\\n16,19,42,63,67\\n47,154,180\\n15,33,39,58,104\\n0,20,23,45\\n12,21,61\\n66\\n0,25,38,58,65\\n43,67,73,84,87\\n0,16,18,29,32,36\\n22,30,44,53,56,58\\n39,62,78,173\\n28,61,81,153,180\\n2,49,77,85\\n0,26,30,37,41,45,51,55,61,65,90\\n60,180\\n0,16,138,157,168,180\\n0,13,29,48,90\\n15,131,152,158\\n49,53,68,96,112,142,173\\n51,71,74,87,110,132,174\\n59,62,93,167\\n15,40,57,73,110,115,130,139,143,149,155,180\\n0,5,40,74,104,137,159,180\\n0,7,85,107,134\\n0,11,112,132,144\\n61,180\\n64,89,148,161,167,180\\n60,67,77,108,148,171,176\\n21,25,45\\n36,40,49,54,82,157,171,180\\n37,57,180\\n52,55,63,155,180\\n20,47\\n47,67,168\\n2,32,34\\n0,3,19,38,64,72,79,81\\n124,140,174,180\\n40,47,49\\n17,46,310,342\\n1,31\\n42,54,56,65,73,85,90\\n0\\n62,85\\n23,32,56,71,83,87\\n192,303\\n63,159\\n180\\n67,81,84,175,177\\n48,66,109,174\\n238,289\\n0,46,55,61,79\\n0\\n0\\n15,32,40,63\\n180\\n63,76,79,176\\n64,73\\n57,83\\n0,7\\n180\\n57,180\\n54,75,90\\n69,80,82\\n66,80\\n103\\n71\\n180\\n40\\n0,5,9,17,57,75,78,85\\n0,9,31,43,49,63\\n2,19,47,61\\n60,64,86,121\\n43,75\\n43,47,77\\n41,78,96,101,104,109\\n176\\n180\\n180\\n0,29,33,71,90\\n0,118,156,180\\n0\\n36,40,88,90\\n130\\n0,3,8,20,28,30,49,70\\n0\\n90\\n10,33,65,88,95,102,122,141,150,164\\n8,64,93,109,126,149,158\\n4,19,235,254,263,277,282,302,306,319,322,328,335,349\\n1,235,278,288,300,325,344,358\\n10,109,128,167\\n10,15,21,23,25,109,124,174\\n21,28,50,105,113,125,137,152\\n0,6,50,64,83,121,146,173,177\\n6,8,21,58\\n66,85,99,104,179\\n69,180\\n66,209,306,338\\n66,207,306,332,334\\n187,280,285,291\\n111,136\\n105,129,133,138,141,143\\n90\\n35,47,56,69\\n70,90\\n41\\n24,47,54,60,90\\n64\\n0,9,39,58\\n0,45,91,95,122,135,155\\n182\\n64,90\\n34,92,132,180\\n0,33\\n90\\n180\\n4\\n22,44,47\\n176,184\\n181\\n0,6,24,52,79,82,84,90\\n303,330,353\\n58,106\\n58,92,99,114\\n27,31,42,68,102,140,172,176,180\\n0,3,20,22,25,32,35,37,52,78\\n71\\n55,80,96\\n82,86,89,93\\n180\\n180\\n51,63,71,180\\n0,5,152,156,180\\n0,22,29,40,88\\n136\\n41\\n101,168\\n98,164\\n49,52,61,86,113,180\\n63,301,323\\n59,195,248,293,330\\n50,52,69,167,172,180\\n31,61,180\\n41,48,61,69,160,180\\n25,49,63,71,180\\n50,71,73,169\\n45,59\\n57,176,180\\n59,174,176,178\\n0,24,34,36,90,136,158,160\\n57,59,69,180\\n58,180\\n0,30,55,57\\n32,55,59,72,78,156,171\\n34,45,58\\n54,81,87,90\\n1,10,20,43,70,104,110,115,118,139,142,161\\n128,141,145,152,180\\n0,8,36,52,88\\n179\\n77,177,180\\n180\\n49,81,163\\n180\\n58\\n62,79,82,99,106,109,112,120\\n66\\n67\\n28,61\\n0,17,123,125\\n0,31,55,66,76,89,154,178\\n59,102,180\\n54,67,168\\n62,180\\n180\\n30,56\\n0,6,11,14,180\\n0,35,120,142,146,180\\n14,18,23,39,44,147,180\\n0,30,59,112,121,155,159,180\\n0,9,13,24\\n12,92,141,156,164\\n13,25,53,78,94,114,145,179\\n45,70,158,171\\n8,19,42,57,60,80,171,176,179,188,201,205,208,222,251,271,299,341\\n11,17,38,55,169,201,309,313\\n68\\n48\\n0,4,58,180\\n0,9,46,120,166,177,180\\n1,18,52,70,115,180\\n180\\n0,10,12,14,30,48,69,133,180\\n78,99,169\\n76,95,99,103,150,168\\n70,141,168\\n72,165\\n29,49,72,74,168\\n52,59,180\\n33,58,90,100,148,180\\n0,2,31,51\\n0,2,8,42\\n59,180\\n13,48,178,192,297,311\\n43,155,182,282,297,353\\n70,72,149,164\\n70,164\\n33,37,41,166,177,203,308,355\\n9,23,42,45,179,190,204,311\\n68,163\\n66,165\\n0\\n0\\n114,133,180\\n0\\n0\\n0\\n0\\n0\\n0\\n0,180\\n180\\n0,8,159,180\\n151,180\\n0\\n11,22,35,150,179,183,194,197,348\\n1,5,157,166,181,199\\n15,355\\n221\\n216,238,244,259\\n22,234,246,249,255,261,268,341,356\\n248,358\\n4,296,303,314,338,359\\n2,246,249,305,344\\n6,12,298,346\\n19,76,80,117,129,131,234\\n16,118,144\\n0,180\\n0\\n68,180\\n65,79,81,108,169,187\\n295\\n295\\n292\\n180\\n184,292\\n184,282,287,292,300\\n179\\n56\\n21,55,309\\n1,40,56,306\\n65,185,302,319\\n59,77,178,303\\n176\\n71,157,178\\n180\\n63,303\\n65,183,305\\n33,58,61,306\\n33,57,300,325,334,355\\n180\\n181\\n67,175,301\\n68,175,299\\n66,176\\n66,131,180\\n301\\n187,205,293\\n191,294\\n192,194,297\\n191,211,296\\n199,268,298\\n60,299\\n62,300\\n67,193\\n59,74,298,301,310,323\\n38,44,59,62,195,296\\n38,62,76,79\\n283,292,298,320\\n65,83,176,202,228,263,296\\n59,70,167,189,262,282,285\\n0\\n0,18,43\\n63,180\\n146,180\\n180\\n54\\n14,54\\n0,5,7,56,79\\n50,65,170\\n180\\n61\\n59\\n13,34,55,306\\n51,305\\n308\\n51,306\\n50,307\\n0\\n0,40,180\\n0,67,74,90\\n0\\n143,179\\n0,48,60,90,96,98,103,129,180\\n0,15,109,119,142,180\\n0,25,27,30,49,55,60,77,100,103,105,138,141,173\\n0,180\\n0,7,135,156,180\\n0,28\\n0\\n180\\n180\\n180\\n0,27,31,41,46,55,57,70,102,128,144,180\\n0,180\\n180\\n180\\n8,180\\n0,180\\n0,179\\n0,61,89,112,180\\n180\\n2,4,51,71,128,130,147,170,180\\n0,11,35,38,55,75,78,110,130,150,170\\n89,114,126,147,154,159,179\\n28,103,134,150\\n129,133,143,148,154,159,163,169,176,196,230,236,239,243,247,249,257,269,273,275,315,317,346\\n3,138,145,156,185,217,229,232,245,249,262,272,276,294,299,305,309,329,349,359\\n103,125\\n2,4,21,30,39,45,67,82,97\\n1,15,33,90,93\\n138,152,155,171,214\\n139,186,194,217\\n157,173,220,224\\n156,217,220\\n50,93,118,147,153,183,185,209,224,258,264,270,337\\n19,85,141,196,198,201,205,209,211,243,264,327,336\\n139,165,219,248\\n11,26,121,235,264,293,300,308,314,326,332,338,353,356\\n3,7,23,26,101,172,233,257,275,294,310\\n3,22,35,45,61,88\\n1,133,171,180\\n0,23\\n151,155,158,161\\n151\\n65,180\\n57,175\\n25,57,303\\n57,296,304,306\\n302\\n0,63,180\\n133,180\\n63\\n60\\n63\\n60,62,180\\n180\\n0,78,96,101,110,180\\n63,180\\n66,174,296,303,306,309\\n64,175,299\\n26,65,67,173,192\\n61,90,174,194\\n60,172,296\\n1,128,150,170,180\\n59,180\\n54\\n180\\n15,52\\n10,25,53,60\\n54\\n48\\n48,299\\n52,300\\n302,325\\n301\\n303,332\\n179\\n60,83,85,102,178\\n60,82,173\\n67,76,85,105\\n58,306\\n191,208,298\\n189,210,216,299\\n295\\n265,295\\n251,275,288\\n195,251,266,289\\n60,184,302\\n58,174,303\\n54,306\\n55,305\\n180,186,196,249,268,270,295\\n179,185,192,240,273,295,300\\n64,174\\n65,175\\n72,88,92,133,168\\n190,198,206,284,289\\n190,194,206,286\\n236,239,263,281\\n193,224,246,263,265,278,292\\n0\\n0\\n0\\n0,44,47,66,102,119,129,132,149,180\\n0,57,65,90\\n0,5,7,24,27,29,31,39,156,180\\n0,12,15,17,46,65,85,95,104,107,130,144,150,153,158,161,169,172,180\\n0,64,94,127,130,136,180\\n1,112,141,256,272,313,332,349,358\\n90\\n0,35,55,73,109,115,123,126,130,134,180\\n89,123,136,144,180\\n80,97,141\\n55,76,171,180\\n72,178,180\\n71,180\\n158,180\\n153,169\\n9,27,50,71,78,81,98,122,145,171,180\\n0\\n0,21,36,45,64,75,83,94,100,127,153,156,177,180\\n1\\n5,25,38,67,93,164,297,313,336,341,347,353\\n12,35,40,47,68,85,296,311,336,341,350\\n0,7,25,35,45,48,63,65,68,94\\n28,36,46,79\\n50\\n123,140,164\\n90\\n63,90,93,124,166,168,171\\n0,42,62,90\\n179,218\\n0,30,52,85\\n87,98,107,112\\n0,2,14,45,47,75,114,139\\n89,104\\n85,105\\n16,28,35,42,65,79,101,135,160,180\\n36,44,46,54,75,91,216,235,252,279,300\\n0,180\\n0,180\\n0,46,180\\n0,22,27,42,78,120,122,139,143,148,158,179\\n55,70,74,258,358\\n0,50,71,89,218,342\\n24,49,67,88,135,182,266,274,280,350\\n50,83,153\\n38,65,91\\n70,94,96,98,104,249,259,266\\n8,178\\n0,97,107,180\\n28,65,91,155,180\\n62,165\\n67,167\\n107,110,126\\n0,14,18\\n44,48,64,80,82,84,104,106,126,131,156,168,176,178\\n106,115\\n68,156,180\\n15,53\\n65,157,172\\n64,180\\n62,72,85,101,143,152,165\\n55,62,180\\n59,69,73,75,180\\n34,59,84\\n0,6,19,28,46\\n0,17,21\\n75\\n0,9,33,50,76,79\\n54,59,65,74,79,82,95,180\\n98,116,142,172,180\\n0,26,28,43\\n36,54\\n35,41,55,70\\n4,19,41,177,321,337\\n75,118,139,151,172,180\\n21,23,46,48,70,108\\n0,13,16,25,82\\n24,40\\n40\\n0,179\\n0,5,14,20,28\\n2,26,28\\n0,10,19,24,116,135\\n0,18,98,130,166\\n109,142\\n0\\n58,180\\n61,176,180\\n180\\n56\\n42,62,180\\n0\\n0,40,61,66,68,143,180\\n0,75,90\\n1\\n53,73,92,109,133,172,180\\n0\\n2\\n180\\n120,145,147,169,174,178,180\\n0,28\\n11,56,128,165,180\\n28,66,90\\n0\\n180\\n0,23,54,77,148,179\\n145,178,180\\n61,152,180\\n0,80,101,122,142,145,180\\n0,8,81,113,133,136,143,148,180\\n0\\n15,24,27,53\\n6,8,25\\n0,23\\n2,52\\n2,31,42,56\\n180\\n180\\n141,166,180\\n180\\n180\\n180\\n0,38,50,95\\n0\\n141,180\\n179\\n8,25,41,61,64,116,124,154,156,161\\n148,151,155,158,162\\n0,43,54,64,93,123,140,157\\n0,67,89,96,98,105,125,132,137,144,146\\n4,7\\n1,3,17,19\\n0\\n0,9,25,48\\n180\\n180\\n180\\n180\\n70,117,147,151\\n0,9,11,35,72,95,122\\n180\\n180\\n144,180\\n0,180\\n0,177,180\\n0,20,25,60,172\\n128,149,171,176\\n180\\n180\\n0,42,131,161,180\\n3,23,36,51,112\\n2,15,40,55,58,70,132,161,168\\n180\\n158,180\\n0,2,9,54,89,136,144,148,151,179\\n138,180\\n0,159,180\\n0\\n0,180\\n0\\n97,142,161,180\\n82,127\\n126,165\\n151\\n128,140,158,182,186,190,222,244,250,256,298,345\\n128,133,231,243,249,264,284,292,301,303,320,347\\n107,118,124,136,142\\n112,116,118,120,122\\n121,132,141,148\\n0,41,53,64,89,115\\n40,43,50,55,63,70,92,108,110,356,359\\n18,21,47,77,90,104\\n149,165,167,172,229,260\\n116,133,155,177,228\\n179,243,268\\n167,184,199,219,222,227,250,257,264\\n131,155,205,208,214,236,238\\n159,165,228,238,242,244,271\\n150,213,242\\n152,227,232,240\\n140,165,178,212,214,232,234,273\\n188,202,205,208,236,253,256,258\\n115,124,145,172,227,231\\n169,181,194,218,236\\n238,251,266,282,287,292,295,298,322,348\\n224,237,242,260,300,320,325,345\\n25,70,96,146\\n135,138,145,152,176,217\\n141,145,148,159,165,167,173,179,213\\n254,269,272,298,331,351,353\\n266,295,298,314,334\\n0\\n0,35,132,134,137,180\\n33,64,79\\n0,39\\n49,52,65,93,110,126,129\\n136,154,180\\n159\\n0,29\\n0,18\\n180\\n0\\n0,13,33,120,149,180\\n0,45,49,59,90\\n0,2,7,10,19,23\\n0,34,36,44,70,77,84,128,153\\n0,19,21\\n0\\n0,15,33,162,180\\n0,20\\n139,180\\n20,28,42,119,149\\n46,118,159\\n20,84,101,117,216,227,230,261\\n21,52,63,108,233,239,244\\n51\\n28,50,76\\n35,71\\n36,96\\n29,34,38,106,214\\n39,67,224\\n212,238,257\\n212,237,253\\n106,127,138,166,201\\n102,152,201,215\\n251,274,290,326,329\\n6,8,13,17,268,290,309,326,338\\n271,327,349\\n277,292,294,302,307,315,323,337,343\\n83,109,131,136,152\\n85,87,105,135,141,148,152\\n105,134,138,142\\n72,93,98,108,127\\n4,6,12,18,46,63,83,105,132,156,160\\n8,15,38,44,57,96,101,116,142,159\\n17,42,46,54,68,101,233,243\\n15,19,25,27,41,45,47,50,77,87,101,208,251\\n36,59,79,104\\n109,140,163,179,198,221,238\\n109,140,164\\n22,55,74,102,105,110,113,188,192,217,239\\n10,12,37,96,195,230\\n42,198,218,238,242,246,265\\n65,112,207,232,267\\n32,225,246\\n53,75\\n25,131,133,321,349\\n25,50\\n1,3,8,17,34\\n22,229,247,348\\n2,22,251,307,343\\n6,246,269,358\\n246,310,349\\n223,246,264,288,337,352\\n6,359\\n1,240,256,274,310,335\\n110,147,164\\n89,91,105,120,140\\n111,132,155\\n109,139,157\\n5,13,18,241,251\\n19,95,116,235,260,357\\n18,112,239\\n115,130,133,162,244,248\\n23,98,131,239,343\\n25,222\\n21,40,205,225\\n70,92,177\\n68,158,168,180,272,309\\n295,307,317\\n58\\n11,67\\n60,301\\n56,281,302,317\\n42,58,299\\n52,302\\n65,176\\n64,176\\n114,118,175\\n72,170,179\\n75,124,155,177\\n86,123,179\\n93,135,176\\n61,177\\n118,139\\n70,177,200,301\\n174\\n63,81,175\\n146,152,178\\n71,181\\n1,28,48,61,63,317,354\\n24,53,55,169,303,326,340\\n10,355\\n188,190,222\\n37,57\\n57\\n55,305\\n54,305,322,329,334\\n214,235,237,300,325\\n193,221,223,237,240,244,247,301\\n195,217,220,258,306\\n70,181\\n66,129,132,174\\n61,76\\n79,95,98\\n76,172,177,179\\n58,84,95\\n35,45,62,198,294,306,310\\n54,69,190,306\\n68,171\\n46,49,58,60,62,186,303\\n189,227,291\\n187,221,296\\n55\\n58\\n169,172,176,185,289\\n62,177,307\\n62,96,179,306\\n57,177\\n166\\n55,85,108,111,125,138,140,152,175\\n59,85,107,124,127,147,175\\n103\\n261,302\\n302,328\\n302\\n59,189,233,285,289,302\\n58,83,190,213,300\\n62,84,303\\n61,176\\n62,177,304\\n0,130,136,144,146,159,165\\n180\\n0,29\\n1,17,23,30\\n0,3,5,29\\n0,4,136,348\\n34,44,51,74\\n302,333\\n178\\n100,130\\n66,92,94,127,155\\n87,100,114,117,123,130,135,145,148\\n78,82,86,91,110,114,128,149\\n198,218,220,225,253,262,271\\n103,105,113,133\\n103,133\\n26,28,60,180\\n46,67\\n180\\n159,180\\n22,55\\n23,29,38,57\\n33,62,180\\n42,61,180\\n60,168,300,310\\n36,58,168,298\\n56,86,94\\n54,78,82\\n302,304\\n302\\n139,155,181\\n64,90,172\\n64,171\\n55,68,88,164\\n49,66,89,118,165\\n66,92,169\\n64,123,136,173\\n64,88,160\\n57,105,163\\n61,164\\n186,223,298\\n192,228,296\\n297\\n193,254,259,296\\n69,80,169,189\\n53,177,295\\n59,179,299\\n47,63,307,314\\n38,52,54,303\\n44,300\\n64,170,173,175\\n63,83,171\\n59,65,70,179,182,293,299\\n58,182,291\\n40,61,324\\n61,171,314,317\\n181,184,199,277,296,301\\n0,4,26,53,159,180\\n54,180\\n24,166,177\\n156,191,225\\n155,174,191\\n62,180\\n76,172\\n57,80,103,180\\n0,31,49,162\\n153,180\\n127,159,179\\n0,25,44\\n15,42,59\\n4,46\\n0,49,82\\n65,180\\n69,85,180\\n60,66,69,72,96,180\\n67,180\\n0,42,62\\n8,69,156,178,180\\n44,49,63\\n12,45\\n3,44\\n67,89\\n23,67,307,319,322,327,329\\n21,46,302,316,338,341\\n47,62,306,311,316,356\\n41,60,315\\n51,193,196,286,304\\n52,189,284,311\\n45,321\\n0,4,27\\n28,47,60,67,73,77,89\\n0,19\\n138,142,175,178\\n1\\n0,17,44,76,80,96,104,115,126,171,180\\n0,9,16,23,28,31,34,66,88,105,112,122,124,128,135,147,156,166\\n125,138,151,180\\n9,29\\n0,7,9,17,37,57,63,69,89,151,180\\n0,3,16,36,91,122,131,151,155,158,160,177,180\\n60,65\\n63,180\\n70\\n32,58,65,180\\n3,9,12,19,154,162,164,169,173\\n2,69,90,95,99,120,140\\n26,106,120,169,188,334\\n38,40,46,59,91,106,108,115,136,138,154\\n0\\n143,180,216\\n56,123,182,241,271,290\\n118,138,174,245,316\\n94\\n3\\n20,22,49,79,84,92,95,153\\n0\\n0,180\\n0,14,180\\n0\\n2,6,13,180\\n22,180\\n0,24\\n0,22,180\\n169\\n13,21,30,71,73,238,334\\n0\\n0\\n4\\n0\\n0\\n68,70,182,185,302\\n65,186,300\\n199,294\\n192,194,290,300\\n0\\n63\\n57,59,310\\n189,296\\n187,203,297\\n0\\n0,2\\n196,239,292\\n0\\n0,25\\n0\\n92\\n17,77,96\\n68,151,172\\n69,177,201\\n287,290,306\\n0\\n0\\n0,25,49,69\\n0,28\\n66\\n66\\n293\\n294\\n0,11,26\\n83,85,102\\n87,105\\n7,11,14,46,54,58,148,155\\n14,47\\n5\\n11,163\\n16,51,140,171\\n4,13,41,59,171\\n4,35,54,86,224\\n4,7,36,59,69,217,219,236,239\\n257,268,270,339\\n265,339\\n225\\n222\\n225\\n228\\n63,163,180,279\\n1,40,280,343\\n0,39,62,80,162,180\\n66,116,138,141,145,167,180\\n0,3,27,29,65\\n13,36,58,76,101,119,172\\n0,9,60,74,106,157,159,171,180\\n0,63,104,107,110,133,145,172,177,180\\n0,2,33,39,42,59,76,102,146,155,168,174,180\\n84,109,115,180\\n99,152,156,165,172,176\\n0,8,37,69,100,103,106,123,162,169,175,178\\n63,106,133,171,177,180\\n46,66,82,117,170,173\\n143,163,180\\n0,22,32,60,68,96,111,132,155,167,171\\n1,3,7,122\\n61,177\\n32,34,38,56,180\\n56,168\\n61,180\\n27,58,109,140,180\\n39,64,94,180\\n27,61,86,154,178,180\\n0,12,30,36,51\\n36,55,77,99,102,105,144,179\\n21,55,71,77,87,91,95,124,139,163\\n50,53,62,175,177,179\\n13,50\\n14\\n13,102,106,260,263,282,333,351\\n52,64,180\\n61,180\\n56,178\\n59,180\\n60,180\\n61,180\\n3,315\\n0,21\\n51\\n3,72,114,133,162,165,180\\n47,110,115,132,160,169,172,180\\n0,180\\n0,179\\n0,180\\n7,9,29,87,180\\n2,102,149,154,158,185,189\\n3,49,96,118,120,136,161,164,181,184,188,198,236\\n8,32,41\\n14,30,33,64,356\\n138,143,149,172,184,188,198\\n142,182,198,204\\n11,48,190,205,211\\n13,344,346\\n181,279,297\\n181\\n69,177\\n66,82,142,178\\n76,78,141,169\\n306,316\\n295\\n57,70,72,170\\n32,56\\n48,50,61,180\\n60,94\\n47,66\\n286\\n58,62,180\\n180\\n180\\n1,187\\n169,188,192,212,358\\n15,17,156,184,206,208\\n26,167,172,180,199\\n0,3,37,180\\n46,61,66,156,165,177,180\\n142,155\\n119,129,138,178\\n180\\n146,178,180\\n76,92,127,131,180\\n100,139,157,180\\n22,26,33,74,89,102,306,321\\n58,79,87,135,148\\n81,103,134\\n151,168\\n43\\n85,149,161\\n150\\n32,44,82,174,180\\n0,75,147\\n83,131,145,151,173,179\\n96,103,107,117,148,180\\n72,82,84,88,131,140,148,150,158,160,162,170,180\\n106,150,163,180\\n73,148,167\\n69,129,154,171\\n42,72,175\\n44\\n23,57,74,77,97,106,109,180\\n80,152,169,180\\n1,3,14,16,124\\n59,180\\n9,52,172,331,344\\n4,17,54,166,312,340\\n17,21,34,58,141,310,312,330,347\\n19,28,33,36,57,60,64,312,336,341,353\\n78,160\\n78,131,161\\n68,125,155\\n68,102,117,131,152\\n10,39,74,291,323,347,359\\n18,43,346\\n6,13,19,24,44,56,80,174,311,330,359\\n15,46,53,162,180,313,357\\n4,39,66,70,298\\n1,40,65,75\\n12,29,56,76,86\\n46,64,141,163,180\\n57,83,179\\n44,64,180\\n62,180\\n39,54,56,68,72,169\\n52,174,299\\n56,175,194,287,300\\n0,21,36\\n0,180\\n0,180\\n180\\n0,52,180\\n0,180\\n1,6,48,73,172,176,180\\n0\\n0,27,48\\n45,75,168\\n22,61,180\\n0,11,35,117,133,157,159,173\\n0,36,144,180\\n21,46,54,63,93,115,180\\n0,14,33,61,66,73\\n212,214,235,237,255\\n226,252\\n0,9,15,18\\n0,6,13,33\\n46,62,180\\n67,166,168\\n55,57,72,75,80,164\\n26,44\\n56,73,163,173,177\\n53,59,170,175\\n58,143,163,179\\n0,180\\n0,54,139,180\\n27,105,129,146,163\\n48,103,105,130,180\\n0\\n0,25,31,180\\n0,180\\n0,3,8,20,23,71,91\\n17,55,130,132,139,147,153,180\\n0,24,34\\n4,7,60,97,137,155,172\\n0,177,180\\n0,8,31,59,154,164,167,180\\n0,7,28,34\\n0,18,176\\n32,66\\n2\\n0,179\\n146,149,156,169\\n180\\n73,86,101\\n0\\n0,180\\n0,6,180\\n0,163,180\\n0,6,150,169,180\\n0,20,23,151,180\\n32,64,67,95,119,122,180\\n63,95,180\\n51,92,123\\n56,60,74,180\\n0,55\\n58,174,176\\n74,178\\n64,180\\n65,170,185,201,290,312\\n62,67,200,301,306,311\\n68,302,320,328\\n297\\n191,299\\n57,71,184,194,301\\n60,75,176,193,288,308\\n52,282,307,316\\n53,60,84,297\\n69,71,210,262,304,321\\n57,71,300\\n38,66,68,85,131,146,149,176,206,220\\n49,54,56,63,68,74,76,123,128,133,140,169,180,186,224\\n60,65,71,160,177,211\\n173,202\\n165,189,194,202\\n161,194\\n167,171,188,193\\n164,166,171,179,191,208\\n0,14,45,56,81\\n31,44,55,66,89\\n180\\n163,180\\n180\\n0,4,12,18,46,66,90\\n9,13,21,29,34,39,69,78,82\\n0\\n180\\n180\\n80,88,91,98,108,114,119,138\\n180\\n60,303\\n0,107,111,118,127,132,141,143\\n301,324\\n59,174,299\\n61,174,299\\n24,38,96,150\\n270\\n270\\n38,51,54,319,322\\n30,48,182,294\\n181\\n181\\n303,321,342\\n299,314\\n299,315\\n49,61,68\\n47,76\\n17,40,327\\n38,328,340,347\\n0\\n0,29,153,177,180\\n38,41,62,90\\n0,35,40,50,90\\n49,56,60,64,72,75,98,119,154,160,173,180\\n1,34,38,78,87,90\\n101,126\\n0,8,59,79\\n118,180\\n21,27,29,87,97,108,162,170,172,174,177\\n0,44,79,96,139,180\\n27\\n51,59,70,90\\n154,181,209,227,237\\n339\\n340,349,351\\n0,31,42,47,51,59\\n0,47\\n0\\n0\\n0\\n180\\n0\\n0,19\\n0,5\\n178,180\\n0,37\\n0,7,12\\n0,18,62\\n0,28\\n6,38\\n53,180\\n180\\n53\\n55\\n0\\n0,6,8,18,38,71,80,83,90\\n51,87,90\\n0,2,31,82\\n5,14,17,26,57,62,68,75,121,127,130,142,157,165\\n56,60,71,82,90\\n49,69\\n34,55,90\\n51,72,104,119\\n136,180\\n0,34\\n0\\n0,28,30,35,39,41,43,45,100,131,133,135,180\\n0,22,37,58,64,67,90\\n0,35,90\\n51,69,102,113,127,179\\n56,75\\n0,30,32\\n180\\n37\\n27,58,64,79,82,108,137\\n0,23,125,136,142,156,167,172,180\\n126,135,152,155,160,165,180\\n337\\n2,22,26,45,48,51,61,64,79,90\\n0,26,104,131,148,167,176\\n160,191,250\\n160,167,171,203,207,217,221,244\\n139,161,164,176,180\\n0\\n85,90\\n35,53,63,80\\n77\\n302,305,327,333\\n0,20,26\\n32,51,70,78,87,103,109,113,115,122,131,133,141,143,160,164\\n0,71,90\\n7,35\\n0,29,48,67,89\\n0,8,10\\n0,8,28,43,77,98,127,141,164,170,180\\n34,37,57,63,67,74,90\\n0,2,11,43,90\\n64,75,80,114\\n90\\n0,2,37\\n0,59,93,120,135,139\\n0,6,11,180\\n179\\n0,2,6,28,155,180\\n0,129,137,151,173,180\\n2,25,34,36,180\\n180\\n51,305\\n111,275,301,305,320,336\\n168,204\\n304\\n305\\n18,308,312,318,322,325\\n4,38,42,50,53,280,310,314,323,327\\n293,321,323,331,337,354\\n286,288,306,325,330\\n117,126,133,160\\n112,140,165,206\\n0,10,16,18,26,36,77,126,139,171,174,177\\n20,36,77,96,99,156,180\\n57,180\\n180\\n73,124,177\\n66,84,125,173,182\\n63\\n0,39\\n0,45,70\\n0,166,169,180\\n19,54\\n196,298\\n314\\n74,308,312,315,328,335\\n1,3,24,35,44,53,90\\n44,58,61,75,97,99,102,123,156,159,175,180\\n0,166,180\\n33,126,145,159,180\\n0,180\\n0,180\\n180\\n251,304\\n24\\n0\\n0,20\\n0,15,18,33\\n14,46,81,105,112,123,145,180\\n37,43,63,87,90\\n39,90\\n0,16,21,47\\n0,45,90\\n0\\n90\\n0,2,7,9,30,47,62\\n0,32,34,38,51\\n28,48\\n58,180\\n180\\n0,12,37,40,71,171,180\\n0,3\\n181\\n87,251,258,272\\n54,79,82,98,106,111,130\\n163,166,180\\n180\\n126,319,325,329,333\\n125,137,146,300,305,312,319,331,335\\n155,168,180\\n61,90,102\\n0\\n71,262,289\\n69,292\\n0,43,64,90\\n14,36\\n0,14,17,29,48\\n2,8,10,17,26\\n0\\n0\\n0\\n2,8,13,180\\n1,14,33,54\\n180\\n12,113,122,142,158,180\\n0\\n19,191,217,287,310,340\\n0,33\\n180\\n1,30,180\\n162,180\\n0\\n180\\n0\\n24\\n15,47,49,76,127\\n21,181,200,206,210\\n29,200,203,231\\n59,90\\n184,304\\n179,302\\n0,29\\n154,180\\n180\\n177,180\\n0\\n0,24,120,136,168\\n0,37,147,180\\n35,96,109,126,151,157,180\\n180\\n0\\n180\\n0,169\\n1,5,180\\n0,16,180\\n0,180\\n0,33,67,180\\n0,180\\n0,23,55,132,151,180\\n0,180\\n0,145,180\\n0,180\\n0,143,151,180\\n3,10,19,21,30,166\\n45,59,86,89,137,158,172,177,191,194,232,248,266,319\\n10,43,78,103,151,153,176,245,257,266,287,326,331,338\\n0,20\\n1,21,167,173,180\\n0,154,180\\n24,44,57,84\\n97\\n0\\n2\\n64,80,119\\n56\\n2,64,78,135,180\\n49\\n71,85,111,115,145,180\\n45\\n47,54,61,180\\n49,130\\n56,63,174,185,302,342\\n49,69,173,295\\n61\\n72,82,104\\n180\\n286\\n188,277\\n82,160,167,180,294,296\\n75,95,132,156,162,168\\n177,179\\n129,150,180\\n11,147,175,180\\n0,180\\n180\\n0\\n180\\n2,4,180\\n180\\n6,161,180\\n0,170\\n0\\n180\\n179\\n180\\n180\\n0\\n151,176,180\\n59,75,97,117,164,192,220,251,264\\n74,104,237\\n50,54,61,77,89,96,211\\n180\\n0,79,107,126,136,161,180\\n0\\n146,173,178\\n180\\n0,49,76,87\\n0,122,143,173,178,180\\n0\\n0\\n180\\n0,7,144,171,180\\n180\\n0,180\\n1,180\\n0,25,127,157\\n0,2,20,46,67,97,100\\n0\\n0\\n148,175,179\\n9,39,51,54,136,139,159,178\\n0,75,107,180\\n0\\n0\\n137,150,153,180\\n42,44,46,113,132,162,168,171,196\\n42,46,74,107,137,166,168,201,204\\n30,49,73,91,119,176,181,190,199,206\\n47,70,89,116,204\\n4,17,323,328,341\\n7,245,326,341\\n107,115,150,176,181,199,219,224\\n109,116,146,192\\n30,121,147,166,194,204,313,317,321,324,332,335,356\\n31,57,60,136,150,156,162,203,314,327\\n14,180\\n0,162,165,180\\n8,163,180\\n167,186\\n155,188\\n0,30,34,58\\n0,84,180\\n0\\n180\\n136,158,180\\n0,180\\n0\\n180\\n2,30\\n0\\n139,180\\n2,7,25\\n180\\n180\\n65,157,162,173,180\\n0,21\\n39,133\\n0\\n0\\n20,26,34\\n22,37,322\\n180\\n159,173,180\\n0\\n0\\n180\\n12,35,37,180\\n13,16,19,24,40,55\\n68,85,135,157,160,169\\n0,58,73,179\\n63,180\\n0\\n0,113,115,117,147\\n30,61,180\\n180\\n49,51,57\\n1,56\\n57,178\\n44,78\\n65,171,180\\n62\\n61\\n5,9,51,64,300,316\\n0\\n13,18,38,40,78,131,136,152,178,180\\n45,67,89\\n0,13,44,89\\n71,111,118,120,145\\n50,54,71,90\\n0,46\\n43,68,90\\n163,166\\n0,16,33\\n155\\n132,157\\n0,36,56,66,123,126,138,163\\n100\\n0,2,146,171,176,180\\n19,58,72,92,117,125,128,156,180\\n0\\n53\\n0,72\\n83,101,110\\n12,34,46,49,52,67,70,84,90\\n0\\n47,137,180\\n1,4,67,90\\n1,29,70,87,90\\n174\\n139,168,180\\n0,36\\n0\\n13\\n143,180\\n17,47,66,88\\n60,68,78,98,106,110,113,150\\n0,21,44,48,66,90\\n41,72,114,180\\n140,178\\n137,164,177\\n0,18,20,30\\n0,20\\n0\\n2,24,51,144,180\\n73\\n2,37,70,90\\n63,66,96,99,114,180\\n85,90\\n2,16\\n0,12,25,86,180\\n0\\n162,180\\n157,180\\n179\\n5,24,33\\n50,70,90,105,145\\n0,3\\n69,154,173,180\\n0,58,91,107,142,157,162,168\\n8,125,138,151,161,172,180\\n0\\n0,37,180\\n7,118,135,171\\n0\\n0\\n125,234\\n143,168,189,208,228,236\\n33,69,90\\n22,38,57,82,126,144,165\\n0,4,50,89\\n60,62,87,90,92,97,115,129,133\\n132,141,152,161,173,180\\n155\\n0\\n1\\n0,21,103,128,162,180\\n0,49,71,81,90\\n0,35\\n44,68,111,135,167,170,180\\n64,67,71\\n39\\n50,58,63,67,87,96,128\\n54,90\\n52,71,98,118\\n137,145,174,176\\n138,143,163,180\\n0,32\\n0,20\\n0,10,68,73,79,96,139,178,180\\n23,139,159\\n0,178,180\\n25,47,53,60,135,180\\n0\\n0,141,155,157,180\\n0,21,133\\n118,121,138\\n166,180\\n150\\n0,35,132\\n65,131\\n45,47,122\\n44,99,101,119,162\\n7,25,32,41,44\\n13,18,21,42,44\\n25,43,105,129,218,238\\n27,66,73,75,77,79,107,217,236\\n21,48,55,57,79,85\\n53,57\\n39,89,109\\n36,70,101,104\\n13\\n23,45\\n14,17,43\\n29,34,46,76,80\\n111,128,147,149,152,173,197,199,209,238,243,245\\n110,148,172,197,251,253\\n146,160,169,173,175,199\\n160,180,194\\n3,8,21,41\\n1,22,32,40\\n259,290,324\\n21,282,302,308,322\\n243,249,255,260,279,308,325,332,334\\n256,275,318,339\\n37,44,49,57,86,97,99,107,131,153\\n0,14,34,50,70,83,106,108,111,114,133,138,142,153,157,178\\n27,44,48,85,93,105,113,214,220,261\\n28,55,93,106,114,116,140,219,221\\n29,56,77\\n33,35,41,48,82\\n108,152,168,176,196,218,241\\n106,164,200,203,206,237\\n18,35\\n17,42,356\\n13,130,133,238,352\\n5,11,17,110,131,225,232,243\\n203,209,212,222,229,267\\n8,29,72,292,328\\n6,17,27\\n13,33,342,352\\n8,30,33,87,124,145,235,272\\n20\\n17,343\\n20,61,211,236\\n19,30,231,233,250\\n24,59,106\\n55,303\\n58,305\\n149,178\\n146,152,158,180\\n60,185,293\\n61,180,182,291\\n80,180\\n80,145,155,181\\n141,182\\n56,303\\n57,303\\n177,303\\n186\\n187\\n169,189\\n55,57,77\\n2,22,36,58\\n34,57,306,332,342\\n7,53,70,307,324,334,344\\n71,122,181\\n73,163,180\\n50,190,303\\n64,82,192,306\\n57,59,61\\n199,204,207,210,216,297\\n71,177\\n266,306\\n47,298,322,345\\n46,52,58,313,345\\n0,54,305,326,328\\n1,52,303,349\\n186,281\\n60,180,304\\n63,150,179,243,304\\n65,165,183,306\\n61,81,157,165,169,171\\n309\\n63,188,296\\n64,186,244,295\\n43\\n63,180\\n62,67,292,298,305\\n64,149,182,309\\n62,184,297,312\\n179\\n177\\n3,6,124,126,138\\n13,25\\n105,112,135,137\\n111,136\\n137\\n61,180\\n58,169\\n180\\n180\\n53\\n25,52\\n61,180\\n52\\n71,180,191\\n42,65,183,305\\n53,81\\n58\\n68,134,173\\n67,94,101,175\\n65,137,193\\n68,135,172,185,188\\n189,201,291,298\\n187,190,196,243,293\\n61,170,299\\n55,180,301\\n49,309\\n34,44,53,309,312\\n68,169\\n70,170\\n14,19,27,30,55,144,152,176,180\\n0,7,14,21,66,149,180\\n134,140,154,172,180\\n13,28,64,92,151,172,177,180\\n123,163\\n161,179,182\\n38,64,93,99,105,144,158,181,303,331\\n157,180\\n0,19,32,50,168,177,180\\n0,27,58,88,147,178,180\\n109,137,150,152,166,179\\n0,37,44,51\\n41,180\\n142,153,155,159,176,189\\n128,148,162,173,183,188,199,218\\n132,170\\n122,128,134,150,172,200,279,299\\n35,96,129,169,193,293,311\\n73,293,329,344\\n122,164\\n52,66,85,97,179\\n62,169\\n57,180\\n67,75,87,180\\n180\\n59\\n1,19,37,39,41,74\\n30,48\\n37,67,70,180\\n63,180\\n0\\n50,52,180\\n42,59\\n58,68,73,164\\n47,53,62,76,166\\n25,58,123,171\\n41,61,180\\n12,31,33,35,49\\n0,3,7,10,17,44,78\\n70,180\\n44,310,321,324\\n305\\n1,33\\n0,44,78,90\\n90\\n0,49,72,90\\n48,74,76,86,91,102,120,135\\n90\\n56,90\\n61,84\\n58,90\\n4,14,39\\n132,160,179\\n0\\n0,56,88,90\\n130,180\\n20,45,70\\n87\\n0,21,44\\n90\\n0,3,57\\n2,12,48,71,73,77,87\\n55,93,110,115,126\\n59,89\\n90\\n0,65\\n0,9,36,43,68,95,100,105,116\\n111,136,158,180\\n7,25,33,35,37,48,67\\n1,13,64,83,90\\n12,38,43,45,72,93,104\\n66,84,90\\n0,7,49,52,78\\n136,151,180\\n0,3,6,36,40,51,66,90\\n38,84,90\\n0,22,137,175\\n53,65,83,90\\n0,3,5\\n58,75\\n65,90\\n110,113,132,155,180\\n11,13,40\\n90,93,110,130\\n12\\n11,84,338\\n142,164,187,204,240,249\\n140,162,201,203,244\\n1,69,342\\n6,340\\n28,351\\n351\\n144,215,248\\n144,165,198,218,246,280\\n157,193,207,238\\n156,190,208\\n45,58,77,84,90\\n49,70\\n0,57,59,66,86,89\\n0,47,50,57,59,66,78\\n14,125,139,163\\n61\\n0\\n117,147,175,180\\n101,158,178,180\\n0\\n0,27\\n0,3,19,23,29,32,45,48,71,90\\n1,21,35,51,57,70,74,90\\n0,3,10,25\\n0,38\\n0,17,34\\n11,66,84,124,177,180\\n9\\n0\\n8,39,64,88,91,122,142\\n3,26,73,79,86,130,155\\n0,23\\n0,29\\n95,123,163,180\\n0,18\\n0,149,152,178\\n0\\n78,180\\n12,35,51\\n0\\n0\\n0,29,35,41,157,162,180\\n180\\n55,71,180\\n29,33,58,80\\n70,77,179\\n13,18,22,26,28,68\\n0,41,180\\n180\\n304\\n300\\n0,4,11,15,60,311,334\\n27,57,293,310,356\\n9,56,308,310\\n12,15,58,309\\n48,310\\n48,314\\n152,274\\n120,156,162,164,166\\n60,282,296\\n63,296\\n70\\n80,100,131,171\\n77,95,131,150,155,161\\n57,278,294\\n76,120,170,189,195\\n75,169,187\\n172,185,194,213\\n182\\n160,185\\n20,49,63,160,169,175,178,186,291\\n15,46,54,60,166,181,281,294,312\\n2,5,295,326,343,345,355\\n0,86,93,101,118,143,179\\n95,130\\n117,137\\n187,206\\n192,207\\n291,306\\n43,53,64,295,310\\n47,63,172,299\\n115,135,153,156,160,163,166,226,230,237,241,270,274,285\\n91,113,115,120,129,132,144,194,237,264\\n163,172,178,235,263,271,275,279,285\\n178,208,262,278,284,296\\n61,310,351,358\\n27,45,55,74,314,335\\n308,326\\n44,184,297\\n44,185,297\\n98,116\\n104,111,118,144\\n182,202\\n184\\n62,174,307\\n163,174,176,309\\n19,21,35,41,56,91,94,150,166\\n6,12,24,50,71,87,158\\n264,267,271,282,312\\n274,276\\n42,67,314,337,358\\n31,61,315,357,359\\n171,279\\n185,255,274\\n3,318,333,346\\n122,141,143,149\\n110,128,149,193,209\\n12,69,314,326,330,335,348,355\\n313,325,355\\n79,107,287\\n109,113,119,127,149,168\\n104,106,116,119,122,144\\n178,191,223,239,244,250,266,284\\n204,251,281,284\\n51,307,325,342\\n19,322,340,344,352\\n297,315,334\\n44,276,304,320,337,353\\n0,7,63,93,129,131,157,160,180\\n0,24,39,87,132,180\\n2,39\\n41,64,115,132,138,147,153,171\\n90\\n90\\n66,72,90\\n91\\n64,179\\n180\\n52\\n50,66,70,90\\n76,78\\n168\\n30,54\\n38,58\\n62,80,83,87,90\\n4\\n0,11,36\\n0,42,82\\n0,14,39,41,45,56,90\\n53,90\\n5,56,92,104,109,138\\n55,73,109,126,133\\n34,36,69,82,85,89,102,107,230\\n24,40,51,54,56,71,86,125,226,243\\n124,139,168,195,222,225,243\\n165,183,202,225\\n45,62\\n7,57,70,72,74,90\\n21,359\\n23\\n7,55,304,351\\n60,175,309,319\\n62,172,191,312,319\\n12\\n62,177,180\\n61,63,170,180\\n180\\n180\\n52\\n54\\n54\\n69,169\\n71,97,169\\n66,180\\n49\\n47\\n73\\n61,90\\n67,69,73,78,80,86\\n24,42\\n44,98,123\\n71,73,90\\n90\\n60,73\\n82,90\\n55,58,90\\n90\\n90\\n43,49,60,71,78,83,89,95,104,130,161\\n80,83,87,90\\n53,90\\n0,29,43,90\\n0,148,180\\n66,180\\n52,180\\n56,299\\n62,297\\n184\\n12,15,57,60,302\\n59,180\\n180\\n180\\n12,54\\n59,180\\n45\\n0,132,137,148,151,161,168,172,176,180\\n0,139,159,180\\n0\\n0,175,180\\n0,4,6,12,180\\n0,20,22,24,137,142,156,171,180\\n0,14,17,33\\n0\\n2,18,36\\n0,136\\n180\\n180\\n180\\n1\\n89\\n92\\n0\\n0\\n46,65,90\\n90,98,101,256,264,273\\n8,180\\n0,179\\n17,22,38,55,84\\n59,89\\n84,88\\n0\\n0,18\\n0\\n0,36,69\\n4,19,166,188\\n5,188\\n0,26,32,36,117,180\\n21,64,90\\n89\\n0,19,54\\n0,7,72,87,90\\n21,29,37,60,70\\n52,180\\n153,174,180\\n0\\n313,336\\n311\\n0,8,13,23,34,42,44,67,73,81,96,99,120,146,151,153\\n0,4,8,25,37,46,69\\n0\\n12,18,24,89,121,152\\n1,8,41,69,72,85,111,140,151,174\\n70,89\\n23,50,81,121,124\\n32,60,75,77,83,94,120\\n164,181,208\\n0,28,311\\n359\\n0,46,318\\n0,52,54,90\\n72,89\\n0,60,62,90\\n90\\n25,50,90\\n74,92\\n88\\n77,79,89,96,101,126\\n65,96,120\\n146,171,178\\n1,181\\n3,160,163,179\\n0,180\\n90\\n0\\n0,22,93,180\\n0\\n0,35\\n0\\n0,19,33,51,134,148,180\\n53,74,117,123,140\\n2,179\\n207\\n60\\n31,33,65,75,94,100,107,276,305,333\\n0,17,35,58,61,65,68,71,88,165,212,269,308,316,325,344\\n38,53,79\\n0\\n0\\n178\\n0\\n180\\n0,11,151\\n0\\n0,35,60,65,68\\n0,14,18,22,26,84,90\\n0,7,19,33\\n26,52,288,292,301,319,333\\n67\\n67\\n30,57,88\\n0,8,16,24,53,106\\n0\\n0,128,134\\n0,2,6,10,13,76,99,112,159\\n89,160,180\\n1,33,38\\n0,17,102,110,113,175\\n0\\n0,42,152,180\\n8,35,56,90\\n8\\n0,180\\n0,24,78,84,99,102,105,117,134,173\\n6,59,63,79,116,136\\n5,39,41,48,65,72,85,111,125\\n111,233,258,270,288\\n0\\n73,76,105\\n99,102,142\\n57,77,139,172,179\\n32,40,44,49,57,79,165\\n90\\n88\\n151\\n30,52,70\\n91,93\\n70,88,90\\n93,115,138\\n43\\n121,130,152\\n148\\n114,133,140,143,171\\n0,10,180\\n0,3,17,29,172\\n1,27\\n108,125,134,136,150,183,288\\n111,131,142,149,156,158,165,168\\n77,98,121,145,283\\n106,136,148\\n103,138,152,186,283\\n95,114,140,149,159\\n98,126,143,188\\n98,101,111,134,154,171\\n0,24,26,41,48,67,126,165\\n22,46,81,178\\n0,24,30,32\\n90\\n85\\n180\\n0,3,16\\n18\\n2,180\\n12,27,174\\n2,54,65,95,121,163,180\\n6,28,46,63,88,91,117,136,162,180\\n0,8,10,19,107,109,137,165\\n0,18,42,62,76\\n90\\n0,18,36,40,90\\n54,74,89\\n69,107,110\\n47,68,106,109\\n11,42,104,153,180\\n0,21,180\\n99,103,128,290,333\\n175,355\\n179,352\\n56,66,180\\n52,62,180\\n17,21,50,57,59,73,129,159,179\\n26,46,78,102,109,122,124,146,166\\n52,81,170\\n54,168,302\\n45,63,151,170,180\\n63,180\\n174,177,180\\n11,14,27,52,66,74,77,108,124,157,171\\n42,51,63,172,180\\n65,183,308,310\\n49,66,172,177,183,289,297,300,316\\n51,76,78,90\\n82,88,90\\n2,45,47\\n110\\n80,90\\n21,35\\n0,29,31,46,56,71\\n33,135,175\\n24,151,176,180\\n61,64,180\\n43,57,75\\n60,180\\n29,47,63,118,143,159\\n54,56,174,180\\n1,46,62,92,115,149,152,156,165,170,180\\n0,6,9,14,180\\n60,180\\n0,180\\n0,8,12,39,43,52,73,78,81,93,122,128,142,146,151,177,180\\n0,180\\n0,28,39,47,49,57,80,110,112,135,151,156,180\\n0,43,94,112\\n0,180\\n2,74,81,93,114\\n0,2,8,145,149,176,180\\n0,180\\n0,180\\n0,144,180\\n0,20,36,48,81,145,180\\n0\\n0,28,127,154,179\\n10,14,37,62,70,82,85,142,155,180\\n0\\n0\\n9,30,35,86,100,105,140,173,194,216,258\\n18,28,79,95,111,121,141,188,195,208,220,258\\n29,34,55,59,63,67,71,128,189,198,220\\n10,26,29,39,82,182\\n281,318,338,357\\n133,137,141,148,160,170,208,210\\n138,162,185,209\\n18,63,132,196,213,228,337,357\\n18,51,347,355,358\\n0,3\\n180\\n178\\n15,170\\n0\\n0,163,171,177\\n0\\n0,163,165\\n90,119,177\\n75,94,134,145,178\\n2,23,180\\n0,40,97,158,160,169,171,180\\n0\\n12,14,17,22,180\\n0\\n0\\n7,12,27,30,62,95,114,125,184,205,208\\n22,27,33,54,61,71,93,127,185,188,212\\n25,331,338,344,354,358\\n18,243,265,317,352\\n117,147,171,198\\n16,30,32,89,190,194\\n15,28,30,33,185,195,197\\n0,180\\n75,176\\n177\\n35,67,78,85,157\\n54,178\\n0,10,20\\n0\\n3,7,12,17,176,180\\n0,153,180\\n180\\n0,180\\n172\\n1,7,9,15,170,180\\n0,3,29,53,74\\n0\\n0,38,180\\n0\\n0,2,180\\n7,155,174,178,180\\n13,31,171,198,214\\n2,5,17,198,356\\n0\\n0,33,145,165,180\\n0,61,90\\n0,16,38,68,86,99,131,180\\n0,2,23,179\\n0,23,30,180\\n0,180\\n0,13,141,163,179\\n0,179\\n0,44,47,50,59,76,85,92,127,133,143,146,180\\n0,23,26,60,65,80,140,151,163,180\\n100,126,158,279,288,301,319,335,339,344,353\\n104,130,132,138,141,147,316,338,341,348,352\\n0,180\\n164,180\\n1,21,145,190\\n7,144,172,204,351\\n20,23,353,358\\n0,174,180\\n1,58,77,88,96,132,145,153,177,180\\n0,6,173,180\\n0,180\\n0,180\\n1,21,171,178,180\\n0,43,141,171\\n17,28,158,206,338\\n7,23,30,104,135,137,150,185,187,192,194,213,325,329\\n0\\n5,51,61,182,317,341\\n4,8,12,54,58,179,298,318,342,345\\n33,64,105,184,289,328\\n3,25,38,44,70,315\\n0,61,180\\n52,68,86\\n90,93\\n61,84,115\\n80\\n78\\n92,118\\n78,97\\n0,166,174\\n0,20\\n90\\n90\\n83,99,105,139,180\\n0,3,120\\n0,13,18,38,66\\n0,15\\n64,81,94\\n87,122\\n64\\n66\\n62,78\\n51,70,72\\n63\\n68,180\\n82,150,180\\n55\\n58,180\\n75,87,106\\n197,210,213,227,234,271\\n207,268,283,290\\n1,180\\n68\\n73\\n150,179\\n0\\n144,150,156,160,168,173,177,180\\n105,111,119,125,127,129,138,174,180\\n0\\n4,180\\n0\\n0\\n0\\n15,130,132,156,174,178\\n97,117,119\\n154,178\\n150,173,176\\n0\\n0\\n0\\n180\\n17,19,41,58,70,78,83,86,92,108,114,123,139,169\\n12,65,70,154\\n0\\n0\\n0,180\\n0,180\\n1,36\\n0\\n0\\n1,176,180\\n0,2,18,154,156,163,180\\n1,16\\n26,32,35,40,118\\n0\\n0\\n12,22,25,119,140,178,212,221\\n10,18,25,52,58,98,113,115,133\\n15,19,21,23,32,98,100,102,112\\n0,120,124,141,144,180\\n0,177\\n0,180\\n0,180\\n0,180\\n0,45,125,180\\n43,103,190,213,218,264\\n286\\n64,183,293\\n69,186,292\\n181\\n181\\n53,303\\n48,64,282,304,330\\n69,72,174\\n75,175\\n59,170,299\\n69,161\\n71,172\\n60,180,304\\n58,181,307\\n65,84,174,303,320,324\\n184\\n177,191\\n189,192,297\\n181,200,267,297\\n42,48,66,176\\n67,170\\n63,65,82,174,189,307\\n63\\n59,63,66,76,185,302\\n59,291,301\\n72,180,204,207\\n70,180,192\\n35,40,57,311\\n54,68,75,83,186,189,202,204,206,208,229,247,294,298,303\\n64,67,69,176,178,209,272,279,287,297,308\\n0\\n0,2,137,144,147,174,179\\n0\\n1\\n0\\n180\\n166\\n180\\n0,180\\n0,139,149,178\\n0\\n0\\n180\\n179\\n3,7,172\\n0,9,38\\n3\\n0\\n180\\n0,31\\n85,129,147,180\\n3\\n180\\n159,180\\n0,154,174,180\\n0\\n180\\n0,17\\n180\\n0,180\\n0,24,50,52\\n0,25\\n180\\n152,171,180\\n23\\n180\\n0,3,6\\n3,7,75\\n180\\n17,51,53,58,62,84,88,97\\n18,58\\n70,90,94,103,112,152,155\\n66,244\\n11,26,41,47,63,89,110,113,122,226,246,274\\n48,68,82,85,98,269,318\\n62,87\\n55,59,61,63,66,87,93\\n83,89,92,102,129,146\\n16,347,355\\n10,15,19,348\\n58,183,306\\n69,179,304\\n295\\n64,177\\n64,161,176\\n196,291,294,298,302\\n189,203,297\\n0,26,90\\n0,41,57,63,79,84,124,126,180\\n6,13,49,83,89\\n0\\n180\\n0,33,40,44,53,79,88,112,129,180\\n0,46,102,135\\n0\\n0,29\\n180\\n180\\n180\\n1,70,73,96,111,116\\n0,21,25,28,110,124,129,134\\n137,160,180\\n129,180\\n2,7,162,165,180\\n0,6,180\\n4,7,42,54,75,80,93,128,134,180\\n0\\n180\\n145,180\\n178,180\\n82,92,108,124,149,179\\n0,49\\n90,118,120,144,151,166\\n256,291,323,325\\n294,304,308,310,328\\n7,29,42,46,51,54,88,344\\n5,14,29,58,85\\n112,152,198,218,253\\n111,121,154,178,201,222,255\\n144,163,199,254\\n26,153,259,270,322,341,348\\n261,315,333\\n144,147,195,213\\n147,165,195,198,231,272\\n0\\n0,28,33,118,140\\n180\\n0\\n0,124,130,144,152,154,162,180\\n4,61,71,75,78\\n0\\n0\\n1,160,180\\n31,55,62,70,101,165,180\\n23,28,40,60,164,166\\n3,23,41,51,86,109,124,127\\n6,10,12,25,60,73,79,95,121,157\\n52,92,241,251,262,300,339,345,354\\n47,73,101,122\\n69,90,93\\n1,19,36,58,64\\n0\\n7,13,55,117,120,141,160\\n22,168\\n26,43,137,178\\n39,222\\n36,213\\n209\\n208,230\\n180\\n145,180\\n0,3,63,170\\n27,54,60,64\\n64,179\\n65,140,169\\n65,156,171\\n186,209,303\\n54,56,180,296\\n62,187,299\\n62,180\\n56\\n62,90,188,280,284,293,314\\n64,170\\n65,173\\n33,62,180\\n41,49,62,65,79\\n249,288,290\\n197,199,271,292\\n199,286\\n286\\n214,250,260\\n204,222,253,266\\n0\\n7,36\\n33\\n65,77,90\\n56,64,171\\n63,80\\n62,137\\n22\\n22,32,61\\n38,46,50,306\\n173,296\\n60,68,75,312\\n64\\n60,63,78\\n2,174\\n176,186,357\\n180\\n180\\n0,22\\n16,34,52,229\\n90\\n35,57,66,70,72\\n54,56,180\\n0,134,137,152,156,167\\n10,35\\n359\\n0\\n16\\n22,24,26,36,46,56,61,67\\n12,178\\n22,43,61\\n26,57\\n1,157\\n0,44\\n0,8,15,137,153\\n0,18,21\\n1,5\\n12\\n13,41\\n62,83\\n217,239,266,269,277,279,298,312\\n0\\n0,180\\n0,18,42,47,49,73,137,162,179\\n0\\n0\\n0,6,33,45,48,100,102,108,155,158\\n153,170,172,180\\n180\\n0,13,173\\n15,49,58,61,96,103\\n0\\n0\\n46,169,191,193,205\\n174,179\\n24,60,83,180\\n180\\n42,62,65\\n0\\n0\\n61,297,317,320\\n59,65,305\\n12,42,44\\n0,16,18,20,46\\n35,58,60,72,93,154,160,167\\n37\\n0\\n0,3,18,26\\n0,83,112,180\\n15,166\\n0,180\\n9,12,18,28,34,193,358\\n61,65,97,170,180\\n49,76,80\\n53,80,82,98,167,180\\n51\\n35\\n66,77\\n49,57,80\\n14,31,44,62,71,81\\n43,70,184,304,308,317\\n45,66,138,181,310,339\\n75,98,100,154,168\\n76,105,163\\n18,40,66,309,354\\n20,44,60,189,292,311,329\\n3,8,17,29,36,47,179\\n38,48,180\\n54,66,68,180\\n68,172,175\\n70,131,180\\n0,5,9,46\\n28,38,47,64,153,184,190,201,318\\n26,41,44,47,60,153,172,195,206,210,213,318\\n60,180\\n0,6,152,155,180\\n149,180\\n9,13,27,42,90,125,127,167,174,176,180\\n0,43,180\\n180\\n121,151,180\\n67,93,124,126,141,158\\n141,180\\n33\\n12,33\\n0\\n0,180\\n16,150,180\\n0,24,32,159,163,180\\n137,180\\n36,95,98,118,233\\n2\\n0\\n6\\n0,40,59\\n155,180\\n0\\n152,180\\n0\\n75,79,88,90\\n0\\n0,14,24,56\\n0\\n0,30,80,83,90\\n1,38\\n62,71,78,114,138,160\\n85,101,120\\n82,84,102,118\\n91,93,96,98,101,114,268,296,299\\n113,238,243,249,267,279,294,300\\n75,91,93,101,109,133,140,147,283,288,300\\n86,99,112,153,160,291,311\\n91,134,275,303\\n87,117,249,274,284,305\\n0\\n0,19,42,61,80\\n0,22\\n6,16\\n33\\n0,2\\n10\\n0,180\\n33,48,67,128,180\\n0,180\\n0,26,40,154,180\\n0,180\\n0\\n49,76,107,180\\n134,154\\n75,180\\n0,16,156,163,180\\n0,180\\n0,19,142,163,172,180\\n0,180\\n0,161,180\\n180\\n0,144,149,151,157,180\\n180\\n50,55,62,70,167,180\\n58,75,173\\n49\\n0,9,23,45\\n49,67,179\\n48,164\\n0,6,50\\n60,66,161,168,180\\n0\\n0,123,180\\n1,31,56,88\\n0,27\\n0,40,124,180\\n3,63\\n147,180\\n180\\n0,7\\n0\\n0,45,57,180\\n0,50,72,180\\n29,41,143,180\\n180\\n0,7,58,131,149,180\\n180\\n160,173,180\\n180\\n152,179\\n157,162,180\\n179\\n180\\n124,163,180\\n0,30,34\\n0,36\\n0\\n0\\n0\\n0,29\\n0\\n0,33\\n46,135,162,180\\n0,3,27,51,180\\n68,109,143,165,172,176,180\\n180\\n180\\n0,24\\n0,32\\n179\\n0,13,52,180\\n177,180\\n0,2,39,44,48,148,176\\n0,33,43\\n0,41,61,120,136\\n54,180\\n53\\n0,52\\n0,23,34\\n180\\n180\\n125,129,147,180\\n0,55,179\\n170\\n54\\n158,162,180\\n157,180\\n53,56,128,180\\n72,164,318\\n73,127,148,169,276,311\\n51,58,75,79,96,151,181,342\\n63,96,135\\n278,301\\n300\\n312\\n312\\n258,303,312,343\\n276,298\\n177,235,289\\n177,229,287\\n188,204,217,219,289\\n187,215,219,293\\n179,212,232,272\\n177,197,199,230,273,288,290\\n55,308\\n55,307\\n2,26,51,57,324\\n21,52,311,323\\n5,54,83,315,319\\n11,55,90,311,331,350\\n52,310\\n55,311\\n25,46,57,322,336\\n58,78\\n56,94,308\\n3,60,316\\n61,322\\n1,10,14,18,61\\n5,55,323,349,354\\n52,55,72,164,178\\n61,71,73,146,177,313\\n314\\n191,292,297,303\\n168,190,282,299\\n17,19,48,284,312,315\\n48,81,283,302,319,358\\n34,45\\n45,323\\n31,46,323\\n68,172,284,289,293,299\\n65,97,99,173,293,296\\n64,66,79,158,180\\n299\\n298\\n297,344\\n155,190,287\\n158,180,215,285\\n184,202,278\\n54,312\\n55,308\\n47,59,315,343\\n54,316,350\\n64,176\\n63,174\\n163,290,305,307\\n49,313\\n47,313\\n67,149,170,180,183\\n69,155,161,169,171\\n174,178,231,282\\n145,180,228,286,288,298\\n176,232\\n176,229,231\\n47,310\\n49,310\\n40,48,314\\n45,47\\n0,28,107\\n15,59,93\\n0,61,95,97,103\\n0,51,96\\n99,143\\n64,86,122\\n0,15,42,65\\n20\\n0,18,46,52,60\\n14,66\\n18,37,64\\n12,32,55\\n126,167,180\\n93,127,159,169,172,178\\n129\\n125,155,173,178,180\\n128,158\\n125,152,178,180\\n98,129,151,180\\n123,143,146,150\\n0,26,64,75,94,113,143\\n41,51,57,97,144\\n1,37\\n0,103,147\\n98,113\\n21,45,68\\n22\\n13,33,43,51,67\\n29,32\\n98,122,143,157,167,180\\n23,67,85,88,116,120,129\\n0,20,61,63,103,125,180\\n0,23,25,31,108\\n25,74,77,82\\n78,107,130,137,180\\n87\\n18\\n19\\n15,45\\n14,57,59\\n128,156\\n162\\n130,163,180\\n1,15,21,51,67,103,112\\n65,68,71,74,76,93,117,145\\n0,119\\n0,16,52,89,118\\n0,177\\n180\\n180\\n0,100,122,128,137\\n7,37\\n9,120,339\\n117,334,355\\n80,107\\n92,111,124,126,146,179\\n283,303\\n285,303\\n305\\n289,304\\n15,49,65,298,328,347\\n19,50,68,296,328,348\\n6,13,34,66,315,333,349,355,357\\n1,6,17,66,317,327\\n23,42,334,351\\n2,14,16,28,36,45,49,326,353\\n18,41,49,69,347\\n18,47,342\\n3,18,68,332\\n1,10,12,30,37,341,354\\n342\\n183,202,216,248,278,280\\n180,208,229,231,251,253,257,289\\n218,221,252\\n179,209,241,259\\n117,225,353\\n121,219,347,355,357\\n114,140\\n107,109,128,146\\n302\\n302\\n0,2,17,36,40,46,337,347,351\\n17,48,54,330,334,350\\n16,43,48,333,346\\n15,23,46,338\\n9,116\\n116\\n162,194,244,262\\n182,219,225,233,239,248,263\\n328,343,349,358\\n328,353\\n0,90\\n90\\n0,96\\n0,83\\n90\\n0,90\\n14,30,66\\n0,17,69\\n111,163\\n112,149,180\\n0,11,29,42,82,90\\n0,16,58,89\\n62,90\\n0,44,66\\n113,131,136,148,180\\n0\\n180\\n0,40,180\\n79,97,263,281\\n1\\n0,180\\n40,45,64\\n15,38,170\\n18,39,61,79,90\\n1,41,76,90\\n3,11,41,65,85,100\\n42,49,79\\n142\\n86,103\\n107\\n17,43,62,127\\n84,90\\n0,58,93,134\\n0,59,72,77,180\\n138,165,176,180\\n0,23,30,33,56,59,86,97\\n138,180\\n0,3,6,30,72,104,120,144,180\\n1,26,50,99\\n36,76,106\\n15,74,90,92,137\\n126,149,157,171\\n63,302\\n63,305\\n60\\n61\\n0,89\\n0,3,20,77,90\\n0,4,27,29,90\\n62,90\\n29,47\\n34,90\\n63,90\\n0,11,80\\n11,13,42,46,52,101\\n90\\n42,81,90\\n87\\n106,143\\n24,44,55,57\\n0,21,102\\n57,180\\n17,20,25,40\\n15,61,299\\n44,63,295,349\\n180\\n180\\n0,27,29,37,178,180\\n0,180\\n0\\n0\\n71,190,297\\n189,297\\n70,185,271,289\\n59,292\\n48,71,269,295,312\\n71,178,200\\n73,142,179,201\\n71,151,184\\n67,150,155,161,177\\n75,142,181\\n78,144,180\\n182,198,293,299\\n54,300\\n64,66,308\\n165\\n34,41,61,68,78,83,102,128,130,158,180\\n0,22,28,55,60,82,84,97\\n136,166\\n0,3,15,29,53,76,78,80,88,90\\n0,63,65,90\\n0,45,56,58,86,113\\n9,77\\n0,90\\n0,76,81,84\\n10,26,28,36,40\\n120,151,180\\n128,157\\n1,9,33,53,61,90\\n0,47,79,105,126\\n62,79,90\\n0,40,65\\n118,147,180\\n0,26,118,165\\n15,90,103,110,123,135,156,179\\n0,24,39\\n37\\n19,133,156,165\\n4,46\\n0,26,34,42\\n0,81,111,125,154\\n26,45,48,109,127,165,178\\n1,33\\n143,180\\n126,153\\n0,96\\n96,109,159,166,180\\n106\\n123,147\\n94,106\\n88,91,95,106,111\\n46,72,174\\n0,32,51,180\\n41,49,60,310\\n16,50,52,83,311\\n63,73,148,168,181,246,293\\n54,62,73,80,82,145,166,177,300\\n292\\n37,53,308\\n26,56\\n67,82,86,94,98,125,128,144\\n23,47,58,60,317,337,343\\n72,140,159,179,286,306\\n62,155,160,304\\n12,24,27,31,58,76,327\\n17,38,76,318\\n0,41,87\\n0,34,43,53,77,92,94,101\\n37,64,68\\n0,15,27\\n85,89\\n23,43,75,99\\n80,89\\n16,100,173\\n0,49,51,57,66,68,90\\n2,97\\n2,52,90\\n12,42,90\\n0,66,87,102\\n68,90\\n118,138,157,161,170\\n103,125,155,158,180\\n103,133,135,138,155,158,180\\n65,97,109,112,114\\n0,20,41,63,180\\n90\\n58,90\\n90\\n52\\n97,133,159,187,190,287\\n75,168,191,287\\n68,133,180\\n72,74,181\\n67,77,99\\n52,61,180\\n47,49,69,77,85\\n97,110\\n0,19,29,84,90\\n97\\n52,180\\n152,180\\n158,181,188,193,273,295\\n65,297\\n71,179\\n69,178\\n70,72,158,185\\n79,166,186,188,190\\n5,220,245\\n302\\n300\\n70,178\\n69,89,177\\n54,180\\n69,178\\n70,109,112,138,185\\n90\\n97\\n90\\n100,120\\n114\\n70,189,297\\n66,191,220,292\\n69,177,207\\n69,177\\n78,82,180\\n68,70,183\\n70,122,186\\n63,89\\n27,77,80,101\\n90\\n0,52,60,88\\n90\\n13,65\\n65\\n41,60\\n58,92,190,205,227,242,292\\n60,292\\n60,290\\n56,100,289,316\\n179\\n179\\n77,183\\n182\\n193,285\\n88\\n71,90\\n0,25,33,36,53,180\\n48\\n35,56\\n34,57,168\\n51\\n76,81,91,110,182,303\\n87,113,181,306\\n180\\n52,87,150,174\\n180\\n247,293,311,313,315\\n249,293\\n292\\n289\\n0,55,300\\n8,11,55,302\\n55\\n6,55\\n0,16,61,111,119,125\\n58,79,165,180\\n44,58,73,90\\n21,94,97\\n29,42,45,48,82\\n2,14,30,35,78,87,102,105\\n31,68,76,90\\n90\\n0,86\\n180\\n180\\n185\\n185\\n59\\n291\\n290\\n246,293\\n248,295\\n292\\n292\\n42,55\\n0,5\\n0,138,155,180\\n0\\n138,140,142,145,154,156,173\\n0\\n63,186,294\\n65,184,293\\n69,293\\n67,190,210,291\\n59,96\\n57,80,300,333\\n60,300\\n69,175\\n68,176\\n66,162,177,180,187,191,292\\n70,161,180\\n55,66,80,82,180\\n0\\n0\\n0\\n0\\n180\\n167\\n180\\n177\\n0\\n0\\n180\\n180\\n0\\n0\\n180\\n168\\n0\\n180\\n0,180\\n0,180\\n180\\n180\\n0,80,127,133,138,180\\n8,39,46,49,68,78,120,146\\n113,141,169,172\\n120,137,169,176,178,180\\n1,67,89,91,94,108,145,155,157,167,180\\n57,180\\n180\\n35,45,58,307\\n29,59,305\\n56,312\\n27,57,304,323\\n180\\n45,65,296\\n0,180\\n0,27,32,58\\n180\\n0,22,26,65\\n70,106,157,161,299\\n70,146,149,301\\n63,65,87,91,93,122,169\\n70,93,95,121,132\\n63,65,81,108,143\\n96,114,144\\n256,298\\n262,300,305,332\\n60,90\\n60,92\\n61\\n59\\n178,296\\n178,299\\n179,198,201,247,291\\n181,211,237,253,296\\n180,264\\n71,73,119,127,129,132,136,143,146,299\\n69,133,154,298\\n63\\n63\\n283\\n40,59,63,73,76,88,97,101,139,308\\n55,75,124\\n151,188,196,199,202,219,271,278,280,317\\n193,217,252,257,286\\n0,180\\n0,23,180\\n0,55,96,120,137,144,180\\n0,5,13,15,25,45,49,53,79,104,143\\n14,37,53,88,108,110,121,136,171,180\\n0\\n1\\n0\\n0\\n358\\n0\\n46,310\\n71,87,101,124,151,223,245,263,270\\n0,10,13,20,27,54,306,333,340,347,350\\n78,97,263,282\\n71,85,98\\n34,51,76,94\\n44,60,88,137\\n0,176\\n0\\n0,23,173,178,330\\n0\\n182\\n46,53,67,174,304\\n180\\n136,145,171,177,181,224\\n0\\n0\\n0,16\\n0,64,94,121,141,152,155,157,162,166,171\\n0,9,40,171,180\\n92,115,128\\n183,358\\n19,34,47,307,311,315,329,354\\n7,11,14,355\\n173,180\\n10,29,158,180\\n0\\n0,180\\n0,27,31\\n0,180\\n0,180\\n180\\n6,180\\n0,180\\n0,180\\n1,15,73,81,93,95,101,111,131\\n4,132,149,333,339,346\\n0,110,135,145,265,356\\n0,43,64,83\\n0,36,58,92,109\\n90\\n0,17,36,71\\n111,142,163\\n26,97,112,136,143\\n0,122\\n3,8,25,28,102,113,123,141\\n0,13,32\\n137,139\\n113,130,180\\n123,127,149,169\\n66,90,115,118,124,127,140\\n0,34,79,100\\n89,120,124,128\\n93,123,136\\n110,126,153\\n57,180\\n49,52,61,63,180\\n35,44,56,172,174\\n180\\n159\\n55,180\\n65,175,292,303,308\\n67,172,295,306\\n62,187,331\\n56,305,330\\n54,303\\n56,314,317\\n56,293,310\\n177,299\\n172,196,275,293\\n37,62,66,169,302\\n61,176,299\\n57,307\\n57,305\\n0,170\\n0,102\\n0,32,55,180\\n0,5,13\\n180\\n180\\n180\\n173\\n0,36\\n0,178,180\\n180\\n180\\n0,73,88,97,100,104,112,123,127,130\\n5,9,41,47,51,84,113\\n0,20,47,51,57,69,100\\n134,151,180\\n128,151,180\\n131,179\\n94,124,163,173,179\\n0,19,22,52,55,108,121,146,149,151\\n0,50,104\\n0,85,97,105\\n106,153\\n150\\n3,116\\n0\\n0\\n0,115\\n180\\n180\\n180\\n180\\n0,180\\n0,179\\n215,241,260,262\\n193,213,234,244\\n4,117,135,202,240\\n2,101,130,164,197,205,235\\n12,205,228,237,239,353\\n1,211,218,220,223,242,342\\n31,54,80\\n31,57\\n31,56\\n94,108,112,114,135,177,179,182\\n74,77,107,122,128,138,176\\n102,141\\n108,144,147,150\\n81,105,139,164\\n93,110,113,140\\n101,111,114,144\\n89,108,123,144,167\\n60,185,297\\n62,187,222,297\\n41,47,53,72,171,184,190,203,213,221,229,240,284,305\\n43,60,66,69,183,191,200,281,296,304\\n47,56,60,184,202,258,268,295\\n40,195,205,228,258,294\\n227,274,280,286\\n25,28,57,91\\n20,23,58\\n60\\n62,88\\n57\\n64\\n53,304\\n52,304\\n301\\n1,10,34,60,304,330\\n49,279,308\\n278,306,326\\n67,132,149,176\\n69,177\\n73,123,176,202\\n72,124,128,149,176\\n67,117,181\\n44,66,108,180\\n96,112\\n74,100,121,144,154,169,178,181\\n46,73,164,184\\n64,81,183,297\\n67,188,296,340\\n48\\n47\\n52,307\\n53,307\\n49,74,87,91,153,170,196\\n74,95,139,167,170,193\\n38,72,168\\n62,182,274,297\\n60,182,297\\n304\\n50,305\\n305\\n50,304,352\\n71,73,171\\n50,72,176,200\\n77,149,172\\n63,180,285,298\\n0,5,42,76,99,134,180\\n23,61,70,101,180\\n45\\n164,180\\n159,180\\n159,180\\n164\\n64,68,180\\n47,49,65,72,105,180\\n66,75,88,100,103,161,170,175,180\\n165,178\\n158\\n0\\n0\\n90\\n0,18,22,28,90\\n0,8,11,28,30,36,57,69,77,85\\n90\\n0,18\\n0,20\\n180\\n112,162\\n0,33,37,77,85,90\\n0,105\\n90\\n0,30\\n114,143,180\\n0,119\\n0\\n0,41,43,116,180\\n180\\n0,4,7,27,47,67,94,121,157,159\\n0\\n0\\n15\\n0\\n1,17\\n13\\n0,5\\n162,173,180\\n138,167,172\\n107,149,180\\n0,50,53,103\\n16,25,89,112,115,136,146,153,157,179\\n0\\n0,27,66\\n0\\n11,78\\n157,176,180\\n1,6,92,123,127,171\\n0,32,111,131,134\\n0\\n0\\n0,18\\n180\\n180\\n107,110,135\\n0\\n0\\n0\\n142,176\\n14,83,87,113,124,147,169,180\\n0,14,25\\n122,165\\n166\\n0\\n180\\n0,37\\n14,28,49\\n1,21\\n1,8,21,43,46,52\\n180\\n180\\n42\\n9,45\\n0,5,22,46,49\\n85,129,177\\n84,105,112,116,148\\n78,111,151,172\\n95,140,176\\n102,135\\n265,271,278,298,320,324\\n312\\n62,304\\n61,303,326\\n15,23,33,62,308\\n19,27,43,62,92,318,321,344\\n59\\n35,39,58,350,353\\n133,174,176,185,218,233,289\\n151,153,172,178,239,278,282,284,287\\n138,176,261\\n133,152,172,187,192,276\\n79,108,116,162,296\\n72,79,88,91,116,164,297\\n27,63,103,305,329,350\\n29,61,305,343\\n56\\n58,105\\n159,186,196,226,260,267,281\\n152,190,193,258,279\\n75,101,126,133,139,155\\n70,93,103,143,152,159\\n150,171,194,263,288\\n182,271\\n49,308,323,326\\n52,92,322\\n48,80,314,317\\n47,75,84,86,315\\n46,320\\n186,247,289,292\\n175,192,198,252,270,289\\n72,78,93,159\\n76,78,141,163\\n51,315\\n16,25,52,314,325\\n181,277,281,284,288,290\\n176,192,279\\n180\\n0,154\\n357\\n0,10,13,15,29,32,36,67,116,129,132,153\\n48,310\\n0,180\\n0\\n16,20,27,37,40,54,56,70,103,105,115,128\\n23,42,64,80,83,90\\n0,5,33,63,90\\n131,155\\n47,54,90\\n2,5,23\\n180\\n117,156,167,173,180\\n0,24\\n0,20\\n0\\n0,10,20\\n22,33,38,335\\n76,92,111\\n0\\n60,77,148,180\\n93,135\\n187,296\\n71,181,294\\n67,169,186,296\\n289,291\\n53,188,211,214,302\\n180\\n169,180\\n1,14,180\\n67,186\\n65,152,183\\n62,76,96,115,171\\n77,80,88\\n33,80\\n84\\n156\\n68,81,83,85,93,116\\n67,92,103,111,131,157\\n25\\n77,80,103\\n0,2,9,11,19,21\\n97,102,111,130,150\\n296\\n296\\n49,172\\n50,173\\n46,190,291\\n48,188,289,291\\n49,185,291\\n42,160,183,292\\n40,289,309\\n34\\n0,18,37,55,61,63,68,90\\n11,14,31,34,58,79,164,177,180\\n75\\n0,12,18,23,25\\n147,172,176,180\\n22,36,48,61,76,78,80,95,169\\n59,95,109,126,144,148,172\\n0\\n50,61,68,92,104\\n54,103,127,133,136,139,149,154,156\\n45,85,355\\n81,103,126,147,160\\n89,109,132,151\\n21,36,40,59,86,90\\n0,8,13,22,43,54,69,73,75,93,95,134,143\\n62,64,89\\n15,20,39,48,90\\n0,5,9,12,18,40,59,68,72,96\\n51,90\\n72\\n12,43,73\\n105,160,180\\n109,142,170,180\\n57,59,63,94,119\\n0,10,40\\n0,35\\n40,59,312\\n43,61,311\\n20,29,41,54,91,325,344,358\\n177\\n0,3,6,10,30,44\\n0,92\\n0,33,95\\n47,58,295\\n62,181,280,299\\n58,70,225\\n61,171,190\\n0\\n0\\n1\\n0\\n0,180\\n0\\n1\\n55,59,297,311\\n80,112,118\\n64,74,290\\n79,99,102,296\\n0\\n0\\n63,189,294\\n63,185,295\\n186,293\\n0\\n351\\n12,29,67\\n116,160\\n12\\n0,16\\n65,90\\n0,180\\n0\\n0\\n180\\n141,170,180\\n0\\n180\\n0,123,179\\n359\\n358\\n85\\n67,69,87\\n1\\n56,167\\n54,66,166\\n28,48,139,163,172,180\\n180\\n0,4,7,39,61,64,81,129,147,149,157,170,178,180\\n47,49,58,63,328\\n60,318,324,332\\n0,180\\n0,59\\n0,180\\n0\\n0,180\\n0\\n0,43,146,180\\n0,180\\n0\\n0,180\\n1,180\\n0\\n0,180\\n13,19,31,33,38,61,79,109,129,155,160,168,174,180\\n0,13,180\\n0,17,101,119,136\\n158,160,162,180\\n64,189,294,304\\n69,183,304\\n54,304\\n54,303,327\\n43,61,78,164,178\\n62,72,78,163,185\\n51,306\\n46,50,306\\n0,2,8,18,47,67,83,95,125,160,165,168,170,174,180\\n0,33,56,88,110\\n49,54,56,63,66,93,103,121,138,157,177\\n68,108,128,174,180\\n64,92,102,133,155,157,180\\n59,90,101,110,116\\n9,24,62\\n118,167,170,180\\n49,52,180\\n90\\n104,135,171,177,180\\n180\\n180\\n90\\n26,37,53\\n73,99,110\\n33,36,40,58\\n41,54,56,81,84,90\\n0,20,54,75,81,94,112\\n106,145,168\\n61,281,306\\n60,282,305\\n62,306\\n61,305\\n290,310\\n291,310\\n59,306,333\\n0\\n0\\n0\\n0,180\\n0\\n157,178,180\\n180\\n0,56,58,180\\n0\\n126,180\\n0,180\\n0\\n0\\n179\\n0,2,177,179\\n0\\n167,172,177,180\\n0,44\\n0,63,69,180\\n0\\n0,24\\n0\\n0,10,17,32,66,163,165,180\\n11,26\\n0,56,150,179\\n0,21,24,123,135,180\\n152,156,180\\n0,18,136\\n0,19,54,67,69,72,74,90\\n0\\n180\\n0,169\\n0,45,87,105\\n121,148,164,166\\n102,108\\n0,13,99,116\\n9,30,44,79,98,128,137,146,156,180\\n0,41,43,78,83,107,109\\n0,33,35,37,52,81,84,92,130,180\\n10,59,68,91,95,101,107,110\\n13,57\\n180\\n59,304\\n58,304\\n0,47\\n4,19,29,180\\n0,4,27,50,55,77\\n0,38,57\\n0,38,78\\n0,180\\n0,21,28,36\\n0\\n0,33,35,38\\n0,3,9,36,38,63,66,90\\n0,27,45\\n151,180\\n90\\n69,90\\n0,155,180\\n70,89\\n27,59\\n62,83\\n74,91,97,117\\n75,77,79,96\\n89\\n75,97\\n0,54,76,82\\n79,92,100,119,150,180\\n40,52,72,83,101,127\\n68,83,106,120,155\\n71,83,88,119,122,139,173,180\\n85,97,113,118\\n2,7,9,18,22,89,95\\n110,125,155,159,161,164,167\\n44,81,111,117,142,146,159,180\\n39,54,91,129\\n193,205,262,270,290,296\\n191,289,291\\n70,181,202\\n62,151,180\\n182,195,300\\n185,191,195,296\\n0\\n0,47,115,180\\n0,31,57,81,90\\n0,3,35,53,55\\n17,45,55,128\\n50,57\\n0,180\\n180\\n4,180\\n0\\n0\\n0,28,52,90\\n180\\n0\\n0,180\\n0\\n0\\n0,21,145,163,166,180\\n0,27,34,70,129,134\\n0\\n180\\n7\\n8\\n128,132,180\\n180\\n180\\n162,179\\n142,158,170\\n9\\n180\\n180\\n180\\n180\\n0,18,21,52,59,65,154\\n0\\n180\\n180\\n67,90,93,138,172,180\\n0,49,129,151,170,180\\n91,180\\n0,22\\n163,165,180\\n119,167\\n79,104,108,111,125,130,134,292\\n64,92,119,150\\n293\\n40,59,84\\n46,317,327\\n29,48,322,336,339\\n62,124,157,176,211\\n54,317,345\\n52,315\\n53,304,340\\n70,98,104,137,155\\n0\\n180\\n1\\n0\\n1,33,55,64,67\\n36,67,71,180\\n0,180\\n76,194,283,298\\n188,299\\n19,38,54,61,126,144,159,163\\n180\\n13,34,39,62,95,119,159,170\\n180\\n163,180\\n0\\n0,19\\n0,180\\n153,180\\n0,180\\n180\\n180\\n0,46,68,89,92,107,137,140,152,180\\n44,62,125,130,136\\n0,7,61,64,84,99,116,146,162,180\\n82,87,115\\n68,305\\n180\\n180\\n0\\n0,162,180\\n173,182,188\\n0,180\\n0,3\\n18,87,100,106,142\\n0,4,7,10,13,16,74,77,82,84,90,98,109,115,132\\n105,165,200\\n100,170,201\\n16\\n0,5,169,180\\n0,5,9,14,165,168,170,176,178\\n180\\n0\\n21,27,30,53,65\\n1,59\\n180\\n0,120,180\\n0,180\\n180\\n0,180\\n145,180\\n1,154,180\\n0,162,180\\n180\\n1,180\\n163,180\\n0,173,180\\n0,180\\n0,178\\n180\\n69,91,121,163\\n0,2,5,24\\n170\\n0,156,180\\n23,148,180\\n89,91\\n0,16,149,175\\n0\\n0,90\\n0\\n0,26\\n136,164,166,176\\n0,40,87,90,147,180\\n0,35,65,68,89,92\\n125,127,155,180\\n75,94,103,109,112\\n173\\n180\\n0,91,116\\n180\\n42,51,53,58,136,143\\n0,180\\n11,22,30,160\\n21,27,33,36,73,90\\n0,55\\n17,27,38,46,68,90\\n0,2,55,65,75\\n0,10,20,164,180\\n3,180\\n0,180\\n0,96,180\\n0,14,177,180\\n0,4,175,179\\n0,180\\n0,180\\n0,180\\n0\\n180\\n0,180\\n180\\n180\\n0,44,109,114,154,174\\n111,144,162,164,180\\n5,59,62,67,97\\n180\\n0,180\\n0\\n180\\n145,152,166,168\\n0,180\\n142,180\\n0,17,180\\n0\\n0,176,180\\n59,93\\n56,100,102,150,180\\n0,99,134\\n110,116,123,158,162,169,178\\n0\\n0\\n0\\n0\\n0,12,15,40,180\\n180\\n0\\n0,16,54\\n180\\n180\\n0\\n180\\n0,31\\n0,8,25,45,131,161,163,167,180\\n0,180\\n0,23,35,68,88,109\\n0,8,24\\n0\\n0,180\\n0,25,41\\n0\\n2,10,25,143\\n0\\n165,180\\n180\\n0,31,180\\n0,180\\n0,180\\n0,180\\n0,180\\n13,82,108,110,115,119,126,141,144\\n55,90\\n3,52,73,111,139\\n37,88\\n13,59\\n120,165\\n135,156,160\\n0,6,57,96,104,109,122,128,134,139,149,153\\n0,94,115,128,131,138\\n11\\n0,16,34,66\\n126,151\\n128,161\\n0,119,121\\n128,141,164,180\\n2,15\\n1,10,50\\n58,180\\n180\\n56\\n63,170\\n14,56,303,320,354\\n3,29,55,303\\n56,300\\n36,57,301\\n176,180,192,194,269,271,279,293,323\\n179,182,293\\n63,176,291,301\\n59,178,299\\n305\\n3,9,15,35,39,54,76,307,336\\n54,77,309,322\\n176,200,260,288,310\\n59,168,287\\n62,161\\n0,180\\n0\\n0,156,168,179\\n0\\n0,180\\n0,27,62\\n0,21,35,152,180\\n6,59,180\\n0\\n10\\n180\\n180\\n180\\n180\\n54,63,66,133,169,180\\n0,18,34,38,40\\n180\\n0,97,117\\n0,23,35,90,117\\n80,109,150\\n83,102,127\\n19,30,71\\n130,178,180\\n110,112,119,150\\n91,136,152,176\\n125,138,141,179\\n8,39,63,85,117\\n0,7,14,67,89,108\\n55,90\\n0,11,35,73\\n18,47,75\\n160\\n0,25,38,69,106,120,122,145,148,151,157,161\\n0,21,75,78,83,95,105\\n169,180\\n0,5,10,13,137,151\\n9,12\\n0,25\\n180\\n180\\n180\\n0,151,154,166,180\\n0\\n180\\n19,34,37,48,119,127,144,147,152,155,167,180\\n0,180\\n0\\n131,158,180\\n180\\n210,216,238,243,256\\n124,127,208,233,358\\n0,128,130,210,232\\n32,55\\n30,56,78\\n56\\n57\\n20,345,349\\n23,350\\n110,115,133,144,156,162,171\\n128,133,144,170,175,189\\n111,142,159,179\\n75,90,108,128,146,160\\n1,13,101,114,238,241,245\\n62,185,298\\n58,188,298\\n191,196,198,223,296\\n54,70,194,197,213,216,241,298\\n188,191,215,226,232,242,287,299\\n180,190,197,290,297\\n58,82\\n59\\n38,59\\n49,54,60\\n5,53,305,347\\n6,53,306,340\\n55,304,320,322\\n51,309,327\\n44,304\\n45,52,58,303\\n70,180\\n70,179\\n66,104,181\\n102,180\\n71,114,123,130,178\\n66,79,82,171,173,177\\n62,184,295\\n61,83,188,297\\n137,163,166,199,296\\n202,221,297,305\\n17,47,312\\n50,310\\n83,171\\n88,173\\n91,157,179\\n53,56,191,297\\n57,189,193,269,294\\n63\\n13,52,281,305\\n51,278,306\\n50,307\\n40,260,310,327\\n73,174\\n77,173\\n53,68,184,294\\n68,178,196,300\\n49,312\\n51,309\\n0,16,18,27,31,39,51,75,114,180\\n16,18,43,47,54,57,84,99\\n0,54,56,91\\n80,180\\n114,164\\n154\\n25,59,72,74,142,180\\n0,69,76,78,100\\n0,50,55,70,75,90,92\\n59,73,79,148,154,180\\n0,16,19,29,33,62\\n19,23,27,37,65\\n128,162\\n160\\n162,180\\n156\\n29,74,92\\n72,108,114,128,135,162,180\\n0,56,62,66,87\\n50,73,94,96,151,154,180\\n75,92,103,170,180\\n21,39,41,64\\n19,29,49,63\\n130,132,137,139,141,167\\n134,164\\n157\\n53,57,59,81,84,86,90,93,95,107,113,119,126,130,168,170,173,175\\n0,2,5,9,29,62,78,90\\n72,88,91,180\\n77,101\\n0,37\\n0,41\\n2,16,44,73,90\\n8,58,90\\n2,66,119\\n90\\n6\\n0,40\\n180\\n143,180\\n180\\n110,135,152,180\\n0\\n0,42\\n0\\n0\\n0,31,36,92,123\\n0,5,16,33,35,73\\n0,78\\n0,44,90\\n2,14,30\\n0,12,43,50,53,56,66\\n0,17,49\\n0,26\\n162,180\\n117,156,179\\n0,31,33\\n0,108,146\\n47\\n0,27,90\\n1,29\\n0,29\\n123,154,180\\n0\\n0,180\\n0,56,59,61,63,73,131,180\\n0\\n12\\n9,11,17,19,21,54\\n180\\n0,53,80,122,180\\n0\\n0,39\\n0,177,180\\n180\\n21,27,29,180\\n0\\n1\\n180\\n126,141,180\\n0,20\\n138,175,180\\n21,51,75,97,116,139,159,180\\n0,18\\n35,42,46,62,112,144,163\\n19,50,180\\n0,4,6,43,47,49\\n14,24,34,180\\n29\\n43,62\\n0,6,23,28,33,38,48,179\\n0,13,24,40,43,54,76\\n41\\n19,40\\n90,124\\n84,89,103,119,126,150\\n2,62,295\\n30,60,93,293\\n1,26,28,40,66,68,325,344,351,356\\n20,28,40,67,321,338,340,355\\n38,57\\n59,61,63,67,70,100,119,173\\n67,174\\n86,152\\n85,90,103,106,132,150\\n62,301\\n63\\n26,46,330,351,353\\n26,49,326,332,334\\n89,105,127\\n71,83,86,90,103,106,115,135\\n173,289\\n172,190,193\\n37,41,45,314\\n71,77,84,152,155\\n51,303\\n29,32,35,53,337\\n46,84,315,322\\n13,52,82,326\\n73,173\\n75,108,167\\n47,312,336\\n6,50,76,96,313,316,328\\n72,87,94,119,144\\n69,125,128,157\\n0,33,44,48\\n0,55\\n134,175,180\\n180\\n0\\n0\\n0,156,180\\n0,6,20,74,97,123,148,154,162\\n180\\n0\\n0\\n9,13,15,170\\n1,10,13,19,26\\n41,180\\n29,33,37,55,68,90\\n90\\n1,26,52,180\\n65,90\\n79,105,145,166\\n180\\n58\\n162,180\\n78,101,113,123,137\\n0,22,56\\n0,38,57,82\\n0,6,28,35,43,60,82\\n48,180\\n53,78,90\\n87,89\\n0,93,160\\n78,144,178\\n0,44,76\\n93\\n94,108,122,127,157\\n24,55\\n30,59\\n102\\n100,102,105,180\\n0,14,43,81\\n0,38,151,180\\n55,79,81,90\\n86,90\\n0,22,80\\n16,54,56,62,64,89\\n0,27,29,100\\n62,82\\n90\\n117,119,132,159,167,180\\n32,69\\n14,42,90\\n1,21,38,95\\n82\\n4,7,28,30,32,65,67\\n69,86,119,309\\n69,115,304\\n176,204,290,310\\n150,176,247,292,309\\n59,306\\n59,301\\n43,46,62,65,93\\n61,94\\n60\\n60\\n69\\n67,80,83,142\\n51,80,280,284,313\\n52,286,313\\n60,83,86,89,154,166,241,250,253,279,282\\n66,68,84,132,152,154,161,170,245,282\\n312\\n112,138,161,200,278\\n113,160,201,280\\n59,302\\n59,302\\n68,87,114,120,129,156,268,274,276,284,292,294,300\\n71,90,111,119,123,162,269,273,289,295\\n278,315\\n278,314\\n62,91,285\\n35,41,47,75,101,103,293,295\\n78,123,138,270\\n78,98,271,300\\n0\\n0\\n0,8\\n104,125\\n12,16,24,40,74,327,355\\n9,43,75,328,353\\n123\\n117,136,324\\n36,72,324,359\\n38,327,357\\n180\\n141,169,179\\n13,15,35,41,90\\n0,25,30,103\\n86\\n90\\n86\\n90\\n15,60\\n15,71\\n110,165\\n85,103,132\\n150\\n127\\n57,173,175,180\\n10,55,303,321,358\\n19,55,304,359\\n16,57,92,309,338,356\\n63,176\\n56,71,302\\n180\\n180\\n0\\n167,180\\n0,5\\n154,180\\n67,189,226,298\\n68,191,222,226,282,289,300\\n206,299\\n208,299\\n56,58\\n62\\n57\\n57\\n2,53,305,353,358\\n55,304,339\\n72,179\\n179\\n61,186,207,296\\n62,186,279,288,300\\n45,313\\n92,173\\n185,299\\n54,304,342\\n304,343\\n81,97,129,137,169\\n75,95\\n14\\n0,4,29,173,176,180\\n0,4,9,36,53,59,81\\n40,51,89,110\\n77,85\\n124,146,155,167,177,179\\n0\\n23,64,90\\n59,180\\n57,306\\n57,75,82,304\\n177\\n77,144,156,177\\n52,180\\n3,8,17,40,45,58\\n180\\n180\\n56,180\\n56,314\\n56\\n48,305\\n48,284\\n0,9,83,85,90,100,105,119\\n52,91,113,119\\n24,49,55,62\\n0,9,70\\n98,117,135\\n123,151\\n90,112,151\\n87,96,108,129\\n93\\n29,57,78\\n0,6,13,51,102,133,137\\n10,27,41,43,69,71,101\\n87\\n91\\n0,8,35,78,84,88,97,159,164\\n0,31,38,42,93,102,109\\n91,109,111,158\\n58,105\\n0,10,20,41\\n0,35,331,354,357\\n29,329,348\\n85,88\\n0,18,95\\n90\\n6,23,46,80\\n106,141\\n1,23,25,35,41,90\\n0,6,105\\n1,33\\n0\\n0\\n0,180\\n1,21,27,87,89,153,155,179\\n90\\n13,33,171,178\\n62,66,69,86,89\\n0\\n0,180\\n0,2,6,171,180\\n25,32,41\\n63,74,87,90\\n0\\n180\\n0\\n0\\n357\\n359\\n0\\n180\\n0,21\\n0,22\\n0,31\\n33,38,41\\n79,284\\n78,283\\n0\\n53,70,81,137,169\\n36,53,75,84,92,126\\n164\\n0,41,54\\n180\\n0,40,58,60,180\\n79,96,102,105,170\\n93,96,159,165\\n46,281,299,308,312,314\\n49,280,303,305\\n0\\n180\\n0\\n180\\n0\\n180\\n0,180\\n0\\n180\\n0,2,6\\n0\\n0,27\\n0,37,52,54,56,110,125\\n118\\n180\\n105,142,164,167,180\\n0,8,10,43,57,78,102,180\\n0,29,39,43,89\\n180\\n40,180\\n0,22,32,42,161,180\\n180\\n180\\n80,96\\n192,216,227,237,241,245,256,259\\n2,34\\n24,45,63,77\\n27,37,71,90\\n57,61,90\\n99,130,151\\n91,111,134\\n17,36,54\\n89,109,125,128\\n2,30\\n20\\n0,35,54,143\\n0,21,23,33\\n80,120,133,147\\n61,97,123,128,164,302,307,313\\n88,94,100,104,120,126\\n94,109,119,133,139\\n56,93,306\\n60,92\\n85,105,115,141,168\\n74,102,124,147,163,296,301\\n79,97,102,108,146,161,164,167\\n95,108,111,118,125,144,157,176\\n106,136\\n84,101\\n75,79,109,127,141\\n52,76,113,142,178\\n153,172\\n112,152,161,167\\n91,144\\n64\\n95,118,162\\n109,135,157,180\\n89,150,164,180\\n89,91,114,124,152,180\\n68,73,75,92,107,119,168\\n86,125,148,180\\n96,118,133,151,157,161\\n108,119,131,142,152,170,180\\n96,141,162\\n0\\n114,153\\n1,17\\n64,90\\n104,111,121,140,157,159,180\\n255\\n97,256\\n0,50\\n1,11,15,19,47,52,56,119\\n63,68,90\\n2,12,33,46,60\\n0,45,77\\n0,7,11,13,35,42,59,62,91\\n90\\n100,117,180\\n0,22,180\\n81,88,91,106,138,155,157\\n91,107,118,147\\n91,100,130,151\\n21,52,94\\n10\\n108,110,157\\n106,128,140,142\\n10,51\\n87,115\\n88,102,121,211,214,216,231,236,245,248\\n81,96,223,246,249\\n108,221,238,263,279\\n0,4,18,25,47\\n0,55,66,68,88,116,118,121,146,180\\n0,15,24,35,46,52,64,100\\n46\\n145\\n64,181,199,298\\n45,59,179,187,190,193,297,313\\n0,6,180\\n0\\n180\\n158,180\\n0,12,78,89,102,106,114,121,136,174\\n0\\n145,180\\n0,150,157,169\\n0\\n148,180\\n0,3,35,59,98,102,106,110,114,135,148\\n0,27,29,33,57,100,160,174,180\\n0,116\\n37,310\\n28,33,39,58,308\\n2,24\\n61,182\\n98\\n85\\n53,66,185,188,194,295\\n57,80,87,110\\n61,63,69,79,111,129\\n0,24,66,76,88,116\\n61,66,92\\n0\\n36,39,57,161,180\\n0,35,45\\n70,90\\n0,22,34,37,42,60\\n69,87,89,114,127\\n54,61,74,101,143\\n58,75,188,300\\n78,184,300\\n0,10,81\\n1,180\\n0,177\\n0\\n0\\n0,160,170,176\\n53,64,177\\n0,179\\n0\\n3,12\\n2\\n0,103,180\\n152,166,172,180\\n14,52,62,108,173,178,180\\n0\\n0\\n180\\n160,180\\n0\\n154,173\\n0,24,31,87\\n0\\n0,178\\n180\\n180\\n0,180\\n171,180\\n0,145,176,180\\n0,177,180\\n0,24,157,180\\n0,180\\n16,38,61,85,88,91,99,130,158,175,180\\n15,41,49,57,79,87,105,107,130,152,154,180\\n0,2,169\\n2\\n0,154,168\\n0,7,180\\n34,51,79,88,94,121,160,164,173,303\\n25,30,36,67,89,118,156,173,290,312\\n58,330,333\\n59,326\\n0,5,135,153\\n0\\n0,180\\n65,182,184,296\\n66,187,204,295,325\\n59,75,303\\n58,303,338\\n66,176\\n66,86,93,164,180\\n188,296\\n295\\n54,306\\n62,145,151,179\\n0\\n0,174,180\\n72,82,90\\n87\\n59,90,107\\n35,64\\n72,103\\n62,296\\n297\\n180\\n0,72,98\\n150,157,180\\n0\\n0\\n0\\n0\\n180\\n180\\n180\\n180\\n0\\n0\\n180\\n180\\n0\\n0\\n180\\n170\\n0\\n180\\n0\\n0\\n0\\n223,227,247,269\\n257,277,280\\n74,143\\n274,282,289\\n288\\n287\\n0\\n0,25,38,43,46,122,127,140,175,180\\n180\\n180\\n0,38,48,88,180\\n26,64,66,71,73,135\\n113,152,173,176,180\\n103,151,179\\n10,27,41,56,70,148,168\\n109,147,153,175\\n0,180\\n11,52,76,144,150,180\\n41,61,66,77,79,93,119,168\\n58,308\\n57,354\\n189,212,293\\n192,292\\n0\\n174,191\\n67,174,192\\n65,71,190,289\\n189,196,289\\n61,305\\n0,177\\n90\\n90,110\\n0\\n5,31,65,100\\n85,118\\n100,126\\n103,109,118\\n58,72,298,351\\n39,45,55,75,115,302,307,313,350\\n25,76,114,294,358\\n76,111\\n0,3,20,23,42,45,48\\n170,180\\n61,297,300,303\\n45,60,75,299,317\\n53,100,132,161\\n53,82,124,144,169\\n66\\n12,65,307\\n180\\n0,180\\n0,180\\n0,180\\n0,163,171,180\\n5,8,15,17,20,23,31,39,55,65,75,113,123,127,155,176,179\\n0,125\\n72,74,84,88,90,140,148,163,180\\n53,76,80,84,88,92,116,135\\n53,66,86,140\\n19,61\\n62,187,298\\n61,184,297,301\\n53,64,300\\n58,301\\n66,68,137,176,192\\n68,177\\n67,190,192,303\\n64,185,300\\n53,306\\n58,303\\n0,180\\n0\\n109,154,180\\n0,2,156,161,163,171,179\\n1,39,56,85,99,101,123,126,180\\n115,180\\n0\\n0\\n0,22\\n0\\n0,64\\n180\\n180\\n0\\n180\\n14\\n70,125,180\\n175\\n161,180\\n180\\n114,143,153,180\\n87,120,145\\n180\\n180\\n94,106,141\\n72,94,116,130,136,151,163,165,298,300\\n71,105,126,140,149,297\\n44,61,300\\n59,63,306,317\\n176,265,287\\n175,193,275,295\\n73,140,163,295\\n68,74,121,147,299\\n43,62,80\\n53,68,85,308\\n43,90,308,322\\n47,81,311,328\\n111,113,115,166\\n0\\n286\\n273,290,307,331\\n308\\n302\\n54,298,300,304\\n70\\n180\\n180\\n56,70,291,303\\n61,174,297\\n0,8,180\\n0\\n14,26,50,55,70,76,94,96,99,160,180\\n98,134\\n0,180\\n28,180\\n0,11,34,112\\n0,40,44,74,84,101,179\\n10,19,55,67,72,76,83,96\\n0,25,30,59\\n222,233,259,315,332\\n25,220,276\\n21,31,217,248,268\\n249,270\\n218,260,273,275\\n33,49,279\\n0\\n0\\n1\\n0,2\\n0\\n0\\n1\\n180\\n0,180\\n1,167,174,176\\n0,180\\n2,6,29,77\\n0,14\\n0\\n21,160\\n0,180\\n2,17,29\\n0,180\\n0,123,180\\n0,25,29,38,85,116,158\\n38\\n180\\n4,180\\n0,180\\n0,5,11,14,94,110,133\\n0,25,27,31,44,47,88,114,128,132,154\\n0,21,59,99,101,104,158,160\\n136,180\\n0,33,180\\n0\\n128,132,144,180\\n0,8,10,164,171,177\\n0,179\\n0,159,164,180\\n0,2,180\\n180\\n0,17,24,180\\n2\\n0\\n0\\n0\\n74,94,138\\n12,39,62,69,72,91\\n43,78,109,111,125,178,180\\n90,114,146,170\\n74\\n0\\n0\\n0,11,13,60,65,80,90\\n0,10,50,57,78\\n0,174,180\\n1,15,17,52,180\\n3,15\\n8,180\\n0\\n1,24\\n0\\n180\\n0\\n22,94,135,154,180\\n67,81,91,95,112,130,172,180\\n35,145,167,180\\n0,180\\n0\\n0\\n180\\n26,28,141,144,148,159,161,172,175\\n0,23,147,150,156,180\\n0,180\\n0,180\\n54,90,124,149,180\\n0,35,54,134,153,171,174,177\\n0\\n0,180\\n0\\n0\\n0\\n0,3,25,180\\n0,9\\n0,23,30\\n58,81,87,114,123,133\\n168,180\\n0\\n0,180\\n0,179\\n0\\n3,7,9,180\\n0\\n152,166,180\\n180\\n128,138,155,169,174\\n146\\n311,318,326,350\\n284,312,326,352\\n59\\n63,67,83,206\\n56,66,85,96,205,229\\n29,309,333,341,359\\n287,313,322,353,358\\n4,10,16,30,33,65,338,358\\n20,50,68,358\\n219,272,326\\n224,272,314,316,318,328\\n79,201\\n48,66\\n168,180,198\\n85,197\\n157,179,191,208,213\\n68,77,177,202\\n224,271,286,303,323\\n284,308\\n269,281,290,302,327,345\\n224,278,319,321\\n58\\n0,11,24,51\\n7,30,83,88,90\\n10,12,37,59,75\\n9,96,154,158,166,168,171\\n0,66,73,77,89\\n59,180\\n180\\n136,180\\n60,123,177,180\\n61,180\\n56,71,163,180\\n49,180\\n50\\n53,58,178\\n180\\n60,180\\n180\\n48,51,174,180\\n59,76,164,180\\n0,59\\n178\\n179\\n175\\n176\\n34,39,59,303\\n12,31,34,60,297,326\\n51,54,57,315\\n50,54\\n79,118,124,177,294\\n52,304\\n52,307,338\\n51,285,309\\n306\\n62,188,302\\n63,184,279,304\\n182\\n57,180,197,293\\n58,180,198,288,307\\n42,71,166,287,317,320\\n182\\n180\\n27,50,62,64,68,75,78\\n32,52\\n57,99,178,225,309\\n58,164,184,309\\n227\\n70,161,296\\n67,165,169,296\\n53,309\\n54,306\\n177,203,287\\n178,282,288\\n16,53,82,297,311\\n55,310\\n176,217,234\\n180,223,226,237,240,285,287\\n71,177,293\\n57,166,184,300\\n180\\n73,166,293,295\\n26,54,310\\n2,54,307\\n175,196,214,271,290\\n178,197,209,290\\n34,41,48,290,310\\n44,310,324\\n52,294,304,308,321\\n55,157,181,291\\n34,158,182,280,283,295\\n179\\n7,9,122\\n1,4\\n160,168,180\\n0,96,101,108,133\\n13,93,97,106,122,124,150\\n0,120,163\\n0,32,38,40,52,79,94,109,125,142,163,167,180\\n2\\n54,77,160\\n0,18,59,98,100,104,154\\n106\\n83,99,101,113,122\\n75,107\\n82,87,110\\n0,4,21,35,54\\n0,7,25\\n18,57\\n93,113,124,148,169\\n130,180\\n139,174,176\\n177,179\\n0,106,108,121\\n180\\n0,3,9,30,114\\n0,9,16,50,65,85,123,128,134,157,170,180\\n93,121\\n1,22\\n180\\n3,10,349,359\\n150,161,163,338,357\\n151,338,351\\n114,143,164,352\\n5,35,43,46\\n4,318,325,344,348\\n242\\n234,246\\n0,60\\n45,63,90\\n0,7,9,29,33,40,61,64,83,87,90\\n3,10,19,90\\n50,73,80\\n0,54,120,173,176\\n0,17,28,47,57,90\\n90\\n0,21,23\\n0,15,26\\n0,11\\n143,150,177,179\\n118,165\\n0,57,73\\n0,8,21,25,28,40,45,90\\n10,26,121\\n3\\n119,142,180\\n150,164\\n14,47,49,89\\n13,116\\n180\\n0\\n145,166,180\\n40\\n0,22,31,44,64,69,89\\n142\\n0,54,89\\n0,7,119,123,138,149,168,179\\n13\\n153,160,180\\n4,23,155,158,163,166,169,177\\n162,184,191,205,208,214\\n237\\n237\\n139,165,176,179,195\\n147,167,173,195,217\\n6,35,37,50,167\\n10,36,55,98,110,147,160\\n22,27,52,55,61,67,161,175\\n13,47,157\\n359\\n359\\n18,53,69,96\\n14,58,97\\n209\\n208\\n31,58,73,170,180\\n48,77,166,169,180\\n58,180\\n0,25,74,85,92,122,132,143,157\\n38,60,80\\n90\\n39,46,52,72\\n180\\n80,91\\n3,31,55,70,88,120,122,124,136,157\\n47,80,90,93\\n0,7,31,47,53,62,67,83,87,90,117,149,154,157,165,180\\n0,10\\n0,12,57,78,80\\n17,107,128\\n87,90\\n90\\n1,20,33,49,68,83,99,119,122,125,128,131,150,157,165,170\\n3,22,25,49,52,54,58,88,117,164\\n55,148,180\\n150,171,175,179,201,283,315\\n58,149,165,173,179\\n29,45,63,78,105,136,158,180\\n48,75\\n0,13,21,32,37,47,51,74,79,90\\n0,115,126\\n6,10,12,32,65,87,111,146,152,179\\n1,15,22,25,31,60,139,142,149,151,166\\n56,60,180\\n20,94,101,110,140\\n79\\n80,88,90,103,126\\n0,29,52,81,86,90\\n0\\n35,64,68,118\\n42,66,149,151,158,163,180\\n28,44,58,63,180\\n0,8,50,76,86,90\\n0,2,137\\n32,57,72,88,121,180\\n61,80,174,198,289,291,314\\n53,80,178,196,295,304,306,310,316\\n0\\n94,129,152,156,160\\n90\\n41,88\\n61,90\\n45,75,105,138,159\\n0,3,41,74,121,136\\n19,53,66,79,90\\n5,43,69,72,149,151,167\\n45,48,56,59,148,167\\n53,55\\n0,26\\n0,10,33,55,90\\n48\\n34,78,80,92,95,118,146,166\\n6,10,26,78,93,95,127,155\\n2,113,343\\n2,23,39,71,132,138,166\\n28,64,122,147\\n59,68,74,146,149,180\\n24,27,35,49,62,177\\n39,180\\n66,167,310,321\\n60,77,207,300,332\\n0,9,15,28,35,41,44,60,90\\n0,13,56\\n26,41,45,90,111,122,159,162\\n29,50,88,94,98,103,123,164\\n0,8,10,23,30,51,72,90\\n0,2,8,23,49,55,57,60,68,71,75\\n17,38,80,111,133,158,178\\n15,80,82,108,165,179\\n56,180\\n0,3,14,20,57\\n23,55\\n0,16,24,37,46,51,90\\n90\\n0,40,63,90\\n0,21,42,54,63,90\\n0,121\\n58,180\\n27,44,54,62\\n20,22,25,47,76\\n62,180\\n16,51,90\\n14,37,42,52,56\\n22,30,40,51,54,79\\n19,44,60,93,163\\n0,20,66,72,84,86,90\\n20,59,112,140,161\\n0,19,57,108,114,139,158,169\\n43,59,87,133,139,149,153,157,174,180\\n0,5,11,13,46,49,69,90\\n0,5,14,45,59\\n0\\n61,68,76\\n351\\n350\\n45,51,59,162\\n28,56,96,102,109,148,180\\n39,85,137,163,169,180\\n28,141,159\\n0\\n0,47,139,180\\n1,3,26,34,39,46,71,76,90\\n0,2,16,112,131\\n3,25,58,90\\n90\\n145,168,171,174,176,179\\n0,24,41,67,90\\n0,39,95,121,144,180\\n44,63,90\\n120,153,175,180\\n0,11,15,52\\n18,121,136,161\\n0,30,44,49,62,75\\n0,26,58\\n0,20,120\\n144,180\\n8,12,18,20,37,49,62,102,105\\n3,14,26,44,58,66,106\\n29,38,41,85,134,158\\n0,88,102,122,135,148,150,153\\n0,10,30,49,59,82,105,128,131,134,150,180\\n0,22,64,109,138\\n18,70,72,85,92,115,118,142,149,160,163,165,167\\n0,20,34,111,115,120,138\\n59,180\\n33,35,51,63,70,179\\n54,180\\n41,61,180\\n2,40,78,86,90\\n107\\n70,177\\n0,24\\n184\\n75,179\\n22,38,53,57,71\\n0,43,51,76\\n49,179\\n58,79,169,171,197,299,319\\n56,77,172,197,270,273,294,300,309,311,313,318,320\\n35,71,73,163,165,185,265,285,311\\n51,151,181,185,270,293,295,310\\n26,48,55\\n2,25,28,55,74,82,86,88,90\\n17,19,28,83,87,90\\n17,85,90,99,109,138,165\\n19,109,177\\n18,51,53,77\\n0,2,4,11,17,47,52,67,90\\n2,5,45,72\\n42,75,163\\n51,54,73,151,157,166,186,263,281,308\\n29,51,61,153,182,270,279,283,311\\n12,32,54,72,90\\n4,6,8,15,19,32,42,49,65,72,90\\n53\\n17,47,78\\n1,28,35,39,42,123,155\\n0,9,52\\n147,168\\n29,31,33,50,66,90\\n2,7,27,49,75\\n0,3,10,112\\n0,52,64,88,121,148,168\\n44,64,82,170,172\\n47,69,176,180\\n0,18,33,56,79,90\\n14,61\\n0,12,18,20,22,47,78,81,90\\n0,54\\n33,60,90\\n12,65\\n0,3,10\\n80,97\\n44,49,65\\n29\\n0,14,17,48,59,64,68,74,87,90\\n0,14,34,40,43,53,60\\n57\\n172\\n15,18,50,63,82,95,136,163\\n43,74,100,113,219,221,224,276,314,349\\n40,68,73,114,160,199,225,295,312,336\\n49,70,173,180\\n0,6,13,19,38,70,90\\n0,67,99,122,143,173\\n0,5,34,38,53,59,90\\n1,5,15,45,65,83,88,104,116,132,134,146,176\\n0,4,112,114,121,139\\n0,123\\n37,45,61,68,91,150,170,175,180\\n0,13,36,89,120,157\\n60,180\\n40,63,181,300\\n60,178,299\\n54,64,177,299\\n75,93,112,184,215,232,281,321,354\\n34,63,183,203,273,301,328\\n0,3,40,48,74,80,86,113,154,169\\n173,180\\n22,26,34,51,185,187,284,300\\n24,54,183,290,299,305\\n21,34,41,59,106,125,138\\n60,64,167,172,179,181,292\\n48,80,183,186,277,296\\n56,73,177,195,301\\n66,185,300\\n0,2,7,12,153,166,168,180\\n3,130,158,160\\n151,163,169,191,341\\n123,153,189,209,241\\n199,214,225,234\\n230,251,260,277,280,292,304,328,330,338,340,343\\n228,235,253,282,330\\n244,266,269,325,332,340\\n211,214,240,273,302,347\\n196,244,262,286,296,301,329,338,350\\n6,68,123\\n3,17,20,67,115\\n30,49,52\\n263,321,336\\n262,329,336,340\\n19,48,92,95,99,106,125\\n314,330,332,334\\n0,19,39,90\\n36,101,118,136\\n90\\n123,133,136,141,162\\n156\\n19,48,54,72,90\\n151,158,161,166,186,204\\n0,38\\n58,180\\n180\\n304,310\\n307\\n56,184,211,298\\n56,185,298\\n48,67\\n55,310\\n55,310\\n0,47,67,124\\n0,20,41,72,84,103,111,121,152,180\\n0,30,73,104,123,166\\n11,34,86,97,109,124,170\\n0,10,20,26,103,107,110,123,131,173\\n0\\n156,180\\n4,7,39,51,53,71,75,77,106,120,135,180\\n1,5,115,126,135,141,146,159,180\\n8,49,87,115,133,213,235,333,345\\n25,41,92,94,96,135,144,155,192,202,208,270,338,357\\n4,27,88,92,95,122,154,174,195,199,201,208,211,233,330,335,341\\n59,180\\n56,69,306\\n54\\n50,180\\n52,179\\n48,300\\n49,301\\n47,290,311,331\\n58,296,308,323\\n26,296,328\\n293\\n65,172\\n69,171\\n180\\n65,178\\n185,292\\n185,259,267,271,290\\n174,178,181,199,201,294\\n55\\n65,158\\n61,172,194,295\\n64,127,182,302\\n63,167,183,302\\n161,175,177,194\\n302,328\\n65,93,153,178\\n64,166,182\\n60,175\\n59,181,308\\n63,182\\n0,10,25,40,46,56,67,78,110,121,127\\n99,128,131,134,164\\n0,2,15,21,46,61,86,92,104,117,123,164\\n52,67,69,172,299\\n47,66,76,85,156,161,176,179,194,269,275,285\\n41,61,63,70,88,91,96,104,124,134\\n98,117,131\\n44,85,97,119,127,136,138,151,154\\n13,15,30,177\\n90\\n104\\n90\\n67,90\\n90\\n10,34,70,75,108,142,144\\n57,59,68,90\\n117,150,175\\n111\\n48,51,53,58,68,80,84,97,122\\n112\\n37,40,55,60,65,70,89,97,101,104,143\\n98\\n91\\n48\\n56,180\\n48,50,84,313\\n31,56,311\\n56,62,93,163,166,173,198,291,307\\n64,163,177,206,284,317\\n64,175,198,286,314\\n50,67,87\\n0,9,37,63,78,90\\n0,21,72,88,90\\n0,17,43,106,127,131\\n52,67,69\\n31,60,172,178\\n12,173\\n14,34,176\\n12,58,74,77,101,159,163,178\\n8,21,42,81,84,165\\n0,9,57,87,111,138,156\\n0,137,180\\n65,98,106,129\\n10,12,39,75\\n0,67,88\\n9,90,112,136\\n2,14,33,69,71,75,83,85,87,104,147,168\\n19,53,102,122,148,167\\n0,3,6,27,65,84,104,123,126,152,178\\n15,66,81\\n0,9,15,32,37,43,79,99,114,157,180\\n0,2,25,27,29,66,123,140,161,163,175,180\\n0,73,75,91,110\\n0,11,24,50,108,113,116,120,140,180\\n0\\n0\\n133,138,172,177,180\\n114,118,122,138,159\\n142,148,180\\n156,160,173,177,179\\n25,113,125,154\\n3,36,61,70,100,126,141,151,154\\n130,140,143,169\\n0,18,20,29,111,137\\n1,12,36,75,103,127,154,158,160,163,166,171,174,180\\n0,28,32,84,101\\n145,171\\n99,151\\n0,25,99,118,129\\n223,255\\n226,271\\n225,276,288,291,293\\n225,248\\n128,150,217\\n123,154,175,217\\n165,175,196\\n143,154,175,219\\n146,217\\n153,213\\n150,214\\n59,76,288,301\\n68\\n88,157\\n189,293\\n181,208\\n188,193,198,202,279,298,317\\n63,171,185,285,304\\n60,79,186,188,304\\n63,188,203,301\\n56\\n292,307\\n299,302\\n301\\n303\\n51,179,183,196,212,214,237,294\\n52,188,237\\n61,286,303\\n68,175,192\\n69,94,177\\n69,97,176\\n67,123,176\\n59,80,122,157,179\\n67,71,121,123,149,161,172,176,178\\n169,171,173,176,186\\n59,180,302\\n59,68,178,306\\n302\\n63,299\\n58,301\\n72,174,185\\n0,35,69,90\\n0,4,6,33,40,60,70,90\\n0,129,145,149,164,166,176,179\\n0,133,150,152,180\\n117,151,166,178,180\\n0,14,31,89\\n0,134,155,157,180\\n45,90\\n0\\n0,59\\n111,141,168\\n32,49,52,120,123,161\\n122,160,165,167\\n46,82,136,144,167\\n252,255,257,268,270,285,325,327\\n252,280,306,329,351\\n31,79,82,85,95,101,359\\n10,14,16,22,38,91,95,102\\n10,56,69,123,127,147\\n0,3,73,122,139,152\\n7,119,236,240,244\\n6,121,233,359\\n282,285,294,300,321\\n281,284,311,313,323,326\\n222,242,266\\n224,232,243\\n39,53,96,115,356\\n18,21,25,39,51,93,108,359\\n39,49,51,86,89,161\\n1,7,50,70,73,77,80,90,151\\n244\\n243\\n8,287,295,298,330,351\\n5,8,287,330,351\\n4,122,145\\n30,63,135,180\\n109,131\\n88,101,253\\n89,114,119,124,127,155\\n9,243,261,306\\n245,247,354,356\\n244,258,308,316,324,339\\n15,21,27,110,120\\n61,180\\n32,40,43,65,85,179\\n47,179\\n53,180\\n58,66,180\\n60\\n68\\n63\\n64,166,196,199\\n61,173\\n46,302,332\\n46,300,331\\n255,262,268,298\\n186,261,291,294,296\\n176,197,288,304\\n53,56,169,187,302\\n39,59,158,180,299\\n12,60\\n298\\n300\\n64,96,164\\n62,81,96,139,159,161,176\\n179,196,235,297\\n183,197,295,298,306\\n287\\n189,296\\n53,70,170\\n61,176\\n63,167\\n44,67,189,300\\n172,188,303\\n184\\n156,184,187,191,226\\n63,91,298\\n59,72,144,159,172,296,298,300,308\\n57,306\\n31,35,57,302,325,327\\n157,181,205,226\\n47,60,301\\n59,179,301,307\\n301\\n301\\n173,303\\n298\\n297\\n54\\n59\\n57,185,202,268,289\\n55,187,292\\n54,181,305,309,318,326,329\\n39,47,56,174,312\\n58,177,300\\n58,178,296,312\\n175,188\\n0,24,51,56,62,92,120,139,180\\n58,180\\n180\\n145,149,176\\n45,57,62,70,173\\n60,92,173,180\\n47,180\\n0,112,129\\n71,92,168\\n10,28,46,48,50,82,100,164\\n30,44,50,162,272,295,323,344\\n35,280,323\\n300\\n300\\n26,73,130,148,151,155,157,163,172,180\\n24,52,173,288\\n41,52,175,181,196,203,291\\n58,174,289\\n1,28,49,64,84,86,90\\n0,16,43,55,58,90\\n8,45,54,89,108,138,156,162,169\\n6,14,28,34,52,119,139\\n13,73,84,88,91,112,122,168\\n22,63,69,85,111,123,126,133,171\\n59,83,142,152,180\\n58,60,182,297\\n59,95,184,287\\n2,37,43,53,90\\n0,25,111,127,144,160\\n23\\n6,45,117,137,154\\n0,24,50,72,75\\n90\\n8,58,78,85,102,174\\n26,45,76,100,172\\n10,23,29,123,149,208,214,221,255,351\\n18,107,110,124,206,228,359\\n6,9,12,15,21,140,162\\n8,23,27,137,139,160,173,175,179\\n0,19,48,74,80,90,96,171\\n13,66,113,116\\n0,90,102,125,127,152\\n60,64,67,70,73,76,84,179\\n45,61,64,83,180\\n62,156,177,188,193,203\\n44,66,154,181,199,269\\n254,300,340\\n196\\n0,51\\n0,3,5,10,39,90\\n0,52,90\\n3,13,15,29,31,56,58,63,89,101,128,145\\n59,74,96,103,130,179\\n0,25,55,88\\n0,23,47,68\\n0,26,58,78,80,83,95,135,161,180\\n0,37,47,89,109,124,154,180\\n36,56,90,114,120,134,137,170\\n65,189,306\\n68,181,307\\n58,181,299\\n57,179,299\\n19,22,25,38,78,94,156\\n31,55,58,95,177\\n143,165,180\\n160,180\\n120,129\\n0,103,135,140,153,171,173\\n0,6,10,133,155,180\\n11,127,149,153,157\\n3,139,164,186,189,204,324,345\\n2,5,8,10,12,82,105,134,154,168,171,188,243,292,323,330,346,348\\n250,284,322,335\\n15,17,69,109,139,157,171,173,175,248,254,264,345\\n9,20,153,155,170,180,245,341\\n0,3,31,91,188,221,242,267,310,329,351\\n24,40,122,125,174,195,218,253,272,308,355\\n180\\n194\\n57,62,178,192,309\\n72,149,172\\n0,9,13,15,55\\n180\\n0,42,180\\n85,89\\n120\\n33\\n7,28,40,43,52,70,84,90\\n0,119\\n62,180\\n0,23,41,62,90\\n0,117,140,144,155,159\\n0,71,79,90\\n0,81,95,122,132\\n0,8,101\\n0,56,80\\n51,55,77,79,163,180\\n62,171,175,186,299\\n12,30,48\\n0,17,98,100,102,118,120,122\\n0,6,31,65,90\\n0,119,162,165\\n0,33,67,87,90\\n2,8,14,28,35,39,46,59,72,107,143,146,163,169,177\\n9,17,29,37,46,62,69,90,139\\n0,46,90,160,177,180\\n17,31,38,41,44,74,77,82,85,180\\n50,80,123,154\\n0,5,26\\n18,44,59,62\\n0,6,120,135\\n0,2,7,17,36,70,72,74,90\\n180\\n16,29,58\\n40\\n0,7,9,38,67,90\\n13,19,30,48,59,79\\n0,90\\n0,19,67,77,106,111,113,129,132,160,180\\n1,8,18,43,53,159,176,180\\n24,35\\n178\\n175,177\\n174\\n0,3,26,29,33,39,54,70,84,86,89\\n0,90\\n0,10,54,59,61,64,67,72\\n8,28,59,116,180\\n0,2,12,122\\n53,58,176,178,180\\n180\\n7,123\\n0,24,83,86,120,122,124,143,151,180\\n59,205,311\\n38,59,178,184,190,218,277,280,292,295,299,312,337\\n23,44,50,56,62,69,75,81,143,160,175,189,205,241,259,278,300,337\\n66,90\\n0,82,84,90\\n0,13,22,25,45,54,61,88\\n11,13,64,70,85,90\\n4,12,27,50,63,65,94,125,147\\n4,20,27,31,43,52,63,67,70,84,111,121,123,156,160,170,172,176,178\\n0,6,9,15,28\\n1,4,21,29,67,77,90\\n0,31,61,73,75,90\\n29,65,87,97,134\\n0,18,32,74,90\\n180\\n0,26,104,124,138,180\\n0,10,52,90\\n0,29,47,94,124,152\\n15,52,95,114,120,142,180\\n14,79,99,126,161\\n0\\n0,14\\n0\\n156,180\\n0,3\\n0\\n0\\n180\\n0,13,91,106,116,122,140,165\\n3,43,76,123,143,147,150,180\\n58,60,63,67,78,99\\n32,56,77,80,117\\n0,91,180\\n0,6,24,46,69,73,92,125,149\\n102,119,124,135\\n13,35,60,112,117,121\\n25,27,70,72,90\\n17,26,31,54\\n87,90\\n64,120\\n68\\n54,73,101\\n62,76,90,92,94,130\\n5,21,36,42,65,218,228,349,352\\n11,28,36,39,42,157,217,231,234,351,353\\n0\\n124,137,139\\n10,34,150\\n42,76,153,172\\n180\\n235,257\\n234\\n300,320,337\\n263,294,307,321,349\\n20,98,112,125,143,165,169,194,250,352\\n118,155,177,209,234,354\\n106\\n103\\n74,88\\n0,5,7,30,32,35,37,54,90\\n0,11,15,19,28,58,90\\n0,2,40,94,121,137,180\\n137,180\\n0,3,14,20,85,119,147,180\\n0,4,7,20,25,29,51,82,120,123,126,129,150,180\\n2,7,10,109,113,116,118,134\\n61,181,301\\n65,184,303\\n53\\n60,75,183,290,311\\n200\\n191,274\\n55,304,306\\n55,305,307,318\\n72,146,180\\n62,172,195,304\\n60,187,308\\n193,288\\n57,306,351\\n52,306,329\\n0,8,43,47,88,90\\n0,9,92,96,127,129,149,151\\n147,167\\n2,4,6,48,81,83,85\\n8,114,127,145\\n0\\n0,124,130,156,176\\n15,23,27,30,53,127,148,154,158,174,178\\n317,319,339\\n283,324\\n15,34,40,54,72,91,111,123,125,135,144,149,162,166,172\\n4,16,18,20,38,51,59,61,84,87,102,124,135,145,163\\n304,341\\n304,337\\n0,2,13,17,35\\n8,115,118,222,225,233,237,246,262,265\\n53,120,180\\n65,180\\n54,69,153,173\\n41,74,82,84,88,130,172\\n49,306\\n49,51,60,64,67,98,168,296\\n40,58,174,191,297,299,307\\n299\\n298\\n58,76,191,288,305\\n58,186,306\\n54,58,66,146,175,187,309\\n42,58,74,88,143,149,156,177,297\\n0,3,57,118,174,180\\n167\\n66\\n0,3,12,15,64,72,80,84,119,121,173,178,180\\n142,170,173,180\\n0,22,54,83,106,109,180\\n0,20,55,79,88,103,106,125,169\\n34,61,164,180\\n22,25,27\\n125,129,154,172,176,180\\n2,11,52,71\\n18,28,57,78,129\\n51,167\\n16,114,159\\n38,41,46,51,80,85,180\\n1,14,29,31,41,62,64,80,90\\n0,33,49,53,84,86,118,132,136,142,155,180\\n0,7,14,55\\n44,58,180\\n0,24,36,61,87\\n60,180\\n151,180\\n2,16,23,29,48\\n0,4,32\\n10,60,108,125,131,137,176,180\\n25,29,33,56,89,91,128,147\\n172\\n172\\n2,57,306\\n18,52,77,90\\n4,41\\n54,69,179\\n177,265\\n177,270\\n2,60,90\\n64,160,180\\n10,93,120,139,180\\n7,20,38,66,86,139,147,149,169,172,180\\n139,171,180\\n180\\n5,24,45,55,82,117,147,160\\n2,15,20,36,42,75,146,165\\n20,31,41,112,134,148,150,167\\n25,38,43,150,177\\n0,36,45,55,82,156\\n69,154,180,300,309\\n54,57,180,306\\n13,18,24,40,67,99,141,165\\n0,8,28,39,41,43,70,81,108,157,180\\n15,44,75\\n35,64,77,80,95,157,171,180\\n0,11,22,60,85,126,128,149,180\\n37,55,82,87,90\\n0,10,15,27,46,88,111,127,155\\n46,71,166\\n3,125,167,224,229,232,240,352,357\\n3,111,165,171,177,224,227,233,240,288\\n21,40,46,74,80,86,101,119,133,154,168\\n44,79,161\\n42,60,87,127,153,180\\n38,80,125,155,175,202,224,258,281,335\\n28,49,333\\n27,49\\n34,39,43,64,85,133,154\\n23,58,100,119,142\\n0,35,55,68,92,147,180\\n47,170,207,291,314\\n93,156,159,180\\n0,10,34,39,50,79,113,133,137,139,151,165,180\\n0,20,32,104,146,148,153\\n0,20,100,106,117,130,147,163\\n14,37,136,234,317,320,331,351,357\\n89,95,116,149,208,227,315,321,332,354\\n0,61\\n1,38,46,55,72,77,90\\n55,82,180\\n0,19,70,82,90\\n0,11,112,134,152,177,180\\n2,21,42,45,68,89,91,93,95,97,108,111,118,126,144,148,166,169,173,176\\n5,31,34,63,79,88,115,118,138\\n1,30,72,97\\n6,28,97\\n61,90,180\\n57,176,183,292,310\\n49,72,166,182,196,278,306,308\\n14,149,177,180\\n32,55,82,90\\n0,5,56,65,68,75,89\\n3,6,58,90\\n90\\n127,175,180\\n0,52,58,63,68,79,81,108,120,125,133,137,140,145,163,166\\n6,17,73,98,115,148,155\\n12,15,25,30,46,55,114,134,136,168\\n15,46,65,86,90,105,133,170\\n254,273,275,282,285,291,295,336\\n256,272,274,287,295,344\\n303\\n303\\n0,32,64,90\\n0,12,25,37,40,55,71,90\\n127,141\\n1,19,22,31,33,49,68,90\\n0,7,120\\n0,17,22,30,100,118,127,137,142,144,146\\n0,2,4,11,15,38,50,53,90\\n0,2,23,25,59,90\\n7,12,15,33,67,96,110,167\\n10,96,106,113,166\\n0,32,65,91,124,158\\n0,18,35,83,87,90,110,120,126,142,147,149,180\\n0,10,16,42,45,76,83,90\\n17,23,35,63,105,120,138,154,173\\n13,22,26,29,57,79,104,161\\n0,20,40,68,90\\n28,55,64,70\\n0,22,60,67,92,108,111,155,170,180\\n44,79,163\\n26,43,60,147,165,169,202,249,323,356\\n9,39,78,95,140,155,178,246,254,280,319,355\\n25,88,197,203,210,216,222,259,311,330\\n14,132,187,217,235,240,250,260,266,322,328,335\\n33,58,92,95,137,157,180\\n0,6,41,51,54,69,79,90,110,152,156,158,178,180\\n0,23,90,97,106,125,142\\n9,46,62,64,86,108,120,123,132,137,147,149,156,159,172,180\\n0,14,101,104,124,126,147,180\\n0,6,20,50,74,77,113,124,129,133\\n18,50,103,109,115,135\\n14,33,37,41,62,147,180\\n0,4,9,113,132\\n26,67,97,142,162,171,180\\n43,46,61,175,180\\n0,22,112,117,124,132,135\\n60,182,285,300\\n38,64,177,188,302\\n0,9,26,56,59,95,107,117,137\\n0,43,72,93,141\\n81,101,132,146,172\\n152,175,177,179\\n0,24,42,120,126,134,138,147\\n121,124,129,147,149,163,188,329,353,358\\n5,142,144,147,181,229,258,310,334,349\\n241,273,303,345\\n273,288,326,334,345\\n2,4,6,18,28,40,42,45,55,60,89,136,147,156,158,221,234,279,316,347,358\\n7,12,17,64,126,136,147,196,200,216,265,281,290,332,344,349,356\\n0,9,121,138,141,153,156,179\\n144,159,169,178\\n172,220\\n285,307,323,331,348\\n0,25,31,42,142,154,160,164,177,180\\n0,13,25,45,50,68,72,89,127,171,176\\n62,92,106,119,121\\n0,14,16,24,77,87,109,112,141,159\\n1,35,127,130,143,180\\n70,91,140\\n74,90\\n70,81,113\\n24,55,59,69,78\\n73,88,90\\n55,60,90\\n78,117\\n122,128,132,145,162\\n57,60,63\\n71\\n73,115,119\\n54\\n71\\n85,90,93,180\\n64,78\\n76,86,88\\n71,90\\n85\\n75,90\\n90\\n17,19,113\\n67,86,90\\n120,147\\n35\\n32\\n25,62,67,84,90\\n3,23,31,40,69,88\\n76,90\\n148,160,172,180\\n19,58,78\\n9,14,24,136,157\\n326\\n5,253,271,292,316,319,322,325,328,334\\n62,79,169\\n43,67,169,190,300,303\\n150,161,172,186\\n55,71,98,126,137,156\\n52,83,100,124,156\\n8,21,126,150,168\\n23,36,41,93,128,131,134,146,159\\n8,34,170\\n9,33,63,88,92\\n18,20,45,85,158,161,165,168,174\\n6,25,32,55,121,125,137,146,159\\n7,59,76,103,122,142,145,169\\n8,36,39,64,89\\n145,164\\n118,151,180\\n98,105,124,126,139\\n160,171,180\\n0,28,109,125\\n0,40,48,58,84,105,108,111,117,142,161,177,180\\n163,166,169,187,205\\n162,164,166,186,201\\n55,59,61,158,161,179\\n34,53,65,72,173,180\\n59,61,180,298\\n57,180,287,295\\n54,56,166,172,186,300\\n175\\n175\\n58,180,299\\n57,74,179,296\\n0,2,6,180\\n0,10,20,30,53,82,138,161,180\\n27,46,56,62,68,80,127,167,180\\n296\\n308\\n190,274\\n62,298,300\\n57,80,82,177,189,299\\n47,69,289,309\\n50,64,80,179,304\\n61,180\\n138,167\\n167\\n0,56,81,99\\n62,77,83,95\\n65,184,306\\n64,183,306\\n0,19\\n5,71,164\\n170\\n0,20,24,32,69\\n11,13,31,34,90,98,131,143,149,174\\n11,47,85,94,106,117,131,150,169\\n149,153,156,180\\n153,172,176,180\\n0,6,9,31\\n17,34,59,105,132\\n6,26,54,77,117,140,158,175\\n7,32,115,118,127\\n15,65,69,125,139\\n10,62,129\\n274,301,319,340\\n272,286,302,317,320,337\\n35\\n66,140\\n2,5,64,141,143,156,162,167,175,179\\n15\\n1,14,53,60,78,114,118,124,139,153,180\\n59,162,180\\n0,33,53,63,115,160,172,180\\n34,59,70,171,180\\n7,27,62,71,89,119,156\\n0\\n167,169,180\\n14\\n0,16\\n0\\n0,6,8,15,18,56,106,183\\n57\\n0,43,60\\n1,90\\n39,181,293,307\\n276,306,329\\n47,50,306\\n302,317\\n64\\n0,8,27,34\\n0,7,106,115,118,124\\n0,2,15,22,48,55\\n131,141,144\\n179\\n0,24,99,122\\n75\\n0,37\\n0,14,17\\n13,37,76,136,172,176,179\\n16,39,51,62,66,115,145,147,152,180\\n1,33,59,67,79,90\\n0,20,49\\n102\\n102\\n100\\n94\\n96\\n312\\n98,310\\n270,320\\n197\\n65,116\\n1,3,5,45,67,90\\n61,86,90\\n136,145,148,157,170\\n0,63,74,90\\n9,12,15,36\\n35,49\\n41,54\\n38\\n12,30,33,38,59\\n67\\n42,60\\n0,169\\n1,31,40,62,85,95,106,123,179\\n0,3,99,140,179\\n1,26,31,185,305,315,334\\n35,57,153,185,210,234,271,317,351\\n4,18,24,72,154,159,165,201,246,314,346,349,352,354,357\\n0,17,32,37,43,141,187,211,347\\n68\\n138,156\\n8,26,102,136,157,166,172\\n41,179,185,191\\n1,22,40,62,68,74,208,329,347\\n28,47,54\\n149,154,175,178,180\\n66,83,90\\n0,25,40,140,142,163,165\\n23,85,90\\n105\\n123,135,162,180\\n99,111,150,173',rsb),n);q=(b&1)==0?null:(o=Erb.v7('14-38,46-74,87-105,169-191\\n33-44,47-81,83-92,92-103\\n133-160,167-185\\n159-184,249-280\\n199-221,221-232,232-255,258-267\\n40-75,160-200\\n18-26,28-37,37-45,48-64,72-81,93-105,109-127,171-189\\n-27-27,49-56,56-76,76-104\\n-43-43,45-65,65-115\\n-28-28,58-61,61-70,70-90\\n-16-16,44-69,69-82,157-203\\n-21-21,21-52,73-107\\n-11-11,20-33,33-39,39-59,59-78\\n3-25,25-43,43-67,78-102\\n0-24,32-49,49-52,52-69,69-73,73-77,77-79,79-87,87-89,89-91\\n0-26,26-46,58-76\\n-29-29,29-51\\n0-20,170-190\\n-14-14,21-58,58-70,70-89,89-91\\n8-37\\n-1-1,1-28,28-30,30-47,52-69,69-87\\n0-27,27-29,29-43,43-47,47-56,56-63\\n42-60,60-62,62-80,80-100,136-146,146-155,171-189\\n167-193\\n-12-12,24-41,41-50,50-71,71-81,164-180\\n-11-11,43-70\\n-23-23,40-70\\n28-42,42-75,75-87,160-200\\n42-70\\n36-55,55-73,293-321\\n31-49,49-61,61-75,294-322\\n-3-3,3-15,53-71\\n55-63,74-93,114-135,143-170,170-190\\n0-4,7-29,42-72\\n17-92,92-107,132-179,179-181\\n34-65,83-101,140-153,160-180\\n32-51,72-92,151-169\\n33-51,70-87,151-176\\n46-79,156-204\\n40-67,153-175,175-185\\n40-65\\n40-63\\n48-75,156-176,176-184\\n33-52\\n-1-1,1-17,21-37,165-176,176-184\\n37-56,65-86,152-175\\n47-74,79-88,170-190,199-217,296-315\\n49-75,75-86,291-318\\n-4-4,4-9,9-11,11-13,46-74,74-93\\n-9-9,49-75\\n0-18,28-46,47-58,58-75,85-107,125-133,169-191\\n-1-1,1-13,13-42,125-146,156-167,167-193\\n38-60,60-62,62-66,66-85,155-178,178-182\\n33-54,64-88,155-176\\n33-55,66-85,155-176\\n22-29,30-59,59-63,63-65,65-70,70-79,156-181,181-195,259-277,277-286,286-319\\n13-29,29-44,44-52,52-67,67-73,73-84,136-155,155-173,173-185,185-204,273-292,292-298,298-320\\n15-29,34-41,41-49,49-72,72-83,137-155,171-197,197-211,267-285,288-314\\n34-51,51-71,140-151,151-162,172-179,268-286,286-298,302-317\\n33-58,58-78,162-198\\n29-42,42-59,67-88,148-164,164-196\\n29-56,62-79,79-90,158-179\\n30-43,43-48,48-55,55-63,63-83,136-166,166-179,179-181\\n28-46,46-51,51-58,58-71,71-83,83-100,149-174,174-179,179-181\\n160-180\\n-11-11,18-48,51-70\\n171-189\\n0-10,10-14,14-34,34-55,72-77,77-88,88-92\\n-10-10,11-31,31-53,67-78,78-102\\n0-19\\n-9-9,9-12,12-19,19-35,35-39,39-44,55-73\\n32-82,158-202\\n39-61,61-83,162-177,177-183\\n41-77,156-204\\n45-84,159-201\\n48-68,81-99,139-157,157-160,160-165,165-175,175-179,179-181\\n-2-2,2-11,11-50,51-60,63-70,70-75,84-103,110-137,137-168,171-189\\n48-69\\n31-49,49-58,58-84,154-171,171-175,175-185\\n33-56,61-87,151-177,179-181\\n37-60,60-82,160-182,182-205,275-293,306-324\\n32-58,161-174,174-179,179-180,187-209,282-300,306-324\\n157-180\\n3-19,30-61,61-89,149-180\\n42-65,91-109,143-167,167-193\\n27-60,60-73,73-91,100-115,115-124,124-134,159-201\\n17-48,48-51,51-78\\n129-132,158-180\\n17-35,48-69,325-343\\n20-38,48-70,321-338,338-350\\n44-75,167-193\\n38-59,59-80,161-180\\n46-71,151-165,165-195\\n166-194\\n28-57,57-96,158-177,177-183\\n39-53,58-72,75-93,109-127,163-180\\n2-15,24-63,63-100,134-149,149-178,178-180\\n26-57,57-63,63-93,147-172,172-178,178-182\\n30-49,49-52,52-65,65-101,144-179,180-215,263-303,303-338\\n20-33,33-62,68-93,141-160,160-162,162-178,178-203,203-219,267-281,281-300,304-324,324-326,326-341\\n43-70,170-190\\n38-50,56-60,65-72,72-91,149-169,169-191\\n49-72,166-180\\n48-72,168-192\\n38-57,65-83,158-180\\n37-63,74-85,150-168,190-208,211-229,288-305,307-324,338-365\\n50-70,70-71,76-80,80-83,87-99,164-181,183-203,275-290,290-300\\n294-319\\n296-319\\n48-80,183-192,296-314\\n47-79,158-170,170-175,175-185\\n41-65\\n48-73\\n-2-2,2-4,4-19,19-24,24-27,27-29,40-58\\n36-54,54-61,61-76,167-193\\n24-43,43-68,168-192\\n26-38,39-69\\n19-31,31-34,37-66,302-320\\n174-195,276-289,289-306\\n-1-1,1-22,22-35,35-47,47-66,66-76,76-86,86-93,93-96,96-121,121-128,128-140,140-148,148-170,170-190\\n4-28,43-76,76-87,160-178\\n39-48,62-91,154-179,179-181\\n43-57,57-62,62-80,165-195\\n30-77,77-81,81-94,164-196\\n34-47,47-58,58-85,154-169,169-180\\n48-71,167-193\\n44-69,69-71,71-86\\n5-29,56-87,97-115\\n44-82,158-202\\n47-65,165-195\\n39-63,169-191\\n164-196\\n51-75,177-195,290-308\\n163-191\\n43-61,174-190,190-201,212-230,278-296\\n45-68,163-190\\n50-76,165-189\\n51-79,155-190\\n41-61,61-81,86-99,130-138,172-190\\n178-198,202-229,276-308\\n180-192,216-236,276-308\\n189-212,218-233,266-279,285-298\\n20-67,67-70,70-96,148-175,175-185\\n54-85,289-316\\n35-46,46-54,54-58,58-60,60-62,62-85,288-310,317-325\\n44-76,163-197\\n31-52,59-87,87-99,149-178,178-182\\n40-78,160-200\\n36-55,55-58,58-61,61-63,149-166,166-170,170-172,172-192,278-296,301-321\\n42-58,61-78,78-90,152-170,178-194,194-213,270-288,293-313\\n292-314\\n47-71,169-191\\n42-78,164-196\\n30-61,61-92,144-170,170-178,178-182\\n47-81,169-201,278-291,291-319\\n42-81,163-200,282-318\\n41-69,69-81,167-188,188-203,288-315\\n46-80,167-196,290-316\\n50-78,165-193,193-205,293-318\\n48-76,167-203,298-320\\n44-62,285-303\\n47-76,165-195\\n49-71,168-192\\n38-84,149-165,165-195\\n33-41,44-52,52-55,55-82,83-102,150-163,168-192\\n26-55\\n30-41,41-83,158-166,166-194\\n-28-28,28-53\\n-7-7,7-25,51-76,81-103,132-143,150-210\\n-5-5,5-22,25-43\\n0-25,38-46\\n-17-17,17-25,25-28,28-37,37-44,44-45,61-69,80-100\\n-11-11,22-40,155-205\\n-4-4,16-30,30-60,60-90,90-111,131-142,156-176,176-180\\n29-57,60-89,151-176\\n35-80,152-179,179-181\\n44-70,165-192,287-304\\n46-77,167-193\\n46-74,165-195\\n43-73,168-192\\n34-47,53-76,165-182,182-191,286-294,294-297,297-315\\n37-45,58-76,158-175,175-179,179-196,275-297\\n44-72,168-189,292-315\\n51-74,167-190,282-313\\n33-59,59-61,61-69,69-81,99-117,156-174,274-293,293-301,301-303,303-305,319-337\\n32-45,45-50,50-51,54-58,58-59,61-65,65-67,70-74,74-75,99-117,275-293,293-295,295-298,298-306,306-318,318-336\\n-2-2,2-16,32-50,97-116\\n153-170,171-189\\n-13-13,14-16,16-45,50-83\\n-14-14,18-32,32-38,111-132,171-189\\n50-71,170-190\\n-12-12,171-189\\n-10-10,10-33,35-54,54-66,66-79,79-90\\n14-31,33-49,50-69,75-93,97-115,127-147,153-166\\n6-31,31-40,40-71,71-89,89-91\\n-5-5,5-19,19-23,23-45,45-49,49-53,53-63,63-78,78-102\\n-12-12,49-60,60-78,98-113,113-132,168-192\\n2-14,14-18,18-26,26-35,35-54,77-103\\n0-11,11-35,35-55,55-57,57-63,63-71,71-89,89-91\\n-1-1,1-14,14-22,22-34,34-41,41-46,46-53,53-59,59-66,66-69,69-73,73-96,96-117,117-119,119-127,127-129,129-135,135-148,148-159,159-168,168-192\\n0-31,31-62,62-84,84-88,88-92\\n0-28,28-42,48-62,62-80,80-94,94-104,104-114,114-138,138-142,142-150,150-158,158-160,160-174,174-180\\n0-12,12-26,26-43,46-77,77-97,97-120,160-200\\n-1-1,1-20,53-72,72-90,98-112,112-116,116-130,150-167\\n0-19,19-49,49-89,89-91\\n34-61,61-64,64-71,71-79,79-102,102-118,118-121,121-145,145-162,162-166,166-180\\n-3-3,3-16,16-41,43-62\\n8-25,29-51,51-53,53-57,62-72,76-94,142-160,163-178,178-182\\n16-43,43-52,52-58,58-62,62-70,70-95,105-123,128-136\\n-1-13,18-31,31-60,60-78,83-104,104-112,112-122,126-149,162-179\\n5-17,17-46,56-69,75-88,127-145,202-220,224-235\\n0-39\\n19-33,33-35,37-55,162-180\\n-11-11,46-74,74-87\\n3-16,22-30,36-49,67-84,84-96,98-105,117-127,127-136,136-143,143-168,171-189\\n31-49,97-122,122-138,138-163,169-191\\n16-24,44-59,59-78,166-194\\n168-192\\n51-73,167-193\\n168-192\\n-10-10,22-42\\n-18-18,29-44\\n-10-10,21-27,27-45\\n47-87,168-192\\n37-80,80-115,159-201\\n45-68,72-88,88-92,92-97,97-106,106-110,110-113,117-129,142-165,165-168,168-192\\n44-66\\n44-67\\n-27-27,42-68\\n42-84,165-195\\n31-64,71-89\\n36-47,60-72,72-82,135-149,153-207\\n34-64\\n-2-2,2-28,41-62,62-85,166-194\\n-3-3,3-23,39-70\\n0-29,74-117,117-154,154-170,170-190\\n88-145,145-170\\n-26-26,49-60,73-148,162-198\\n96-144\\n0-29,39-60,62-80\\n0-32,34-56,56-77\\n0-36,36-56,56-75\\n0-33,35-56,56-64,64-80\\n83-94,98-129,129-153,153-177\\n-17-17,80-97,97-140,146-150,152-163,163-178\\n-1-1,1-6,6-14,14-16,16-23,23-24,26-33,33-57,65-68\\n0-14,32-59\\n66-83,83-87,87-110\\n65-86\\n85-96,96-102,102-124,124-139,171-189\\n69-111\\n40-74,75-79,79-85,85-86\\n-1-1,2-25,75-93,97-115\\n72-102\\n48-94,149-172,172-175,175-178,178-182\\n44-76,76-78,78-80,143-159,159-180\\n46-85,163-197\\n-3-3,3-25,50-80\\n50-69,69-77,77-95,137-155,155-179,179-181\\n49-60,60-80,100-118\\n39-52,52-57,57-99,115-133,165-180\\n163-197\\n44-62,62-63,69-72,72-106,171-189\\n38-56,63-81,104-124\\n64-99,99-112,171-189\\n62-106,108-122,139-161,171-189\\n45-55,55-92,139-157,158-176\\n105-123,160-200\\n34-46,47-75,77-89\\n-15-15,24-68,75-96\\n53-87,170-190\\n56-79,167-193\\n52-69,171-189\\n143-170,170-190\\n123-133,135-141,141-143,143-146,146-155,155-163,163-165,168-170,171-189\\n3-28,92-131\\n58-75,75-98,163-197\\n49-80,165-195\\n88-106,165-195\\n49-74,88-106\\n53-76\\n52-73\\n69-88,161-179,179-181\\n53-81,166-194\\n113-131,146-164,164-180\\n-31-31,50-74,108-144,148-180\\n-9-9,23-48\\n0-16,31-48\\n128-149,149-156,167-193\\n-9-9,15-26,44-66\\n51-106,156-204\\n70-102,105-126,142-161,161-179,179-181\\n68-87,87-112,112-120,120-140,140-144,148-155,157-203\\n-3-3,22-76\\n31-46,46-70,70-90,90-105\\n49-69,84-105\\n42-90,157-203\\n159-201\\n35-62,62-64,64-67,67-71,72-82,82-92\\n53-74,74-101,112-129,160-200\\n68-86,86-104,142-161,161-163,163-177,177-183\\n25-71,71-76,76-92\\n53-104,109-144,158-202\\n162-179,179-181\\n51-84,164-196\\n62-80,123-144,144-154,162-164,164-174,174-180\\n43-108,108-118,118-134,160-176,176-180\\n-1-1,1-23,34-70,70-90\\n2-12,26-59,59-87,151-176,176-184\\n42-64,64-66,66-70,70-84,84-99,143-166,166-194\\n36-46,46-55,59-82,135-154,154-177,177-183\\n88-120,120-122,122-133\\n51-77,77-95,163-197\\n160-200\\n159-201\\n12-16,42-66,66-91\\n63-74,152-165,165-168,168-180\\n52-79,168-192\\n56-76,166-194\\n54-77,169-191\\n161-199\\n41-66,66-68,68-86,164-196\\n35-48,53-80,80-95\\n154-206\\n162-198\\n57-79,164-196\\n59-78,83-98,98-100,100-135\\n160-200\\n48-94\\n64-82,170-190\\n63-75,75-104\\n59-81,81-106\\n71-100\\n78-99\\n67-94,95-106,168-192\\n71-89,89-93,93-111,169-191\\n-9-9,19-29,29-38,38-48\\n-11-11\\n82-105,105-115,115-142,154-173,176-184\\n104-123,126-147,147-155,155-170,170-190\\n-12-12,60-77,77-89,98-118\\n-4-4,4-18,56-87,94-115\\n-12-12,36-57,57-72,72-74,74-91,102-127\\n53-83,157-203\\n49-70\\n56-89\\n58-74,74-106,108-120,146-158,158-161,165-177\\n-9-9,19-35,37-54,54-74,78-97\\n48-80,80-101,155-205\\n36-57\\n123-151\\n170-190\\n168-192\\n-6-6,6-26,107-126,151-173\\n-17-17,31-46,65-85,93-149\\n39-51,63-77,77-82,82-97,97-100,100-130,130-163,163-178,178-182\\n0-19,19-22,22-56,56-69\\n0-26,34-50,55-75\\n48-80,166-194\\n46-71,71-77,77-96,158-202\\n45-70\\n41-78\\n-12-12,52-83,163-197\\n37-62\\n141-153,153-155,161-180\\n-14-14,140-151,155-205\\n24-43,52-56,56-60,60-72,72-76,76-80,80-91,94-114,122-140,155-173\\n-23-23\\n-23-23\\n144-164,164-196\\n-10-10\\n-12-12\\n63-119,157-203\\n92-128,128-135,135-138,138-140,146-214\\n117-126,126-140,148-180\\n99-111,111-117,117-131,134-180\\n48-69\\n0-27,35-72,83-104\\n43-70,81-104\\n-23-23,47-67\\n54-118,152-208\\n121-133,136-178,178-182\\n7-27,36-68,68-78,78-98\\n36-67\\n50-121,160-200\\n64-101,103-139,139-142,142-145,151-209\\n0-3,24-62,76-98\\n15-28,28-31,34-66,69-91\\n46-101,161-199\\n8-27,37-67,72-94\\n143-170,170-177,177-183\\n46-75,81-105\\n17-45,68-86\\n16-41\\n51-81,143-161,161-180\\n79-105,110-124,141-219\\n113-145,145-152,152-154,154-157,157-165,165-195\\n50-83,83-106\\n35-59,67-94,94-131,131-152,152-155,155-177,177-180\\n107-120,120-127,127-146,146-152,152-156,156-204\\n14-30,30-41,41-52,52-63\\n81-100,101-119,145-170,170-180\\n65-105,105-125,125-131,131-134,134-180\\n88-115,115-146,146-156,156-160,160-163,163-175,175-185\\n79-97,100-123,131-153,157-175\\n43-72,72-94,97-119\\n-13-13,41-69,83-104\\n-13-13,47-66\\n109-133,140-157,157-203\\n25-46,52-65,71-95\\n52-85,157-203\\n58-79\\n53-76,163-197\\n38-70,163-180\\n28-39,55-77,170-190\\n4-24,24-39,53-79,143-159,165-195\\n55-79,151-169\\n94-121,154-168,168-172,172-188\\n69-87,87-99,99-106,106-120,120-126,129-137,137-140,140-142,164-180\\n48-70,83-101\\n48-72\\n-11-11,164-196\\n-10-10,15-36\\n-13-13,164-196\\n-16-16,35-55\\n106-137,137-147,153-207\\n120-140,161-199\\n-10-10,24-43,48-75\\n169-191\\n163-197\\n165-195\\n-25-25,25-51\\n-9-9,18-36\\n168-192\\n166-194\\n61-88,88-104,104-130,130-149,149-211\\n62-98,98-123,136-154\\n61-84,84-92,92-114,114-140,140-143,143-147,147-152\\n60-95,95-105,105-112,112-130,130-149,171-189\\n53-83,159-201\\n165-195\\n43-91,166-194\\n-13-13,47-67\\n62-85,85-89,89-103,116-136,157-175\\n16-37,37-54\\n57-92\\n28-55\\n45-93,93-97,97-111,118-132,132-138,142-152,152-180\\n69-83,83-103,103-126,138-156,156-166,166-176,176-179,179-181\\n54-94,166-194\\n0-22,48-66\\n0-28,49-57\\n0-19\\n164-196\\n41-83,163-197\\n55-72,72-74,74-83,83-96,110-121,121-129,148-180\\n-17-17,48-67\\n-20-20,48-69\\n74-103,171-189\\n103-122,156-180\\n145-179,179-181\\n54-74\\n-14-14,169-191\\n168-192\\n-12-12,84-102,102-128,128-130,130-144,144-159\\n-16-16,105-147\\n1-26,67-81,81-99,102-117,117-141,141-144,144-156,156-158,158-169,169-171,171-174,174-186\\n-1-1,1-40,49-54,54-78\\n0-24,24-49,58-84\\n145-157,157-159,159-201\\n46-81,164-196\\n17-35,47-71,71-79,79-98,158-202\\n0-26,45-67\\n-19-19,42-66,72-90\\n-13-13,39-67\\n43-79,162-198\\n34-65,74-89\\n-10-10,27-51\\n-9-9\\n167-193\\n166-194\\n156-204\\n-9-9\\n-9-9\\n169-191\\n164-196\\n55-105,161-199\\n62-130,130-132,132-228\\n87-95,141-161,161-199\\n69-80,80-83,87-136,169-191\\n74-96,99-108,155-205\\n44-70\\n-9-9,9-51,51-53,53-84\\n40-69\\n7-24,24-42,64-78,83-97\\n40-70\\n47-66,66-91,159-201\\n61-89,89-92,92-95,95-118,118-124,124-149,149-180\\n155-180\\n32-46,46-63\\n43-60,60-80,80-94,130-149,149-159,159-201\\n65-106,113-117,117-133,160-200\\n72-82,82-85,85-89,89-112,112-122,122-128,128-132,132-142,142-162,162-170,170-180\\n-4-4,9-25,25-60\\n17-40,40-71,72-93\\n51-89,130-149,154-180\\n60-113,124-129,129-143,143-148,154-206\\n78-98,100-136,136-138,138-147,147-158,158-202\\n93-148,166-180\\n99-151,167-193\\n0-27,27-51,54-82\\n89-107,107-109,126-137,137-158,160-180\\n0-7,7-9,9-13,13-18,18-38,38-54,99-148,148-154,154-166,171-189\\n-13-13,41-59,59-79\\n166-194\\n-13-13,104-141\\n161-199\\n49-82,163-197\\n123-150,152-170,170-180\\n-6-6,6-10,10-27,45-66\\n0-24,40-66,71-97\\n44-66\\n51-77,163-197\\n36-68\\n47-95,158-202\\n139-154,156-204\\n137-156,160-200\\n46-66\\n42-83,159-201\\n60-75,75-81,149-180\\n37-57\\n166-194\\n67-102,102-120,120-126,126-138,138-158,158-162,162-198\\n90-108,108-134,138-141,144-162\\n-8-8,8-29,29-47,49-83\\n45-56,62-70,70-80,80-101,101-107,107-108,116-117,119-126,159-180\\n166-194\\n166-194\\n84-114\\n84-106,106-110,110-120,120-144,155-178,178-182\\n138-155,155-158,158-166,166-180\\n70-112,112-114,114-134,134-178,178-182\\n113-148,148-168,168-192\\n44-74\\n48-82,89-113,113-127,127-132,132-147,147-153,153-160,160-162,162-179,179-181\\n14-45\\n65-88,88-96,96-103,103-105,105-125,125-150,150-154,154-157,157-179,179-181\\n-5-5,5-30,43-68\\n71-94,94-102,102-126,126-146,146-174,175-185\\n-12-12,41-87,161-199\\n56-80,80-85,157-177,177-180\\n52-71\\n53-64,64-99\\n25-54,54-57,66-81,81-104\\n52-80,80-82,82-95,167-193\\n53-75,169-191\\n33-47,47-61,61-72,163-179,179-181\\n57-83,146-168,169-191\\n74-92,104-123,123-138,138-152,152-154,154-158,158-163,163-178\\n46-73,73-93,164-196\\n54-87,152-180\\n54-86,164-180\\n-4-4,11-32,32-35,35-39,39-42,42-62,68-100\\n-10-10,169-191\\n-12-12\\n-10-10,170-190\\n163-197\\n160-200\\n0-2,2-31,31-45,45-54,54-65\\n156-204\\n84-101,101-103,103-123,123-144,144-152,152-160\\n64-80,80-106,106-111,111-135\\n57-99,165-195\\n146-156,156-180\\n13-33,42-77\\n55-92,160-200\\n48-83,160-200\\n48-67\\n50-68\\n56-96,121-141,147-163,163-177,177-180\\n50-73\\n35-60\\n44-82,155-205\\n48-75,75-95,164-196\\n49-67\\n47-67\\n-2-2,2-5,170-190\\n162-198\\n0-24\\n190-212,240-255,255-274\\n-1-1,1-5,5-20,20-27,27-29,29-32,32-47,77-96,96-122\\n-3-3,3-27,27-46,46-51,51-54,54-74,74-82,82-86,86-90\\n-19-19,68-90\\n111-123,123-149,158-169,169-191\\n-5-24,24-36,36-60,147-175\\n-9-17,17-27,27-39,39-41,41-64,64-74,143-171\\n-9-5,5-40\\n-4-5,7-12,12-42\\n23-35,43-65,75-95\\n36-71\\n-2-16,22-40,44-62,250-272,342-358\\n59-82\\n69-95,95-122,168-185,185-197,197-200,207-216,216-229\\n78-105\\n210-232,275-293,304-322,322-329\\n211-246\\n263-286,287-306,306-308,308-322,327-349\\n264-276,276-281,281-311,313-323\\n248-270,270-290,290-293,293-297,297-307,307-326\\n152-160,166-169,169-189,189-217,248-266\\n158-195,195-196,217-235\\n-11-11,159-201\\n-5-5,95-113,121-149,149-167,167-173,173-187\\n8-37,303-323,323-356\\n17-35,301-312,312-314,314-357,357-372\\n48-68,68-71,71-84,154-164,164-168,173-176,176-184\\n132-165,165-195\\n104-130,143-168,168-180\\n342-370\\n2-4,4-22,22-30,30-40,295-316,316-327,330-344,344-362\\n45-76,168-197\\n46-64,64-79\\n57-87,192-215\\n52-69,69-80,192-223,230-248\\n59-79,184-220,220-222,222-240,240-246,275-284,296-307\\n45-62,62-83,90-98,181-198,201-218\\n272-291,291-300,300-323,329-347\\n210-221,221-223,223-242,274-285,285-297,298-323,326-347\\n269-287,298-323,323-352\\n50-68,71-90,178-205,211-221\\n48-66,70-88,179-198\\n63-81,90-108,172-194,194-212\\n-9-9,9-13,13-28,28-32,32-35,35-54\\n-9-12,15-42\\n-9-5,5-22,25-48,156-171\\n-10-18,26-44,144-162\\n13-42,166-184,339-357\\n167-193\\n50-90\\n-17-17\\n-6-7,7-30,30-33,33-37,37-58,151-169,169-174\\n-19-6,6-18,18-26,26-51,51-67\\n-11-5,5-23,129-137,149-169\\n-13-32,138-147\\n64-90\\n89-115\\n167-193\\n76-104\\n-17-17\\n-5-13,158-186\\n110-125,125-138,138-141,147-180\\n1-4,4-16,21-34,324-361\\n3-8,324-363\\n21-40,45-67,67-77,77-96,96-116,116-132,150-172,172-188\\n-11-11,11-51\\n33-77,81-99\\n47-90\\n39-87,87-100,100-104,104-140\\n60-120\\n56-124\\n-12-12,35-61\\n-23-23,28-54\\n124-174,174-186\\n18-42,42-68\\n-20-20,20-23,23-46\\n27-58,117-128,128-142,142-144,144-171,171-176,176-184\\n-6-6,6-14,14-30,79-101\\n-1-1,17-63,78-102\\n48-72,126-149,168-192\\n-2-2,12-56,56-78,78-82,82-85,85-95\\n25-38,38-42,42-46,46-71,82-100,100-108,108-131\\n43-56,56-59,59-73,73-76,76-87,87-93\\n29-81,81-99\\n36-85,85-102,102-142\\n44-71,71-109\\n-13-13,13-43\\n130-154,159-201\\n121-136,136-138,138-164,164-196\\n0-6,18-90\\n0-25,25-58\\n41-87,87-92,92-96,96-127,127-145\\n44-74,74-87,87-93\\n0-9,9-41,41-66,66-80,80-100\\n0-41,41-54,54-58,70-88\\n61-96,96-104,104-107,107-109,109-138\\n30-48,48-56,56-62,62-65,65-74,74-86,86-94\\n0-28,28-62,76-86\\n35-80,86-107,107-127,127-142,142-163,163-170,170-177,177-179,179-181\\n0-15,32-46,46-66,66-82,82-85,85-89,89-91\\n-2-2,2-33,33-36,36-43,43-76,76-88,88-90\\n52-68,68-79,82-100,112-130,162-179\\n-2-2,2-61\\n10-17,21-42,42-60\\n-27-27,40-48,48-60,60-73\\n-1-1,1-14,14-24,24-26,26-43,43-57,57-74\\n109-148\\n114-132,132-154,154-167,167-193\\n154-206\\n169-191\\n155-165,171-189\\n-11-11,11-37\\n-18-18,18-33\\n33-83,88-92\\n45-80,80-106,106-136\\n51-129\\n-7-7,7-79\\n42-83,83-98,98-138\\n43-63,63-67,67-81,81-99\\n31-68\\n18-68\\n158-202\\n132-149,149-174,174-179,179-181\\n0-18,18-45,45-50,50-53,53-63\\n0-27,41-59\\n-11-11,24-45,45-49,49-51,51-53,53-67,129-164\\n34-61,99-117,120-146\\n39-72,72-81,81-101,106-132,132-151\\n31-61\\n36-56,56-77,77-97,97-114\\n-9-9,138-153,153-155,157-203\\n50-61,61-83,98-117,117-124,124-128,128-130,130-151,151-166\\n37-68,110-128,136-160\\n37-59,59-80,80-86,105-120,124-139\\n-2-2,2-16,147-165,165-170,171-189\\n33-45,45-55,55-80,93-104,125-146,150-169,169-191\\n36-63,118-147\\n45-61,61-65,65-97,97-118,118-138\\n40-55,55-76,76-82,82-85,85-110,110-113,113-137,137-149,149-165\\n-9-9,34-79,79-89,89-92,92-94,94-98,98-103,103-109,120-149,167-193\\n-12-12,33-69,69-73,73-95,118-143,163-197\\n51-76,82-98,101-117,140-167\\n11-19,171-189\\n-10-10,151-155,160-169,169-180\\n-9-9,12-38,162-180\\n58-87,87-89\\n41-68\\n139-149,170-190\\n141-164,164-167,167-180\\n155-205\\n-27-27,32-56\\n-16-16,29-48\\n50-94,103-123,123-149,171-189\\n41-50,77-95,154-180\\n34-70,114-123,126-135,135-139,139-142,145-167\\n14-27,27-38,42-62,68-78,94-112,154-180\\n-18-18,28-36,36-43,43-60\\n-11-11,11-28,31-51\\n45-73,73-95,95-98,98-132,132-139,147-167\\n23-42,42-46,46-54,54-71,148-166,171-189\\n29-52,53-74,74-75,80-90\\n-18-18,30-57\\n51-85,161-199\\n-18-18,18-38,38-71,167-193\\n-10-10,47-64,64-84,161-199\\n-9-9,63-83,168-192\\n273-286,295-320,326-343\\n293-321\\n60-77,154-166,166-188,236-246,312-330\\n8-32,36-45,45-65,65-81,154-162,169-188,222-232,232-236,241-251\\n39-63,63-81\\n42-73,91-102,107-116\\n151-190,190-208,226-253,275-305\\n146-156,156-162,163-192,192-212,271-303\\n-10-17,36-69,292-343\\n-1-22,35-71,292-336,340-359\\n18-43,44-70,302-324,346-370\\n-7-9,14-28,28-46,46-49,49-51,51-57,57-71,301-309,319-334,334-337,337-340,340-350\\n141-151,180-207,275-300\\n143-161,176-194,266-297\\n-4-13,13-25,36-67,296-330\\n-1-22,31-69,298-330,349-359\\n27-62,300-330\\n32-63,301-324\\n50-58,71-89,173-191,192-209,266-283,283-286,286-301\\n35-59,59-71,176-194,270-296\\n40-63,63-70,70-88,161-183,282-310,310-315\\n44-76,76-89,136-144,155-170,170-181,285-302,302-325\\n22-32,32-36,36-38,38-69\\n-9-9,31-44,44-47,47-70,293-311\\n33-55,302-323\\n-14-14,36-69,167-193\\n-10-10,37-67\\n171-192\\n59-84,84-100,164-195\\n-21-21,34-67,74-90\\n56-79,79-97,140-158,158-165,165-185\\n57-75,75-79,79-82,82-84,84-86,86-98,156-176,176-198\\n37-72,294-328\\n32-70,294-324,324-341,341-349\\n62-80,167-192\\n161-197\\n39-62\\n32-47,47-63,298-316\\n40-58,160-168,170-192,295-313,313-335\\n71-94,117-144,149-188\\n64-81,81-91,91-93,93-101,101-117,117-141,141-164,164-193\\n46-82,166-194\\n62-93,161-188\\n63-90,141-166,166-185\\n171-192\\n171-190\\n23-41,43-61,76-94,115-123,170-190,284-294,294-310\\n175-221,288-311\\n49-75,175-217,283-312\\n35-67\\n-5-13,36-69,74-84\\n167-195\\n170-197\\n51-80,105-117,117-124,128-142,157-186,281-311\\n51-76,282-304\\n7-26,26-31,34-66,167-194,283-318\\n27-69,166-209,282-319\\n167-200,215-238\\n168-183,183-202,217-235\\n55-77,149-180,285-308\\n57-81,154-181,286-307\\n43-79,162-198\\n47-73,166-194\\n-12-12,40-65,65-85,157-180\\n40-96,160-180\\n54-68,73-87,152-178,178-180\\n18-34,34-44,44-49,49-54,54-64,64-68,68-84,84-97,167-193\\n123-131,155-170,170-179,179-181\\n164-180\\n169-191\\n171-189\\n169-191\\n39-65\\n-1-1,1-3,3-5,5-15,34-62\\n19-37,43-66\\n3-10,32-68\\n-13-13,13-28,28-48,48-65\\n43-78,160-200\\n54-74,165-195\\n34-62,68-86\\n33-62\\n36-74,165-195\\n43-84,164-180\\n170-190\\n171-189\\n25-62,71-88\\n-12-12,25-54\\n41-77,162-180\\n47-74,167-193\\n147-177\\n44-64\\n39-53,53-57,57-65,65-82,164-180\\n66-85,171-189\\n40-78,84-88,165-195\\n282-298,298-316\\n286-313\\n42-72,88-112\\n46-73,93-111\\n37-72,87-105\\n42-65,76-98\\n181-204,259-267,277-306\\n180-190,190-192,192-199,199-210,276-306\\n31-43,45-65,296-328\\n294-320\\n-1-20,25-37,37-69,296-319,338-359\\n40-67,295-319,329-348,348-370\\n38-69,264-277,277-313\\n23-39,39-50,50-68,283-321\\n22-40,295-317\\n51-68,68-86,159-176,176-178,178-199\\n59-89,155-177,177-180,180-195\\n172-197,201-216,268-281,281-290,290-303,303-313\\n171-185,185-211,268-283,283-303\\n190-208,263-292\\n188-210,259-282\\n0-23,23-36,46-58,58-61,65-77,82-98,98-103,103-116,133-151,165-176,176-184\\n0-27,119-177\\n-14-14,14-50\\n0-22,162-179,179-181\\n-1-1,1-17,95-122,122-124,124-136,147-170\\n-2-2,2-8,8-26,110-152,155-174\\n-3-3,3-16,18-55,107-123,123-144,146-176\\n-11-11\\n-1-1,1-33,129-149,154-180\\n-26-26,33-50,102-161,161-168,168-180\\n17-25,85-94,100-103,103-132,132-136,136-154,154-156,156-172\\n147-158,158-165,171-189\\n149-167,171-189\\n-13-13\\n-1-1,1-20,34-45\\n0-18\\n54-81,81-116,116-151\\n52-73,77-80,81-123,123-126,126-145\\n95-121,121-124\\n-26-26,26-28,28-31,31-50,164-171,179-181\\n-4-4,4-15,123-142,142-148,148-162,162-178\\n171-189\\n0-18,30-48,144-180\\n0-14,14-20,20-21,109-151,155-178,178-182\\n153-166,170-190\\n54-72,100-126\\n56-69,69-86,86-89,89-92,92-115,118-125\\n171-189\\n111-139,139-161,311-323,323-344,344-348,348-370\\n116-134,288-299,299-319,319-343\\n0-18,41-59,329-358\\n-13-7,7-9,9-11,11-13,13-37,326-335\\n-7-14,14-30,328-353\\n1-31,293-319,323-342,342-361\\n0-4,4-16,101-125,227-234,234-266,312-336,336-349,349-356,356-360\\n91-107,107-109,109-127,225-248,248-251,251-271,271-286,291-309,309-329,335-364\\n63-75,75-78,82-86,91-102,102-106,106-111,111-133,262-275,280-287,294-322\\n91-124,124-133,176-194,258-276,292-310,342-350\\n-3-24,24-39,321-336,336-357\\n-4-30,324-336,336-351,351-353,353-356\\n141-163,163-170,170-174,174-199\\n197-232,240-271\\n3-26,113-159,224-236,236-254,288-307,307-338\\n-5-14,106-147,227-247,297-316,316-325,325-332,332-335,335-352\\n274-291,294-313,317-337\\n295-314,321-339\\n305-323\\n4-29,211-248,347-364\\n-11-17,17-32,32-52,65-83,200-231,238-260\\n-13-14,14-29,180-188,191-236,236-247,247-263,331-340\\n191-207,207-209,211-242,242-260\\n191-215,215-232,242-246\\n192-210,212-219,223-232,232-238,241-256,256-277\\n145-164,164-188,197-226,238-258,258-266,266-289\\n193-249,249-278\\n195-231,232-273\\n0-2,2-9,9-11,11-37,44-57,68-86,282-301,316-360\\n-1-37,42-61,285-308,317-359\\n12-19,19-39,307-330,330-346,346-372\\n3-28,33-59,310-341,341-363\\n88-123,317-332,332-375\\n19-33,46-53,66-77,77-85,85-118,326-376\\n-11-4,4-22,79-102,102-116,329-347\\n0-21,76-102,341-360\\n109-130,130-153,153-169,169-185,196-209,209-214,214-232\\n107-146,146-157,157-185\\n112-155,202-217,222-249,250-277\\n114-144,144-146,146-159,175-193,193-202,213-258,258-276\\n104-124,124-127,127-135,135-146,204-238,238-242,242-263\\n125-145,145-165,217-227,227-256\\n82-104,104-117,117-122,122-138,264-297,300-309,329-351\\n78-103,103-121,121-123,123-145,233-253,263-295,295-321\\n89-100,100-108,111-115,115-121,121-133,244-271,301-312,312-318,318-356\\n96-99,113-133,243-261,261-285,322-342,342-345,345-350,350-362\\n296-315\\n297-315\\n221-237,237-274,275-285\\n171-189,220-236,239-253,253-256,256-272\\n233-261,265-297\\n9-41,321-360\\n321-360\\n-3-34,295-321,329-357\\n3-27,324-361\\n121-130,130-162\\n126-154,154-164,209-246\\n202-216,216-220,220-233,233-259,259-277\\n202-220,220-222,222-229,229-231,231-242,242-259,259-282\\n213-224,224-232,232-237,239-269,269-280\\n302-323,327-370\\n330-367\\n25-45,45-63,281-305,305-310,310-329,329-364\\n-5-1,24-40,43-59,284-301,303-312,312-321,321-333,334-355\\n-1-19,19-24,24-35,315-350,350-353\\n100-125,125-129,129-148,150-172\\n95-103,107-144,195-213\\n2-19,281-299,320-339,343-360\\n-2-2,2-13,13-44,44-49,49-68,76-104,104-124,124-128,128-136,136-144,144-152,152-166,166-194\\n-19-19,19-42,42-46,46-49,49-63,63-78,90-148,162-166,166-178,178-182\\n70-78,100-141,146-150,150-168\\n169-191\\n163-197\\n-8-8,10-39,40-51\\n-1-1,1-13,16-42\\n0-38\\n-41-41\\n-12-12,12-15,15-39,39-62,73-93,100-145,169-191\\n-12-12,12-32,32-35,35-54\\n-10-10,20-40\\n44-68,72-90\\n10-33,321-339,345-370\\n2-29,331-362\\n339-370\\n-8-18,18-20,24-45,320-350,350-352\\n-1-25,26-35,35-36,329-351,351-354,354-359\\n23-31,46-56,336-371\\n16-26,26-29,29-33,309-321,340-376\\n-46-46\\n-10-10,10-23,23-40,40-43,43-46,46-80,80-87,87-93\\n-28-28,54-79\\n-1-1,1-3,3-28,34-51\\n140-220\\n-14-14,108-150,150-172,172-188\\n-27-27,36-56\\n0-8,8-20,20-34,43-64\\n168-192\\n-13-13,17-33\\n42-72,72-90\\n0-79\\n8-31,118-173,173-187\\n0-4,4-11,11-13,13-26,26-43\\n171-189\\n-10-10\\n111-168\\n112-164\\n124-146,146-151,151-162,162-190\\n5-17,17-18,110-129,130-143,143-149,149-163,163-165,165-185\\n108-133,257-283,288-321,321-353\\n105-114,248-271,292-340,340-360\\n295-313,315-333\\n113-135,135-157\\n124-144\\n-1-4,4-22,289-303,303-309,314-359\\n1-15,293-310,317-361\\n-8-19,19-50,50-60,61-77,77-80,80-105,328-348\\n-7-19,19-39,39-45,45-48,48-56,56-112\\n61-79,79-92,92-118\\n42-60,66-75,90-117\\n105-120,120-122,122-124,124-186,186-214,214-238,238-263\\n104-125,133-159,159-179,181-221,224-241,241-249,249-264\\n129-162,162-178,178-185,185-189,194-204\\n123-133,133-136,136-139,139-161,161-181,181-191\\n134-153,153-179,205-226\\n130-164,168-175\\n121-137,140-153,153-163,163-172,172-192\\n146-170,170-190\\n2-5,5-28,31-53,65-169\\n0-3,3-23,23-49,54-168,168-174,174-180\\n239-275,275-291,297-351\\n241-273,273-293,298-350\\n98-112,112-121,121-139,139-157\\n90-130,130-154,154-167\\n292-313\\n292-313,318-323\\n91-104,110-134\\n92-105,110-134\\n229-254,254-256,256-258,258-264,271-292\\n232-258,270-292\\n278-296,314-333,333-359\\n1-18,279-304,315-361\\n5-27,52-82,82-115,327-361\\n6-25,75-118,327-361\\n114-129,134-181,181-227,233-237,237-254\\n104-124,124-127,127-129,129-158,158-179,179-193,193-195,195-222,226-232,232-246\\n61-80,83-116,116-118,118-121,121-157\\n40-58,74-97,97-105,105-110,110-113,113-151,164-173\\n265-282,282-295,295-302,302-313,313-332\\n241-253,253-275,275-279,279-295,295-302,302-319,319-346,346-361\\n281-289,294-314\\n295-313\\n114-137\\n114-138\\n-4-17,17-22,22-25,25-45,61-71,71-78,78-102,109-117\\n2-32,32-48,48-68,74-101\\n126-157\\n126-157\\n42-60,320-352,354-364\\n38-56,322-360\\n106-132,135-155,155-169,169-195,208-231,231-255\\n106-132,132-153,153-155,155-170,170-187,187-200,211-231,233-255\\n79-99\\n82-99\\n28-54,54-75,80-100\\n-13-13\\n-4-4,4-27\\n0-2,2-21,21-53,53-71\\n-13-13,122-134,134-163,163-176,176-184\\n-33-33\\n63-79,79-101\\n14-33,326-347\\n152-166,166-194,194-207\\n-5-5,5-15,15-25,25-60\\n28-41,43-74,162-198\\n45-72,169-191\\n14-31,79-106,243-253,253-281,313-327,327-347\\n-13-13,56-79,171-189\\n-18-18,166-194\\n-4-4,4-9,9-54,102-122,123-146,146-214\\n-14-14,14-32,37-66,78-97,97-114,117-144,144-154,165-195\\n-21-21,34-56\\n7-31,162-178,178-182\\n65-82,281-309\\n-13-13\\n12-30,149-160,160-167,167-174,174-180\\n43-70,164-196\\n9-34,34-65\\n36-64\\n-1-1,1-12,12-20,20-43\\n-14-14\\n-18-18,32-57\\n126-136,138-144,144-152,152-208\\n51-69,101-119,134-151,151-179,179-181\\n30-55,55-66,90-116,159-177\\n46-77\\n46-67\\n50-67,67-69,69-77,77-81,81-100,161-179,179-181\\n45-69,294-312\\n49-69,292-312\\n62-72,72-93,93-100,100-119\\n40-58,63-81\\n46-67\\n-12-12\\n161-199\\n54-83\\n58-75,75-97,97-106,106-111,129-136\\n-12-12,12-15,15-20,20-21,26-35,35-54,123-132,132-145,145-160,160-168\\n6-16,16-26,27-35,38-60,60-79,79-101,101-138,138-140,140-143,143-154,157-165\\n26-59,69-90,147-179\\n-12-12\\n58-76,168-192\\n-9-9,46-66\\n46-65,296-314\\n46-65,296-314\\n44-74,164-178,178-182\\n51-60,60-88,114-132,156-170,170-180\\n47-67,161-199\\n57-82,171-189\\n172-191\\n-11-11\\n-6-6,8-33\\n52-62,62-74,96-122,133-141,171-189\\n14-40,44-65,68-79,79-87,87-96,98-119,153-171\\n25-43,43-63,71-89,89-90,93-98,98-117,165-183\\n20-61,61-70,70-86,92-119\\n21-39,39-61,82-110,135-152\\n26-47,47-57,64-82,86-104,132-150,163-181,277-295\\n25-44,65-83,85-103,146-160,160-180,278-304,308-326\\n45-78,81-94,141-163,163-165,165-168,168-192\\n10-26,28-48,48-70,166-175,175-185\\n51-62,62-65,65-92,168-191,275-293,329-347\\n82-91,166-179,179-188,188-208,295-317\\n41-55,55-60,60-73,102-126\\n44-75,97-126\\n89-117,243-271\\n48-58,73-91,157-178\\n46-78,78-89,161-179,179-181\\n46-72,72-90,90-103,103-110,110-114,114-123,123-126,126-130,130-134,134-170,170-180\\n42-75,164-196\\n17-36,56-74\\n-10-10\\n14-35,35-38,38-46,46-58,58-61,61-87,87-93\\n0-5,5-23,23-59,81-99\\n0-20,20-34,34-36,36-54,54-70\\n20-83\\n-34-34\\n0-10,10-24,24-68,101-142,142-165,165-195\\n-32-32,32-35,35-49,49-51,51-81,81-99\\n0-2,2-15,15-64,72-82\\n36-67,67-84,84-93,122-147,147-152,152-154,154-163,163-167,167-193\\n-10-10,15-40\\n-15-15,46-68,72-97,114-130,130-142,142-145,145-147,147-150,150-178,178-182\\n-14-14,36-60,91-99,120-142\\n125-150\\n-23-23,35-39,142-152,162-198\\n0-5,5-21,21-41,41-57,57-60,60-66,66-76,76-86,87-97,97-102,102-105,105-107,107-122,122-140,143-157,162-198\\n-16-16,151-163,163-197\\n-1-1,1-17,17-35,62-93,128-163,169-191\\n54-67,67-76,76-93\\n55-94\\n19-28,28-30,34-67,67-101,101-129\\n27-62,62-92,92-101,101-120\\n15-32,32-45,50-70,70-88,88-116,226-244,247-265\\n22-37,37-38,40-45,45-57,57-76,81-99,149-167\\n166-194\\n51-76\\n57-78,99-117\\n57-78,163-186\\n3-24,24-41,41-78,92-96,136-157,157-159,159-180\\n142-166,166-168,168-192\\n47-78,137-145,167-193\\n22-45\\n11-27,27-33,33-60\\n38-53,53-55,55-58,58-62,64-67,67-89,149-171,171-189\\n42-61,61-81,83-90,160-200\\n2-18,18-29,31-57,57-66,66-77\\n30-67,145-163,168-192\\n4-23,28-35,35-42,42-70,93-115\\n-16-16,16-22,22-30,30-55\\n0-19,19-42,52-70\\n38-90\\n-10-10,11-29,29-55,55-58,62-74\\n34-48,50-71,71-83,83-85,85-90\\n-15-15,15-17,17-19,19-30,30-35,35-50\\n8-26,26-35,35-45,45-55,55-57,57-72\\n29-49,49-77,77-90,157-180\\n19-37,51-71,71-90,144-159,164-196\\n0-11,19-71,71-78,78-90\\n-9-9,16-29,29-35,35-38,38-42,42-49,49-54,54-58,58-62,62-77,82-98\\n49-71,171-189\\n-8-8,12-25,125-155,155-161,161-179,179-181\\n-2-2,2-14,14-39,39-65,79-101\\n11-19,120-147,147-156,156-167\\n40-49,52-58,58-86,91-102,106-118,122-153,159-188\\n42-52,57-73,73-86,86-99,101-118,120-151,161-188\\n44-61,61-77,81-106,155-180\\n4-24,24-56,56-58,58-97,99-114,114-119,119-131,131-140,140-147,147-150,150-167,167-193\\n-4-4,4-20,28-52,64-83,84-126,126-148,150-168,168-192\\n-6-6,6-24,76-94,96-107,122-146\\n-1-1,1-23,104-112,123-142,142-153\\n26-85,156-204\\n44-87,87-98,136-148,154-163,163-168,168-192\\n51-65,65-69,69-88,100-108,134-158,158-173,173-180\\n12-21,23-30,34-63\\n20-37,37-46,46-49,52-54,73-91,146-158,158-178,178-182\\n22-40,40-87,153-207\\n39-54,54-56,56-85,146-164,167-193\\n11-29,33-62\\n38-53,56-78,158-178\\n0-18,20-33,33-50\\n-2-2,2-5,5-23,23-55,55-71,71-74,74-80,80-90\\n111-134,134-153,160-178,178-182\\n15-42,42-48,48-64\\n9-17,35-58,299-324,334-342\\n0-11,16-46\\n20-48,48-55,55-63,63-66,66-84,84-89,89-91\\n-14-14\\n43-81,81-94\\n12-25,25-41,41-70,70-82,82-84,84-100\\n182-202,292-314\\n44-74,150-168\\n170-190\\n56-79,79-83,83-84,159-176,176-187\\n39-53,56-76,100-118,164-185\\n227-249,280-298\\n-10-10,29-54,54-60,60-74,74-88\\n-9-9\\n-9-9\\n2-16,16-39,39-48,48-79\\n171-189\\n52-75,75-78,78-89,167-185\\n51-67,67-87\\n41-69,69-90\\n-6-6,6-23\\n169-191\\n42-74,164-196\\n31-67,67-89,89-91\\n50-79,79-81,81-99\\n52-79,79-95\\n93-113\\n61-80\\n171-189\\n24-55\\n-2-2,2-7,7-16,16-23,33-70,70-77,77-84,84-90\\n-2-2,2-20,22-41,41-47,47-53,59-72\\n0-7,7-32,32-60,60-81\\n51-60,63-69,69-96,111-132\\n17-61,61-86\\n33-43,46-52,57-92\\n32-51,59-94,94-100,100-103,103-105,105-120\\n163-187\\n168-192\\n164-196\\n-13-13,13-32,32-58,60-72,72-108\\n-11-11,110-118,136-175,175-185\\n-27-27\\n0-37,37-87,87-89,89-91\\n110-175\\n-2-2,2-5,5-9,9-27,27-29,29-31,31-69,69-80\\n-10-10\\n77-103\\n-2-32,32-46,46-77,77-90,90-96,96-121,121-126,126-148,148-151,151-178\\n-1-35,45-75,75-95,95-117,117-137,137-151,151-179\\n-10-13,18-28,226-242,245-262,262-265,265-281,281-288,301-304,304-312,312-320,320-325,325-328,332-345,345-350\\n-1-17,226-244,266-286,286-291,291-313,316-335,336-346,346-359\\n-6-26,92-119,119-138,154-174\\n0-12,12-20,20-22,22-24,24-36,86-113,113-136,161-180\\n6-24,27-35,35-63,97-105,111-115,115-135,135-138,138-176\\n-2-4,4-6,41-54,60-70,73-94,99-133,133-159,165-173,175-178\\n0-7,7-11,11-31,48-58\\n53-78,78-97,97-100,100-114,147-180\\n59-79,165-195\\n53-82,198-223,293-319,323-351\\n53-81,198-215,294-323,323-333,333-345\\n168-209,271-281,281-285,290-300\\n101-121,123-155\\n96-111,111-132,132-137,137-139,139-142,142-167\\n77-104\\n13-45,45-48,48-67,67-85\\n55-83,87-93\\n17-64\\n9-25,25-53,53-55,55-88,88-92\\n41-89\\n-1-1,1-27,28-49,49-71\\n-9-9,22-76,76-93,93-106,106-134,134-154,154-171\\n167-195\\n47-85,89-91\\n23-47,82-102,114-160,167-193\\n-17-17,17-55\\n80-100\\n166-193\\n-15-16\\n13-23,23-45,45-61\\n160-178,178-197\\n164-192\\n-1-1,1-8,8-36,41-68,68-80,80-83,83-89,89-91\\n281-313,322-330,341-367\\n49-67,80-126\\n49-67,78-93,93-101,101-125\\n16-27,30-32,32-42,59-77,92-112,131-140,159-173,173-177,177-183\\n-2-2,2-9,9-21,21-23,23-31,31-33,33-36,36-38,38-71,75-81\\n58-85\\n46-63,66-84,84-105\\n66-85,85-88,88-90,90-107\\n170-190\\n169-191\\n39-62,62-66,66-80,163-197\\n-2-2,2-19,137-154,154-166,166-194\\n-14-14,14-27,27-36,36-66,70-90\\n113-163\\n26-56\\n86-113,146-180\\n85-114,144-184\\n41-51,51-60,60-70,77-95,104-122,168-192\\n51-74,283-317,317-336\\n50-68,187-195,239-257,275-311,321-339\\n34-51,51-59,59-86,153-171,171-177,177-183\\n18-33,42-90,160-200\\n31-41,44-49,49-65,65-84,148-169,169-191\\n17-34,37-50,50-70,70-88,167-193\\n40-52,52-72,72-88,160-178\\n34-48,48-68\\n35-85,159-177,177-183\\n39-83,153-175,175-177,177-180\\n-7-7,7-33,33-35,35-49,69-102,115-147,147-159,159-179\\n42-58,58-68,68-80,167-193\\n44-82,167-193\\n-4-4,18-36,36-56,56-72\\n23-41,44-56,56-64,64-76,76-95,148-156,158-180\\n23-43,43-46,46-80\\n45-64,65-86,86-89,89-91\\n-8-8,8-11,11-32,32-52,52-93,93-109,109-113,113-117,117-135,135-140,140-143,143-172\\n114-139,139-142,142-149,149-169,169-191\\n-5-5,5-9,9-50,50-70,82-90\\n167-192\\n63-90,160-178,178-182\\n170-190\\n38-59,68-94,150-175\\n170-190\\n45-68\\n52-72,72-80,80-92,92-100,103-108,108-111,111-113,113-132\\n54-77\\n53-81\\n19-37,50-75\\n-12-12,16-26,107-124,124-137\\n-10-10,20-39,44-64,64-71,71-79,79-102,142-154,160-180\\n45-73,93-111,167-193\\n32-57,57-82,157-180\\n51-74,167-193\\n171-189\\n21-38,47-65\\n-2-2,2-7,7-12,12-30,169-191\\n-20-20,22-45,108-131,131-144,144-149,158-202\\n0-16,16-22,22-28,28-42,42-61,137-147,171-189\\n-13-13,18-33,38-84,104-113,113-136,136-156,156-162,162-198\\n-2-2,2-12,12-14,14-34\\n3-21,77-105,128-154,154-156,159-173\\n1-23,23-36,37-70,70-92,92-103,105-123,133-159,163-180\\n32-60,60-89,149-160,160-180\\n4-8,13-26,26-55,55-59,59-67,73-91,159-171,173-177,177-179,186-192,198-203,203-206,206-214,214-233,239-251,259-280,296-299,330-341\\n4-13,13-26,26-39,39-69,158-183,187-223,302-309,311-329\\n57-83\\n35-68\\n-3-3,3-15,30-82,157-203\\n-2-2,2-19,38-56,105-130,162-166,168-178,178-182\\n0-5,5-19,19-68,68-83,105-124,162-198\\n170-190\\n-1-1,1-11,11-13,13-15,15-39,39-68,68-85,123-142,158-202\\n69-78,88-110,155-182\\n63-91,91-96,96-100,100-114,140-151,155-182\\n57-85,137-141,147-179\\n56-83,151-178\\n20-35,35-61,61-73,73-83,156-180\\n39-58,58-69,167-193\\n23-41,45-70,78-96,96-104,134-159,169-191\\n-1-1,1-3,7-47,50-51\\n-1-1,1-5,5-13,21-56\\n46-73,168-192\\n4-22,37-61,165-189,189-196,286-305,310-320\\n30-56,146-164,171-198,273-284,284-309,344-362\\n56-71,71-90,139-151,151-175\\n57-84,142-177\\n19-35,35-40,40-55,163-166,170-184,187-213,300-308,345-365\\n-4-21,21-27,27-42,44-61,164-188,188-191,191-215,293-323\\n53-82,153-173\\n56-75,150-178\\n-14-14\\n-16-16\\n86-131,131-150,171-189\\n-15-15\\n-10-10\\n-21-21\\n-11-11\\n-10-10\\n-9-9\\n-12-12,170-190\\n167-193\\n-2-2,2-20,150-168,170-190\\n138-162,168-192\\n-17-17\\n-4-21,21-23,23-46,140-162,162-182,182-192,192-195,195-212,338-348\\n-16-2,2-33,144-165,165-169,169-194,194-208\\n5-35,344-365\\n205-243\\n202-231,234-242,242-249,254-268\\n14-32,221-245,245-247,247-251,251-260,260-262,262-280,327-349,349-369\\n236-262,327-371\\n0-15,284-302,302-304,304-319,319-356,356-360\\n-15-17,238-247,247-265,293-317,329-345\\n4-10,10-21,289-307,326-364\\n2-41,66-79,79-88,103-128,128-130,130-143,215-245\\n2-39,93-133,134-153\\n-13-13,166-194\\n-10-10\\n47-84,165-195\\n60-65,69-80,80-97,97-108,157-179,179-204\\n284-306\\n284-306\\n281-311\\n168-192\\n171-198,280-308\\n172-198,268-286,286-291,291-295,295-313\\n166-194\\n42-70\\n10-34,41-68,296-325\\n-10-9,26-44,44-69,294-320\\n55-77,167-197,293-309,312-328\\n46-74,74-86,166-189,294-312\\n165-187\\n63-82,148-161,165-190\\n171-189\\n47-79,280-319\\n47-81,168-204,283-320\\n24-40,43-60,60-73,296-317\\n21-43,43-70,286-323,323-328,328-346,346-365\\n169-191\\n170-191\\n55-87,165-184,290-311\\n56-82,166-184,290-309\\n53-83,166-188\\n53-79,120-131,166-194\\n292-310\\n173-204,204-220,277-307\\n175-211,279-308\\n175-193,193-220,282-312\\n177-205,205-222,278-310\\n191-199,256-283,287-311\\n47-73,286-314\\n46-74,288-311\\n57-77,184-202\\n50-71,71-83,289-300,300-309,309-320,320-336\\n29-40,40-48,48-60,60-72,186-204,285-308\\n28-50,50-72,72-78,78-79\\n267-284,284-297,297-309,309-330\\n54-80,80-92,165-188,193-211,219-237,252-263,287-305\\n40-60,60-81,157-176,180-201,251-270,270-283,283-300\\n-14-14\\n-11-11,11-38,40-43\\n43-78,163-197\\n137-155,167-193\\n168-192\\n43-65\\n2-14,32-67\\n-4-4,4-6,6-22,40-67,73-88\\n40-58,58-75,159-180\\n169-191\\n51-71\\n47-70\\n4-13,20-40,40-70,292-319\\n38-63,292-319\\n297-319\\n41-61,293-317\\n42-50,297-316\\n-19-19\\n-28-28,28-88,150-210\\n-25-25,25-73,73-75,75-105\\n-16-16\\n127-148,160-180\\n-27-27,42-58,58-69,69-94,94-97,97-102,102-117,119-140,140-220\\n-14-14,14-29,96-115,115-119,124-156,167-193\\n-24-24,24-26,26-28,28-45,45-50,50-59,59-70,70-78,78-101,101-104,104-122,122-140,140-151,151-180\\n-18-18,152-208\\n-6-6,6-29,128-137,140-158,158-202\\n-18-18,18-43\\n-27-27\\n165-195\\n165-195\\n167-193\\n-14-14,18-30,30-38,38-45,45-50,50-56,56-63,63-83,83-111,111-143,143-155,169-191\\n-21-21,151-209\\n164-196\\n169-191\\n0-8,165-195\\n-24-24,162-198\\n-17-17,161-180\\n-35-35,50-80,80-100,100-126,131-229\\n168-192\\n0-3,3-49,49-58,58-74,80-129,129-143,143-159,159-179,179-181\\n-1-1,1-22,25-36,36-45,45-65,66-76,76-84,87-116,116-137,137-168,168-180\\n77-100,100-116,116-138,138-151,151-155,155-170,170-180\\n15-39,90-113,113-135,135-172\\n108-131,131-136,136-146,146-153,153-156,156-161,161-168,168-171,171-188,193-204,204-235,235-238,238-240,240-244,244-248,248-254,254-261,261-270,270-274,274-276,276-316,316-333,333-379\\n2-24,122-144,144-153,153-173,173-197,203-220,220-230,230-241,241-248,248-250,250-271,271-275,275-277,277-298,298-300,300-306,306-316,316-338,338-358,358-362\\n94-113,113-135\\n-8-3,3-18,18-22,22-38,38-43,43-55,58-72,77-87,87-106\\n-11-2,2-23,23-45,74-92,92-102\\n125-146,146-154,154-168,168-183,190-242\\n128-160,164-188,188-195,195-237\\n146-172,172-183,201-222,222-235\\n144-166,203-218,218-235\\n41-62,80-106,106-129,129-149,149-170,173-184,184-197,197-217,219-232,235-259,259-268,268-287,297-368\\n17-33,74-94,126-165,177-197,197-200,200-203,203-206,206-210,210-221,221-254,254-280,301-335,335-372\\n130-148,155-177,198-232,239-257\\n8-16,21-35,112-130,226-244,255-273,290-298,298-301,301-310,310-324,324-326,331-334,334-342,342-354,354-364\\n-8-5,5-16,16-25,25-35,92-110,163-181,224-242,248-264,267-275,287-296,296-322\\n0-21,21-34,34-36,36-52,52-67,67-90\\n0-15,115-161,161-179,179-181\\n-10-10,13-33\\n140-154,154-156,156-159,159-173\\n137-175\\n53-77,169-191\\n45-68,163-180\\n17-25,43-72,292-314\\n45-69,281-298,298-305,305-319\\n288-316\\n-13-13,52-77,169-191\\n124-143,167-193\\n50-75\\n41-73\\n49-75\\n50-61,61-76,168-192\\n167-193\\n-16-16,66-78,85-100,100-106,106-119,171-189\\n47-80,164-196\\n56-76,162-193,287-296,299-305,305-308,308-309\\n47-75,159-187,285-313\\n17-35,55-66,66-83,157-187,187-201\\n49-72,81-99,163-187,189-203\\n45-76,160-185,285-296\\n0-16,119-135,138-164,164-176,176-184\\n42-76,160-200\\n41-67\\n161-199\\n0-16,31-66\\n2-10,15-25,37-54,54-72\\n45-64\\n35-62\\n34-61,284-311\\n33-70,286-313\\n290-312,315-336\\n290-312\\n293-314,322-342\\n164-194\\n49-72,76-84,84-96,96-111,169-187\\n50-71,75-95,164-181\\n55-72,72-77,77-92,94-116\\n49-67,296-320\\n181-201,201-218,274-312\\n178-204,204-213,213-226,272-312\\n276-307\\n261-269,284-306\\n239-258,258-278,278-298\\n184-207,242-256,261-273,278-301\\n48-73,173-196,290-313\\n46-70,161-187,286-320\\n45-64,296-316\\n45-64,295-314\\n171-183,183-186,189-207,240-255,255-269,269-281,281-310\\n170-182,182-185,189-201,229-251,260-286,286-296,296-314\\n49-78,161-184\\n56-75,167-184\\n57-86,86-90,90-103,124-142,159-177\\n181-190,196-199,199-215,258-288,288-308\\n182-190,193-200,200-217,264-307\\n219-237,237-247,248-265,265-303\\n183-193,213-224,242-247,247-264,264-274,274-291,291-306\\n-10-10\\n-9-9\\n-27-27\\n-22-22,34-46,46-58,58-79,79-116,118-121,121-130,130-134,134-157,157-203\\n-10-10,30-63,63-67,67-113\\n-3-3,3-6,6-22,22-26,26-28,28-30,30-36,36-51,141-168,168-192\\n-8-8,8-13,13-16,16-27,34-58,58-72,72-93,93-97,97-105,105-117,117-137,137-145,145-151,151-156,156-159,159-163,163-171,171-177,177-183\\n-12-12,55-73,85-103,111-129,129-131,131-141,168-192\\n-1-10,103-121,132-150,247-262,266-281,293-325,325-347,347-351,351-359\\n68-112\\n-12-12,26-45,45-59,59-96,100-114,114-120,120-124,124-126,128-133,133-146,171-189\\n66-104,111-135,135-137,137-153,167-193\\n66-84,84-109,132-150\\n37-70,70-88,159-178,178-182\\n60-89,162-179,179-181\\n59-82,169-191\\n146-163,166-194\\n132-161,161-180\\n0-23,23-36,36-64,64-77,77-80,80-97,97-109,109-132,136-157,157-178,178-182\\n-27-27\\n-15-15,15-35,35-37,37-63,63-72,72-76,76-88,88-96,96-116,116-142,142-154,154-167,170-179,179-181\\n0-21\\n-3-16,17-36,36-47,56-77,84-102,155-173,288-297,306-323,327-337,337-341,346-350,350-353\\n3-16,29-36,36-41,41-59,59-79,79-94,287-307,307-320,327-337,337-341,343-361\\n-1-1,1-7,10-34,34-36,36-46,46-56,56-64,64-66,66-83,87-103\\n19-34,34-38,38-56,66-92\\n32-61\\n115-123,134-149,155-172\\n67-113\\n54-64,70-91,91-113,113-152,152-167,167-170,170-180\\n-25-25,30-52,52-74,74-106\\n169-190,206-218\\n-11-11,18-40,40-66,72-98\\n73-97,97-104,104-110,110-123\\n-1-1,1-3,3-38,38-46,46-58,59-88,99-126,126-151\\n76-99,99-125\\n74-92,94-118\\n3-26,26-30,30-38,38-43,43-72,72-91,92-112,117-147,147-170,170-190\\n23-39,39-45,45-48,48-69,69-81,85-100,206-225,228-242,245-261,270-288,291-309\\n-14-14,166-194\\n-18-18,167-193\\n-17-17,42-46,165-195\\n-17-17,17-23,23-29,29-61,61-102,110-121,121-123,123-141,141-145,145-157,157-160,160-180\\n44-59,59-73,73-99,249-267,349-367\\n-12-10,41-59,62-76,76-99,209-227,333-348\\n15-33,40-53,59-74,78-88,126-144,173-191,257-267,267-276,276-295,341-359\\n42-50,72-96,138-165\\n27-38,56-74,78-105\\n56-81,81-95,95-97,97-103,103-114,237-256,256-259,263-275\\n0-25,144-180\\n-9-9,93-101,101-107,164-196\\n20-28,54-75,81-101,145-166,168-192\\n48-73,145-177\\n54-80,156-176\\n91-108,108-118,118-136\\n-10-10,10-17,17-28\\n36-44,46-51,51-71,71-81,81-83,83-90,90-105,105-125,125-129,129-142,146-156,163-169,169-177,177-180\\n92-114,114-129\\n56-92,145-159,159-201\\n6-25,36-73\\n55-76,148-161,161-180\\n39-89,152-208\\n45-71,71-74,74-97,99-101,133-143,151-152,154-179\\n37-57,57-76,162-198\\n46-66,66-71,71-74,74-89,167-193\\n20-47,47-72,73-94\\n-1-1,1-7,7-27,27-31,31-69\\n-7-7,7-18,18-36\\n57-87\\n-4-4,4-9,24-36,36-59,59-78,78-91\\n41-58,58-60,60-71,71-78,78-81,81-90,90-108,149-211\\n89-102,108-116,124-160,163-178,178-182\\n-19-19,19-27,27-41,41-54\\n26-37,37-68\\n26-37,37-45,45-57,57-81\\n-6-13,13-19,33-50,168-186,304-334,334-348\\n65-85,105-129,133-140,140-160,161-179,179-181\\n5-22,22-33,33-47,47-62,62-81,99-117\\n-1-1,1-14,14-24,24-40,68-95\\n8-25,25-52\\n22-52\\n-10-10,156-180\\n-3-3,3-13,13-19,19-21,21-43\\n0-14,14-27,27-45\\n-8-8,8-18,18-21,21-37,103-122,122-148\\n-12-12,12-27,89-98,114-151,157-175\\n94-123,133-142\\n-15-15\\n42-75,163-197\\n41-92,158-177,177-183\\n163-197\\n45-67\\n38-44,49-74,166-194\\n-34-34\\n-19-19,19-57,57-63,63-67,67-91,104-156,163-197\\n-21-21,40-76,76-104\\n0-46\\n34-56,56-91,91-94,94-121,121-154,154-173,173-187\\n-13-13\\n0-30\\n165-195\\n109-127,127-146,146-148,148-170,170-175,175-179,179-181\\n-4-4,4-53\\n0-16,23-91,91-142,142-178,178-182\\n0-36,36-67,67-113\\n-14-14\\n165-195\\n-22-22,22-37,43-64,64-97,135-154,159-180\\n129-146,149-179,179-181\\n52-61,148-156,160-200\\n-17-17,68-91,91-107,119-131,139-143,143-153,159-201\\n-2-2,2-8,72-90,104-113,125-134,134-140,140-145,145-158,165-195\\n-23-23\\n0-23,23-25,25-43,46-66\\n0-7,7-9,9-37\\n-13-13,21-50\\n0-16,38-72\\n0-28,28-39,39-48,48-69\\n163-197\\n159-201\\n131-144,146-168,168-192\\n164-196\\n160-200\\n151-209\\n-12-12,25-42,42-62,83-110\\n-12-12\\n132-148,156-204\\n156-180\\n1-18,18-26,26-58,58-62,62-74,100-122,122-125,128-155,155-160,160-180\\n124-149,149-153,153-157,157-159,159-180\\n-25-25,25-47,47-56,56-65,65-115,115-134,134-152,152-171\\n-23-23,58-78,78-92,92-97,97-101,101-120,120-131,131-134,134-138,138-145,145-162\\n0-5,5-31\\n0-2,2-9,9-18,18-40\\n-12-12\\n-1-1,1-23,23-42,42-59\\n169-191\\n162-198\\n165-195\\n164-196\\n57-83,105-117,130-150,150-168\\n-3-3,3-10,10-28,28-46,52-82,82-113,113-133\\n169-191\\n163-197\\n134-144,166-194\\n-14-14,159-201\\n-24-24,161-179,179-181\\n-14-14,14-21,21-51,51-60,146-180\\n119-139,146-149,155-174,174-180\\n167-193\\n167-193\\n-14-14,31-53,122-131,137-175,175-185\\n0-22,22-28,28-48,48-63,103-112\\n0-3,3-32,32-54,54-56,56-63,63-84,112-160,160-163,163-180\\n170-190\\n148-159,166-194\\n-1-1,1-7,7-34,43-65,75-90,98-137,137-145,145-149,149-174,174-180\\n114-149,170-190\\n-13-13,126-163,163-197\\n-19-19\\n-20-20,165-195\\n-11-11\\n85-104,112-158,158-167,167-193\\n70-91,104-151\\n111-140,154-175\\n127-166\\n120-129,129-149,149-167,170-184,184-188,188-202,213-234,234-245,245-254,254-267,280-312,312-362\\n114-132,132-151,220-238,238-244,244-258,258-266,274-286,286-293,293-302,302-309,309-333,333-368\\n97-107,115-119,119-135,135-136,141-151\\n90-115,115-117,117-119,119-121,121-135\\n109-127,127-134,134-146,146-161\\n-17-29,35-42,42-54,54-78,78-101,105-115\\n28-41,41-48,48-51,51-62,62-67,67-77,77-105,105-109,109-131,341-357,357-383\\n7-19,19-33,33-59,68-78,78-90,103-114\\n115-162,162-166,166-169,169-186,189-252,257-273\\n104-118,118-142,142-169,169-187,189-252\\n166-191,230-256,259-277\\n158-174,174-194,194-203,203-221,221-225,225-239,241-254,254-260,260-273\\n128-137,137-169,188-207,207-213,213-216,216-237,237-252\\n144-161,161-178,201-233,233-239,239-243,243-256,257-285\\n128-161,201-227,227-254\\n137-174,210-229,229-239,239-255\\n136-144,156-167,167-190,202-213,213-221,221-233,233-259,261-282\\n175-201,201-204,204-206,206-208,223-252,252-254,254-257,257-269\\n111-115,117-131,133-156,164-172,212-229,229-244\\n166-177,177-181,184-204,204-228,228-247\\n227-245,245-253,253-275,275-284,284-288,288-293,293-296,296-305,305-331,331-366\\n211-229,231-238,240-244,244-272,272-319,319-323,323-329,329-365\\n5-44,61-79,84-108,137-155\\n122-137,137-139,139-146,146-159,159-197,197-231\\n127-144,144-146,146-150,150-164,164-166,166-172,172-174,174-191,191-230\\n230-268,268-270,270-272,294-302,311-350,350-352,352-367\\n251-278,285-296,296-303,303-317,317-356\\n-30-30\\n-20-20,20-56,120-133,133-136,136-155,170-190\\n24-42,49-78,78-90\\n-17-17,17-68\\n31-51,51-59,59-76,80-94,94-115,115-128,128-144\\n127-146,150-159,164-196\\n148-176\\n-10-10,19-40\\n-14-14,14-30\\n158-202\\n-23-23\\n-12-12,12-26,26-53,109-131,138-162,168-192\\n-13-13,29-47,47-50,50-73,73-107\\n-1-1,1-6,6-8,8-11,11-21,21-51\\n-13-13,22-35,35-43,43-61,61-70,74-80,80-93,118-138,142-166\\n-12-12,18-20,20-31\\n-19-19\\n-11-11,13-17,17-45,150-166,166-194\\n-11-11,14-29\\n131-139,169-191\\n-9-26,26-29,29-82,106-132,132-154\\n-4-80,106-127,136-162\\n4-70,76-90,90-114,114-130,203-217,220-228,228-244,250-273\\n3-50,50-61,61-89,95-115,206-238,238-243,243-257\\n35-66\\n17-31,31-75,75-86\\n12-54,68-81\\n10-55,83-111\\n13-32,32-36,36-53,97-115,205-223\\n17-51,57-76,215-233\\n202-223,227-252,252-266\\n200-223,223-250,250-263\\n94-119,123-131,131-151,156-166,188-225\\n93-120,141-152,188-206,206-226\\n227-254,254-289,289-307,307-328,328-369\\n1-7,7-12,12-14,14-30,246-281,281-308,308-310,310-337,337-361\\n258-289,304-341,341-363\\n260-291,291-293,293-294,300-305,305-309,309-322,322-325,325-342,342-367\\n80-88,92-126,128-135,135-142,142-161\\n75-86,86-90,90-125,126-140,140-146,146-151,151-162\\n95-118,125-134,136-141,141-154\\n63-81,84-94,94-98,102-114,114-140\\n-10-5,5-7,7-13,13-22,22-62,62-79,79-95,95-127,127-134,134-158,158-170\\n-8-12,12-17,17-40,40-54,54-82,86-100,100-108,113-120,120-143,143-172\\n4-35,35-43,43-53,53-55,55-85,85-114,229-237,237-243\\n-6-16,16-24,24-26,26-40,40-42,42-46,46-48,48-64,64-86,86-89,89-124,199-217,241-263\\n33-44,44-71,71-89,96-104\\n100-118,130-150,152-177,177-184,188-210,213-228,231-247\\n101-109,128-152,152-178\\n-1-46,49-66,71-84,91-104,104-109,109-112,112-128,177-190,190-199,201-224,224-264\\n-8-11,11-21,21-63,84-106,183-207,215-260\\n30-56,189-202,202-233,233-238,241-245,245-246,261-274\\n57-74,103-121,195-217,218-252,258-276\\n23-41,214-234,234-257\\n42-64,66-88\\n16-34,120-132,132-154,311-321,340-366\\n10-39,39-58\\n-12-2,2-7,7-9,9-30,30-45\\n13-30,212-230,230-261,339-360\\n-11-11,11-31,232-263,295-319,331-343\\n4-20,234-260,266-278,345-364\\n236-256,301-319,337-368\\n211-223,238-250,256-274,278-304,328-342,347-361\\n1-21,339-361\\n-8-10,231-243,243-263,263-285,301-319,326-344\\n91-125,125-159,159-164\\n77-90,90-92,92-117,117-138,138-154\\n91-125,125-143,147-155\\n90-122,122-146,146-168\\n-4-6,6-14,14-27,228-242,242-262\\n0-31,86-104,107-126,225-245,251-269,348-360\\n-3-38,103-121,225-252\\n106-124,124-131,131-148,151-162,217-247,247-265\\n12-34,90-98,122-139,226-264,332-343\\n3-51,203-241\\n12-21,33-40,196-209,211-243\\n60-80,80-103,164-196\\n54-82,147-167,167-172,172-183,259-285,300-318\\n280-305,305-308,308-328\\n46-69\\n2-20,57-77\\n49-60,291-315\\n47-65,272-289,292-316,316-327\\n33-42,51-68,286-314\\n38-65,282-314\\n52-81,162-187\\n50-91,157-195\\n105-114,116-134,159-188\\n61-83,155-178,178-199\\n64-93,113-142,142-162,162-191\\n74-96,113-123,165-193\\n84-102,126-144,163-190\\n51-71,163-189\\n102-119,119-153\\n61-79,168-185,191-209,282-316\\n162-187\\n51-75,75-91,158-192\\n137-148,148-156,159-192\\n60-82,161-194\\n-2-12,18-33,33-60,60-62,62-76,313-317,338-356\\n15-33,40-54,54-72,160-178,290-325,325-327,327-357\\n6-22,340-366\\n169-189,189-208,213-231\\n23-41,41-72\\n39-72\\n42-64,290-320\\n43-64,291-319,321-325,325-330,330-347\\n191-231,231-236,236-249,284-316,324-338\\n178-210,210-222,222-226,226-239,239-241,241-246,246-258,285-315\\n185-195,208-218,218-236,249-267,285-319\\n56-81,152-194\\n52-86,121-130,130-136,147-199\\n49-73,73-88\\n57-90,94-96,96-101\\n57-89,159-176,176-178,178-193\\n43-73,73-94,94-107\\n23-35,41-45,47-73,186-208,284-294,296-307,307-323\\n35-67,67-69,181-200,284-319\\n47-80,163-171\\n32-47,47-57,57-59,59-61,61-74,177-195,294-312\\n176-202,212-238,273-309\\n178-196,209-221,285-306\\n39-74\\n44-74\\n160-171,171-175,175-178,178-196,276-302\\n46-82,158-193,293-322\\n47-78,94-118,158-196,292-324\\n48-72,167-188\\n153-179\\n43-82,82-97,97-110,110-117,117-129,129-139,139-150,150-153,153-192\\n45-70,70-102,102-122,122-125,126-145,145-148,150-194\\n92-114\\n253-261,286-315\\n285-323,323-348\\n289-318\\n40-72,176-202,224-242,275-288,288-290,290-312\\n46-73,73-92,179-201,209-225,278-311\\n49-73,77-93,294-312\\n42-78,163-197\\n48-80,159-193,292-326\\n-21-21,109-135,135-142,142-145,145-157,157-161,161-175\\n163-197\\n-1-1,15-42\\n0-10,10-20,20-28,28-40\\n-1-1,1-4,4-10,16-42\\n-4-1,1-26,127-136,335-356\\n22-42,42-47,47-62,62-84\\n293-311,322-343\\n169-187\\n87-103,111-147\\n56-76,79-93,93-96,110-148,154-165\\n76-97,97-101,101-116,116-121,121-129,129-131,131-140,140-147,147-160\\n66-81,81-84,84-86,88-92,95-111,111-115,115-141,141-159\\n188-209,209-219,219-221,221-241,241-259,259-264,264-282\\n88-104,104-111,111-117,120-146\\n93-113,120-148\\n16-27,27-33,41-78,161-199\\n31-58,58-78\\n167-193\\n146-164,170-190\\n0-32,39-69\\n13-24,24-36,36-40,45-67\\n24-42,47-75,168-192\\n29-43,48-78,165-195\\n39-75,156-194,296-304,304-310\\n33-39,43-77,156-188,287-319\\n43-72,84-88,88-103\\n43-69,75-80,80-96\\n285-303,303-314\\n293-312\\n130-145,149-164,172-192\\n49-78,88-107,156-184\\n51-80,156-184\\n42-67,67-68,71-99,152-176\\n37-50,50-88,88-106,106-134,153-176\\n39-79,82-100,158-183\\n51-77,109-126,126-146,165-173\\n52-79,85-97,134-172\\n45-74,96-116,154-172\\n51-71,151-177\\n174-213,213-236,278-310\\n178-211,211-242,280-310\\n287-307\\n182-203,241-258,258-274,283-308\\n57-79,79-92,150-182,182-200\\n41-75,164-192,281-321\\n46-71,168-191,283-316\\n33-57,62-72,291-309,309-327\\n27-46,46-53,53-66,292-314\\n32-66,289-317\\n51-76,153-171,171-174,174-193\\n51-75,82-96,148-183\\n46-62,62-66,66-85,162-180,180-194,281-297,297-314\\n48-71,169-194,279-291\\n31-43,46-77,315-333\\n51-71,162-180,302-315,315-332\\n170-182,182-189,189-209,268-284,284-297,297-316\\n-2-2,2-17,17-28,28-78,137-163,163-197\\n41-66,167-193\\n15-33,144-168,168-180\\n144-170,175-208,216-234\\n145-163,163-182,182-203\\n50-74,168-192\\n58-88,163-180\\n46-64,64-95,95-112,161-199\\n-13-13,13-43,43-70,153-170\\n140-156,158-202\\n118-136,140-160,160-180\\n-15-15,17-25,27-67\\n4-30,30-52,52-69\\n0-8,20-70\\n-11-11,15-64,74-91\\n42-78,166-194\\n58-76,76-95,168-192\\n38-61,61-68,68-70,70-86,90-109,160-200\\n38-87,159-201\\n-10-10,32-51,56-71\\n0-8,48-91,140-159,159-179,179-181\\n25-48,48-50,50-75\\n0-19,27-59\\n1-15,25-59\\n52-82,83-98\\n12-40,58-76,296-318,318-320,320-325,325-328,328-342\\n12-30,42-46,292-314,314-326,328-340,340-358\\n35-49,49-73,289-310,310-315,315-338,343-369\\n28-47,47-72,291-335\\n37-67,176-194,194-207,274-295,295-314\\n33-68,179-189,273-295,301-321\\n35-56,312-331\\n-3-3,3-18,18-45\\n25-28,35-59,59-62,62-71,71-75,75-79,79-90\\n-3-3,3-30\\n130-138,140-148,152-176,176-204\\n-10-13\\n-3-3,3-28,32-56,62-77,77-91,91-97,97-113,113-119,119-139,157-179,179-181\\n-8-8,8-12,12-17,17-27,27-30,30-33,33-50,50-75,75-100,100-111,111-121,121-123,123-125,125-130,130-138,138-155,155-158,158-180\\n115-136,136-140,140-164,171-189\\n0-17,17-40\\n-5-5,6-8,8-16,16-19,19-54,54-59,59-68,68-79,79-102,139-165,166-194\\n-1-1,1-10,10-26,26-44,79-101,111-122,129-131,136-152,152-157,157-159,159-172,172-179,179-181\\n45-64,64-83\\n53-81,169-191\\n60-80\\n23-41,44-62,62-77,171-189\\n-6-8,8-11,11-14,14-31,143-161,161-163,163-165,165-172,172-174\\n-10-2,60-69,77-94,94-96,96-114,114-129,131-149\\n17-35,97-110,116-129,165-175,175-202,325-343\\n17-39,39-43,43-47,47-72,72-105,105-107,107-109,109-129,129-137,137-152,152-164\\n-11-12\\n135-143,169-191,208-216\\n45-67,114-132,170-182,231-251,261-282,282-300\\n105-136,136-147,165-183,235-254,307-325\\n77-108\\n0-18\\n8-21,21-38,38-58,69-83,83-91,91-93,93-111,143-162\\n-17-17\\n-12-12,166-194\\n-13-13,13-28,163-197\\n-11-11\\n0-3,3-8,8-28,170-190\\n8-46,157-203\\n-9-9,13-24\\n-17-17,17-31,161-199\\n158-181\\n5-13,19-23,23-42,55-72,72-83,229-247,326-334\\n-15-15\\n-10-10\\n0-22\\n-10-10\\n-13-13\\n60-69,69-86,162-183,183-201,292-313\\n53-77,177-195,290-300\\n191-199,279-307\\n175-193,193-203,279-298,298-315\\n-9-9\\n54-80\\n36-58,58-74,300-320\\n178-199,285-306\\n178-197,197-203,283-309\\n-10-10\\n-1-1,1-20\\n187-205,230-248,283-309\\n-11-11\\n-15-15,23-40\\n-12-12\\n71-104\\n8-26,64-85,85-113\\n59-77,142-155,156-189\\n58-80,162-190,191-210\\n278-288,288-297,297-317\\n-10-10\\n-22-22\\n-16-16,16-37,46-49,52-81\\n-14-14,20-37\\n56-75\\n56-77\\n283-303\\n285-304\\n-2-2,2-17,17-37\\n69-84,84-96,96-117\\n76-94,94-115\\n-18-10,10-13,13-31,37-48,48-57,57-76,139-154,154-158\\n-17-42,42-69\\n-12-22\\n-1-38,154-163\\n3-38,42-63,129-144,148-183\\n2-6,6-32,32-56,56-73,148-182\\n-14-21,21-51,51-67,74-101,214-224\\n-15-5,5-28,28-52,55-63,63-81,204-218,218-234,234-238,238-250\\n244-261,261-269,269-284,319-354\\n245-282,323-352\\n208-240\\n207-239\\n200-245\\n211-244\\n48-76,152-176,176-193,270-288\\n-10-19,31-49,271-289,334-348\\n-17-17,23-60,61-64,66-104,141-179,179-181\\n62-66,100-133,133-140,140-144,144-150,150-178,178-182\\n-1-1,1-11,11-28,28-45,54-77\\n1-26,30-45,47-58,61-89,93-101,111-119,163-178\\n-2-2,2-22,46-72,72-87,95-117,142-158,158-170,170-171,173-187\\n-10-10,14-103,103-105,105-108,108-119,119-134,134-154,154-176,176-178,178-182\\n-1-1,1-16,16-37,37-41,41-49,49-60,60-93,93-118,126-153,153-157,157-170,170-179,179-181\\n57-99,99-113,113-117,131-229\\n88-109,131-153,153-160,160-166,166-173,173-180\\n-2-2,2-8,24-50,50-90,97-102,102-104,104-109,111-134,143-163,163-172,172-177,177-180\\n49-76,86-118,123-145,149-176,176-179,179-181\\n37-53,53-78,78-98,101-130,137-171,171-180\\n134-152,152-170,170-190\\n-9-9,12-25,25-44,47-62,62-68,87-107,107-120,123-142,145-162,162-168,168-179\\n0-2,2-6,6-17,109-136\\n38-82,152-180\\n21-33,33-35,35-39,39-69,167-193\\n27-75,158-178\\n38-77,166-194\\n16-35,36-75,100-118,130-149,158-202\\n30-48,54-79,85-103,164-196\\n18-36,58-78,79-95,145-161,164-179,179-181\\n-1-1,1-27,27-34,34-38,38-70\\n23-37,37-66,66-93,93-100,100-103,103-110,134-155,159-180\\n8-35,46-66,66-74,74-77,81-87,90-94,94-95,112-138,138-150,154-171\\n39-51,51-58,58-74,164-176,176-178,178-180\\n2-13,29-68\\n5-24\\n0-24,86-104,104-116,243-261,261-272,275-291,324-339,339-360\\n39-59,59-78,164-196\\n44-73,155-205\\n36-69,163-180\\n41-80,163-197\\n48-72,168-192\\n49-72,169-191\\n-6-12,299-339\\n-7-7,7-33\\n37-65\\n0-17,63-81,105-123,123-144,144-164,164-166,166-194\\n28-57,88-114,114-123,123-145,145-165,165-170,170-175,175-185\\n-12-12,169-191\\n-14-14,157-180\\n-18-18,158-202\\n0-8,8-22,22-29,76-97,163-197\\n-18-34,81-115,124-150,150-157,157-161,161-186,186-215\\n-20-33,37-64,85-107,107-119,119-129,129-137,146-162,162-166,166-182,182-187,187-194,194-216,225-245\\n-17-22,29-34,34-56\\n-2-29,29-31,31-33,52-64,343-358\\n129-139,139-143,148-157,162-183,183-186,186-197,197-211\\n129-163,170-195,195-203,203-204\\n-12-34,43-62,179-198,198-206,209-218\\n-6-32,333-345,345-348\\n168-193,271-279,286-310\\n170-193\\n58-82,165-189\\n55-80,80-95,129-153,165-189\\n63-77,77-93,132-150,160-177\\n294-315,315-327\\n282-311\\n45-68,68-71,71-85,148-180\\n23-42,47-66\\n31-49,49-58,58-75,165-195\\n48-75,85-106\\n38-54,54-80\\n276-295\\n47-61,61-80,164-196\\n169-191\\n170-190\\n-19-24,164-204\\n156-171,171-191,191-211,211-223,342-395\\n1-16,16-42,144-156,172-196,196-207,207-218\\n5-37,150-168,168-174,174-194,194-211\\n-1-1,1-17,24-59,169-191\\n25-60,60-63,63-76,143-159,159-170,170-179,179-181\\n130-154,154-168\\n112-121,121-133,133-151,159-180\\n159-201\\n136-148,160-179,179-181\\n37-77,77-106,106-128,128-139,145-215\\n91-109,130-141,141-173,173-187\\n11-22,24-29,29-36,65-79,79-89,100-111,297-308,308-330\\n49-62,62-82,82-102,125-147,147-157\\n69-94,94-118,123-145\\n142-160,160-178\\n33-54\\n77-85,132-159,159-174\\n137-174\\n19-34,34-54,69-98,152-179,179-181\\n-12-12,62-89,135-159\\n62-127,127-143,143-146,146-161,161-174,174-180\\n77-99,99-104,104-109,109-134,139-157,170-190\\n56-81,81-83,83-87,87-104,105-132,132-147,147-149,149-151,151-159,159-161,161-166,166-179,179-181\\n75-134,147-153,153-165,165-195\\n59-92,139-155,155-180\\n49-103,114-148,148-159,159-180\\n33-51,55-92,148-180\\n35-54\\n14-32,47-67,67-75,75-87,87-98,98-107,107-118,165-195\\n71-89,143-157,158-178,178-182\\n0-2,2-13,13-15,15-30,95-146\\n32-87,153-207\\n1-20,20-82,154-189,297-340,340-361\\n1-16,16-20,20-82,148-187,290-316,316-361\\n7-18,18-22,22-44,44-82,132-151,297-311,311-313,313-335,335-362\\n11-21,21-31,31-34,34-43,43-58,58-63,63-80,301-313,313-337,337-351,351-371\\n59-93,145-172\\n60-91,116-133,146-172\\n59-77,106-136,141-167\\n58-78,93-107,112-120,120-141,141-162\\n0-18,18-56,65-83,287-295,309-335,337-358,358-360\\n6-19,19-58,336-358\\n5-7,7-17,17-23,23-25,25-46,46-71,74-92,164-184,295-328,328-346,348-365\\n7-24,29-50,50-78,146-164,164-195,290-341,347-367\\n-7-15,28-51,58-67,67-80,290-298\\n-8-10,28-52,61-65,69-87\\n3-15,26-34,34-75,75-76,80-86\\n33-49,49-86,131-150,151-165,165-195\\n42-82,82-89,157-180\\n31-53,53-73,164-196\\n45-76,163-197\\n35-40,42-55,55-66,66-71,71-86,156-180\\n34-62,154-198,282-311\\n44-67,158-193,193-203,272-289,289-311\\n-10-10,10-26,26-47\\n-11-11,171-189\\n-12-12,162-198\\n171-189\\n-9-9,42-63,171-189\\n-13-13,167-193\\n0-5,5-18,39-57,64-82,161-172,174-179,179-181\\n-18-18\\n-15-15,21-27,40-48\\n32-60,61-86,152-180\\n0-49,51-70,155-205\\n-2-2,2-25,25-44,108-125,125-145,145-158,158-172,172-177\\n-18-18,28-45,132-153,169-191\\n11-30,35-53,53-54,56-74,82-106,106-126,171-189\\n-12-12,12-23,24-42,46-65,65-72,72-89\\n201-213,213-216,216-236,236-248,248-277\\n213-239,239-267\\n-6-6,6-14,14-17,17-35\\n-2-2,2-12,12-32,32-43\\n15-55,55-85,167-193\\n43-81,143-167,167-180\\n45-56,56-71,71-73,73-76,76-89,153-180\\n15-32,32-56\\n36-69,69-84,148-164,164-176,176-180\\n39-57,57-73,154-171,171-180\\n42-76,128-147,147-169,169-180\\n-17-17,161-199\\n-10-10,40-66,117-170,175-185\\n16-38,92-119,119-136,136-146,156-172\\n36-61,85-104,104-112,112-149,171-189\\n-20-20\\n-23-23,23-29,29-40,169-191\\n-16-16,157-203\\n-1-1,1-4,4-16,16-21,21-34,57-84,87-95\\n4-33,43-70,117-131,131-136,136-141,141-148,148-169,169-191\\n-16-16,21-29,29-47\\n0-6,6-18,51-69,88-106,128-145,145-165,165-178\\n-18-18,157-178,178-182\\n-6-6,6-27,27-42,49-69,147-155,155-166,166-169,169-191\\n-1-1,1-23,23-29,29-56\\n-1-1,1-44,163-180\\n20-44,57-75\\n0-17\\n-13-13,157-180\\n129-147,147-155,155-158,158-180\\n171-189\\n61-79,79-90,90-112\\n-11-11\\n-15-15,168-192\\n-4-4,4-6,165-195\\n-19-19,153-170,170-190\\n-1-1,1-17,137-155,155-179,179-181\\n-18-18,18-22,22-34,138-164,165-195\\n16-54,56-65,65-78,83-107,112-121,121-131,171-189\\n51-74,82-108,171-189\\n42-51,73-107,107-136\\n48-57,57-62,62-84,171-189\\n-10-10,40-65\\n46-82,156-175,175-194\\n63-84,162-190\\n53-79,171-189\\n54-76,161-175,180-191,195-210,281-299,303-322\\n47-64,64-80,191-209,287-305,305-308,308-325\\n59-77,291-312,312-327,327-344\\n285-319\\n180-205,286-324\\n43-70,70-85,172-185,185-206,291-311\\n51-70,70-84,167-183,186-202,279-290,293-324\\n42-62,272-293,297-311,311-316\\n39-58,58-78,78-95,280-317\\n53-70,70-84,207-210,253-271,288-319,319-334\\n45-69,69-71,290-310\\n16-50,53-67,67-83,83-97,119-139,139-147,147-160,166-188,193-218,218-220\\n35-51,51-55,55-62,62-65,65-69,69-75,75-88,112-126,126-131,131-135,135-140,156-172,172-181,181-203,220-224\\n51-61,61-65,70-80,151-167,170-186,198-232\\n156-187,194-212\\n153-187,187-190,190-200,200-214\\n147-174,183-218\\n157-169,169-179,179-189,189-216\\n149-165,165-167,167-177,177-180,180-204,204-208\\n-2-2,2-24,33-45,48-68,72-89\\n15-33,33-54,54-56,56-77,77-90\\n170-190\\n152-175,178-182\\n169-191\\n-2-2,2-7,7-15,15-33,35-53,53-74,74-106\\n2-9,12-16,16-22,22-30,30-36,36-59,64-70,70-79,79-90\\n-29-29\\n169-191\\n162-198\\n71-81,81-90,90-95,95-101,101-111,111-115,115-129,129-148\\n158-202\\n49-70,293-312\\n-10-10,86-110,110-116,116-124,124-131,131-133,133-142,142-153\\n281-310,315-333\\n49-69,162-192,287-310\\n50-71,164-184,288-310\\n15-25,25-51,87-104,138-150\\n260-280\\n261-280\\n28-48,48-53,53-54,308-321,321-332\\n21-33,37-60,169-195,280-306\\n172-190\\n172-190\\n294-305,305-332,332-351\\n290-309,309-332\\n290-307,307-325\\n39-60,60-62,62-78\\n38-57,57-87\\n8-26,29-40,317-345\\n29-47,317-339,339-341,341-368\\n-21-21\\n-10-10,16-42,138-169,169-179,179-181\\n22-40,40-51,51-85,87-93\\n-10-10,20-36,36-42,42-63,78-102\\n46-54,54-59,59-63,63-66,66-74,74-85,89-107,110-128,145-157,157-160,164-174,174-186\\n0-33,33-36,36-53,53-79,79-88,88-92\\n78-117,117-141\\n-5-5,5-34,40-69,69-90\\n108-129,169-191\\n0-24,24-28,28-68,76-93,93-99,99-124,136-165,165-171,171-173,173-176,176-180\\n-36-36,36-67,69-89,89-109,126-159,169-191\\n6-70\\n38-57,57-67,67-77,77-103\\n145-163,169-194,200-220,220-227,229-248\\n329-349\\n328-348,348-350,350-364\\n-11-11,16-37,37-43,43-49,49-58,58-73\\n-21-21,38-58\\n-13-13\\n-12-12\\n-13-13\\n169-191\\n-11-11\\n-12-12,16-19\\n-3-3,3-16\\n164-179,179-181\\n-15-15,22-54\\n-1-1,1-11,11-23\\n-17-17,17-32,52-62\\n-13-13,14-43\\n0-19,30-38\\n40-66,166-194\\n170-190\\n32-64\\n34-70\\n-27-27\\n-1-1,1-7,7-17,17-19,19-65,65-79,79-82,82-84,84-96\\n35-62,62-88,88-92\\n-1-1,1-3,3-68,81-90\\n0-12,12-16,16-21,21-33,33-61,61-67,67-69,69-96,104-121,124-128,128-141,141-143,143-161,161-180\\n44-57,57-61,61-73,73-85,85-95\\n33-60,60-90\\n22-46,46-56,66-114\\n43-60,60-87,90-105,105-130\\n118-150,169-191\\n-16-16,31-45\\n-31-31\\n-17-17,17-29,29-32,32-36,36-40,40-42,42-44,44-64,91-108,116-132,132-134,134-153,160-200\\n-13-13,15-27,27-46,50-58,60-66,66-68,71-109\\n-8-8,8-63,76-104\\n38-63,63-86,86-112,112-114,114-145,145-180\\n45-59,59-90\\n-19-19,29-31,31-48\\n168-192\\n27-46\\n18-36,42-60,60-76,76-80,80-94,99-117,128-146\\n-12-12,14-32,112-135,135-140,140-143,143-163,163-168,168-179,179-181\\n117-128,128-136,136-153,153-159,159-163,163-179,179-181\\n324-359\\n0-21,21-24,24-39,39-46,46-50,50-52,52-62,62-66,66-89,89-91\\n-18-18,18-36,87-114,114-140,140-165,165-175,175-180\\n147-174,178-204,241-259\\n146-166,166-170,170-190,190-204,204-216,216-219,219-232,235-254\\n120-152,152-163,163-174,174-178,178-182\\n-23-23\\n59-89,89-91\\n24-41,41-61,61-69,69-90\\n63-90\\n289-303,303-325,325-331,331-342\\n-17-17,17-22,22-65\\n18-37,37-63,63-76,76-85,85-94,94-108,108-112,112-114,114-117,117-128,128-132,132-133,140-142,142-149,150-162,162-178\\n-10-10,54-87,87-93\\n0-34,34-60\\n-16-16,16-45,45-53,53-73,73-90\\n-1-1,1-9,9-45\\n-1-1,1-15,15-32,32-64,67-89,91-99,103-140,140-160,160-166,166-178,178-182\\n25-36,36-38,38-62,62-65,65-72,72-79,79-101\\n-1-1,1-5,5-13,13-78,86-94\\n45-73,73-77,77-97,97-140\\n63-117\\n-1-1,1-26,26-51\\n-9-9,47-78,82-104,116-124,127-136,136-149\\n-1-1,1-10,10-33,171-189\\n163-180\\n-1-1,1-3,3-15,15-39,143-162,162-198\\n-9-9,118-132,132-139,139-152,152-174,174-186\\n0-23,23-26,26-35,35-47,160-200\\n165-195\\n38-71,293-316\\n102-120,267-275,290-301,303-306,306-331,331-339\\n156-187,195-213\\n295-314\\n296-314\\n8-18,294-311,311-317,317-319,319-324,324-346\\n-5-13,26-41,41-44,44-52,52-53,271-289,301-311,311-320,320-324,324-340\\n274-305,310-322,322-330,330-333,333-350,350-363\\n272-287,287-289,289-319,319-328,328-343\\n105-124,124-129,129-144,144-179\\n100-123,130-149,149-182,195-217\\n-5-5,5-15,15-17,17-25,25-35,35-49,73-77,110-127,127-151,157-173,173-175,175-180\\n10-20,24-36,68-87,87-97,97-121,146-156,171-189\\n40-71,169-191\\n171-189\\n62-93,116-124,161-191\\n55-74,74-94,116-134,161-181,181-193\\n50-75\\n-11-11,26-51\\n-12-12,33-57,62-70\\n-12-12,159-168,168-170,170-190\\n7-29,43-64\\n187-205,287-313\\n302-326\\n65-83,294-311,311-313,313-325,325-331,331-344\\n0-2,2-21,21-24,26-43,43-45,45-62,81-99\\n31-45,45-60,60-69,69-90,90-98,98-101,101-112,112-132,143-158,158-161,161-179,179-181\\n-18-18,155-169,169-191\\n21-51,115-134,134-154,154-169,170-190\\n-14-14,170-190\\n-13-13,169-191\\n170-190\\n239-263,292-324\\n10-40\\n-19-19\\n-1-1,1-35\\n-1-1,1-16,16-20,20-55\\n5-23,37-55,70-91,94-111,111-116,116-123,136-154,170-190\\n23-41,41-44,44-86,86-89,89-91\\n31-39,73-107\\n-15-15,15-19,19-34,34-65\\n-10-10,21-79,81-99\\n-30-30\\n73-107\\n-1-1,1-6,6-8,8-21,21-41,46-52,57-71\\n-13-13,20-33,33-37,37-41,41-72\\n19-33,36-59\\n46-76,169-191\\n167-193\\n-2-2,2-22,22-38,38-55,58-84,163-172,172-188\\n-2-2,2-21\\n165-194\\n64-99,239-257,257-259,259-285\\n35-71,71-80,80-93,93-99,99-107,107-119,119-150\\n155-165,165-169,171-189\\n171-189\\n111-145,309-324,324-327,327-332,332-342\\n113-132,132-140,140-158,288-300,304-306,306-315,318-324,324-333,333-351\\n151-155,160-170,171-189\\n52-61,79-98,98-122\\n-23-23\\n57-95,247-273,277-301\\n58-79,282-301\\n-18-18,23-59,59-76,76-104\\n0-28,33-45\\n-1-1,1-16,16-28,28-34,34-62\\n0-5,5-9,9-16,16-25,25-48\\n-15-15\\n-15-15\\n-17-17\\n0-5,5-10,10-23,168-192\\n0-4,4-27,27-47,47-63\\n171-189\\n3-21,103-121,121-122,126-152,152-172,172-188\\n-13-13\\n11-19,176-203,214-232,278-296,301-310,325-363\\n-23-23,31-46\\n164-196\\n0-16,19-43,171-189\\n145-164,164-196\\n-14-14\\n168-192\\n-22-22\\n9-35\\n4-27,33-48,48-59,67-85,118-136\\n12-21,172-187,188-202,202-207,207-231\\n20-38,187-202,202-227,227-245\\n47-68,72-108\\n170-196,286-319\\n169-179,287-315\\n-15-15,15-46\\n145-159,159-201\\n162-198\\n163-179,179-181\\n-10-10\\n-16-16,16-36,111-123,123-155,159-177\\n-9-9,24-51,128-157,161-199\\n24-50,87-97,97-118,118-126,142-153,153-161,162-198\\n171-189\\n-21-21\\n171-189\\n-9-9,156-185\\n0-3,3-25,154-206\\n-15-15,15-29,155-205\\n-23-23,167-193\\n-12-12,17-46,57-79,170-190\\n-15-15,162-198\\n-22-22,22-46,48-65,115-138,138-160,160-200\\n-12-12,169-191\\n-22-22,135-156,159-201\\n-14-14,167-193\\n-17-17,133-145,145-160,163-197\\n0-4,4-18,18-20,20-28,28-48,151-179\\n36-49,55-68,70-88,88-89,123-148,152-162,168-173,173-177,181-193,193-205,222-232,235-259,263-275,311-319\\n1-19,34-52,69-87,94-112,135-152,152-165,168-185,230-256,256-260,260-276,276-296,314-326,330-332,332-341\\n-10-10,10-44\\n0-20,20-35,156-170,170-175,175-185\\n-20-20,141-159,159-201\\n15-31,32-47,47-66,75-93\\n87-107\\n-19-19\\n0-20\\n49-78,78-97,109-129\\n44-73\\n0-17,46-75,75-104,126-144,155-205\\n35-63\\n45-83,83-104,104-113,113-126,133-152,152-208\\n30-59\\n25-53,53-59,59-80,171-189\\n37-61,118-130\\n43-62,62-76,162-182,182-200,293-311,333-351\\n38-59,59-82,161-188,286-304\\n47-76\\n58-73,73-103,103-113\\n168-192\\n275-296\\n165-203,268-286\\n72-92,151-165,165-169,169-201,282-295,295-312\\n66-84,86-103,114-148,151-158,158-166,166-177\\n159-178,178-180\\n120-135,135-163,166-194\\n1-22,135-159,163-179,179-181\\n-24-24,164-196\\n167-193\\n-14-14\\n167-193\\n0-3,3-18,158-202\\n164-196\\n0-29,149-170,170-190\\n-11-11,151-180\\n-14-14\\n159-201\\n163-180\\n167-193\\n166-194\\n-11-11\\n136-152,154-179,179-181\\n50-63,67-83,87-107,111-117,155-173,181-205,206-232,242-254,254-264\\n59-90,92-123,225-237\\n38-53,53-56,56-64,65-88,88-91,91-109,202-220\\n160-200\\n-9-9,62-92,96-119,119-135,135-137,146-171,171-189\\n-12-12\\n137-155,161-177,177-180\\n157-203\\n-12-12,40-49,64-83,83-101\\n-12-12,113-132,139-147,155-177,177-179,179-181\\n-10-10\\n-12-12\\n169-191\\n-2-2,2-7,133-149,149-178,178-182\\n168-192\\n-24-24,166-194\\n0-22,162-198\\n-14-14,14-47,119-127,149-157\\n-1-1,1-5,5-36,36-56,56-67,90-99,99-109\\n-10-10\\n-10-10\\n136-157,162-178,178-180\\n1-9,27-45,45-53,53-54,127-138,138-142,142-171,172-180\\n-13-13,59-87,94-118,165-195\\n-10-10\\n-11-11\\n124-139,139-152,152-155,155-205\\n-4-43,43-45,45-76,97-121,123-143,143-166,166-169,169-173,173-234\\n4-44,44-73,73-93,96-118,120-150,150-167,167-174,174-202,202-233\\n19-42,42-59,62-81,81-100,110-128,167-177,177-181,183-197,197-199,203-215\\n25-62,68-82,82-99,112-120,194-215\\n3-4,8-29,304-324,324-329,329-359\\n-4-17,236-254,305-332,332-356\\n94-108,108-128,135-151,151-177,177-183,183-218,218-220,220-237\\n96-115,115-124,124-172,172-234\\n11-53,109-132,137-157,157-179,190-194,199-204,300-314,314-318,318-322,322-328,328-334,334-342,352-356\\n8-56,56-59,59-65,124-136,142-151,151-161,161-177,184-217,310-318,318-340\\n0-28,166-194\\n-14-14,154-164,164-176,176-184\\n0-20,154-170,173-187\\n156-172,172-203\\n146-162,166-207\\n-21-21,29-31,31-47,47-85\\n-10-10,73-94,163-197\\n-20-20\\n168-192\\n127-144,145-167,167-193\\n-27-27,161-199\\n-11-11\\n167-193\\n0-20,26-40\\n-10-10\\n131-139,168-192\\n0-4,4-24,24-34\\n169-191\\n170-190\\n48-75,148-158,158-162,164-175,175-185\\n-16-16,16-34\\n29-48,120-147\\n-10-10\\n-10-10\\n3-25,25-28,28-55\\n0-36,36-74,313-332\\n160-200\\n146-170,170-177,177-183\\n-9-9\\n-15-15\\n170-190\\n3-21,25-36,36-53,169-191\\n2-15,15-17,17-20,20-28,28-49,54-64\\n55-82,82-113,124-144,146-159,159-161,161-179\\n-9-9,44-72,72-84,161-180\\n49-76,170-190\\n-12-12\\n-17-17,99-114,114-116,116-138,140-147\\n20-39,45-76,162-198\\n168-192\\n33-50,50-52,52-70\\n0-12,35-68\\n42-81,163-180\\n31-60,69-87\\n52-79,156-176,176-184\\n50-73\\n50-72\\n-5-6,6-24,42-54,54-64,290-308,308-326\\n-40-40\\n0-17,17-19,19-39,39-61,68-90,114-135,135-138,138-161,161-179,179-181\\n34-52,52-77,77-90\\n-11-11,11-14,23-69,85-90\\n41-87,87-117,117-119,119-135,135-162\\n40-53,53-55,57-78,78-102\\n-13-13,22-61\\n34-52,58-81,81-99\\n147-164,164-180\\n-11-11,11-28,28-48\\n144-165\\n121-135,135-173\\n-14-14,27-41,46-61,61-79,114-125,125-133,133-149,154-172\\n89-112\\n-1-1,1-17,136-156,159-171,174-177,177-183\\n10-28,49-60,60-81,83-98,98-120,120-127,127-139,147-165,167-193\\n-19-19\\n43-77\\n-22-22,31-90\\n72-84,84-106,106-125\\n1-20,20-45,45-48,48-51,51-53,53-68,68-71,71-88,88-92\\n-45-45\\n19-73,121-156,166-194\\n0-2,2-23,44-82,86-94\\n0-18,18-52,59-83,83-88,88-92\\n161-180\\n124-152,152-178,178-182\\n-16-16,16-48\\n-15-15\\n0-36\\n130-156,157-203\\n3-29,29-48,48-75,75-90\\n47-67,67-77,77-78,86-105,105-107,107-112,112-123,141-159\\n-1-1,1-43,43-45,45-49,49-89,89-91\\n30-54,56-82,93-130,164-196\\n137-152,161-180\\n123-152,152-175,175-180\\n-1-1,1-19,19-22,22-41\\n-4-4,4-42\\n-31-31\\n0-9,9-44,44-64,134-153,163-197\\n53-85\\n0-4,4-61,69-82,82-98\\n48-65,65-75,86-98,98-111,111-114,154-206\\n61-87,87-93\\n0-9,9-38\\n-10-10,10-13,13-39,77-95,170-190\\n-12-12\\n151-164,169-191\\n146-165,165-195\\n161-180\\n0-22,23-30,30-44\\n37-58,62-80,82-91,91-116,129-156\\n-1-1,1-17\\n60-78,151-156,156-177,177-183\\n-18-18,49-67,82-97,101-116,133-147,152-158,158-162,167-177\\n2-17,106-134,134-150,150-152,152-170,170-173,173-187\\n-10-10\\n-18-18,25-48,169-191\\n0-19,108-126,126-149,160-180\\n-13-13\\n-13-13\\n114-125,215-249\\n134-152,159-177,180-196,199-211,211-235,235-250\\n0-68,68-87,87-93\\n13-28,32-47,48-66,74-91,104-141,141-153,156-174\\n-2-2,2-13,13-86,86-90\\n45-61,61-74,78-89,89-91,91-94,96-98,98-128,128-130,130-153\\n120-139,139-144,144-155,155-162,162-176,176-184\\n140-172\\n-25-25\\n0-33\\n-13-13,13-51,91-114,117-137,142-167,167-193\\n-9-9,35-64,64-80,80-83,83-97\\n-11-11,11-60\\n26-59,59-83,101-119,123-145,145-168,168-179,179-181\\n44-65,65-70,70-90\\n16-62\\n32-57,57-61,61-66,66-74,74-89,89-109,111-141\\n33-88,88-92\\n37-62,62-86,86-108,108-129\\n122-144,144-148,148-175,175-180\\n123-140,140-146,148-169,169-191\\n-21-21,21-44\\n-13-13,13-38\\n-4-4,4-22,59-69,69-73,78-89,89-106,126-152,165-179,179-181\\n13-33,125-158,158-166\\n-21-21,165-179,179-181\\n16-34,38-50,50-53,57-69,117-156,171-189\\n-11-11\\n-24-24,129-143,143-156,156-164,164-196\\n-16-16,16-34,121-148\\n108-119,119-127,127-160\\n154-178,178-182\\n140-161\\n-9-9,21-46,118-145\\n56-74,118-147\\n-7-46,46-98,98-148\\n-5-94,94-100,100-108,108-151,151-165\\n-15-8,8-28,28-39,39-43,43-57\\n-5-15,15-20,20-31,31-43,43-60\\n1-39,39-81,81-124,128-145,204-230,230-261\\n1-64,64-70,70-74,74-76,76-78,78-84,84-122,205-227,227-257\\n16-25,25-49,49-56,56-78,78-82,82-100\\n33-56,56-77\\n10-65,76-97,99-120\\n12-62,68-83,83-103,103-118\\n-4-39\\n2-36,36-45\\n11-16,16-19,21-55\\n12-30,30-35,35-65,68-77,77-92\\n101-122,122-130,130-148,148-150,150-154,154-183,183-198,198-200,200-227,233-239,239-244,244-256\\n98-121,126-153,153-183,183-227,242-252,252-265\\n132-154,154-161,161-170,170-174,174-186,186-220\\n138-172,172-181,181-222\\n-6-4,4-8,10-31,31-55\\n-2-1,8-31,31-34,34-54\\n245-260,260-304,304-350\\n12-30,260-295,295-303,303-311,311-353\\n234-245,245-253,253-256,256-260,263-293,299-309,309-328,328-333,333-346\\n243-258,258-288,298-334,334-352\\n-8-43,43-48,48-50,50-72,72-96,96-98,98-101,101-126,126-147,147-166\\n-1-1,1-15,15-37,37-65,65-82,82-100,100-107,107-109,109-112,112-132,132-136,136-139,139-150,150-156,156-165,165-179\\n5-41,41-45,45-66,72-91,91-101,101-106,106-124,197-215,215-240,250-272\\n-8-54,54-67,70-104,104-108,108-115,115-135,135-153,203-220,220-232\\n18-44,47-69,69-89\\n20-34,34-39,39-47,47-62,69-95\\n97-119,141-153,153-175,175-180,180-212,212-236,236-241\\n97-115,140-178,178-201,201-204,204-236,236-253\\n6-34,34-51\\n4-31,31-54,347-363\\n-1-30,123-132,132-142,222-253,341-359\\n-3-5,7-16,16-26,95-122,122-140,211-231,231-234,234-253\\n191-208,208-210,210-214,214-226,226-252,258-276\\n-3-8,17-40,63-81,283-301,319-337\\n-12-16,16-19,19-40\\n-1-29,29-42,330-344,344-359\\n-3-17,17-32,32-44,78-96,115-133,136-154,226-244,263-281\\n0-48\\n2-48,331-350\\n-1-36,50-72,203-211,226-236\\n5-29,29-35,217-232,232-248,248-264\\n15-33,48-70,97-115\\n41-65,291-316\\n33-70,294-317\\n140-158,164-199\\n131-148,148-156,156-159,161-190\\n52-60,163-197,282-305\\n43-75,162-181,181-194,283-291\\n68-93,166-192\\n69-92,132-150,150-157,163-193\\n132-150,163-194\\n38-67,292-318\\n41-69,293-317\\n166-198,294-312\\n162-207\\n177-198\\n161-169,179-199\\n41-56,56-76,76-85\\n-7-11,13-26,26-41,41-72\\n24-44,44-68,290-327,330-332,334-353\\n-4-17,34-68,69-79,296-323,323-332,332-335,335-356\\n59-90,113-132,159-191\\n54-90,154-164,165-192\\n41-59,175-205,290-323\\n47-77,77-92,181-204,284-318\\n45-58,58-60,60-76\\n189-203,203-206,206-209,209-213,213-231,285-308\\n57-86,165-190\\n257-275,288-316\\n38-47,287-309,314-322,333-360\\n37-48,48-56,56-67,301-329,331-360\\n-10-12,34-66,293-325,325-327,327-339\\n-9-14,34-66,291-322,335-351\\n177-195,268-294\\n45-79,166-194,290-323\\n46-80,133-157,164-195,233-252,287-325\\n50-81,152-177,181-193,295-306\\n52-67,71-93,145-159,159-166,166-170,170-189\\n290-322\\n53-73,178-206,281-307\\n49-78,168-202,234-244,285-305\\n34-52\\n47-77,171-189\\n46-63,63-81,283-295,295-298,302-314\\n43-78,139-157,161-195,295-322\\n48-81,161-197,287-297,300-321\\n170-191\\n167-189\\n0-5,5-28,113-125,125-131,131-150\\n1-14,14-37\\n91-111,111-113,113-136,136-161\\n99-117,117-153\\n122-152\\n40-77,163-197\\n42-80,156-180\\n169-191\\n170-190\\n41-64\\n14-36,36-65\\n42-81,164-196\\n40-62\\n56-83,176-180,187-191\\n33-47,53-85,170-196,296-314\\n36-68,73-90\\n44-75\\n54-83,122-148,159-188\\n53-82,92-99,99-120,157-189\\n56-75,126-150,184-202\\n58-78,123-147,160-184,184-187,187-188\\n175-199,199-216,275-292,292-311\\n177-188,188-195,195-207,233-252,282-304\\n40-71,159-191,287-314\\n40-72,167-193,288-314\\n34-65,298-331\\n30-36,36-46,46-69,290-311,311-326\\n57-84,154-181\\n59-84,159-183\\n2-14,17-20,20-29,29-37,39-68,130-151,151-159,162-177,177-183\\n-3-3,3-11,11-17,17-30,54-80,140-153,156-204\\n122-139,139-141,141-156,156-177,177-183\\n1-22,22-40,55-73,77-95,142-156,161-176,176-178,178-182\\n114-132,149-174\\n150-170,170-180,180-197\\n29-47,55-73,84-95,95-103,103-114,135-148,154-167,172-190,284-319,321-342\\n144-162,162-198\\n-9-9,9-27,27-47,47-71,156-169,169-178,178-182\\n-1-1,1-33,33-76,76-101,138-154,157-179,179-181\\n100-118,120-138,138-151,151-153,153-177,177-180\\n-10-10,14-38,38-46,46-64\\n28-55,167-193\\n128-150,150-154,154-158,158-167,169-177,177-209\\n119-137,137-150,150-171,171-175,175-187,187-197,197-199,215-218\\n123-141,147-190\\n113-124,124-132,132-140,144-157,157-186,191-209,270-286,286-311\\n26-44,87-105,117-129,160-178,184-202,279-308,308-320\\n64-82,284-302,319-340,342-353\\n113-131,147-175\\n34-65,65-83,83-90,90-108,164-180\\n47-88,158-180\\n43-73,163-197\\n55-72,72-79,79-100,155-205\\n163-197\\n38-73\\n0-8,8-35,35-38,38-40,40-56,63-87\\n21-33,34-60\\n28-37,49-68,68-88,169-191\\n49-79,157-203\\n-17-17\\n36-51,51-69,171-189\\n20-47,47-59\\n37-67,67-69,69-95,153-175\\n32-52,52-54,54-72,72-89,154-179\\n16-36,43-90,111-137,161-180\\n28-42,47-76,168-192\\n2-20,20-32,32-34,34-37,37-62\\n-1-1,1-6,6-9,9-15,15-18,18-58,68-89\\n41-82,166-194\\n35-44,291-320,320-323,323-336\\n290-322\\n0-13,13-56\\n-11-11,30-75,75-86,86-94\\n45-135\\n-8-8,29-71,71-89,89-91\\n36-61,61-75,75-85,85-90,90-93,93-118,118-121,121-148\\n69-111\\n34-81,81-99\\n41-77,77-90\\n40-68,68-112\\n0-8,8-27,27-52\\n120-143,143-176,176-180\\n-35-35\\n-22-22,33-81,81-89,89-91\\n109-158,158-202\\n8-31,36-54,60-80\\n46-90\\n-13-13,13-33,33-68\\n57-123\\n-1-1,1-27,47-67\\n0-3,3-25,25-60,60-72,72-74,74-81,81-90\\n52-55,81-106,106-111,111-119,119-137\\n42-60,66-90\\n77-103\\n-14-14,55-65\\n-1-1,1-18,18-41,41-60,60-86,86-99,99-101,101-107,107-129\\n92-119,119-146,146-165,165-195\\n0-21,21-26,26-34,34-36,36-38,38-66,66-79\\n0-12,12-22,22-79,79-89,89-91\\n3-12,24-41,41-44,44-47,47-81,81-103,103-125\\n48-67,67-88,88-92\\n-2-2,2-21,33-51,51-53,53-93\\n122-137,137-152,162-198\\n-2-2,2-5,5-6,26-36,38-41,41-61,61-74,74-106\\n6-82,82-89,89-91\\n-14-14,14-32,120-159,159-180\\n24-55,55-81,81-84,84-96\\n-1-1,1-4,4-17\\n44-61,61-90\\n50-69,69-111\\n98-112,112-118,118-139,139-164,164-196\\n2-12,12-24,28-58\\n76-91,91-94,94-124,124-139\\n-11-25\\n-5-23,75-93,329-347\\n131-149,152-178,178-195,195-225,230-248,248-262\\n130-141,150-176,176-202,202-230,234-260\\n-1-15,60-78,320-359\\n-4-18,322-351\\n26-45,327-376\\n329-376\\n135-144,198-229,234-262\\n132-144,159-174,187-206,206-230,234-258,271-289\\n136-167,176-194,194-226,232-252\\n137-168,176-195,195-232\\n32-54,54-62,62-83,83-86,86-94\\n36-58,58-85\\n-43-43,43-58,58-61,61-67,67-88,88-90\\n-30-30,35-49,49-56,56-58,58-63,63-69,69-90\\n3-25,107-125,138-148,152-179\\n45-74\\n-10-10\\n108-126,132-161,161-177,177-183\\n92-111,137-162,162-179,179-181\\n-29-29\\n-11-11,18-38\\n-1-1,1-4,4-21,21-26,26-30,30-41,41-47,47-57,57-89,89-91\\n0-20,20-22,22-48,48-53,53-64,64-73,73-84,84-96\\n-1-1,1-6,6-11,11-36\\n-27-27,33-50\\n-9-9,9-30,30-51\\n0-25,56-78,78-96,114-133,166-179,179-181\\n0-23\\n-16-16\\n2-17,30-48,49-81,81-90,90-101,112-132,136-151\\n0-20,20-26,64-76,76-79,83-95,120-139,146-164\\n-19-19,19-35\\n-16-16,16-40\\n81-109,113-133,154-167,167-193\\n-16-16,16-43\\n-10-10,126-150,150-153,153-180\\n-19-19\\n56-97,155-205\\n0-27,27-48,48-60\\n-33-33\\n-23-23\\n-10-10,26-34,34-36,36-54,146-158,158-163,165-195\\n159-201\\n42-57,57-84,169-191\\n17-32,32-36,36-68,68-90\\n54-73,73-92,161-180\\n0-14,14-21,21-25,25-27,27-52,57-79\\n-15-15,25-57,158-202\\n170-190\\n292-315\\n289-311\\n-9-0,2-9,9-12,12-22,42-75,288-325,326-334\\n17-39,45-69,284-294,294-326,347-365\\n6-24,42-70,293-309,309-321\\n3-13,13-28,45-70,296-319\\n36-59,298-323\\n39-57,302-328\\n139-176,265-283\\n110-130,141-157,157-163,163-165,165-179\\n47-71,273-293,293-306\\n51-75,283-310\\n58-83\\n71-89,91-109,122-140,157-182\\n66-85,85-104,122-140,141-151,151-155,160-170\\n47-71,269-280,280-305\\n64-90,111-129,157-188,188-193,193-204\\n66-84,154-183,184-200\\n163-175,175-185,188-195,195-224\\n171-194\\n151-169,175-197\\n11-29,40-50,50-72,149-168,168-173,173-176,176-185,185-195,282-300\\n6-24,35-53,53-54,59-69,156-167,167-193,272-283,283-305,305-321\\n-1-4,4-16,284-306,314-342,342-344,344-351,352-359\\n0-12,77-90,90-94,94-113,113-118,134-152,167-179\\n86-104,110-150\\n107-118,118-151\\n170-201,201-216\\n180-202,204-216\\n279-305,305-306\\n32-52,52-53,56-75,284-309,309-319\\n38-57,57-72,163-181,288-311\\n106-124,126-141,145-154,154-159,159-161,161-165,165-166,216-229,229-233,233-238,238-251,261-270,273-275,275-294\\n82-97,101-114,114-115,117-128,128-130,130-134,134-164,186-194,228-246,255-264\\n152-170,170-176,176-187,226-244,250-268,268-272,272-278,278-280,280-307\\n169-187,200-208,249-277,277-282,282-290,290-308\\n44-79,294-348,348-357,357-380\\n14-38,38-49,49-62,62-84,293-326,326-364\\n298-316,316-336\\n28-60,170-208,275-313\\n29-62,171-210,277-314\\n79-102,102-142\\n81-110,110-117,117-143,143-162\\n172-192,194-211\\n174-193\\n53-62,163-187,294-320\\n153-165,165-175,175-185,296-323\\n5-20,20-28,28-40,40-47,47-68,75-92,92-105,135-160,160-181\\n-4-9,9-13,13-33,33-65,65-71,73-100,145-171\\n235-265,265-269,269-272,272-299,302-321\\n257-275,275-308\\n34-52,57-76,295-331,331-349,349-381\\n24-43,51-72,294-343,343-358,358-379\\n162-180,270-288\\n176-194,246-257,260-284\\n1-12,306-331,331-334,334-361\\n103-134,134-142,142-144,144-163\\n98-110,113-139,139-160,184-193,199-209\\n4-22,60-78,296-325,325-328,328-332,332-345,345-348,352-360\\n299-323,323-341,345-365\\n61-89,95-123,274-300\\n96-112,112-118,118-122,122-138,138-161,165-177\\n94-105,105-113,113-118,118-120,120-123,123-164\\n169-180,180-191,214-229,233-240,240-244,249-255,255-266,268-296\\n195-213,242-255,263-282,282-299\\n39-51,298-308,308-336,336-362\\n11-31,310-329,329-341,341-350,350-370\\n288-299,299-322,322-351\\n35-53,268-285,293-318,318-325,325-348,348-365\\n-2-2,5-10,39-87,90-97,118-130,130-139,139-159,159-165,165-195\\n-17-17,17-38,38-48,78-97,99-155,169-191\\n0-28,32-50\\n31-50,55-73,105-125,125-137,137-145,145-149,149-157,157-180\\n71-109\\n74-106\\n52-70,70-73,73-107\\n74-106\\n40-83,162-180\\n170-190\\n42-62\\n33-64,64-67,67-81,81-99\\n47-77,77-90\\n156-180\\n21-39,44-63\\n29-47,50-67\\n50-76,76-81,81-83,85-88,88-92\\n0-22\\n-1-1,1-34,34-45\\n-12-12,27-55,73-88\\n-10-10,10-23,23-40,40-43,43-49,49-84,84-96\\n34-82,82-98\\n-8-6,24-87,87-103,103-106,106-126,130-150\\n25-70,70-102,103-123,123-132,132-149\\n19-35,35-53,55-78,78-84,84-86,86-98,98-106,106-117,219-243\\n12-37,37-41,41-53,53-55,55-60,60-85,85-86,110-137,217-237,237-251\\n115-129,134-148,156-179,186-204,206-224,224-234,236-252\\n154-181,181-190,192-211,216-234\\n32-50,50-82\\n-3-15,36-69,69-71,71-73,73-84,84-102\\n5-35,346-360\\n2-36\\n-8-18,45-65,293-315,342-352\\n48-75,163-192,290-313,313-332\\n50-75,160-186,186-191,296-314,314-333\\n0-34\\n48-75,161-178,178-182\\n53-62,62-79,159-179,179-181\\n171-189\\n171-189\\n41-62\\n43-65\\n43-65\\n58-82,158-181\\n61-81,88-106,157-182\\n47-80,164-196\\n39-59\\n31-60\\n61-86\\n47-67,67-113\\n53-68,68-71,71-77,77-79,79-83,83-90\\n0-36,36-61\\n33-54,87-98,114-132\\n59-72,72-80,80-100\\n65-115\\n47-67,67-90\\n67-88,88-92\\n39-57,57-68,68-112\\n63-117\\n74-106\\n34-46,46-49,53-60,68-71,75-79,79-83,88-91,91-97,97-115,120-140,152-170\\n49-81,81-84,84-89,89-91\\n39-67,67-113\\n-28-28,28-39,39-64,79-101\\n-14-14,136-161,166-194\\n50-93,152-208\\n41-63,169-191\\n40-66,290-308\\n50-73,286-297\\n171-197\\n2-14,14-31,40-58,58-72,290-315\\n45-74,166-194\\n162-198\\n170-190\\n3-21,43-65\\n45-76,164-196\\n34-55\\n-22-22,120-136,136-147,147-150,150-154,154-167,167-170,170-174,174-178,178-182\\n-9-9,128-147,147-177,177-183\\n-27-27\\n-21-21,161-179,179-181\\n-1-1,1-5,5-11,11-31,167-193\\n-18-18,18-21,21-23,23-39,124-138,138-154,154-158,158-174,174-186\\n-1-1,1-16,16-27,27-52\\n-24-24\\n0-9,9-19,19-54\\n-18-18,125-136\\n171-189\\n168-192\\n169-191\\n-9-10\\n67-114\\n76-105\\n-11-10\\n-10-10\\n34-48,48-84,89-91\\n79-93,93-99,99-112,247-262,262-265,265-282\\n2-17,164-196\\n-11-11,158-180\\n8-18,18-22,24-49,52-64,75-93\\n50-60,60-90\\n70-87,87-90\\n-12-12\\n-10-10,14-18\\n-23-23\\n-15-15,20-39,60-79\\n-5-18,18-28,157-171,174-201\\n-11-16,174-201\\n-12-12,15-31,31-35,35-48,105-138,169-191\\n13-30,52-78,78-102\\n70-90\\n-7-7,7-29,45-62\\n-1-1,1-20,54-86,86-89,89-91\\n12-21,27-30,30-46,49-62,62-81\\n38-74,158-202\\n138-155,155-177,177-183\\n-13-13\\n303-323,328-345\\n300-324\\n-6-6,6-11,11-14,14-31,31-41,41-43,43-63,63-71,71-77,77-82,82-97,97-106,106-137,137-147,147-152,152-176\\n-3-3,3-6,6-8,12-35,35-38,38-55,55-81\\n-13-13\\n3-14,14-22,22-33,76-101,110-121,144-161\\n-5-4,4-26,31-41,59-70,70-81,81-95,95-124,128-141,141-162,162-175\\n56-71,71-112\\n11-23,30-79,79-92,106-122,122-152\\n16-34,43-74,74-76,76-78,78-93,93-100,100-137\\n150-168,168-203,207-216\\n-9-11,18-37,302-321\\n347-372\\n-26-20,36-46,306-332\\n-12-12,36-53,53-80,84-96\\n55-73,73-90\\n-13-13,48-61,61-72,74-106\\n68-112\\n13-32,32-83,83-97\\n65-75,75-111\\n69-107\\n56-78,78-87,87-90,90-100,100-115,119-135\\n51-76,76-114,116-120\\n137-155,159-177,177-180\\n-10-19,169-202\\n-9-18,150-162,162-164,164-191\\n-13-13,171-189\\n79-101\\n-16-16\\n-12-12,12-54,85-102,171-189\\n-16-16\\n-17-17,25-45\\n-20-20\\n-16-16,18-24,24-44,44-64,120-136,136-167,167-193\\n40-53,70-83,104-122,122-124,124-155\\n0-22,165-180\\n197-221\\n50-69\\n18-32,32-52,52-66,66-89,89-97,97-100,104-116,263-289,296-314,322-333\\n-6-7,10-22,27-35,49-60,60-63,63-66,66-70,70-71,83-97,156-174,203-221,254-281,298-315,315-320,320-334,339-350\\n25-52,52-53,67-79\\n-20-20\\n-12-12\\n159-180\\n-16-16\\n166-194\\n-1-1,1-24,139-164\\n-15-15\\n-25-25,28-35,50-60,62-66,66-68\\n-13-13,13-15,15-19,19-23,23-39,67-89,89-91\\n-5-5,5-9,9-20,20-56\\n13-38,42-62,278-291,291-300,300-309,311-323,329-342\\n57-77\\n57-77\\n3-55,55-79,81-90\\n-1-1,1-14,14-18,18-33,41-90,98-116\\n-12-12\\n-11-11,111-129,129-148\\n-1-1,1-3,3-9,9-12,12-22,67-85,90-100,100-122,150-168\\n80-98,148-175,175-185\\n0-31,31-34,34-52\\n-9-9,9-28,93-103,103-112,112-122,162-180\\n-25-25\\n-14-14,29-56,147-154,162-198\\n0-19,26-44,47-65,77-103\\n0-24\\n-14-14,168-192\\n-9-9,15-33,63-80,80-92,92-100,100-104,104-108,108-128,128-134,164-177\\n-4-17,44-62,62-73,73-98,98-130,130-150\\n-4-14,20-40,40-47,47-49,49-71,71-84,84-89,89-123,123-140\\n102-120,224-242,245-263,263-284,284-297\\n-27-27\\n62-74,74-78,78-126\\n82-100,100-122,133-142\\n37-60,60-90,124-156,157-177,177-180\\n21-33,33-43,43-45,45-53,53-69,73-88,156-174\\n64-116\\n66-105\\n139-161\\n3-33,33-56,56-87\\n76-92,92-111\\n52-87,87-89,89-91\\n77-103,103-128,131-152\\n31-54\\n97-128,128-148,148-152\\n137-161\\n99-132,132-133,136-141,141-155,162-179\\n-1-1,1-42,164-196\\n-2-2,2-11,11-20,20-41,157-180\\n0-14,14-38\\n86-118,118-133,133-135,135-137,137-169,174-192,279-298\\n88-128,128-141,141-148,148-153,153-157,157-161,161-167,167-194\\n68-86,89-107,112-130,133-163,274-292\\n89-121,121-143,143-164\\n85-129,131-139,139-169,175-197,273-293\\n84-104,104-128,132-140,148-153,153-159\\n89-107,107-140,140-157,177-199\\n89-99,99-110,110-119,121-147,147-154,166-180\\n-4-5,10-25,25-39,39-41,45-57,58-76,117-135,157-165\\n7-37,37-58,72-90,164-187\\n-8-8,8-28,28-31,31-47\\n75-105\\n68-90\\n164-196\\n-1-1,1-5,5-25\\n3-32\\n0-19,158-202\\n3-13,13-38,161-180\\n0-20,41-64,64-65,81-103,103-133,153-163,170-190\\n0-16,16-36,36-50,50-86,86-89,89-108,108-128,128-145,145-166,166-194\\n-3-3,3-9,9-12,12-35,92-108,108-128,128-149,157-165\\n-2-2,2-31,32-52,52-72,72-88\\n68-112\\n-3-3,6-32,32-38,38-55,79-101\\n37-57,57-76,76-90\\n55-82,92-109,109-123\\n37-47,53-84,92-108,108-123\\n0-38,41-53,93-115,136-162,162-198\\n-18-18,18-32,166-194\\n87-102,102-118,118-138,278-302,325-333\\n155-189,339-369\\n161-192,332-367\\n42-62,62-81,167-193\\n40-61,61-77,163-197\\n14-18,18-40,40-54,54-58,58-60,60-99,99-142,142-175,175-194\\n8-44,44-51,51-101,101-103,103-116,116-123,123-136,136-152,152-188\\n37-62,73-81,153-181\\n42-65,154-186,294-302\\n33-45,48-74,141-157,158-179,179-181\\n48-76,169-191\\n160-176,176-179,179-181\\n1-12,12-24,24-37,37-64,64-71,71-75,75-77,99-122,122-133,145-170,170-178\\n31-49,49-52,52-73,160-178,178-182\\n55-76,174-192,293-309,309-323\\n40-51,51-79,163-173,173-177,182-192,280-290,290-299,299-300,306-325\\n40-64,64-77,77-87,87-93\\n67-83,83-89,89-91\\n0-10,21-46,46-64\\n97-130\\n68-89,89-91\\n11-23,23-45\\n-14-14,19-30,30-44,44-47,47-68,68-80\\n21-45,127-135,159-180\\n13-36,142-157,160-177,177-183\\n46-63,63-76,164-196\\n34-45,46-67,67-87\\n48-71,170-190\\n17-29,46-53,57-72,109-127,134-149,153-168\\n40-55,55-81,163-177,177-183\\n0-23,37-52,56-71,83-99,101-126,133-151,151-152,155-164,164-166,166-170,174-186\\n-2-2,2-7,7-12,12-28,166-194\\n48-72,162-198\\n-20-20,158-202\\n-4-4,4-10,10-23,26-42,42-44,44-61,61-75,75-79,79-85,85-109,109-124,124-133,133-144,144-149,149-154,154-179,179-181\\n-13-13,164-196\\n-15-15,25-33,33-40,40-48,48-51,51-69,71-89,94-111,111-124,124-138,138-153,153-158,158-202\\n-16-16,34-65,75-106,106-122\\n-22-22,159-201\\n0-20,61-80,80-82,82-104,104-123\\n-1-1,1-6,6-27,133-146,146-150,150-177,177-183\\n-13-13,164-196\\n-14-14,160-200\\n-17-17,131-144,169-191\\n-19-19,19-32,32-37,37-60,71-91,123-154,154-206\\n-15-15\\n-20-20,20-43,117-135,139-158,158-180\\n0-13,13-18,18-42,42-63,63-76,76-84,84-107,125-152,152-156,161-199\\n-11-11\\n-17-17\\n-29-25,25-32,32-70,72-96,96-103,103-117,120-162,162-178,178-203,203-240,248-270\\n-26-19,19-57,71-82,87-96,96-116,118-122,125-163,163-194,194-197,197-218,218-240,251-275\\n-4-31,31-50,52-57,57-61,61-65,65-69,69-83,116-140,175-192,192-212,212-230\\n0-11,11-28,28-36,36-57,71-94,172-193\\n272-290,309-319,319-355,355-368\\n122-134,134-139,139-145,145-159,159-165,167-185,198-209,209-226\\n126-151,151-172,172-194,194-221\\n0-37,54-72,123-141,188-196,207-218,223-237,327-337,350-359\\n-1-39,43-51,333-351,351-357,357-359\\n-2-2,2-16\\n168-193\\n165-192\\n2-27,157-180\\n-13-13\\n-13-13,138-164,164-172,172-180\\n-16-16\\n-20-20,151-164,164-180\\n79-101,105-130,154-180\\n61-78,78-126,127-135,135-155,155-180\\n0-20,20-36,164-196\\n-13-13,28-40,88-106,143-159,159-161,161-170,170-173,173-187\\n-10-10\\n2-13,13-16,16-21,21-34,157-203\\n-10-10\\n-10-10\\n-4-9,9-15,15-29,29-54,54-74,82-110,110-116,116-137,162-203,203-207,207-230\\n4-24,24-31,31-51,51-57,57-62,62-83,83-102,117-138,166-186,186-205,205-223\\n11-36,316-337,337-343,343-345,345-357,357-368\\n2-31,231-255,260-274,309-317,343-356\\n107-130,136-158,162-180,189-207\\n6-19,19-31,31-44,77-101,177-191,191-208\\n12-21,21-29,29-30,32-44,169-186,186-196,196-216\\n-11-11,160-200\\n62-89,164-188\\n166-187\\n23-46,57-77,77-78,82-94,146-168\\n45-63,163-180\\n-7-7,7-18,18-35\\n-21-21\\n0-5,5-11,11-15,15-29,158-177,177-183\\n-31-31,134-157,157-203\\n153-207\\n-28-28,148-212\\n160-180\\n0-3,3-8,8-10,10-29,154-179,179-181\\n-1-1,1-17,21-38,44-62,65-83\\n-15-15\\n-18-18,27-47,166-194\\n-27-27\\n-1-1,1-25,159-201\\n0-19,146-161,164-176,176-179,179-181\\n-12-14,14-47,158-175,176-205,205-230\\n0-4,4-6,6-42,173-227,335-360\\n-19-19\\n-23-23,23-73,108-162,162-166,166-194\\n-17-17,17-69,69-111\\n-15-15,15-35,35-52,57-75,75-88,88-109,118-146,166-194\\n-1-1,1-14,19-32,165-180\\n-20-20,20-26,26-44,158-202\\n-16-16,167-193\\n-12-12,12-29,128-146,146-168,168-180\\n-13-13,149-180\\n-29-29,32-45,45-49,49-58,58-66,68-83,83-88,88-102,110-132,132-139,139-144,144-148,148-212\\n-20-20,20-25,25-55,57-64,64-75,75-84,99-150,150-152,152-164,164-196\\n92-100,111-155,155-173,268-285,285-290,292-303,303-334,334-336,336-342,342-345,345-364\\n94-112,112-131,131-134,134-139,139-146,146-163,297-333,333-340,340-342,342-351,351-363\\n-16-16,159-201\\n153-169,169-191\\n-17-16,16-42,136-154,180-200\\n-8-44,128-154,159-187,187-217,334-352\\n2-22,22-35,344-354,354-358\\n-22-22,155-178,178-182\\n0-19,48-65,68-85,85-89,89-96,122-142,142-147,147-153,167-179,179-181\\n-5-5,5-20,161-174,174-186\\n-14-14,170-190\\n-10-10,168-192\\n0-15,20-30,157-174,174-179,179-181\\n-13-13,33-55,128-154,162-179\\n-4-26,26-43,149-167,182-218,329-347\\n-17-13,13-25,25-57,96-113,126-136,136-146,146-154,157-186,186-189,189-193,193-198,198-233,310-328,328-343\\n-22-22\\n-3-15,38-57,57-74,178-182,297-340,340-353\\n-4-5,5-10,10-31,40-57,57-72,171-179,287-304,304-332,332-343,343-356\\n20-46,51-75,96-114,175-194,276-302,319-337\\n-6-12,14-25,30-39,39-57,61-79,303-328\\n-13-13,48-75,166-194\\n44-52,55-75,75-96\\n62-92,92-115\\n52-69,73-94,106-124\\n52-94\\n66-89\\n79-107,111-140\\n56-93,93-106\\n-13-13,153-173,173-180\\n-17-17,17-32\\n75-105\\n73-105\\n54-98,98-101,101-125,125-151,151-209\\n-2-2,2-16,85-132\\n-2-2,2-15,15-36,36-51,56-76\\n-1-1,1-35\\n47-78,78-93,93-108\\n71-113,113-136\\n49-84\\n50-94\\n50-64,64-103\\n37-63,68-71,71-83\\n45-82\\n44-84,166-194\\n69-94,140-152,154-206\\n37-65\\n46-78,162-198\\n54-76,76-102,102-121\\n186-206,206-212,212-225,225-228,228-243,249-291\\n185-221,265-268,272-284,284-303\\n0-14,170-190\\n57-86\\n56-90\\n141-154,161-180\\n-14-14\\n125-149,149-153,153-157,157-167,167-169,169-176,176-178,178-182\\n94-106,106-112,112-124,124-126,126-128,128-134,134-151,161-175,175-185\\n-12-12\\n0-20,164-196\\n-12-12\\n-22-22\\n-10-10\\n1-26,115-131,131-133,133-172,172-175,175-180\\n77-113,113-118,118-130\\n141-160,160-180\\n134-168,168-174,174-180\\n-9-9\\n-14-14\\n-11-11\\n169-191\\n6-18,18-27,27-53,55-58,64-71,71-82,82-84,84-91,91-96,96-113,113-116,116-129,129-148,155-180\\n0-33,52-69,69-77,146-165\\n-14-14\\n-13-13\\n-11-11,168-192\\n-16-16,166-194\\n0-17,26-46\\n-12-12\\n-18-18\\n0-23,163-177,177-183\\n-1-1,1-3,3-34,141-155,155-161,161-164,164-196\\n0-5,5-37\\n8-28,28-33,33-39,39-54,115-133\\n-11-11\\n-10-10\\n0-13,13-23,23-45,109-128,132-153,169-188,197-216,218-236\\n-4-15,15-19,19-51,51-53,53-72,84-108,108-114,114-129,129-137\\n-6-18,18-20,20-22,22-30,30-49,87-99,99-101,101-104,104-127\\n-21-21,112-120,123-131,134-143,143-153,169-191\\n-15-15,162-180\\n-17-17,168-192\\n-14-14,166-194\\n-16-16,154-206\\n-10-10,35-55,115-136,167-193\\n34-52,94-112,179-201,201-216,216-233,252-264\\n272-300\\n40-80,162-206,277-306\\n56-79,159-201,267-310\\n167-196\\n166-192\\n40-67,286-316\\n33-55,55-77,268-286,286-316,323-341\\n54-71,71-94,157-193\\n53-88,163-187\\n47-71,157-191,289-310\\n60-78,149-181\\n53-82,160-183\\n46-72,168-193,290-318\\n42-83,172-194,282-324\\n43-78,82-88,163-185,277-318,318-321,321-343\\n167-194\\n158-180,180-203\\n171-191,191-210,283-316\\n169-188,188-216,253-269,276-316\\n33-43,43-52,53-80,164-190\\n51-84,156-185\\n44-64,64-78,78-91,165-179,184-198,295-317\\n51-76\\n49-62,62-64,64-67,67-86,173-196,289-322\\n45-74,277-293,293-322\\n49-93,168-197,197-206,206-216\\n47-96,165-183,183-205\\n26-36,36-40,43-68,296-322\\n43-62,62-69,69-82,82-90,165-188,188-201,201-203,203-205,205-207,207-222,222-229,239-257,272-296,296-301,301-317\\n49-66,66-68,68-89,164-177,177-193,197-221,264-272,275-281,281-295,295-301,304-308\\n-17-17\\n-1-1,1-18,123-143,143-146,146-150,156-178,178-180\\n-15-15\\n0-22\\n-20-20\\n165-195\\n153-180\\n162-198\\n-16-16,159-201\\n-16-16,128-147,147-161,161-180\\n-12-12\\n-11-11\\n162-198\\n160-180\\n0-6,6-21,158-180\\n-5-5,5-28,28-47\\n0-19\\n-17-17\\n170-190\\n-22-22,29-54\\n72-98,117-132,132-155,155-205\\n0-18\\n166-194\\n146-170,170-190\\n-18-18,136-161,161-179,179-181\\n-12-12\\n166-194\\n-1-1,1-30\\n167-193\\n-11-11,159-201\\n-16-16,16-37,37-51,51-65\\n-10-10,13-36\\n164-196\\n140-162,162-179,179-181\\n0-48\\n170-190\\n-2-2,2-5,5-19\\n0-6,6-25,62-86\\n168-192\\n2-41,41-52,52-57,57-60,60-75,75-87,87-96,96-110\\n-1-37,37-93\\n59-86,86-93,93-102,102-105,105-122,136-154,154-155\\n53-78,233-262\\n-11-25,25-28,28-45,45-49,49-88,88-108,108-112,112-118,120-138,216-228,232-262,265-288\\n36-58,58-78,78-83,83-95,95-107,260-278,309-327\\n42-75,76-97\\n40-58,58-60,60-62,62-64,64-83,83-87,92-102\\n68-88,88-91,91-93,93-113,120-136,139-155\\n-4-29,335-354,354-356\\n-2-13,13-18,18-30,332-358\\n49-67,171-193,287-318\\n59-78,166-194,292-317\\n285-308\\n54-75,167-186\\n53-75,158-161,165-187\\n185-211,278-293,293-295,295-299,299-316\\n180-189,201-212,276-314\\n-1-1,1-57,80-100\\n-25-25,25-50,50-62,62-78,78-82,82-95,95-125,125-156,156-204\\n0-10,10-22,33-62,62-84,84-90\\n-12-12\\n151-209\\n-14-14,21-39,39-43,43-48,48-65,65-81,81-100,100-124,124-145,160-200\\n-15-15,32-57,90-107,107-167\\n-13-13\\n-17-17,24-44\\n168-192\\n165-195\\n169-191\\n0-13,54-71,71-83,83-107,107-112,112-126\\n-20-20,20-21,23-26,26-28,101-110,113-126,126-133,133-145\\n127-146,146-162,169-191\\n116-140,169-191\\n0-6,6-27,148-163,163-168,168-192\\n-3-3,3-28,170-190\\n0-6,6-41,41-49,49-54,67-79,79-87,87-105,113-131,131-153,158-202\\n-13-13\\n169-191\\n132-157,169-191\\n125-179,179-181\\n79-89,89-98,98-114,114-134,134-161,161-180\\n-25-25,39-57\\n79-103,109-119,119-127,127-150,150-152,152-180\\n248-256,271-310,310-324,324-346\\n266-301,301-307,307-309,309-319,319-345\\n-2-18,18-41,41-45,45-46,48-52,52-54,75-101,341-344\\n-7-11,11-14,19-40,49-63,67-100\\n102-122,133-182,182-211,211-236,240-266\\n100-120,120-124,128-172,172-182,182-214,214-238,238-268\\n132-158,158-174,190-208,245-263\\n15-37,142-164,256-260,260-280,288-339,339-342,342-359\\n252-271,293-327,327-355\\n135-145,145-163,182-204,204-236\\n137-155,155-175,184-196,196-214,222-240,263-281\\n-24-24\\n-16-16,24-32,32-58,107-118,128-154\\n164-196\\n-17-17\\n-19-19,110-129,129-136,136-149,149-153,153-155,155-166,166-194\\n0-20,45-70,70-72,72-76,76-90\\n-15-15\\n-11-11\\n0-16,156-164,165-195\\n16-45,46-55,59-63,63-83,90-112,154-166,166-194\\n10-27,27-30,30-50,50-72,151-165,165-177\\n-19-17,17-33,37-50,50-64,74-95,95-115,115-125,125-149\\n-6-9,9-11,11-15,15-39,40-72,72-78,78-86,86-96,96-135,146-169\\n43-61,83-101,229-248,248-251,255-274,289-311,330-341,341-347,347-365\\n37-56,56-95,95-111,113-131\\n48-89,89-92,92-104\\n0-13,13-20,23-46,49-63,63-80\\n-15-15\\n1-10,10-27,48-67,114-119,119-122,122-142,142-181\\n14-33,131-194\\n0-41,42-52,127-137,169-179\\n29-49,208-233\\n22-49,205-213\\n199-219\\n198-218,222-239\\n170-190\\n136-156,165-195\\n-2-2,2-16,44-83,160-180\\n18-36,41-58,58-63,63-75\\n45-81,162-180\\n54-81,125-153,156-182\\n54-78,145-164,164-182\\n177-195,198-220,293-312\\n40-55,55-76,168-192,282-309\\n44-81,177-197,280-310\\n39-85,167-193\\n38-76\\n52-72,78-90,179-197,270-283,283-292,292-298,298-326\\n52-76,157-182\\n53-77,156-184\\n30-43,51-74,166-194\\n17-43,43-55,55-64,64-75,75-88\\n240-258,267-289,289-306\\n179-198,198-214,262-280,281-302\\n189-209,269-297\\n271-298\\n195-244,244-251,251-272\\n192-220,220-240,240-260,260-279\\n-12-12\\n0-18,22-46\\n13-48\\n43-76,76-85,85-95\\n42-59,59-78,161-179\\n53-72,75-89\\n52-72,128-146\\n10-40\\n9-31,31-47,52-70\\n29-40,40-48,48-59,293-318\\n162-184,283-313\\n39-66,66-69,69-86,296-323\\n48-86\\n46-61,61-66,66-93\\n-13-18,162-189\\n162-184,184-200,344-374\\n167-192\\n169-191\\n-18-18,18-35\\n-4-27,27-43,43-62,220-238\\n64-116\\n26-41,46-65,65-67,67-71,71-82\\n37-55,55-76,162-198\\n-11-11,122-136,136-139,139-155,155-161,161-180\\n0-22,27-35\\n347-370\\n-17-17\\n5-27\\n11-23,23-25,25-29,29-38,38-51,51-59,59-64,64-84\\n2-35,167-182\\n12-22,27-56,56-76\\n13-40,45-74\\n0-19,134-180\\n-28-28,35-57\\n-6-6,6-9,9-15,126-143,143-163\\n-13-13,13-19,19-33\\n0-4,4-21\\n0-29\\n0-26,31-53\\n50-70,70-97\\n208-222,222-251,255-268,268-270,270-278,278-290,290-308,308-321\\n-10-10\\n-22-22,163-197\\n-15-15,15-26,26-43,43-48,48-62,63-83,128-146,146-169,169-180\\n-11-11\\n-15-15\\n-1-1,1-18,23-43,43-46,46-57,83-101,101-107,107-124,136-157,157-171\\n139-166,166-171,171-176,176-184\\n165-195\\n-12-12,12-22,163-180\\n6-24,40-50,50-59,59-61,84-102,102-118\\n-11-11\\n-9-9\\n37-55,155-183,183-192,192-204,204-214\\n158-176,176-180\\n14-33,43-70,74-92,171-189\\n169-191\\n30-42,44-63,63-80\\n-11-11\\n-15-15\\n52-70,287-315,315-319,319-323\\n52-60,60-78,287-315\\n3-21,30-43,43-58\\n-13-13,13-17,17-19,19-27,32-59\\n26-45,46-59,59-69,69-89,89-102,145-157,157-160,164-176\\n16-48\\n-33-33\\n-1-1,1-4,4-25,25-46\\n-13-13,70-94,99-121,159-201\\n1-29,152-180\\n-12-12,170-190\\n8-11,11-13,13-24,24-28,33-43,184-201,349-368\\n47-62,62-84,89-108,157-177,177-183\\n36-70,70-77,77-91\\n41-67,67-81,81-96,96-107,156-178,178-182\\n37-65\\n24-46\\n53-75,75-95\\n32-50,50-69,72-90\\n5-21,24-32,32-56,56-69,69-74,74-92\\n32-56,59-80,174-196,289-305,305-309,309-330\\n34-56,56-76,129-147,172-190,289-322,324-351\\n63-91,91-99,99-120,145-157,157-168\\n65-95,97-117,153-172\\n8-26,26-53,53-84,283-325,345-363\\n8-30,30-52,52-82,177-200,277-293,293-327,327-340\\n0-4,4-15,15-20,20-35,35-38,38-60,160-180\\n28-47,47-61,163-197\\n40-55,55-67,67-88,169-191\\n56-79,160-174,174-180\\n59-81,119-146,169-191\\n-4-4,4-7,7-38,38-58\\n16-34,34-42,42-54,54-74,144-162,173-189,189-191,191-221,309-327\\n15-34,34-42,42-45,45-51,51-70,144-162,163-181,184-203,203-207,207-211,211-222,309-327\\n39-76,176-184\\n-4-4,4-20,131-154,154-156,158-202\\n140-155,158-202\\n1-9,12-14,14-35,35-57,69-112,112-126,126-128,155-168,168-175,175-178,178-182\\n-7-7,38-56,157-203\\n166-194\\n111-133,139-157,161-199\\n55-77,81-93,108-125,125-133,133-154,154-167\\n132-141,165-195\\n16-46\\n1-15,15-48\\n-30-30\\n-19-19,159-201\\n5-23,124-161,161-199\\n-19-19,22-26,26-42,139-160,160-166,166-194\\n127-147,157-203\\n24-47,79-97,97-107,109-127,222-233\\n0-58\\n-15-15\\n0-19\\n-15-15,31-40,51-69\\n142-158,162-198\\n-15-15\\n139-165,169-191\\n-16-16\\n58-76,76-84,84-89,89-91\\n-14-14\\n-1-1,1-16,16-42,51-59\\n-15-15\\n-19-19,21-42,73-81,81-87,87-93\\n0-22,23-55\\n54-62,69-72,72-78,103-114,127-152,152-160\\n69-88,88-117,117-131\\n69-83,83-90,90-117,117-129\\n79-92,92-95,95-97,97-99,99-102,102-127,257-279,286-297,297-315\\n99-122,226-241,241-245,245-253,253-278,278-291,291-296,296-314\\n64-82,82-92,92-99,99-102,102-119,123-134,134-146,146-154,274-287,287-290,290-317\\n72-98,98-101,101-132,137-155,157-175,277-301,301-322\\n80-104,125-143,263-286,293-313\\n78-96,105-129,239-259,261-279,279-288,288-326\\n-29-29\\n-18-18,18-22,22-53,53-78,78-90\\n-12-12,15-34\\n0-9,9-46\\n18-47\\n-1-1,1-18\\n0-23\\n-10-10,169-191\\n24-36,36-57,57-76,119-137,166-194\\n-11-11,170-190\\n-9-9,12-29,29-50,139-166,171-189\\n-11-11,164-196\\n-20-20\\n40-58,65-92,96-119,171-189\\n125-143,145-163\\n63-85,171-189\\n-13-13,13-28,142-162,162-167,168-192\\n-15-15,164-196\\n-16-16,16-33,133-153,153-164,164-173,173-187\\n-18-18,166-194\\n-17-17,149-161,164-196\\n154-206\\n-15-15,129-145,145-150,150-152,152-158,162-198\\n152-208\\n33-54,54-61,61-64,64-85,156-178,178-182\\n40-58,72-84,151-180\\n32-61\\n-7-7,7-9,11-31,31-58\\n19-65,65-82,154-180\\n25-84,154-174\\n-4-4,4-6,30-63\\n43-62,62-81,152-166,166-169,169-191\\n-21-21\\n-44-44,99-135,161-199\\n0-20,25-34,34-85,85-90\\n-18-18,18-56\\n-17-17,17-63,113-141,170-190\\n1-19,37-86\\n135-159,159-201\\n167-193\\n-3-3,3-24\\n-23-23\\n-10-10,30-47,47-69,162-198\\n-18-18,37-64,66-74,168-192\\n14-30,30-58,134-150,158-202\\n167-193\\n-2-2,2-16,42-84,114-141,141-156,163-197\\n171-189\\n144-161,161-174,174-186\\n169-191\\n141-158,162-180\\n141-161,161-163,169-191\\n145-180\\n169-191\\n113-136,146-164,164-196\\n-25-25,25-33,33-49\\n-9-9,27-45\\n-11-11\\n-14-14\\n-13-13\\n-23-23,24-29\\n-21-21\\n-15-15,23-43\\n32-46,123-136,146-163,163-197\\n-1-1,1-17,21-36,42-60,166-194\\n57-80,99-117,121-149,149-166,166-174,174-177,177-183\\n165-195\\n164-196\\n-12-12,12-39\\n-11-11,16-45\\n167-180\\n-10-10,10-35,38-52,165-195\\n160-179,179-181\\n-1-1,1-17,27-39,43-45,45-48,138-148,153-180\\n-30-30,32-35,35-54\\n-9-9,26-42,42-72,105-123,123-158\\n34-71,164-196\\n33-76\\n-4-4,4-68\\n-8-8,8-24,24-62\\n171-189\\n171-189\\n115-128,128-134,134-161,161-199\\n-11-11,37-72,161-180\\n160-180\\n41-67\\n148-158,160-164,169-191\\n148-167,170-190\\n35-55,55-71,119-137,161-199\\n51-103,131-187,305-342\\n46-101,113-140,140-159,159-193,262-288,290-326\\n38-57,57-74,74-77,77-81,81-116,138-164,168-197,330-342\\n50-72,85-110,126-144\\n265-279,290-314\\n289-312\\n300-333\\n297-330\\n249-267,288-310,310-325,334-352\\n263-286,286-310\\n163-198,222-247,265-304\\n164-199,214-248,274-303\\n178-191,191-216,216-218,218-228,275-300\\n177-198,198-216,216-237,280-308\\n165-193,209-214,214-246,252-293\\n163-191,196-198,198-209,211-247,262-282,282-289,289-300\\n41-66,294-328\\n40-67,293-327\\n-8-12,18-26,37-52,52-69,303-336\\n12-26,30-71,289-314,314-334\\n-5-21,39-68,78-96,299-317,317-332\\n-1-21,32-70,81-100,300-325,325-342,342-359\\n40-65,297-332\\n39-67,296-334\\n16-34,35-54,54-70,313-326,332-345\\n43-74,74-97\\n44-71,85-103,299-317\\n-8-13,31-74,299-334\\n38-74,301-334\\n-10-9,9-11,11-15,15-32,42-74\\n-5-16,41-67,311-335,339-352,352-355\\n39-53,53-56,56-85,155-168,174-187\\n48-70,70-72,72-87,137-155,166-190,305-322\\n305-323\\n178-209,265-296,296-298,298-316\\n158-170,178-202,268-292,292-309\\n3-18,18-20,31-64,274-296,299-314,314-333\\n32-67,75-90,273-294,294-302,306-330,346-358\\n17-37,37-58\\n35-56,314-332\\n22-32,32-56,314-332\\n48-84,153-189,273-288,288-292,292-294,294-312\\n49-83,92-98,98-117,150-191,282-294,294-312\\n48-65,65-69,69-90,149-168,172-189\\n286-311\\n284-311\\n285-308,341-344\\n145-162,164-211,265-312\\n144-163,163-205,213-219,271-310\\n166-199,200-211,268-288\\n41-66,296-332\\n40-66,295-331\\n32-48,48-72,306-325,339-343\\n29-69,303-333,341-359\\n50-86,163-199\\n47-82,156-188\\n153-185,279-297,297-306,306-315\\n32-64,303-323\\n32-59,299-326\\n53-86,137-165,165-172,172-182,182-198\\n53-86,145-156,156-165,165-170,170-187\\n159-177,177-203,220-245,264-303\\n132-150,160-202,215-242,266-287,287-291,291-311\\n163-186,219-245\\n160-187,219-230,230-247\\n27-72,297-326\\n35-64,298-324\\n28-41,41-61,305-323\\n30-46,46-63\\n-21-21,24-44,65-140\\n11-19,47-65,73-118\\n-24-24,51-73,81-96,96-102,102-120\\n-9-9,39-59,68-130\\n78-117,132-152\\n48-65,65-107,110-131\\n-1-1,1-33,40-57,57-80\\n1-32\\n-4-4,7-27,34-50,50-59,59-69\\n0-47,57-82\\n0-31,31-52,52-77\\n0-31,31-45,45-78\\n103-146,163-169,169-191\\n80-101,104-155,155-163,163-170,170-177,177-180\\n115-143\\n108-140,146-165,165-175,175-179,179-181\\n103-156,156-180\\n112-134,134-165,169-179,179-181\\n78-100,100-146,146-165,165-195\\n103-137,137-145,145-146,148-166\\n-25-25,25-39,54-74,74-77,77-104,104-132,136-154\\n29-42,46-56,56-67,74-128,140-158\\n0-18,28-46\\n-20-20,77-127,135-159\\n78-104,104-131\\n0-36,40-56,56-84\\n7-45\\n0-30,30-42,42-50,50-53,53-84\\n7-31,31-52\\n85-107,107-132,132-151,151-166,166-168,168-192\\n14-32,58-71,73-86,86-104,108-116,119-127,127-138\\n-15-15,19-40,45-62,62-75,83-122,122-140,170-190\\n-22-22,22-24,24-30,30-50,71-124\\n15-33,62-76,76-81,81-96\\n65-89,89-127,127-132,132-156,163-197\\n65-117\\n2-41\\n8-36\\n0-36,43-70\\n0-31,48-58,58-75\\n116-128,144-180\\n148-173\\n119-139,143-179,179-181\\n0-14,14-20,20-37,40-56,56-77,90-109,109-130\\n42-67,67-69,69-73,73-75,75-92,92-96,96-132,136-155\\n-24-24,83-157\\n-15-15,15-26,43-60,81-89,104-132\\n-45-45,163-179\\n170-190\\n169-191\\n-13-13,91-100,111-125,125-134,134-150\\n0-20,28-46\\n-10-23,101-145,325-350\\n95-146,317-347,347-367\\n68-82,82-133\\n80-92,98-122,122-125,125-134,137-155,170-188\\n274-291,293-312\\n276-292,292-312\\n295-314\\n280-291,293-314\\n1-39,39-59,59-77,286-302,302-334,334-361\\n3-35,49-57,57-79,285-304,304-329,329-363\\n-2-11,11-31,31-45,51-80,302-329,332-334,334-351,351-356,356-358\\n-10-5,5-8,8-35,55-76,306-325,325-339\\n14-34,34-50,321-350,350-360\\n0-4,4-15,15-26,26-35,35-37,37-46,46-59,314-338,342-360\\n-1-35,38-43,43-58,58-81,325-359\\n-4-40,40-68,325-356\\n-8-5,5-32,57-79,322-342\\n0-3,3-11,11-27,27-30,34-46,329-351,351-360\\n330-353\\n167-186,186-214,214-233,233-263,266-279,279-296\\n167-191,196-222,222-230,230-235,235-252,252-255,255-276,279-298\\n196-220,220-238,238-274\\n165-192,195-222,229-242,242-273\\n99-141,213-225,338-364\\n97-139,209-219,332-349,349-356,356-368\\n101-132,132-150\\n96-108,108-112,112-144,144-161\\n293-312\\n293-311\\n-1-1,1-5,5-33,33-39,39-41,41-62,324-345,345-350,350-359\\n1-36,42-51,51-69,315-333,333-344,344-361\\n1-42,42-46,46-58,320-340,340-359\\n-1-21,21-41,41-58,323-359\\n-1-9,95-138\\n92-131\\n153-171,174-205,231-251,251-274\\n173-191,204-223,223-232,232-235,235-240,240-249,249-273\\n317-337,337-344,344-357,357-373\\n317-344,344-364\\n-19-19,44-136\\n66-114\\n-32-32,59-120\\n-10-10,67-103\\n71-109\\n-4-4,75-105\\n0-26,26-47,54-79\\n-1-1,3-41,60-78\\n99-122,125-180\\n99-127,127-176,176-184\\n-3-3,3-14,14-30,30-53,53-89,89-91\\n-11-11,11-31,31-64,64-122\\n47-75,75-105\\n-17-17,33-57,57-79\\n101-125,125-132,132-137,137-162,162-198\\n-9-9\\n170-190\\n-10-10,27-61,170-190\\n57-93,93-113,249-266,266-303\\n0-15\\n-13-13,168-192\\n31-41,41-45,51-74\\n6-23,25-50,161-179\\n6-30,31-48,52-65,65-87,87-93\\n0-32,32-59,59-87,87-93\\n0-8,8-27,36-51,51-70,70-90,90-114\\n33-46,46-50,56-90\\n130-153\\n75-88,88-125\\n92-119\\n8-17,31-54,54-73,118-136\\n67-89,89-91\\n-23-23,23-92,92-123,127-147\\n-17-17,46-69,69-76,76-88,167-193\\n111-146,146-172,172-178,178-182\\n-4-4,15-26,26-31,31-35,35-57,57-73,74-94,94-110\\n128-154,170-190\\n-1-1,1-5,5-15,15-47,49-100,103-107,107-134,134-153,171-189\\n0-18,21-41,41-63,88-119\\n22-50,58-97,98-117\\n11-15,63-86,86-91,91-103,124-150\\n118-126,132-156,156-160,160-180\\n52-74,287-318\\n52-74,293-318\\n49-70\\n50-74\\n-20-20,74-111\\n-2-2,2-10,10-31,65-88,88-92\\n-3-3,3-25,25-28,28-51,78-111\\n50-63,64-116\\n16-31,31-62\\n24-45,68-112\\n52-71,71-109\\n-2-2,2-17,41-90\\n0-12,12-23,23-45,45-50,50-56,56-127\\n70-110\\n34-42,62-83,83-97\\n72-100\\n94-131,131-156\\n12-34,34-54,54-56,56-72\\n-15-15,15-35,90-123\\n43-74,169-191\\n3-19,19-24,24-28,28-62\\n6-24,49-72,289-311\\n32-44,50-74,283-295,338-349\\n167-193\\n171-189\\n-14-14,24-28,28-36,36-50,155-179,179-181\\n-14-14,165-195\\n-14-14\\n-16-16\\n60-71,179-200,279-314\\n175-203,277-312\\n60-82,171-201,263-271,282-298\\n48-71,280-305\\n39-57,60-82,260-278,284-309,309-325\\n60-82,164-193,197-213\\n53-93,130-142,167-190,194-221\\n60-82,142-160,170-197\\n58-76,141-151,151-155,160-164,166-189\\n64-86,132-152,169-197\\n64-88,134-153,158-198\\n172-197,197-207,278-298,298-308\\n45-63,282-315\\n48-65,65-78,288-321\\n145-176\\n6-36,36-43,43-67,67-77,77-82,82-101,101-119,119-129,129-139,139-159,164-196\\n-15-15,15-26,26-36,36-58,58-79,79-83,83-85,85-112\\n123-143,151-180\\n-1-1,1-14,14-19,19-39,43-53,64-77,77-79,79-81,81-89,89-100\\n-37-37,37-64,64-77,77-103\\n-29-29,43-48,48-57,57-64,66-101,101-128\\n2-9,54-90\\n-15-15,68-112\\n-22-22,60-80,80-82,82-100\\n0-23,23-27,27-32,32-37,37-52\\n105-132,132-164,164-196\\n107-141,141-172\\n0-2,2-21,21-50,50-55,55-72,72-108\\n-31-31,31-60,60-80,80-107,107-153\\n38-78,78-88,88-92\\n-13-13,17-52,57-65\\n107-127,132-169,169-191\\n-12-12,18-38,114-118,155-165\\n6-24,72-101,101-107,107-122,122-133,133-136,136-157,157-180\\n-12-12,22-25,25-52\\n26-48\\n4-31,103-155,155-161,161-180\\n0-22,33-57\\n-25-25,25-30,30-35,35-53\\n-13-13,72-91,93-123,123-135,142-166\\n17-36,36-46,46-64,85-118,118-151,151-175,175-180\\n0-13,17-45\\n128-161,163-197\\n113-144,144-173\\n-10-10,82-110\\n78-106,106-126,147-165,165-168,168-192\\n74-123\\n114-130,135-174\\n81-97,97-132\\n76-90,90-94,94-97,97-110,110-126\\n14-70,71-82,160-180\\n-7-7,12-37,37-73,163-197\\n29-46,46-50,50-76,297-323\\n6-28,32-51,51-73,76-84,300-324\\n52-65,65-84,140-148,154-173,173-194,237-255,281-293\\n45-61,61-64,64-74,74-81,81-94,134-152,152-176,176-191,290-300\\n283-301\\n28-38,38-66,297-319\\n16-38,41-68\\n55-81,81-85,85-88,91-96,96-109,113-127,127-132,132-155\\n14-30,33-48,48-59,59-72,305-333,333-341,341-352\\n53-83,131-145,150-168,170-188,277-295,297-315\\n52-82,140-156,156-173,295-313\\n1-20,20-26,26-29,29-42,42-72,72-85,307-336\\n2-18,18-49,63-90,306-339\\n-19-19,31-51,65-90\\n-30-30,30-38,38-52,52-62,66-84,84-93,93-95,95-114\\n24-40,43-66,66-84\\n-12-12,14-16,16-42\\n60-87,87-90\\n14-29,32-51,54-86,86-111\\n67-87,87-90\\n5-27,85-109,164-177\\n-12-12,12-50,50-54,54-61,61-67,67-74,74-106\\n0-18,89-106\\n0-20,48-56,69-111\\n0-32,32-50,50-130\\n-34-34,52-69,69-92,92-120\\n44-79,79-101\\n108-127,128-147,147-160,160-168,168-179\\n91-112,112-138,143-157,157-167,169-191\\n93-103,117-134,134-137,137-148,148-157,157-164,164-196\\n57-65,75-107,107-110,110-113,113-129\\n-2-2,2-30,30-51,51-77,166-194\\n78-102\\n47-66,66-114\\n75-105\\n30-75\\n88-106,120-145,148-159,165-189,189-208,278-296\\n66-84,156-168,179-204,278-296\\n59-77,124-133,168-193\\n60-73,73-89,168-194\\n63-67,72-77,86-116\\n40-53,53-74,163-197\\n31-48,48-59,59-76,76-78,78-95\\n86-106,106-124\\n-15-15,15-19,23-41,57-87,87-93\\n78-111\\n40-66,170-190\\n141-152,171-189\\n149-168,169-186,186-192,192-203,264-281,285-308\\n55-77,282-309\\n61-80,168-191\\n56-80,168-189\\n53-71,71-84,149-161,161-196\\n61-88,161-169,169-187,187-189,189-204\\n-5-23,211-229,236-254\\n286-317\\n285-312\\n50-81,168-187\\n58-82,84-89,167-188\\n41-66,168-192\\n58-79,168-187\\n59-81,93-111,111-123,129-147,173-200\\n64-116\\n72-111\\n74-106\\n87-112,112-131\\n100-137\\n56-85,173-203,277-308\\n54-79,173-205,211-229,275-304\\n56-83,166-192,199-207\\n58-81,166-189\\n68-80,80-98,169-191\\n57-69,69-86,168-196\\n60-82,112-122,163-199\\n53-73,73-90\\n18-36,65-78,78-86,86-118\\n56-124\\n-13-13,38-59,59-72,75-114\\n77-103\\n1-26,50-78\\n44-80\\n22-59,59-60\\n49-67,83-101,180-202,202-214,218-232,237-251,283-301\\n49-71,283-292\\n49-70,281-299\\n46-75,91-109,279-299,307-325\\n167-194\\n167-194\\n60-88,171-196\\n170-196\\n179-218,276-294\\n63-90\\n53-72,72-108\\n-4-4,12-27,27-35,35-38,38-65,171-189\\n36-63\\n22-54,54-56\\n21-35,35-72,158-177\\n36-73\\n61-77,77-90,90-106,106-119,168-197,294-312\\n65-105,105-123,163-195,295-306\\n171-189\\n40-52,73-99,141-159,162-180\\n163-197\\n236-262,280-305,310-312,312-314,314-325\\n237-262,281-307\\n281-303\\n277-301\\n-8-0,45-65,290-313\\n-9-9,9-21,45-65,292-312\\n45-64\\n-3-15,45-64\\n-2-2,2-27,52-70,100-118,118-119,124-134\\n31-72,73-79,155-169,169-191\\n35-45,45-66,66-81,81-99\\n6-24,70-96,96-111\\n14-30,30-43,43-46,46-49,52-90\\n0-13,13-27,27-33,33-47,65-84,84-95,95-104,104-114\\n12-43,54-73,73-89,89-91\\n63-117\\n-10-10,67-102\\n167-192\\n168-193\\n173-197\\n173-197\\n39-70\\n282-300\\n280-300\\n238-255,281-304\\n238-258,284-306\\n280-302\\n282-303\\n33-43,44-65\\n-3-3,3-20\\n-24-24,125-153,153-164,170-190\\n-21-21\\n124-139,139-141,141-143,143-147,147-155,155-158,158-180\\n-16-16\\n47-82,167-202,280-309\\n51-79,166-203,277-311\\n59-69,278-305\\n54-81,173-206,206-224,276-314\\n49-70,87-105\\n46-67,71-89,286-315,324-342\\n51-69,289-310\\n52-85,163-194\\n55-84,164-186\\n55-77,153-166,166-178,178-186,186-188,188-202,280-313\\n50-88,151-169,169-191\\n51-59,59-67,67-81,81-94,161-199\\n-12-12\\n-13-13\\n-12-12\\n-13-13\\n161-199\\n149-180\\n161-199\\n152-180\\n-15-15\\n-12-12\\n169-191\\n159-201\\n-12-12\\n-16-16\\n160-200\\n156-180\\n-14-14\\n168-192\\n-16-16,159-201\\n-18-18,165-195\\n161-199\\n166-194\\n-36-36,66-98,106-129,129-134,134-159,159-201\\n0-37,37-43,43-47,47-55,55-77,77-118,118-135,135-161\\n95-124,124-152,152-170,170-180\\n105-121,121-150,150-170,170-177,177-179,179-181\\n0-40,54-80,80-90,90-92,92-96,96-133,133-154,154-156,156-166,166-169,169-191\\n42-75,167-193\\n168-192\\n16-44,44-46,48-68,292-321\\n18-29,45-70,293-319\\n44-68,294-323\\n18-36,43-71,293-313,319-332\\n158-202\\n36-54,57-65,287-305\\n-10-10,171-189\\n-18-18,23-28,28-41,48-67\\n169-191\\n-17-17,21-24,24-26,51-79\\n53-97,97-128,139-159,159-174,282-313\\n55-100,135-148,148-172,289-316\\n45-64,64-79,79-88,88-92,92-107,113-134,157-181\\n56-88,88-94,94-111,114-122,122-143\\n53-64,64-71,71-93,93-118,132-152\\n71-109,112-114,135-153\\n247-265,282-316\\n259-262,279-303,303-322,323-343\\n49-70,80-99\\n48-71,81-92\\n51-71\\n45-69\\n167-190,267-309\\n166-198,275-311\\n165-197,197-199,199-201,233-260,272-305\\n169-197,198-222,226-240,240-264,281-308\\n170-190,250-276\\n56-72,72-87,109-120,120-128,128-131,131-133,133-137,137-144,144-166,289-311\\n53-91,129-137,141-165,289-310\\n53-73\\n53-72\\n272-299\\n31-44,58-62,62-64,64-74,74-87,87-96,96-100,100-114,128-150,299-317\\n41-58,60-97,114-134\\n142-160,178-195,195-198,198-200,200-202,212-230,250-277,277-279,279-296,307-317\\n182-205,207-217,240-256,256-264,264-298\\n-24-24,151-209\\n-11-11,12-34,162-198\\n-36-36,46-70,70-106,106-130,130-139,139-149,149-211\\n-1-1,1-10,10-14,14-16,16-39,39-48,48-52,52-64,68-90,96-104,133-153\\n0-29,29-49,49-65,67-100,100-109,109-118,118-128,128-148,158-179,179-181\\n-12-12\\n-15-13\\n-11-11\\n-11-11\\n344-381\\n-13-13\\n37-55,302-319\\n62-77,81-91,91-101,114-134,140-151,214-229,233-248,248-267,267-285\\n-4-4,4-12,12-16,16-22,22-45,45-65,295-315,315-338,338-344,344-348,348-356\\n69-87,87-106,254-273,273-291\\n62-73,73-86,86-110\\n25-37,37-64,64-90,90-107\\n24-52,52-77,77-99,134-137\\n-12-11,166-187\\n-11-11\\n-14-16,16-33,161-174,174-192,318-340\\n-9-9\\n162-195\\n37-52,52-55,55-78,163-188,291-318\\n170-190\\n126-141,141-147,147-176,176-180,180-211,211-235\\n-15-15\\n-13-13\\n-13-13,13-26\\n-39-39,56-72,76-109,114-124,133-143,143-153,153-156,156-158,158-165,165-170,170-180\\n-1-1,1-29,35-53,156-172,172-188\\n79-106,106-125,125-137\\n172-196,342-370\\n4-24,24-45,45-60,295-310,310-313,313-315,317-341,341-364\\n3-8,8-12,12-24,343-363\\n160-179,179-181\\n0-22,23-38,148-158,171-189\\n-13-13\\n-21-21,169-191\\n-16-16,24-29,29-49\\n-10-10,165-195\\n-15-15,162-198\\n169-191\\n0-20,168-192\\n-4-4,169-191\\n-14-14,168-192\\n0-14,14-36,63-80,80-82,82-94,94-100,100-102,102-120,120-147\\n-8-4,123-134,134-163,324-336,336-339,343-352\\n-2-15,99-121,123-136,136-156,256-274,344-358\\n-23-23,23-45,45-66,66-90\\n-35-35,35-54,54-65,65-96,96-140\\n60-120\\n-3-3,3-24,24-61,63-81\\n99-125,125-155,155-180\\n15-35,76-111,111-134,134-137,137-161\\n-20-20,91-143\\n0-7,7-20,20-27,27-39,90-111,111-114,114-136,136-150\\n-2-2,2-24,24-43\\n117-138,138-167\\n100-114,114-151,167-193\\n110-126,126-146,146-156,159-169\\n57-75,79-101,112-116,116-122,122-126,126-135,135-140\\n-19-19,28-46,69-87,87-110\\n80-98,108-123,123-126,126-128\\n69-107,114-133,133-145\\n101-115,115-135,142-168\\n42-73,166-194\\n39-51,51-59,59-62,62-76,164-196\\n24-43,43-47,47-69,160-173,173-180\\n167-193\\n150-173\\n42-69,163-197\\n50-89,155-187,279-301,301-304,304-321\\n45-85,158-187,282-305,305-322\\n53-71,173-200,319-342\\n42-68,291-323,326-341\\n39-69,291-320\\n45-68,297-315,315-317\\n46-66,284-295,295-320\\n165-194,290-309\\n161-182,182-211,266-279,279-306\\n28-45,45-65,65-80,160-178,293-302\\n45-79,165-187,287-310\\n41-69,298-317\\n47-68,291-315\\n-13-13,156-180\\n-11-11,90-114\\n-24-24,24-47,47-68,161-199\\n-4-4,4-10,10-24\\n167-193\\n157-203\\n168-192\\n150-180\\n-13-13,29-54\\n-23-23,160-179,179-181\\n170-190\\n166-194\\n-38-38,58-87,87-89,89-99,99-101,101-111,111-119,119-125,125-128,128-157\\n0-6,6-35,39-46,46-48,48-59,59-109,111-124\\n-1-1,1-45,45-49,49-55,55-58,58-82,88-109\\n112-142,142-174,174-186\\n112-133,133-168,174-186\\n107-169,169-180\\n92-99,110-157,157-164,164-177,177-180\\n-18-18,18-20,20-37,50-54,54-58,83-120,120-139,139-147,147-150,150-164\\n-28-28,46-58,85-122\\n-24-24,65-95,95-102,104-118\\n96-118,135-167\\n134-164\\n0-33,104-116\\n-13-13\\n-13-13\\n-13-13,104-128\\n170-190\\n168-192\\n170-190\\n153-207\\n-12-12,170-190\\n-13-13,163-180\\n191-231,231-256,256-261,261-273\\n183-196,196-222,222-243,243-268\\n-10-27,106-129,129-146,181-207,207-261\\n-13-20,92-112,119-145,154-174,184-204,204-206,209-257\\n-1-24,192-213,213-236,236-238,238-252,344-359\\n-14-11,202-212,212-219,219-222,222-232,233-251,333-346\\n22-39,42-65,71-89\\n20-44,47-67\\n23-42,46-65\\n80-97,97-111,111-113,113-117,117-153,170-178,178-181,181-191\\n62-76,76-82,91-120,120-127,127-129,129-161,169-189\\n90-126,126-157\\n97-125,131-145,145-148,148-163\\n65-82,82-114,114-154,154-187\\n78-103,103-112,112-117,117-167\\n84-107,107-113,113-127,127-157\\n75-98,98-122,122-124,124-158,160-178\\n39-81,168-218,277-314\\n40-81,164-209,213-233,278-314\\n33-41,43-52,52-63,63-85,167-174,174-187,187-195,195-212,212-215,215-227,227-230,230-250,272-299,299-318\\n34-54,54-61,61-68,68-81,169-188,188-194,194-211,267-285,285-297,297-318\\n32-52,52-57,57-71,171-194,194-215,247-261,261-273,273-311\\n29-51,188-198,198-208,218-236,238-271,277-315\\n216-238,265-276,276-284,284-295\\n7-27,27-32,41-70,81-102\\n11-22,22-30,44-71\\n48-73\\n48-76,80-98\\n40-72\\n49-73\\n41-64,293-316\\n40-63,293-315\\n289-317\\n-11-7,7-23,25-43,51-69,294-317,325-339\\n38-60,270-289,295-322\\n266-278,296-324,324-339\\n53-88,117-146,146-151,162-189\\n55-88,165-188\\n61-96,113-129,139-189,199-216\\n58-88,115-126,126-138,138-156,163-189\\n55-79,103-138,162-193\\n34-48,52-81,96-116,166-194\\n85-96,101-123\\n65-84,89-100,108-131,133-153,153-155,155-170,170-179,179-192\\n31-49,60-85,151-166,170-216\\n52-78,78-91,169-203,281-311\\n46-78,178-200,281-309,328-352\\n39-58\\n38-57\\n42-61,297-322\\n43-63,296-323\\n40-49,63-86,86-90,90-104,139-154,156-182,183-208\\n63-90,90-108,119-148,155-168,168-182,182-203\\n28-48,61-92,160-168\\n49-76,168-200,263-274,283-316\\n51-70,167-194,282-310\\n291-319\\n36-68,287-319\\n293-329\\n41-59,293-324,341-364\\n54-72,72-88,154-200\\n38-56,60-83,159-193,193-211\\n66-96,141-149,161-183\\n54-72,171-189,274-287,287-314\\n-1-1,1-27,29-47,47-92,92-112,125-143,170-190\\n14-32,45-63,63-83,91-111,163-197\\n32-57\\n149-179,179-181\\n148-171,179-181\\n143-179,179-181\\n142-177\\n53-65,65-83,167-193\\n34-48,48-57,57-70,70-88,96-114,156-204\\n44-69,69-84,84-89,89-101,101-125,143-168,168-172,172-176,176-184\\n150-177,177-180\\n146-171\\n-16-16\\n-18-18\\n58-122\\n-16-16,16-21,21-23,23-49,69-111\\n-5-5,5-9,9-12,12-29,29-31,31-48,48-58,58-71,71-78,78-98\\n69-111\\n-14-14,14-41\\n-1-1,1-47\\n153-207\\n102-125,143-180\\n-24-24,24-35,35-52,52-79,79-86,86-94\\n-57-57,57-135\\n47-133\\n-17-17,17-53\\n103-127,130-154,157-203\\n-14-14,89-135\\n-12-12\\n-24-24,30-42,42-51,71-149,149-211\\n165-195\\n-3-3,3-6,6-26,26-38,38-52,52-81,85-105,112-131,141-158,158-172\\n-12-12\\n-14-14\\n0-30\\n-23-23\\n0-11,11-33\\n0-32\\n-1-1,1-27\\n149-172,172-176,176-184\\n126-145,145-168,168-180\\n98-116,124-161,169-191\\n-19-19,36-52,52-67,85-124\\n12-18,18-32,66-102,102-114,114-135,135-137,137-151,151-155,155-164,164-180\\n-20-20\\n-12-12,12-42,55-66\\n-24-24\\n0-32,66-90\\n145-168,168-179,179-181\\n0-3,3-19,83-101,106-124,124-136,162-179\\n-16-16,18-47,95-125,125-133,133-145\\n-10-10\\n-15-15\\n-13-13,13-29\\n152-208\\n159-201\\n85-109,109-129,129-144\\n-10-10\\n-11-11\\n-21-21\\n133-147,161-180\\n5-14,66-84,84-98,98-123,123-143,143-153,153-177,177-183\\n-11-11,11-15,15-40\\n110-134,151-180\\n153-180\\n-13-13\\n167-193\\n-3-3,3-59\\n2-23,23-29,29-62\\n0-11,11-38\\n0-7,7-16,16-42,42-44,44-50,50-65\\n170-190\\n170-190\\n7-61\\n0-15,21-67\\n-4-4,4-12,12-23,23-47,47-66\\n63-118,118-164,171-187\\n64-99,99-110,110-113,113-145,145-179\\n69-87,102-120,136-165,165-184\\n86-104,128-160,162-190\\n86-118,126-144\\n256-268,268-271,275-280,283-318,318-321,321-336\\n290-324\\n43-75,290-318\\n38-76,291-317,317-345\\n3-22,22-24,24-37,37-73,297-320\\n7-26,26-28,28-49,49-76,81-102,302-320,320-339,339-355\\n48-70\\n22-37,37-40,46-70,335-351,351-376\\n123-141,151-175,175-177,177-201,209-219,219-243,273-304\\n135-152,152-154,156-173,173-212,229-239,261-279,279-283,283-286,286-302\\n127-149,153-194,250-270\\n121-144,147-158,159-182,182-191,191-206,267-285\\n60-107,107-109,109-125,125-183,280-309\\n58-78,78-86,86-89,89-105,105-129,131-185,279-313\\n5-36,36-76,94-116,290-322,322-341,341-360\\n4-34,34-78,288-328,330-358\\n31-72\\n39-74,101-109\\n149-169,169-192,192-210,216-226,246-265,265-269,269-292\\n140-169,172-191,191-208,245-260,260-290\\n60-88,88-124,124-127,127-137,137-143,143-169\\n58-92,92-94,94-120,126-149,149-153,153-168\\n140-153,153-173,173-209,250-277,279-288\\n161-207,261-281\\n34-62,290-322,322-325,325-326\\n39-63,82-101,312-322\\n33-63,71-80,301-316,316-338\\n30-62,66-83,83-85,85-97,300-345\\n32-61,309-330\\n166-207,238-256,273-291,291-292\\n166-189,189-192,197-207,243-260,262-273,273-302\\n59-77,77-86,86-96,146-171\\n60-77,77-89,126-143,143-177\\n33-65,300-334\\n3-20,20-25,34-64,303-324,324-342\\n160-197,266-280,280-283,283-285,285-289,289-303\\n160-191,191-204,270-279\\n171-189\\n-10-10,145-163\\n343-374\\n-4-4,7-11,11-14,14-16,16-31,31-33,33-51,51-92,106-124,124-131,131-132,144-162\\n39-57,301-320\\n-13-13,160-200\\n-12-12\\n2-19,19-24,24-35,35-39,39-43,44-55,55-65,65-83,88-104,104-114,114-116,116-142\\n10-26,26-59,61-72,72-81,81-89,89-91\\n-1-1,1-19,19-41,52-72,72-108\\n120-145,145-165\\n33-48,48-67,76-104\\n0-4,4-6,6-37\\n168-192\\n99-132,140-165,165-172,172-177,177-183\\n-11-11,16-33\\n-17-17,17-33\\n-34-34\\n-4-4,4-18,18-35\\n11-31,31-34,34-48,326-344\\n65-76,81-101,104-120\\n-10-10\\n38-75,75-92,137-148,169-191\\n80-109,123-147\\n177-209,285-310\\n61-80,165-193,285-303\\n58-76,160-175,178-186,286-308\\n277-290,290-307\\n44-62,169-204,204-212,212-214,293-311\\n170-190\\n151-176,176-184\\n0-12,12-25,162-198\\n57-83,173-197\\n54-80,143-162,170-197\\n54-62,64-89,89-104,104-125,162-180\\n53-79,79-81,81-90\\n24-38,47-109\\n60-90\\n132-169\\n52-79,79-82,82-84,84-90,91-102,102-127\\n59-77,77-102,102-105,105-122,125-140,148-166\\n14-37\\n61-79,79-87,92-117\\n-1-1,1-4,4-10,10-14,14-20,20-46\\n86-98,98-103,103-128,128-139,141-159\\n282-312\\n278-306\\n39-60,158-182\\n40-61,163-182\\n36-58,181-190,274-304\\n40-48,175-201,271-290,290-307\\n30-59,174-196,271-309\\n32-52,146-169,171-195,277-304\\n31-49,279-301,307-318\\n22-46\\n-17-17,17-30,30-40,40-60,60-62,62-67,67-76,76-104\\n0-13,13-30,30-32,32-35,35-70,70-97,152-175,175-179,179-181\\n62-90\\n-7-7,7-13,13-20,20-24,24-40\\n129-160,166-172,174-179,179-181\\n7-34,34-37,37-60,60-71,71-77,77-79,79-92,92-95,160-178\\n56-59,75-108,108-117,117-137,137-145,145-161,164-180\\n-55-55\\n39-60,60-62,62-69,69-103,103-135\\n36-64,71-125,125-131,131-134,134-137,137-147,147-150,150-155,155-165\\n34-58,76-94,344-368\\n77-81,84-121,121-129,134-159,159-176\\n85-89,92-117,117-148,148-166\\n7-25,25-37,37-44,44-73,73-87,87-93\\n-7-7,7-10,10-14,14-27,27-46,46-67,67-70,70-74,74-85,85-94,94-105,121-141,141-154\\n43-63,63-74,74-90\\n0-18,18-21,21-47,47-49,49-131\\n-1-1,1-6,6-10,10-15,15-23,23-51,51-61,61-69,69-81,81-111\\n36-60,67-113\\n47-87\\n3-12,20-53,57-84\\n92-127,148-168,168-192\\n97-124,125-169,169-171,171-189\\n42-58,58-61,61-79,83-105,110-128\\n-3-3,3-26,26-62\\n-29-29,29-55\\n26-41,41-73,298-324\\n34-44,46-74,302-320\\n9-20,27-29,31-46,46-65,78-105,316-334,335-348,354-367\\n164-187\\n-1-1,1-4,4-8,8-29,29-40,40-53\\n-18-18,67-105\\n-22-22,26-47,86-95\\n36-48,48-71,277-314\\n50-76,166-200,267-283,283-316\\n46-69,69-84,216-225\\n49-73,158-185,185-199\\n-13-13\\n-18-18\\n0-14\\n-15-15\\n-12-12,169-191\\n-14-14\\n0-14\\n39-56,56-78,288-301,307-320\\n51-96,96-116,116-133\\n48-66,66-95,278-304\\n63-97,97-101,101-114,285-307\\n-17-17\\n-15-15\\n54-73,173-203,282-305\\n52-75,175-195,281-310\\n176-196,283-309\\n-17-17\\n335-383\\n0-18,18-39,44-80\\n104-128,143-180\\n0-27\\n-11-11,11-33\\n53-74,74-106\\n-25-25,146-214\\n-14-14\\n-14-14\\n159-201\\n132-141,159-179,179-181\\n-15-15\\n171-189\\n-29-29,114-132,155-180\\n345-373\\n345-381\\n68-102\\n55-68,68-73,73-108\\n-11-12\\n43-73,152-178\\n41-65,65-79,154-177\\n19-38,38-58,130-148,155-163,165-173,173-187\\n170-190\\n-1-1,1-6,6-10,10-51,55-63,63-71,71-81,114-140,140-148,148-156,156-160,160-174,174-179,179-181\\n33-48,48-51,51-59,59-77,315-341\\n48-71,305-322,322-329,329-348\\n-18-18,164-196\\n-29-29,50-59\\n-11-11,165-195\\n-17-17\\n-11-11,170-190\\n-11-11\\n-14-14,31-55,142-146,155-205\\n-14-14,168-192\\n-14-14\\n-15-15,167-193\\n0-15,167-193\\n-17-17\\n-12-12,168-192\\n2-18,18-24,24-32,32-37,37-44,57-69,71-88,100-118,120-138,145-159,159-162,162-169,169-179,179-181\\n-10-10,10-26,162-198\\n-13-13,13-30,93-101,112-126,126-145\\n137-159,159-161,161-179,179-181\\n54-78,177-204,279-303,303-318\\n50-80,174-198,287-317\\n43-64,294-317\\n42-66,284-322,324-336\\n35-43,50-69,69-89,149-168,168-188\\n52-66,66-73,73-89,153-173,177-194\\n42-60,294-318\\n38-46,48-57,295-321\\n-1-1,1-6,6-15,15-34,34-58,58-82,82-84,84-103,103-142,142-162,162-166,166-169,169-173,173-178,178-182\\n-15-15,22-45,45-65,75-93,93-133\\n20-51,51-55,55-61,61-64,64-90,90-94,94-117,117-122,124-154,154-161,161-180\\n56-84,98-108,121-128,165-176,176-184\\n51-77,88-92,94-112,124-141,146-156,156-164,164-196\\n48-75,77-96,96-105,105-115,115-125\\n1-14,19-33,51-75\\n109-127,151-168,168-178,178-182\\n27-50,50-65,163-197\\n52-128\\n87-123,129-149,158-176,176-179,179-181\\n171-189\\n171-189\\n77-104\\n14-36,36-39,39-67\\n65-73,84-101,101-132\\n14-35,35-38,38-42,47-69\\n32-41,43-55,55-63,66-83,83-85,85-95\\n-10-10,10-29,44-54,64-80,80-85,85-106,106-123\\n93-119,132-158,158-177\\n51-71,272-291,295-316\\n50-71,273-291,294-315\\n53-71,294-318\\n53-61,293-317\\n281-299,302-321\\n281-300,303-320\\n50-68,295-317,324-342\\n-12-12\\n-10-10\\n-15-15\\n-17-17,155-205\\n-16-16\\n152-159,159-179,179-181\\n167-193\\n-21-21,45-57,57-72,149-211\\n-15-15\\n115-138,168-192\\n-15-15,152-208\\n-10-10\\n-13-13\\n164-180\\n-1-1,1-18,158-178,178-180\\n-14-14\\n149-170,170-176,176-179,179-181\\n-17-17,32-57\\n-15-15,48-65,65-83,165-195\\n-17-17\\n-14-14,14-38\\n-18-18\\n-8-8,8-13,13-17,22-41,58-66,142-164,164-179,179-181\\n0-14,14-38\\n-12-12,43-69,138-157,157-180\\n-17-17,18-23,23-24,110-127,127-147,171-189\\n143-153,153-161,165-195\\n-17-17,17-35,127-145\\n-5-5,5-31,43-64,64-68,68-71,71-73,73-84,84-96\\n-11-11\\n170-190\\n-19-19,161-169\\n-17-17,42-53,79-88,88-127\\n107-132,136-160,160-165,165-177\\n83-103,103-123\\n-1-1,1-38,83-114,114-128\\n0-25,25-31,31-56,56-85,85-123,123-131,131-145,145-151,151-166,169-191\\n-22-22,33-42,42-54,64-81,81-97,97-108,108-123\\n-11-11,18-34,34-36,36-42,42-66,69-82,82-89,89-112,118-156,171-189\\n2-10,49-59,67-68,72-93,93-99,99-102,102-109,109-123\\n4-22,44-70\\n169-191\\n40-73,294-315\\n48-67,293-314\\n-35-35,40-74\\n0-17,17-20,20-42,165-195\\n-3-3,3-16,16-39,39-53,53-62,62-90\\n-12-12,30-47,47-66\\n-14-14,14-59,67-89\\n-12-12,163-197\\n-18-18,18-24,24-29,29-49\\n-14-14\\n-24-24,32-34,34-36,36-49\\n-2-2,2-7,7-18,18-37,37-57,57-64,64-79,86-94\\n-12-12,14-39,39-55\\n141-161,171-189\\n57-123\\n59-89,89-91\\n-22-22,146-155,169-191\\n55-86,86-107\\n6-42,44-74\\n59-62,70-90\\n60-90,90-91,96-106,108-126\\n59-76,76-78,78-91,91-110\\n59-90\\n53-90,90-125\\n-9-9,28-66,70-78,78-97\\n63-91,91-95,97-107,110-137,137-151,159-201\\n36-42,42-54,56-82,82-100,100-115,115-137\\n59-71,72-93,97-110,116-129,146-164\\n47-81,81-84,84-117,117-120,120-136,136-156,158-179,179-181\\n59-94,94-112,112-114,114-131\\n1-4,4-8,8-17,17-21,21-35,48-93,93-119\\n100-112,112-137,137-158,158-160,160-163,163-166,166-180\\n32-45,49-110,110-116,116-141,141-143,143-148,148-178,178-182\\n25-40,40-55,62-119,127-140\\n181-193,198-217,253-265,265-271,271-295,295-313\\n181-202,272-290,290-313\\n57-82,170-194,194-213\\n52-74,139-164,170-201\\n173-183,183-204,290-314\\n174-186,186-192,192-205,283-309\\n-21-21\\n-32-32,46-64,102-130,169-191\\n-20-20,20-53,53-74,74-87,87-93\\n-2-2,2-28,34-37,37-54,54-67\\n5-28,31-46,46-65,119-138\\n35-54,54-71\\n-12-12,168-192\\n168-192\\n0-18,168-192\\n-20-20\\n-13-13\\n-13-13,15-42,42-62,79-101\\n156-204\\n-13-13\\n-12-12,169-191\\n-12-12\\n-10-10\\n-17-17,19-33,136-155,155-165,165-173,173-187\\n-19-19,22-28,28-49,58-81,107-132,132-150\\n-14-14\\n170-190\\n0-23\\n0-19\\n119-128,131-140,165-195\\n169-191\\n170-190\\n141-170,170-180\\n124-150,150-169,169-180\\n0-18\\n171-189\\n171-189\\n171-189\\n170-190\\n-16-16,16-19,19-41,42-52,54-63,63-74,144-154\\n-24-24\\n168-192\\n170-190\\n58-76,81-92,92-101,126-145,151-179,179-181\\n-10-10,39-58,118-141,145-156,161-179,179-181\\n80-108,168-192\\n-9-9,9-41\\n154-164,164-166,168-192\\n110-128,153-177\\n67-79,94-104,106-109,109-112,112-126,126-133,133-150,283-301\\n55-73,83-97,104-147,147-159\\n281-312\\n31-42,43-71,75-84\\n27-58,303-321,321-341\\n20-33,37-61,307-334,334-337,337-348\\n48-74,112-139,142-170,170-185,202-220\\n44-65,302-331,335-362\\n38-63,299-334\\n44-62,293-314,331-349\\n59-81,81-103,103-120,133-141,141-165\\n-9-9\\n170-190\\n0-17\\n-14-14\\n0-18,21-44,47-56,56-65,65-76\\n7-66,66-68,68-85,152-208\\n-11-11,169-191\\n67-85,182-206,274-285,285-310\\n176-205,281-311\\n2-24,24-53,53-60,60-75,115-130,130-153,153-161,161-172\\n171-189\\n0-26,26-38,38-58,58-79,79-108,117-128,146-161,164-179\\n171-189\\n152-164,167-193\\n-18-18\\n-14-14,14-34\\n-17-17,167-193\\n133-163,169-191\\n-13-13,167-193\\n170-190\\n170-190\\n-18-18,33-51,53-82,82-91,91-94,94-123,126-139,139-150,150-159,159-201\\n35-54,54-74,115-129,129-133,133-148\\n-3-3,3-16,45-63,63-64,73-95,95-103,109-116,137-152,156-168,168-192\\n56-84,84-102,110-125\\n59-77,286-317\\n170-190\\n171-189\\n-10-10\\n-17-17,150-169,169-191\\n160-177,177-185,185-201\\n-11-11,169-191\\n-1-1,1-25\\n9-27,77-96,96-104,104-115,133-151\\n-1-1,1-5,5-8,8-11,11-15,15-19,59-76,76-80,80-83,83-89,89-92,92-100,100-113,113-127,127-141\\n95-116,154-176,189-214\\n91-109,150-181,192-210\\n6-26\\n-2-2,2-18,157-177,177-183\\n-1-1,1-6,6-10,10-34,150-167,167-169,169-175,175-177,177-180\\n160-200\\n-11-10\\n8-26,26-29,29-38,38-64,64-75\\n0-16,48-78\\n170-190\\n-15-15,93-138,165-195\\n-15-15,158-202\\n169-191\\n-15-15,162-198\\n128-164,168-192\\n0-30,142-156,163-197\\n-9-9,153-163,165-195\\n168-192\\n0-28,159-201\\n153-166,166-194\\n-16-16,158-176,176-184\\n-14-14,158-202\\n-19-19,162-180\\n170-190\\n59-69,78-102,109-131,151-176\\n-1-1,1-3,3-14,14-24\\n154-180\\n-10-10,130-171,171-189\\n14-33,136-170,174-186\\n71-90,90-113\\n-9-9,9-30,134-156,161-180\\n-14-14\\n-20-20,79-101\\n-13-13\\n-15-15,15-37\\n126-145,150-165,165-175,175-180\\n-19-19,31-49,80-89,89-99,137-157,170-190\\n-27-27,33-53,53-66,66-83,83-90,90-99\\n114-126,126-140,145-168,168-192\\n53-88,88-94,102-108,108-110,110-128\\n158-180\\n166-194\\n-11-11,82-98,104-131\\n160-200\\n27-46,46-52,52-54,54-71,117-138,138-157\\n-14-14,170-190\\n0-19,19-28,28-54,148-174\\n0-25,25-29,29-35,35-52,62-79,79-101\\n-22-22,45-66\\n4-26,26-34,36-45,45-55,60-68,75-105\\n-1-1,1-20,45-64,64-67,67-86\\n-8-8,8-13,13-33,154-175,176-184\\n0-18,169-191\\n-23-23,158-202\\n-14-14,87-105,168-192\\n-12-12,12-29,159-179,179-181\\n-3-3,3-18,159-177,177-180\\n-14-14,166-194\\n-11-11,170-190\\n-13-13,169-191\\n-12-12\\n168-192\\n-12-12,166-194\\n169-191\\n170-190\\n-34-34,40-59,96-113,113-132,135-156,156-180\\n98-130,130-145,145-163,163-165,165-195\\n0-19,44-60,60-65,65-82,88-107\\n170-190\\n-17-17,168-192\\n-23-23\\n169-191\\n137-146,146-157,157-167,167-180\\n-17-17,166-194\\n122-156,166-194\\n-16-16,16-30,169-191\\n-15-15\\n-11-11,160-178,178-182\\n46-64,68-113\\n53-56,85-101,101-114,139-161,167-193\\n-9-9,80-122,122-147\\n101-113,113-116,120-132,139-160,160-168,168-172,172-180\\n-13-13\\n-21-21\\n-12-12\\n-23-23\\n-6-6,6-14,14-26,28-51,168-192\\n161-199\\n-15-15\\n-6-6,6-37,44-63\\n170-190\\n168-192\\n-11-11\\n170-190\\n-11-11,22-40\\n-4-4,4-16,16-39,39-45,119-142,151-162,162-166,166-169,169-191\\n-24-24,168-192\\n-11-11,11-34,34-44,55-78,83-97,101-118\\n-1-1,1-21,23-33\\n-19-19\\n-29-29,169-191\\n-17-17,24-30,30-62\\n-21-21\\n0-3,3-24,24-35,133-155\\n-19-19\\n151-167,167-193\\n166-194\\n-11-11,22-40,163-197\\n-22-22,169-191\\n-12-12,169-191\\n-9-9,162-198\\n-13-13,155-205\\n0-29,71-92,92-109,109-112,112-116,116-123,123-136,136-143,143-154\\n0-80,80-100\\n0-43,43-63,63-74,74-127,127-156\\n13-45,54-90\\n0-37,48-71\\n102-137,137-180\\n121-149,149-157,157-173\\n-5-5,5-15,48-57,84-103,103-108,108-111,111-126,126-133,133-136,136-147,147-152,152-165\\n-22-22,81-99,99-127,127-129,129-134,134-157\\n0-33\\n-1-1,2-30,30-46,56-66\\n113-132,132-169\\n115-155,158-179\\n-21-21,101-120,120-132\\n115-128,133-153,153-179,179-181\\n0-6,6-28\\n0-2,2-23,41-59\\n40-75,159-201\\n162-198\\n41-69\\n43-80,160-179\\n3-27,39-67,289-315,315-331,343-363\\n-9-12,12-32,36-68,293-321\\n47-65,289-314\\n27-46,47-57,291-311\\n163-179,179-187,187-193,193-206,256-270,270-277,277-280,280-305,313-333\\n170-181,181-201,277-304\\n49-83,162-190,280-300,300-314\\n47-84,158-190,282-317\\n294-317\\n-6-5,5-13,13-22,25-35,37-40,40-70,75-85,298-316,327-345\\n45-63,68-86,300-311,311-331\\n167-185,190-200,251-267,274-299,303-319\\n47-80,159-177,279-287\\n48-76,156-176\\n-17-17,160-200\\n-23-23\\n-17-17,134-165,165-169,169-180\\n-18-18\\n-12-12,170-190\\n-13-13,20-39,54-62\\n-12-12,17-25,25-46,139-162,168-192\\n0-20,50-68,170-190\\n-10-10\\n0-22\\n169-191\\n170-190\\n169-191\\n170-190\\n45-56,56-64,64-75,124-141,148-179,179-181\\n-12-12,12-30,30-35,35-39,39-54\\n169-191\\n-13-13,70-104,104-143\\n-9-9,13-34,34-54,81-99,108-126\\n60-101,101-126,139-164\\n68-97,97-113,115-139\\n3-20,20-42,61-83\\n113-145,166-179,179-181\\n96-111,111-116,116-138,141-159\\n76-101,109-148,148-166,166-180\\n104-133,133-139,139-153,164-180\\n2-17,30-48,54-72,76-94,101-132\\n-1-1,1-8,8-33,58-76,78-99,99-108\\n46-65,71-120\\n-3-3,3-31,31-51,60-85\\n9-27,38-60,60-84\\n145-180\\n-9-9,22-25,35-38,57-82,87-117,117-121,121-134,134-147,147-150,150-156,156-160,160-161\\n-18-18,18-37,61-76,76-79,79-91,91-96,96-124\\n149-178,178-182\\n-2-2,2-7,7-12,12-24,128-138,138-161\\n0-10,10-26\\n-13-13,16-35\\n170-190\\n161-199\\n168-192\\n-20-20,142-153,153-161,161-168,168-192\\n-18-18\\n159-201\\n10-29,29-36,36-44,44-48,110-126,126-129,129-145,145-151,151-153,153-166,166-170,170-190\\n-13-13,159-201\\n-16-16\\n120-131,148-167,167-193\\n170-190\\n195-213,213-223,223-240,240-254,254-270\\n115-126,126-135,196-209,209-256,344-388\\n-22-25,117-129,129-152,195-211,214-263\\n23-37,44-64\\n21-39,46-65,68-87\\n47-66\\n47-66\\n-4-44,335-345,348-353\\n1-46,338-361\\n93-113,113-132,132-134,134-149,149-161,161-169,169-180\\n101-132,132-139,139-157,159-170,174-176,176-210\\n97-118,118-152,152-174,174-179\\n66-79,79-94,94-126,126-136,138-150,156-169\\n-8-2,2-22,92-103,103-123,224-239,239-244,244-258\\n36-81,169-212,278-316\\n42-81,169-214,281-319\\n177-193,193-197,197-213,213-232,285-307\\n44-54,60-79,179-196,196-204,204-214,214-228,234-252,286-312\\n173-189,189-204,208-217,217-227,227-240,240-257,272-289,289-313\\n169-189,189-193,193-207,276-291,291-311\\n47-70,73-92\\n44-80\\n30-38,48-70\\n32-52,52-58,58-75\\n-4-15,39-66,293-319,334-356\\n-6-16,37-67,292-323,329-352\\n45-65,290-319,319-321,321-335\\n39-62,290-323,323-339\\n34-54,289-319\\n37-45,48-56,56-67,288-321\\n56-87,168-192\\n56-87,167-191\\n55-86,94-104,166-193\\n90-114,164-196\\n54-89,103-122,122-126,126-130,156-193\\n55-78,78-80,80-93,155-172,172-174,174-196\\n44-77,165-211,279-315\\n40-77,82-93,164-208,281-313\\n128-146,154-164,164-173,189-209,271-309\\n193-211,212-230,283-300,300-320\\n8-17,30-60,297-324\\n37-65,296-324\\n68-96,158-187\\n70-101,162-184\\n76-105,153-157,168-188\\n39-55,55-71,173-207,283-313\\n45-70,174-192,192-208,258-273,278-314\\n51-74\\n3-24,39-65,269-287,291-325\\n36-66,266-285,292-325\\n40-62,289-322\\n31-49,251-269,295-326,326-327\\n62-94,156-190\\n63-94,160-189\\n43-53,55-80,174-199,278-309\\n59-77,168-186,190-205,281-312\\n40-58,299-324\\n42-60,296-325\\n-15-15,15-17,17-20,20-29,29-36,36-40,40-52,52-102,103-130,165-195\\n5-17,17-32,32-44,44-52,52-55,55-67,81-85,85-111\\n-22-22,43-55,55-61,65-108\\n60-91,164-196\\n104-125,131-180\\n144-166\\n3-40,41-61,61-73,73-91,129-152,165-195\\n-18-18,56-73,73-77,77-84,84-112\\n-9-9,39-53,53-57,57-72,72-78,78-91,91-109\\n47-65,65-74,74-96,134-153,153-159,166-194\\n-6-6,6-18,18-28,28-29,31-47,52-80\\n7-22,22-25,25-27,33-47,52-84\\n108-141,147-180\\n144-174\\n146-179,179-181\\n144-169\\n14-41,49-91,91-103\\n42-105,105-113,113-126,126-133,133-146,146-168,168-192\\n-19-19,39-58,58-65,65-68,68-116\\n40-50,59-88,88-95,95-119,142-152,152-161,161-199\\n58-88,88-100,100-117,160-179,179-181\\n10-32,32-40,40-50,55-73\\n4-21,21-43,43-61,61-72\\n115-131,131-134,134-138,138-140,140-145,145-180\\n127-135,146-180\\n147-169\\n39-55,55-58,58-74,74-82,82-85,85-88,88-92,92-94,94-105,105-108,108-117,117-125,125-128,128-130,166-169,169-171,171-174,174-180\\n-1-1,1-3,3-6,6-13,13-46,46-74,74-87,87-106\\n60-83,83-90,90-101,166-194\\n63-100,100-111\\n-17-17,17-54\\n-16-16,16-59\\n0-14,14-18,18-49,49-76,76-104\\n6-14,29-82,82-98\\n0-16,38-109,109-134\\n59-121\\n0-22\\n-23-23,31-50\\n168-192\\n130-157,166-194\\n167-193\\n100-120,123-150,150-161,169-191\\n-10-10\\n-17-17,29-53\\n-10-10\\n-55-55\\n-30-30,30-32,32-82,82-93,93-148\\n-1-1,1-11,11-32,32-34,34-50,53-90\\n-11-11,44-90\\n-34-34,35-58,78-102\\n0-11,11-28,28-41\\n-2-2,2-36,41-45,45-51,51-55,55-57,57-78\\n-13-13,16-35,35-60\\n-9-9,9-42\\n117-166,166-194\\n105-135,142-176,176-180\\n-16-16,16-32,32-69\\n-43-43,80-125,129-160\\n22-61\\n-15-15,15-39,48-132\\n0-16,19-38\\n-15-15,15-43\\n112-136,136-167,167-193\\n-16-16\\n-18-18,163-197\\n-26-26,43-58,58-60,60-62,62-68,68-92,92-149,162-198\\n-9-9\\n0-25\\n0-10,10-14,14-18,18-20,20-33,45-63\\n152-208\\n-16-16,40-68,68-88,108-135,160-200\\n-17-17\\n-21-21,28-48\\n-21-21,159-178,178-182\\n160-200\\n3-23,23-28,28-45,161-199\\n-11-11\\n0-18\\n162-198\\n109-140,140-148,159-201\\n-15-15,17-33\\n129-148,152-178,178-182\\n12-30,38-60,66-84,84-106,106-125,130-149,149-167,167-193\\n-10-10,10-30\\n23-41,41-43,43-47,47-82,99-123,134-151,151-176\\n7-24,28-67,163-197\\n-1-1,1-5,5-23,23-44,44-48,48-69\\n0-23,23-25,25-68,160-200\\n3-41\\n28-61,61-77\\n-3-3,3-22,22-25,25-31,31-37,37-41,41-59,165-180\\n-1-1,1-16,16-36,36-41,41-44,44-67,67-85\\n12-59\\n4-22,22-56\\n77-97,97-150\\n57-88,88-95,95-108,108-121,121-148,148-164\\n-9-2,49-77,284-306\\n19-37,47-73,82-105,284-293\\n-3-10,10-27,27-30,30-55,55-67,67-84,311-342,342-348,348-353,353-357\\n3-24,24-34,34-55,55-81,310-328,328-339,339-353,353-363\\n27-39,39-68\\n43-60,60-62,62-66,66-69,69-85,85-112,112-128,150-186\\n45-93,153-188\\n64-99,99-171\\n68-87,87-93,93-105,105-115,115-133,133-175\\n49-75,292-311\\n49-75\\n11-37,37-59,310-349,349-352,352-371\\n16-37,37-63,311-331,331-333,333-351\\n71-101,101-115,115-145\\n60-72,72-84,84-89,89-92,92-105,105-114,114-125,125-145\\n155-184,280-298\\n161-186,187-191,191-202\\n23-40,40-42,42-60,301-331\\n58-76,76-79,79-97,130-153,153-169\\n35-62,292-313\\n15-30,30-33,33-39,39-64,324-350\\n30-58,73-96,303-316,316-335\\n4-22,31-69,69-96,317-335\\n60-91,142-186\\n52-97,99-117,142-188\\n24-65,301-326,326-348\\n-5-15,31-64,71-76,86-96,301-314,314-327,327-342\\n61-86,86-87,91-103,110-128,134-154\\n48-91,110-127,127-138,148-166\\n-14-14,25-36,36-46,46-70\\n-28-28,39-79\\n122-146,146-179,179-181\\n166-194\\n-11-11\\n-11-11\\n-13-13,152-160,167-193\\n-4-4,4-10,16-29,59-85,88-106,109-135,139-150,150-155,155-162\\n167-193\\n-10-10\\n-15-15\\n0-10,10-14,14-31,161-179\\n0-9,9-12,12-14,14-25,25-46\\n18-64,163-197\\n18-29,32-36,36-37,40-57,57-80,80-100\\n62-118\\n0-12,12-50,51-65,169-191\\n51-66,71-109\\n61-103,103-129,133-157,157-166\\n168-192\\n47-69\\n152-169,171-189\\n66-84,84-112,112-114,114-136,136-171\\n-1-1,1-31,42-69\\n-9-9,12-39,39-69,73-92\\n-4-4,4-13,17-31,31-36,36-56,56-69,73-91\\n31-64,162-198\\n41-64,64-87,87-93\\n51-88,88-90\\n-11-11,65-118,148-169\\n61-113,134-158,158-180\\n-8-8,8-62,62-88\\n71-115\\n76-95,95-119,119-126,126-145,145-180\\n8-29,40-68\\n19-44,44-78\\n69-133\\n88-101,101-103,103-130,167-193\\n-2-2,2-25,28-61,68-93\\n-15-15,19-56,138-161,170-190\\n42-57,57-80,80-84,84-96\\n59-88,88-92\\n-17-17,17-28,43-90\\n7-25,41-55,55-58,58-63,63-69,71-90\\n-24-24,24-28,28-38,59-117\\n53-63,63-100\\n62-118\\n106-118,118-124,124-144,144-164,164-179,179-181\\n1-51,55-82\\n0-15,15-55,55-125\\n0-7,7-27,27-48,63-126\\n49-90\\n0-6,6-9,9-29,29-31,31-43,49-66,66-76\\n58-83,84-99,107-137,296-322\\n58-82,102-134,291-317\\n158-198,198-215,268-307,307-319\\n138-154,157-198,244-262,279-304,306-309\\n49-70,281-328\\n49-70,279-315\\n30-44,44-47,47-64,64-82,86-104\\n48-80,84-104\\n50-72\\n49-72\\n55-81\\n54-79,79-82,82-96,130-153\\n39-65,69-98,270-283,283-285,287-327\\n40-64,275-296,296-325\\n45-67,67-84,84-87,87-119,130-165,165-182,230-249,249-252,252-256,258-281,281-308\\n52-67,67-70,70-114,118-143,143-153,153-157,157-165,165-183,233-253,258-312\\n292-321\\n102-123,127-143,148-179,187-211,265-300\\n99-125,144-177,187-214,269-295\\n49-70,287-314\\n49-70,290-313\\n54-82,82-100,100-118,118-122,122-143,143-176,258-269,269-275,275-277,277-291,291-293,293-299,299-310\\n55-89,89-102,102-118,118-120,120-138,149-175,249-272,272-275,275-293,293-312\\n270-278,305-325\\n269-287,304-324\\n52-74,77-106,276-294\\n26-37,37-45,45-51,57-87,87-102,102-118,284-294,294-311\\n56-91,114-126,130-148,261-279\\n59-92,95-107,262-280,291-309\\n-31-31\\n-45-45\\n-5-5,5-22\\n92-112,112-136\\n8-13,13-23,23-25,25-57,66-83,315-340,340-368\\n8-18,29-58,65-85,317-340,340-368\\n94-137\\n91-135,135-152,313-335\\n23-53,63-81,309-338,350-369\\n20-48,313-338,348-366\\n169-191\\n132-150,156-178,178-180\\n0-14,14-17,17-36,36-42,52-128\\n-22-22,22-26,26-47,69-133\\n56-90\\n76-104\\n69-102\\n78-102\\n5-27,51-69\\n6-24,60-82\\n96-123,150-180\\n74-96,100-112,120-146\\n135-164\\n117-137\\n37-69,163-174,174-179,179-181\\n4-25,38-66,294-314,314-331,346-364\\n10-19,44-66,294-314,344-370\\n3-27,47-67,83-101,300-319,329-342,348-356\\n42-76,160-186\\n47-61,66-80,292-311\\n156-204\\n167-193\\n-12-12\\n157-169,169-191\\n-1-1,1-19\\n142-165,168-192\\n52-80,171-204,215-244,273-311\\n56-79,172-207,215-223,225-236,271-288,288-290,290-312\\n194-220,278-310\\n196-220,285-310\\n39-57,57-70\\n53-71\\n47-66\\n48-66\\n1-14,41-64,295-317,338-357,357-361\\n45-74,294-317,329-349\\n59-92,168-190\\n169-190\\n45-77,165-199,199-218,273-310\\n51-73,171-210,278-287,287-289,289-311\\n34-58,297-325\\n75-105,161-185\\n172-197,281-312\\n45-54,292-320,333-351\\n290-316,334-352\\n71-94,94-111,122-131,131-150,158-180\\n61-93,93-113\\n0-29\\n-1-1,1-19,19-39,163-175,175-179,179-181\\n-3-3,3-8,8-23,23-52,52-57,57-72,72-90\\n28-40,43-62,78-92,94-124\\n60-78,78-90\\n114-132,132-152,152-156,156-170,170-178,178-180\\n-9-9\\n14-33,55-64,75-105\\n37-72,164-196\\n46-70,294-324\\n48-67,73-77,77-91,295-314\\n155-189\\n68-77,140-144,148-158,161-189\\n24-71,165-195\\n0-5,5-14,14-30,30-44,44-54,54-72\\n165-195\\n171-189\\n31-78,165-195\\n45-67,303-324\\n45-67\\n37-58,292-318\\n36-59,275-293\\n-1-1,1-20,68-84,84-88,88-96,96-102,102-111,111-130\\n43-61,71-112,112-117,117-140\\n9-44,47-52,52-55,59-71\\n-5-5,5-48,57-81\\n89-104,107-129,129-149\\n107-150,150-152\\n81-94,101-133,142-160\\n75-93,93-97,97-122,122-139\\n78-108\\n15-43,48-64,67-88\\n-3-3,3-11,11-31,33-53,57-129,129-136,136-149\\n0-26,26-29,33-42,42-54,54-70,70-73,79-117\\n71-118\\n73-111\\n-7-7,7-18,18-63,63-83,83-86,86-89,89-145,152-160,160-177\\n-16-16,20-32,32-40,40-53,77-100,100-107,107-126\\n66-102,102-110,110-131,143-161\\n54-58,83-118\\n-6-6,6-13,13-40,40-60\\n-2-16,25-45,318-349,350-356,356-358\\n16-44,311-344,344-360\\n56-87,87-90\\n-15-15,15-18,78-113\\n77-103\\n0-15,15-35,35-60,71-89\\n96-119,128-154\\n0-12,12-24,24-30,30-36,36-47,59-121\\n-4-4,4-15,79-119\\n0-18,24-43\\n-17-17\\n-11-11\\n-14-14,166-194\\n0-20,20-24,24-43,84-88,88-97,140-154,154-156,160-180\\n75-105\\n0-29,30-42,150-176,176-180\\n52-62,64-67,67-70,71-88,88-90\\n-14-14\\n-12-12,170-190\\n-1-1,1-5,5-16,148-177,177-183\\n12-31,31-40,40-50\\n51-69,69-80,80-88,88-92\\n-10-10\\n170-190\\n-14-14\\n-9-9\\n344-373\\n350-369\\n-11-12\\n171-189\\n-10-10,11-31\\n-11-11,11-33\\n-16-16,20-42\\n10-35,35-39,39-53\\n68-89,271-300\\n68-89,271-294\\n-13-13\\n30-58,58-79,79-96,128-146,160-169\\n16-50,50-57,57-83,83-91,91-101,117-135\\n149-175\\n-4-4,21-47,47-72\\n160-200\\n-9-9,26-53,53-59,59-81,170-190\\n66-95,95-97,97-104,104-117,152-180\\n70-94,94-117,143-160,160-178\\n35-58,272-284,284-306,306-311,311-313,313-324\\n30-59,271-284,288-304,304-324\\n-10-10\\n170-190\\n-14-14\\n170-190\\n-12-12\\n169-191\\n-15-15,169-191\\n-20-20\\n169-191\\n-1-1,1-3,3-22\\n-30-30\\n-13-13,19-38\\n-18-18,19-51,51-53,53-55,55-67,98-122,122-138\\n107-130\\n171-189\\n92-123,133-146,146-165,166-177,177-183\\n-1-1,1-9,9-26,32-55,55-72,74-78,92-112,168-192\\n-12-12,18-37,37-40,40-54,77-99\\n171-189\\n28-64,161-199\\n-5-5,5-24,24-33,33-59,149-161,169-191\\n166-194\\n171-189\\n69-86,86-107\\n181-213,214-216,220-227,233-238,238-242,242-250,250-258,258-259\\n0-17,25-34\\n0-34,34-60,60-64,64-90\\n0-33,33-54,54-88,88-110\\n46-60,60-64,68-112\\n91-99,121-138,140-164\\n58-103,103-125,125-145\\n8-24,26-49,49-54\\n79-104,106-109,113-126,126-137\\n0-16,16-69\\n0-53\\n-11-11,11-48,48-64,134-152\\n-7-7,7-22,22-27,27-45\\n68-92,96-132,132-134,134-161\\n52-70,83-107,110-124,124-141,146-172,293-303,303-307,312-322\\n74-93,93-99,99-102,102-111,111-121,121-140\\n80-97,97-118,118-131,131-137,137-149\\n45-73,84-102,296-306\\n50-70,82-102\\n71-98,98-108,108-122,122-154,154-185\\n53-87,87-112,112-133,133-154,154-186,280-297,297-316\\n69-80,80-101,101-104,104-124,124-160,160-162,162-165,165-184\\n70-107,107-109,109-116,116-121,121-126,126-147,147-175,175-187\\n92-125,125-148\\n65-100,100-115\\n63-78,78-97,100-115,119-127,140-150\\n43-61,67-85,91-131,131-152,163-180\\n132-156,156-180\\n101-123,123-160,160-162,162-180\\n64-127,127-168\\n49-78\\n75-112,112-131,131-180\\n93-110,110-136,136-175,175-185\\n77-101,135-153,153-177,177-183\\n61-90,90-101,101-123,123-130,130-172,177-183\\n56-69,69-74,74-77,77-106,106-108,108-134,148-180\\n64-108,111-138,138-179,179-181\\n71-114,114-121,121-147,147-156,156-160,160-178\\n96-118,118-121,121-141,141-143,143-169,169-170,177-183\\n93-96,116-155,155-173\\n-21-21\\n106-114,139-169\\n0-9,9-40\\n53-71,71-109\\n95-109,109-113,113-129,129-152,152-158,158-169,171-189\\n239-274\\n84-110,234-276\\n-31-31,34-63\\n0-3,3-12,12-17,17-32,38-47,50-53,53-68,107-119\\n47-65,65-69,69-111\\n0-4,4-32,32-35,35-58,58-69\\n-40-40,40-73,76-88\\n-3-3,3-9,9-12,12-29,29-41,41-52,52-60,60-71,80-102\\n74-106\\n91-102,102-129,158-202\\n-5-5,5-58,171-189\\n69-87,87-90,90-92,92-128,128-150,150-156,156-176\\n63-106,106-108,108-131,131-164\\n61-96,96-117,117-142,142-167\\n6-24,35-69,86-94\\n0-21\\n85-109,109-118,118-178\\n77-118,118-139,139-141,141-166\\n2-10,34-65\\n78-96,106-124\\n70-90,90-119,119-121,199-213,213-215,215-221,221-233,233-241,241-246,246-263\\n70-91,91-113,205-237,237-247,247-261\\n98-119,212-225,225-249,255-269,273-288\\n-2-2,2-5,5-22,22-43,43-56\\n-16-16,38-56,56-67,67-69,69-104,104-117,117-120,120-140,140-158,167-193\\n-14-14,14-23,23-25,25-45,45-48,48-62,62-68,78-120\\n35-56\\n134-163\\n53-77,172-191,191-199,278-317\\n36-49,55-68,167-185,185-189,189-191,191-196,281-311,311-322\\n-5-5,5-25,166-194\\n-17-17\\n168-192\\n145-168,168-192\\n-10-10,10-36,74-78,83-93,93-105,105-113,113-115,115-124,124-148,162-180\\n-18-18\\n135-154,168-192\\n-12-12,142-150,154-160,160-180\\n-14-14\\n136-166,173-187\\n-2-2,2-17,17-48,50-72,86-100,100-104,104-108,108-112,112-120,120-138,138-160\\n-9-9,13-28,28-30,30-49,49-69,91-109,151-164,170-176,176-184\\n-11-11,106-116\\n28-46,298-323\\n19-29,29-33,38-48,49-67,297-320\\n0-17,20-33\\n48-71,172-194\\n80-110\\n68-103\\n44-54,54-74,182-186,186-192,192-204,284-306\\n48-63,65-84,84-98,98-124\\n49-62,62-67,67-75,75-93,102-121,121-129\\n-7-7,13-35,57-74,74-77,77-106,106-129\\n50-62,62-82,82-114\\n-12-12\\n21-38,38-46,46-78,152-173,173-187\\n-20-20,27-35,37-56\\n61-75,75-105\\n-4-4,4-33,33-35,35-38,38-52,53-60\\n59-78,78-88,88-100,100-120,120-139\\n44-58,58-62,62-89,89-113,133-153\\n48-70,71-89,178-198,289-313\\n69-78,176-184,291-309\\n-1-1,1-21,69-81\\n0-19,171-189\\n-14-14,163-179\\n-13-13\\n-16-16\\n-31-31,136-165,165-171,171-177\\n39-63,63-77,164-180\\n-11-11,158-180\\n-20-20\\n0-5,5-24\\n0-18\\n-35-35,99-120,159-201\\n140-165,165-167,167-177,177-183\\n2-27,48-52,54-72,98-118,162-177,177-179,179-181\\n-13-13\\n-18-18\\n158-202\\n148-167,167-193\\n-21-21\\n138-161,161-180\\n-14-14,22-25,25-45,78-96\\n-18-18\\n-21-21,158-180\\n164-196\\n163-197\\n-14-14,166-194\\n156-173,173-187\\n-28-28,136-148,148-177,177-183\\n-15-15,154-178,178-182\\n-20-20,22-34,153-161,168-192\\n-16-16,167-193\\n0-20,20-54,54-83,83-86,86-90,90-98,98-100,100-157,157-174,174-176,176-184\\n6-25,32-41,48-52,52-63,63-86,86-95,95-106,106-119,119-145,145-153,153-163,171-189\\n-1-1,1-25,159-179\\n0-17\\n-33-33,143-160,160-180\\n-1-1,1-22,168-192\\n25-46,46-60,65-82,82-93,93-108,113-132,151-160,163-172,172-182,293-313\\n16-26,26-30,35-45,58-77,77-102,109-127,145-163,169-182,279-301,303-321\\n49-67,309-331,331-343\\n42-72,316-335\\n-4-4,4-28,124-145,145-163\\n-22-22\\n-12-12,167-193\\n36-81,165-183,183-208,279-315\\n42-84,166-201,203-215,278-315,324-341\\n50-68,68-85,292-314\\n46-71,292-316,334-338\\n54-81,165-188\\n55-82,85-87,87-102,154-165,165-193\\n166-199,279-310\\n282-314\\n45-63,293-318\\n44-100,138-146,146-158,158-180\\n-11-11\\n-12-12,165-175,175-185\\n56-81,81-83,83-97\\n75-101\\n50-68,71-103,103-120\\n26-44,55-73\\n59-83,87-124\\n54-71,287-305\\n287-306\\n169-191\\n-17-17,62-86,86-108\\n147-154,154-158,165-195\\n-13-13\\n-14-14\\n-14-14\\n-12-12\\n169-191\\n158-202\\n163-197\\n167-193\\n-12-12\\n-14-14\\n167-193\\n164-196\\n-13-13\\n-15-15\\n168-192\\n159-180\\n-13-13\\n161-199\\n-12-12\\n-12-12\\n-17-17\\n214-223,225-233,233-254,254-284\\n244-271,271-278,278-295\\n65-83,131-156\\n251-275,275-283,283-303\\n276-300\\n273-301\\n-23-23\\n-16-16,24-36,36-40,40-44,44-60,106-126,126-137,137-153,158-176,176-184\\n170-190\\n170-190\\n-26-26,26-46,46-85,85-125,159-201\\n0-40,40-65,65-67,67-72,72-105,124-147\\n93-127,127-170,170-175,175-178,178-182\\n86-115,133-175,175-180\\n0-22,22-32,32-55,55-57,57-114,133-154,154-179\\n98-129,136-151,151-157,157-180\\n-15-15,162-198\\n1-11,43-62,64-91,135-144,146-153,153-207\\n31-49,49-65,65-68,68-78,78-91,91-106,110-128,158-178\\n46-69,296-320\\n46-68,345-363\\n177-201,208-216,279-307\\n179-205,275-322\\n-10-10\\n164-187,187-203\\n58-76,163-186,186-202\\n49-67,67-85,177-203,272-305\\n173-190,190-208,277-306\\n52-70,293-315\\n-25-25,174-179\\n54-126\\n71-109,109-125\\n-18-18\\n0-19,23-41,54-78,89-109\\n67-99,108-129\\n89-111,114-140\\n93-108,108-111,111-138\\n49-60,60-82,288-309,341-351\\n30-42,42-45,47-62,62-85,107-115,293-303,303-307,312-322,341-359\\n14-36,66-86,105-122,286-294,349-367\\n67-86,100-120\\n-2-2,2-7,7-22,22-24,24-44,44-47,47-63\\n155-179,179-181\\n41-76,284-298,298-302,302-316\\n36-50,50-70,70-84,284-316,316-326\\n44-63,96-100,121-142,148-184\\n43-63,69-95,113-134,134-154,154-179\\n46-78\\n3-21,52-76,298-316\\n167-193\\n-10-10,171-189\\n-11-11,169-191\\n-11-11,168-192\\n-12-12,152-164,164-172,172-188\\n1-6,6-12,12-16,16-19,19-22,22-27,27-32,32-42,42-64,64-68,68-105,111-114,114-125,125-135,135-156,156-177,177-180\\n-17-17,113-135\\n52-73,73-83,83-86,86-89,89-121,121-141,141-156,156-164,164-196\\n39-66,73-78,78-83,83-87,87-89,89-93,93-133,133-135\\n41-62,62-69,69-97,128-140\\n6-30,51-70\\n47-76,169-205,280-316\\n47-81,164-200,277-299,299-317\\n36-59,59-78,289-313\\n45-70,290-318\\n54-67,67-91,126-137,167-190,190-204\\n55-79,161-190\\n54-82,175-191,191-204,286-316\\n52-75,175-197,287-316\\n32-65,295-319\\n49-67,291-315\\n-13-13,169-191\\n-13-13\\n99-109,142-166,166-194\\n-1-1,1-35,142-160,160-162,162-164,164-178,178-180\\n0-20,29-39,50-63,63-98,98-100,100-116,116-124,124-135,158-202\\n99-125,168-192\\n-12-12\\n-13-13\\n-13-13,13-34\\n-14-14\\n-24-24,54-73\\n156-204\\n168-192\\n-16-16\\n168-192\\n0-38\\n58-81,113-140,159-201\\n158-180\\n147-168,168-192\\n159-201\\n102-114,131-143,149-155,159-201\\n72-101,108-134,137-154\\n169-191\\n158-202\\n72-99,99-127,128-153\\n58-90,90-105,105-129,129-130,135-139,139-160,160-164,164-176,288-299,299-316\\n55-98,104-108,108-139,139-144,144-162,288-306\\n28-46,46-72,287-313\\n35-62,62-74,293-313,313-321\\n164-198,256-275,275-299\\n164-189,189-207,264-284,284-307\\n53-88,131-149,154-173,285-305\\n56-69,69-91,114-121,134-150,288-312\\n31-43,45-77,77-93\\n44-56,56-83,83-85,297-319\\n28-57,81-99,300-308,320-331\\n34-62,72-90,299-323,323-337\\n96-112,112-114,114-126,155-180\\n-20-20\\n269-304\\n258-274,274-293,293-318,321-340\\n277-320\\n289-318\\n46-54,277-299,299-303,303-317\\n49-90\\n171-189\\n170-190\\n41-58,58-81,277-293,293-315\\n48-81,165-184,280-316\\n-1-1,1-17,169-191\\n-14-14\\n0-25,25-43,43-52,52-67,67-71,71-78,78-95,95-98,98-115,148-176,176-184\\n86-108,119-145\\n-11-11,166-194\\n18-37,163-197\\n-4-4,4-23,28-43,100-124\\n-31-31,36-43,43-56,56-83,83-88,88-111,161-180\\n3-17,17-23,36-62,62-70,70-73,73-82,82-93,93-105\\n-12-12,17-26,26-44,48-59\\n212-232,232-242,242-286,300-320,320-360\\n14-35,206-224,238-297\\n9-21,23-42,206-217,227-251,251-294\\n236-256,258-288\\n209-227,245-272,272-274,274-287\\n22-33,35-60,260-293\\n-14-14\\n-15-15\\n0-16\\n-1-1,1-19\\n-21-21\\n-12-12\\n0-24\\n167-193\\n-10-10,165-195\\n0-13,156-170,170-175,175-180\\n-12-12,169-191\\n0-4,4-23,23-29,67-87\\n-1-1,1-25\\n-19-19\\n3-32,152-160\\n-14-14,166-194\\n0-15,15-17,19-40\\n-10-10,161-199\\n-14-14,110-136,169-191\\n-14-14,17-28,28-37,37-47,76-94,107-125,149-167\\n23-50\\n170-190\\n0-17,164-196\\n-14-14,159-201\\n-4-4,4-10,10-13,13-28,86-95,95-126,126-143\\n-9-9,12-26,26-28,28-32,32-45,45-65,66-112,112-115,115-129,129-137,137-166\\n-18-18,18-30,46-69,84-100,100-102,102-125,146-159,159-175\\n114-158,164-196\\n-16-16,22-47,157-203\\n-10-10\\n119-128,130-138,138-149,157-203\\n-2-2,2-9,9-25,144-165,165-172,172-180\\n-28-28,162-180\\n-18-18,149-161,161-165,165-195\\n-1-1,1-28,171-189\\n157-203\\n-12-12,16-19,19-26,168-192\\n0-22\\n-14-14\\n-13-13\\n-18-18\\n59-88,88-107,129-147\\n1-12,27-39,45-63,63-70,70-74,74-114\\n33-51,64-98,98-110,110-124,124-136,164-179,179-181\\n72-108,108-129,137-156,158-179\\n50-99\\n-14-14\\n-11-11\\n-6-6,6-12,12-25,43-63,63-67,67-88,88-92\\n-4-4,4-22,38-56,56-59,59-90\\n-12-12,156-177,177-183\\n0-14,14-16,16-30,38-65,164-196\\n0-14,14-30\\n0-19,168-192\\n-9-9\\n0-15,15-34\\n-17-17\\n169-191\\n-14-14\\n5-43,84-102,125-143,143-166,171-189\\n56-70,70-90,90-92,92-107,107-122,122-139,163-178,178-182\\n21-49,131-161,162-172,179-181\\n-26-26,155-205\\n-14-14\\n-19-19\\n169-191\\n16-27,27-44,132-143,143-147,147-150,150-160,160-171,171-173,173-180\\n-22-22,22-38,136-148,148-153,153-159,159-201\\n-13-13,169-191\\n-18-18,169-191\\n45-63,81-99,113-124,126-160,170-190\\n-9-9,19-47,47-66,121-139,139-168,168-172,172-175,175-180\\n-9-9\\n-13-13,166-194\\n-12-12\\n-17-17\\n-12-12\\n-1-1,1-21,21-37,158-202\\n-7-7,7-27\\n-19-19,22-26,26-39\\n48-66,70-82,82-100,104-121,121-125,125-147\\n158-178,179-181\\n-22-22\\n-24-24,169-191\\n-24-24,164-180\\n-9-9\\n0-4,4-8,8-25,169-191\\n-18-18\\n143-153,153-169,169-191\\n171-189\\n121-129,129-153,153-157,157-173,173-190\\n128-173\\n302-317,317-320,320-335,339-361\\n275-290,295-324,324-335,339-365\\n46-79\\n53-63,66-68,68-100,197-215\\n44-63,63-66,70-92,92-107,196-214,220-238\\n26-29,299-319,324-340,340-343,344-371\\n274-296,309-316,316-322,338-354,354-381\\n0-8,8-12,12-20,20-32,32-33,49-77,329-347,349-360\\n9-31,41-59,59-79,344-369\\n209-229,263-281,313-338\\n213-245,263-272,303-315,315-317,317-319,319-339\\n65-94,191-201\\n34-51,51-81\\n159-169,169-185,185-213\\n64-96,183-209\\n146-157,168-190,190-205,205-209,209-228\\n64-70,70-88,156-190,190-214\\n215-233,262-276,281-289,289-315,315-334\\n274-294,296-324\\n258-271,271-289,289-291,291-324,324-333,333-354\\n215-233,267-295,303-320,320-332\\n39-72\\n-1-1,1-23,23-37,42-60\\n0-24,24-45,73-85,85-89,89-91\\n0-11,11-28,31-46,50-63,63-85\\n1-19,80-106,138-156,156-161,161-167,167-170,170-180\\n-19-19,50-69,69-74,74-78,78-90\\n44-77,162-198\\n170-190\\n128-136,158-202\\n46-75,113-134,159-178,178-182\\n52-69,171-189\\n46-66,66-82,154-170,171-189\\n38-60,169-191\\n41-59\\n37-54,54-80,164-180\\n170-190\\n36-77,154-206\\n165-195\\n33-49,49-65,165-176,176-184\\n43-75,75-76,154-165,165-195\\n-9-9,46-73\\n166-190\\n166-190\\n164-187\\n166-186\\n18-38,38-41,41-70,292-322\\n-4-29,29-33,33-42,48-71,286-308,315-337\\n48-52,52-55,55-70,305-330\\n37-53,53-70\\n68-92,104-122,122-139,168-186,285-303\\n41-66,292-320\\n42-61,295-318,329-347\\n42-60,276-293,297-323\\n294-328\\n49-73,175-201,279-313\\n52-74,174-193,267-290,296-313\\n171-198\\n46-69,171-185,185-207,284-302\\n47-69,171-181,181-209,279-297,298-316\\n33-51,62-71,153-188,278-296,301-319,319-330\\n167-195\\n169-194\\n19-37,39-61,61-63,63-65,65-68,72-77,77-91\\n28-32,39-68\\n42-69,87-108,159-193,212-237,297-320\\n43-75,155-171,171-202,299-318\\n214-241\\n58-83,139-183,283-310\\n54-81,148-168,168-183,284-310\\n36-67,293-330\\n37-66,280-331\\n165-190,194-220,274-300\\n166-194,264-284,284-302\\n7-16,38-68,78-93,287-297,299-321\\n37-68,298-321\\n164-195,204-227,227-244\\n166-194,211-225,225-231,231-239,239-250,271-286,286-295\\n57-83,160-192,279-311\\n43-69,150-167,167-195,286-314\\n168-193\\n62-83,146-181,277-294,294-304\\n14-33,39-69,297-327\\n-7-11,34-70,294-325\\n162-192,192-204,206-223,262-279,281-298\\n159-187,187-208,208-218,276-301\\n25-40,40-43,43-48,281-295,297-321\\n33-55,297-320,320-338\\n29-68,281-297,297-305,305-317,317-333\\n41-69,148-166,169-193,280-301\\n25-43,149-168,168-195,271-281,281-288,288-306\\n167-191\\n0-8,8-20,98-145\\n0-2,2-30\\n141-161,161-179,179-181\\n-25-25,81-97,97-107,107-111,111-147\\n3-26,78-96,96-104,104-108,108-123,123-134,141-159\\n-16-16,104-136,149-170\\n-11-11,12-37,37-39,39-43,43-67,67-93,93-99,99-119,119-141,141-148,148-164,164-173,173-187\\n0-16\\n40-66,67-86,151-170\\n-3-3,3-32,50-68,83-99,99-101,101-116,145-163\\n92-121\\n70-98,98-100,100-112,112-114,114-133\\n63-77,79-134\\n73-83,83-87,93-123\\n-3-3,3-8,8-24,24-44,44-63\\n-6-6,6-13,13-41\\n0-37,45-71\\n83-97,97-115,115-136,136-161,162-179\\n112-154,163-197\\n109-163,163-175,175-180\\n159-178,178-180\\n-13-13,89-107,107-116,116-133\\n171-189\\n-2-2,2-5,5-25,25-39,102-137\\n-7-7,7-9,13-25,41-51,51-78,78-96,114-124,124-128,133-142,143-168,168-171,171-189\\n83-103,110-133\\n0-15,15-36\\n170-190\\n1-4,4-21,334-358,358-361\\n136-153,153-162,162-163,327-344,344-370\\n136-163,328-350,350-363\\n103-114,134-152,156-164,341-362\\n-27-34,34-42,42-45,45-54\\n-11-38,305-323,323-326,326-347,347-349\\n224-254\\n223-239,239-258\\n-29-29,29-90\\n18-47,47-67,67-113\\n-2-2,2-8,8-18,18-31,31-39,39-51,51-63,63-72,72-86,86-88,88-92\\n0-6,6-11,11-32,59-121\\n34-71,71-74,74-80\\n-16-16,36-70,104-135,160-174,174-180\\n-14-14,14-18,18-40,40-48,48-70,79-101\\n80-100\\n-13-13,13-22,22-37\\n-13-13,13-17,17-38\\n-1-1,1-35\\n127-144,144-162,162-178,178-180\\n107-127,135-180\\n-18-18,18-70,70-90\\n-7-7,7-13,13-23,23-27,27-33,33-43,43-54,58-122\\n0-25,25-41,101-147\\n0-17\\n109-121,128-163,163-197\\n139-151,151-174\\n0-17,17-48,48-70,70-90\\n4-22,104-135\\n165-195\\n-10-10\\n133-154,154-178,178-182\\n27-54\\n-4-4,4-28,28-32,32-58,58-65,65-74,74-90\\n130-158\\n-21-21,21-80,80-90\\n-2-2,2-16,103-122,122-136,136-138,142-155,155-169,169-180\\n0-25\\n125-158,158-164,164-196\\n-2-19,19-32,145-156,156-160,160-164,164-167,167-176,176-178\\n153-162,169-189,189-202,202-207,207-209,209-226\\n225-251\\n225-252\\n129-139,151-166,166-178,178-184,184-217\\n137-149,149-171,171-182,182-208,213-228\\n-1-6,23-36,36-43,43-68,160-174\\n7-10,14-48,48-70,86-107,107-123,144-147,151-171\\n6-26,26-27,39-54,54-57,57-66,66-67,139-173,173-186\\n1-28,33-61,135-171\\n349-369\\n349-369\\n7-29,42-53,55-83,84-111\\n5-23,45-74,85-110\\n195-221\\n195-219\\n19-43,47-66,66-84,159-178,178-182\\n37-59,59-88,152-168,168-179,179-181\\n46-70,163-197\\n-10-10,22-25,61-84,84-86,86-92,112-131,131-133,133-156,156-167\\n29-45,48-65,65-90\\n79-101\\n25-42,42-46,51-61,63-81\\n171-189\\n68-89,89-112\\n0-9,9-54,54-63,63-74,74-118,118-121,121-123,123-129,129-138,138-180\\n36-58,66-87,87-92,92-106\\n-6-6,6-26,26-46,46-52,52-55,55-66,66-72,74-86,86-89,89-91,91-142,142-150,150-156,156-158,158-166,166-194\\n-5-5,5-26\\n-11-11,11-46,46-74,74-79,79-88\\n7-25,92-118,118-140\\n73-89,89-91\\n78-102\\n-9-19,19-32,32-42,42-62,66-73,73-83,93-101,104-121,121-124,124-127,127-130,130-135,135-153,153-163,163-167,167-171\\n-5-21,21-23,23-42,42-50,50-53,53-55,55-69,75-102,108-129,134-175\\n44-76,139-160,165-195\\n139-157,157-173,173-176,176-192,194-210,274-292,306-324\\n48-68,140-151,151-166,166-174,174-193\\n19-37,37-45,56-64,64-89,95-115,127-142,146-172,172-188\\n29-59,62-88\\n-1-1,1-18,18-31,31-34,34-38,38-50,50-70,70-75,75-87,87-93\\n-13-13,100-123,123-142\\n2-8,8-11,11-22,22-41,56-75,75-100,102-120,131-150,150-168,168-182\\n-12-14,14-15,18-24,24-26,26-43,50-70,116-140,140-143,143-150,150-164,164-166\\n46-58,58-78,169-191\\n11-29,79-100,100-109,109-119,130-151\\n63-90\\n69-86,86-89,89-92,92-119,119-137\\n-13-13,18-33,34-69,69-85,85-87,87-93\\n-11-11\\n23-46,61-66,66-79,108-135\\n31-54,54-84,138-150,150-155,155-160,160-170,170-190\\n18-31,31-57,57-59,59-80,164-196\\n-5-5,5-22,30-61,61-81,81-89,89-91\\n-1-1,1-23,114-160\\n22-32,48-67,67-85,85-97,112-130,167-193\\n36-69,69-94,158-188,188-215,271-290,290-300,300-345\\n37-61,61-95,156-186,186-212,277-298,298-305,305-308,308-312,312-345\\n-12-12\\n85-103,109-145,146-153,153-157,157-171\\n66-114\\n32-41,72-104\\n53-61,79-101\\n35-55,66-84,96-114,127-138,152-168\\n-1-1,1-21,30-54,65-74,111-133,133-156\\n6-31,43-65,65-67,67-79,89-91\\n0-14,33-51,55-70,70-82,140-150,150-160,160-180\\n28-46,46-52,52-58,58-70,139-157,157-180\\n35-54,54-71\\n-22-22,22-39\\n-1-1,1-22,22-42,42-79,86-94\\n36-70\\n23-58,66-79,79-82,82-93,93-105,105-125,125-159,159-190\\n-7-9,9-19,19-39,74-80,80-94,94-104,104-138,138-168\\n-7-11,100-132,334-352\\n-4-7,11-27,27-53,62-80,118-137,137-154,157-172\\n15-40,55-73,110-129,129-162\\n39-67,67-72,72-94,137-147,147-153,157-203\\n14-25,25-33,33-36,36-58,58-86,162-180\\n30-48,158-202\\n55-76,158-176,292-320,320-341\\n51-67,70-86,198-216,288-322,322-342\\n-3-3,3-13,13-17,17-34,34-36,36-42,42-45,45-73,79-101\\n-11-11,11-15,39-79\\n23-26,29-43,43-63,78-104,104-112,112-139,146-160,160-173\\n19-37,37-64,75-91,91-97,97-99,99-103,112-135,156-164\\n-1-1,1-9,9-21,21-25,25-38,38-60,60-80,80-100\\n-1-1,1-7,7-14,14-34,34-54,54-56,56-59,59-61,61-70,70-72,72-90\\n8-28,34-47,68-94,102-120,124-133,149-168,169-188\\n3-27,57-81,81-97,101-117,156-168,168-183\\n39-71,166-194\\n-2-2,2-13,13-18,18-29,46-72\\n9-37,47-55\\n-1-1,1-23,23-27,27-38,38-47,47-81,88-92\\n80-100\\n-9-9,30-49,54-72,77-103\\n-10-10,10-25,25-53,53-61,61-85,85-95\\n-16-16,107-139\\n49-67,171-189\\n17-35,35-53,53-55,55-75\\n8-21,21-23,23-30,30-67,72-76\\n46-73,163-197\\n4-26,29-71,81-99\\n4-19,19-38,38-51,51-55,55-70\\n13-28,28-32,32-40,45-53,53-54,70-88\\n10-28,35-50,54-69,83-93,151-173\\n-3-3,3-41,50-71,71-78,78-85,85-89,89-91\\n7-40,47-80,101-122,122-153,153-171\\n-7-7,7-31,45-70,93-112,112-126,132-139,146-168,168-169\\n34-47,47-72,75-99,124-135,135-143,143-151,151-155,155-163,163-175,175-185\\n-4-4,4-10,10-12,12-35,35-47,47-55,55-81,81-99\\n-1-1,1-7,7-27,29-56,56-77\\n-9-9\\n52-66,66-71,71-85\\n340-362\\n339-361\\n31-46,46-58,58-73,150-172\\n18-39,44-83,92-99,99-102,106-118,134-160,167-193\\n30-48,76-94,125-160,161-165,165-173,173-187\\n17-39,132-142,147-171\\n-10-10\\n-9-9,38-56,130-148,155-205\\n0-2,2-7,7-27,27-37,37-45,45-53,53-74,74-78,78-102\\n-1-1,1-15,15-36,81-113,113-151\\n0-14,14-34,34-89,89-91\\n65-115\\n142-153,154-170,170-173,173-175,175-177,177-180\\n-13-13,13-31,31-51,51-71,71-109\\n-11-11,28-50,74-100,100-133,133-155,168-192\\n35-46,46-80,85-95\\n107-133,134-163,163-176,176-184\\n-2-2,2-13,13-16,16-90\\n8-27,99-134,134-146,152-161\\n-13-13,26-30,33-47,47-50,50-71,71-89\\n-17-17,17-27,27-90\\n-15-15,15-23,106-144\\n134-155,161-199\\n-6-11,11-13,13-19,19-35,35-37,46-50,50-75,86-104,104-114\\n-9-13,13-15,15-34,34-54,54-59,59-78,93-120\\n20-31,31-39,39-50,74-96,125-143,146-169\\n-20-20,71-89,89-108,108-131,131-147,147-149,149-151,151-162\\n-7-7,7-11,11-48,48-51,51-71,71-94,94-118,118-129,129-133,133-135,135-166,166-194\\n-11-11,11-32,53-82,100-118,129-147\\n7-30,54-71,71-80,82-87,87-97,97-117,117-127,127-146,146-159,159-161,161-164,164-166,166-176\\n-9-9,11-24,30-43,99-112,112-119,119-132,132-147\\n40-95,166-194\\n22-34,34-45,45-54,54-65,65-89,165-180\\n37-76,167-193\\n30-42,44-74,168-192\\n0-17,26-54,64-85,85-89,89-91\\n98-116\\n55-80,167-186\\n-13-13,13-54\\n173-194\\n66-84,168-190\\n13-26,26-48,48-56,56-70,70-84\\n-9-9,23-44,44-70,72-85\\n39-68,164-180\\n47-67,67-90,156-170,170-184,184-209,284-315,315-331\\n46-65,65-91,153-187,187-207,261-272,272-279,279-299,299-307,307-310,310-312,312-316,316-319,319-332\\n24-35,56-72,72-84,144-164,164-174,174-196,261-265,274-294,300-322\\n40-65,141-161,170-183,183-201,261-279,281-294,294-298,298-325\\n11-38,38-49,49-74\\n0-4,4-27,27-41,41-72,72-80,80-83,83-87,87-89,89-91\\n0-18,18-20,20-54,54-85,85-88,88-92\\n4-30,76-86,86-90,92-100,100-119,129-147,154-176\\n9-29,96-120,163-186\\n6-29,39-52,52-67,67-86\\n-1-1,1-3,3-5,5-12,12-30,33-51,51-59,59-80,80-100\\n0-4,4-33,33-56,56-90\\n30-52,65-84,153-173\\n35-53,53-54,66-85,143-151,153-162,162-173,173-198,254-271,272-290,297-319\\n17-37,37-60,60-74,142-164,173-191,261-271,271-280,280-291,295-311\\n3-22,22-42,43-63,63-85,85-95\\n0-5,5-7,7-9,9-18,18-20,20-38,38-43,43-64,64-66,66-74,74-106\\n35-67\\n0-31,31-75,75-90\\n0-19,22-28,32-37,37-40,40-51,103-138,143-165\\n-3-3,3-9,36-72\\n137-160,161-179\\n13-30,30-32,32-35,35-65,65-76,78-102\\n0-4,4-21,21-37,37-60,60-90\\n-2-2,2-4,4-22,100-136\\n-13-13,43-62,62-73,79-97,108-133,136-158,163-177\\n33-51,51-81,81-94,153-171,171-180\\n36-59,59-80,163-178,178-182\\n-8-8,13-22,22-42,45-68,68-88,88-92\\n0-21,21-79\\n-1-1,1-15,15-19,19-21,21-33,35-47,62-80,80-88,88-92\\n-22-22,37-86\\n0-59,59-61,61-119\\n0-27,40-83\\n-1-1,1-4,4-23\\n69-96,96-106\\n29-47,47-62,62-74\\n10-42\\n-12-12,12-15,15-30,38-58,58-61,61-65,65-71,71-85,85-89,89-91\\n-1-1,1-21,21-39,39-41,41-52,52-58,58-72\\n35-68\\n153-180\\n5-17,17-24,24-53,53-81,81-85,85-112,124-148,148-180\\n34-43,64-85,86-102,102-123,205-220,220-221,223-238,267-285,296-329,341-349\\n31-40,52-69,69-87,104-124,150-160,188-209,221-229,286-299,299-328,328-347\\n39-59,59-79,160-179,179-181\\n-3-3,3-10,10-16,16-20,20-62,62-75,75-105\\n-35-35,57-70,70-106,106-140,140-168,172-178\\n-1-1,1-8,8-36,36-52,52-54,54-74,74-106\\n0-4,4-12,12-31,35-55,55-75,75-87,87-95,103-106,106-123,123-133,133-144,144-157,162-180\\n-3-3,3-20,95-113,113-116,116-137,137-139\\n-13-13,107-135\\n24-44,44-52,52-64,64-78,84-102,141-154,154-174,174-176,176-184\\n-3-3,3-26,30-45,80-98,106-131,145-157\\n39-75,165-195\\n20-49,49-73,169-194,286-310\\n52-69,166-188,286-309\\n51-54,57-75,165-189,282-311\\n66-83,83-102,103-121,175-193,206-227,227-241,272-290,312-321,345-363\\n25-43,53-73,172-183,197-212,263-283,289-311,319-337\\n-2-2,2-16,27-42,42-48,65-76,76-84,84-95,100-133,145-157,157-178\\n157-176,176-184\\n14-22,24-33,33-41,41-51,174-186,186-194,275-290,294-309\\n13-39,43-65,173-193,279-298,298-299,304-314\\n7-33,33-35,35-41,53-71,93-109,109-132,132-154\\n45-61,61-78,158-168,168-177,177-180,180-193,272-303\\n39-57,71-89,166-184,184-197,266-277,281-317\\n47-63,66-82,169-177,188-204,287-313\\n55-80,174-196,288-312\\n-1-1,1-5,5-8,8-27,120-163,163-167,167-179,179-181\\n0-18,113-150,150-159,159-170\\n138-162,162-168,168-169,179-203,333-341\\n112-124,126-174,183-192,201-218,228-255\\n186-212,212-223,223-225,227-245\\n216-239,239-259,259-268,268-279,279-291,291-298,298-304,314-329,329-333,333-339,339-342,342-364\\n209-231,231-238,238-268,268-299,306-359\\n231-260,260-268,268-269,313-331,331-333,333-351\\n202-212,212-224,224-271,271-286,292-311,336-361\\n186-206,230-248,248-277,279-287,287-299,299-316,319-329,336-338,341-363\\n-4-27,59-77,113-133\\n-8-11,11-18,18-32,57-77,92-132\\n17-47,47-51,51-52\\n244-285,309-322,322-356\\n249-279,317-335,335-339,339-358\\n8-37,43-57,83-94,94-98,98-102,102-115,118-134\\n302-329,329-331,331-333,333-343\\n-16-16,16-25,25-49,62-118\\n27-45,80-117,117-130,130-136\\n72-108\\n111-123,125-134,134-137,137-150,150-172\\n135-171\\n7-35,35-53,53-57,57-73,73-107\\n141-153,153-159,159-163,163-183,183-194,194-213\\n-17-17,35-38\\n46-75,169-191\\n169-191\\n290-309,309-321\\n290-320\\n46-67,172-197,202-220,289-307\\n44-67,175-195,288-309\\n38-58,58-77\\n44-65,297-322\\n44-66,298-323\\n-43-43,43-66,66-69,72-168\\n-11-11,11-34,34-41,55-81,81-92,92-110,110-112,112-137,137-169,171-189\\n-14-14,20-43,63-73,95-110,110-146,151-178\\n0-29,29-47,50-96,96-98,98-123,123-157,162-173\\n-1-1,1-19,19-24,24-26,94-103,105-109,109-112,112-127,127-145,164-177\\n-16-16\\n132-168,168-192\\n0-6,6-32,32-45,47-52,52-58,58-72,72-76,76-78,78-118,118-134,134-166,166-194\\n0-3,3-32,100-123,123-128,128-138,138-143,143-158,158-165,165-195\\n-4-20,40-58,76-87,106-123,125-142,201-223,226-244,324-334,334-355\\n15-37,37-50,76-93,93-95,95-112,125-143,143-144,148-155,180-198,198-206,206-217,261-279,329-347,348-366\\n-9-15,19-37,76-89,89-93,93-107,113-131,143-154,164-184,184-198,198-200,200-205,205-209,209-221,224-242,321-331,331-335,340-349\\n47-72,169-191\\n47-67,67-78,293-319\\n41-68\\n39-50,164-200\\n43-61,167-195\\n31-69,286-321\\n36-64,282-325\\n37-57,282-290,301-324,324-331\\n49-67,283-297,297-321,321-335\\n18-38,284-319,319-338\\n281-306\\n52-78,156-185\\n56-91,154-183\\n167-191\\n47-77,167-189\\n169-198,276-306\\n170-202,246-266,266-268,268-272,272-304\\n166-174,177-180,180-184,189-200,200-210,281-309\\n43-77\\n54-76,149-179\\n48-72,163-179,182-204,285-306\\n39-83,118-136,156-197,281-318\\n47-77,148-168,168-197,281-317\\n150-169,169-176,176-186,186-206\\n291-314,318-338\\n52-80,82-103,143-154,154-190\\n54-75,154-174,174-193\\n48-72,166-184\\n49-69,169-195,298-308\\n52-73,172-192\\n-1-1,1-17,17-39,39-42,42-50,50-56,63-71,71-91,101-120,120-122,122-142\\n77-114,117-129,129-132,132-139,152-174\\n-1-1,1-13,13-19,19-30,37-51,56-70,77-89,89-92,96-107,107-119,119-138,150-179\\n38-57,57-68,68-82,162-182,290-308\\n38-52,57-66,72-79,79-97,147-157,157-161,166-177,177-187,191-203,260-272,272-275,278-296\\n27-60,60-62,62-64,64-76,76-89,89-95,95-100,100-111,111-131,131-147\\n74-113,113-127,127-140\\n35-53,74-85,88-108,108-126,126-129,129-137,137-150,150-152,152-154\\n12-14,14-15,21-45,164-192\\n56-124\\n88-128\\n70-110\\n51-80,80-100\\n55-125\\n1-19,25-34,54-71,74-81,85-133,138-143,143-157\\n34-58,58-61,61-83,86-94\\n106-126,134-166,166-180\\n91-133\\n35-49,49-52,52-54,54-67,67-69,69-81,81-85,85-108,108-137\\n92-132\\n26-38,38-48,48-56,56-62,62-68,68-79,79-96,96-99,99-103,103-123,134-152\\n77-112\\n77-120\\n28-65\\n31-75,157-203\\n38-49,49-65,75-93,303-324\\n19-40,40-71,303-320\\n42-60,60-77,84-102,152-164,164-168,168-186,189-207,282-297,301-316\\n51-75,154-164,164-188,197-215,275-293,308-326\\n48-76,163-188,193-207,277-295,305-323\\n37-63,63-85,85-90\\n-4-4,4-23,34-43,43-64,64-89,89-91\\n-19-19,19-22,22-84,84-89,89-91\\n-12-12,12-28,34-52,94-121,121-130,130-140\\n37-66,66-68,68-78\\n20-31,33-78,156-177,177-180\\n1-37,162-181\\n5-25,25-44,164-185\\n0-35,47-67,67-75,75-77,92-110,142-162,162-171,171-180\\n-11-9,9-36,36-61,66-82,82-94,153-169\\n-2-2,2-21,46-67,75-97,97-124,124-144,144-177\\n-24-24,127-149,163-197\\n56-74,84-105,105-125,125-138\\n0-11,11-26,35-39,49-90\\n-12-12,48-81,81-90\\n0-9,81-96,100-124,124-150\\n0-4,4-27,27-51,58-70,70-72,72-80,80-84,84-86,86-88,88-135,135-161,161-180\\n5-32,44-62,89-112,118-131,140-148,159-176\\n-2-2,2-5,5-19,19-43,43-83,83-89,89-116,116-125,125-143,143-164,165-180\\n5-28,56-78,78-89\\n-6-6,6-9,14-22,25-33,33-37,42-52,67-89,93-103,103-114,146-168,168-192\\n-1-1,1-21,21-26,26-28,28-58,58-70,73-137,137-159,159-162,162-164,164-178,178-182\\n-20-20,62-74,74-80,80-98,98-134\\n-4-4,7-11,14-38,41-59,96-108,110-114,114-116,118-123,123-156,169-191\\n-28-28\\n-24-24\\n108-137,137-157,157-174,174-179,179-181\\n102-116,116-120,120-126,126-146,146-173\\n110-143,143-169,169-191\\n122-159,159-165,165-176,176-178,178-180\\n11-38,92-122,122-138,144-164\\n0-18,26-46,57-61,63-79,84-113,118-134,134-143,145-152,152-166\\n116-132,132-141,141-152,152-180\\n-10-10,10-19,19-26,26-44,99-126,128-146\\n0-3,3-33,33-55,72-79,79-112,112-153,153-156,156-159,159-161,161-164,164-167,167-172,172-175,175-185\\n-17-17,21-30,30-48,72-88,88-116\\n131-158,158-180\\n88-110,121-176\\n-14-14,22-25,88-110,110-120,120-146\\n208-237,244-277\\n211-250,262-279\\n210-240,257-286,286-289,289-292,292-302\\n212-243,243-260\\n109-141,141-163,195-232\\n109-136,142-165,165-186,193-233\\n153-174,174-181,181-216\\n129-146,146-172,172-175,198-233\\n128-167,196-233\\n144-153,196-231\\n139-169,192-228\\n50-61,64-91,279-299,299-310\\n54-79\\n74-100,148-166\\n177-204,283-303\\n169-202,202-208\\n177-192,192-194,194-200,200-216,270-288,289-307,308-326\\n43-81,156-172,172-202,274-286,286-318\\n49-72,72-92,164-187,187-205,285-319\\n54-72,178-200,200-212,288-316\\n45-69\\n281-301,301-321\\n279-300,300-316\\n283-317\\n289-315\\n33-64,171-179,181-185,185-206,206-213,213-226,226-249,285-303\\n38-66,178-209,227-251\\n46-73,277-290,290-315\\n54-83,147-190,190-202\\n60-78,83-105,158-190\\n57-83,93-107,159-190\\n57-80,113-134,161-189\\n50-62,66-95,113-131,148-164,165-193\\n59-67,69-78,111-122,122-136,136-156,156-163,163-173,173-177,177-192\\n160-170,170-172,172-175,175-177,177-197\\n47-78,168-196,283-313\\n45-65,65-82,169-188,289-319\\n292-313\\n52-75,286-313\\n47-70,288-315\\n55-88,154-179,179-198\\n-31-31,31-61,61-87,87-93\\n-1-1,1-5,5-19,19-39,39-59,59-68,68-79,79-101\\n-19-19,108-142,142-147,147-162,162-165,165-175,175-178,178-180\\n-14-14,123-133,137-151,151-173,173-187\\n107-127,131-152,152-177,177-179,179-181\\n-13-13,13-16,16-73,73-90\\n-18-18,102-153,153-156,156-171,171-189\\n31-61,81-99\\n-11-11\\n-9-9,49-59\\n99-124,127-151,159-177\\n22-42,42-50,50-68,109-121,121-125,132-195\\n111-129,133-164,164-166,166-195\\n37-55,68-94,122-137,137-157,157-178\\n242-253,253-256,256-267,267-269,269-271,271-296,296-326,326-352\\n232-262,264-293,293-313,313-343,343-363\\n15-42,65-80,80-83,83-94,94-95,100-110,350-368\\n0-12,12-15,15-18,18-28,28-52,76-94,94-96,96-114\\n-19-45,54-60,60-82,82-125,125-130,130-161\\n-25-1,1-51,60-77,85-134,134-150,150-155\\n-4-17,106-140,225-239,239-243,243-257\\n5-21,107-134,230-233,340-365\\n265-284,284-293,293-297,297-310,310-330\\n265-283,283-293,299-312,312-316,316-325,325-341\\n209-237,237-258,258-278\\n209-226,226-233,233-255\\n15-44,44-71,80-113,113-126,344-375\\n14-19,19-22,22-26,26-45,45-65,80-106,106-122,344-374\\n34-40,40-50,50-66,70-88,88-101,136-186\\n-2-3,3-26,36-68,68-71,71-73,76-79,79-83,83-102,139-178\\n234-254\\n232-253\\n2-17,271-293,293-297,297-322,324-341,341-362\\n3-7,7-17,272-318,323-339,339-361\\n0-23,110-137,137-160\\n20-39,50-76,124-146,167-193\\n89-123,123-142\\n76-89,89-119,242-263\\n80-98,111-115,115-120,120-125,125-140,140-167\\n1-9,230-257,257-275,297-315\\n229-246,246-260,339-355,355-376\\n234-257,257-267,297-314,314-318,318-338,338-348\\n6-17,17-25,25-36,98-119,119-135\\n41-76,164-196\\n23-33,33-42,42-43,55-65,75-93,166-180\\n38-66,165-180\\n26-65,167-193\\n43-62,62-80,160-200\\n39-70\\n54-84\\n53-84\\n46-82,152-186,191-197,197-208\\n50-74,154-189\\n35-57,292-312,323-341\\n27-57,278-313,317-342\\n247-255,257-266,266-277,285-311\\n178-186,252-270,279-292,292-295,295-310\\n164-189,191-206,280-294,294-313\\n44-55,55-72,160-177,179-196,290-313\\n30-48,50-68,149-163,167-192,280-312\\n3-12,46-71\\n286-319\\n289-311\\n44-86,92-109,150-187\\n44-80,80-95,95-109,114-150,150-160,160-162,162-187\\n171-179,189-196,223-235,278-313\\n174-187,193-206,280-297,297-299,299-318\\n278-297\\n177-201,286-306\\n44-54,54-83,161-180\\n50-74,160-189\\n50-76,157-182\\n35-53,58-76,180-197,286-313\\n163-182,182-188,289-316\\n168-196\\n147-165,171-186,186-190,190-203,217-235\\n53-73,82-91,287-311\\n49-71,71-81,135-148,148-171,171-181,285-297,297-299,299-303,303-320\\n43-68,281-320\\n17-34,34-36,42-69,289-313,316-326,326-343\\n144-167,167-189,189-220,221-226\\n34-48,48-70,286-319\\n40-72,166-194,286-306,306-322\\n287-313\\n284-313\\n160-191,290-315\\n280-313\\n275-309\\n42-72\\n48-72\\n45-72,176-195,195-202,259-268,275-303\\n45-66,173-201,278-307\\n46-63,172-189,296-305,308-317,317-319,319-328,328-329\\n31-39,44-49,49-66,163-186,303-320\\n43-71,167-197,289-313\\n44-70,167-190,287-305,305-321\\n165-183,183-199\\n-13-13,15-33,42-52,52-56,61-71,83-101,111-130,130-151,170-190\\n43-79,162-198\\n161-199\\n133-146,146-150,150-180\\n35-55,55-61,61-67,67-82,164-177\\n47-86,91-98,161-175,175-185\\n38-56,158-202\\n-21-21,101-119,119-129\\n61-81,85-101,149-182\\n1-11,11-40,40-47,47-49,49-66,74-82,93-109,154-174\\n16-30,43-48,48-59,153-171,263-281,287-295,313-334,338-353\\n25-35,271-289,312-334\\n291-310\\n291-310\\n17-26,53-100,120-130,133-149,149-153,153-156,156-162,162-169,169-178,178-182\\n15-33,42-63,163-184,278-304\\n38-47,47-64,162-180,180-193,193-196,200-212,282-300\\n48-66,156-186,268-302\\n0-9,9-45,45-52,52-65,65-85,85-89,89-91\\n-14-14,14-29,29-53,53-57,57-77,77-103\\n-1-20,32-49,49-54,80-93,98-127,128-138,149-159,159-162,166-174\\n-5-13,13-14,19-29,29-43,45-52,104-129,129-148\\n8-27,57-79,79-87,87-90,90-97,97-121,121-138,138-188\\n19-33,45-67,67-74,74-95,95-118,118-124,124-130,130-139,139-190\\n32-72,72-98,127-143,143-153,160-200\\n44-59,59-70,170-200,288-306\\n45-73,86-104,172-196,278-296\\n0-29,31-42,42-52,52-62,78-102\\n-14-14,17-34,102-115,119-135,139-145,145-178\\n0-90\\n0-18,34-56,96-122,122-153,153-178\\n-13-13,13-35,35-63,63-73,74-88\\n78-102\\n7-46,46-75,75-83,83-92,92-107,123-187\\n23-44,44-63,63-89,89-105,123-203\\n-3-22,22-23,28-38,113-132,140-158,199-211,211-214,218-230,246-264,342-356\\n12-29,96-109,109-112,112-146,196-206,219-238,346-372\\n-2-8,8-10,10-13,13-20,20-36,130-140,146-178\\n5-18,18-26,26-37,124-138,138-152,152-161,161-174,174-177,177-185\\n-5-5,5-31,38-56,60-75,75-89,89-90,95-105,162-179\\n0-33,57-75,96-114,114-126\\n-13-13,80-101,101-102,106-126,126-142,142-161\\n48-62,62-65,65-69,69-72,72-75,75-82,82-96,163-180\\n42-54,54-62,62-74,79-87,152-208\\n52-72,147-165,165-187,187-190,190-194,194-217\\n35-53,57-74,145-163,169-197,197-208,260-278\\n245-263,283-315,331-349\\n183-207\\n-31-31,35-81\\n-1-1,1-4,4-6,6-28,28-50,70-110\\n-23-23,23-80,80-100\\n-22-8,8-14,14-28,28-30,30-48,48-57,57-59,59-77,79-97,97-103,107-143,143-158\\n47-67,70-74,87-102,102-104,107-143,162-223\\n-2-2,2-43,43-70,70-90\\n-11-11,13-35,38-57,57-80\\n-11-11,15-39,40-71,71-79,79-80,82-92,92-95,124-146,152-164,164-196\\n-12-12,27-45,45-59,79-89,97-110,110-144,144-163,171-189\\n27-42,46-66,81-99,105-116,116-124,124-136,136-137,161-179\\n53-75,177-201,294-319\\n51-79,166-202,296-318\\n45-70,168-200,285-313\\n44-71,166-191,287-311\\n10-20,20-24,24-26,26-49,69-84,88-103,147-165\\n15-47,48-57,57-58,84-103,168-186\\n122-151,151-168,168-192\\n151-162,162-198\\n108-128,128-146\\n-33-33,81-110,110-136,136-152,152-164,164-172,172-180\\n-2-2,2-9,9-26,124-138,138-169,174-186\\n0-25,103-142,142-151,151-154,154-172\\n-13-22,124-147,147-182,182-187,187-203,203-224,310-327,327-347\\n0-4,4-6,6-9,9-11,11-27,73-91,94-121,121-142,142-164,164-169,169-178,178-207,231-255,281-292,314-327,327-332,332-347,347-360\\n239-262,273-295,313-323,323-345\\n11-16,16-31,59-89,98-124,124-144,144-167,167-172,172-174,174-189,238-250,250-258,261-279,328-371\\n8-11,11-30,135-154,154-168,169-174,174-180,234-256,325-368\\n-7-1,1-3,20-31,82-100,177-201,208-232,232-251,259-267,301-319,321-338,342-353\\n16-24,35-49,109-123,123-141,165-180,184-203,203-232,245-262,263-281,299-317,345-366\\n170-191\\n172-205\\n43-60,60-76,169-182,188-201,299-319\\n58-85,140-158,161-184\\n-2-2,2-12,12-14,14-34,43-69\\n164-196\\n-17-17,34-52,156-204\\n46-86,86-90\\n89-134\\n23-42\\n0-18,18-38,38-42,42-45,45-57,57-82,82-86,86-94\\n-18-18,109-138\\n41-79,160-200\\n-13-13,13-40,40-59,59-73,76-104\\n-15-15,107-127,130-143,143-146,146-157,157-176\\n-18-18,62-78,78-81,81-99\\n-24-24,68-93,93-104,110-122,128-145\\n-1-1,1-23,91-101\\n-21-21,45-66,71-80\\n43-52,52-60,60-78,78-98,147-165,165-195\\n52-62,163-171,173-181,181-186,280-310\\n2-24,24-30,32-61\\n-16-16,16-17,89-99,99-101,101-106,106-119,119-121,121-137\\n-5-5,5-8,8-50,50-69,69-111\\n-15-15,103-134,152-164,164-179\\n-7-7,10-48,52-77,84-89,89-91\\n-1-3,3-12,12-24,24-31,31-36,36-44,44-56,56-61,61-93,97-117,129-144,144-159,159-164,164-172,172-179\\n-1-16,16-17,19-31,36-44,44-56,56-63,63-83,83-90,128-151\\n-15-15,28-67,81-98,142-175,175-179,179-181\\n8-20,20-31,33-40,40-43,43-53,61-76,76-78,78-84,84-95,159-201\\n41-59,71-89,114-132,139-171\\n-1-1,1-25,25-42\\n9-27,34-55,55-61,61-77\\n-5-5,5-15,103-134,134-148\\n-1-1,1-6,6-9,9-18,18-63,63-71,71-73,73-86,86-94\\n162-198\\n4-24,24-43,48-70\\n26-55\\n-6-6,6-8,8-26,26-51,51-81,81-99\\n2-14,14-20,20-46,46-48,56-59,62-90\\n-4-4,72-108\\n-14-14,14-41,55-67,69-87,95-107,107-112,112-118,118-131,131-151,151-173,173-187\\n0-3,3-16,16-35,35-43,49-66,133-170,170-177,177-183\\n8-25,25-48\\n155-180\\n156-176,176-191\\n159-190\\n-2-2,2-12,12-27,27-32,32-38,38-40,40-57,57-80,80-85,85-87,87-90\\n-12-12,74-106\\n-3-3,3-22,32-56,56-60,60-62,62-65,65-70,70-90\\n2-17,19-37,48-69,103-130,171-189\\n-1-1,1-11,11-27,100-150\\n38-55,55-72,162-177,177-179,179-181\\n171-189\\n0-17,107-135\\n-10-10,12-41,73-84,84-101,105-121,121-123,123-141,142-145,145-151,170-190\\n46-73,195-215,302-320\\n25-50,52-68,169-180,180-188,188-199,208-228,261-279,279-280,284-293,293-296,296-304,304-327,328-337\\n10-34,38-46,46-54,54-59,59-62,66-71,71-79,79-90,134-148,152-168,172-179,185-195,199-214,232-249,249-268,269-284,284-315,328-346\\n53-69,76-104\\n-11-11,69-83,83-87,87-93\\n-12-12,12-14,14-23,23-25,37-52,52-54,58-70,73-90\\n0-12,12-23,35-68,68-72,72-86,86-94\\n-8-4,11-14,16-38,38-59,59-64,64-81,81-102,102-137,137-156\\n3-14,14-24,24-28,28-35,35-44,44-58,58-64,64-68,68-78,78-97,97-116,116-122,122-147,147-157,157-169,169-171,171-173,173-177,177-183\\n-1-1,1-8,8-14,14-19,19-39\\n0-2,2-20,20-22,22-39,45-76,76-80,80-100\\n-12-12,22-41,44-62,62-74,74-89,89-91\\n20-38,56-76,76-89,89-108,125-143\\n-13-13,13-21,21-46,66-74,84-96\\n171-189\\n-13-13,17-35,94-104,112-129,129-148,168-192\\n-1-1,1-27,33-66,80-100\\n-15-15,18-36,36-58,81-107,107-138,138-164\\n6-24,43-61,86-99,105-119,119-130,130-153,168-192\\n3-25,69-89,92-108,116-141,150-172\\n-21-21\\n-13-13,13-33\\n-28-28\\n144-157,157-203\\n-1-1,1-33\\n-19-19\\n-20-20\\n161-199\\n-2-2,2-26,79-105,105-106,112-116,121-130,132-149,156-174\\n2-17,23-44,44-96,96-142,142-144,144-148,148-162,171-189\\n42-59,59-62,62-64,64-68,68-90,90-107\\n23-41,46-66,66-79,79-94,108-126\\n-11-11,78-100,167-193\\n-5-5,5-8,10-33,33-62,62-70,70-83,83-97,97-138,138-174\\n72-115,115-121,121-134,134-146\\n1-22,22-44,51-69,100-112,115-118,118-133\\n9-26,26-38,50-71,71-88,89-91\\n4-21,21-26,29-32,32-65\\n68-88,88-92\\n42-90,109-130\\n56-81\\n42-56,56-94,97-101\\n50-71,71-89,89-91,91-93,93-107,120-140\\n-7-18,18-31,31-37,37-54,54-74,206-218,224-228,340-351,351-353\\n-2-26,26-28,33-37,37-40,40-42,147-167,206-225,225-233,233-245,339-352,352-358\\n-16-16\\n114-132,132-138,138-149\\n1-21,21-46,127-174\\n33-51,67-85,135-164,164-180\\n161-199\\n223-250,252-257\\n222-246\\n287-306,306-334,334-354\\n254-272,280-305,305-309,309-338,344-358\\n7-33,89-102,108-115,115-125,136-152,155-165,168-183,183-203,241-259,343-361\\n109-127,144-166,166-199,199-218,225-243,345-363\\n93-116\\n92-114\\n61-84,84-100\\n-1-1,1-6,6-16,16-31,31-33,33-36,36-48,48-54,74-106\\n-2-2,2-14,14-17,17-22,22-42,47-70,76-104\\n-1-1,1-21,31-50,82-95,95-135,135-147,171-189\\n115-159,166-194\\n-1-1,1-12,12-14,19-29,76-94,107-136,143-156,169-191\\n-1-1,1-5,5-19,19-21,21-26,26-39,39-61,69-98,98-122,122-125,125-127,127-142,142-163,165-195\\n0-3,3-8,8-24,94-111,111-115,115-117,117-119,119-147\\n45-79,167-196,285-315\\n51-79,173-201,287-315\\n43-72\\n51-72,72-84,174-201,281-300,300-325\\n185-213\\n181-203,265-283\\n43-67,291-305,305-322\\n41-69,289-306,306-317,317-335\\n63-81,138-146,169-191\\n50-74,163-182,183-213,287-329\\n50-69,178-195,296-321\\n184-202,278-298\\n37-69,295-322,341-360\\n37-66,294-319,322-341\\n-1-1,1-41,41-46,46-80,80-89,89-91\\n-3-3,3-30,77-94,94-106,108-128,128-145,145-150,150-167\\n130-148,148-180\\n0-3,3-5,5-33,33-80,80-82,82-84,84-90\\n2-17,105-115,115-137,137-145\\n-12-12\\n-2-10,109-129,129-137,144-171,171-178\\n5-22,22-25,25-28,28-39,44-62,113-131,131-149,149-156,156-173,173-176,176-185\\n290-318,318-338,338-353\\n275-283,310-345\\n-7-31,31-39,39-41,41-65,65-80,80-97,97-122,122-124,124-126,126-136,136-146,146-161,161-165,165-170,170-173\\n-8-15,15-17,17-19,19-36,36-39,39-52,52-60,60-78,78-86,86-100,100-108,108-134,134-136,136-156,156-172\\n284-328,333-352\\n285-325,331-348\\n-1-1,1-3,3-16,16-25,25-46\\n-3-19,99-117,117-127,212-224,224-230,230-234,234-244,244-246,250-263,263-275\\n39-73,112-129,166-194\\n53-76,165-195\\n45-59,64-78,144-160,163-183\\n32-50,55-80,80-83,83-87,87-97,121-139,159-183\\n35-59,296-316\\n33-50,50-58,58-61,61-65,65-76,89-107,158-178,282-308\\n31-46,50-58,165-180,180-201,280-298,298-305,305-323\\n289-317\\n289-308\\n49-67,69-85,182-200,277-295,295-315\\n48-69,173-198,285-316\\n46-54,56-65,65-75,137-155,161-186,186-199,300-318\\n33-43,43-72,72-78,84-97,134-146,146-149,153-161,161-190,288-306\\n-1-1,1-19,37-78,105-130,160-176,176-184\\n154-180\\n53-83\\n-2-2,2-7,7-13,13-27,41-70,70-79,79-81,81-84,104-120,120-137,156-177,177-179,179-181\\n130-153,153-172,172-178,178-182\\n-13-13,15-30,35-73,73-98,99-107,107-119,164-196\\n-12-12,12-36,42-65,72-85,85-88,90-104,104-112,112-157,157-179\\n23-34,48-82,151-168,168-192\\n6-24,24-26,26-41\\n116-125,127-135,140-163,163-173,173-179,179-181\\n0-4,4-12,19-57,57-89\\n7-27,27-35,41-73,73-94,117-148\\n29-67,151-180\\n7-25,92-127,150-168\\n25-39,39-42,42-47,47-71,71-84,84-101,160-200\\n0-10,10-24,24-30,30-40,40-42,42-63,63-72,72-89,89-91\\n-20-20,23-41,41-50,50-68,72-85,85-96,102-131,131-135,135-141,141-147,147-174,174-186\\n-5-5,5-8,8-27,43-73\\n29-47,47-80,153-207\\n-13-13,13-35,35-37,37-86,86-90\\n48-73,167-193\\n135-178,178-182\\n0-5,5-21,21-26,26-35,35-69\\n-3-3,3-16,16-53\\n1-19,50-72,100-108,119-127,127-135,135-146,164-177,177-183\\n14-25,27-32,32-45,47-65,76-90,90-106,119-139,139-157\\n161-183\\n161-182\\n-7-2,47-67,297-315\\n4-31,44-52,65-89,89-91\\n0-10,21-67\\n44-59,59-78,165-180\\n158-188,256-274\\n158-188,261-279\\n0-22,30-77,80-100\\n41-81,147-171,171-189\\n0-24,84-102,109-134,134-151,171-189\\n3-8,13-20,33-47,51-70,70-106,125-142,142-148,148-163,163-171,171-172,178-182\\n127-158,159-179,179-181\\n171-189\\n-5-6,6-37,39-45,47-66,71-97,104-130,130-159,159-172\\n-10-14,14-18,18-34,34-38,38-56,61-88,135-157,157-170\\n7-28,28-40,40-48,108-112,121-142,142-149,149-158,158-176\\n4-37,37-41,41-54,140-161,166-184\\n-12-12,25-44,44-46,46-66,71-82,145-156\\n56-82,145-163,171-189,285-301,301-323\\n39-56,56-72,170-189,283-322\\n4-14,14-18,23-27,27-51,58-76,90-108,125-156,156-176\\n-2-2,2-8,18-29,29-40,40-42,42-60,65-70,73-92,104-108,131-173,176-184\\n0-27,27-61,61-90\\n17-50,52-71,71-79,79-89,89-105,136-170,170-173,173-187\\n-4-4,4-18,18-26,47-76,79-97,111-127,127-136,139-153,166-194\\n23-54,54-64,71-86,86-89,89-91\\n-2-2,2-14,14-16,16-40,40-46,78-97,102-120,120-135,139-166\\n37-55,62-80,156-175\\n2-12,116-135,158-176,214-228,228-231,231-236,236-253,343-353,353-357\\n-6-12,102-120,156-167,167-175,175-186,214-225,225-228,228-235,235-253,279-297\\n12-23,23-43,43-59,65-76,76-84,84-90,90-112,112-119,132-142,144-166,166-177\\n25-54,67-92,150-173\\n23-50,50-69,78-98,123-131,143-164,166-194\\n29-47,71-89,116-134,144-165,168-184,193-211,215-233,246-270,272-290,327-335\\n18-38,40-58,324-342\\n17-37,40-58\\n22-34,37-40,40-54,54-74,74-96,124-142,145-163\\n10-35,49-67,88-110,114-128,133-151\\n-10-10,26-44,46-57,57-77,83-101,138-156,175-185\\n38-56,161-179,198-216,279-301,305-323\\n80-106,144-157,157-161,161-199\\n-7-7,7-21,21-37,37-41,41-64,65-101,101-122,125-136,136-138,138-140,140-163,163-179,179-181\\n-1-1,1-21,21-44,81-118,131-147,147-152,152-167\\n-9-9,9-41,83-104,104-116,116-124,124-136,136-158,158-163\\n7-23,28-46,127-145,224-234,305-318,318-321,321-347,347-355,355-364\\n80-91,91-99,99-126,140-158,199-217,219-227,306-318,318-321,325-332,343-363\\n-15-15,51-73\\n0-27,27-43,43-47,47-71,71-73,73-89,89-91\\n43-67,71-94,165-195\\n-11-11,11-56,56-77,77-84,84-96\\n-5-5,5-25,102-119,119-151,151-152,164-178,178-182\\n-2-17,17-37,37-44,44-56,56-80,80-90,90-92,92-94,94-96,96-100,100-110,110-116,116-125,125-133,133-147,147-152,152-168,168-172,172-174,174-178\\n-27-20,20-32,32-47,47-68,77-80,80-102,102-116,116-123,125-150\\n-14-14,21-39,63-81,86-108\\n-10-18,23-37,88-106\\n42-79,79-99,168-192\\n37-69,160-178,178-203,278-298,298-319\\n36-62,64-81,157-168,168-188,188-206,268-287,290-307,307-317\\n5-26,138-159,163-178,178-182\\n23-41,43-68,71-82,89-91\\n-1-1,1-31,31-64,64-66,66-71,71-88,88-90\\n0-5,5-31,31-76,76-104\\n67-113\\n118-136,154-179,179-181\\n-8-13,42-53,53-59,59-67,67-73,73-80,80-93,93-109,109-123,123-131,131-135,135-139,139-142,142-162,162-165,165-172\\n-5-6,11-20,50-85,89-103,103-128,135-154,154-171\\n11-14,14-24,24-29,29-31,31-54,54-77,96-132,132-135,135-152,155-191\\n3-33,33-54,54-74,74-89,89-91,91-118,118-147,157-183\\n244-264,264-274,274-280,280-284,284-290,290-294,294-308,327-345\\n247-260,260-273,273-280,280-289,289-308,335-353\\n290-315\\n293-313\\n-9-9,13-38,38-78,78-102\\n-11-11,11-15,15-28,28-39,39-48,48-57,57-89,89-91\\n113-129,129-153\\n0-18,18-20,20-23,23-32,32-35,35-58,58-82,84-96\\n-2-2,2-19,106-133\\n-12-12,12-18,18-24,24-49,81-111,111-126,126-128,128-139,139-143,143-145,145-164\\n-1-1,1-3,3-6,6-14,14-28,32-44,44-52,52-53,75-105\\n-1-1,1-20,21-24,24-29,29-88,88-92\\n-3-7,9-13,13-15,29-42,54-80,87-99,99-110,158-173\\n-1-32,82-104,104-108,108-122,157-175\\n-11-11,13-32,56-74,82-100,115-133,149-167\\n-10-10,10-32,32-48,68-84,84-89,89-98,98-118,118-122,122-138,138-143,143-148,148-157,168-192\\n-9-9,9-12,12-41,41-44,44-52,52-78,78-88,88-92\\n8-20,20-23,25-45,54-72,97-105,116-128,130-144,148-163,164-182\\n0-16,16-23,23-28,28-29,48-66,70-88,93-115,143-173\\n-11-11,11-35,35-54,54-81,82-98\\n17-28,45-63,63-64,69-79\\n-8-8,8-45,45-61,61-81,81-105,105-110,110-122,133-167,167-173,173-187\\n33-54,70-88,154-172\\n17-30,34-55,55-69,138-153,157-165,168-186,193-211,239-249,314-332,347-365\\n6-18,30-48,67-92,92-104,131-145,150-164,169-187,233-248,248-254,271-289,308-330,347-355\\n15-35,77-99,188-200,200-203,207-212,212-220,220-231,250-268,302-318,318-339\\n5-23,120-143,178-196,208-225,227-236,236-240,245-250,256-260,265-275,313-325,325-328,332-344\\n22-43,49-67,75-93,93-105,128-146,148-166,170-190\\n-5-5,5-15,28-47,47-52,52-67,67-78,78-83,83-103,106-114,140-154,154-157,157-159,159-179,179-181\\n-11-11,11-45,81-96,96-100,100-116,116-138,138-152\\n0-20,23-58,58-63,63-77,77-95,95-118,118-122,122-124,124-133,133-145,145-148,148-153,153-157,157-162,162-178,178-182\\n-2-2,2-28,92-103,103-107,107-125,125-145,145-147,176-184\\n-5-5,5-15,15-29,41-59,65-75,75-92,99-118,118-125,125-130,130-152\\n9-27,41-59,94-105,105-113,113-118,122-148\\n5-25,25-33,35-40,40-49,54-72,135-147,163-197\\n-3-3,3-5,5-28,95-128,128-146\\n14-38,58-76,86-112,127-156,156-162,169-171,173-187\\n32-45,45-47,47-79,165-176,176-184\\n-12-12,16-31,100-112,114-118,118-126,126-134,134-145\\n49-74,171-193,275-286,286-310\\n27-38,45-78,164-186,186-203,289-320\\n-7-7,7-11,11-39,42-58,58-70,83-95,106-108,108-125,125-151\\n-32-32,32-66,66-75,75-96,103-171\\n72-90,92-110,129-133,133-157,163-178\\n144-153,157-176,176-178,178-180\\n-23-23,23-25,25-55,105-124,124-132,132-135,135-144,144-147\\n110-122,122-128,128-131,131-148,148-162,162-171,173-201,310-334,334-354,354-383\\n4-17,126-143,143-145,145-168,170-201,225-233,249-267,301-319,319-335,335-364\\n232-250,263-283,294-303,327-357\\n263-281,285-297,315-333,333-336,336-356\\n1-3,3-5,5-15,15-21,21-36,36-41,41-43,43-51,51-56,56-69,81-100,123-143,143-148,148-157,157-174,218-222,222-249,270-290,306-322,322-355,355-361\\n6-10,10-13,13-26,51-77,113-134,134-139,139-157,184-199,199-202,202-228,254-278,278-281,288-303,319-340,340-345,345-355,355-366\\n-7-7,7-16,109-126,126-139,139-145,145-155,155-158,158-180\\n135-146,146-168,168-176,176-180\\n156-182,198-234\\n275-295,295-315,315-324,324-347,347-357\\n-8-8,14-29,29-37,37-42,131-149,149-158,158-162,162-165,165-178,178-182\\n-12-12,12-14,14-35,35-46,46-67,67-71,71-84,84-90,90-157,161-175,175-180\\n54-62,76-103,103-107,107-120,120-142\\n-2-2,2-15,15-17,17-38,65-86,86-99,99-111,111-120,131-153,153-171\\n0-18,29-44,115-128,128-141,141-156,167-193\\n55-78,78-114,131-149\\n56-76,76-116\\n56-71,71-103,108-122\\n15-24,40-58,58-68,68-70,70-89\\n54-84,84-89,89-91\\n41-59,59-64,70-110\\n55-106,111-128\\n109-127,127-129,129-133,133-160,160-163\\n43-59,59-61,61-83\\n52-90\\n51-106,111-118,118-130\\n43-65\\n50-105\\n71-89,89-91,91-111,176-184\\n48-66,66-94\\n60-85,85-87,87-90\\n59-74,74-106\\n67-117\\n52-89,89-91\\n55-125\\n0-18,18-34,81-135\\n45-84,84-87,87-93\\n105-127,133-180\\n19-46\\n23-41\\n16-34,52-66,66-68,71-85,85-95\\n1-7,7-27,27-33,33-48,48-70,70-90\\n61-78,78-102\\n138-159,159-161,161-178,178-182\\n4-26,26-74,74-90\\n1-10,10-14,19-24,125-152,152-170\\n308-348\\n-8-16,244-261,261-271,283-305,305-318,318-320,320-324,324-326,326-330,330-348\\n50-76,78-88,159-169\\n34-50,52-80,159-178,182-200,290-301,301-319\\n138-153,153-165,165-173,173-198\\n46-64,64-81,86-108,116-132,132-138,138-169\\n43-61,74-88,88-110,115-124,145-169\\n-9-20,20-60,111-139,139-151,151-171\\n-6-35,35-40,40-65,84-104,119-129,129-132,132-139,141-146,151-172\\n-4-18,22-46,161-176\\n0-18,24-42,54-72,79-88,90-108\\n5-19,19-29,29-61,81-85,148-159,159-164,164-166,166-169,169-184\\n-7-23,23-28,28-42,42-68,113-121,123-130,130-144,144-148,148-173\\n0-42,42-74,74-77,77-104,104-140,140-143,143-160,160-180\\n1-8,26-38,38-45,45-81,81-99\\n129-163,163-180\\n102-125,133-160,160-200\\n80-102,102-110,110-125,125-138,138-160\\n147-165,165-172,172-188\\n-15-15,15-44,97-112,112-137\\n-7-7,14-42,42-52,52-73,73-92,92-106,106-110,110-112,112-133,133-154,154-173,173-178,178-182\\n143-164,164-168,168-174,174-195,195-221\\n146-163,163-165,165-173,173-194,194-223\\n39-56,56-60,60-84,148-160,160-163,163-180\\n25-40,40-63,63-66,66-85,164-177,177-183\\n48-60,60-77,163-191,288-308\\n46-68,169-199,272-288,288-307\\n38-55,55-67,157-169,169-172,174-198,289-311\\n166-185\\n166-185\\n46-68,170-190,288-311\\n47-70,70-85,169-190,285-308\\n-1-1,1-5,5-20,162-198\\n-1-1,1-19,19-27,27-42,42-62,72-92,127-149,152-172,172-188\\n18-33,37-46,53-60,60-65,65-68,72-93,117-137,155-179,179-181\\n284-310\\n298-317\\n177-207,265-283\\n49-84,289-299,299-314\\n45-72,72-81,81-91,165-186,186-201,290-310\\n38-57,57-89,280-299,299-319\\n34-55,55-78,78-91,165-194,295-313\\n50-72,166-194\\n128-149,157-176\\n148-178\\n-14-14,46-68,68-90,90-108\\n52-64,64-80,80-84,84-107\\n52-80,170-197,294-320\\n52-77,171-196,293-319\\n-16-12,12-41\\n-7-21,59-83,155-169\\n157-180\\n-15-15,15-23,23-30,30-50,57-87\\n-5-12,12-29,29-33,33-57,64-94,94-116,118-141,141-148,148-155,159-175\\n-5-42,42-68,74-91,93-99,99-107,109-124,124-137,137-157,157-175\\n140-149,152-154,154-158,162-198\\n140-169,170-175,175-179,179-181\\n-3-3,3-7,7-14,14-45\\n-17-26,26-49,49-70,96-112,112-161\\n1-7,7-42,42-69,74-92,100-118,118-155,155-159,159-181\\n-4-18,23-41,106-117,117-126,126-136\\n3-29,50-67,67-82,112-137,137-151\\n-3-24,50-75,119-140\\n263-284,292-314,314-328,331-349\\n263-284,284-288,288-314,314-319,319-328,328-346\\n25-45\\n43-78,128-151\\n0-4,4-15,46-81,127-142,142-155,155-160,160-166,166-173,173-177,177-180\\n6-24\\n0-13,13-29,38-57,57-73,73-78,93-115,115-123,123-138,138-140,140-169,169-191\\n42-79,151-167,167-193\\n-22-22,22-35,35-60,60-96,101-146,146-171,171-179,179-181\\n23-42,42-60,60-81,157-177,177-183\\n3-13,13-39,51-62,69-71,76-98,106-132,145-167\\n-18-18\\n152-168,168-170,170-190\\n0-27\\n-1-1,1-38\\n-24-24\\n-15-4,4-7,7-14,14-16,16-32,47-65,98-106,174-192\\n46-67\\n-12-12,31-44,44-71\\n0-31,79-101\\n30-48,172-190,280-306,306-323\\n264-293,299-315,320-338\\n37-48,48-66,288-319\\n281-316,316-332\\n52-76\\n-2-2,2-25,25-33,33-43\\n-3-3,3-16,93-111,111-116,116-120,120-138\\n-1-1,1-4,4-21,21-40,40-50,50-69\\n116-140,140-142,142-163\\n163-180\\n-9-9,15-33,87-110,110-144\\n56-90\\n-23-23,23-54\\n-13-13,13-15,15-36\\n0-15,15-67,67-93,115-161,167-173,173-177,177-180\\n6-25,25-50,50-54,54-65,65-83,95-128,128-146,146-148,148-164,169-191\\n0-18,18-47,47-65,65-71,71-89,89-91\\n-6-6,6-35,35-61\\n88-113\\n86-113\\n83-112\\n83-104\\n85-106\\n302-326\\n82-109,301-319\\n261-280,306-334\\n183-208\\n54-77,105-133\\n0-2,2-4,4-27,31-48,48-69,69-111\\n52-67,71-87,87-93\\n125-142,142-147,147-150,152-158,158-180\\n-14-14,50-64,64-75,75-105\\n-4-10,10-14,14-18,18-62\\n16-42,42-68\\n27-51,51-70\\n26-62\\n3-17,22-32,32-37,37-42,42-75\\n47-78\\n32-44,44-76\\n-13-13,158-180\\n0-25,25-36,36-55,55-72,75-87,87-98,98-107,107-136,136-180\\n-2-2,2-16,86-111,130-150,153-180\\n-9-11,13-30,30-46,176-197,292-311,311-315,318-351\\n25-45,49-57,144-162,176-194,201-219,224-244,262-280,305-317,341-361\\n2-14,14-22,22-33,63-81,145-155,155-159,164-174,192-210,237-255,305-323,332-347,347-350,350-353,353-354,356-362\\n-3-10,10-17,29-33,33-37,42-52,132-150,178-196,202-220,338-357\\n48-80\\n124-151,155-160\\n2-16,18-35,82-115,125-144,149-164,164-170,170-178\\n27-57,170-181,181-189,189-200\\n-3-10,13-31,33-49,53-64,64-72,72-83,197-222,320-339,339-351\\n17-45,45-50,50-63\\n133-150,150-157,157-177,177-179,179-181\\n52-74,74-85,85-95\\n-16-16,21-30,30-49,124-141,141-152,152-164,164-177\\n8-39,61-86,86-94\\n80-134\\n103-133,133-151,151-166,166-194\\n88-106,106-127,141-159,164-177',rsb),o);g=(b&1)==0?null:(p=Erb.v7('24,45,24,8\\n1,90,5,5\\n99,1\\n51,49\\n23,9,64,3\\n58,42\\n7,9,3,5,6,4,5,62\\n91,2,4,4\\n74,5,20\\n96,1,2,2\\n80,3,1,16\\n72,21,7\\n86,4,2,6,2\\n19,30,37,15\\n60,11,4,16,2,2,1,3,1,1\\n80,20,1\\n93,7\\n69,31\\n46,34,5,11,3\\n100\\n3,50,5,21,8,14\\n68,3,12,2,7,7\\n12,3,9,5,2,3,66\\n100\\n17,12,11,16,1,43\\n5,95\\n33,67\\n5,31,4,60\\n100\\n19,25,56\\n10,7,1,82\\n45,55,1\\n1,8,3,31,58\\n1,28,71\\n64,3,30,4\\n46,1,1,53\\n71,29,1\\n21,35,44\\n9,91\\n2,62,36\\n100\\n100\\n7,55,38\\n100\\n19,70,7,1,4\\n19,19,62\\n36,3,17,6,39\\n68,7,24\\n12,8,4,4,47,25\\n26,73\\n7,5,15,23,16,3,30\\n1,13,40,15,2,29\\n18,5,8,26,35,8\\n50,28,22\\n48,37,15\\n1,27,2,1,2,3,19,2,6,5,32\\n7,14,9,12,2,1,2,3,5,10,16,5,11\\n1,1,7,25,1,1,38,1,1,24\\n25,23,1,10,7,18,15,1\\n17,19,64\\n12,13,18,9,48\\n30,23,22,24\\n10,7,8,9,20,25,15,5\\n17,8,10,14,13,11,24,2,1\\n100\\n8,82,10\\n100\\n34,13,30,17,1,3,2\\n32,18,37,1,12\\n100\\n43,6,17,25,2,2,5\\n39,61\\n31,35,20,13\\n55,45\\n54,46\\n31,1,30,6,10,16,4,2\\n5,8,36,2,2,1,4,10,29,3\\n100\\n16,11,39,15,6,13\\n28,35,36,1\\n11,26,11,50,1,1\\n45,6,5,2,28,12,1\\n100\\n1,34,33,32\\n24,7,21,48\\n41,11,10,2,2,1,33\\n70,3,28\\n1,98\\n12,87,1\\n1,76,13,10\\n48,51\\n34,38,28\\n61,1,38\\n100\\n43,27,21,9\\n1,1,9,1,89\\n1,41,32,3,20,2\\n33,6,24,27,6,4\\n10,3,6,14,17,19,18,13\\n1,12,16,7,1,6,15,7,6,10,12,1,6\\n45,55\\n3,3,1,10,31,52\\n55,45\\n72,28\\n43,26,32\\n23,13,2,2,2,2,2,53\\n41,3,1,3,1,1,38,1,10\\n100\\n100\\n92,7,1\\n59,12,9,20\\n100\\n100\\n18,11,49,9,7,5,1\\n12,11,18,58\\n4,5,92\\n1,99\\n9,5,85,1\\n73,13,14\\n1,7,3,4,9,7,7,4,2,11,1,2,2,10,30\\n21,66,7,6\\n2,83,14,1\\n22,10,20,48\\n46,3,6,45\\n14,15,34,16,21\\n42,58\\n74,6,20\\n43,52,5\\n48,52\\n8,92\\n43,57\\n100\\n98,1,1\\n100\\n10,46,42,1,1\\n22,78\\n70,30\\n26,74\\n60,33,1,6,1\\n9,6,85\\n4,10,85\\n97,1,1,1\\n39,3,18,24,16\\n42,58\\n2,4,2,1,1,49,38,2\\n48,52\\n38,33,2,24,2\\n48,52\\n21,2,2,2,15,9,5,36,1,7\\n1,7,6,1,8,12,25,41\\n100\\n35,65\\n47,53\\n41,25,20,10,5\\n50,25,4,21\\n43,32,25\\n34,10,21,9,26\\n34,34,32\\n55,16,3,25\\n50,23,26\\n30,70\\n58,42\\n51,49\\n42,7,52\\n7,7,1,39,13,1,32\\n100\\n8,63,3,25\\n88,12\\n5,4,2,2,1,86\\n47,46,7\\n97,3\\n70,7,3,7,3,1,3,6\\n25,11,63\\n1,3,36,29,6,1,18,5\\n47,16,37\\n64,32,4\\n33,46,21\\n57,43\\n54,46\\n55,45\\n1,26,16,12,15,5,26\\n7,1,25,8,23,36\\n12,51,37\\n24,48,28\\n31,5,18,18,1,1,13,9,2,2,1\\n5,4,1,3,1,3,2,3,1,1,17,4,5,17,22,10\\n12,29,12,47\\n6,94\\n81,2,11,6\\n83,5,1,2,9\\n74,26\\n53,47\\n9,13,23,20,17,18\\n1,1,59,1,13,24,1\\n34,1,50,12,2\\n10,12,3,21,4,4,10,13,22\\n27,24,30,1,10,8\\n17,11,18,21,24,8\\n12,32,22,2,5,7,18,2\\n1,5,4,6,3,3,4,3,4,2,2,12,12,2,5,2,4,7,5,4,11\\n38,31,22,4,4\\n26,2,5,7,9,8,4,17,3,4,3,1,7,5\\n10,11,13,16,12,21,17\\n2,18,19,18,9,7,9,18\\n14,30,54,2\\n17,1,2,3,14,7,1,11,15,6,22\\n3,15,69,12\\n1,51,1,4,1,13,13,13,5\\n30,14,11,6,14,22,1,4\\n10,8,31,4,14,5,3,20,7\\n1,90,1,1,1,1,5\\n100\\n11,2,32,55\\n9,75,16\\n1,1,1,17,17,6,8,12,1,23,13\\n6,19,17,18,39\\n2,7,31,60\\n100\\n5,95\\n100\\n92,8\\n98,2\\n94,2,4\\n9,91\\n7,4,89\\n3,2,1,1,2,1,1,1,12,4,74\\n100\\n100\\n30,70\\n15,85\\n95,5\\n1,2,1,3,93\\n100\\n5,23,5,5,62\\n1,3,96\\n2,37,46,7,8\\n86,14\\n14,1,80,6\\n100\\n91,6,2\\n82,12,6\\n83,12,5\\n70,17,6,7\\n1,52,41,6\\n35,6,56,1,1,1\\n4,7,10,2,7,2,8,58,1\\n58,41\\n24,11,66\\n100\\n8,9,64,8,11\\n100\\n85,6,8,1\\n2,97,1,1\\n100\\n88,8,1,1,2\\n52,3,3,6,36\\n10,90\\n1,5,93\\n33,19,27,3,17,1\\n42,58,1\\n6,3,75,4,12\\n100\\n5,1,2,46,46\\n24,24,53\\n57,16,26\\n81,2,2,15\\n1,84,1,14\\n2,98\\n1,98,1\\n9,89,2\\n21,79\\n10,89\\n4,96\\n18,82\\n2,3,2,2,4,2,1,1,84\\n6,94\\n2,8,90\\n22,78\\n6,92\\n99,1\\n100\\n100\\n41,47,12\\n30,70\\n7,28,65\\n21,7,21,51\\n87,13\\n29,71\\n22,1,78\\n51,3,45\\n70,30\\n54,10,17,17,2\\n4,10,2,6,1,2,75\\n1,99\\n8,57,29,6\\n93,7\\n52,48\\n100\\n79,2,3,3,8,5\\n22,26,1,51\\n17,34,10,3,22,14\\n90,4,7\\n23,4,73\\n79,21\\n25,75\\n9,21,17,4,28,21\\n82,4,3,7,4\\n2,24,55,19\\n1,30,35,25,9\\n10,3,4,15,10,11,48\\n3,4,10,8,55,19\\n78,6,15\\n4,2,93\\n100\\n100\\n1,55,44\\n11,26,12,51\\n45,55\\n36,64\\n25,75\\n100\\n6,1,3,90\\n9,79,11\\n100\\n100\\n3,97\\n18,11,4,66\\n100\\n100\\n6,93\\n6,94\\n32,68\\n100\\n100\\n64,5,30\\n14,4,14,69\\n69,12,15,4\\n100\\n36,22,31,9,2\\n3,45,8,9,35\\n71,13,10,6\\n15,16,46,22\\n38,31,12,3,12,3\\n88,12\\n100\\n100\\n16,82,1,1,1,1\\n7,3,27,56,7\\n20,74,5\\n100\\n100\\n100\\n100\\n42,46,8,4\\n50,1,2,47\\n1,3,1,6,2,29,36,17,6\\n33,5,58,4\\n23,2,75\\n34,66\\n14,5,8,72\\n100\\n100\\n1,44,55\\n100\\n5,2,94\\n36,1,63\\n31,7,8,18,4,4,8,20,1,1\\n100\\n100\\n16,84\\n100\\n100\\n14,86\\n10,2,1,1,85\\n1,3,95\\n3,4,8,85\\n100\\n9,89,2\\n93,7\\n21,79\\n19,81\\n3,86,12\\n3,77,7,12\\n100\\n8,92\\n5,9,1,1,85\\n1,95,4\\n4,2,85,8\\n10,90\\n2,91,7\\n47,29,24\\n80,20\\n99,1\\n100\\n21,12,67\\n3,2,95\\n17,9,4,5,12,54\\n59,41\\n4,8,19,22,4,35,7\\n3,3,10,5,4,75\\n21,26,30,22\\n5,10,50,35\\n15,14,4,2,65\\n27,45,7,3,2,8,8\\n1,23,53,24\\n74,23,3\\n15,81,4\\n40,60\\n7,11,82\\n22,1,77\\n41,59\\n100\\n27,73\\n22,78\\n1,74,25\\n3,1,61,1,34\\n99,1\\n4,27,14,55\\n12,17,7,18,6,11,3,2,25\\n99,1\\n100\\n10,90\\n95,5\\n19,81\\n97,3\\n10,5,85\\n2,98\\n52,21,27\\n100\\n100\\n100\\n77,23\\n98,2\\n100\\n100\\n22,15,15,6,41\\n64,31,5\\n28,16,34,19,1,1,1\\n44,6,4,15,13,18\\n75,25\\n100\\n60,40\\n33,67\\n52,8,15,23,1\\n60,41\\n100\\n100\\n53,2,6,3,1,3,31\\n1,10,13,22,24,19,6,5\\n24,76\\n39,61\\n97,3\\n100\\n100\\n80,20\\n19,4,16,14,2,1,43\\n35,65\\n91,9\\n64,36\\n2,98\\n95,5\\n100\\n61,39\\n100\\n67,3,19,1,6,2\\n45,55\\n2,7,9,21,42,2,4,1,4,1,2,5\\n8,86,1,5\\n61,27,13\\n3,1,96\\n25,75\\n2,18,6,9,65\\n30,70\\n8,87,5\\n4,96\\n15,85\\n97,3\\n90,10\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n11,89\\n48,1,51\\n1,14,85\\n2,1,95,2\\n1,1,98\\n100\\n15,54,2,29\\n100\\n49,50,1,1\\n100\\n10,12,78\\n27,6,6,24,4,14,20\\n100\\n47,53\\n2,8,5,6,6,73\\n32,1,1,66\\n3,2,3,33,15,8,4,8,13,3,9\\n2,11,87\\n53,38,8\\n22,9,69\\n41,1,2,1,55\\n2,16,1,4,6,70\\n98,2\\n96,4\\n37,45,18\\n3,1,2,16,78\\n3,1,2,2,8,2,73,3,4,2\\n8,31,61\\n100\\n20,80\\n100\\n19,81\\n13,46,41\\n9,3,9,79\\n12,83,5\\n100\\n12,88\\n100\\n10,90\\n3,96\\n6,94\\n100\\n17,83\\n4,4,93\\n100\\n99\\n33,11,3,6,11,3,32\\n16,78,1,5\\n11,39,33,17\\n3,4,4,23,6,1,1,3,55\\n100\\n100\\n100\\n31,3,5,15,42,5\\n22,8,21,48\\n25,1,10,56,7\\n47,29,24\\n100\\n31,10,7,3,15,7,8,3,15,2\\n100\\n10,7,6,2,13,24,7,6,24,1\\n1,5,94\\n13,4,30,23,27,3\\n1,29,69\\n33,2,50,14\\n100\\n1,99\\n23,1,6,69\\n36,1,3,61\\n54,46\\n1,13,23,48,14\\n42,24,34\\n1,8,17,29,6,10,12,18\\n35,11,53\\n41,59\\n58,42\\n3,13,2,2,2,12,67\\n85,15\\n100\\n72,28\\n100\\n100\\n13,72,7,4,4\\n100\\n18,4,41,32,2,2\\n11,49,8,31\\n35,65\\n4,95\\n9,90\\n23,77\\n64,36\\n100\\n100\\n85,2,4,7,2\\n100\\n100\\n92,8\\n46,28,26\\n100\\n100\\n1,1,98\\n100\\n100\\n64,8,28\\n7,12,33,7,2,3,5,5,25\\n20,44,12,2,1,10,5,2,2\\n32,68\\n21,42,5,32\\n41,15,18,25\\n38,10,11,2,14,1,23\\n5,95\\n4,6,90\\n4,54,42\\n100\\n21,39,19,6,14\\n100\\n28,60,3,4,1,2,2\\n100\\n71,12,13,3\\n100\\n25,42,6,18,8\\n11,9,79,1\\n8,23,8,10,24,27\\n4,2,31,62,1\\n98,1,1\\n20,79\\n11,1,21,21,12,34\\n40,7,52\\n4,3,1,86,8\\n61,10,22,1,2,1,4\\n33,66\\n7,55,37\\n98\\n2,27,13,8,21,1,12,17\\n86,13\\n52,47\\n81,19\\n2,2,93,4\\n6,79,2,8,1,2,1\\n29,38,5,28,1\\n23,8,68,1\\n4,1,20,7,7,47,12\\n5,37,57\\n1,16,79,4\\n10,18,72\\n12,1,77,10\\n36,10,27,5,4,18\\n24,76\\n42,41,4,14\\n99,1,1\\n86,13,1\\n100\\n100\\n100\\n13,40,5,7,17,13,5\\n18,22,17,37,5\\n26,32,5,36\\n95,5\\n100\\n100\\n100\\n100\\n100\\n18,82\\n1,4,1,94\\n7,12,1,81\\n5,95\\n14,27,7,12,10,4,21,6\\n36,64\\n92,8\\n100\\n71,9,3,16\\n100\\n100\\n97,3\\n82,18\\n87,13\\n45,55\\n78,4,18\\n48,8,12,1,27,1,2\\n33,22,25,20\\n1,97,2\\n85,10,4\\n1,69,22,2,2,5\\n14,9,9,28,13,6,21\\n10,4,28,8,29,20\\n85,15\\n48,7,45\\n35,65\\n49,51\\n43,57\\n3,1,22,74\\n1,99\\n66,34\\n43,5,4,35,13\\n55,32,13\\n1,17,33,20,28\\n90,7,1,2\\n33,7,3,3,53\\n7,9,9,5,19,31,21\\n52,47,1\\n59,8,12,9,7,2,2,1,1\\n6,4,23,36,10,13,7\\n8,48,5,10,26,3,1\\n21,21,1,56,1\\n5,95\\n1,59,40\\n96,1,2,1\\n6,31,25,6,21,6,6\\n100\\n7,18,9,67\\n100\\n100\\n1,99\\n64,36\\n93,7\\n98,2\\n41,26,33\\n100\\n5,95\\n61,8,31\\n37,9,25,29\\n100\\n100\\n100\\n18,65,12,6\\n45,46,4,2,3\\n87,13\\n11,23,4,3,3,8,48\\n92,2,6\\n51,7,15,23,4\\n100\\n25,44,26,5\\n4,3,1,92\\n1,16,26,8,8,5,36,1\\n90,1,9\\n28,64,7,1,1\\n3,4,13,4,77\\n15,14,24,1,4,9,33\\n80,20\\n18,9,42,16,16\\n7,32,12,6,26,1,11,3,2\\n5,32,2,1,1,1,1,1,4,53\\n3,47,3,14,9,24\\n74,1,1,24\\n3,97\\n80,1,3,15\\n4,8,87\\n99,1\\n100\\n2,98\\n27,3,70\\n100\\n86,14\\n95,5\\n65,14,18,3\\n4,1,95\\n70,5,6,1,1,17\\n1,6,53,4,1,35\\n94,2,2,2\\n66,28,6\\n52,25,2,18,1,2\\n12,4,7,6,4,68\\n35,63,1,1\\n48,52\\n41,59\\n4,4,39,53\\n10,2,3,85\\n75,3,22\\n1,99,1\\n100\\n26,1,66,6,1\\n11,1,18,1,7,56,1,4,1\\n65,35\\n97,1,2\\n33,8,5,54\\n1,1,18,10,70\\n3,78,19\\n5,79,13,3\\n18,38,39,5\\n1,1,19,7,5,15,21,4,16,4,3,5\\n3,20,77\\n10,1,90\\n3,3,72,22\\n5,77,17,1\\n65,35\\n84,16\\n14,1,29,20,19,6,12\\n50,8,1,41\\n29,10,14,14,30,1\\n37,6,2,12,11,12,21\\n4,4,2,89\\n1,24,11,63,1\\n44,56\\n26,4,70\\n13,87\\n100\\n5,3,92\\n7,90,3\\n57,17,7,4,15\\n21,6,5,4,4,10,27,23\\n46,54\\n52,42,5,1\\n1,99\\n99\\n100\\n40,47,13\\n1,5,44,25,26\\n7,6,87\\n3,5,1,2,4,16,17,52\\n19,81\\n46,54\\n39,22,39\\n100\\n100\\n1,1,1,10,18,33,35\\n7,93\\n2,52,45\\n100\\n4,94,2\\n100\\n100\\n23,1,1,1,17,57\\n3,97\\n2,1,20,18,60\\n26,17,57\\n86,14\\n36,52,12\\n19,37,44\\n3,10,86\\n55,45\\n71,29\\n1,38,28,33\\n27,73\\n1,1,83,15\\n7,17,10,10,16,6,13,1,20\\n5,37,42,15\\n100\\n100\\n100\\n100\\n100\\n1,1,1,2,96\\n1,99\\n1,98\\n33,9,34,24\\n53,47\\n11,89\\n96,4\\n100\\n46,54\\n82,18\\n100\\n100\\n98,2\\n4,96\\n90,10\\n17,83\\n100\\n100\\n12,7,12,10,60\\n94,6\\n54,1,46\\n40,60\\n100\\n84,16\\n96,4\\n80,20\\n65,35\\n11,1,87\\n6,2,5,3,83\\n2,3,95\\n100\\n2,3,38,56,2\\n29,66,3,3\\n16,4,80\\n3,5,12,80\\n45,55\\n9,11,28,7,45\\n54,23,7,16\\n14,1,38,30,17,1\\n8,38,17,37\\n79,21\\n78,22\\n44,5,1,1,1,13,9,13,8,1,4\\n41,59\\n55,45\\n83,13,4\\n8,30,30,1,2,29\\n2,2,2,88,5\\n4,7,62,3,5,19\\n100\\n10,64,5,21\\n58,2,35,2,3\\n3,3,2,37,9,32,2,13\\n2,2,95\\n4,96\\n100\\n14,82,4\\n100\\n27,44,29\\n44,1,49,2,4\\n98,2\\n80,2,3,12,2,1\\n14,11,33,12,21,8\\n100\\n46,9,45\\n15,2,1,71,10,1\\n2,98\\n1,99\\n3,14,5,5,71,2\\n100\\n26,9,7,26,4,28\\n1,1,32,66\\n15,1,85\\n22,7,7,7,52,5\\n47,12,41\\n35,8,33,24\\n5,6,16,2,25,19,14,8,4\\n6,1,7,13,1,18,4,4,15,30\\n1,1,1,13,8,11,49,1,3,14\\n73,15,1,7,1,4\\n44,5,15,36\\n66,12,17,2,3\\n20,13,8,58\\n58,42\\n2,57,1,2,8,30\\n7,39,4,17,12,7,3,10\\n1,77,22\\n80,20\\n100\\n56,18,26\\n42,8,2,2,20,26\\n18,13,1,54,6,6,1\\n4,1,77,19\\n67,31,1\\n8,3,5,4,27,52\\n5,5,29,26,13,22\\n69,31\\n51,48\\n2,7,3,14,1,2,2,70\\n32,3,3,62\\n5,16,18,27,34\\n28,12,27,33\\n22,10,68\\n4,1,1,1,10,85\\n26,29,29,6,10\\n10,83,7\\n29,39,10,9,4,3,8\\n54,14,31\\n45,4,32,18\\n45,2,7,2,1,38,4\\n19,4,11,8,46,2,10\\n31,41,1,27\\n29,14,7,11,35,1,2\\n26,16,2,13,1,32,11\\n1,4,5,6,5,25,1,3,50\\n1,8,12,10,36,7,10,14\\n100\\n100\\n13,87,1\\n9,3,32,13,42\\n46,54\\n4,96\\n100\\n37,6,57\\n11,89\\n18,82\\n42,1,57\\n11,6,13,43,28\\n19,4,11,4,10,21,31\\n1,4,1,83,11\\n9,91\\n100\\n11,11,19,2,13,45\\n8,1,1,1,1,12,32,42\\n24,4,1,68,3\\n62,5,27,5\\n8,86,5\\n1,1,97,1\\n5,9,19,2,9,11,6,2,5,6,5,7,14\\n22,8,1,1,2,2,61,1,3,1\\n1,95,1,2\\n100\\n100\\n10,89,1\\n3,8,89\\n100\\n100\\n10,1,11,3,3,70,2\\n71,20,1,8\\n96,4\\n92,8\\n48,1,51\\n45,54\\n100\\n51,1,10,34,4\\n52,4,1,25,8,12\\n2,2,95\\n9,2,2,1,85\\n100\\n28,19,21,3,3,21,3,2\\n97,3\\n2,2,92,4\\n100\\n10,60,22,8\\n98,2\\n28,32,16,24\\n100\\n93,7\\n47,53\\n100\\n1,90,9\\n11,17,7,37,29\\n100\\n100\\n100\\n100\\n22,10,25,43\\n7,1,12,5,6,27,8,34\\n3,3,57,37\\n1,3,89,6\\n79,21\\n55,45\\n100\\n3,8,3,2,84\\n5,4,92\\n15,19,2,19,7,36,1\\n18,14,2,1,3,61\\n18,19,63\\n1,7,92\\n2,1,1,58,20,11,7\\n2,24,16,50,4,2,2\\n82,15,1,2,1\\n4,4,4,53,35,1\\n39,52,9\\n96,4\\n1,12,22,22,44\\n43,57\\n1,2,2,95\\n1,3,2,90,2,2\\n10,5,85\\n9,6,85\\n21,21,35,22\\n75,23,2\\n100\\n99,1\\n3,97\\n3,97\\n9,1,1,3,86\\n7,93\\n1,42,57\\n10,3,88\\n2,9,64,25\\n2,72,27\\n1,52,45,1,1\\n3,1,1,31,25,15,3,20,1,1\\n4,31,2,3,61\\n1,13,7,4,3,71,1\\n15,22,14,20,30\\n1,24,5,25,9,17,19,1\\n2,98\\n100\\n100\\n100\\n20,6,4,18,4,9,35,3\\n21,6,5,68\\n100\\n100\\n1,99,1\\n1,99\\n37,10,10,12,6,26\\n37,13,1,8,8,1,5,27\\n100\\n100\\n43,36,21\\n100\\n33,67\\n8,37,43,12\\n25,2,35,22,17\\n100\\n24,76\\n54,46\\n11,80,9\\n11,13,12,63\\n1,41,57\\n51,49\\n19,18,2,30,4,28\\n12,61,27\\n11,89\\n2,1,18,1,5,74\\n5,1,23,2,3,5,1,59\\n98,2\\n24,51,26\\n41,59\\n100\\n7,20,22,27,24\\n74,26\\n32,68\\n100\\n5,24,19,53\\n99\\n92,8\\n2,4,5,90\\n1,1,11,84,4\\n62,15,22,1\\n100\\n100\\n17,3,8,4,29,32,8\\n89,11\\n90,10\\n6,46,15,33\\n69,31\\n100\\n100\\n100\\n100\\n23,47,16,10,5\\n50,2,2,1,7,19,3,4,7,5\\n1,2,1,18,22,23,28,1,1,1,1\\n40,24,36\\n100\\n26,74\\n3,97\\n59,41\\n59,41\\n97,2,1\\n9,57,1,13,20\\n2,98\\n60,40\\n100\\n100\\n8,92\\n1,22,10,7,60\\n16,35,1,5,1,43,1\\n26,41,7,1,6,17,1\\n62,8,5,25\\n29,38,21,11\\n36,1,1,1,1,59,1\\n49,1,1,1,25,22,1\\n58,2,13,2,3,23\\n1,35,40,8,16\\n6,3,39,35,10,6\\n3,33,31,28,5\\n24,13,20,43\\n53,47\\n50,50\\n20,14,66\\n80,8,10,3\\n10,6,5,4,2,4,1,2,2,50,13\\n73,27\\n11,89\\n100\\n14,4,11,12,2,43,14\\n13,35,51,1\\n31,17,2,28,22\\n100\\n100\\n6,6,39,18,10,21\\n62,1,4,1,19,13\\n3,12,85,1\\n18,12,2,27,5,3,7,2,23\\n90,10\\n68,1,4,1,2,1,1,1,19,3\\n55,15,4,25\\n99\\n78,1,1,20\\n7,15,10,7,1,2,4,6,7,3,2,2,5,4,2,23\\n76,3,21\\n2,13,10,11,44,20\\n24,29,47\\n100\\n2,1,45,44,8\\n46,40,5,8\\n24,18,16,12,28,1,1\\n8,2,6,23,44,8,8\\n100\\n100\\n90,9\\n87,13\\n6,7,26,1,16,3,41\\n30,5,65\\n61,1,39\\n100\\n14,8,78\\n12,3,4,5,3,23,26,24\\n22,22,1,55\\n9,7,68,10,7\\n66,1,34\\n8,1,4,62,25\\n56,5,5,35\\n52,35,13\\n100\\n10,27,60,1,1\\n1,46,37,6,11\\n58,2,2,15,9,15\\n10,9,16,29,9,27\\n14,27,4,55\\n1,29,10,1,59\\n3,80,6,11\\n18,14,8,4,5,11,8,6,6,16,5\\n60,40\\n9,1,61,8,19,2\\n2,8,43,42,5\\n1,75,13,11\\n5,5,35,1,1,36,17\\n1,24,21,5,1,31,17\\n17,14,6,62\\n6,18,1,23,3,1,5,6,6,2,11,18\\n10,12,5,7,36,13,6,10\\n30,21,10,13,26\\n3,33,6,58,1\\n57,43\\n61,3,1,4,3,28\\n6,3,20,4,14,30,23\\n3,3,94\\n8,9,3,3,16,4,45,10\\n7,51,41\\n17,5,37,3,37\\n1,99\\n1,66,34\\n66,16,19\\n2,2,19,58,11,2,4,4\\n49,40,8,3\\n45,21,34\\n8,43,41,8\\n23,77\\n33,13,14,6,27,5,3\\n100\\n91,8\\n3,8,62,15,3,10\\n21,79\\n99,1\\n100\\n69,4,1,14,12\\n1,80,1,18\\n99,1\\n22,49,14,14,1\\n100\\n100\\n7,31,13,49\\n100\\n92,3,5,1\\n41,59\\n55,45\\n56,44\\n100\\n54,46\\n62,35,3\\n67,8,25\\n82,17\\n100\\n100\\n100\\n100\\n1,2,2,1,59,13,12,9\\n15,66,15,3,1,1\\n7,36,45,12\\n6,6,68,20\\n79,21\\n2,2,97\\n6,76,5,3,2,8\\n100\\n100\\n100\\n37,23,23,2,14\\n1,1,80,18\\n100\\n43,56,1,1\\n100\\n4,3,4,23,4,4,56,2\\n100\\n100\\n18,3,13,8,5,17,3,13,2,19\\n18,8,8,17,16,12,22\\n17,1,1,14,2,27,14,2,4,4,4,3,7,1\\n9,1,30,5,25,20,1,10\\n29,38,29,5\\n13,11,3,3,8,21,29,12\\n8,4,16,3,2,18,2,46\\n5,2,1,1,14,37,35,4,3\\n17,12,67,4\\n27,12,1,2,58\\n5,95\\n26,18,49,8\\n30,2,56,6,5\\n94,1,4,1\\n31,69\\n1,33,14,7,9,36\\n100\\n59,4,27,10\\n97,3\\n100\\n3,40,6,49,2\\n100\\n10,69,11,10\\n1,39,9,7,29,13,2\\n100\\n99,1\\n8,1,82,10\\n30,70\\n100\\n100\\n100\\n1,51,49\\n43,57\\n100\\n1,6,48,26,8,3,6,2\\n63,6,31\\n1,99\\n1,14,17,69\\n7,3,29,1,30,8,8,6,8\\n1,1,11,4,12,3,4,3,59,2\\n100\\n1,25,74\\n41,12,9,39\\n100\\n100\\n31,2,5,62\\n9,22,13,13,42\\n42,17,12,19,11\\n100\\n100\\n73,27\\n31,68\\n24,22,6,10,10,27\\n32,59,9\\n1,8,1,89,1\\n13,10,35,22,11,10\\n1,50,49\\n3,4,25,30,17,21\\n12,7,35,17,28\\n4,48,42,6\\n27,73\\n64,23,14\\n76,16,4,5\\n6,20,2,7,20,24,10,12\\n18,17,10,54\\n95,5\\n2,14,46,38\\n4,11,12,20,20,2,30\\n21,3,76\\n9,63,16,12\\n8,2,10,12,35,7,2,2,5,1,1,15\\n61,6,12,17,5\\n9,4,65,21,1\\n100\\n33,47,20\\n100\\n32,40,27\\n100\\n100\\n28,8,12,8,9,4,3,28\\n100\\n100\\n1,99\\n73,1,14,12\\n8,15,14,5,5,20,3,30\\n65,1,34\\n27,45,28\\n43,57\\n100\\n1,99\\n1,2,2,4,91\\n11,2,2,2,1,83\\n9,6,5,13,11,2,54\\n2,3,66,1,3,3,2,20\\n8,23,7,63\\n8,34,49,2,7\\n13,4,39,8,1,2,6,25\\n36,46,1,17\\n2,5,35,2,3,6,2,2,1,3,3,2,4,11,2,12,1,3\\n4,7,5,30,10,34,2,5\\n100\\n100\\n4,4,57,35\\n2,10,39,37,2,6,4\\n2,7,42,2,1,46\\n100\\n1,5,2,2,28,36,5,3,18\\n2,8,90\\n15,2,1,3,2,77\\n28,2,70\\n69,31\\n1,35,17,15,32\\n34,14,51\\n5,42,1,1,5,46\\n1,1,97,1\\n1,1,1,97\\n37,63\\n7,23,35,3,26,4\\n9,1,63,1,25,1\\n25,26,8,41\\n41,59\\n11,5,9,1,4,42,2,26\\n15,2,8,8,10,1,39,14\\n45,55\\n55,45\\n100\\n100\\n71,6,23\\n100\\n100\\n100\\n100\\n100\\n100\\n92,8\\n100\\n21,71,1,8\\n9,91\\n100\\n20,2,20,11,16,13,4,12,2\\n26,35,6,1,22,9\\n48,51\\n100\\n94,4,1,1\\n2,9,1,1,3,1,4,42,38\\n15,83\\n11,6,1,10,68,4\\n73,3,5,4,15\\n3,1,1,95\\n78,1,1,12,1,2,4\\n91,7,2\\n3,97\\n100\\n20,80\\n4,14,17,3,35,27\\n100\\n100\\n100\\n100\\n96,4\\n91,3,2,1,3\\n100\\n100\\n3,69,28\\n4,20,43,32\\n35,63,1,1\\n27,1,72,1\\n100\\n17,1,82\\n99\\n82,18\\n79,4,17\\n1,14,11,74\\n9,17,46,4,12,13\\n100\\n100\\n29,22,50\\n25,24,51\\n93,7\\n81,1,19\\n100\\n8,2,90\\n13,87\\n12,14,74\\n18,3,79\\n5,63,32\\n52,47\\n47,53\\n90,10\\n33,1,26,23,12,5\\n1,7,11,9,1,72\\n30,64,5,1\\n15,37,23,26\\n65,1,25,1,1,6,1\\n13,37,16,13,5,7,8\\n100\\n68,32,1\\n52,48\\n53,47\\n100\\n100\\n1,99\\n6,2,7,84,2\\n42,32,26\\n100\\n100\\n100\\n1,3,11,85\\n8,92\\n100\\n9,91\\n13,87\\n100\\n22,7,71\\n30,34,3,34\\n100\\n4,96\\n63,2,1,3,1,1,2,2,24\\n33,4,2,1,14,45\\n41,1,1,4,1,1,1,1,7,2,8,7,5,21\\n46,54\\n8,8,1,12,72\\n77,23\\n100\\n100\\n100\\n100\\n48,5,3,3,2,2,3,6,10,12,2,4\\n36,64\\n100\\n100\\n4,96\\n24,76\\n89,11\\n57,4,2,4,33\\n100\\n2,12,1,2,28,15,16,21,3\\n1,7,1,1,5,1,1,9,24,43,6\\n9,13,33,14,6,14,9\\n15,3,16,66\\n3,1,2,2,1,1,1,1,2,1,4,1,1,1,1,1,1,2,1,1,21,16,34\\n10,4,2,2,1,1,2,3,2,1,5,1,1,10,2,4,7,20,19,4\\n23,77\\n19,28,3,26,6,6,1,1,10\\n13,41,39,4,2\\n13,5,7,4,70\\n25,9,5,60\\n51,2,28,19\\n54,22,24\\n1,4,3,4,4,1,1,1,1,4,3,4,70\\n2,1,5,1,1,1,1,1,1,8,8,39,32\\n1,21,78,1\\n1,1,1,1,1,16,5,12,22,4,1,8,13,13\\n9,11,13,9,1,1,1,1,7,1,44\\n32,13,2,12,12,30\\n7,77,14,2\\n8,92\\n39,10,14,37\\n100\\n24,76\\n72,28\\n2,60,37\\n61,11,11,16\\n100\\n6,60,35\\n80,20\\n100\\n100\\n100\\n44,50,7\\n100\\n73,1,7,3,3,11\\n66,34\\n27,57,5,7,3,1\\n38,42,21\\n1,28,32,38,1\\n59,1,40,1\\n75,22,3\\n64,1,25,7,4\\n82,18\\n100\\n100\\n3,97\\n3,10,35,52\\n100\\n100\\n5,95\\n15,85\\n19,81\\n100\\n98,2\\n100\\n85,4,5,1,4\\n90,8,2\\n11,3,13,73\\n1,99\\n4,2,94\\n7,1,1,90\\n100\\n3,95\\n15,29,56\\n28,1,1,71\\n48,17,36\\n63,4,33\\n87,13\\n91,9\\n1,1,7,1,16,18,58\\n1,1,1,9,38,19,32\\n22,78\\n84,16\\n78,4,7,10,1\\n1,1,2,55,41\\n1,1,2,95\\n3,3,13,80\\n2,5,1,23,23,30,15\\n100\\n100\\n100\\n57,3,2,3,6,1,2,1,5,21\\n24,20,4,52\\n9,5,14,2,1,1,3,4,29,31\\n14,4,3,7,6,3,7,2,4,5,12,5,4,4,3,3,6,5,4\\n19,7,7,20,5,22,19\\n6,8,1,1,1,50,28,1,5\\n100\\n13,10,12,43,7,3,2,1,2,2,5\\n79,12,1,2,6\\n25,74,1\\n65,15,17,3\\n86,10,3\\n79,21\\n7,93\\n49,51\\n34,13,29,8,2,6,1,2,1,3,1\\n100\\n39,21,2,15,2,1,3,2,4,4,2,3,2,1\\n100\\n23,16,1,33,1,1,6,12,1,4,1,2\\n1,11,9,31,21,1,11,1,1,3,11\\n1,3,25,3,15,17,12,5,17,2\\n12,4,33,51\\n100\\n20,14,66\\n100\\n1,25,34,30,4,1,4\\n65,10,7,17\\n97,3\\n31,29,31,9\\n59,16,12,14\\n2,2,43,4,5,29,8,7\\n58,42\\n9,91\\n12,1,1,2,24,19,5,11,14,12\\n18,14,8,42,1,1,13,1,1,1,1\\n45,55\\n16,84\\n61,1,37\\n32,2,2,14,12,1,1,7,2,6,1,19\\n19,42,37,1,1\\n33,1,1,63,1,1\\n1,1,16,29,1,1,1,19,26,1\\n7,36,58\\n5,12,83\\n21,24,9,18,15,10,2,1\\n32,68\\n11,2,1,84\\n3,23,6,15,53\\n23,77\\n97,3\\n30,28,43\\n58,21,20\\n1,1,13,10,3,8,25,25,2,3,1,1,4,2\\n69,31\\n23,5,72\\n7,93\\n39,14,47\\n57,43\\n34,5,49,1,2,1,8\\n12,16,71\\n29,9,6,16,40\\n38,42,20\\n1,4,23,4,67\\n33,30,37\\n100\\n7,4,1,29,36,23\\n10,2,10,6,2,5,4,60\\n1,4,71,18,7\\n70,12,14,3\\n11,88\\n6,9,22,63\\n19,4,1,1,57,18\\n11,10,1,49,24,5\\n16,13,22,25,23,1\\n1,17,19,14,49\\n14,86\\n100\\n33,67\\n17,25,15,6,38\\n37,31,33\\n19,11,3,11,17,39\\n21,1,4,74,1\\n95,5\\n99\\n53,47\\n58,26,16\\n100\\n100\\n1,36,63\\n100\\n13,12,1,1,2,11,61\\n45,22,33\\n100\\n7,24,1,16,28,11,14\\n100\\n100\\n100\\n2,4,1,42,21,19,11\\n12,88\\n1,31,29,34,4\\n5,23,71\\n100\\n100\\n39,3,3,3,5,47\\n3,82,15\\n2,2,95\\n75,3,2,2,1,1,17\\n2,2,5,2,5,5,4,7,69\\n100\\n60,7,30,2\\n15,6,80\\n92,8\\n50,49\\n77,9,5,8\\n100\\n100\\n2,24,74\\n100\\n100\\n100\\n80,1,3,15\\n100\\n2,98\\n100\\n2,1,12,1,1,4,1,38,13,27\\n35,12,12,7,35\\n35,5,3,3,33,10,7,4\\n32,3,10,6,5,19,7,2,3,5,7\\n26,74\\n8,20,27,45\\n100\\n9,66,18,6\\n100\\n100\\n100\\n100\\n22,3,40,34\\n4,5,8,3,28,44,8\\n100\\n100\\n1,99\\n3,97\\n83,14,3\\n43,6,15,2,33\\n12,1,57,29\\n100\\n100\\n8,3,2,77,10\\n62,8,21,6,2\\n3,23,14,1,3,7,42,1,5\\n100\\n2,98\\n2,4,10,1,1,29,11,7,29,7\\n96,3\\n2,31,67\\n100\\n93,7\\n100\\n2,56,11,32\\n2,98\\n85,15\\n100\\n1,7,5,1,1,1,3,2,2,1,12,66\\n7,6,2,1,3,1,5,4,9,8,27,27\\n29,18,50,2,1\\n44,9,9,9,30\\n29,16,30,25\\n77,1,3,8,10,1\\n3,2,1,3,1,2,16,1,3,26,41\\n7,11,50,1,23,7\\n17,2,2,6,72,1\\n1,6,11,6,76\\n28,62,10\\n1,11,1,29,14,23,8,5,8\\n2,21,8,4,2,35,28\\n6,6,37,13,9,17,12\\n11,50,39\\n47,20,19,15\\n1,2,13,11,11,22,26,14\\n35,1,1,1,48,3,4,8\\n2,7,23,3,35,29\\n7,2,17,35,39\\n5,3,11,5,3,4,2,6,20,42\\n2,1,1,10,37,4,5,40\\n83,9,7,1\\n2,1,2,5,28,62\\n10,2,4,13,3,6,2,14,46\\n25,1,1,1,68,1,3\\n23,3,3,8,63\\n100\\n55,28,5,2,7,2\\n1,84,16\\n36,64\\n11,8,13,4,25,22,17\\n51,1,48\\n100\\n89,11\\n86,14\\n100\\n100\\n47,14,15,2,20,2\\n3,21,6,32,38\\n6,13,6,8,23,43\\n37,12,11,12,3,2,3,17,3\\n97,1,3\\n100\\n56,1,16,4,23\\n94,6\\n1,99\\n32,6,59,2,1\\n97,2,2\\n85,3,6,1,1,1,2,1\\n75,8,10,2,4,1,2\\n100\\n7,90,3\\n98,1\\n98,2\\n35,14,33,5,13\\n89,5,6\\n54,46,1\\n27,63,11\\n19,2,4,2,73\\n22,2,32,44\\n6,31,12,19,31\\n2,1,1,3,29,17,1,29,18\\n41,41,18\\n39,2,1,4,3,10,2,21,17\\n3,80,3,3,12\\n6,4,69,9,5,3,4\\n89,3,3,4\\n1,1,4,11,84\\n6,2,4,6,44,11,5,9,1,7,5\\n11,4,27,20,19,1,1,1,5,11\\n37,4,7,2,18,28,2,1\\n18,12,3,13,2,3,2,6,10,2,23,2,5\\n11,58,26,5\\n1,23,51,1,22,1,1\\n7,48,45\\n45,2,1,5,3,2,4,1,1,9,28\\n9,8,27,3,1,52\\n29,1,61,4,3,1,1\\n15,1,13,71,1\\n4,30,66\\n87,13\\n1,25,35,5,35\\n60,40\\n16,10,5,53,17\\n8,3,68,20\\n18,17,59,4,2\\n8,75,1,16\\n29,1,70\\n5,1,11,82,1,1\\n55,44\\n1,1,45,50,1,1\\n55,43,1\\n5,2,51,29,12\\n85,13,2\\n32,32,36\\n7,14,18,12,49\\n71,1,18,9,1,1\\n73,12,15\\n6,3,5,2,54,29\\n12,3,17,65,3\\n37,63\\n6,5,1,89\\n17,14,69\\n37,29,6,16,11,1\\n29,6,65\\n99\\n30,70\\n2,98\\n24,7,65,4\\n2,3,95\\n33,67\\n10,90\\n14,86\\n1,2,97\\n3,56,41\\n22,13,12,52\\n5,1,93\\n8,1,92\\n6,94\\n10,90\\n1,14,1,85\\n100\\n12,4,84\\n1,4,96\\n35,65\\n7,10,59,4,10,2,5\\n3,16,18,3,44,1,14\\n36,64\\n44,37,20\\n18,82\\n99\\n7,93\\n10,82,2,2,4\\n14,2,3,81,1\\n9,2,1,4,1,2,3,78\\n2,3,4,8,84\\n77,23\\n66,1,1,33\\n68,32\\n98,1,2\\n84,8,2,6\\n59,30,11\\n3,2,48,13,3,14,17\\n34,1,18,47\\n95,5\\n30,33,8,8,20,1,1\\n9,22,68\\n1,3,96\\n100\\n100\\n7,4,3,19,67\\n47,42,11\\n37,2,49,12\\n55,45\\n100\\n47,3,1,1,3,4,4,1,36\\n18,26,11,2,6,1,37\\n100\\n1,99\\n84,16\\n100\\n30,39,8,2,1,20\\n9,2,81,3,5\\n98,1,1\\n68,32\\n59,33,9\\n85,7,2,1,3,1,2\\n100\\n1,99\\n30,26,22,22\\n1,2,3,94\\n13,39,5,43\\n47,10,21,21\\n42,58\\n100\\n3,97\\n1,2,1,94,2\\n13,2,19,9,12,4,14,12,16\\n4,2,1,2,14,6,57,15\\n20,11,4,20,15,6,23\\n5,3,2,90\\n5,95\\n1,1,62,36\\n55,45\\n100\\n3,97\\n7,93\\n3,5,2,90\\n4,73,23\\n3,81,16\\n63,35,1,1\\n1,56,23,19\\n97,1,2\\n94,2,4\\n57,43\\n100\\n1,1,99\\n54,2,43\\n56,44\\n63,1,29,7\\n9,59,7,7,18\\n85,6,9\\n86,3,10,1\\n79,3,18\\n92,4,4\\n74,25\\n32,7,61\\n26,9,65\\n99\\n8,6,4,82\\n54,19,21,6\\n18,38,44\\n46,25,29\\n17,1,40,42\\n27,13,14,45\\n72,28\\n93,3,1,3\\n92,1,6\\n12,4,15,20,17,16,16\\n62,34,4\\n1,99,1\\n68,1,13,18\\n12,12,34,1,12,28\\n3,6,4,44,7,36\\n42,58\\n3,47,50\\n31,68,1\\n17,38,45\\n49,51\\n94,6\\n3,8,2,87\\n18,44,28,10\\n4,96\\n5,15,79\\n22,2,76\\n52,28,20\\n2,98\\n10,88,1\\n49,51\\n20,20,60\\n14,10,4,14,1,58\\n48,52\\n10,89,1\\n1,55,5,32,7\\n25,5,70\\n3,97\\n2,98\\n92,8\\n30,17,35,3,5,3,7\\n6,2,57,17,9,9\\n10,31,25,10,20,4\\n8,14,78\\n37,10,8,20,25\\n46,3,22,28\\n54,46\\n26,43,32\\n1,50,4,13,7,7,19\\n8,92\\n1,2,38,59\\n100\\n2,19,12,8,12,5,14,4,10,13,2\\n8,2,3,6,2,2,6,11,21,9,5,1,1,2,3,8,2,9\\n49,4,37,10\\n38,63\\n8,2,4,1,39,1,3,2,7,8,26\\n2,7,11,14,12,3,1,15,9,4,14,6,2\\n51,49\\n34,66\\n100\\n10,47,34,9\\n26,8,7,22,21,3,3,8,3\\n7,9,41,8,33,1,1\\n1,1,1,22,74,1\\n5,2,3,22,36,2,2,16,4,6,1\\n100\\n5,89,5\\n15,1,6,15,34,30\\n56,1,1,40,1\\n100\\n100\\n12,13,7,11,9,2,7,39\\n100\\n95,5\\n54,14,32\\n100\\n15,24,60,1\\n38,61\\n98,2\\n34,3,62\\n100\\n9,6,32,22,22,1,9\\n100\\n100\\n100\\n100\\n100\\n10,13,27,34,16\\n95,1,4\\n5,95\\n22,18,40,19\\n100\\n100\\n21,20,60\\n24,76\\n15,2,83\\n100\\n20,80\\n23,1,76\\n100\\n97,3\\n100\\n99\\n1,36,63\\n1,1,98\\n9,80,11\\n17,19,64\\n100\\n100\\n68,16,1,15\\n97,3\\n100\\n100\\n100\\n100\\n6,28,65\\n37,36,27\\n28,72\\n46,10,31,3,4,4,2,1\\n91,9\\n100\\n97,2\\n43,4,2,51\\n7,30,12,4,46\\n47,37,4,10,3\\n29,38,14,1,2,6,8,1,1\\n19,15,19,47\\n54,45\\n100\\n100\\n100\\n100\\n55,38,6,1\\n98,1,1,1\\n8,29,1,28,33,1\\n1,33,3,2,2,50,7\\n2,11,24,23,40\\n16,1,4,70,5,5,1\\n2,12,37,13,5,13,12,1,6\\n5,60,1,1,3,3,7,14,3,4\\n1,4,7,2,4,5,23,7,16,4,13,11,3\\n8,2,1,89\\n2,27,17,15,19,20\\n1,1,18,33,1,1,1,11,13,10,6,4\\n5,14,8,55,11,7\\n1,5,3,8,55,27\\n15,30,55\\n10,7,17,6,5,11,1,19,10,5,8\\n8,13,20,59\\n66,34\\n9,4,6,69,11\\n99,1\\n92,8\\n6,47,3,6,39\\n1,53,1,46\\n1,23,1,1,57,19\\n3,50,6,1,41\\n3,36,22,1,1,2,6,29\\n33,7,1,1,3,3,1,33,4,14\\n21,19,29,18,7,7\\n2,98\\n100\\n36,19,13,7,6,1,1,19\\n31,24,44\\n22,77\\n54,46\\n57,43\\n54,46\\n59,41\\n1,99\\n21,79\\n100\\n8,2,3,5,19,5,58\\n26,21,10,21,9,4,3,6\\n72,28\\n52,48\\n73,27\\n6,7,2,8,77\\n78,2,2,1,1,8,9\\n74,6,1,1,1,1,2,1,4,2,2,4,1\\n91,1,7\\n75,1,1,2,20\\n1,3,1,62,9,20,5\\n48,45,6,1\\n93,2,2,1,1\\n98,2,1\\n51,1,48\\n100\\n15,85\\n51,11,1,37\\n36,41,1,23\\n73,27\\n100\\n63,7,16,14\\n45,55\\n16,13,11,59\\n93,7\\n18,82\\n100\\n12,13,76\\n100\\n100\\n61,39\\n3,12,11,2,72\\n17,27,1,33,13,10\\n72,5,3,13,6\\n1,4,57,37\\n81,2,6,3,4,4,1\\n75,25\\n14,28,29,29\\n100\\n2,79,19\\n4,6,5,4,81\\n8,6,70,17\\n7,7,11,1,24,1,1,48\\n1,35,36,28,1\\n58,19,23\\n51,49\\n100\\n2,73,25\\n100\\n8,25,30,32,5\\n50,25,25\\n85,5,1,3,3,3\\n27,11,12,43,2,5\\n30,4,6,13,8,10,1,1,6,2,5,11,2\\n83,1,3,13\\n92,2,6\\n85,7,2,6\\n16,43,40\\n100\\n3,23,6,7,2,5,5,49\\n1,1,87,11\\n4,15,3,10,68\\n52,48\\n5,39,10,30,15\\n4,1,43,7,7,38\\n2,1,15,29,2,2,1,17,30\\n5,6,2,5,10,6,10,2,21,19,14\\n18,82\\n18,2,81\\n19,36,45\\n21,1,1,26,52\\n8,67,2,1,5,16,1\\n4,86,9\\n1,3,2,1,14,26,2,5,38,6,3\\n3,15,17,1,8,51,4\\n4,87,3,3,2\\n5,90,1,4\\n1,10,84,1,4\\n9,32,2,7,49\\n58,2,40\\n9,11,80\\n48,52\\n1,17,18,5,8,50\\n24,58,18\\n12,57,5,6,19\\n50,18,31\\n10,90\\n1,99\\n100\\n90,7,3\\n21,78\\n28,39,11,11,5,5,2\\n100\\n96,2,2\\n35,38,26\\n52,4,44\\n3,16,10,11,20,17,21,1\\n63,8,8,20\\n11,6,1,6,23,12,40\\n12,1,7,43,18,19\\n8,4,32,25,32\\n58,42\\n40,23,10,27\\n16,35,42,7\\n54,39,7\\n43,32,24\\n18,21,2,3,7,50\\n21,79\\n50,13,13,18,6\\n43,32,12,13\\n37,6,33,24\\n3,97\\n2,5,91,3\\n13,24,14,22,27\\n7,9,8,46,29\\n100\\n89,4,3,4\\n6,94\\n7,10,36,12,20,12,2\\n20,6,7,4,4,8,21,29\\n95,2,3\\n24,27,30,1,1,16,1\\n50,38,12\\n40,42,9,1,1,2,1,5\\n7,58,9,26\\n4,86,9\\n90,10\\n100\\n29,71\\n21,17,6,56\\n100\\n28,25,47\\n100\\n99,1\\n10,3,87\\n68,6,26\\n4,25,7,62,2\\n35,2,2,13,48\\n52,3,3,3,1,1,37\\n31,61,8\\n3,63,33\\n3,2,26,68\\n7,93\\n30,34,35\\n37,63\\n9,91\\n28,1,1,1,28,41\\n18,19,7,27,7,23\\n6,62,21,11\\n100\\n2,98\\n34,9,3,12,41\\n10,1,1,1,1,88\\n43,44,8,5\\n17,13,2,68\\n12,11,1,6,59,10\\n39,2,59\\n13,10,12,2,24,9,11,7,10,1\\n8,4,6,3,4,7,9,8,4,4,4,6,9,22,1\\n1,3,1,1,1,94\\n96,4\\n79,3,9,8\\n20,80\\n19,20,21,41\\n9,4,14,5,65,3\\n8,68,4,20,1\\n7,27,2,35,30\\n100\\n98,2\\n100\\n6,8,13,19,3,13,38\\n6,5,7,16,14,30,1,9,12\\n100\\n100\\n100\\n1,11,6,6,14,8,20,34\\n100\\n52,48\\n6,24,10,11,8,3,18,20\\n99,1\\n7,42,52\\n15,55,30\\n8,61,26,5\\n100\\n100\\n23,5,2,32,39\\n1,25,17,57\\n100\\n100\\n1,74,25\\n63,37\\n42,58\\n75,4,21\\n13,88\\n1,4,95\\n1,60,6,34\\n100\\n40,4,43,10,3\\n30,26,43,1\\n41,12,9,34,4\\n7,5,4,3,8,6,10,1,1,2,17,35\\n69,3,9,10,6,3\\n67,33\\n23,37,22,18\\n3,97\\n19,6,29,2,1,3,21,8,3,4,5\\n83,10,2,2,3,1\\n100\\n26,14,10,50\\n14,37,15,6,27\\n100\\n62,9,29\\n69,10,4,5,7,5\\n99,1\\n100\\n100\\n100\\n100\\n100\\n99,1\\n39,61\\n76,24\\n77,23\\n13,49,38\\n93,6,1\\n67,33\\n97,3\\n2,98\\n100\\n100\\n100\\n100\\n3,9,14,3,61,4,1,1,4\\n28,55,17\\n4,4,91,1\\n3,1,1,3,21,8,4,21,5,3,6,1,12,11\\n8,6,21,33,32\\n51,49\\n4,2,94\\n10,19,13,57\\n88,12\\n98,2\\n100\\n14,3,1,1,1,1,1,4,1,5,1,6,60\\n28,3,7,1,2,1,57\\n9,89,3\\n28,17,13,1,13,27\\n5,95\\n97,1,2\\n100\\n100\\n1,33,40,9,16,1,1\\n10,1,23,4,1,29,11,19,3\\n1,5,31,19,12,31,2\\n100\\n34,3,12,5,3,2,8,4,26,3\\n27,4,10,29,26,3,1\\n76,21,3\\n37,10,24,9,9,2,5,5\\n61,16,15,4,4\\n100\\n89,11\\n12,37,13,37\\n100\\n38,58,4,1\\n58,9,33\\n6,26,14,8,6,10,3,2,2,7,2,1,1,3,5,4\\n4,84,12\\n83,17\\n41,28,2,11,19\\n8,26,66\\n1,7,11,22,5,1,34,12,2,3,1\\n2,1,28,6,12,11,40\\n2,4,7,84,2\\n35,7,24,33\\n100\\n10,58,32\\n16,61,11,3,4,4\\n11,41,42,5\\n100\\n2,2,8,20,9,59\\n2,4,4,11,43,36\\n11,1,2,2,85\\n100\\n85,15\\n1,5,4,3,77,10\\n99,1\\n100\\n100\\n3,32,19,7,14,25\\n9,7,3,7,1,1,16,21,10,25\\n42,13,16,7,21,1\\n10,3,59,14,14\\n16,4,8,72\\n19,18,54,9\\n16,16,4,10,7,3,2,4,23,7,2,4\\n5,23,14,14,27,5,13\\n86,14\\n100\\n19,4,77\\n21,28,5,34,12\\n100\\n14,86\\n7,92,1\\n42,5,1,51\\n72,28\\n18,82\\n100\\n1,41,10,32,6,10\\n8,29,1,18,2,17,25\\n2,17,15,22,4,2,4,6,4,2,18,3\\n92,2,6\\n42,15,27,12,3\\n95,5\\n72,28\\n100\\n4,96\\n100\\n100\\n2,98\\n3,22,8,67\\n1,1,15,13,3,4,14,49\\n13,3,80,2,2\\n1,99\\n71,6,13,10\\n4,91,6\\n100\\n100\\n9,18,9,29,35,1,1\\n8,17,11,11,53\\n1,99\\n22,78\\n100\\n2,20,26,30,5,4,13\\n28,72\\n100\\n60,8,1,30\\n46,5,6,1,7,13,23\\n3,1,96\\n100\\n54,21,7,9,10\\n24,10,13,5,3,15,7,11,12\\n1,5,93\\n5,55,39\\n100\\n57,9,34\\n71,29\\n11,44,12,33\\n99,1\\n1,26,24,8,41\\n15,13,21,24,27\\n100\\n100\\n100\\n22,22,37,20\\n11,55,30,3\\n100\\n9,17,1,35,30,8\\n100\\n7,34,13,1,7,38\\n98,2\\n100\\n56,27,16\\n19,81\\n100\\n100\\n100\\n100\\n43,29,26,1,1\\n4,1,27,19,49\\n7,34,49,10\\n8,92\\n16,84\\n3,98\\n46,54\\n5,95\\n100\\n79,21\\n100\\n65,8,1,26,1\\n19,9,12,60\\n12,1,16,5,1,4,63\\n100\\n100\\n100\\n1,99\\n5,20,75\\n25,2,72\\n78,22\\n69,16,9,5\\n64,36\\n59,5,1,3,5,27\\n83,17\\n55,5,40\\n73,27\\n63,2,3,32\\n10,35,5,14,17,17\\n1,1,9,2,19,1,1,3,10,6,5,38,1,5\\n1,1,1,1,18,17,1,24,3,8,9,3,2,10\\n43,57\\n55,8,14,8,15\\n84,2,14\\n1,34,64,1\\n100\\n100\\n100\\n72,14,14\\n100\\n3,22,12,1,62\\n100\\n17,5,1,1,7,70\\n100\\n50,19,26,5\\n76,24\\n21,10,40,27,1,1\\n33,46,13,8\\n100\\n26,73,1\\n100\\n100\\n86,13\\n19,12,5,39,12,12\\n1,1,93,1,5,1\\n81,19\\n1,30,70\\n31,8,50,11\\n20,80\\n100\\n100\\n100\\n15,38,47\\n100\\n15,40,45\\n9,91\\n100\\n100\\n100\\n100\\n100\\n100\\n5,80,14\\n1,10,19,4,1,17,42,1,6\\n65,32,2\\n8,4,12,52,4,19,1\\n100\\n1,5,21,4,1,38,31\\n100\\n4,73,23\\n100\\n90,1,5,3\\n17,6,2,52,11,11\\n100\\n100\\n100\\n3,4,7,74,12\\n100\\n69,31\\n22,78\\n57,41,1,1\\n4,6,58,20,3,5,4\\n100\\n100\\n4,77,19\\n2,4,3,1,5,3,63,18\\n46,2,1,51\\n100\\n100\\n2,6,2,89\\n31,4,22,2,2,5,1,1,30\\n27,21,5,2,4,3,2,16,19\\n35,15,17,19,1,1,2,9,1,1\\n91,3,2,1,3\\n1,8,17,10,65\\n29,2,27,42\\n2,6,4,18,8,51,2,9\\n10,5,34,52\\n74,5,3,6,1,1,1,1,1,1,1,2,1\\n40,1,2,1,2,3,2,42,1,6\\n24,76\\n90,3,4,2\\n79,11,11\\n14,86\\n1,99\\n91,1,3,5\\n5,5,89\\n100\\n100\\n7,39,53\\n79,21\\n100\\n100\\n97,3\\n100\\n3,97\\n24,70,6\\n100\\n100\\n53,1,3,19,24\\n88,12\\n78,22\\n100\\n100\\n41,9,50\\n59,40,1\\n100\\n71,15,13\\n100\\n100\\n100\\n53,6,6,34\\n13,4,6,13,56,7\\n56,34,2,2,1,5\\n5,58,6,30\\n74,26\\n100\\n38,22,7,32,1\\n3,48,50\\n100\\n41,10,49\\n2,98\\n76,24\\n99,1\\n82,10,8\\n100\\n100\\n14,28,1,8,24,25\\n100\\n6,1,15,15,1,7,2,21,26,6\\n11,49,40\\n4,1,94,1\\n56,19,2,9,13\\n2,1,36,62\\n13,87\\n1,81,19\\n45,55\\n51,29,19\\n100\\n6,94\\n71,1,6,6,5,5,6,1\\n100\\n18,65,8,3,2,4\\n1,1,18,1,33,19,20,1,6\\n100\\n100\\n24,76\\n11,49,40\\n5,25,3,2,2,13,5,34,11\\n100\\n9,5,86\\n4,17,77,1\\n45,50,4,1,1\\n100\\n33,55,12\\n55,45\\n100\\n100\\n15,85\\n4,8,49,40\\n43,16,2,24,2,6,7,1\\n4,56,2,4,32,1\\n2,8,11,80\\n5,95\\n66,29,5\\n2,31,10,57\\n13,87\\n100\\n2,18,4,2,73\\n100\\n4,92,2,2\\n8,6,4,4,1,77\\n69,31\\n32,68\\n12,1,31,4,51\\n100\\n3,97\\n17,83\\n100\\n91,5,5\\n7,9,1,18,66\\n21,79\\n1,4,67,29\\n89,7,1,1,1,1,2,1\\n1,43,21,2,17,2,15\\n100\\n82,14,5\\n15,26,34,25\\n100\\n100\\n2,97\\n1,9,1,7,62,20\\n91,7,1\\n1,1,1,23,73,1,1\\n2,4,90,5\\n12,11,6,2,3,2,45,3,16\\n11,2,10,11,39,27\\n100\\n100\\n100\\n28,18,2,1,17,33\\n21,35,23,4,16\\n23,77\\n46,15,3,6,14,13,2\\n37,18,46\\n99\\n18,4,4,6,10,13,45\\n96,4\\n44,38,10,8\\n13,3,59,25\\n3,2,39,57\\n80,20\\n79,21\\n20,35,4,4,5,6,5,13,6\\n5,91,4\\n95,3,1\\n1,1,2,1,64,32\\n100\\n88,2,3,2,6\\n68,13,18\\n14,16,70\\n91,9\\n100\\n5,22,72\\n10,90\\n46,41,14\\n83,2,3,11,1\\n16,36,22,9,17\\n25,11,20,22,22\\n37,23,22,1,10,8\\n55,2,1,1,1,2,29,5,5\\n4,36,21,34,2,4\\n50,49\\n96,2,2\\n93,2,3,2\\n99\\n93,7\\n3,1,95\\n19,12,62,3,4\\n6,1,4,1,2,28,20,4,32,1,1,1\\n7,3,25,63,1,1\\n16,7,10,7,13,47\\n41,8,50\\n1,3,54,42\\n1,58,9,31\\n2,47,51\\n2,34,8,10,46\\n1,4,1,2,58,1,16,8,11\\n9,64,23,3\\n32,6,3,19,15,2,2,13,6,3\\n1,4,15,29,14,11,4,2,2,9,1,1,2,1,1,3\\n27,3,8,15,10,5,14,6,10,2\\n46,3,25,3,6,9,1,3,3\\n71,17,13\\n27,18,25,24,5\\n3,3,19,5,51,18,1\\n2,25,26,7,38,2\\n88,12\\n52,44,5\\n26,5,4,54,11\\n3,8,4,16,12,24,5,27\\n26,5,8,27,34,1\\n5,80,1,13,1\\n56,8,36\\n73,1,6,20\\n39,36,22,1,1,1,1,1\\n100\\n97,3\\n81,12,3,3\\n27,6,22,30,14\\n1,99,1\\n19,81\\n49,51\\n5,95\\n4,5,2,88\\n2,77,20\\n35,32,29,4\\n24,76\\n17,4,3,76\\n1,99\\n7,93\\n9,91\\n99,1\\n100\\n100\\n3,97\\n47,49,4\\n1,1,9,90\\n8,8,76,1,8\\n6,49,1,31,4,1,8\\n49,5,46\\n50,2,49\\n4,42,54\\n19,3,21,56\\n40,13,47\\n17,6,6,7,13,50\\n56,44\\n1,99\\n22,30,8,40\\n1,5,1,70,24\\n10,61,27,1,2\\n7,69,22,2\\n1,99\\n50,26,24\\n47,2,28,2,21\\n30,65,2,1\\n1,6,22,21,14,36\\n100\\n32,41,26\\n33,46,1,20\\n100\\n96,3\\n42,54,1,2,1\\n64,1,26,9\\n69,25,1,5\\n100\\n100\\n20,53,7,6,14\\n21,79\\n19,3,41,37\\n29,71\\n100\\n57,43\\n91,9\\n100\\n100\\n100\\n31,69\\n74,26\\n100\\n94,2,2\\n1,79,20,1\\n96,4\\n100\\n51,2,47\\n50,1,2,47\\n80,19,1\\n43,7,46,3,1\\n44,16,13,27\\n12,13,10,35,29\\n19,21,60\\n45,23,33\\n26,74\\n3,9,23,36,28\\n60,40\\n69,31\\n1,1,1,1,20,8,3,38,25\\n1,2,1,2,7,2,85\\n10,2,21,49,17\\n30,27,1,8,1,21,5,8\\n5,95\\n55,20,24\\n1,1,1,5,1,1,1,1,70,19\\n13,87\\n35,28,23,6,2,4,2\\n1,12,57,18,1,8,2\\n5,8,16,4,59,8\\n7,24,22,47\\n95,4\\n27,6,6,7,4,50\\n7,9,35,7,21,17,4,1\\n1,99\\n1,10,1,1,48,1,1,36\\n2,2,8,2,2,83,2\\n7,1,92,1\\n1,99\\n34,14,2,5,45\\n76,24\\n77,23\\n5,3,9,83\\n100\\n100\\n15,50,6,5,16,9\\n4,96\\n5,33,37,26\\n79,21\\n100\\n36,40,24\\n38,62\\n44,5,29,22\\n19,4,28,17,32\\n3,61,12,23\\n2,66,32\\n8,10,3,4,75\\n2,3,2,4,2,74,12\\n86,14\\n6,73,7,14\\n100\\n22,78\\n1,88,7,4\\n100\\n2,85,12,1\\n18,17,16,3,2,26,1,17\\n100\\n79,21\\n71,29\\n23,77\\n21,42,37\\n33,60,6\\n100\\n72,22,4,1\\n74,26\\n74,7,19\\n100\\n45,25,30\\n100\\n16,82,3\\n3,19,38,14,4,10,12\\n1,57,7,12,22\\n4,96\\n100\\n99,1\\n2,12,36,28,12,2,1,1,6\\n5,18,16,61\\n51,4,6,2,2,31,4\\n7,5,69,15,4\\n1,2,1,1,34,40,20\\n14,66,20\\n1,3,7,2,87\\n2,6,92\\n7,3,2,5,3,40,10,30\\n95,4,1\\n11,3,55,31\\n40,51,2,8\\n18,24,58\\n22,78\\n9,91\\n2,2,12,29,55\\n3,3,94\\n7,4,74,14\\n100\\n82,3,14\\n6,53,15,22,3,1\\n1,43,31,21,5\\n6,2,92\\n2,98\\n2,98\\n100\\n5,72,23\\n3,1,18,61,16,1\\n28,20,50,2\\n16,21,63\\n27,9,41,6,16\\n35,65\\n70,6,2,3,16,3\\n72,6,4,1,3,3,11\\n20,20,1,58\\n100\\n100\\n1,36,39,24\\n4,33,51,12\\n100\\n94,6\\n1,1,14,7,5,12,6,8,44,3\\n34,2,30,4,8,6,7,9\\n2,4,5,89\\n98,2\\n41,41,17\\n12,13,5,61,6,3\\n100\\n100\\n1,7,48,6,4,33,1\\n60,5,1,2,1,31,1\\n91,9\\n70,30\\n61,9,1,29\\n81,19\\n5,20,5,70\\n100\\n75,25\\n72,27,1\\n100\\n100\\n3,3,1,4,3,2,84\\n100\\n8,21,72\\n8,3,45,44\\n8,9,82\\n26,20,12,7,30,6\\n46,5,49\\n100\\n100\\n100\\n1,1,1,1,84,11,1\\n10,67,2,19,2\\n2,86,6,5\\n1,2,83,14\\n35,65\\n31,69\\n78,22\\n20,21,19,9,30\\n75,20,6\\n89,10\\n100\\n26,1,1,73\\n59,34,1,1,4,1\\n32,1,67\\n12,5,77,3,3\\n1,94,5\\n1,6,10,84\\n100\\n9,91\\n1,1,22,28,8,4,9,1,27\\n1,8,1,1,9,62,1,17,1\\n3,3,5,76,3,6,4\\n5,13,5,35,7,29,5\\n1,99\\n10,89\\n88,12\\n96,4\\n95,5\\n27,1,16,55,1\\n15,1,1,83\\n1,1,8,7,3,5,2,10,5,6,10,7,3,31\\n1,8,2,12,2,3,63,4,1,4\\n9,4,1,1,26,7,13,6,34\\n1,6,67,9,8,10\\n4,82,6,8\\n4,1,2,4,51,38\\n31,69\\n32,43,25\\n29,38,33\\n28,72\\n46,17,31,6\\n99,1\\n100\\n1,28,71\\n5,11,8,76\\n11,8,11,5,10,13,12,18,12\\n4,2,22,45,2,14,9\\n24,8,7,56,4\\n40,60\\n1,2,53,19,24\\n1,2,69,14,14\\n99,1\\n1,1,98\\n1,71,2,26\\n55,11,4,29\\n2,42,48,2,7\\n8,1,63,5,6,14,1,1\\n60,30,11\\n30,46,23\\n22,13,6,23,35,1\\n10,9,5,2,3,72\\n1,6,1,1,2,1,4,86\\n1,1,53,46\\n1,3,58,38\\n3,33,24,20,20\\n1,39,60\\n10,18,21,1,34,17\\n1,1,34,1,1,2,9,5,48\\n51,12,1,3,29,4\\n90,10\\n8,8,30,15,7,2,5,25\\n100\\n100\\n15,4,80\\n100\\n77,23\\n100\\n100\\n64,5,15,16\\n57,43\\n100\\n57,43\\n97,3\\n84,4,2,3,6\\n100\\n5,94,1\\n8,91,1\\n14,5,18,8,13,40,3\\n85,15\\n1,85,7,1,4,1\\n68,26,3,1,1\\n19,22,19,5,2,8,4,3,17\\n14,1,9,3,5,29,1,7,24,8\\n1,1,77,1,13,7,1\\n56,1,32,11\\n23,76\\n5,68,3,3,10,9\\n98,2\\n100\\n28,31,40,1\\n42,23,18,17\\n19,25,2,23,31\\n100\\n74,18,8\\n8,10,75,7\\n100\\n100\\n100\\n100\\n100\\n53,47\\n35,1,65\\n47,53\\n100\\n100\\n100\\n14,86\\n29,11,19,8,13,20\\n63,37\\n48,4,48\\n22,21,57\\n100\\n50,50\\n78,22\\n10,8,82\\n100\\n100\\n1,2,6,2,1,4,1,7,16,58,1\\n53,14,22,11\\n25,75\\n84,6,4,5\\n4,13,83\\n52,48\\n24,76\\n92,8\\n98,2\\n100\\n9,9,21,20,41\\n52,48\\n100\\n100\\n2,98\\n37,63\\n100\\n79,7,5,1,1,4,1,1,1,1\\n22,31,43,4\\n100\\n94,5,1\\n8,14,19,32,26\\n57,2,2,5,4,6,1,11,13\\n3,34,27,36\\n100\\n16,17,67\\n99,1\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n12,87,1\\n26,18,27,9,3,18\\n2,98\\n12,88\\n1,3,94,1,1\\n5,95\\n75,25\\n100\\n99,1\\n100\\n56,17,27\\n30,1,1,69\\n82,18\\n44,9,2,3,18,25\\n16,35,49\\n100\\n15,71,14\\n6,37,54,2,1\\n6,3,13,24,53\\n35,64\\n10,61,29\\n100\\n99,1\\n100\\n6,3,2,10,6,1,7,3,2,2,10,8,25,5,3,8\\n2,1,1,23,3,15,55\\n100\\n1,10,1,56,29,1\\n19,25,2,2,4,3,14,2,12,16\\n9,91\\n1,53,3,16,27\\n1,34,2,2,8,3,51\\n21,77,2\\n79,6,15\\n100\\n78,3,19\\n9,34,54,3\\n28,72\\n14,11,9,65\\n100\\n11,79,11\\n9,91\\n100\\n31,22,7,22,17,1\\n25,73,2\\n1,79,21\\n45,55\\n39,5,2,54\\n67,33\\n100\\n100\\n49,48,2,1\\n100\\n91,9\\n100\\n39,1,6,3,7,28,16\\n11,1,14,2,73\\n83,17\\n100\\n100\\n16,25,11,32,1,1,1,8,1,4\\n1,1,4,6,3,3,3,1,1,1,18,15,19,8,15,1\\n96,1,3\\n100\\n100\\n100\\n100\\n100\\n8,62,31\\n100\\n91,3,3,3,2\\n41,4,6,6,16,24,4\\n8,4,14,75\\n20,68,5,5,1,1,1\\n100\\n100\\n83,15,2\\n1,8,2,9,75,5\\n100\\n86,5,9\\n6,6,18,10,17,1,1,31,10\\n1,78,21\\n90,2,8\\n34,29,1,9,7,20\\n100\\n57,2,1,40\\n78,11,1,9\\n100\\n19,81\\n11,11,13,17,7,5,4,28,5,1\\n5,19,15,21,28,11\\n3,6,5,1,23,12,2,37,10\\n1,1,38,59,1\\n100\\n3,2,95\\n46,50,3\\n20,55,9,12,3\\n13,27,8,23,27,1,1\\n100\\n100\\n100\\n12,28,60\\n43,57\\n93,4,4\\n39,51,10\\n100\\n65,33,2\\n100\\n71,1,7,12,9\\n5,59,36\\n3,6,6,17,68\\n44,56\\n27,16,3,3,47,3,2\\n58,14,6,4,3,3,4,9\\n1,1,1,96,1\\n55,25,20\\n63,2,20,10,5\\n52,37,4,4,4\\n14,66,13,7\\n13,18,8,55,6,1\\n1,43,43,2,1,1,1,8\\n58,25,1,17\\n10,44,13,32\\n100\\n100\\n100\\n6,9,85\\n100\\n57,43\\n1,32,67\\n33,9,1,8,38,2,7\\n3,9,8,33,1,6,6,3,8,23\\n5,6,4,19,17,27,20,2\\n2,39,19,33,7\\n100\\n2,71,5,8,13\\n13,38,48\\n67,19,14\\n2,67,16,14\\n58,2,1,7,32\\n40,5,55\\n29,31,33,4,3\\n46,54\\n42,58\\n29,25,46\\n51,19,31\\n2,7,4,2,1,17,23,32,11\\n15,2,47,1,5,3,5,5,16\\n59,3,37\\n55,42,3\\n2,33,5,56,4\\n49,51\\n63,21,16\\n8,11,5,22,4,3,2,22,1,23,1\\n10,3,45,33,10\\n37,19,24,20\\n1,51,1,3,1,1,8,2,33\\n48,22,19,11\\n46,37,17\\n4,52,44\\n100\\n89,11\\n18,82\\n40,17,18,3,21,1\\n5,3,92\\n15,1,51,33\\n27,23,50\\n1,62,37\\n51,49\\n65,2,2,27,2,2\\n33,42,15,10\\n41,1,1,1,32,7,1,6,1,3,8\\n10,13,14,22,41\\n72,28\\n38,62\\n3,3,4,4,1,5,5,2,3,10,4,4,6,4,3,34,6\\n38,62\\n23,1,1,2,1,4,1,1,1,2,5,2,55\\n82,5,11,1\\n26,74\\n35,21,4,29,10\\n3,6,9,6,4,53,20\\n75,25\\n71,29\\n95,1,4\\n41,7,2,9,3,6,31\\n100\\n66,9,1,4,20\\n1,1,5,15,15,9,16,3,1,34\\n100\\n100\\n40,7,18,5,1,2,8,2,6,10,1\\n34,31,1,1,2,1,8,6,1,8,4,1\\n45,32,1,1,1,1,1,2,3,6,7\\n8,32,20,28,6,6\\n1,1,90,8\\n12,10,11,17,5,5,17,23\\n29,15,12,43\\n91,1,1,4,1,1,3,1\\n78,2,12,5,2\\n33,67\\n100\\n100\\n4,96\\n100\\n6,38,25,31\\n100\\n71,13,16\\n11,30,59\\n5,52,2,12,30\\n13,2,85\\n7,3,1,17,6,21,10,35\\n100\\n4,2,3,4,87\\n100\\n100\\n5,3,8,7,2,3,1,3,54,3,11\\n7,5,8,1,1,4,3,2,27,29,13\\n69,10,4,1,10,6\\n71,21,1,6,1\\n39,50,10,1\\n9,17,13,5,24,32\\n5,5,1,5,21,27,36\\n34,66\\n5,95\\n100\\n25,37,2,1,36\\n1,99\\n47,30,23\\n100\\n11,13,8,14,35,19\\n51,4,45\\n100\\n33,67\\n100\\n7,11,6,29,41,5\\n18,73,1,8,1\\n100\\n48,2,51\\n100\\n9,44,47\\n68,1,16,8,7\\n19,53,1,13,14\\n5,3,42,34,16\\n100\\n47,15,21,2,15\\n19,29,52\\n21,5,1,1,1,4,4,62\\n7,20,1,72\\n33,2,4,61\\n50,50\\n36,6,6,23,30\\n54,45\\n27,2,1,2,2,3,1,2,4,2,1,1,50\\n36,3,9,1,1,1,15,1,7,25\\n1,39,2,4,1,5,33,1,3,2,8\\n4,13,4,8,10,12,32,4,2,7,4\\n73,27\\n24,76\\n60,20,17,4\\n71,5,1,1,21\\n56,41,1,3\\n47,40,12\\n63,4,6,1,2,15,1,2,4,1\\n20,16,22,42\\n67,33\\n87,13\\n68,1,15,11,6\\n81,13,6,1\\n31,12,8,43,4\\n20,14,26,1,1,1,1,7,2,2,3,17,3,3\\n100\\n2,22,18,1,53,3\\n4,3,5,16,12,1,4,39,8,8\\n13,43,1,30,13,1\\n1,6,17,38,1,37\\n1,15,84\\n3,35,62\\n60,39\\n12,76,12\\n100\\n100\\n91,9\\n92,8\\n74,19,6\\n93,7\\n100\\n100\\n38,2,11,10,39\\n5,7,87\\n7,30,44,8,11\\n3,97\\n71,20,10\\n79,21\\n100\\n100\\n13,87\\n97,1,2\\n100\\n42,57\\n15,2,83\\n100\\n32,68\\n31,61,8\\n27,9,13,2,6,42\\n74,1,7,17\\n31,69\\n100\\n100\\n4,96\\n100\\n33,10,9,19,5,12,5,8\\n7,6,16,3,3,6,13,20,25\\n100\\n3,97\\n100\\n100\\n100\\n5,4,1,74,6,9\\n92,4,4\\n22,78\\n77,12,12\\n100\\n100\\n100\\n100\\n3,3,10,1,2,4,1,3,1,8,2,8,12,41\\n77,8,3,11\\n100\\n100\\n98,2\\n37,63\\n93,7\\n100\\n100\\n85,8,7\\n1,1,37,7,5,2,47\\n15,85\\n36,17,19,21,7\\n100\\n100\\n12,19,26,12,5,11,11,6\\n20,7,36,1,4,17,5,8,1\\n32,6,6,16,20,4,2,2,10\\n61,2,2,3,2,31\\n96,4\\n58,42\\n81,19\\n62,38\\n53,15,20,13\\n1,1,51,23,19,5\\n100\\n15,52,33\\n6,49,44\\n100\\n100\\n25,75\\n12,10,9,66,2\\n14,15,72\\n33,67\\n32,47,21\\n1,99\\n50,50\\n39,30,32\\n62,7,31\\n61,1,7,25,1,5\\n100\\n34,66\\n5,4,91\\n4,6,1,89\\n2,5,63,30\\n76,24\\n48,31,1,1,1,18\\n100\\n4,1,2,15,14,64\\n22,24,54\\n72,22,3,2\\n59,16,24\\n1,3,78,18\\n8,3,6,2,12,10,1,1,1,5,2,3,20,9,16\\n16,5,14,12,13,15,3,5,10,2,2\\n100\\n1,2,5,1,1,76,14\\n100\\n100\\n100\\n100\\n100\\n100\\n67,33\\n72,7,4,16\\n100\\n100\\n100\\n100\\n17,23,60\\n30,48,22\\n100\\n100\\n100\\n95,5\\n1,1,17,80\\n100\\n100\\n54,45\\n88,5,5,1\\n100\\n100\\n4,96\\n100\\n15,85\\n78,13,5,4\\n30,70\\n100\\n48,45,7\\n100\\n100\\n28,22,50\\n32,56,11\\n100\\n53,9,5,3,11,9,6,4\\n50,50\\n59,9,9,2,14,6,1\\n37,63\\n21,1,10,4,40,8,1,1,1,1,11,2\\n45,36,5,11,1,1,1\\n75,25\\n37,9,9,9,34,2,1\\n26,7,6,59,1,1\\n78,19,3\\n30,15,22,32\\n24,24,52\\n14,39,47\\n100\\n76,24\\n78,1,21\\n42,17,5,9,27\\n4,1,96\\n5,93,2\\n36,8,5,5,1,3,13,14,14\\n1,1,28,47,22\\n100\\n100\\n67,3,1,1,2,3,4,7,5,7\\n69,4,2,26\\n100\\n95,5\\n100\\n100\\n100\\n38,7,8,34,5,8\\n73,1,1,1,3,9,6,5\\n3,4,93\\n7,93\\n6,10,12,8,62\\n28,68,3\\n6,18,1,1,2,1,1,8,10,52\\n100\\n100\\n3,97\\n92,8\\n2,1,3,7,38,48\\n92,8\\n36,3,3,15,2,41\\n2,43,20,33\\n45,13,5,15,22\\n15,22,2,1,2,1,54,1\\n7,2,25,1,66\\n3,41,24,12,20\\n3,1,39,3,26,12,17\\n61,22,1,17\\n1,2,1,4,77,3,12\\n4,58,38\\n4,8,34,54\\n17,21,21,31,9,1\\n100\\n86,2,3,1,8\\n100\\n100\\n75,3,1,3,1,1,4,13\\n25,41,5,8,20\\n100\\n100\\n41,3,56\\n24,3,2,16,7,4,42\\n12,4,40,26,9,8\\n26,9,5,1,6,18,14,21\\n7,2,3,17,11,2,1,2,36,17\\n1,1,15,3,15,36,1,8,19\\n18,70,6,6\\n94,2,4\\n29,5,43,15,7\\n100\\n6,7,1,1,1,13,71\\n9,91\\n95,1,4,1\\n87,13\\n97,3\\n100\\n99,1\\n100\\n6,94\\n5,7,70,18\\n8,46,19,26\\n90,10\\n65,22,13\\n71,17,12\\n10,10,80\\n21,25,3,51\\n54,3,43\\n60,40\\n100\\n15,6,1,11,10,1,56\\n77,23\\n75,25\\n3,78,19\\n26,26,21,20,8\\n9,54,37\\n22,21,19,38\\n21,79\\n100\\n82,4,14\\n52,23,14,11\\n100\\n81,19\\n100\\n69,16,15\\n40,54,6\\n99,1\\n100,1\\n100\\n70,29,1\\n8,16,16,60\\n2,98\\n15,4,18,63\\n100\\n21,12,67\\n93,7\\n31,16,54\\n100\\n100\\n90,10\\n34,20,36,10\\n100\\n1,63,7,11,18\\n34,39,27\\n3,11,5,31,16,35\\n97,3\\n100\\n100\\n100\\n8,3,5,13,22,15,10,22\\n69,31\\n2,74,24\\n9,90\\n19,81\\n96,4\\n6,2,3,33,57\\n81,7,11\\n29,71\\n100\\n95,5\\n15,84\\n1,36,9,3,18,22,10,1\\n100\\n83,17\\n28,3,6,3,5,4,5,26,20\\n100\\n100\\n2,10,11,1,2,5,4,3,39,22\\n67,10,10,14\\n100\\n26,1,74\\n1,1,7,2,52,37\\n100\\n100\\n1,67,14,18,1\\n73,27\\n30,58,1,11\\n100\\n2,45,53\\n100\\n100\\n11,72,9,8\\n18,28,54\\n7,47,46\\n21,2,1,3,74\\n19,24,26,28,1,1,1,1\\n100\\n100\\n4,6,53,37\\n3,2,5,90\\n41,59\\n82,18\\n4,3,18,8,8,23,38\\n31,51,4,9,4\\n72,12,16\\n33,20,16,1,27,3\\n100\\n100\\n65,34\\n41,52,7\\n1,1,32,27,10,30\\n16,8,8,17,9,41\\n14,20,4,4,49,8\\n70,10,14,1,6\\n74,13,14\\n3,10,11,73,2\\n6,11,16,4,8,51,4\\n5,12,5,17,4,17,41\\n9,2,89\\n14,33,47,5\\n84,10,7\\n7,87,7\\n23,10,44,24\\n13,6,9,12,6,14,2,32,5\\n11,4,2,5,25,7,7,23,2,2,5,6\\n97,3\\n2,2,7,2,88\\n6,94\\n1,1,13,10,37,7,2,9,9,5,6\\n1,2,96\\n100\\n6,7,87\\n31,3,18,15,33,1\\n1,99\\n100\\n5,95\\n100\\n6,94\\n1,31,68\\n32,1,2,8,4,53\\n5,95\\n75,12,7,1,5\\n100\\n100\\n100\\n97,1,2\\n4,96\\n100\\n33,67\\n100\\n40,31,19,9\\n100\\n6,38,55,1\\n100\\n88,10,1,1,1\\n60,40\\n10,6,10,9,57,9\\n26,64,10\\n17,14,60,9\\n5,2,2,2,2,37,31,7,11\\n28,6,3,6,38,10,2,6\\n13,7,6,3,15,5,11,3,8,3,24\\n27,1,26,4,6,19,16\\n32,11,23,33\\n13,10,12,10,9,46\\n100\\n46,2,27,22,4\\n90,10\\n27,73\\n100\\n19,81\\n100\\n47,53\\n1,34,26,1,39\\n87,13\\n15,9,23,9,44\\n9,91\\n100\\n39,35,12,13\\n50,50\\n49,51\\n41,7,4,1,47\\n58,42\\n55,10,8,5,7,14\\n46,54\\n75,1,24\\n100\\n22,2,1,1,2,71\\n100\\n29,14,6,29,20,2\\n19,1,80\\n100\\n5,1,31,63\\n35,8,57\\n85,15\\n4,1,94\\n27,27,12,4,29\\n100\\n92,5,4\\n35,3,58,3\\n65,35\\n33,56,3,8\\n1,99\\n23,77\\n100\\n29,71\\n100\\n2,4,10,84\\n13,16,1,70\\n5,12,1,82\\n100\\n1,1,18,8,5,68\\n100\\n22,34,44\\n100\\n11,89\\n6,1,93\\n100\\n100\\n12,17,72\\n87,6,7\\n89,11\\n100\\n100\\n100\\n98,2\\n100\\n91,9\\n1,1,18,79\\n2,6,1,1,92\\n7,3,22,26,19,8,15\\n100\\n100\\n79,21\\n85,15\\n100\\n14,10,1,74\\n83,18\\n10,33,1,1,1,2,52\\n90,1,8\\n3,3,28,6,60\\n84,16\\n100\\n5,95\\n16,24,60\\n100\\n100\\n3,2,44,50\\n2,91,7\\n100\\n100\\n1,1,99\\n24,76\\n23,19,36,22\\n70,28,3\\n78,7,5,5,2,4\\n20,17,3,3,43,2,11,1\\n31,61,7\\n3,97\\n100\\n100\\n100\\n1,71,29,1\\n28,72\\n77,2,21\\n57,4,40\\n3,51,3,8,34\\n37,22,25,16\\n70,1,18,11\\n68,1,4,21,3,1,1\\n81,19\\n85,15\\n7,4,7,13,68\\n1,46,20,34\\n3,83,3,6,5\\n4,78,1,13,3,2\\n96,4\\n91,9\\n14,59,25,1,1\\n77,23\\n99,1,1\\n3,90,7\\n90,10\\n32,4,7,19,38\\n13,70,10,5,2\\n10,4,85,1,1\\n44,7,23,3,18,6\\n100\\n49,27,4,20\\n1,68,19,11\\n2,1,71,4,10,12\\n71,1,4,1,22,1\\n43,56\\n91,9\\n5,95,1\\n47,46,2,1,1,3\\n38,1,1,56,2,3\\n13,7,53,26,1\\n100\\n100\\n98,1\\n3,47,50\\n4,52,1,43\\n84,1,16\\n89,11\\n88,12\\n24,56,19,1\\n84,13,3\\n49,50\\n66,34\\n71,12,9,8\\n31,69\\n55,45\\n73,14,2,5,5\\n91,1,3,2,3\\n35,45,3,17\\n1,67,5,9,4,15\\n80,19\\n86,7,7\\n59,41\\n69,31\\n27,65,7\\n48,52\\n31,2,67\\n1,3,96\\n67,6,11,7,8\\n1,3,96\\n96,4\\n13,79,7\\n7,86,4,3\\n100\\n4,79,11,6,1\\n94,6\\n63,23,14\\n75,12,13\\n92,2,6\\n6,78,4,5,5,2\\n100\\n69,14,9,5,3\\n76,24\\n22,75,3,1\\n7,61,12,20\\n84,7,1,8\\n38,2,4,1,27,26,2\\n1,1,1,94,2\\n95,5\\n58,40,2\\n46,54\\n88,4,8\\n100\\n63,11,5,2,18\\n50,50\\n7,28,21,16,2,26\\n1,1,38,50,5,5,1\\n50,2,2,2,33,5,6\\n34,1,2,3,60\\n7,37,20,35\\n11,21,1,5,63\\n100\\n100\\n100\\n93,7\\n90,5,5\\n3,97\\n100\\n10,86,4\\n33,8,11,7,17,12,12\\n17,4,6,4,16,3,47,3\\n89,11\\n67,9,12,6,7\\n98,2\\n100\\n100\\n44,5,21,16,14\\n99,1\\n9,89,2\\n90,6,4\\n3,97\\n5,67,10,16,1,1\\n18,82\\n17,83\\n100\\n1,99\\n43,9,5,1,12,30\\n57,1,6,2,6,28\\n15,15,2,35,15,1,10,5,3\\n17,5,32,24,15,7\\n36,18,45,1\\n3,22,26,7,1,5,6,22,8\\n59,2,5,5,30\\n58,12,30\\n16,61,7,15\\n5,16,23,1,1,38,16\\n100\\n8,48,20,20,2,2\\n5,29,6,4,22,7,23,3\\n27,20,53\\n23,61,1,14\\n93,1,6\\n85,1,3,4,6\\n84,16\\n9,6,74,12\\n100\\n100\\n3,5,30,2,1,6,31,9,13\\n48,2,2,18,13,16\\n62,2,3,16,17\\n27,23,6,44\\n1,99\\n100\\n1,19,24,56\\n1,11,8,1,3,10,66\\n55,13,22,9\\n78,22\\n8,92\\n100\\n25,75\\n24,76\\n100\\n1,98\\n61,33,6\\n1,92,6\\n10,90\\n20,75,5\\n4,8,13,24,47,4\\n3,3,11,83\\n41,59\\n42,42,16\\n29,5,4,20,42\\n100\\n100\\n7,90,2\\n39,10,10,40\\n100\\n89,11\\n1,2,97\\n23,76,1\\n55,13,1,25,6\\n70,19,10,2\\n33,52,1,2,5,7\\n2,1,97\\n100\\n10,90\\n100\\n4,49,39,8\\n85,14\\n26,64,9,1\\n42,9,2,2,44\\n29,46,15,11\\n3,4,2,2,32,25,22,9\\n67,33\\n2,3,4,13,58,1,6,5,8\\n68,9,7,16\\n10,78,12\\n2,66,7,9,15\\n4,37,8,52\\n88,11\\n88,11\\n100\\n100\\n62,38\\n9,14,51,23,3\\n21,51,4,13,11\\n2,98\\n12,88\\n5,95\\n11,89\\n1,2,97\\n2,2,7,2,3,83\\n100\\n1,46,53\\n100\\n81,19\\n44,38,4,14\\n55,14,31\\n91,9\\n17,9,7,67\\n1,16,84\\n4,76,15,5\\n100\\n100\\n91,1,2,2,4,1\\n95,5\\n100\\n100\\n1,19,80\\n25,74\\n24,69,6,1\\n60,40\\n1,7,1,76,16\\n17,79,3\\n13,1,80,6\\n52,1,47\\n1,1,3,1,95\\n27,3,70\\n19,6,76\\n47,1,39,13\\n1,99\\n15,12,73\\n100\\n6,3,17,8,3,9,4,1,1,3,46\\n34,5,4,19,18,2,1,16\\n3,97\\n6,20,5,31,3,8,3,3,11,11\\n66,13,7,14\\n83,1,1,1,8,5\\n1,99\\n6,94\\n30,33,6,30\\n51,8,9,10,22\\n13,37,50\\n43,57\\n3,22,28,4,12,31\\n17,7,7,18,50\\n76,17,7\\n22,77,1\\n3,76,21\\n92,5,1,1\\n2,14,3,7,3,1,14,56\\n84,1,15\\n100\\n5,79,5,11\\n87,13\\n78,4,4,14\\n62,5,27,3,4\\n1,1,1,40,36,18,4\\n8,92\\n29,71\\n70,30\\n77,23\\n43,20,14,2,20\\n100\\n2,98\\n24,75\\n25,11,8,32,24\\n83,2,15\\n2,22,51,25\\n10,4,25,59\\n12,25,28,1,33\\n6,18,5,30,37,1,3\\n5,1,9,9,10,9,39,16,2\\n100\\n7,82,11\\n15,85\\n53,2,2,3,4,9,5,21\\n1,10,25,22,37,6,1\\n58,1,38,1,1,1\\n71,9,12,6\\n16,4,2,6,24,1,47\\n4,48,7,41\\n27,6,68\\n82,3,4,1,2,2,1,5\\n2,52,46\\n82,1,16\\n81,19\\n1,5,45,49\\n83,17\\n21,78,1\\n11,25,5,8,7,8,36\\n88,11\\n10,1,88\\n24,7,69\\n67,2,12,19\\n49,51\\n8,23,30,22,16\\n16,66,7,4,6\\n3,10,4,9,7,5,61\\n3,66,6,7,17\\n2,29,27,25,18\\n100\\n12,88\\n100\\n100\\n1,6,3,50,39,1\\n1,4,95,1\\n2,1,97\\n4,5,91\\n2,2,95\\n15,45,40\\n20,15,32,4,29\\n65,35\\n9,1,2,62,26\\n100\\n58,42\\n2,98\\n4,8,4,4,4,75\\n24,75\\n34,65\\n33,67\\n13,11,1,76\\n21,8,36,8,26\\n64,1,35\\n100\\n100\\n37,63\\n30,1,70\\n54,46\\n62,39\\n33,8,5,1,54\\n100\\n100\\n100\\n61,39\\n100\\n13,52,34\\n9,33,3,54\\n45,54,1\\n41,59\\n15,23,62\\n9,12,79\\n53,2,44\\n37,63\\n11,9,8,72\\n100\\n2,7,2,88\\n100\\n21,79\\n100\\n98,2\\n16,16,63,1,1,1,1\\n96,4\\n99,1\\n71,9,9,10\\n100\\n100\\n3,97\\n100\\n99,1\\n100\\n13,87\\n2,12,11,5,58,11\\n100\\n98,3\\n8,89,4\\n100\\n14,27,15,1,42,1\\n42,8,49,2\\n100\\n4,55,1,41\\n100\\n11,86,1,1,2\\n10,90\\n100\\n100\\n1,86,13\\n2,2,90,6\\n100\\n4,96\\n8,79,1,10,1,1\\n68,3,5,24\\n2,30,30,38\\n13,55,32\\n2,4,2,2,90\\n36,18,6,9,13,6,6,4\\n25,37,33,4\\n100\\n28,72\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n28,72\\n28,72\\n100\\n100\\n1,99\\n37,62\\n73,10,2,15\\n100\\n7,2,2,4,10,5,69\\n100\\n36,26,38\\n43,14,43\\n2,97\\n5,21,4,70\\n99,1\\n18,1,80,1\\n13,86\\n71,29\\n34,66\\n16,1,6,7,2,6,63\\n80,5,15\\n3,3,15,14,65\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n71,29\\n61,39\\n100\\n100\\n83,3,3,1,3,5\\n46,4,3,6,17,19,2,2\\n12,34,31,23\\n4,45,26,14,5,5\\n64,7,3,1,2,13,4,1,2,1,3\\n72,28\\n100\\n8,1,36,55\\n1,32,67\\n17,83\\n1,71,27,1\\n100\\n1,6,93\\n96,4\\n87,2,3,8\\n100\\n87,1,1,11\\n77,18,2,1,3\\n95,1,2,2\\n36,32,7,4,9,9,2\\n72,6,10,2,9\\n8,7,36,44,5\\n87,1,11\\n21,79\\n1,47,38,13\\n98,2\\n99,1\\n100\\n100\\n68,32\\n12,88\\n54,1,1,12,32\\n37,14,2,5,42\\n16,84\\n27,28,2,3,1,1,2,4,9,22\\n80,1,5,14\\n100\\n100\\n100\\n1,8,5,26,32,9,3,4,13,1\\n3,95,2\\n3,6,1,1,1,3,47,8,30,1\\n20,2,12,8,56\\n59,41\\n5,2,93\\n57,3,5,6,2,2,25\\n4,13,6,4,36,5,2,3,12,9,6\\n34,14,6,23,4,4,4,5,5,1\\n100\\n100\\n100\\n100\\n100\\n100\\n49,51\\n1,1,8,11,5,1,13,36,24\\n9,9,5,7,18,7,7,18,7,5,9\\n25,25,25,25\\n1,19,80\\n6,50,37,6\\n32,44,22,1\\n72,28\\n100\\n61,7,9,17,6\\n100\\n100\\n4,1,30,13,52\\n100\\n6,3,39,10,32,10\\n100\\n100\\n83,17\\n77,2,13,1,1,1,1,1,1,1,1\\n9,62,2,9,18\\n81,18,1\\n31,69\\n17,36,7,3,1,1,25,9\\n13,11,20,56\\n83,17\\n67,1,19,13\\n100\\n58,42\\n95,2,4\\n32,68\\n24,76\\n100\\n32,68\\n2,98\\n26,74\\n35,19,4,1,6,4,1,12,17\\n26,1,67,1,3,1\\n29,8,10,27,1,25\\n36,17,20,26\\n52,4,2,16,26\\n100\\n4,34,55,7\\n20,43,37\\n1,61,25,2,10\\n66,34\\n21,23,6,6,20,3,21,1\\n4,61,34\\n40,60\\n8,90,2\\n46,47,1,6\\n1,55,9,13,5,11,6\\n72,3,6,20\\n89,6,3,2\\n88,12,1\\n1,13,86\\n69,31\\n29,25,9,19,17\\n33,9,45,7,6\\n100\\n100\\n89,11\\n48,28,13,2,8\\n49,20,20,11\\n8,46,46\\n70,28,1\\n59,41\\n88,10,3\\n64,1,35\\n45,55\\n33,31,1,35\\n6,34,26,31,3\\n69,9,22\\n60,40\\n73,27\\n96,4\\n98,2\\n48,7,1,44\\n37,26,37\\n100\\n100\\n100\\n100\\n95,5\\n95,4,1\\n100\\n100\\n82,6,1,2,1,2,2,1,1,3\\n18,48,2,1,2,29,1\\n5,79,1,2,1,10,1\\n46,49,6\\n14,81,4\\n94,6\\n1,85,4,8,2\\n44,2,9,1,1,29,8,2,1,2\\n96,1,3\\n91,7,1,1\\n5,95\\n100\\n99,1\\n100\\n100\\n96,4\\n100\\n100\\n100\\n100\\n92,8\\n75,25\\n54,35,4,6\\n2,27,46,24\\n28,1,1,5,64\\n27,2,3,1,3,1,62\\n22,13,44,5,15,1\\n38,10,14,8,14,16,1\\n1,98,1\\n9,91\\n14,86\\n8,16,4,6,62,2,1,2\\n1,1,37,11,4,42,3\\n53,47\\n85,5,3,7\\n1,15,57,27\\n21,9,6,64\\n28,12,17,43\\n21,27,1,47,3\\n19,28,54\\n18,20,1,61\\n2,5,3,3,2,4,3,7,1,3,1,10,43,13\\n6,2,3,3,10,5,11,13,16,31\\n3,1,3,5,4,4,6,75\\n7,1,1,2,6,82\\n94,1,5,1\\n3,1,94,2\\n1,1,98\\n100\\n91,9\\n100\\n100\\n15,85\\n17,83\\n100\\n6,5,1,1,88,1\\n7,4,88\\n2,90,8\\n28,5,1,66\\n33,67\\n41,1,57,1\\n32,1,1,2,63\\n41,3,56\\n3,45,2,50\\n3,97\\n46,1,17,7,1,9,9,10\\n2,17,1,79\\n14,1,13,72\\n10,6,83,2\\n100\\n100\\n9,91\\n9,91\\n1,14,2,3,2,55,23\\n44,6,6,11,16,18\\n13,81,7\\n7,20,1,72\\n3,9,88\\n100\\n5,95\\n100\\n3,85,12\\n22,23,54\\n2,46,44,7\\n54,5,42\\n1,1,22,76\\n3,14,7,65,8,2,2\\n4,24,26,4,43\\n100\\n94,6\\n99,1\\n95,5\\n100\\n9,17,74\\n10,9,13,12,2,54\\n17,17,6,19,33,4,1,1,2\\n87,13\\n100\\n100\\n100\\n100\\n18,2,1,8,71\\n4,2,2,12,3,14,7,16,11,28\\n100\\n81,19\\n4,96\\n100\\n5,95\\n38,8,12,24,8,9\\n64,36\\n100\\n75,25\\n4,12,84\\n94,6\\n100\\n11,1,1,45,43\\n100\\n13,7,27,6,7,30,3,3,3,2\\n100\\n100\\n100\\n100\\n50,50\\n100\\n13,87\\n63,13,24\\n9,49,42\\n1,88,11\\n85,3,3,10\\n1,1,52,17,19,1,3,1,2,5\\n100\\n30,67,3\\n100\\n96,4\\n58,34,8\\n15,44,7,17,16,1\\n28,13,43,8,8\\n100\\n100\\n76,24\\n100\\n100\\n46,47,7\\n100\\n100\\n100\\n2,98\\n1,14,14,39,19,2,10,2\\n66,5,29\\n1,99\\n100\\n100\\n100\\n10,90\\n12,4,84\\n36,64\\n24,26,42,1,3,3\\n100\\n100\\n100\\n5,95\\n3,3,4,46,43\\n73,26,1\\n42,15,5,30,7\\n1,1,66,33\\n1,34,65\\n99,1\\n1,1,1,91,2,5\\n99\\n95,5\\n88,7,5\\n8,2,9,76,5\\n4,1,20,50,2,12,11,1\\n100\\n3,1,92,1,3\\n2,30,6,41,1,6,11\\n3,1,26,60,1,4,2,1,4\\n16,79,4\\n41,2,31,8,7,10\\n34,1,6,57,2\\n13,7,3,10,9,55,2\\n12,71,1,13,2,2\\n9,74,12,5\\n100\\n97,2\\n15,30,23,2,5,1,25\\n16,26,24,3,32\\n54,32,1,3,1,8\\n59,3,25,7,2,5\\n2,8,87,2,1\\n94,5\\n61,37,2,1\\n73,22,5\\n80,1,9,11\\n66,5,1,2,27\\n88,11\\n91,1,7,1\\n45,4,1,1,1,49\\n8,5,6,81\\n17,16,7,61\\n78,22\\n1,1,77,15,6\\n79,7,3,2,3,5\\n83,13,4\\n100\\n99,1\\n100\\n4,3,3,2,17,4,19,32,8,3,1,4\\n50,50\\n57,43\\n100\\n11,5,9,3,3,14,13,7,9,9,1,16\\n9,70,6,6,7,2\\n1,5,5,15,73\\n83,17\\n10,30,59\\n10,6,84\\n100\\n8,47,18,13,15\\n97,4\\n83,17\\n100\\n25,45,30\\n44,5,16,35\\n14,85,1\\n100\\n61,12,2,25\\n51,49\\n59,41\\n22,56,22\\n1,1,7,90\\n44,56\\n1,86,9,3,1\\n100\\n72,28\\n27,6,66\\n80,20\\n3,4,94\\n6,56,12,24,1\\n56,10,34\\n2,98\\n100\\n100\\n42,4,3,7,9,35\\n19,52,5,22,1,1\\n100\\n3,3,94\\n7,9,17,12,17,38\\n22,15,61,1,1\\n100\\n99\\n71,28\\n88,12\\n20,3,76\\n3,5,49,43\\n13,28,59\\n8,4,27,60\\n1,99,1\\n100\\n28,5,3,14,2,4,6,36\\n15,15,1,2,30,18,15,2,1\\n100\\n28,12,18,12,30\\n96,2,2,1\\n32,4,37,9,5,2,7,1,3\\n1,50,10,20,6,8,4\\n100\\n6,1,2,52,38\\n10,78,2,1,1,3,1,1,2\\n81,1,18\\n1,53,4,34,7\\n1,27,55,16\\n7,9,7,47,20,11\\n7,2,2,8,19,30,2,3,6,5,4,8,4\\n36,28,36\\n4,1,10,1,84\\n1,2,2,2,3,22,9,8,11,40\\n4,96\\n100\\n1,15,84\\n78,7,15\\n63,31,1,5\\n27,13,41,10,10\\n10,32,58\\n82,18\\n8,82,9\\n1,99,1\\n5,3,16,23,52,1,1,1\\n100\\n10,13,19,51,7,1\\n38,62\\n94,5,1\\n4,24,72\\n7,23,13,56\\n73,22,5\\n76,24,1\\n100\\n100\\n100\\n100\\n97,3\\n100\\n100\\n41,58,1,1\\n64,21,14\\n33,56,10\\n80,3,4,13\\n100\\n100\\n11,46,43\\n20,26,53\\n42,58\\n100\\n100\\n23,39,38\\n56,44\\n100\\n61,39\\n25,74\\n79,21\\n100\\n100\\n100\\n5,88,7\\n100\\n100\\n82,1,17\\n100\\n100\\n100\\n18,11,71\\n100\\n86,14\\n60,10,30\\n9,31,1,4,14,40\\n100\\n1,3,2,56,2,2,3,7,3,4,2,9,4,2\\n16,6,18,33,27\\n24,30,17,29\\n31,69\\n99,1\\n20,80\\n100\\n68,32\\n100\\n22,3,1,74\\n53,47\\n100\\n61,39\\n20,80\\n100\\n72,28\\n14,7,9,7,8,1,1,1,1,13,5,12,18,4\\n4,2,94\\n66,12,4,1,17\\n45,10,43,2\\n9,41,35,14\\n5,7,88\\n61,38\\n56,42,2\\n3,17,22,15,43\\n22,17,34,14,14\\n16,84\\n3,5,91\\n2,3,5,8,10,9,1,6,22,14,4,4,4,5,4\\n23,8,3,10,56\\n33,8,11,6,23,1,7,1,5,1,5\\n90,3,3,1,4\\n14,1,7,7,4,5,61\\n64,13,9,10,4\\n1,1,99\\n8,43,36,13\\n21,14,64\\n100\\n92,3,3,1,1\\n100\\n100\\n100\\n36,7,56\\n3,29,68\\n6,2,3,89\\n1,5,4,43,10,38\\n4,6,2,18,9,43,17\\n8,60,32\\n45,2,52\\n40,10,50\\n3,97\\n2,98\\n94,6\\n93,7\\n12,87,1\\n100\\n100\\n100\\n21,79\\n100\\n8,75,17\\n100\\n52,1,1,46\\n100\\n52,47\\n56,44\\n100\\n100\\n100\\n18,67,13,3\\n100\\n53,24,13,10\\n86,14\\n90,2,3,5\\n100\\n81,19\\n100\\n13,2,2,11,2,34,32,4\\n21,79\\n23,3,13,61\\n85,2,1,3,6,4\\n3,5,92\\n86,11,3\\n4,43,29,3,3,2,8,8\\n100\\n100\\n98,2\\n83,1,1,15\\n19,61,8,12\\n34,66\\n1,23,66,9\\n17,2,11,17,39,3,6,2,3,1\\n74,2,2,6,7,5,5\\n11,3,1,2,11,13,11,18,26,2\\n4,3,1,28,15,7,17,23\\n1,99\\n100\\n37,63\\n43,57\\n93,7\\n12,2,11,75\\n9,14,20,13,10,34\\n96,2,2\\n64,34,2\\n86,14\\n80,4,4,12\\n100\\n97,1,1,2\\n5,5,6,31,33,6,9,3\\n25,63,11\\n47,53\\n100\\n98,2\\n97,1,3\\n71,29\\n83,17\\n1,99\\n96,2,1,1\\n37,10,33,20\\n100\\n61,39\\n2,87,4,6\\n5,1,1,3,1,88\\n1,3,50,28,9,10\\n1,85,1,1,13\\n44,6,34,2,6,4,4,1\\n64,31,1,4\\n1,1,1,1,1,64,31\\n3,25,27,6,8,8,24\\n2,72,4,11,1,1,7,1\\n1,3,94,1\\n1,6,6,5,52,30\\n15,40,45\\n22,51,26\\n25,19,56\\n1,34,65\\n7,6,9,77\\n100\\n75,1,2,22\\n66,25,7,1,1\\n22,57,1,11,8\\n9,16,54,21\\n58,42\\n49,51\\n100\\n16,84\\n100\\n100\\n61,18,13,8\\n100\\n100\\n87,13\\n100\\n100\\n90,3,3,1,1,1\\n79,3,9,3,3,2\\n100\\n100\\n100\\n100\\n3,4,93\\n100\\n100\\n62,38\\n41,46,14\\n100\\n100\\n100\\n100\\n100\\n75,4,13,2,3,2,1\\n100\\n100\\n100\\n2,2,2,6,77,11\\n10,39,28,1,20,2\\n94,6\\n20,80\\n5,2,93\\n1,99\\n5,6,4,4,33,23,25,1\\n1,1,98,1\\n100\\n1,94,5\\n53,22,25\\n1,26,66,2,5\\n49,24,24,1,1\\n24,63,13\\n32,68\\n1,89,10\\n25,32,19,3,21\\n100\\n100\\n100\\n100\\n53,36,1,5,5\\n57,1,3,39\\n77,23\\n1,55,1,43\\n60,40\\n14,51,8,8,1,13,3,2\\n100\\n43,18,20,8,6,1,1,2\\n100\\n4,96\\n100\\n81,19\\n80,20\\n20,80\\n63,37\\n100\\n100\\n36,2,19,3,1,20,3,3,1,11\\n52,9,17,7,15\\n7,13,12,2,16,1,6,1,1,41\\n57,42,1\\n1,99\\n100\\n100\\n100\\n45,24,31\\n36,30,35\\n5,95\\n18,82\\n1,74,15,9,1\\n2,3,2,3,6,6,12,6,5,8,3,10,22,11,1\\n23,24,54\\n1,87,12\\n100\\n21,52,22,4\\n4,8,8,29,24,6,12,4,5\\n100\\n100\\n19,3,6,60,12\\n53,47\\n100\\n53,3,43\\n37,63\\n100\\n86,14\\n37,63\\n23,1,76\\n21,2,77\\n100\\n74,26\\n12,88\\n17,48,34\\n86,14\\n74,26\\n100\\n2,15,7,76\\n11,11,37,41\\n100\\n12,71,17\\n9,85,5\\n50,50\\n26,26,3,45\\n100\\n99,1\\n100\\n57,43\\n10,38,39,13\\n91,1,1,1,1,5\\n93,3,1,2,1,1\\n4,4,49,43\\n69,12,8,2,8\\n100\\n100\\n51,1,49\\n100\\n9,7,3,12,31,37\\n95,5\\n46,17,18,18\\n25,7,10,15,7,35\\n73,27\\n36,9,5,1,4,46\\n5,23,37,5,29\\n22,6,16,52,3\\n69,31\\n91,9\\n50,1,49\\n60,20,16,4\\n27,39,26,8\\n67,33\\n73,27\\n75,25\\n100\\n100\\n96,4\\n100\\n100\\n78,4,1,1,4,12\\n9,6,16,3,66\\n47,16,9,15,12\\n100\\n85,15\\n100\\n100\\n8,20,32,39\\n96,4\\n4,96\\n41,2,57\\n100\\n84,11,5\\n5,95\\n1,11,11,23,51\\n2,76,22\\n1,1,1,38,24,11,24\\n100\\n100\\n100\\n100\\n8,8,6,54,24\\n100\\n100\\n32,66,2\\n100\\n100\\n100\\n100\\n82,18\\n12,15,18,1,7,7,4,3,34\\n98,2\\n32,36,1,9,1,21\\n12,88,1\\n100\\n28,72\\n87,3,10\\n100\\n4,28,4,64\\n100\\n11,89\\n100\\n43,3,55\\n43,57\\n93,8\\n2,98\\n26,74\\n47,10,10,3,4,8,11,4,3\\n81,19\\n31,5,3,39,23\\n3,97\\n42,58\\n32,68\\n72,11,16\\n5,2,2,19,6,3,23,12,5,13,5,6\\n44,4,27,3,6,15\\n100\\n2,79,18,2\\n11,89\\n93,7\\n84,10,7\\n12,44,41,2\\n26,74\\n14,85,1\\n94,6\\n100\\n100\\n84,16\\n9,48,27,10,6\\n2,4,43,51\\n38,62\\n14,20,66\\n10,7,6,7,10,8,4,43,4\\n20,23,56\\n32,54,10,5\\n30,62,8\\n100\\n1,5,1,4,3,69,1,17,1\\n86,1,1,13\\n1,6,1,91,1\\n84,14,1\\n94,6\\n65,35\\n100\\n64,20,4,12\\n100\\n89,11\\n88,9,3\\n12,1,6,2,79\\n19,6,75\\n100\\n100\\n100\\n100\\n100\\n100\\n1,5,6,1,83,5\\n71,17,3,3,6\\n100\\n62,14,24\\n8,71,20,1,1\\n75,21,4\\n80,11,10\\n4,26,70\\n95,4,1\\n33,16,39,12\\n1,63,24,11\\n40,13,20,26\\n1,1,1,1,97\\n5,16,41,1,30,8\\n6,94\\n4,17,9,70\\n1,44,55\\n100\\n5,1,1,11,48,5,8,8,4,5,2,1\\n52,5,6,3,9,4,21\\n86,14\\n7,8,8,10,6,60\\n45,55\\n78,22\\n100\\n100\\n100\\n82,2,2,1,14\\n100\\n100\\n11,2,2,1,10,2,17,9,4,15,3,23\\n58,42\\n100\\n3,29,68\\n100\\n18,15,28,28,12\\n1,1,3,69,26\\n31,2,3,2,62\\n1,99\\n1,85,15\\n100\\n100\\n96,2,2\\n82,18\\n30,33,2,14,15,5,1\\n42,16,23,2,1,16\\n15,53,30,1\\n1,11,85,1,1,1\\n1,20,1,11,27,16,24\\n9,30,61\\n8,31,61\\n7,3,9,5,75\\n2,6,7,5,4,5,4,68\\n5,6,2,4,6,2,25,50\\n9,1,2,34,53\\n86,14\\n100\\n1,99\\n44,20,36\\n4,38,53,5\\n3,39,54,4\\n12,79,3,7\\n35,57,9\\n13,87\\n2,5,3,89\\n7,93\\n5,95\\n9,2,89\\n3,97\\n42,5,1,1,50\\n27,3,9,24,6,31\\n17,30,54\\n18,1,38,44\\n5,3,4,13,74\\n1,1,42,56\\n1,42,57\\n33,67\\n61,39\\n51,49\\n94,1,4\\n4,3,33,60\\n3,15,14,1,67\\n100\\n3,38,3,56\\n29,2,69\\n23,77\\n1,1,98,1\\n35,65\\n42,58\\n1,12,23,63\\n1,12,1,86\\n13,86\\n1,99\\n15,1,1,3,2,1,5,53,7,11\\n14,15,8,8,4,7,2,41\\n39,2,1,57\\n47,53\\n9,91\\n100\\n11,13,24,26,8,18\\n47,8,3,5,38\\n1,2,1,15,11,34,37\\n7,5,9,4,1,73\\n9,15,13,1,7,55\\n4,2,1,5,88\\n12,88\\n100\\n98,2\\n100\\n9,84,6\\n63,4,4,2,2,6,19\\n5,11,7,3,74\\n1,31,5,12,4,5,42\\n59,19,14,7,1\\n80,10,9,1\\n21,57,21,1\\n6,2,3,2,3,84\\n1,98\\n100\\n18,7,16,6,3,3,4,2,8,2,7,6,2,1,3,2,3,6\\n1,1,1,2,22,41,16,17\\n39,8,8,45\\n92,8\\n49,51\\n40,60\\n2,1,11,30,55\\n1,75,24\\n1,84,15\\n100\\n100\\n94,6\\n100\\n23,77\\n100\\n18,72,1,9\\n100\\n95,5\\n100\\n100\\n77,2,15,1,6\\n4,14,25,2,8,48\\n2,98\\n92,7,1\\n50,39,11\\n12,78,1,1,1,1,7\\n78,7,15\\n15,85\\n37,63\\n9,85,6\\n46,23,30\\n92,6,2\\n99\\n3,3,94\\n90,10\\n69,31\\n28,20,51\\n100\\n20,80\\n18,3,1,1,2,5,17,54\\n100\\n100\\n29,15,17,10,29,1\\n100\\n3,3,2,6,85\\n100\\n99,1\\n97,2,1\\n100\\n3,1,3,93\\n100\\n100\\n100\\n7,1,93\\n94,6\\n7,70,23\\n1,6,6,23,8,15,13,27\\n55,45\\n9,1,2,24,31,11,22\\n5,90,6\\n5,9,24,28,8,25\\n38,5,51,7\\n100\\n95,5\\n15,34,4,7,7,5,19,9\\n1,10,27,4,3,48,7\\n100\\n10,90\\n19,81\\n25,9,17,18,28,2\\n1,93,6\\n2,91,5,1\\n6,12,4,23,10,10,27,3,3,2\\n16,12,21,22,6,8,11,4\\n4,96\\n6,2,3,2,6,8,2,70\\n32,68\\n15,85\\n8,4,9,8,18,53\\n97,3\\n100\\n15,11,65,2,6\\n15,14,39,7,25\\n39,19,42\\n2,9,5,4,26,21,16,18\\n99,1\\n93,2,4\\n22,5,23,50\\n16,3,16,36,29\\n81,19\\n10,5,9,69,7\\n48,38,4,9\\n4,72,20,4\\n16,84\\n30,2,68\\n80,14,6\\n2,79,1,1,6,8,4\\n84,2,1,1,12\\n68,18,13,1\\n93,2,2,3\\n87,13\\n19,71,10\\n100\\n100\\n100\\n51,2,47\\n8,1,1,27,1,44,1,6,10\\n100\\n100\\n100\\n33,19,47,1\\n27,9,7,30,27\\n86,14\\n2,2,1,20,53,23\\n100\\n26,60,2,12\\n4,96\\n85,13,2,1\\n100\\n100\\n11,89\\n9,39,4,30,19\\n1,15,85\\n5,19,73,3\\n5,1,21,13,40,1,19\\n93,7\\n28,62,10\\n88,12\\n2,96,2\\n93,4,3\\n5,62,34\\n100\\n11,31,9,15,33\\n6,94\\n42,58\\n100\\n22,8,38,33\\n1,13,80,6\\n22,20,3,55\\n5,39,15,40\\n79,21\\n4,1,95\\n3,5,3,4,5,80\\n18,1,1,80\\n1,99\\n100\\n8,6,19,36,28,3\\n88,12\\n2,19,79\\n1,3,3,92\\n100\\n6,3,34,8,20,15,14\\n77,5,11,6\\n69,24,6\\n57,6,34,3\\n4,66,2,27,1\\n94,6\\n95,5\\n11,5,41,39,4\\n89,11\\n100\\n100\\n99\\n60,7,14,19\\n47,5,2,1,45\\n60,6,34\\n11,15,4,19,11,4,3,1,1,15,18\\n7,3,33,4,2,1,2,4,1,42\\n100\\n3,4,68,20,5\\n3,80,10,8\\n94,6\\n94,6\\n29,5,9,3,17,21,2,2,1,6,1,2,2\\n44,7,8,1,6,15,3,1,7,7\\n1,99\\n10,90\\n31,68,1\\n1,4,1,29,21,24,10,11\\n89,1,10,1\\n98,1,1,1\\n100\\n100\\n50,50\\n29,71\\n3,7,2,39,5,16,28\\n3,21,17,30,29\\n100\\n80,18,2\\n53,1,17,29\\n74,25,1\\n100\\n1,88,11\\n2,1,3,1,93\\n25,1,3,71\\n100\\n100\\n100\\n100\\n92,8\\n1,99\\n23,77\\n68,1,31\\n100\\n100\\n97,1,1,1\\n31,11,20,10,27\\n1,34,59,6\\n52,26,1,17,1,3\\n47,53\\n1,1,98\\n100\\n100\\n100\\n20,79\\n17,83\\n9,91\\n26,38,1,35\\n10,41,1,1,12,2,32\\n18,82\\n8,92\\n56,44\\n100\\n100\\n100\\n12,9,53,20,7\\n13,77,10\\n5,95\\n100\\n31,34,11,23\\n18,63,4,1,15\\n32,68\\n77,23\\n52,48\\n4,95,1\\n99,1\\n53,13,6,14,12\\n80,20\\n100\\n11,52,28,4,2,1\\n12,10,19,38,5,9,8\\n2,9,4,85\\n47,53\\n5,17,5,30,31,12\\n100\\n6,3,91\\n96,4\\n84,16\\n90,1,2,8\\n99\\n2,1,5,91\\n77,22\\n9,16,21,22,16,17\\n100\\n100\\n87,13\\n86,14\\n100\\n92,8\\n99,1\\n3,24,19,8,11,6,9,19\\n1,76,7,17\\n98,1,1,1\\n28,64,8\\n1,67,33\\n99,1\\n1,99,1\\n25,9,52,13\\n100\\n60,1,40\\n1,2,3,3,85,2,2\\n11,1,2,2,3,1,78\\n100\\n100\\n6,3,21,17,4,4,41,1,2\\n44,3,3,3,23,9,15\\n64,11,19,5\\n1,98\\n27,16,47,10\\n4,8,84,3,1\\n18,70,12\\n82,18\\n14,1,86\\n100\\n33,34,23,10\\n20,80\\n2,2,1,1,2,92\\n3,2,96\\n84,16\\n100\\n100\\n22,78\\n16,1,3,1,1,4,1,73\\n100\\n73,1,21,5\\n3,2,3,74,18\\n100\\n78,22\\n5,8,12,54,21\\n59,30,11\\n34,27,24,15\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n75,25\\n44,56\\n83,16\\n44,18,39\\n43,57\\n69,31\\n100\\n32,47,17,3,1\\n56,4,35,5,1,1\\n100\\n3,49,48\\n100\\n5,52,11,17,14\\n60,4,12,15,9\\n42,39,6,12\\n22,1,45,13,5,14\\n31,1,33,34\\n100\\n100\\n100\\n100\\n100\\n100\\n80,20\\n100\\n100\\n15,15,71\\n100\\n98,2\\n48,27,1,1,3,15,5\\n100\\n100\\n38,1,27,25,9\\n1,5,6,21,6,1,8,51\\n9,41,7,22,21\\n100\\n67,33\\n2,19,20,54,1,4\\n100\\n100\\n32,68\\n75,1,3,4,3,6,6,1\\n95,5\\n36,31,5,28\\n33,22,37,9\\n2,1,97\\n7,1,92\\n74,18,8\\n1,95,4\\n75,1,12,12\\n27,73\\n100\\n28,61,10,1\\n15,28,15,41\\n22,37,3,37\\n1,31,20,23,23,1,2,1\\n25,13,6,13,16,27\\n21,47,19,6,8\\n75,21,5\\n61,39\\n17,5,8,42,27\\n11,13,11,23,34,4,5\\n1,13,3,14,52,3,3,11\\n23,1,3,3,3,26,39,3\\n69,31\\n90,9\\n44,50,1,5,1\\n1,1,47,34,18\\n25,75\\n15,49,6,29\\n71,29\\n100\\n20,9,71\\n1,24,70,5\\n36,16,46,3\\n15,10,23,7,44,1\\n1,1,1,18,1,8,71\\n39,27,33,1\\n66,4,22,3,1,3\\n28,4,30,3,32,1,2\\n1,75,23\\n100\\n4,96\\n31,68\\n14,86\\n10,4,17,37,4,4,25\\n100\\n4,96\\n84,16\\n11,29,19,36,1,1,2,1\\n7,3,90\\n12,64,1,18,4\\n90,9,1\\n15,15,8,28,14,8,4,4,3\\n99\\n1,45,55\\n19,80,1\\n16,2,1,37,27,7,10\\n40,3,24,32\\n37,27,25,11\\n2,97,1\\n100\\n9,6,85\\n47,30,4,19\\n3,97\\n50,50\\n9,33,1,7,3,5,11,10,7,13\\n33,20,23,11,12\\n45,6,47,1,1\\n10,8,45,37,1\\n14,3,6,2,45,11,4,11,3,1\\n32,3,1,14,1,3,1,46\\n100\\n100\\n29,3,1,67\\n1,1,23,5,2,6,60,1\\n40,42,18\\n100\\n100\\n49,51\\n23,12,1,2,6,3,1,3,11,39\\n100\\n25,74\\n77,2,2,19\\n100\\n95,5\\n7,15,42,2,2,1,1,1,2,10,17\\n12,17,5,37,21,1,1,1,6\\n97,3\\n1,99\\n1,3,1,1,95\\n99,1\\n24,76\\n100\\n100\\n7,44,8,11,8,23\\n1,41,30,29\\n21,15,19,25,15,5\\n3,10,14,3,49,21\\n14,34,51\\n100\\n24,17,45,11,3\\n90,2,8\\n8,92\\n10,61,4,6,18,2\\n16,11,13,31,29\\n9,4,55,20,11\\n48,4,3,45\\n4,4,91\\n11,87,3\\n95,5\\n98,1\\n100\\n100\\n94,3,1,1\\n50,11,39\\n29,71\\n100\\n26,74\\n100\\n31,2,67\\n61,5,21,13\\n12,1,8,4,50,12,12\\n100\\n100\\n100\\n30,70\\n100\\n43,57\\n93,1,3,3\\n100\\n94,6\\n100\\n100\\n96,4\\n43,57\\n78,1,15,6\\n88,9,3\\n51,1,1,46\\n68,32\\n8,26,17,1,1,2,1,36,5,1,2\\n5,4,2,6,25,8,16,15,10,3,3,3\\n16,82,2\\n100\\n86,5,9\\n8,46,47\\n26,1,12,20,13,8,5,6,1,8\\n1,3,1,22,34,20,9,1,9,1\\n18,51,30\\n81,19\\n36,53,8,3\\n100\\n79,21\\n13,6,9,72\\n17,12,1,68,1\\n10,8,81\\n13,85,1\\n46,53\\n46,1,2,4,47\\n7,93\\n99\\n1,99\\n90,1,2,7\\n100\\n90,4,6\\n53,8,40\\n100\\n8,65,26\\n1,99\\n16,84\\n11,89\\n100\\n100\\n95,3,3\\n3,1,96\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n100\\n2,3,21,75\\n72,12,16\\n10,90\\n26,23,50\\n100\\n100\\n100\\n80,4,1,1,3,2,2,2,3,3\\n100\\n100\\n61,15,18,5,1\\n22,29,5,10,30,4\\n18,60,9,6,7\\n15,82,3\\n23,10,20,2,35,3,6\\n53,10,6,31\\n88,13\\n1,3,19,2,4,71\\n10,17,6,21,20,6,1,19\\n95,5\\n99,1\\n29,2,69\\n21,78\\n100\\n78,22\\n1,68,31\\n2,4,8,85\\n9,15,75\\n1,99\\n99,1\\n100\\n85,15\\n100\\n33,4,59,4\\n89,11\\n65,35\\n34,10,56\\n1,61,34,4\\n1,2,21,65,6,1,3,1,1\\n21,63,9,2,5\\n92,7\\n3,3,14,3,42,10,24\\n88,11\\n68,12,8,12\\n1,15,1,83,1\\n33,2,29,35\\n25,12,13,17,34\\n100\\n1,98,1\\n100\\n91,9\\n84,16\\n83,17\\n70,5,7,18\\n1,2,1,1,1,1,1,3,10,2,11,1,3,3,13,37,10\\n67,33\\n17,12,4,4,17,5,6,4,30\\n17,3,3,2,1,2,70,1\\n16,5,75,3\\n81,19\\n42,25,33\\n28,28,23,21\\n23,21,56\\n65,35\\n21,39,2,35,3\\n32,68\\n16,7,6,70\\n10,23,67\\n34,66\\n11,89\\n87,13\\n100\\n1,35,64\\n12,79,3,1,1,4,1\\n59,3,4,20,1,3,1,1,10\\n9,91\\n100\\n100\\n82,18\\n100\\n97,3\\n100\\n100\\n100\\n100\\n100\\n12,11,75\\n100\\n31,69\\n100\\n2,2,3,93\\n81,18,1\\n100\\n100\\n41,51,9\\n59,9,10,1,1,10,2,3,2,2\\n67,1,19,3,6,4\\n20,74,6\\n60,31,5,3\\n92,2,6\\n65,13,8,14\\n59,1,27,13\\n22,53,3,6,15\\n3,79,19\\n17,66,2,15\\n85,1,14,1\\n71,1,28,1\\n19,6,16,60\\n100\\n100\\n2,21,75,3\\n99\\n100\\n3,47,19,32\\n100\\n100\\n100\\n21,50,8,20\\n66,4,30\\n1,3,96\\n100\\n35,15,4,6,1,2,12,4,11,8,1\\n24,76\\n76,24\\n3,97\\n27,66,1,7\\n74,1,2,5,1,7,11\\n6,3,32,16,7,19,13,5\\n77,7,13,3\\n12,3,33,12,39\\n2,1,97\\n1,3,1,10,85\\n10,90\\n1,72,6,21\\n3,43,53\\n100\\n100\\n100\\n20,80\\n100\\n100\\n100\\n100\\n13,86\\n50,24,13,13\\n13,87\\n21,52,6,21\\n5,95\\n100\\n95,5\\n61,39\\n52,2,46\\n3,97\\n92,2,7\\n73,6,5,1,8,8,1\\n100\\n100\\n8,92\\n39,61\\n14,10,6,13,6,47,5\\n1,2,1,2,8,9,24,1,9,8,36\\n28,2,2,21,6,33,5,4\\n12,88\\n62,5,34\\n100\\n1,1,2,95\\n2,3,4,38,23,29\\n93,7\\n26,7,4,64\\n16,80,4\\n100\\n67,1,2,30\\n100\\n100\\n100\\n100\\n80,20,1\\n1,1,9,7,5,77\\n2,57,13,13,4,9,2\\n71,10,17,1\\n100\\n100\\n100\\n4,2,3,22,8,50,11\\n5,10,10,1,73\\n3,65,33\\n9,1,2,13,75\\n66,34\\n97,3\\n100\\n58,42\\n100\\n100\\n100\\n41,4,9,41,4\\n12,42,4,22,8,1,9,3\\n30,58,11,2\\n65,35\\n100\\n100\\n100\\n11,11,6,3,3,26,28,4,9\\n56,5,2,2,2,33\\n55,45\\n25,75\\n1,8,4,80,8\\n3,33,9,7,41,2,2,3\\n100\\n12,88\\n100\\n100\\n100\\n10,45,7,38\\n54,46\\n96,1,3\\n13,13,22,24,5,22\\n99,1\\n100\\n90,10\\n55,45\\n100\\n19,20,50,10\\n100\\n2,14,84\\n100\\n12,49,3,23,13\\n100\\n42,11,40,7\\n1,74,7,18\\n100\\n4,2,93,1\\n9,2,56,32,1,1\\n1,17,6,2,72\\n30,3,3,23,39\\n4,1,4,6,1,83,1,1\\n23,28,24,25\\n19,1,80\\n32,3,11,4,4,45\\n95,5\\n17,82\\n3,22,73\\n26,73\\n1,61,24,3,10\\n3,6,44,46\\n1,1,1,69,28\\n25,75\\n6,15,2,51,3,23\\n1,65,18,16\\n100\\n4,74,21,1\\n81,9,5,3,2\\n21,23,1,7,49\\n7,35,17,9,12,7,12\\n80,6,3,3,9\\n49,51\\n100\\n1,99\\n77,2,15,6\\n43,57\\n50,23,1,27\\n35,65\\n100\\n28,45,27\\n100\\n64,36\\n100\\n48,46,1,5\\n31,1,6,61\\n97,3\\n100\\n100\\n100\\n100\\n13,4,74,8\\n29,1,2,53,10,3\\n5,5,11,80\\n51,49\\n55,19,14,12,1\\n26,73\\n11,84,6\\n1,1,98\\n100\\n65,2,33\\n81,8,6,6\\n100\\n84,1,15,1\\n62,1,37,1,1\\n1,4,82,1,7,5\\n100\\n100\\n13,60,3,3,4,6,10\\n1,99\\n44,1,13,14,28\\n41,2,26,31\\n99\\n9,4,87\\n9,2,2,87\\n74,26\\n93,7\\n85,12,3\\n92,4,4\\n1,83,3,1,12\\n87,13\\n82,12,6\\n88,2,1,2,2,3,3\\n26,35,39\\n20,5,26,50\\n100\\n18,57,13,12\\n5,73,22\\n1,76,23\\n75,1,1,1,23\\n29,18,1,54\\n12,4,5,1,79\\n47,34,18\\n54,11,11,15,10\\n21,12,10,57\\n1,15,36,9,12,28\\n100\\n8,9,84\\n15,85\\n37,59,4\\n66,3,3,1,27\\n18,16,11,4,28,22,1\\n53,46,1\\n11,9,1,2,13,16,2,9,9,1,8,8,10\\n100\\n48,13,38\\n5,48,1,20,6,20,1\\n100\\n63,5,15,2,15\\n4,96\\n1,3,96\\n4,3,17,33,42\\n21,11,68\\n95,5\\n3,17,31,44,5\\n91,9\\n84,10,6\\n81,19\\n27,26,20,27\\n100\\n8,6,19,1,67\\n8,1,1,1,29,9,1,3,1,21,3,24\\n46,54\\n52,48\\n100\\n8,34,50,8\\n9,12,3,11,66\\n84,14,2\\n6,13,7,74\\n95,3,1,2\\n77,3,1,16,3\\n100\\n42,58\\n49,51\\n6,13,80\\n5,7,11,16,13,10,7,4,15,5,8\\n1,1,3,96\\n91,3,5\\n49,3,45,1,1\\n30,3,30,8,21,8\\n100\\n72,14,14\\n70,5,26\\n8,92\\n22,36,34,8\\n5,95\\n30,51,19\\n4,1,3,1,2,4,3,82\\n15,2,83\\n100\\n1,39,60\\n16,84\\n10,38,29,23\\n1,99\\n100\\n100\\n36,58,6\\n100\\n2,11,2,36,8,11,30\\n100\\n37,54,9\\n2,6,23,17,1,5,18,29\\n100\\n34,10,56\\n32,1,14,9,10,9,20,5\\n6,40,26,5,3,20\\n100\\n100\\n1,8,16,10,65\\n3,26,17,51,2\\n1,23,18,53,3\\n1,50,30,8,3,1,7\\n15,1,7,2,8,1,57,9\\n12,24,65\\n100\\n100\\n18,4,35,43\\n7,32,60\\n100\\n100\\n38,19,14,24,4\\n14,33,24,24,4\\n59,41\\n19,1,18,1,3,19,1,31,4\\n1,22,78\\n100\\n43,21,24,12\\n100\\n61,39\\n3,31,4,5,22,1,1,1,2,31\\n5,49,17,29\\n13,12,7,1,1,2,1,3,1,1,34,2,2,1,3,16\\n40,59\\n54,36,9,1,1\\n7,45,47\\n81,19\\n100\\n34,10,4,5,1,1,1,4,1,1,1,2,14,11,5,5\\n33,1,6,2,1,1,3,5,4,44\\n37,7,56\\n30,30,10,28,1,1,1\\n7,1,20,23,49\\n16,5,1,33,8,1,28,9\\n71,29\\n3,25,19,5,6,17,18,2,4,2\\n24,46,29\\n12,7,13,9,4,8,4,14,11,17\\n21,1,3,1,6,7,21,6,14,17,1\\n11,17,71\\n1,27,10,1,62\\n100\\n28,6,6,49,12\\n3,5,73,11,2,5\\n100\\n23,6,9,61\\n23,36,6,5,5,8,18\\n10,42,3,13,32\\n12,9,24,29,19,7\\n4,17,80\\n5,46,21,1,1,27\\n16,15,24,19,6,4,16\\n8,19,22,21,8,4,2,3,12\\n100\\n1,88,4,3,5\\n100\\n1,99\\n15,85\\n90,1,1,7,1\\n5,20,10,3,48,15\\n39,36,2,20,2\\n1,9,13,13,22,23,18\\n13,9,9,10,21,39\\n55,45\\n85,15\\n4,31,23,40,2\\n100\\n16,4,2,8,8,10,33,18\\n7,5,9,1,7,5,32,34\\n1,98,1\\n1,20,45,1,23,10,1\\n44,1,6,50\\n22,5,11,1,1,60\\n6,6,2,56,23,7\\n12,88\\n14,1,60,25\\n1,1,1,75,22\\n2,6,3,15,3,6,4,57,4\\n7,1,91\\n1,12,14,22,9,32,5,6\\n16,41,9,6,3,4,18,2\\n4,14,15,2,5,19,19,21\\n4,9,8,20,20,3,4,3,11,3,14\\n20,1,33,1,6,13,26\\n31,35,22,1,1,10\\n47,53\\n7,11,4,1,77\\n85,15\\n1,21,6,17,18,37,1\\n100\\n26,42,9,23\\n11,8,44,13,21,3\\n20,79\\n50,50\\n22,36,6,37\\n13,5,12,68,1\\n37,62\\n7,89,4\\n11,32,32,9,16\\n16,6,22,33,7,16\\n1,1,1,61,35\\n4,43,22,10,10,7,4\\n25,19,13,31,11\\n5,17,26,15,9,3,23,1\\n8,29,7,1,5,5,3,6,14,21\\n15,10,4,16,5,4,28,19\\n3,6,15,47,29\\n100\\n42,18,40\\n100\\n100\\n23,39,19,20\\n9,73,1,1,1,11,4\\n1,1,89,1,4,6\\n36,5,59\\n100\\n13,5,5,77\\n1,2,10,8,7,6,22,7,38\\n4,19,14,21,42\\n13,14,72,1\\n100\\n7,42,15,11,11,15\\n18,11,14,14,43\\n11,2,10,57,19,1\\n6,91,3\\n18,32,27,23\\n2,7,3,88\\n58,31,8,3\\n34,2,9,3,33,19\\n32,7,61\\n32,3,64\\n27,73\\n20,5,14,26,2,3,24,3,2\\n27,3,21,16,3,14,16\\n1,5,7,43,9,35\\n58,2,7,20,9,1,1,2\\n7,2,26,1,6,7,10,4,2,1,20,13\\n32,26,40,1,1\\n7,7,7,2,4,15,9,23,15,2,2,2,5\\n33,1,1,25,20,19,1\\n51,49\\n11,12,8,13,26,30\\n53,47\\n3,70,27\\n25,41,27,4,3\\n100\\n62,38\\n59,41\\n100\\n1,99\\n1,49,21,24,6\\n7,31,61,1\\n38,62\\n13,19,9,10,20,24,6\\n13,29,14,10,2,1,13,6,2,2,3,2,4\\n3,16,15,11,10,28,2,8,6\\n36,12,4,5,6,7,5,25\\n57,15,28\\n2,29,25,36,3,1,2,1,1\\n21,4,37,27,5,6\\n26,1,4,10,43,1,14\\n36,42,21\\n25,27,29,19\\n3,3,3,9,20,17,10,19,15\\n7,27,23,43\\n34,36,30\\n7,1,7,4,10,11,27,1,16,16\\n7,34,13,16,1,1,6,8,16\\n7,10,39,38,7\\n4,2,2,7,2,17,6,19,2,6,33\\n100\\n33,54,13\\n24,1,1,1,1,61,11\\n3,3,95\\n89,11\\n8,2,3,71,12,4\\n6,21,17,24,32\\n11,6,39,43\\n33,29,1,1,24,11,1\\n9,45,6,22,18\\n35,28,25,11\\n12,1,36,25,22,5\\n11,89\\n2,29,13,9,23,4,9,7,4\\n50,50\\n49,1,50\\n33,67\\n12,16,73\\n90,10\\n53,38,8\\n100\\n46,5,14,13,3,3,4,8,2,1\\n2,27,32,5,18,7,8\\n100\\n100\\n4,3,19,23,2,13,11,26\\n2,17,5,25,5,1,5,4,34,2\\n2,6,8,17,2,8,2,4,37,12\\n40,35,21,4\\n6,7,6,4,39,11,27\\n42,1,9,35,10,1\\n2,5,34,22,3,13,21\\n6,8,10,16,11,5,4,1,11,7,7,4,10\\n18,29,18,6,27,1\\n56,44\\n23,6,11,13,9,1,20,4,13\\n6,43,1,1,44,5\\n46,54\\n16,32,29,22\\n21,45,34\\n1,6,62,30\\n1,18,18,1,34,1,1,9,18\\n1,52,6,1,13,26,1\\n7,10,6,5,1,5,1,43,1,21\\n59,41\\n10,14,1,10,34,27,1,1\\n25,14,28,29,2,1\\n8,1,2,2,8,46,34\\n11,15,9,12,5,9,39\\n1,1,17,14,5,63\\n1,1,7,1,90\\n24,7,70\\n3,5,4,16,47,6,15,3\\n9,74,9,8\\n53,9,2,30,6\\n3,87,2,3,5\\n72,17,2,9\\n4,11,3,4,3,1,1,19,9,13,8,25\\n5,3,16,6,70\\n39,6,1,24,4,25\\n3,6,52,3,16,20\\n5,8,33,4,18,17,3,1,11\\n88,1,11\\n24,11,15,5,44\\n93,5,2\\n52,9,39\\n39,32,9,19\\n79,1,6,3,3,7,1\\n90,3,2,5\\n5,1,5,89\\n5,87,6,2\\n100\\n3,10,5,16,64\\n100\\n6,8,3,15,68\\n18,20,16,36,1,9\\n98,1\\n89,11\\n100\\n67,33\\n100\\n60,39,1,1\\n46,27,27\\n59,41\\n72,28\\n69,31\\n46,4,1,49\\n8,7,1,12,6,15,1,21,27,2\\n43,8,2,8,29,10\\n13,4,31,3,29,18,1\\n4,32,6,2,4,3,3,22,24,1\\n100\\n50,50\\n5,12,2,1,1,3,1,1,36,15,16,6\\n14,58,6,2,4,2,5,1,9\\n11,1,6,1,1,49,1,1,30\\n23,1,16,5,16,16,1,3,6,4,1,8,1,1\\n6,7,9,6,12,1,3,10,16,3,7,6,10,1,1,2,1\\n58,42\\n30,6,64\\n99\\n5,95\\n1,99\\n16,84\\n26,73\\n12,7,76,5\\n1,12,72,15\\n6,79,15\\n100\\n26,74\\n9,91\\n100\\n63,37\\n50,50\\n43,12,1,2,40\\n6,3,4,31,26,29\\n100\\n44,55\\n30,1,20,49\\n43,1,40,17\\n41,5,29,24\\n38,14,18,29\\n35,65\\n18,38,2,43\\n17,47,35\\n72,28\\n14,85,1\\n25,74\\n3,23,29,1,4,3,4,6,17,2,10\\n82,2,2,3,11\\n8,25,5,1,1,1,1,2,8,12,15,20\\n27,29,19,24,1\\n1,7,11,17,1,6,16,16,1,1,3,19\\n34,2,2,7,8,5,4,6,18,13\\n92,8,1\\n7,3,18,26,6,17,20,1,1\\n3,2,38,56\\n100\\n100\\n100\\n61,39\\n100\\n1,1,1,1,93,1,2\\n42,11,45,2\\n3,73,24\\n100\\n8,3,3,11,2,10,4,29,31\\n100\\n5,7,8,9,9,12,26,5,6,14,1\\n100\\n100\\n100\\n72,28\\n20,23,1,57\\n18,40,41\\n20,15,28,8,5,20,1,1,1\\n51,1,47,1,1,1\\n62,35,1,1,1\\n73,24,2\\n7,8,6,19,56,4\\n24,1,62,8,4\\n18,5,5,55,10,7\\n87,4,10\\n2,40,47,11\\n77,23\\n38,19,43\\n49,7,2,1,4,16,10,10\\n20,52,21,3,2,3\\n4,14,5,9,26,14,28\\n69,2,29\\n1,61,37,1\\n10,10,1,78\\n34,52,14\\n7,1,26,65\\n3,21,11,2,1,3,2,1,1,38,12,5\\n57,1,30,1,9,1\\n5,3,10,9,12,1,22,9,14,11,5\\n35,57,8\\n8,3,1,1,3,1,7,1,5,21,50\\n3,14,2,1,8,1,51,14,1,1,4,1\\n46,5,4,15,30\\n3,2,10,12,2,2,1,3,45,19\\n100\\n100\\n42,30,17,7,4\\n5,3,4,31,57\\n36,39,25\\n44,15,27,7,7\\n11,58,25,6\\n3,4,1,2,79,4,2,2,3\\n6,12,15,67\\n55,9,8,9,12,8\\n4,25,6,1,13,39,1,1,1,1,1,2,1,4\\n80,2,2,4,12\\n55,45\\n3,97\\n18,1,22,12,46\\n75,25\\n90,10\\n83,12,1,1,2\\n87,12\\n26,13,62\\n7,6,6,81\\n19,6,75\\n21,39,1,39\\n41,58\\n3,97\\n38,62\\n1,83,16,1\\n100\\n99,1\\n81,19\\n96,4\\n39,9,21,28,1,1,1\\n30,10,27,3,29\\n21,12,19,15,33\\n1,47,1,51\\n100\\n59,41\\n56,44\\n100\\n100\\n46,1,1,16,4,5,8,19\\n54,25,21\\n16,7,77\\n26,67,7\\n19,13,68\\n41,1,58\\n41,1,58\\n1,56,8,1,35\\n3,5,15,15,13,6,16,9,18\\n17,6,9,6,62\\n7,27,66\\n19,13,14,54\\n100\\n6,94\\n5,95\\n64,19,18\\n83,13,4,1\\n6,10,23,27,20,4,3,7\\n64,22,2,6,1,3,1,1\\n23,4,29,37,7\\n17,16,57,5,5\\n37,5,51,7\\n56,34,2,5,3\\n80,20\\n100\\n82,18\\n56,37,7\\n2,1,1,1,1,95\\n4,52,7,36\\n1,22,14,40,23\\n3,1,4,1,1,17,42,31\\n12,15,18,39,15\\n64,12,6,14,2,1,1\\n15,6,6,16,27,11,2,16\\n55,1,3,12,4,26\\n25,28,1,29,13,4\\n39,53,3,2,2\\n10,68,1,21\\n33,21,7,14,25\\n11,6,22,11,26,24\\n67,26,7\\n18,15,68\\n26,29,8,1,36\\n3,2,3,23,23,7,2,36\\n3,6,7,4,3,76\\n5,13,17,1,1,1,1,4,58\\n100\\n100\\n1,46,11,32,4,6\\n1,1,88,4,7\\n49,39,13\\n39,13,43,4\\n83,17\\n14,53,34\\n1,9,12,12,19,48\\n6,79,15,1\\n22,17,29,32\\n45,7,18,7,22,1\\n1,4,1,74,21\\n38,62\\n1,5,1,3,43,47\\n83,17\\n57,43\\n14,10,76\\n100\\n100\\n100\\n30,68,1,1\\n35,65\\n22,78,1\\n13,68,19\\n1,3,2,94\\n10,4,33,15,39\\n51,1,17,31\\n11,11,1,1,78\\n1,1,1,26,72\\n6,94\\n100\\n100\\n72,1,27\\n69,8,2,5,3,1,12\\n1,1,1,98\\n1,1,32,8,58\\n100\\n83,17\\n1,67,32\\n78,22\\n86,14\\n1,24,16,60\\n13,3,83\\n100\\n7,40,20,32,1\\n17,2,80\\n20,1,7,22,1,14,6,9,21\\n72,28\\n2,1,72,20,2,3\\n5,25,66,2\\n7,39,54\\n15,16,41,28\\n100\\n100\\n75,25\\n100\\n100\\n100\\n100\\n25,27,4,4,41\\n53,23,23\\n28,41,7,9,1,11,2\\n7,6,24,37,26\\n20,58,21\\n31,56,8,4\\n62,38\\n9,1,1,3,1,1,23,9,53\\n52,48\\n100\\n4,3,93\\n59,13,11,16,1\\n93,2,2,3\\n6,94\\n89,6,4\\n29,1,70\\n2,53,10,4,13,5,3,9\\n11,3,1,1,1,12,72,1\\n5,1,95\\n100\\n100\\n3,50,2,15,6,5,7,5,4,2\\n1,20,18,61\\n17,12,45,21,2,1,1\\n7,65,27\\n8,35,4,9,28,10,6\\n27,13,26,6,15,13\\n15,14,8,1,47,10,1,3,1\\n13,2,9,22,7,22,26\\n8,7,3,1,3,16,10,52\\n1,4,2,6,15,5,5,7,55\\n36,19,1,1,43\\n28,25,47,1\\n45,1,53,1\\n83,7,5,3,2\\n52,1,1,8,1,37\\n100\\n9,1,21,53,16\\n29,24,30,8,8\\n100\\n26,8,1,1,1,63\\n11,4,3,1,80\\n50,1,1,44,1,1,1,1,1,1\\n13,7,3,39,2,5,31\\n14,5,6,12,13,2,48\\n18,7,6,10,12,6,18,7,15\\n11,63,7,6,12,1,1,1\\n87,1,7,6\\n5,27,1,23,26,18\\n14,5,6,5,5,9,9,46\\n2,1,1,1,95\\n13,8,28,4,5,42\\n1,25,12,60,1,1\\n1,86,13\\n100\\n51,49\\n5,8,5,29,23,30\\n45,49,7\\n21,8,14,2,7,2,1,4,2,1,33,6\\n4,1,3,1,44,48\\n2,47,36,15\\n43,7,19,30\\n14,8,27,6,1,5,1,8,3,27\\n54,5,1,1,4,28,5,2\\n1,34,1,1,9,15,3,35\\n14,40,46\\n19,36,46\\n26,28,46\\n33,28,39\\n7,7,5,79,1,1,1\\n73,5,1,14,6\\n16,25,58\\n4,96\\n59,41\\n76,2,6,7,4,3,3\\n13,23,27,1,31,6\\n26,51,8,3,11\\n48,6,17,2,6,3,3,16\\n4,2,3,2,8,3,6,5,10,2,4,10,2,1,2,1,16,18\\n42,33,1,25\\n2,4,4,5,4,14,2,1,3,2,2,2,55\\n1,6,17,16,1,1,5,51\\n5,2,4,1,23,44,8,4,8,1,1\\n5,1,11,15,1,8,39,1,1,1,19\\n100\\n100\\n42,30,1,1,26\\n23,1,76\\n11,27,8,34,20\\n100\\n61,4,34\\n82,18\\n100\\n100\\n18,20,4,3,12,29,5,9\\n55,45\\n61,39\\n40,37,11,2,10\\n64,8,6,2,9,11\\n80,5,1,13\\n74,19,2,1,2\\n14,82,4\\n64,27,10\\n2,2,18,21,9,47\\n7,8,11,7,67\\n27,3,69\\n37,1,6,2,4,22,6,21\\n6,2,31,14,47\\n35,62,1,1\\n6,73,17,3,1\\n3,9,10,5,4,8,6,2,13,8,9,11,2,5,5\\n15,2,20,12,8,5,16,2,20\\n6,58,3,28,3,2\\n1,5,7,4,4,8,3,7,8,53\\n1,1,1,98\\n12,73,15\\n1,70,13,16\\n21,12,56,11\\n3,6,4,10,55,7,2,10,5\\n100\\n34,20,46\\n100\\n16,4,15,31,23,12\\n11,10,41,1,1,36\\n2,98\\n22,10,1,7,4,4,4,14,18,13,3\\n6,19,13,1,3,39,9,9\\n33,67\\n100\\n56,44\\n100\\n2,3,5,3,3,1,14,47,10,5,7\\n3,97\\n2,6,26,9,6,8,12,32\\n1,1,56,30,12\\n5,18,16,61\\n12,14,47,14,14\\n100\\n27,71\\n27,18,3,4,17,5,21,1,1,2\\n81,12,6\\n19,1,1,4,1,20,6,1,9,4,11,23,4\\n8,1,5,1,1,1,5,1,1,11,1,1,1,1,10,1,35,18\\n3,97\\n5,42,23,31\\n55,1,7,2,10,2,1,23\\n2,2,37,8,30,21\\n3,1,12,15,4,7,11,39,8\\n3,3,1,3,4,9,4,3,6,7,17,9,18,3,5,1,1,2,3\\n6,19,17,11,47\\n6,32,3,15,24,3,17\\n30,3,18,23,22,3\\n10,29,16,35,10\\n42,9,39,3,6\\n100\\n11,1,6,31,41,11\\n4,29,62,5\\n41,4,8,14,21,11\\n1,1,1,23,11,26,37\\n23,26,1,36,13\\n100\\n69,30\\n100\\n5,95\\n14,86\\n100\\n100\\n100\\n3,47,45,1,3,1,1,1\\n1,2,35,54,1,2,4,1\\n12,5,4,6,56,17\\n1,39,32,28,1\\n31,34,34\\n3,1,15,16,4,6,5,31,20\\n72,7,14,6\\n21,62,1,4,4,8\\n3,2,53,40,1\\n5,3,2,90\\n72,28\\n96,4\\n100\\n7,91,2\\n41,33,3,3,9,11\\n53,16,4,10,6,2,2,5,1\\n46,1,2,2,1,12,12,4,4,8,6\\n100\\n51,23,26\\n2,2,96\\n1,1,65,33\\n100\\n98,2\\n100\\n20,62,18\\n1,31,5,62,1\\n20,2,2,16,2,11,20,25,2,2\\n1,29,42,14,1,13\\n100\\n100\\n65,35\\n3,7,10,13,3,4,11,4,44\\n2,11,4,7,18,21,37\\n4,18,5,5,62,3,2\\n82,18\\n4,11,2,1,1,58,1,24\\n2,3,8,1,2,4,9,9,11,3,2,9,8,30\\n7,11,22,11,5,3,3,39\\n34,32,34\\n40,23,36\\n100\\n25,1,40,14,20\\n99\\n90,10\\n32,32,36\\n50,23,18,8\\n25,4,71\\n28,5,18,48\\n60,12,29\\n1,99\\n20,78,2\\n34,64,2\\n6,64,6,21,2,1\\n14,42,3,3,18,16,2,2\\n18,82\\n5,4,32,51,2,2,4\\n1,1,68,31\\n100\\n13,7,3,67,11\\n7,1,1,2,3,4,26,21,31,1,2\\n41,49,9\\n6,94\\n26,4,1,11,7,7,13,1,1,6,7,10,2,2,2\\n19,2,2,8,1,7,6,10,2,4,2,13,1,13,10\\n95,5\\n94,6\\n5,5,30,19,41\\n15,16,9,10,8,6,11,2,13,10\\n62,3,35\\n65,34\\n1,1,1,97\\n1,30,7,9,11,1,41\\n59,40\\n20,15,4,5,9,1,13,34\\n1,3,1,15,35,22,25\\n100\\n100\\n29,1,1,19,51\\n21,50,29\\n8,11,1,1,60,18,1\\n1,46,1,1,1,1,1,49,1\\n1,4,46,17,17,15\\n100\\n100\\n3,3,4,5,12,3,1,1,13,15,26,6,6\\n31,38,19,12\\n11,1,45,13,1,1,28\\n24,15,4,2,1,9,8,31,6\\n2,40,13,45\\n49,12,39\\n2,2,48,24,17,7\\n1,1,37,61\\n6,1,63,27,4\\n8,92\\n1,99,1\\n13,5,8,25,9,6,34\\n19,16,7,9,1,16,10,20,2\\n29,5,2,3,2,3,37,3,3,3,8,1\\n18,7,29,46\\n13,38,50\\n23,14,1,60,2\\n57,43\\n97,3\\n6,21,7,12,54\\n14,19,68\\n1,39,7,1,7,1,23,21\\n6,6,6,1,27,31,12,12\\n100\\n100\\n6,46,47\\n33,7,58,3\\n2,98\\n10,14,76\\n95,5\\n96,4\\n23,65,11\\n60,16,24\\n40,1,41,11,7\\n1,4,1,10,33,17,9,17,5,1,3\\n53,42,5\\n100\\n5,40,1,7,19,7,19,2\\n44,6,13,1,4,8,13,10\\n40,12,4,2,14,6,7,14\\n54,5,9,21,10\\n9,34,3,44,5,5\\n46,1,7,15,31\\n15,13,21,50\\n1,3,1,23,1,1,60,11\\n2,2,8,16,5,16,2,9,1,37,2\\n27,38,35\\n19,9,4,4,5,43,3,13\\n1,2,1,33,3,1,1,2,54\\n40,1,37,12,9\\n2,8,2,21,2,30,10,5,20\\n12,11,77\\n6,19,19,15,6,8,14,6,6\\n10,10,1,5,1,11,6,16,30,10\\n1,34,26,1,5,1,13,5,1,14,1\\n41,33,27\\n11,19,10,2,9,47\\n3,3,3,34,3,3,3,29,3,18\\n22,77,1\\n31,69\\n6,5,10,18,59,1,1\\n42,1,27,1,29\\n11,1,15,55,1,1,17\\n1,65,1,33,1\\n6,4,3,87\\n6,6,9,4,20,19,5,3,1,1,19,7,1\\n1,17,30,31,8,5,8\\n19,34,16,11,4,4,11,1\\n1,1,1,6,15,8,59,7,1\\n1,8,55,1,1,8,1,2,6,15\\n54,46\\n26,19,7,33,2,12,2\\n44,4,52\\n30,42,14,5,9\\n15,21,10,29,1,16,8\\n19,11,2,2,8,3,1,1,1,2,5,3,4,2,6,3,13,5,3,5\\n48,7,9,10,1,8,2,2,11\\n30,1,1,68\\n58,1,41\\n31,10,58\\n24,14,20,16,26\\n6,1,1,28,30,15,10,9\\n20,12,45,22\\n20,73,5,2\\n4,31,35,3,7,18,2\\n9,24,42,26\\n100\\n27,62,10\\n6,2,4,5,3,4,5,7,16,11,5,5,4,18,1,2\\n2,5,24,4,15,32,17\\n2,5,1,1,14,5,30,2,5,35\\n14,8,6,4,1,20,31,17\\n42,18,14,8,9,4,5,1\\n1,20,16,21,41,1\\n100\\n100\\n4,9,54,32\\n18,1,7,11,10,9,43,2\\n25,75\\n15,1,1,4,2,39,36,3\\n19,56,24\\n30,5,6,16,16,8,1,6,3,2,7\\n3,3,4,13,15,7,5,1,48\\n7,26,1,1,63,2\\n8,8,5,2,57,2,17,2\\n59,23,5,12,1\\n54,42,1,1,1,1\\n18,17,4,6,5,6,18,4,12,2,3,3,2\\n28,5,29,2,4,18,9,4\\n1,3,78,1,10,1,1,1,1\\n9,8,6,2,1,1,13,59\\n29,28,15,24,4\\n20,67,4,9\\n2,16,7,15,18,2,2,29,3,7\\n20,1,79\\n2,49,2,2,11,19,2,11,2,2\\n1,1,41,1,1,1,1,11,10,1,18,10\\n20,20,2,3,2,11,2,2,2,39\\n2,55,2,2,2,8,10,8,2,2,4,2\\n59,1,13,10,1,1,15\\n2,1,17,6,15,7,3,7,1,7,3,2,24,5\\n20,36,8,3,13,17,3\\n9,21,4,7,8,8,1,1,5,9,2,3,2,3,13,4\\n9,44,2,1,21,22,1,1\\n10,7,4,5,5,6,19,11,10,22\\n35,1,1,6,1,56\\n4,2,2,2,8,1,81\\n13,6,27,43,9\\n13,1,26,32,8,3,17\\n7,2,65,11,14\\n71,1,3,3,6,8,8\\n34,32,3,31\\n1,21,20,9,48\\n6,2,40,8,6,8,1,11,17\\n45,8,1,3,44\\n1,1,5,92,1\\n3,63,17,17\\n54,1,29,6,3,1,3,1\\n2,2,1,10,11,2,8,13,22,29\\n6,12,3,15,9,1,2,4,11,38\\n1,11,6,82\\n11,1,34,6,48\\n2,2,5,2,7,2,1,3,2,4,9,6,2,5,5,1,9,8,2,16,4\\n2,2,4,2,9,2,5,2,1,15,11,1,2,17,6,12,9\\n5,3,4,9,6,12,5,56\\n12,60,19,9\\n63,37\\n32,30,7,30,1\\n7,12,7,4,18,10,4,3,23,11\\n12,1,11,6,11,2,4,2,49,2,1\\n2,40,6,26,24\\n3,16,5,34,17,7,4,3,6,4\\n66,1,9,13,5,6\\n39,60,1\\n25,75\\n18,81,1\\n3,37,24,4,31\\n76,16,8\\n3,1,96\\n97,3\\n21,4,7,64,3\\n42,11,46\\n100\\n97,2,1\\n100\\n100\\n44,9,42,3\\n29,71\\n77,10,13\\n18,82\\n100\\n92,8\\n100\\n1,1,97\\n87,5,8\\n5,95\\n100\\n100\\n2,4,1,39,54\\n1,7,4,9,25,54\\n24,76\\n52,2,34,12\\n8,73,19\\n1,3,4,84,9\\n100\\n17,1,5,29,13,4,7,4,6,14\\n95,1,4\\n1,53,24,9,5,8\\n7,14,12,68\\n10,9,32,8,4,37\\n1,1,67,6,25\\n44,29,12,2,12\\n57,8,19,2,1,1,2,2,8\\n25,74,1\\n59,1,24,6,10\\n17,15,52,1,3,2,1,1,7\\n41,4,8,11,2,3,7,2,22\\n31,10,1,11,30,2,7,8\\n2,6,4,76,12\\n81,19\\n2,27,71\\n17,9,28,28,18\\n32,19,49\\n45,32,4,19\\n2,14,10,17,11,7,3,2,12,10,8,2,2\\n8,3,4,42,42\\n6,2,5,42,44\\n26,12,32,5,2,24\\n1,42,7,34,10,6\\n4,5,54,37\\n28,50,6,16\\n17,14,1,1,29,39\\n100\\n100\\n40,27,33\\n54,4,24,18\\n4,7,12,76\\n3,23,7,8,13,2,5,27,12\\n1,4,5,1,1,8,10,67,2\\n100\\n100\\n90,10\\n77,11,12\\n63,8,6,13,4,6\\n12,45,22,21\\n28,47,7,13,5\\n40,60\\n71,29\\n100\\n37,30,17,16\\n5,26,10,59\\n34,36,30\\n36,37,27\\n66,34\\n93,7,1\\n100\\n46,10,7,10,26\\n25,24,4,10,12,8,5,1,1,10\\n60,5,3,1,1,3,3,9,15\\n1,1,1,97\\n94,3,2,1\\n5,4,6,85\\n29,22,7,4,38\\n4,30,17,2,5,31,1,11\\n83,7,5,5,1\\n13,26,22,29,9\\n39,38,23\\n22,45,1,33\\n30,1,48,5,6,10\\n100\\n65,35\\n2,3,36,19,20,6,5,5,2,1\\n100\\n18,9,9,7,1,15,9,11,1,15,5\\n59,9,32\\n23,3,13,14,28,14,4,1\\n11,25,45,12,6\\n1,33,4,2,21,23,16\\n100\\n33,8,60\\n100\\n5,95\\n100\\n36,11,20,6,17,1,7,1\\n100\\n11,8,81\\n93,6\\n1,1,75,24\\n99,1,1\\n3,5,92\\n88,11\\n100\\n19,68,8,5\\n11,18,26,11,10,24\\n5,6,34,23,12,20\\n64,7,29\\n100\\n7,1,31,62\\n100\\n74,26\\n72,5,22\\n2,34,5,56,1,1,1\\n11,22,3,8,7,20,12,3,13,2\\n24,35,15,6,18,2\\n10,49,41\\n100\\n100\\n100\\n100\\n100\\n100\\n99,1\\n91,9\\n100\\n42,58\\n3,3,14,3,13,64\\n1,59,40\\n14,5,3,8,70\\n24,6,12,58\\n8,4,4,85\\n48,51\\n62,38\\n99\\n1,10,7,7,76\\n100\\n10,90\\n39,61\\n24,4,4,2,1,1,2,14,49\\n5,9,18,4,65\\n6,13,11,32,4,1,32\\n19,10,1,1,1,19,1,7,38\\n14,9,1,1,1,5,1,1,1,1,20,11,11,5,16\\n26,9,1,4,1,1,1,1,55\\n100\\n98,2\\n1,1,56,16,17,7,1\\n94,1,5,1\\n2,21,2,2,11,2,38,22,2\\n89,4,7\\n12,9,55,12,12\\n42,26,31\\n46,1,9,11,12,12,9\\n55,28,17\\n100\\n36,12,7,45\\n53,46,1,1',rsb),p);f=(b&2)==0?null:(l=Erb.v7('0,0,0,0,31,31,63,0,0,0,0,63,63,95,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\\n0,0,0,0,0,0,0,0,18,0,0,36,18,72,127,0,18,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,25,127,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,36,36,36,0,0,54,0,90,127,36,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,28,56,127,56,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,56,56\\n0,0,0,0,0,31,0,0,15,0,0,15,0,0,0,0,15,15,0,15,0,0,0,0,15,0,0,0,7,0,0,0,0,0,0,0,127\\n127,47,25,12,14,11,6,6,7,3,2,6,3,5,0,1,1,3,2\\n99,127,68,57,46,27,38,30,13,12,13,23,15,12,14,20,28,34,43\\n127,94,54,36,29,14,11,7,6,6,6,2,5,3,6,4,5,0,0\\n127,60,20,12,4,1,1,3,1,1,1,4,2,1,3,0,4,1,2,1,2,3,0,0,0,2,0,1,1,2,0,1,2,4,3,6,27\\n127,76,38,19,0,25,12,25,31,25,6,0,0,0,0,0,6,12,12\\n127,29,4,4,4,0,8,4,0,8,8,0,0,4,4,0,0,0,0\\n0,0,31,31,31,127,31,95,0,31,63,127,63,0,0,0,0,31,63\\n115,127,80,34,23,11,11,0,23,23,34,23,46,11,23,0,11,23,0\\n0,42,42,127,0,0,42,21,21,0,0,0,0,21,0,0,0,0,0\\n60,127,48,84,36,18,12,6,24,12,0,0,0,0,0,0,0,0,0\\n127,101,114,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,76\\n127,12,25,0,0,12,25,12,12,50,25,0,25,12,0,0,25,0,50\\n0,0,19,14,39,43,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,42,127,42,127,0,84,42,84,0,0,0,84,0,0,42,84,0,0\\n0,95,127,95,31,31,31,31,31,0,31,31,31,31,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,5,10,0,26,0,15,0,0,5,10,0,0,0,0,0,0,0,0,0,0,10,0,5,0,0,0,10,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,45,127\\n29,14,4,0,0,0,19,9,9,43,9,14,29,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,39,127\\n5,4,0,0,0,0,0,3,3,18,18,79,127,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n21,42,21,21,10,0,0,10,0,52,127,116,42,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,10,10,10,15,21,15,42,5,10,15,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,10,21,15,127\\n0,0,0,0,0,0,0,0,0,12,127,38,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n15,0,0,0,0,0,0,0,15,31,15,63,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,63,31,15,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,127,0,0,0,0,0,0,0,0\\n56,127,14,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,10,15,5,0,0,0,0,0,5,5,5,0,0,10,5,10,42,47,10,26,127\\n0,7,3,46,76,7,0,0,7,19,53,103,127,23,23,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,6,6,26,46,13,60,46,73,73,113,106,127,73,80,60,20,13,20,20,0,0,0,0,6,6,6,26,26,26,53,33,73,73,66,106\\n0,0,0,0,0,0,0,0,21,42,42,42,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,42,42,127\\n0,0,0,0,0,0,0,0,127,14,14,0,0,0,0,0,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0\\n0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,25,0,0\\n0,0,0,0,0,0,0,0,0,0,7,9,14,25,21,9,0,0,4,2,0,0,0,0,0,0,0,0,0,2,0,11,37,61,117,127,122\\n0,0,0,0,0,0,0,0,0,0,2,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,9,56,127,66,53,127\\n0,0,0,0,0,0,0,0,0,39,127,78,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,35,127,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,11,11,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,23,44,82,127,59\\n0,0,0,0,0,0,0,18,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,127,84,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0\\n0,0,0,0,0,0,0,0,0,63,31,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,54,36,54,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,18,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,76,127,127,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,50,0,0,0,0,0,0,0,0,25\\n101,0,0,101,0,0,0,0,0,0,0,50,50,127,0,25,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,0,0,0,0,0,0,9,0,0,0,36,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,0,21,0,0,0,0,21,21,0,0,105,0,21,42,0,0,0,21,0,63,0,0,0,0,21,0,21,0,0,21,0,0,21,0,0,127\\n0,15,95,0,0,127,31,63,0,0,0,0,15,0,0,0,0,0,0,0,0,0,15,0,0,15,0,79,15,0,0,0,0,31,0,15,127\\n0,0,0,0,0,0,0,0,0,42,0,127,0,84,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0\\n0,0,0,0,0,0,0,7,59,127,14,0,0,0,37,37,37,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,67,14,0,0\\n0,0,0,0,0,0,10,0,95,84,0,10,0,0,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,10,0,0\\n0,0,0,0,25,0,25,0,101,101,50,76,0,25,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,50,25,0,101,127,50,76,25,0,0,0,0,0,0,0,0\\n0,0,0,0,50,25,50,25,127,25,50,101,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,25,25,25,0,50,50,76,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,127,25,50,25,101,0,50,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,42,0,0,42,0,42,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,84,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,63,127,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,127,0,0,0,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,21,42,21,21,0,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0\\n0,0,0,0,0,0,0,42,42,42,42,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,127,0\\n0,0,0,0,0,0,0,42,42,42,42,0,0,0,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0\\n0,0,0,0,0,0,0,0,84,42,42,42,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,0,42,84,0\\n0,0,0,0,0,0,0,70,28,84,56,56,98,14,28,28,84,70,0,42,0,0,0,0,0,0,0,0,0,0,28,0,127,70,14,28,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,32,127,8,16\\n21,0,0,10,5,31,127,21,21,10,0,10,15,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\\n84,127,84,84,84,42,0,28,28,84,0,0,0,0,14,0,14,14,0\\n127,31,0,0,63,31,31,0,63,127,0,0,0,0,0,31,0,0,63\\n127,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,21,42,42,84,21,42,0,0,42,0,0,0,42,0,0,0,0,0\\n0,0,0,0,0,0,0,7,47,7,39,63,71,47,47,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,39,63,127,63\\n0,0,0,0,0,0,0,0,0,42,127,0,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84\\n0,0,0,0,0,0,0,0,0,34,57,92,127,23,57,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,57,46,69\\n0,0,0,0,0,0,0,25,0,0,50,127,127,76,76,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,101,101\\n0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,127,63,63,0,127,63,63,0\\n127,0,63,31,31,63,95,95,63,31,0,0,63,0,0,31,31,0,0,63,0,0,0,31,31,31,31,0,31,31,95,95,95,0,0,0,63\\n0,0,0,0,0,0,0,0,0,0,0,79,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,42,63,21,42,21,127,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,21,63,42\\n0,0,0,0,0,0,0,0,63,127,18,18,0,9,72,127,45,9,0,0,0,0,0,0,0,0,0,0,0,9,0,27,72,108,54,18,0\\n0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,63,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,127,0\\n0,0,4,4,8,0,12,16,76,105,110,55,97,59,110,84,105,16,8,4,4,0,4,0,0,4,0,0,4,0,12,38,55,127,101,38,84\\n0,0,0,0,0,0,0,0,0,0,95,31,31,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,31,63,0,63,0,63,127\\n0,0,0,0,0,0,18,54,127,90,90,18,18,54,54,54,36,0,18,0,0,0,18,18,0,36,0,0,0,0,18,0,0,36,36,90,36\\n0,0,0,12,12,114,114,127,25,25,38,0,76,38,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,0,0,15,0,63,127,47,95\\n0,0,0,0,0,25,0,50,0,0,0,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0\\n0,0,0,0,0,0,25,0,0,0,0,127,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,0,0\\n0,0,18,0,0,0,0,0,0,18,18,54,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,108\\n0,0,0,0,0,1,0,8,8,42,91,75,61,58,127,24,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,72,56,77\\n0,0,0,0,0,0,0,0,0,0,0,127,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,75,127\\n0,0,0,0,25,0,0,101,127,127,25,25,0,50,25,25,101,25,25,0,0,0,0,0,25,0,0,0,25,0,0,0,0,127,0,50,101\\n0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,21,63,127,42\\n23,0,11,5,0,23,23,80,121,127,51,75,57,57,75,127,63,40,34,40,0,5,5,0,0,0,5,0,11,23,34,5,69,63,57,46,34\\n0,0,0,0,0,10,0,42,105,84,31,52,42,42,42,116,10,21,10,0,0,0,0,0,0,0,0,0,0,0,21,42,127,31,42,21,84\\n0,0,0,0,0,0,0,42,84,0,84,84,21,0,21,42,105,21,21,42,0,0,0,0,0,0,0,0,0,0,84,63,42,63,21,21,0,0,127,63,105,21,0,21,0,0,0,0,0,0,0,0,0,0,42,63,21,105,21,42,21,0,21,127,42,0,21,21,0,0,0,0\\n0,0,0,0,0,0,21,21,0,63,84,42,21,0,0,84,63,127,0,0,0,0,0,0,0,0,0,0,0,21,63,21,42,21,84,0,0,42,84,63,63,63,42,21,0,0,0,0,0,0,0,0,0,0,0,63,63,42,84,21,0,0,63,84,63,0,63,42,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,12,76,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127\\n0,0,0,0,0,0,0,0,0,31,0,31,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,31,31,127\\n0,0,0,0,0,0,0,0,0,0,15,15,79,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,127\\n0,0,0,0,0,0,0,0,14,0,0,112,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,28\\n0,0,0,0,0,0,0,0,0,101,101,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,63,12,0\\n0,0,0,0,0,0,0,0,0,127,0,127,0,0,0,0,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,127,0,0,0,0,0,127,127,127\\n0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,26,43,127,13,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,71,127,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,84,0,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84\\n0,0,0,0,0,0,0,0,0,8,101,127,33,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,36,127,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,95,95,31,0,127,0,0,0,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,19,6,38,6,50,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,12,25,127\\n0,0,0,0,0,0,4,9,0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,63,127\\n0,0,0,0,0,0,0,18,0,0,90,18,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,84,0,84,42,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,0,18,0,0,0,0,0,0,0,0,0,0,0\\n0,7,28,0,7,0,7,21,0,14,0,35,7,0,28,14,7,28,0,28,7,14,21,0,7,0,7,0,14,7,0,7,28,14,7,7,127\\n0,0,21,42,42,0,0,0,0,21,21,21,127,63,0,42,21,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,42,0,0\\n0,0,0,0,0,0,0,0,0,15,15,0,0,15,111,111,127,47,15,0,15,0,0,0,0,0,0,0,0,0,15,0,0,15,47,0,31\\n0,0,0,0,0,0,0,0,0,0,127,42,42,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84\\n0,0,0,0,0,0,0,36,0,54,36,36,108,127,54,36,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,108\\n0,0,0,0,0,0,0,0,45,54,36,54,36,36,81,45,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,63,45,27,127\\n0,0,0,0,0,0,0,0,0,0,12,127,101,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,114,127\\n0,0,0,0,0,0,0,0,0,0,84,127,127,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,36,27,117,0,0,0,0,9,0,0,0,127,9,36,36,9,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,50,127,38,50,25,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,38,50,101\\n0,0,0,0,0,0,0,0,0,0,0,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,84,127\\n0,0,0,3,0,0,0,3,0,24,69,42,9,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,30,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,127,44\\n0,0,0,0,0,0,0,0,0,0,42,0,21,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,95,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,14,70,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,112,70,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,48,127,66,42,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,24,30,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,12,42,30,42,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,24,72,127,54,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,127,21,0,0,63,21,0,0,21,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,0,0,0,15,15,15,0,0,0,0,0,0,0,0,0,0,31,15,63,127,111,127,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,31,0,95,63,127,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,25,0,0,25,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,28,0,56,28,70,84,112,112,56,42,84,56,112,28,42,0,0,0,0,0,0,0,0,0,0,0,28,42,70,70,84,127,112\\n0,0,0,0,0,0,0,0,0,0,0,10,21,21,52,63,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,21,10,0,0,10,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,23,0,23,11,0,46,127,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,92,11,0,11,0,11,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,3,10,32,89,127,77,33,13,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,12,44,90,110\\n0,0,0,0,0,0,0,21,127,84,0,0,0,42,21,127,0,21,21,0,0,0,0,0,0,0,0,0,0,21,0,0,42,63,21,21,0\\n0,0,0,0,0,0,0,0,0,46,53,80,127,46,38,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,30,57,100,76\\n0,0,0,0,0,0,0,0,0,84,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,42,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,15,15,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127\\n0,0,0,0,0,0,0,0,9,27,18,72,117,117,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,127,127\\n0,0,0,0,0,0,0,47,63,111,127,47,15,15,79,63,47,31,15,0,0,0,0,0,0,0,0,0,0,0,31,15,63,63,63,47,31\\n0,0,0,0,0,0,0,0,0,14,14,56,112,42,127,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,98,42,42,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,14,42,56,42,0,14,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,18,72,54,90,127,90,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,108,72,72,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,54,54,108,18,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,105,105,84,42,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,84,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127,105,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,42,105,42,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,63,105,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,31,127,116,21,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,21,21,10,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,10,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,10,42,74,127,52,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,31,31,21,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,105,10,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,1,1,4,18,41,127,79,28,14,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,14,54,79\\n0,0,0,0,0,0,0,0,0,1,4,46,127,46,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,49,104\\n0,0,0,0,0,0,0,0,18,9,9,45,90,27,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,9,9,54,127\\n0,0,0,0,0,0,0,0,127,0,0,63,0,127,63,63,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,127\\n0,0,0,0,0,0,25,0,38,127,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,31,63,0,127,31,63,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,63\\n112,127,84,56,70,0,42,42,14,14,14,0,14,0,0,14,0,0,0\\n14,21,14,28,0,0,0,0,0,0,0,0,14,0,14,0,0,0,14,7,0,0,0,0,7,0,0,0,14,0,0,42,56,63,91,98,127\\n127,95,63,95,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0\\n0,127,108,54,36,0,0,0,0,36,0,0,0,0,0,0,0,0,0\\n127,63,0,21,21,42,0,21,0,42,0,0,0,0,42,0,0,21,0\\n127,31,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,95,0,95,63\\n0,25,0,0,0,25,25,25,50,76,127,76,0,50,127,50,50,0,0,25,25,25,0,0,0,0,0,0,25,25,0,0,25,76,50,50,50\\n0,0,0,0,0,0,0,84,84,84,63,0,0,21,63,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,42,0,0\\n0,0,0,0,0,0,0,0,15,63,47,127,63,15,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,79,47,0\\n0,0,0,0,0,0,0,0,0,0,31,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,4,0,4,31,58,127,54,40,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,45,117\\n0,0,0,0,0,0,0,0,0,3,20,73,127,79,25,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,25,65,92\\n0,0,0,0,0,0,0,0,0,8,50,42,127,50,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,84\\n0,0,0,0,0,0,0,0,0,63,0,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,127,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,50,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,54,18,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,0,127,63,63,63,127,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,0,63,63,0,0,0,63,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,0,63,63,0,63,63,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63,0,127,127,63,63,0,63,0,0,0,0,0\\n56,28,70,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,0,2,0,0,0,0,0,2,0,0,0,0,6,4,0,2,127\\n127,20,9,5,11,3,3,1,3,0,0,3,0,3,3,3,1,0,0\\n127,122,14,4,24,0,4,0,9,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,9,0,4,0,4,0,0,0,4,0,0,0,48\\n0,0,0,0,0,0,0,0,0,0,0,69,127,92,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,92\\n79,31,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127\\n31,15,0,15,63,15,0,15,0,47,79,79,47,15,31,63,63,0,127\\n0,0,0,0,0,21,0,0,21,0,0,0,127,0,0,0,0,21,0,0,0,42,0,0,0,0,0,42,0,21,0,21,0,0,0,0,0\\n0,0,0,84,84,0,0,42,0,0,127,42,42,42,0,0,42,42,0\\n84,63,42,105,0,42,84,63,105,63,21,105,21,105,105,21,42,63,127\\n84,42,0,0,0,0,0,0,0,0,0,42,127,42,84,0,0,0,0,0,0,42,0,0,0,84,0,0,0,0,0,0,0,0,0,42,0\\n0,0,84,84,0,84,0,127,42,0,42,0,0,0,0,0,0,42,0\\n108,36,63,63,45,99,81,127,63,90,18,63,63,27,54,54,81,45,54\\n0,29,48,39,19,78,39,19,39,68,39,58,39,19,68,39,19,127,9,29,29,87,58,39,39,68,39,58,58,19,39,48,68,19,29,48,58\\n75,127,110,70,94,64,48,48,78,51,91,86,72,75,105,54,56,64,43\\n127,95,95,95,31,0,31,0,31,0,31,0,63,31,63,0,31,0,127,63,0,95,0,31,63,31,127,31,31,63,31,0,63,0,63,95,0\\n127,0,31,31,31,31,63,63,0,0,31,0,31,63,31,0,31,63,31,0,0,63,63,63,0,0,0,0,31,0,0,0,0,31,0,31,63\\n0,42,42,42,0,0,0,0,0,0,0,0,84,0,84,0,84,0,0,0,0,42,0,84,42,0,0,0,0,0,0,0,127,0,0,0,0\\n0,7,49,28,35,28,49,56,49,21,14,21,56,77,42,127,42,0,84\\n0,0,0,0,0,0,0,10,10,31,84,0,21,0,10,21,21,10,74,0,21,31,21,10,0,10,31,42,10,0,10,84,0,95,52,21,127\\n42,0,0,84,0,63,127,42,0,0,0,63,0,0,0,0,0,0,0\\n0,0,0,31,0,0,0,31,127,0,31,0,0,31,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0\\n0,0,0,0,0,127,63,127,0,63,63,127,63,63,127,63,63,0,63,0,0,0,0,63,0,0,0,127,0,0,0,0,0,0,0,0\\n95,0,31,0,0,31,63,0,63,95,31,0,31,0,31,0,0,0,63,31,31,0,31,31,0,0,31,0,127,0,0,0,0,0,31,0\\n0,0,0,42,0,42,127,127,84,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n13,23,63,127,26,40,16,16,6,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,63,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,127\\n0,42,0,0,0,0,0,0,0,0,42,84,127,127,0,0,127,0,0\\n0,0,63,0,0,63,0,0,63,0,0,0,0,0,0,63,63,0,127,0,0,127,0,0,0,127,0,63,0,0,0,127,63,0,0,0,127\\n0,0,0,0,0,0,0,0,42,0,0,0,0,21,0,0,0,21,0,0,0,21,63,0,0,21,42,21,0,42,21,21,0,0,0,21,127\\n0,0,0,0,0,36,0,0,0,0,18,18,18,18,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,0\\n1,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,6,47,127\\n2,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,12,30,127\\n0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,56,127\\n127,16,4,4,1,0,4,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,24,18,9,7,2,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,10,2,3,2,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,1,3,5,5,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,11,41,127\\n0,0,0,0,0,0,0,0,1,2,5,5,4,7,7,4,5,5,3,1,4,2,1,1,0,1,1,0,0,1,2,7,16,27,66,92,127\\n0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,6,0,3,3,0,6,0,0,6,0,0,0,0,3,3,6,6,18,9,6,127\\n1,0,0,0,0,0,0,2,4,8,17,127,25,5,2,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n1,1,1,1,1,1,2,3,6,9,20,127,58,8,2,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n17,18,7,6,4,1,2,1,5,13,22,127,47,17,2,1,0,2,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,2,3,4,10,13,12,6,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,24,71,127\\n0,1,2,0,4,3,7,22,64,127,111,55,19,8,5,6,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,7,0,3,3,0,3,10,0,0,0,0,0,0,0,0,0,0,0,0,3,17,7,10,21,38,67,59,127\\n3,1,3,0,1,1,7,10,31,127,127,69,24,7,6,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n18,18,20,22,11,4,0,0,0,1,4,5,6,4,6,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,3,3,15,30,127\\n2,3,2,3,1,0,2,10,13,29,70,125,127,27,5,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n7,3,9,5,7,1,0,0,0,1,0,0,3,5,7,12,16,32,30,52,47,70,90,92,59,127,85,116,50,38,25,32,29,21,18,23,18\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,30,15,86,71,60,127,86,96,55,50,30,45,30,35,20,15,0,0,0\\n47,19,18,5,9,4,1,1,3,3,1,3,5,3,10,19,31,28,36,34,37,77,80,124,123,127,78,43,34,23,11,7,4,2,11,10,15\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,4,3,12,14,33,69,74,92,127,66,34,15,12,4,1,1,3,0,0,3\\n31,42,92,127,42,15,11,5,4,9,5,3,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n24,8,47,127,35,15,15,3,7,21,5,0,3,10,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n60,35,102,127,73,31,25,16,17,25,6,6,8,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n9,19,21,127,78,34,7,7,14,24,19,12,7,26,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,19,0,48,48,87,78,107,127,87,107,39,0,19,29,9,0,9,0\\n115,51,40,5,5,0,0,0,0,0,0,0,0,11,0,0,0,11,28,11,23,28,46,69,92,127,75,34,11,0,0,17,0,5,11,0,0\\n0,36,36,18,0,36,0,36,18,127,54,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n112,127,56,0,0,14,0,0,98,28,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,67,42,25,76,127,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,127,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,31,127,0,31,31,0,0,0,0,0,0,0,0,0,63\\n0,0,0,0,0,0,0,0,0,0,0,0,7,3,11,34,57,96,127,69,57,38,15,3,0,0,3,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,63,95,31,127,0,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,21,105,127,63,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,1,4,1,6,17,54,127,104,30,9,9,8,6,0,1,0,0,1,0,0,0,0,0,1,0,6\\n0,0,0,0,0,0,0,0,0,0,22,82,127,119,97,52,67,29,29,7,7,0,0,7,0,0,0,0,0,0,0,7,29,14,14,7,14\\n0,0,0,0,0,0,0,0,0,25,0,101,50,76,50,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,25,127,25,50\\n0,0,0,0,0,0,0,0,0,0,3,3,11,9,2,4,1,2,0,0,0,0,0,2,1,0,0,0,0,0,0,0,3,10,34,43,127\\n7,1,0,12,0,0,0,7,0,7,10,12,29,61,127,21,3,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,28,42,127,14,42,70,42,42,0,0,0,0,0,0,0,0,0,0,14,14,0,14,42,42,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,127,84,84,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,28,0,14,28,0,70,28,127,14,56,0,0,14,0,0,0,28,0,0,0,0,0,0,0,0,14,28,28\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,95,127\\n0,0,0,0,0,0,0,0,0,0,15,0,15,15,0,15,15,15,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,63,84,21,42,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,11,0,0,34,34,69,127,92,103,92,34,11,11,11,0,0,0,0,0,11,0,11,0,0,0,0,115\\n0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,13,13,31,36,127\\n0,0,0,0,0,0,0,0,0,21,0,127,21,63,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n24,24,0,0,12,6,60,78,42,120,127,127,72,30,0,0,0,18,0,6,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,0,1,8,17,11,1,4,0,1,0,1,0,0,0,0,1,0,0,2,0,0,0,2,3,0,18,127\\n0,0,0,0,0,0,10,0,0,0,0,0,0,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,84,127\\n0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,11,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,6,13,6,6,4,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,9,0,4,0,4,4,0,127\\n0,0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,21,42,95,127,10,52,0,10,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,3,3,6,25,3,0,0,0,0,3,0,0,0,3,0,6,0,3,19,53,69,127\\n0,0,0,0,0,0,0,0,0,0,2,9,21,31,23,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,3,8,22,77,127\\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,36,0,0,0,0,0,0,0,0,0,18,0,0,18,0,18,127,36\\n0,0,0,0,0,0,0,0,0,18,0,36,108,127,18,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,2,1,3,5,4,6,6,33,127,27,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,127\\n0,0,0,0,0,0,0,0,0,0,0,12,12,63,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,21,21,42,42,42,127,42\\n27,18,18,18,0,13,0,0,0,0,4,0,27,22,0,0,0,0,4,0,0,0,13,0,18,54,31,31,4,4,18,18,45,36,127,95,45\\n127,5,0,0,0,0,10,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n19,29,19,0,0,0,0,9,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,31,0,0,31,0,127,127\\n127,21,0,0,0,21,21,0,0,0,42,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,10,29,83,123,126,127,91,68,39,26,18,18,11,7,8,2,7,4,3,3,6,7,7,24,31,54,74\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,127,127,0,0,25,50,0,25,0,0,0,0,50,50,25,25,76,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,0,12,38,25,0,12,12,12,0,25,12,0,25,0,0,38,50,25,114,127\\n5,6,5,7,11,16,30,19,29,49,65,127,113,35,16,20,5,3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,11,0,0,0,11,23,11,11,57,127,0,46,34,69,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,1,1,5,31,127,16,0,0,0,0,3,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,2,3,0,1,3,5,11,9,33,43,82,103,107,57,43,19,9,8,14,7,2,1,3,3,1,2,2,3,8,5,14,45,37,76,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,21,42,35,127\\n0,0,0,0,0,0,0,0,38,127,63,25,12,0,25,0,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,1,0,0,0,7,28,49,64,59,56,45,30,10,11,3,1,1,4,4,1,3,2,1,1,4,12,21,26,75,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,95,127,0,0,0,0,31,0,0,0,0,0,31,31,63,0,31,95,63\\n0,0,11,3,11,7,23,59,79,71,127,99,87,19,11,19,31,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,1,3,11,12,28,26,20,18,5,15,9,1,0,2,5,7,4,5,3,0,1,10,20,24,39,91,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79,47,127\\n0,0,0,0,0,0,0,0,0,0,3,12,42,33,30,48,6,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,12,60,127,120\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,127,0,0,127,63,0\\n0,0,0,0,4,0,0,0,0,19,58,63,73,107,127,83,43,39,39,14,14,24,4,19,14,9,9,0,0,0,0,0,4,9,14,34,48\\n0,31,31,63,0,0,0,0,31,31,31,31,127,0,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n14,0,7,0,7,21,14,14,63,14,77,112,127,98,98,49,56,0,14,7,0,0,0,7,0,0,0,0,0,7,7,7,84,119,14,77,42\\n0,0,0,0,0,0,0,0,0,0,21,21,42,42,21,42,63,42,42,0,0,0,0,21,0,0,0,0,0,0,21,0,63,42,21,84,127\\n0,0,0,0,0,0,0,0,0,42,0,21,0,0,42,21,0,0,0,21,0,0,0,0,0,0,0,0,21,0,42,0,21,127,42,105,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0,84,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,2,3,6,7,3,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,11,64,115,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,8,8,87,127,61\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,25,38,127\\n0,0,9,0,9,0,0,0,0,0,97,117,39,29,29,127,9,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,31,95,127\\n0,0,0,0,0,0,0,0,2,0,2,9,58,79,39,16,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,9,7,51,127\\n0,0,0,0,0,0,0,0,0,0,0,0,10,63,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,52,127\\n0,0,0,0,0,0,0,0,0,0,1,1,14,33,15,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,33,127\\n0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,5,2,1,0,0,0,0,0,0,0,0,0,2,0,0,1,1,7,25,49,88,127\\n0,0,0,0,0,0,0,0,3,0,3,15,7,3,3,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,19,19,127,84\\n0,0,0,0,0,0,0,14,0,28,28,0,28,127,56,14,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,47,47,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,33,38,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,42,0,84,0,84,127,42,42,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,2,4,1,0,0,0,0,0,1,0,0,0,2,4,9,33,77,117,127\\n0,0,0,0,0,0,0,0,0,0,0,63,21,63,127,21,63,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,42,21,0,105,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,50,25,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,25,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\\n127,0,0,0,0,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,50,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,127,54,54,54,127,36,54,36,18,0,18,0,0,18,54,0,18,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,7,0,0,127,10,29,3,21,10,10,3,3,108\\n127,127,31,0,0,0,31,0,0,0,0,0,0,31,31,0,95,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n23,57,46,11,0,0,0,0,0,0,0,0,11,69,127,11,23,0,23,0,0,115,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0\\n98,36,8,4,0,0,0,12,0,127,20,0,4,28,24,32,28,8,4,0,0,4,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,4,14,52,114,127,65,20,7,2,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,5,7,15\\n2,1,0,1,2,1,2,1,3,4,4,46,127,25,3,2,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,4,18,127,125,77,39,27,2,7,2,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,1\\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,25,50,127,50,25,0,25,0,0,0,0,0,0,0,0,25,0,0,25,0,0\\n29,0,0,0,0,0,14,0,7,29,44,29,22,127,14,0,0,7,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,1,0,0,0,1,8,2,8,16,13,21,11,127,79,1,2,2,1,0,0,0,0,0,0,0,0,1,1,1,2,4\\n0,0,0,0,0,0,0,0,18,127,66,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,21,63,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,63,127\\n36,127,72,72,54,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,18,0,0,0,0,0,18,18,0,0,0\\n79,127,43,14,6,0,6,4,0,2,0,2,2,2,0,8,0,10,4,12,14,16,39,41,83,60,60,60,14,16,8,0,4,0,2,0,0\\n0,0,0,0,0,0,0,0,0,15,0,15,0,15,0,31,0,15,31,47,0,31,47,79,95,31,31,31,79,95,47,79,31,47,79,31,127\\n56,14,112,70,28,42,98,127,42,84,14,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n3,5,10,23,7,3,0,0,3,1,0,0,12,127,17,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,1,2,6,16,38,54,29,10,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,6,19,68,127\\n0,0,0,0,0,0,0,0,0,0,11,11,34,40,5,40,28,11,5,5,0,0,0,0,0,0,0,0,0,0,5,17,11,28,57,92,127\\n0,0,0,0,1,2,1,0,3,8,19,127,77,14,6,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,2,11,16,24,127,82,11,24,11,5,8,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,6,0,0,0,0,0,6,0,0,0,19,82,95,88,82,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,57,101,127\\n0,0,6,0,0,0,0,6,18,54,127,42,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,4,4,19,63,78,127\\n127,63,0,15,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,47,47,79,95\\n0,0,0,0,0,0,42,127,0,0,84,0,42,42,42,0,84,0,0,0,42,84,0,0,0,0,42,0,0,0,0,0,0,42,0,0,0\\n127,49,24,38,9,10,3,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,24,13,32,6,4,3,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,42,0,127,42\\n127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,39,11,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,7,16,17,12,8,5,4,3,2,2,2,2,2,3,4,5,10,16,29,53,97,127\\n0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,2,9,13,14,16,16,10,13,14,11,14,17,16,32,50,56,110,127\\n0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,4,0,4,0,7,7,4,7,2,18,37,68,82,96,96,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,31,0,31,31,31,31,63,63,127,63,127,127\\n0,0,0,0,1,1,2,3,5,6,8,50,127,14,3,1,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,6,5,6,9,2,5,9,17,22,26,56,127,22,11,4,2,3,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,1,0,0,0,0,5,4,15,35,114,127,33,6,5,1,1,7,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n15,7,4,8,0,0,0,1,0,3,6,127,72,10,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,1,2,8,12,18,28,21,19,12,11,7,7,4,3,1,2,2,3,4,6,15,15,26,41,65,115,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,22,0,7,44,14,37,89,104,127,82,29\\n0,0,0,6,6,6,6,6,16,100,127,87,26,13,19,22,6,22,26,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,7,28,127,91,35,14,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,1,2,2,4,6,6,4,2,2,2,1,1,0,0,1,0,2,2,1,4,6,11,22,49,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,4,7,0,2,2,4,4,19,16,19,2,7,11,7,16,55,47,59,127,71\\n5,3,4,12,10,15,18,26,69,127,116,51,15,5,6,1,1,10,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,4,16,8,4,29,76,127,101,29,16,4,12,21,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,2,4,3,3,8,8,8,3,4,2,1,0,0,0,0,0,0,0,1,2,3,3,8,19,49,91,127\\n0,0,0,6,3,0,0,3,25,22,57,127,69,3,0,3,6,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,0,0,12,0,0,0,25,25,12,50,76,76,127,50\\n0,0,0,0,0,0,0,0,15,0,15,63,95,127,31,0,0,15,15,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,31,95,127,31,63,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,4,0,26,96,127,61,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,54,0,18,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,36,0,36,0,127,54,72\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,9,7,2,0,9,2,4,9,9,4,21,17,26,36,51,39,83,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,23,7,23,39,39,47,71,79,55,87,87,79,127\\n0,6,0,0,0,0,0,0,0,0,6,26,46,40,80,26,40,0,6,127,26,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,3,0,0,0,0,0,7,19,23,0,3,0,7,30,50,11,11,3,3,34,26,46,38,42,57,34,76,73,57,80,61,84,111,127,107\\n0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,14,14,14,7,22,29,37,22,37,37,37,74,127,44\\n0,0,0,0,42,42,42,84,84,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,47,0,0,0,0,0,0,0,15,47,47,63,15,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,11,19,9,16,26,43,39,32,43,27,29,32,33,27,44,55,53,75,92,114,127,107\\n0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,21,10,95,84,31,0,63,127,116,42,42,31,21,42,10,52,0,42,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,31,0,0,0,31,0,127,31,0,0,95,0,0,0\\n0,0,0,0,0,0,0,8,11,0,59,101,127,36,11,14,50,39,2,2,11,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n32,9,4,0,1,0,0,0,7,28,65,127,82,5,20,0,0,0,4,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n67,33,8,0,0,0,0,0,0,0,0,127,93,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,18,36,36,0,0,0,36,36,36,90,36,108,127,108\\n0,0,0,0,0,0,0,50,25,0,0,25,0,0,0,0,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,21,76,127,114,80,12,8,12,0,0,0,0,0,0,0,0,4,0,4,4,0,25,42,71,110,127\\n0,0,0,0,0,0,0,0,0,0,0,0,21,84,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,21,0,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,42\\n0,0,0,0,0,0,0,0,0,15,15,31,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,47,71,127\\n0,0,0,0,0,0,0,10,0,10,0,0,52,127,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84\\n0,0,6,6,6,0,6,0,0,0,3,3,66,127,76,30,6,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,0,0,23,50,26\\n0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,10,0,0,0,0,0,0,0,0,42,74,63,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,0,63,63,63,0,63,63,0,63,63,0,0,0,0,63,63,127\\n0,0,0,0,0,0,0,0,0,0,0,127,105,42,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,95,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,52,127\\n127,13,1,0,0,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,31,26,127\\n63,127,52,10,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,3,1,9,1,13,4,6,2,8,13,11,9,17,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,1,0,0,0,1,5,30,42,75,127\\n127,38,0,0,0,0,38,50,0,0,0,50,38,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,17,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,4,9,14,32,97,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,29,82,127\\n127,21,17,17,7,8,8,21,38,1,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,9,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,52,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,19,65,127\\n0,0,0,0,0,0,0,0,0,0,0,0,2,12,36,53,48,46,29,56,24,41,26,29,29,9,19,12,24,2,9,17,7,34,31,24,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,127,31,63,63,0,0,127,95,0,0,0,0,0,63,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,84,63,105,127,105,105,42,21,63,105,0,21,21,0,21,21,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,21,0,0,63,84,63,63,0,21,0,42,0,42,42,21,21,0,84,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,25,50,25,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,3,127\\n0,0,0,0,0,0,0,0,5,7,21,34,55,71,56,34,12,13,11,1,1,0,0,0,0,0,0,0,0,0,1,2,3,6,12,27,127\\n58,28,6,3,0,0,0,0,1,3,10,123,127,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0,84,0,0,0,0,0,42,84,0,0,0,0,0,0,42,0,0,0\\n0,0,0,0,25,76,50,127,50,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0\\n0,0,0,0,0,0,0,115,127,80,34,11,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,18,18,36,54,54,54,127,72,54,18,0,54,0,18,18,0,0,36,0,36,0,18,18,0,90,36,72,108\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,63,0,31,0,0,0,0,63,0,127,31,31,31,95,0\\n0,0,0,0,0,0,0,0,0,0,1,1,1,11,13,11,11,8,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,5,11,18,127\\n19,28,45,21,3,0,0,1,0,1,1,127,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,30,50,127,76,20,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,52,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,95,127\\n0,0,0,0,0,0,0,0,11,19,69,78,112,127,78,34,19,9,3,0,0,0,0,0,0,0,0,0,0,3,3,1,2,4,17,21,53\\n0,0,0,0,0,0,0,0,0,0,0,0,36,127,0,72,127,54,54,0,0,0,0,0,36,0,18,0,0,0,0,54,90,90,108,54,0\\n46,18,16,4,0,0,0,0,0,0,1,127,104,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,89,40,36,7,0,0,0,0,0,0,22,22,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,63,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,0,0,0,0,0,0,0,0,27,90,86,99,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,13,26,60,113,127,100,46,40\\n0,0,0,0,0,0,0,0,0,0,0,0,60,127,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,63,127\\n127,114,12,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,0,12,12,12,50,25,12,0,25,12,12,0,12,0,0,12,0,0\\n117,95,39,13,0,1,3,0,0,0,0,0,0,0,0,0,0,1,0,3,6,7,28,60,86,127,83,52,30,13,4,0,1,1,0,0,3\\n0,0,25,0,12,0,0,0,0,0,0,0,0,0,12,25,38,38,50,0,0,0,127,76,114,114,127,38,25,12,38,0,0,38,12,12,50\\n84,84,127,127,70,42,35,21,14,14,0,0,14,7,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,127,111,23,15,63,23,31,15,0,0,0,39,7,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,31,63,127\\n0,0,0,0,0,0,0,0,0,2,7,15,29,35,23,10,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,4,12,35,82,127\\n0,0,0,0,0,19,0,0,0,0,0,39,39,29,29,19,39,0,39,0,0,0,9,0,0,0,0,0,0,9,0,9,19,19,19,127,78\\n34,0,23,34,17,0,0,0,5,5,28,127,51,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n6,3,2,1,1,1,2,2,4,12,35,127,44,5,3,5,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n7,2,0,0,2,1,0,2,13,26,79,127,63,6,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,1,1,0,1,8,12,15,21,10,6,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,2,9,19,46,87,127\\n0,0,0,1,0,1,1,13,44,97,127,86,19,11,5,3,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,17,0,0,0,0,0,17,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,12,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,6,0,16,71,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,127,115\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,27,36,127\\n127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,40,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,2,10,13,5,9,9,5,1,2,1,0,0,1,1,4,0,0,0,1,1,9,25,62,92,127\\n0,0,0,0,0,0,0,0,0,0,0,5,13,12,34,60,94,127,92,69,59,53,41,33,25,21,18,19,23,16,22,30,36,40,65,94,81\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,10,0,42,52,0,31,74,127,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,3,7,48,78,127,56,29,33,33,26,7,7,3,3,0,0,0,0,3,7\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,3,0,7,0,0,0,0,0,3,0,0,7,43,35,51,75,127\\n0,0,0,0,0,0,0,0,1,6,59,96,127,22,9,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,9,29,63,112,107,117,58,53,63,24,14,68,112,87,29,19,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,36,0,108,108,127,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,25,127,25,76,50,101,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,49,63,70,127,14,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,2,3,19,26,19,31,25,13,7,2,2,0,0,0,0,0,0,0,0,1,1,3,6,13,39,54,109,127\\n0,0,0,0,1,0,0,0,0,0,1,5,13,23,43,78,116,121,111,115,127,90,48,45,33,55,40,50,38,36,31,33,48,41,66,63,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,10,31,52,127,74,42\\n0,0,0,0,0,0,0,36,36,127,54,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,7,7,0,0,23,15,7,31,0,0,0,0,0,0,0,0,0,7,7,15,23,7,15,15,71,39,127\\n0,0,0,0,0,0,0,0,1,0,0,1,2,4,11,29,56,38,22,23,9,5,2,3,4,3,0,1,2,0,4,4,11,22,31,76,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,95,63,95,63,95,0,95,31,31,0,95,0,0,31,31,0,127\\n0,21,0,0,63,21,21,84,127,127,63,63,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,31,63,127,47,31,127,47,15,31,0,0,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,21,0,21,63,21,0,21,0,0,21,0,0,0,0,0,0,0,63,0,0,21,21,42,127,105,84\\n0,0,0,0,0,0,0,0,0,3,0,0,8,29,42,78,73,89,39,49,29,17,13,10,3,5,5,5,15,10,6,15,24,32,96,89,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,14,3,0,11,11,11,37,26,11,3,26,3,26,26,11,18,70,74,127\\n3,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,5,20,38,28,47,99,102,127,102,49,24,20,10,10,4,2,4,5,9\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,47,63,63,63,127,47,31,7,7,0,0,0,7,15\\n14,14,44,89,82,89,67,127,127,52,0,14,0,37,44,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,9,0,0,0,9,9,19,19,9,0,19,68,127,39\\n13,13,20,20,13,20,26,13,13,0,6,0,0,0,0,0,0,0,6,0,13,46,53,127,113,127,60,60,33,26,13,33,20,0,0,0,26\\n0,31,0,0,0,0,0,0,0,0,63,31,63,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,50\\n31,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,39,71,127,87,63,39,15,7,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,28,60,99,127\\n0,0,0,0,0,0,0,0,1,1,2,8,22,29,23,10,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,14,37,97,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,15,15,0,47,47,127,95,31\\n20,2,5,17,5,0,0,0,2,0,35,127,25,12,2,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n13,8,7,4,2,1,1,3,7,20,29,127,36,3,1,0,6,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,2,0,0,0,0,0,2,12,32,127,51,6,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,1,0,0,1,0,3,0,3,25,25,12,3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,6,3,18,43,127,106\\n0,0,0,0,0,3,0,6,20,99,96,127,123,0,0,6,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,0,8,10,12,9,8,4,3,1,1,1,0,0,1,1,0,1,0,0,1,2,7,14,37,56,96,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,0,0,63,50,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,14,3,14,7,14,18,89,127\\n0,0,0,0,0,0,0,1,0,1,13,127,55,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,1,0,1,6,8,20,26,25,11,8,6,1,1,0,0,0,0,2,0,0,0,0,0,1,0,5,16,33,66,104,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,76,127,127,0\\n0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,127,108\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,59,42,76,127,50,16,16,84,16,33,25,42,16,25,0,76,16,42,59,16,76,67\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,50,0,63,127,0,12,0,0,12,12,0,0,0,0,0\\n54,18,9,27,127,99,90,127,45,9,4,22,9,36,36,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,0,0,0,76,50,0,25,25,0,0,25,25,0,0,25,0,0,25,50,25,127,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,108,36,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,42,42,0,0,84,42,0,0,0,0,42,127,42,84,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,42,127,84,84\\n0,0,0,0,0,0,0,0,10,0,0,0,0,0,10,10,10,45,50,45,55,25,30,20,30,35,20,10,30,40,60,96,40,127,101,55,121\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,50,50,76,127,76,50,101,101,0,50,50,50\\n0,0,0,0,0,0,0,0,0,0,47,127,31,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,84,105,63,21,21,0,0,21,42,63,0,0,63,21,21,63,0,127,42,42,84,42,63,21,42\\n0,0,0,21,21,84,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,58,39,48,48,68,39,39,39,39,39,9,68,87,58,117,68,87,127,78,19,0\\n9,0,0,9,4,4,0,0,9,18,27,127,90,9,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,15,31,15,31,31,111,63,15,63,127,0,0,63,31,95,47,0,31,0\\n0,7,0,0,0,0,0,0,3,11,34,23,38,50,42,34,11,11,0,0,0,0,0,0,0,0,0,0,0,3,0,7,11,23,96,127,92\\n0,0,0,0,0,0,0,0,0,0,0,0,0,90,54,0,0,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,18,36,54,127,36\\n0,0,0,0,0,0,0,3,0,0,9,0,127,74,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,9,9,9,39,0,9,9,0,0,19,0,19,39,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,3,56,89,37,7,3,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,18,82,127\\n0,0,0,0,0,0,0,0,0,0,0,0,56,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,112\\n0,0,0,0,0,0,0,0,31,0,0,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,15,95,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,15,0,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,127,0,0,127,63,127,63,127,127,127,63,127,0,0\\n0,0,0,0,0,0,0,0,0,0,42,42,127,42,0,21,21,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,116,84\\n0,0,0,0,0,0,0,0,0,0,0,0,50,0,101,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,76,127,50\\n0,0,0,0,0,0,0,0,0,0,0,25,25,127,76,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,101\\n0,21,0,0,42,21,0,21,21,0,42,21,0,0,0,84,21,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20\\n127,81,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,27,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,45\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,6,14,38,87,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,3,10,10,29,32,120,127\\n127,95,111,31,79,0,15,31,0,15,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,63,31,95,95,95,127,63,63,31,0,31,0,31,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,25,127,127,50,101,25,101,76,50,50,0,0,25,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,3,3,5,11,55,44,34,17,7,13,1,1,0,0,0,0,0,0,0,1,1,9,3,15,21,86,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,28,127,42,56\\n0,0,0,0,18,27,0,0,0,18,72,72,127,18,72,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,4,9,21,43,39,26,21,7,2,0,0,0,0,0,0,2,0,0,0,7,2,14,29,73,107,127\\n0,0,0,0,0,0,0,0,3,8,14,50,117,127,93,53,20,8,4,0,0,0,0,0,0,0,0,0,0,0,2,0,4,18,32,47,61\\n0,0,0,0,0,0,0,0,0,2,3,110,127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,44,44,93,127,60,33,16,22,5,0,0,0,0,0,11,5,0,0,0,22,0,11,5,16,22\\n0,2,0,0,0,0,0,0,0,6,0,24,127,11,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,5,55,99,127,22,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,2,9,36,84,127,103,62,35,19,4,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,1,4,11,2\\n0,0,0,0,0,0,0,0,0,0,15,31,23,127,39,63,47,55,31,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,23,7,95\\n0,0,0,0,0,0,0,0,0,0,0,80,127,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,12,0,67,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,26,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,7,14,127\\n95,95,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,25,0,0,0,0,0,0,0,50,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,95,127,63,31,0,63,0,31,0,0,0,0,0,0,0,0,63,0,0,0,95,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0\\n91,127,101,60,30,30,30,30,15,10,15,20,10,20,25,20,25,10,30\\n46,23,11,0,23,0,0,0,0,0,0,0,0,0,23,23,127,34,115\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31,63,31,31,0,0,0,31,31,0,127\\n42,127,112,112,84,42,98,98,56,84,14,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,56,70,70,84,70\\n80,127,57,57,34,69,57,34,34,57,46,34,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,23,80,57,69,92\\n42,0,0,84,42,84,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,50,0,50,50,50,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,25,0,25,0,0,127,25,0,0,0,25,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,8,8,16,33,16,67,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,0,42,0,0,0,127,21,0,0,21,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,21\\n0,0,0,0,0,0,0,0,0,0,0,0,15,55,111,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,70,42,42,0,28,98,127,98,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,14,0,14,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,38,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,90,0,0,0,0,0,0,0,0,0,0,0,54,0,0,0,0,36,18,0,0,36,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0,101,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,127,42,127,0,84,0,0,0,42,42,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,42,42,127,42,21,0,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,0,21,42,84,63,127,42,105,127,63,21,21,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,31,63,0,31,127,31,95,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,76,127,76,50,0,25,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n99,27,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,5,5,11,44,71,127,88\\n0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,0,84,0,0,42,42,84,42,127,0\\n0,0,0,42,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,42,0,42,0,127,84,127,42,0\\n21,21,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,84,84,127,84,84,0,63\\n0,0,0,0,0,0,0,0,0,0,0,127,101,0,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,21,0,42,42,42,63,42,21,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,28,28,56,84,112,127,42,56\\n127,15,15,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,0,15,47,63\\n0,42,42,42,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,42,0,0,42,42,42,42,42\\n0,0,0,0,0,0,0,0,0,18,18,72,127,72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,76,127,101,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,4,0,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,14,65,127,79,32,23,0,4,4,9,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,38,38,127,63,76,12,12,25,12,12,0,0,12,0,0,0,0,0,0,25,0,0,0,12,12,0,0,0,12,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,95,0,0,127,31,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,31,31,0,127,95,0,0,0,0,31,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,76,0,0,0,25,0,0,0,0,25,50,0,25,0,25,127,50,25,0,25,25,25,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,31,0,127,63,63,31,63,95,95,127,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,127,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,50,50,76,50,76,0,25,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\\n76,25,0,0,50,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n105,127,84,63,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,21\\n63,127,42,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21\\n0,0,0,25,0,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,127\\n0,0,0,0,0,0,0,0,0,0,11,34,11,69,127,127,34,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n108,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,50,25,76,76,127,25,25,127,0,50,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,25,25\\n127,31,31,127,127,31,127,127,63,31,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31\\n31,31,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,127,0,0,63\\n63,127,127,127,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,63\\n0,0,0,0,10,0,0,0,0,0,0,0,0,10,52,21,74,84,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,48,127,109,43,4,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,111,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,39,127\\n127,84,74,10,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,10,10,10,21,52,10,84,116,127,105\\n31,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,95,127,31\\n25,0,50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,127,101,76,25\\n0,0,0,0,31,0,95,31,0,0,63,127,31,0,63,31,0,95,0,0,0,95,0,0,31,31,0,0,0,0,0,31,127,31,0,0,63\\n127,26,24,25,44,65,86,77,49,25,9,4,0,0,0,0,0,0,0\\n0,0,0,0,1,3,4,19,54,106,127,112,80,53,22,16,13,12,16\\n0,0,0,0,0,0,0,2,4,9,19,35,83,108,127,94,72,67,68\\n0,1,0,0,0,1,2,9,18,24,63,110,127,117,69,43,27,26,29,27,28,29,31,23,23,20,9,8,3,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,1,5,8,32,56,70,95,109,127\\n0,0,0,0,0,0,0,0,0,2,4,9,27,34,61,69,91,96,127\\n127,19,4,11,2,0,1,1,0,2,1,1,0,0,0,0,0,0,0\\n127,37,15,15,13,6,5,11,23,16,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,32,25,34,82,101,127,89,36,24,42,20\\n0,0,1,0,15,29,109,87,13,13,127,101,27,29,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,116,52,52,31,31,31,63,10,10,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,42,42,63,127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,0,42,42,105,42,0,0,42\\n36,90,0,127,36,18,0,0,0,0,0,18,0,0,0,0,0,36,36\\n0,9,9,16,11,37,84,127,105,65,30,28,14,14,4,2,0,4,4\\n0,0,0,0,0,0,0,11,0,0,23,23,127,57,11,0,0,11,0,0,0,0,0,0,11,0,0,23,11,0,0,11,0,0,0,11,0\\n0,8,8,16,25,76,67,76,127,101,25,67,42,50,42,8,8,25,16\\n0,0,0,0,0,0,63,127,31,63,127,95,31,63,0,0,0,0,95,0,63,31,63,31,95,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,50,25,25,50,127,25,76,101,50\\n0,1,0,3,7,4,16,27,74,91,127,100,123,76,56,35,29,27,47\\n0,0,0,0,0,0,0,0,36,72,72,54,127,72,18,54,18,18,36,36,0,18,36,108,127,90,54,54,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,10,31,63,116,21,63,21,42,127,63\\n63,63,0,63,0,63,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,42,42,84,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,7,21,21,14,35,14,49,127\\n11,9,8,13,15,24,41,68,84,100,103,127,115,93,62,53,27,29,19\\n127,25,88,25,12,25,12,50,12,25,12,12,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,45,45,63,63,127,72,127,63,36,81,63,45,90,108,127,63,54,81,81,18,9,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,6,0,46,66,80,113,73,106,66,127,13\\n6,9,9,12,19,31,47,57,50,44,92,127,66,82,85,95,66,88,101\\n28,98,70,127,42,56,56,14,28,28,0,14,14,0,14,0,14,0,0\\n0,0,0,0,0,25,0,0,25,0,0,0,0,25,0,25,25,101,0,25,0,50,25,25,127,25,76,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,42,42,0,84,42,42,127,0,84,84\\n93,97,98,116,124,122,127,115,125,96,62,48,10,14,3,5,3,5,2\\n0,0,0,0,0,0,7,7,28,63,77,127,77,56,21,28,14,0,7,42,14,7,7,28,35,21,49,28,0,7,28,14,7,14,7,7,14\\n21,21,10,0,0,0,0,0,21,10,21,42,52,52,10,95,84,42,127\\n63,127,119,103,103,95,63,71,87,71,79,55,63,55,0,23,15,23,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,0,0,0,21,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,21,0,0\\n40,20,32,36,45,86,73,127,36,16,24,12,16,4,8,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,9,9,0,9,19,127,107,87,78,107,19,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,81,38,33,29,10,5,1,2,0,7,0,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,47,63,127,31,47,63,31,15,0,15,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79,31,111,127,79,47,31,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,25,0,0,38,25,12,0,25,12,12,50,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,7,8,8,10,15,16,20,54,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,1,0,4,4,6,18,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,6,127\\n127,27,0,45,36,27,18,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,87,7,23,7,15,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,1,5,18,50,109,127,108,57,39,29,20,15,12,14\\n0,0,0,0,0,0,5,0,0,5,28,46,63,80,86,46,34,57,40,63,28,40,23,57,127,51,23,5,11,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,7,23,52,57,88,59,59,127,100\\n16,17,13,20,26,83,108,127,96,93,80,55,58,34,37,20,11,4,4\\n0,0,0,0,0,0,0,0,14,14,42,127,112,98,56,42,28,70,0,14,14,0,28,70,42,98,28,14,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,0,0,127,50,25,76,25,25,50,50\\n0,2,4,0,0,2,2,31,119,127,63,19,26,12,13,7,2,0,1,3,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,18,108,81,127,117,36,54,54,27,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,1,2,4,16,16,22,58,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,29,14,22,127,59,44,52,29\\n127,95,127,63,31,95,95,95,31,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,127,95,31,31,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,31,0,0,0,0,31,127,31,63,31,31,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,63,63,127,127,31,0,0,0,0\\n0,0,0,0,0,0,0,0,84,127,118,50,8,8,8,0,0,0,0,0,0,0,16,0,0,8,8,8,8,0,0,8,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,50,101,25,127,0,25,25,25,25,50,25,0,0,25,50,76,0,0,25,0,25,0,0,0,0,0,0,0\\n0,0,0,0,0,0,9,21,86,107,127,32,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,19,58,48,68,19,127,68,48,39,107,19,0,9,29,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0\\n31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,31,31,127,31\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,0,0,0,127,0,0,0,84,0,42,127,0,0,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,127,63,63,31,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,31,95,0,127,0,0,31,31,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0\\n0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,17,0,0,11,127\\n0,0,7,0,0,0,0,14,42,56,14,35,7,77,0,14,7,0,0,0,7,0,7,0,0,0,0,21,7,0,0,14,7,35,0,14,127\\n0,0,0,0,0,0,12,12,0,38,101,127,12,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,50,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,28,35,105,14,63,127,14,28,28,0,14,28,28,35,35,21,42,14,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,46,34,23,115,57,115,57,69,127,34,23,11,23,11,11,57,11,0,34,11,0,23,0,0,0,0,0\\n31,0,0,0,0,0,0,0,21,15,21,42,21,15,26,0,5,5,5,0,10,0,5,5,0,10,5,5,5,0,0,0,10,5,5,63,127\\n0,18,0,0,0,0,0,18,18,72,0,127,54,18,36,36,18,36,18,0,0,18,0,0,0,36,18,18,0,0,0,0,0,18,18,18,72\\n0,0,0,0,0,0,0,0,0,0,0,42,127,42,84,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,84,0,42,0,0,0,0\\n0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127\\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,7,7,42\\n28,0,0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,127,127,56\\n0,0,0,0,0,0,0,0,0,0,0,0,14,56,127,42,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,23,103,127,46,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,5,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,15,0,15,47,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,42,105,127\\n127,52,74,31,42,10,10,0,21,52,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,10,10,5,0,0,5,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,15,0,0,0,31,0,127,79,47,95,15,15,15,0,0,15,31,31,47,15,31,31,0,0,0,0,0,0,0,31\\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,127,31,63\\n0,0,0,0,0,0,0,0,63,0,95,127,0,31,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,0,31,31,31,0,0,0,0\\n0,0,0,0,0,31,0,31,31,0,63,127,0,0,0,31,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,63,63,0\\n127,55,13,21,7,0,2,5,5,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,15,7,55,31,0,0,0,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,12,12,88,127,63,50,38,63,25,25,38,0,50,38,0,25,12,0,12,12,0,0,12,12,0,0,0,0\\n0,0,0,0,0,0,12,6,6,12,6,12,0,6,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,12,0,0,0,6,127\\n0,0,0,0,0,0,0,21,63,21,0,21,127,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,95,15,31,0,0,0,31,127,111,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,3,14,59,81,69,31,13,7,4,1,1,0,0,0,0,0,0,0,1,0,2,3,7,18,38,71,127\\n10,4,1,0,0,1,10,9,5,9,34,37,78,58,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,1,5,20,71,127\\n54,9,0,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,63,127,127\\n127,7,6,2,0,0,0,0,0,0,0,0,2,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,22\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,0,127,63,15,0,0,0,15,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,15,15,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0\\n0,0,0,25,0,25,0,0,25,0,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,127,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,14,84,127,127,42,14,127,56,0,0,0,0,0,14,0,0,0,14,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,19,82,127,76,12,0,25,0,0,0,0,6,6,0,12,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,27,27,72,54,18,9,0,54,0,0,0,0,0,9,9,18,9,0,9,0,0,0,9,27,117,127,90,27,0,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,4,14,23,37,18,0,4,37,9,4,0,0,0,0,0,0,4,0,0,0,0,0,23,103,127,79,14,32,0,0,0,0,0,0,0,0,0,0,0\\n1,6,3,1,3,3,6,13,19,17,89,127,89,26,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,3,14,9,21,17,13,3,4,3,1,0,1\\n2,5,10,4,1,4,5,16,10,43,68,127,65,59,4,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,10,16,10,13,2,7,0,1,0,7,5\\n25,0,0,0,0,25,50,25,0,0,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,0,0,0,0,0,0,0,25\\n42,0,0,0,0,42,0,0,127,42,42,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,84,42,0,42,42,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,11,11,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,127,11,23,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0\\n0,5,11,2,5,2,2,11,14,23,77,127,57,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,17,25,31,11,2,5,0,0,0,0,0\\n6,0,15,6,3,6,12,15,21,60,87,127,66,21,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,24,33,12,9,0,0,0,0,0,3\\n0,0,0,0,0,0,25,76,25,101,76,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,25,25,0,0,0,0,0,0\\n0,0,0,0,0,0,25,0,127,127,101,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,42,127,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,50,127,25,50,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,101,25,0,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,0,21,42,127,21,0,63,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,21,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,84,42,21,21,0,0,0,0,0,0,0\\n0,0,0,0,0,0,42,0,21,21,127,105,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0\\n31,0,0,0,0,0,0,31,63,95,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,21,21,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0\\n34,36,4,0,2,0,0,0,2,2,4,7,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,83,127\\n50,0,0,0,0,12,0,0,25,12,50,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,13,127,103,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,5,5,1,7,1,0,0,0,0,1,1,1,0,1,5,3,1,10,9,18,19,127,70,34,5,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n12,5,3,3,1,1,5,9,39,89,110,127,53,16,1,5,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,21,31,21,21,0,0,0,0,0,0,0,0,0,0,0,21,10,10,0,21,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,31,31,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,18,72,72,99,45,18,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,108,127,63,45,27,0,0,0,0,0,0\\n0,0,0,0,0,0,0,9,81,27,127,45,18,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,108,63,18,18,9,27,0,9,0,9,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,0,0,0,25,0,0,50,76,101,127,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,63,105,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,25,0,0,0,0,0,101,50,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,0,42,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,16,8,8,0,0,0,0,0,16,0,16,0,0,8,42,25,59,42,127,93,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,10,10,10,10,0,21,0,0,42,42,0,0,21,10,21,42,10,31,74,127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,0,9,13,9,22,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,45,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,50,0,0,25,0,0,0,0,0,0,0,0,0,25,0,25,50,25,50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,2,4,3,0,2,0,0,0,0,0,0,0,0,0,0,0,1,2,4,10,53,127,49,3,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,5,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,16,16,77,60,104,66,44,11,0,0,5,0,0,5,0,5,0,5,0,0,0,16,55,82,127,60,16,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,88,127,101,50,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,28,0,0,0,0,0,0,42,28,84,127,98,28,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,25,21,127,110,30,4,2,4,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,8,35,105,127,73,13,0,3,0,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,11,79,31,19,11,3,0,0,0,0,0,3,0,7,3,0,7,0,0,0,3,0,23,31,23,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,127,115,55,43,11,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,6,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,108,127,17,3,1,0,0,0,0,0,0,0,0,0\\n0,0,0,13,0,9,4,0,18,31,49,40,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,31,45,49,9,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,9,63,99,127,90,49,22,9,0,0,4,0,0,0,0\\n0,0,0,0,0,4,9,9,14,23,42,56,28,9,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,14,18,42,14,18,4,9,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,18,61,127,89,51,47,28,4,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,76,101,127,50,0,0,0,0,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50,76,101,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,74,31,52,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,74,127,10,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,4,13,9,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,18,127,111,7,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,2,6,12,39,69,127,84,45,21,7,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,5,13,37,72,83\\n0,0,0,0,0,0,0,0,0,0,18,127,127,36,36,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,36\\n0,7,0,0,0,0,0,0,14,22,97,89,82,82,59,127,14,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,104,82,74,59\\n0,0,0,0,0,0,0,0,1,3,5,7,9,18,16,19,10,10,12,0,0,0,0,0,0,0,1,3,3,0,0,16,1,29,96,103,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,95,63,127\\n0,0,0,0,0,42,0,42,42,127,0,42,84,42,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,21,63,42,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,36,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,12,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,32,127\\n1,1,0,0,0,1,2,4,8,33,100,127,32,6,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n5,4,2,2,1,8,4,19,28,121,127,86,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,25,0,0,0,101,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n4,1,2,4,4,5,6,14,27,46,61,127,60,16,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,42,0,0,42,21,42,21,63,84,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,2,2,14,50,124,127,82,38,20,17,0,2,0,0,0,0,0,0,0,0,0,0,0,2,5,2,26,50,85,82\\n0,0,0,0,0,0,0,0,0,0,0,0,25,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,88,127\\n3,0,0,0,0,3,13,6,36,127,122,82,8,8,1,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,25,63,127,101,76,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,1,4,12,43,66,63,73,29,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,12,24,85,127\\n0,0,0,0,0,0,0,11,11,11,46,69,57,103,127,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,57,46\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,15,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127\\n0,1,5,0,3,5,35,38,93,127,88,56,17,3,1,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,14,0,0,0,0,28,127,70,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,14,14,97,112,127,112,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,22,29\\n0,0,0,0,0,0,0,0,0,1,3,11,25,15,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,15,68,127\\n0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,72,127,54,9,0\\n0,0,0,0,0,0,0,2,8,2,19,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,9,18,36,0,45,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13\\n0,0,0,0,0,0,0,0,0,50,12,25,127,88,76,0,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,127,84,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,112,127,127,14,14,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,9,0,29,58,127,117,87,9,0,0,0,9,19,39,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,2,2,10,127,33,20,15,5,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,127,84,127,0,42,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,101,127,25,0,0,0,0,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,9,9,0,0,0,0,0,0,0,0,9,0,0,0,9,9,0,19,68,127,127,48,9,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,36,0,0,0,0,0,0,0,0,0,18,0,0,0,18,0,18,108,54,127,36,18,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,1,2,0,2,3,4,0,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,6,18,63,127,72,42,17,2,0,0,0,0,0\\n0,0,0,0,0,0,1,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,6,24,127,43,18,8,1,1,0,1,1,0,0\\n0,1,5,1,0,0,5,7,9,9,34,78,46,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,25,127,105,23,5,0,1,0,1,0,3,5\\n5,1,0,0,1,0,0,0,5,7,20,42,34,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,28,127,72,18,10,0,0,6,3,2,0,3\\n0,0,0,0,0,0,0,0,0,25,25,12,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,0,38,88,127,114,50,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,21,0,21,0,42,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,105,127,127,0,84,0,21,0,0,0,0,0,0\\n0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,84,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,39,19,9,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,19,127,9,87,87,97,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,101,76,127,50,0,0,0,0,0,0,25,0,0,0,0,0,0,0,25,50,25,50,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,0,54,18,0,18,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,21,127,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,127,22,0,0,0,0,0,0,0,0,0,0,0,5,5,27,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,127,46,0,0,0,0,0,0,0,0,0,0,0,23,11,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,84,127,42,42,0,42,0,0,0,0,42,0,0,42,0,0,0,42,42,84,0,84,0,0,0,0,0,84,0,0,0,0,0,0,42,0\\n127,55,55,23,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,15,47,39,23,87,15,39,55,0,15,7,0\\n127,95,31,0,63,95,0,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,117,81,27,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,18,36\\n108,60,78,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,24,127,6,12,6,12,0,0,12,0,48,96,36,0,0,0\\n0,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,21,52,31,127,52,21,52,10,0,0,31,0,0,0\\n0,25,12,12,12,25,25,127,88,63,25,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,0,25,0,0,12,25,38,38,0,12,0\\n127,63,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,51,75,43,31,28,17,5,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,20,0,2,5,5,11,25,20,57\\n123,127,96,59,42,13,1,11,9,5,0,0,0,1,0,0,0,0,5,0,1,21,21,9,46,48,73,78,65,55,34,13,23,13,23,19,7\\n0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,63,95,95,0,127,95,0,31,31,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,0,5,11,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,1,13,127\\n127,45,20,2,1,1,1,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,21,127,42,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n89,97,127,7,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,9,0,45,127,81,27,36,45,63,127,99,90,36,27,36,72,127,27,36,27,9,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,2,2,2,6,127,90,9,6,4,11,13,32,62,66,39,23,6,13,9,4,4,0,2,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0\\n127,95,31,63,31,31,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0\\n0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,127,84,42,84,127,0,84,42,42,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127\\n50,127,127,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,50,50,25,0\\n63,31,15,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,63,63,127,47,0,31,15,0,0,31,15,15,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,19,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,42,42,127,63,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,10,0,0,10,10,0,21,21,21,21,21,127,31,0,0,21,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,127\\n127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,31,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,95,63,0,63,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,127,42,84,42,42,0,0,0\\n0,25,50,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,127,50,0\\n42,42,84,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42\\n63,127,21,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,63,63,63,63,42\\n0,0,95,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,127,31,127,31,95,31\\n0,95,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,63,95,0,0,63,63,31,63\\n0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,31,31,31,127,0,0,31,31,0,0,0,63,0,0,31,127,0,0,0,31,95,63,95\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,31,63,31,95,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,0,63,0,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,95,95,0,31,0,127,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,63,0\\n31,79,79,79,0,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,47,0,127,47,31\\n19,39,39,127,39,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,29,29,29,9,19\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,31,31,63,31,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,63,63,0,31,0,0,31,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,63,79,47,127,79,63,63,31,0,0,0,0,0,0,15,0,0,0,0,0,0,0,15,0,15,15,0,0,0,0,0,0,0,0,0,63,0,15,15,95,95,47,15,31,0,0,0,15\\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,127,42,84,127,42,84,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,42,0,127,127,84,84,0,84,84,42,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,127,76,0,0,25,0,50,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,0,0,0,0,54,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,0,0,0,0,0,0,0,0\\n36,0,54,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,36,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72\\n79,127,31,15,47,15,0,0,15,15,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,0,31,0,0,15,47,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31\\n0,25,101,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,76,25,127,76,101,127,25,0,50,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,36,108,90,127,54,0,72,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,72,54,54,54,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,21,21,0,0,63,0,21,127,0,63,127,84,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,0,0,15,15,15,0,0,0,15,31,127,15,31,0,0,0,15,31,111,15,63,47,63,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,50,76,127,101,50,50,50,0,50,0,101,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,54,127,36,127,54,0,36,0,36,127,36,90,54,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n20,20,53,16,32,16,12,4,4,4,4,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,4,0,0,8,12,12,49,65,127,86,94,36,45\\n15,47,84,58,42,47,15,10,5,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,10,0,0,5,21,63,68,100,127,111,79,42\\n72,36,36,54,36,36,108,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,72,54,108,54,90,127,90,108\\n12,38,88,63,127,0,0,12,12,38,76,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,38,12,50,76,50,101,114,63,114\\n42,42,10,10,21,0,0,0,0,0,0,0,0,0,0,10,0,0,10,10,21,31,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,31,10,63,127,95,95\\n66,48,18,12,12,12,6,0,6,0,6,6,0,0,0,6,6,6,0,12,18,18,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,6,24,12,60,66,127,120\\n31,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31\\n0,12,24,12,0,0,0,0,0,0,0,0,0,0,0,12,12,96,127,102,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,12\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,42,42,28,14,127,42,0,0,42,0,28,28,14,0,0,0,0,28,0,14,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,36,72,127,36,54,54,18,18,90,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,42,70,112,42,84,0,14,14,0,0,0,14,0,0,0,14,0,14,28,28,14,56,127,84,0,0,28,14,84,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,90,108,54,127,18,54,54,0,0,0,0,0,0,18,18,18,0,0,18,0,54,36,36,108,72,18,36,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,127,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,98,42,28,84,28,84,42,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,98,70,56,28,14,14,0,14,0,14,0,0,14,0,14,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,111,111,31,63,47,111,0,63,63,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,0,15,79,127,63,95,15,47,47,31,0,47,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,42,0,0,0,0,0,0,0,0,42,0,42,0,42,42,127,42,84,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,127,0,0,42,42,42,0,0,0,0,0,0,0,0,0,42,127,84,84,42,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,11,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,50,50,127,50,50,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,14,0,0,0,0,0,0,0,0,28,0,0,56,112,84,42,127,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,63,31,0,0,0,63,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\\n9,0,4,4,6,1,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,29,59,85,127,75,54,25\\n10,6,9,6,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,29,58,90,127,77,49,27\\n0,127,42,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,0,84,127,84,63,42\\n0,11,23,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,69,127,115,69,69,34\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,31,0,95,95,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,50,25,25,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,21,63,0,21,21,63,21,127,42,42,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,0,95,31,0,0,127,0,63,31,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,42,127,127,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n19,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,9,0,9,68,78,127,78,19\\n42,14,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,105,84,127,70\\n31,0,0,0,0,0,31,63,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,31,0,31,31,31,0,31,63,127,63,0\\n63,63,0,0,0,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,63,63,63,63,0,127,0,0\\n0,0,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,84,0,42,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,76,0,25,50,76,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,127,42,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,42,127,21,0,0,21,0\\n101,76,101,0,101,76,50,50,76,25,25,50,127,0,0,0,25,101,25,50,25,25,25,25,50,50,50,50,76,50,50,76,50,25,0,101,50\\n30,60,25,20,30,10,40,15,5,15,10,5,10,0,5,15,0,10,20,20,45,50,55,111,127,116,96,40,35,20,5,20,5,5,20,0,30\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,12,38,63,127,101,88,0,50,0,12,12,0,12,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,11,5,28,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,31,40,127\\n36,0,0,0,127,36,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n28,14,14,0,14,127,112,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,105,102,67,91,42,52,21,7,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,81,74,27,29,31,17,24,13,6,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n56,14,0,28,0,42,42,0,0,14,14,14,0,0,0,0,14,28,0,0,0,56,42,84,112,127,70,70,56,0,0,0,0,0,0,14,0\\n127,15,55,7,31,0,0,15,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,28,0,0,0,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,105,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,0,31,31,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,63\\n31,31,63,95,127,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,127,127,63,31\\n99,18,18,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,9,9,27,36,127\\n63,127,63,31,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,63,63,31,31\\n50,76,127,50,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,101,0\\n90,36,18,0,0,0,36,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,54,0,127,127\\n127,108,0,54,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,54,108,54\\n127,109,87,70,52,43,33,26,19,15,11,10,5,3,3,3,2,1,4\\n127,68,61,98,88,100,91,59,37,56,49,49,51,29,29,28,19,17,28\\n127,80,71,55,25,16,8,0,0,0,0,0,4,8,8,0,0,4,0\\n13,6,6,127,40,13,0,0,13,0,0,0,0,0,0,0,0,0,0\\n1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,14,22,29,32,38,58,79,106,127\\n21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,74,31,84,127,84,105,95,0,42,105,63,0,10,63\\n112,127,77,56,35,31,0,3,7,7,3,0,0,0,0,0,0,0,0\\n63,31,127,0,63,63,0,0,0,0,31,95,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,75,127\\n127,75,11,2,16,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,31,95,63,0,31,63,127,63\\n40,38,45,52,65,98,127,98,114,95,62,40,28,28,18,16,16,7,17\\n5,0,0,4,6,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,2,0,1,5,17,35,63,103,127,111,114,115,67,41,15,33,30\\n28,98,28,112,56,127,42,84,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127\\n127,31,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,0,1,1,2,2,13,6,16,15,32,65,97,127,97,94,64,43,25,17,12,5\\n6,0,0,0,0,1,1,0,0,1,0,4,1,3,0,1,0,0,2,0,4,6,10,19,37,66,122,127,122,79,89,46,26,11,6,4\\n25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,76,76,76,76,101,127,76,76\\n25,50,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,0,0,50,25,0,50,127,76,76,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,14,0,0,14,42,77,42,127,98,70,63,105,35,21,21,14,7\\n8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,8,8,8,0,0,8,0,0,25,42,59,76,93,127,67,33,0,33,8,16,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,76,50,0,0,101,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,127,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n10,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,10,0,21,31,95,116,127,42,52,42,21\\n7,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,29,67,127,44,59,22,14\\n70,42,42,14,0,42,70,56,28,0,28,0,28,0,98,112,56,127,112,84,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0\\n15,47,111,15,31,79,63,0,15,47,0,31,15,47,63,31,95,95,127,111,47,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,21,21,21,42,84,127,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,0,0,0,84,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,26,3,23,26,15,42,127,123,119,103,88,80,80,38,34,30,80,80,46,34,46,38,53,30,11,11,11,50,34,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,1,2,1,8,17,45,41,30,39,34,30,10,8,9,30,68,127,39,25,16,9,8,13,2,6,3,10,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,63,127,21,0,42,21,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,127,25,25,25,101,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,95,127,31,0,31,0,0,31,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,47,31,127,31,15,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,31,31,127,0,63,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,63,31,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n9,11,5,9,7,1,1,3,1,7,11,7,7,13,19,31,37,56,62,93,111,76,121,127,97,72,74,64,64,46,54,23,23,23,17,5\\n17,27,17,9,0,2,4,2,12,7,14,12,24,17,22,49,39,72,77,107,82,127,114,109,117,89,89,92,62,49,27,47,32,17,24,22\\n2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,6,5,14,15,19,6,7,13,10,14,6,11,42,43,84,110,127,67,56,40,24,15,4\\n3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,8,11,17,11,9,9,8,13,9,11,11,39,47,76,103,127,78,42,42,21,13,6\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,95,63,31,63,127,0,31,31,95,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,63,95,127,127,31,31,63,63,31,31,0,31,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,105,7,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,106,13,0,0,13,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,1,0,47,127,96,27,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,2,1,33,127,69,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,9,9,4,4,9,0,22,127,86,4,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,4,4,4,0,4,4,23,127,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,8,33,101,127,110,93,93,42,25\\n0,23,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,7,0,0,0,15,31,119,103,127,111,79,55,47\\n0,3,3,3,1,0,0,0,0,0,1,1,3,3,9,15,11,17,13,42,127,91,31,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,3,48,33,9\\n0,2,6,2,2,0,0,0,0,0,2,2,4,11,13,9,18,20,20,50,127,113,18,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,39,2,41,48,16\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,37,63,63,47,100,74,68,42,10,37,42,127,63,52,58,26,21,10,5,5,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,8,25,8,25,101,101,127,101,118,110,110,42,42,93,93,110,50,84,59,42,16,0,8,16,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n5,0,0,0,0,0,0,0,0,0,0,0,0,0,17,11,0,5,17,46,51,34,23,11,28,17,40,127,98,34,46,5,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,17,17,11,34,17,23,11,23,17,51,57,127,75,17,17,5,5,5,0,5\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,76,76,76,0,127,25,25,76,127,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,127,0,63,127,127,0,63,127,63,0,0,63,63,127,0,0,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,19,127,6,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,127,74,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,50,127,69,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,31,31,31,31,31,31,31,0,0,0,0,0,63,0,95,0,127,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,31,31,63,31,0,31,31,0,0,0,63,0,0,0,127,95,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,30,13,30,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,36,13,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,101,127,25,0,25\\n0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,127,25,50,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,52,10,0,10,31,10,10,21,31,21,21,10,10,10,0,0,0,0,10,21,10,0,10,31,74,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,111,31,0,15,31,63,0,15,31,15,15,47,0,15,15,0,0,0,0,0,31,15,0,0,79,95,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,18,18,18,72,18,127,36,36,36,0,0,0,108\\n63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,95,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0\\n114,117,127,59,39,39,74,57,117,62,32,34,49,27,0,2,0,0,0\\n46,80,11,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,0,46,127,69,46,69,46,115,46\\n93,127,80,84,16,25,29,8,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,19,11,0,127\\n0,0,7,0,47,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,103,39,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,21,0,68,127,58,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,0,63,0,63,0,127,42,84,42,21,0,0,0,0,0,0,0\\n0,0,0,14,0,0,0,14,14,0,42,84,112,84,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,70,127,56\\n0,0,0,18,0,0,0,0,0,18,0,108,127,54,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,108\\n0,0,0,0,101,50,0,0,0,0,0,0,0,0,0,0,0,25,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,101,50,50,0,0,0,0,0,0,0,0,25,25,0,76,127,0,0,0\\n0,23,0,0,0,0,0,0,0,0,0,0,23,127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95\\n12,5,1,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,5,5,15,43,127\\n33,6,0,30,33,13,60,36,33,20,10,0,6,0,0,0,0,0,3,3,0,0,13,0,0,3,10,13,23,13,16,33,70,86,90,116,127\\n5,5,0,0,4,0,1,1,0,15,25,18,11,1,0,0,0,4,1,0,1,2,4,1,1,5,7,1,1,1,1,4,0,8,14,11,127\\n127,92,53,19,14,9,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,84,63,21,0,0,0,0,0,0,0,0,0,0\\n108,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,127,63,127\\n0,0,0,0,0,0,0,0,0,7,97,127,97,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,14,74\\n0,0,0,31,31,31,95,0,31,127,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,24,29,63,127,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,25,76,25,50,0,127,25,25,0,0,0,0,0,0,0,0,0,0\\n127,114,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,12,0,0\\n127,105,42,42,0,0,0,0,42,0,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,63,31,95,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,0,21,42,42,21,127,0,42\\n0,0,0,0,0,0,0,63,127,127,63,0,127,0,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0\\n0,0,0,0,0,0,0,0,0,0,42,0,127,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,28,127,70,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,25,0,0,0,0,25,76,0,0,76,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,101\\n0,0,0,0,0,0,0,0,0,0,36,0,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,50,127,50,25,101,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,127,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,69,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,35,87,127\\n0,0,0,0,0,0,0,0,0,0,0,0,127,84,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,127,42,42,0,84,0,42,42,0,42,0,42,0,0,0,0,0,0,0\\n127,0,12,0,12,12,0,38,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,0,0,12,12,12,0,12,0\\n0,0,0,34,0,23,0,11,0,34,46,46,103,57,80,57,11,57,92,46,23,69,127,34,34,11,23,11,11,11,11,0,0,23,0,0\\n0,0,0,0,0,0,50,0,25,101,127,25,0,0,0,50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,25,50,76,76,50,25,0\\n127,105,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,79,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,127\\n9,0,0,0,0,0,0,0,4,4,4,127,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,54,90,127,99,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,9,0\\n0,0,0,0,0,0,0,0,0,0,63,0,31,0,127,31,63,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,63,31,63\\n0,0,0,0,0,0,0,0,0,0,0,10,5,0,0,5,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,10,21,58,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,101,50,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,21,0,84,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,42,0,0,0,0,0,21,0,21,0,0,0,0,42,0,0,0,0,0,0,0,127\\n0,0,0,0,25,0,50,0,0,0,50,50,25,0,0,25,0,0,25,0,0,127,0,25,0,0,0,0,0,0,0,0,25,0,0,0\\n0,0,0,0,0,0,42,84,42,42,42,127,42,0,0,0,42,0,42,42,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,42\\n0,0,0,0,31,0,63,63,31,127,63,31,31,31,31,0,31,0,0,0,31,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,127,63,0,127,63,63,0,0,0,0,0,0,63,0,95,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0\\n0,0,0,0,0,0,0,127,0,0,42,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,45,127,72,81,54,0,18,9,0,0,0,0,0,0,0,0,0,0,9,0,18,27,45,18,0,45,54\\n0,0,0,0,42,0,0,84,84,84,42,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,63,95,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,0,0,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,101,50,76,76,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,127,95,0,127,0,0,0,0,0,31,0,0,127,63,95,0,0,0,0,31,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,63,95,127,31,0,0,0,0,31,0,31,63,127,95,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0\\n0,0,0,0,0,0,0,0,0,0,0,84,127,42,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0\\n0,0,0,0,0,0,0,0,6,0,6,12,31,25,6,19,19,12,0,0,44,12,6,38,12,12,12,12,19,38,63,127,82,19,50,50,50\\n0,0,0,0,0,0,0,0,0,12,76,50,63,127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50\\n0,0,0,0,0,7,0,14,14,0,0,0,0,127,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,15,15,47,47,31,31,47,15,15,15,15,127,15,95,31\\n42,84,63,52,42,26,42,127,26,42,10,10,15,0,0,0,0,0,10\\n63,63,95,63,95,63,31,31,31,63,127,127,63,63,0,0,0,0,0\\n0,0,14,7,7,21,49,84,49,112,127,105,49,49,35,49,14,7,0\\n127,116,77,65,51,42,22,14,2,0,0,0,0,0,0,0,0,0,0\\n46,46,46,46,11,23,23,69,103,92,103,127,57,34,0,0,0,0,0,0,0,11,46,11,69,34,80,23,23,23,46,57,23,11,11,127,46\\n107,127,78,43,43,24,14,34,24,9,9,19,14,48,73,78,4,39,78\\n28,28,28,24,21,35,52,127,63,88,59,28,28,0,3,7,0,0,0\\n0,0,0,0,0,0,0,0,28,0,14,56,14,56,70,28,0,28,0,14,0,14,0,0,0,28,28,127,42,28,56,42,42,0,28,28,112\\n127,33,0,3,3,15,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,58,29,4,0,0,0,0,0,0,0,4,4,0,0,0,9,9,0,4,0,4,0,0,4,4,0,4,4,4,4,4,29,24,14,9,9\\n127,127,63,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,0,0,127,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,34,80,127,11,11,0,0,0,0,0,0\\n84,127,56,56,14,14,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,14,0,112\\n42,105,63,84,0,42,84,0,0,42,42,21,21,42,0,42,21,84,0,63,21,42,42,21,0,0,63,0,0,0,42,0,0,42,0,63,127\\n42,127,28,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,35,14\\n0,42,63,0,0,84,0,0,0,0,0,0,0,0,21,0,63,21,0,0,0,21,0,0,0,21,0,42,42,84,63,105,0,0,0,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,63,95,31,63,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,95,95,127,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,9,0,0,9,19,0,58,0,58,48,107,127,87,117,39,29,29,19,19,9,29,19,0,9,0,0,9,0,0,0,0,0,0,0\\n0,0,0,0,0,0,16,42,42,59,127,59,59,84,84,93,67,16,25,16,42,8,42,8,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,63,0,63,63,63,0,0,0,127,0,0,63,0,63,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,31,0,63,31,0,127,0,63,95,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,119,127\\n0,0,0,0,0,0,0,0,9,0,0,27,27,127,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,27,117,127,9,0,0,0,0,0,9,27,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,69,127,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,12,38,0,12,0,38,12,12,50,38,38,12,12,0,12,0,12,0,12,0,0,0,0,12,0,0,12,38,25,38,38,38,127,25,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,127,25,50,101,101\\n0,0,0,0,0,0,0,0,0,9,9,90,108,81,72,9,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,9,9,45,127\\n0,0,0,0,0,18,108,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,12,0,38,12,12,12,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,63,0,31,31,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,0,0,127\\n0,0,0,0,0,0,0,0,0,15,111,63,95,15,111,47,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,63,111,127\\n0,0,21,42,0,21,0,0,127,127,0,42,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,31,31,127,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,63\\n0,0,42,0,42,0,0,42,0,42,42,127,127,42,0,0,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,127,0,25,25,25,25,0,76,101,25,0,0,0,0,0,0,0,0\\n0,0,127,21,63,42,21,42,0,0,0,0,63,0,0,0,0,0,0\\n0,0,0,0,0,0,0,21,0,21,63,63,63,127,105,42,84,42,42\\n63,0,0,0,63,31,31,31,127,31,31,0,0,31,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,0,127,31,63,127,63,31,63\\n127,42,42,0,21,42,42,42,42,21,0,0,0,0,0,0,0,0,0\\n0,0,0,31,0,63,0,63,0,127,0,127,95,63,0,0,0,0,0\\n0,0,0,0,0,0,0,25,50,0,0,25,25,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,50,50\\n0,0,0,0,0,0,31,0,0,0,0,0,95,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,127\\n23,0,7,7,11,31,39,83,55,83,127,63,51,19,43,23,35,39,23\\n127,0,0,0,0,95,31,0,63,0,95,31,0,95,31,0,0,31,0\\n0,0,0,0,0,0,0,0,0,0,0,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,127,42,42,42,42,42,42,0\\n0,31,31,63,0,63,127,31,31,63,127,63,31,0,0,0,0,31,0\\n0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,26,127,60,6,53,0,46,13,0,0,0,0\\n63,0,0,0,0,0,0,0,0,0,127,0,63,63,127,0,63,0,0,63,0,0,63,0,0,0,63,0,127,127,0,0,0,63,0,63\\n63,0,0,0,0,0,0,0,0,0,63,0,63,63,63,127,0,63,63,0,0,0,63,0,0,0,127,63,63,63,0,0,0,0,63,63\\n0,0,0,0,0,0,0,0,0,0,21,21,42,21,21,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,127,63,21,0\\n0,0,50,50,0,25,25,50,127,50,50,0,50,25,101,76,76,50,50,0,0,0,50,25,0,50,50,25,76,76,50,76,50,25,25,76,101\\n101,101,50,50,0,0,0,50,0,50,0,0,0,0,50,50,25,0,50,50,101,127,50,76,50,50,25,76,76,0,0,0,76,25,0,25,101\\n127,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,127,127,0,0,0,127,0,127,0,0,0,0,0,0,0,0\\n0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,127,0,0,21,0,0,0,0,0,0,0\\n0,1,1,1,5,10,21,40,24,40,59,93,121,105,65,44,29,10,7,5,1,1,0,0,3,0,0,0,0,1,1,17,12,22,61,75,127\\n0,0,0,0,0,0,0,0,0,0,31,15,31,127,15,63,0,0,31,0,0,0,0,0,0,0,0,0,0,15,0,15,0,31,0,15,95\\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,0,0,0,0,63,0,0,0,0,0,31,0,31,31,0,31,127,95,0\\n0,0,0,0,10,10,0,10,10,127,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,25,0,0,25,0,50,25,25,25,25,25,0,0,0,25,76,0,0,0,0,0,0,0,0,25,0,25,0,0,25,25,0,127,101,0\\n0,0,0,0,0,14,0,63,21,14,91,127,70,105,77,35,21,14,14,0,0,0,0,0,0,0,0,0,0,0,0,14,35,28,28,98,70\\n0,0,0,0,0,0,0,0,0,76,101,76,50,127,76,76,0,25,0,0,0,0,0,0,0,25,0,0,0,0,0,50,0,0,25,127,101\\n0,0,0,0,21,0,0,0,63,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,0,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0\\n84,127,105,42,0,0,84,42,0,42,0,0,0,0,0,0,0,0,0\\n0,21,21,63,63,42,63,127,127,63,21,0,21,63,21,0,63,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,47,63,79,95,15,0,0,0,31,15,31\\n0,0,0,0,31,0,95,31,63,127,31,95,31,0,0,0,0,0,0\\n0,0,0,42,42,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,0,0,0,42,42,0,0\\n127,0,15,0,0,95,47,47,63,0,0,0,0,0,0,0,0,0,0\\n0,18,0,0,18,18,54,72,127,90,54,108,108,36,127,108,72,36,36\\n127,63,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,18,0,0,18,36,90,54,127,54,0,18,18,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,18,18,0,36,0,0,54,127,72,36,36,36,18,0,54,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,42,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,0,0,127,84,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,31,0,0,0,0,0,31,31,63,127,0,95,31,0,0,31,0,0\\n127,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,31,31,15,47,47,79,15,63,31,31,127,63,47,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,127,127,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,84,84,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,11,0,34,80,103,127,80,80,46,127,80,69\\n76,127,76,88,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\\n0,0,0,0,0,0,0,0,0,31,0,127,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63\\n0,0,0,0,0,0,0,33,16,50,42,127,59,16,50,59,59,16,33\\n0,0,0,0,0,0,0,0,0,0,0,42,21,84,127,42,84,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,21,0,0,0,21,63,127,63,63,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,84,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,21,0,127,63,84,42,0,0,0,0,0,0,0,0\\n0,16,16,8,0,16,0,16,33,59,42,127,101,33,50,59,67,67,16\\n0,14,127,0,0,14,14,14,0,0,14,0,0,14,0,0,0,0,0\\n0,50,25,50,127,25,25,50,25,101,101,0,101,25,0,25,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,42,84,127,84,0,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,18,36,54,90,127,90,127,18,36,0,36,54,54,0,0\\n0,0,0,0,0,0,0,0,14,14,0,14,14,56,70,127,98,56,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,0,21,0,21,105,42,127,63,21,42,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,127,103,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,95\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,127,106\\n127,72,45,27,72,63,63,72,63,54,27,9,9,9,9,9,18,45,0\\n0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,5,15,21,68,127,47,74,26,52,42\\n127,59,35,15,19,15,3,0,0,0,0,0,0,0,0,0,0,0,0\\n18,16,39,47,63,72,105,98,127,109,92,75,68,49,17,27,14,18,16\\n0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,5,9,29,57,101,127,86,108,62,77,40,40,22,27,11,0\\n63,31,47,63,127,47,79,111,79,111,127,127,47,15,47,0,0,0,0\\n127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,47\\n47,55,127,55,71,31,7,55,15,15,15,23,63,79,79,7,71,55,79,79,111,87,63,71,47,47,71,39,103,71,39,79,87,111,71,63\\n37,67,104,37,59,37,29,7,0,0,22,7,59,29,44,14,22,52,37,67,52,82,112,59,52,119,74,52,82,104,52,127,89,82,59,52\\n63,63,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,127,0,0,127,63,127,127,63,63,63,0,63,0,127,0,0,127,0,0,63,0\\n63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,127,127,0,0,127,0,63,63,0,63,127,0,0,0,63,0,63\\n31,31,95,47,15,15,0,0,0,0,15,0,0,0,0,0,0,0,0,31,15,111,79,63,15,63,127,15,0,0,15,0,0,31,15,0\\n36,18,127,36,54,72,36,0,0,0,18,0,0,0,0,0,0,0,18,36,36,72,72,36,72,108,54,18,0,0,0,0,0,18,54,36\\n0,0,0,42,0,84,0,42,0,42,42,42,0,0,0,0,0,0,0,0,0,84,0,0,84,0,84,0,0,84,84,42,127,0,42,0\\n0,42,42,0,0,0,0,0,0,0,42,0,0,42,0,0,42,84,0,0,0,42,0,84,42,84,42,0,84,42,127,0,0,0,0,84\\n50,50,50,25,127,50,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,16,25,76,67,8,8,59,16,0,8,16,0,0,0,0,0,8,0,8,33,25,42,33,84,127,118\\n0,0,0,0,0,0,0,0,0,10,0,0,0,21,10,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,21,52,95,127\\n0,0,0,0,0,0,0,0,0,0,0,5,23,51,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,51,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,127,86,11,5,11,5,11,17,5,0,0\\n0,0,0,0,0,0,0,0,0,0,5,5,28,51,57,23,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,46,127,86,34,11,11,23,28,5,0,0,5\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,127,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,84,42,127,42,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,127,127,63,127,63,0,127,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,31,0,31,31,127,79,0,31,63,31,15,31,31,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,47,63,127,79,0,15,0\\n0,0,0,25,0,76,25,50,127,101,0,76,25,0,0,0,0,0,0\\n0,0,0,6,6,30,6,24,96,60,96,66,60,127,36,42,30,30,0\\n0,0,0,0,0,0,0,0,0,31,63,95,63,127,79,63,47,15,0\\n112,84,127,98,28,14,14,0,42,14,0,42,0,28,0,0,0,0,0\\n7,7,0,7,7,14,28,35,77,105,77,70,35,56,28,21,21,42,35,56,28,28,14,91,63,127,56,63,77,35,28,0,28,0,0,7\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,4,0,0,0,0,4,0,0,4,19,92,127,122,127,73,29,9,9\\n0,0,0,0,0,0,18,18,18,6,0,0,0,0,0,0,0,0,6,6,0,0,0,12,54,114,60,127,78,66,18,24,12,0,6,18,24\\n28,38,29,13,13,49,115,127,77,43,19,14,7,8,0,1,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,15,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,17,68,127,58,12,2,8,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31\\n0,0,0,0,25,0,0,50,76,127,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,76,101,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,0,31,31,95,127,63,0,0,31,63,63,31,0,31,0,63,31,0\\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,127,0,0,0,0,84,0,0,42,42,42\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,42,42,84,127,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,31,31,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,63,63,0,127,127,0,0,0,0,63,0,0,0,0,0,127,63,0,0,0,0,0,0,127,0,0,0,0,63,0,63,0\\n18,0,9,9,72,18,18,36,9,36,127,36,63,27,9,0,18,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,42,63,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,31,0,47,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127\\n0,0,0,0,0,0,0,0,0,31,127,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,63\\n0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,42,0,127,0\\n127,42,21,63,0,105,0,63,42,0,42,21,0,21,0,21,21,21,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,127,72,72,72,36,54,0,0,18,0,0\\n0,0,11,0,0,11,23,46,127,69,34,11,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,101,127,0,0,0,0,0,0,0,0,25,0,25,25,76,0\\n31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,95,0,31,0,0,0,0,0,0,31,0,31,63,127,95,31\\n0,0,0,0,0,0,0,0,0,0,127,0,50,0,0,0,0,50,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,50,0\\n0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,84,0,0,42,0,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,127,127,0,42,0,0,0,0,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,50,76,25,25,50,127,25,50,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,76,76,25,76,50\\n0,0,2,2,2,2,8,8,0,27,19,91,127,91,38,24,33,22,16,0,0,0,2,0,0,2,0,0,0,0,0,5,16,24,49,85,127\\n0,0,0,0,0,0,0,0,31,31,0,63,63,95,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,0,31,63\\n0,0,0,0,0,127,0,0,0,84,0,42,84,127,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84\\n0,0,0,0,0,0,0,0,0,0,50,0,50,101,25,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0\\n0,0,12,0,0,0,0,0,25,38,25,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,38,63,76,76,114,50,63,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,38,76,127\\n0,0,0,0,0,0,0,0,9,36,54,127,90,63,99,27,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,9,27,9,36,54,36\\n0,50,0,50,76,50,76,0,76,25,0,0,25,0,0,50,0,101,25,101,0,0,0,0,50,0,50,127,50,25,25,76,76,50,25,25,0\\n0,0,0,0,0,0,0,0,0,18,18,108,54,36,54,36,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,36,127,72\\n0,0,0,0,0,0,0,0,0,0,101,50,127,101,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\\n0,18,0,0,0,36,36,18,0,72,72,127,54,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,25,25,0,0,25,50,50,76,25,76,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,127,50,0\\n0,0,0,0,0,0,42,84,0,0,42,127,42,84,42,42,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,95,127,127,63\\n63,42,21,42,42,63,21,42,63,63,42,42,84,127,105,105,21,84,21,0,63,63,21,42,21,42,21,21,0,42,0,84,63,42,42,21\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,95,63,31,31,63,0,63,0,0,31,0\\n15,51,31,31,83,63,67,127,95,67,67,87,43,15,11,0,3,7,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\\n0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,42,105,42,21,0,0,0,21,0,0,0,0,21,0,0,0,21,63,42,21,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127\\n0,0,0,0,0,0,0,0,0,11,11,34,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,63,63,0,63,0,63,63,0,63,63,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,21,0,0,0,0,42,127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,42,0,0,0,0,0,0,0,0,0,0\\n84,0,0,0,0,0,84,42,0,0,42,42,42,0,42,0,42,0,84,42,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,127,0\\n0,0,0,0,0,0,0,0,5,5,28,80,127,46,23,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,5,11,28,80\\n0,0,0,0,0,0,0,18,18,36,90,36,90,54,127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,54,108,18,36\\n0,0,0,0,0,0,0,0,0,0,0,21,105,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127\\n3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,0,3,1,127\\n0,0,0,0,0,0,11,0,0,0,11,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n1,3,2,1,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,2,0,1,10,6,127\\n13,10,6,1,1,0,3,3,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,3,3,1,0,1,5,3,1,3,18,21,38,41,127\\n0,9,9,9,18,9,18,0,27,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,9,127\\n0,9,0,0,0,9,9,14,4,34,24,127,83,83,53,34,14,14,0,9,0,4,0,9,0,14,0,0,4,4,4,19,4,9,19,34,19\\n0,63,31,31,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,42,0,0,0,0,0,0,127,127,0,84,0,0,84,0,0,0\\n0,0,50,25,25,25,12,0,12,38,63,127,25,12,12,12,38,0,0,25,0,0,0,25,0,0,0,0,25,0,25,0,0,12,38,101,50\\n0,0,0,0,0,0,0,0,127,0,127,0,0,63,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0\\n0,42,0,42,0,42,0,84,84,84,42,42,0,42,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,0,42,42,0,42,42,0,84,0,0,0,42,0,42,0,0,127,0,0,0,0,42,0,42,0,0,0,0,0,0,42,42,0,0\\n0,42,0,84,0,42,0,42,42,0,84,84,42,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,0,42,0,0,0,42,127,42,42,84,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,42,42,0,42,0,0,0,0,42,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,18,127,90,72,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,25,0,127,76,25,25,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n28,42,0,0,0,0,28,0,28,70,28,127,112,56,28,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,42,0,84,84\\n0,0,47,0,0,0,0,0,0,127,15,0,0,0,0,15,0,0,0,15,0,0,15,31,79,15,0,0,0,0,0,0,15,0,15,0,31\\n9,23,9,42,28,23,47,32,51,47,56,89,23,4,14,4,4,0,0,0,4,0,0,9,0,0,0,0,0,4,4,0,0,28,28,127,94\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,16,127\\n18,36,36,36,27,54,127,72,81,81,127,90,36,36,27,18,18,0,0,9,0,0,9,9,0,0,18,27,0,0,0,0,9,27,0,72,18\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,9,9,9,0,0,0,0,0,0,0,0,9,0,9,54,127,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,42,0,14,0,14,14,0,0,0,0,0,0,0,0,28,0,14,127,127,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,50,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,25,50,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,21,0,63,42,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,42,0,0,84,127,0,0,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,42,0\\n0,0,0,0,0,0,0,0,0,31,95,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,127\\n0,0,0,0,0,0,14,7,7,0,21,56,98,14,0,0,0,7,0,7,0,7,0,0,0,7,0,0,0,14,14,0,0,0,7,35,127\\n23,11,11,34,69,115,127,127,57,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,5,2,2,5,32,17,56,85,127,41,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,54,81,36,9,0,9,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,99,127\\n0,0,0,63,0,0,0,0,0,95,31,31,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,0,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,84,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,0,0,0,0,0,0,0,0,0,0,42\\n0,0,0,0,0,0,0,0,0,0,0,0,18,108,36,90,54,0,18,0,0,0,0,0,0,0,0,0,0,18,72,0,72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,18,90,72,54,36,0,0,0,0,0,0,0,0,0,0,0,0,36,72,36,54,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n15,0,0,0,15,0,31,15,15,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,15,0,0,31,15,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,31,0,0,0,0,0,0,0,15,79\\n0,50,50,25,0,0,25,25,25,25,25,25,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,0,0,101,127,50,0,0,0,0,25,0,0,0,0,0,0,25,0,0,25,0,0,25,25,25,50,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,50,50,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,69,16,8,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,69,22,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,10,21,42,52,116,63,127,10,21,10,21,0,0,10,0,0,10,10,127\\n127,80,25,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,21,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,103,31,23,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,28,5,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,25,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,12,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127\\n42,63,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,42\\n0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,10,0,0,21,74,127\\n127,105,74,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,95,31,31,31,31,127,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,31,0,0,0,31,95,0,0,31,31,63,95,31,63,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0\\n76,127,50,50,50,25,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,50,0,0,50,25,101,0,25,76,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,25\\n36,18,54,108,18,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,88,88,101,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,47,0,15,0,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n111,31,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,15,0,15,15,15,0,31,0,0,0,0,15,0,0,0,0,0,15,0,95,127,63,31,111\\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,15,15,63,0,0,15,0,0,15,0,0,0,0,0,15,0,0,15,15,15,63,79,31,95\\n0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,0,0,21,21,0,21,21,42,21,21,84,105,127,42,63,21\\n50,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,25,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,25,25,76,25,76\\n21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,42,21,127,42,42\\n0,42,52,127,127,127,31,21,10,21,0,0,0,0,0,10,10,0,10,0,0,10,0,42,31,0,21,10,0,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0,10,0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n7,7,63,127,91,21,42,35,0,0,0,0,0,7,0,0,0,0,0,0,7,0,7,14,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\\n5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,26,127\\n127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,5,5,12,17,18,11,2,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,2,7,26,48,127\\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,127,63,0,31,0,31,31,0,0,0,0,0,0,0,0,0,31,95,95,63,31,95,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,6,32,127,37,3,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,23,127,32,3,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,15,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,3,9,61,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,21,84,127,66,18,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,1,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,17,100,127,73,17,2,0,0,5,0,0,2,0,0,0,0,2,0,0,0,5,2,8,0,5,5,5,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,127,54,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,3,6,15,58,127,113,30,9,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,12,6,0,0,0,31,76,127,82,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,50,44,19,19,0,0,0,0,0,0,0\\n28,14,0,14,0,0,14,84,70,42,70,127,112,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,98,112,14,14,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,18,36,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,15,127\\n0,0,0,0,0,0,0,1,0,9,18,38,127,88,68,28,5,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,4,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,6,18,18,9,22,5,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,1,1,5,6,21,45,111,127,85,54,2,2,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,3,5,8,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,12,7,21,20,25,5,1,0,0,0,0,0,1,0\\n0,0,0,0,0,0,0,25,0,0,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,63,31,31,0,31,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,127,31,63,63,31,63,0,95,0,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,29,127,39,1,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,2,3,28,127,63,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,16,50,25,25,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,127,59,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,44,22,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127,14,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,64,127,67,55,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,17,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,10,68,127,89,21,5,5,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,10,10,26,26,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,10,7,4,3,5,3,1,0,0,0,0,0,0,0,0,1,0,1,4,20,55,118,127,55,12,3,2,1,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,14,13,12,7,3,1,0,0,0,0,0,0,0,0,0,0,0,3,2,13,40,95,127,79,18,0,1,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,14,29,19,14,14,0,9,0,0,0,0,0,0,0,0,0,0,4,0,0,24,24,127,78,34,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,39,21,4,0,8,8,0,0,0,0,0,0,0,0,0,0,0,4,13,39,39,127,87,35,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,127,25,76,0,0,0,50,50,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,127,90,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,72,54,18,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,18,72,127,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,127,90,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,31,63,0,31,0,31,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,36,36,0,18,0,127,0,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,0,84,84,42,0,0,84,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,42,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,63,31,31,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,95,0,0,31,0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0\\n127,117,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,7,7,21,28,14,7,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,17,28,63,92,66,77,8,2,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,8,5,37,57,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,14,0,0,3,0,39,43\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,127,29\\n0,0,0,0,1,1,1,1,4,6,49,127,23,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,7,0,7,0,0,39,15,39,103,127,79,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n12,9,9,9,0,0,0,9,3,30,30,127,65,12,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,127,0,21,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,21,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,38,127\\n0,0,0,0,0,0,0,0,0,0,0,7,127,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,15,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,4,4,0,0,8,4,4,0,8,21,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,71,93,127,12,12,0,0,0,0,0,0,0\\n0,0,0,5,0,0,0,0,0,11,11,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,115,93,33,5,5,5,0,0,0,0,0\\n0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,47,0,0,0,0,0,0,0,0,0\\n127,106,55,23,9,3,1,0,0,0,0,0,0,0,0,0,0,0,0\\n28,18,12,9,8,5,2,7,6,6,4,3,4,2,2,2,1,1,0,1,1,2,2,2,3,6,7,8,9,11,10,14,16,19,33,71,127\\n127,65,43,38,15,18,19,31,43,42,71,64,78,82,88,75,73,96,103\\n127,53,27,11,3,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,4,4,1,4,10,17,74,62,127\\n115,127,66,40,30,16,13,6,5,5,7,5,4,6,3,5,7,9,6,8,6,8,7,3,3,8,6,6,4,6,6,10,13,14,22,33,38\\n127,63,0,42,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,21,0,21,0,21,42,42,21,0,0,0,42,84,127\\n106,113,73,40,40,13,33,40,6,0,20,6,13,0,6,6,20,0,33,33,40,53,40,26,20,20,33,26,46,33,20,33,40,40,127,66,53\\n127,74,23,17,7,7,3,0,2,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,2,3,6,9,20,38,51,61,65\\n26,40,26,26,6,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,13,6,40,80,40,40,86,127,120\\n112,127,56,38,38,38,63,24,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,109,84,30,30,21,5,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,6,19,64,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,30,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,53,127\\n127,54,27,4,4,18,18,4,18,9,4,18,9,9,4,22,0,9,9,9,22,9,9,9,9,18,13,13,9,9,0,0,0,0,0,4,18\\n84,68,47,15,15,0,5,0,5,0,0,5,5,0,0,0,5,5,0,0,0,0,0,0,0,0,5,5,5,10,5,26,31,37,52,121,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,15,42,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,53,127\\n0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,42,105,127\\n19,24,9,2,4,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,7,12,34,51,127\\n127,70,30,13,4,2,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,8,15,26\\n127,90,54,33,35,17,17,11,13,5,2,5,16,8,4,8,5,2,13,2,2,8,11,10,5,2,2,11,4,10,11,16,8,22,35,29,70\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,12,42,127\\n53,53,48,46,21,38,21,18,11,10,8,10,4,11,14,9,7,32,21,51,39,49,66,94,118,109,120,118,112,104,110,105,96,104,121,127,89\\n7,14,32,21,3,0,0,18,0,7,0,50,0,0,3,10,3,7,3,3,18,21,36,18,14,72,87,54,76,76,127,72,39,29,32,21,14\\n0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,42,21,21,0,0,84,42,21,84,105,0,21,84,21,42,84,0,21,0,127\\n0,0,0,21,0,63,42,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,21,0,0,63,21,84,21,63,127,84,42,42,21,0,0\\n78,84,18,24,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,6,18,18,18,24,12,36,12,18,24,12,18,12,18,12,0,18,6,0,12,12,6,24,18,12,18,18,24,18,12,18,24,12,24,30,30,36,60,42,127,84,102,102,66,48,114,114,96,78\\n73,46,80,20,13,6,0,0,6,0,0,0,0,0,0,0,0,13,0,0,0,0,13,0,6,0,20,13,20,26,6,20,6,20,0,6,0,20,6,0,0,0,13,13,6,13,40,6,13,26,13,20,33,13,26,13,13,33,66,53,40,40,86,60,20,113,127,46,40,120,93,66\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,21,21,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,0,84,0,0,127,42,0,84,0,0,0,42,0,0,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n76,25,76,101,50,25,127,127,0,0,25,0,0,0,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,47,39,31,15,47,15,15,23,7,7,0,7,39,63,71,103,127,87,39,55,39,15,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,42,118,25,25,25,0,8,16,8,25,42,25,16,50,59,118,84,127,67,42,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,127,0,14,14,0,0,0,0,14,0,42,28,42,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,105,0,0,0,0,0,0,0,0,0,42,63,42,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n22,9,18,13,4,0,0,4,0,4,4,9,0,0,4,4,0,4,13,18,4,9,0,18,13,4,0,0,27,9,9,22,13,0,4,4,0,13,0,0,0,9,9,0,4,9,4,0,13,0,18,4,22,9,22,9,9,4,4,13,18,31,40,45,86,72,90,104,127,81,31,36\\n31,19,19,6,6,19,0,0,0,6,0,6,0,6,0,0,0,12,0,0,0,6,6,0,0,12,0,12,19,12,6,6,6,0,0,0,0,6,0,19,12,6,12,12,0,12,12,12,25,38,12,12,12,44,25,6,6,0,6,19,6,12,50,69,82,127,88,101,82,107,57,44\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,42,0,0,0,0,0,0,84,0,127,84,84,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,127,0,63,0,63,63,63,0,63,0,0,63,0,63\\n63,63,0,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,0,127,0,0,0,63,0,63,63,127,0,0,0,0,0,0,0,0\\n103,63,87,47,43,63,39,23,31,47,31,19,51,35,15,71,71,43,127\\n0,33,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,13,26,40,127,40,93,33,26,13,6,6,46,13,13\\n36,0,0,0,90,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50,50,127,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,84,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,5,15,31,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,42,127\\n0,0,0,0,0,0,0,0,0,21,0,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,42\\n0,0,0,0,0,50,0,0,0,25,50,127,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,76,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,105,63,0,0,0,0,0,0,0,0,0\\n0,21,0,0,0,0,0,0,0,0,0,21,116,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,105\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,127,0,4,0,0,0,0,0,19,9\\n0,0,0,0,0,0,0,0,0,0,0,21,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,21,0,84,84,127,127,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,36,127,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,127,120\\n84,127,63,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,63,0,0,42,0,0,0,21,0,0,0,0,0,0,0,0,0,84\\n0,0,0,0,0,0,0,4,0,6,22,81,124,127,102,22,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,22,58,72\\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,42,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,63,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,25,0,0,0,0,0,0,25,127,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,101,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,50,76,127,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,0,127,127,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0\\n127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,63,0,31,0,31,0\\n0,0,5,0,0,0,2,2,4,22,46,99,127,69,36,8,8,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,2,5,12,14,23\\n0,0,0,0,0,0,0,3,3,24,63,127,51,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,45,27,127,72\\n1,3,5,3,6,5,10,22,27,75,125,127,59,9,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,50,0,0,101,0,0,0,127,25,50,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,12,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,8,4,21,127,67,50,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,2,0,2,4,11,0,2,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,25,84,127,68,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,9,4,31,9,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,40,113,127,122,18,0,4,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,22,16,5,0,27,127,33,11,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,16,3,127,52,6,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,61,127,10,0,0,0,3,3,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,90,108,90,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,14,26,127,35,11,5,2,14,2,0,5,0,0,0,0,2,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,8,15,127,15,5,1,8,3,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,15,15,15,0,47,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,47,0,15,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,5,0,2,7,0,0,0,0,0,0,0,0,0,5,5,5,12,22,25,40,96,127,35,15,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,14,5,2,2,0,8,0,2,0,2,0,0,0,0,2,5,5,14,31,31,53,59,127,56,14,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,21,21,127,42,10,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,10,0,10,0,0,10,10,127,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,50,50,25,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,101,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,101,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,36,90,127,54,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,108,0,36,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,3,29,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,7,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,127,6,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,0,0,0,0,0,0,0,0,31,0,0,95,31,31,31,0,95,127,63,0,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,42,0,42,0,0,0,42,84,42,42,42,0,127,42,84,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,10,10,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,50,25,0,25,25,0,0,0,0,0,0,25,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,23,0,0,23,0,0,0,0,0,0,11,0,11,0,23,23,46,57,103,127,92,57,103,11,11,0,0,11,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,9,9,0,0,0,0,0,0,0,0,0,9,9,18,9,99,54,127,27,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,0,18,18,0,0,18,18,54,18,72,127,72,18,54,18,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,25,50,25,0,25,0,25,25,76,127,25,101,50,76,50,50,50,0,0,0,0,0,0,0,0,0,0,0\\n127,40,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,115,87,61,44,12,13,6,3,1,1,0,0,0,0,0,0,0,0\\n127,79,25,20,12,11,5,8,2,11,7,3,5,4,9,1,4,3,3,5,9,5,6,4,6,5,5,7,2,11,5,8,7,7,10,34,30\\n127,33,2,0,2,0,8,5,30,8,49,27,33,33,24,44,38,55,71\\n84,84,63,42,0,63,21,0,42,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,42,127,127,21,63,84,84\\n0,108,18,18,127,0,0,0,36,0,54,0,18,36,0,0,54,18,36,18,18,54,18,36,18,72,36,54,0,72,36,36,72,18,18,108,0\\n0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,63,0,127,0,127,0,0,0,0,0,0,63,0\\n84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,42,84,0,127,42,0,84,84,0,0,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,63,74,127\\n0,50,0,0,0,0,0,76,0,0,50,25,50,0,127,25,50,25,25,0,0,25,25,25,0,25,25,0,25,0,0,0,25,0,0,0,50\\n0,0,0,12,0,0,0,0,0,0,0,12,0,12,25,38,63,101,127,88,38,0,12,12,25,25,12,0,0,25,0,0,0,0,0,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,31,127,63,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,42,84,127,84,0,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,23,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,0,111,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,127,84,21,105,105,105,0\\n30,96,127,35,60,45,40,55,10,71,91,71,10,25,40,20,25,45,0,15,0,5,0,0,10,15,0,0,0,15,0,0,5,10,10,10,0\\n127,119,39,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n117,97,68,97,39,127,48,58,58,48,48,29,29,9,9,0,29,19,9,19,19,29,0,0,19,19,29,0,0,9,19,39,0,9,19,0,39\\n58,127,107,29,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,63,63,0,0,127,0,0,63,0,0,0,0,127,127,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,63,0,0,0,63,0,63,0,0\\n0,0,63,0,0,63,63,0,127,63,63,63,0,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,0,0,0,63,0,63,0,63\\n0,21,21,0,63,42,42,21,0,127,21,42,21,63,42,42,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,127,0,0,127,127,0,0,0,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,21,42,105,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,42,0,0,0,0,127,0,0,0\\n0,0,0,0,0,0,0,0,0,1,0,1,2,8,18,30,55,85,127\\n0,0,0,0,0,0,0,0,0,0,0,0,7,7,3,26,74,67,127,93,89,59,63,48,59,85,59,26,11,22,3,11,18,11,33,14,7\\n127,25,15,19,19,3,6,9,19,9,6,3,12,9,3,6,6,19,19\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,28,0,0,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,0,0,0,63,127,63,0,63,127,0,63,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,127,84,0,84,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,63,31,127,95,63,63,31,0,63,31,0,31,0,95,95,95,31,0,0,0,31,0,63,31,0,0,31,31,31,0,0,0,0,0,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,25,25,76,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,0,7,14,127,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,15,0,63,31,0,0,31,0,0,31,31,47,47,63,0,127,0,0,0,47,0,0,15,0,15,15,31,31,0,15,31,47,31,0,31,31\\n0,0,0,0,0,0,63,0,127,0,127,63,127,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,63,0,0,63,0,0,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0\\n127,39,11,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,71,103\\n7,19,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,1,7,19,78,127\\n127,63,42,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,42\\n127,55,15,15,0,39,0,15,55,0,39,7,7,7,15,39,7,31,7,0,7,0,0,7,15,7,7,31,15,31,23,15,0,31,31,55,95\\n42,0,0,0,0,0,0,0,0,0,42,42,42,0,127,42,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,42,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0\\n0,0,0,0,0,63,0,0,0,0,63,0,0,63,63,0,0,63,127,63,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0\\n0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,84,0,127,42,0,0,0,0\\n0,0,0,0,0,0,0,42,42,0,0,0,0,84,0,0,0,127,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,0,63,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,84,84,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,42,84,84,84,127\\n63,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,15,0,0,15,15,0,0,0,0,0,0,0,0,0,15,0,63,63,127\\n0,0,0,0,0,0,63,0,0,0,0,0,31,95,31,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,63,0,31,0,127,63\\n0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,74,127,127,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,42,42,127,127,0,0,0,0,0,0,0,0,0,0\\n127,105,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,21,63,21,42,21,105,42,21,84,127,63,105,42,42,0,42,21,0,0,0,21,21,0,21,21,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,108,127,108,72,90,18,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,5,40,34,5,23,17,0,5,0,0,0,0,0,0,0,0,0,0,11,11,11,5,34,75,127\\n0,0,0,39,0,0,7,15,15,47,111,127,87,39,23,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,9,9,0,107,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,19,0,127,58,0\\n0,0,0,0,0,0,0,4,4,39,29,58,97,127,102,68,68,19,4,9,0,0,0,0,0,0,0,0,0,9,4,14,19,19,53,92,68\\n0,0,0,0,0,0,0,0,0,0,21,21,84,42,42,21,42,127,63,21,0,0,21,0,0,0,0,0,21,21,0,0,21,21,21,0,0\\n0,0,0,0,0,0,0,0,7,14,14,35,28,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,49,127\\n0,0,0,0,0,0,25,0,0,0,25,127,25,50,76,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101\\n0,0,25,0,0,25,25,127,25,25,0,50,127,50,0,25,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,31,63,31,63,0,63,31,127,95,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n36,72,36,72,127,18,72,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,1,0,0,0,0,0,2,1,2,8,15,27,60,127,64,7,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,2\\n0,63,0,63,0,0,0,63,0,63,127,63,0,0,127,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,11,80,0,57,34,69,11,69,0,23,23,23,0,0,0,0,0,0,0,0,0,23,23,57,23,34,127,92\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,0,0,127,42,84,84,42,0,0,42,84,0\\n127,127,84,63,21,84,105,21,0,42,0,0,0,0,0,0,0,0,0\\n0,0,25,0,0,0,25,50,25,25,127,76,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,50,0,50,0,76,25,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,63,0,31,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,0,63,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,31,0,31,0,0,31,0,127,31,0,0,63,31,0\\n0,0,42,42,0,127,0,0,42,127,42,84,0,42,84,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,31,95,31,63,31,31,0,0,0,0,0,0,31,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,50,0,25,76,127,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,42,21,105,127,127,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,127,63\\n127,105,116,95,116,95,116,105,10,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,99,99,36,99,72,117,99,36,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,42,63,63,21,42,63,0,0,0,0,21,0,0,0,21,0,0,0,0,0,0,84,42,63,42,105,127,63,42,0,0,21,0,0,0,0\\n84,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,42,63,0,127,0,42,0,0,0,21,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,127,0,0,0,0,31,31,0,0,0,0,0,0,0\\n63,127,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,7,15,50,96,127,55,23,8,7,3,2,0,0,0,0,0,0,0,0,0,0,2,1,0,1,15,34,68,100\\n0,0,0,0,0,0,0,0,0,22,29,37,127,29,52,29,29,44,7,0,7,0,0,0,0,0,0,0,0,7,0,7,22,22,67,52,119\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,11,29,47,127\\n0,0,0,0,1,0,0,0,1,4,33,127,68,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,11,0,0,11,34,80,103,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,127,115\\n127,109,86,60,39,34,21,11,9,4,2,1,1,0,0,0,0,0,0\\n11,13,7,3,6,5,7,8,15,12,1,4,2,3,3,2,1,0,1,0,0,1,1,3,3,6,6,7,7,11,4,8,7,8,24,57,127\\n127,115,47,23,19,5,1,5,9,5,27,29,37,41,47,73,57,67,79\\n127,110,98,91,79,77,49,47,37,11,4,2,2,2,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,31,0,95,0,63,95,31,95,31,0,31,0,127,31,63,0,31,95,127,63,63,0,31,31,63,31,127,0\\n127,56,13,5,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n105,127,109,68,53,20,15,7,2,3,2,2,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,8,15,41,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,10,10,21,0,84,95,105,95,127\\n51,62,49,70,91,118,127,91,75,40,18,9,2,1,1,0,0,0,0\\n0,6,9,2,6,9,4,13,50,34,55,53,55,39,46,32,32,16,4,16,18,43,27,30,50,64,78,55,32,39,78,16,87,127,69,64,46\\n4,2,8,4,10,8,24,6,10,34,47,43,59,71,65,63,98,100,127\\n127,48,12,5,7,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,4,4,9,11,30,127\\n86,29,24,9,4,11,6,0,0,2,2,13,2,0,2,6,4,2,4,0,0,0,0,0,0,4,0,0,2,15,11,4,9,38,74,77,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,15,39,31,55,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,21,84,84,127\\n127,65,23,11,9,7,5,4,5,2,3,1,2,1,0,2,7,2,0,4,2,3,1,4,1,2,4,1,3,3,1,1,2,3,9,9,28\\n0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,15,15,0,0,15,31,0,15,31,0,0,0,47,31,127\\n127,73,52,37,14,5,3,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n56,0,127,84,98,42,70,70,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n66,40,60,60,106,127,113,13,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,46,13,4,5,5,4,3,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,63,0,0,21,0,0,0,42,63,42,42,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,84,84,21,42,21,0,42,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,2,0,1,5,14,22,54,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,5,7,63,114,127,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,0,13,30,36,26,30,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,2,10,33,72,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,6,0,12,12,24,66,111,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,40,63,96,100,100,127\\n127,47,10,0,0,0,0,5,0,5,5,5,0,0,0,0,0,5,15,15,10,0,5,0,0,0,0,0,0,0,5,0,0,0,0,0,0\\n127,63,9,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,27,18,27,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,21,47,68,121,127\\n0,6,13,0,6,6,6,13,60,26,20,0,6,13,6,0,0,0,6,0,6,6,13,6,20,6,13,33,73,100,93,113,127,86,73,13,53\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,50,50,101,76,50,127,25,25,0\\n110,76,63,42,12,16,12,16,12,25,16,33,16,21,33,29,42,33,63,127,29,59,29,33,50,38,38,12,42,33,12,21,33,8,4,0,0\\n127,31,31,31,31,0,0,0,0,0,0,0,0,31,31,0,0,31,127,0,95,63,63,0,31,31,63,0,63,31,31,31,0,0,0,0,0\\n80,121,127,57,57,28,11,11,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,15,63,79,63,47,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,8,6,4,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,76,76,50,25,50,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,40,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,23,39,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,2,4,3,8,24,69,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,19,29,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,31,31,0,0,0,95,31,127,31,63,0,0,0,0\\n0,63,0,21,42,0,21,0,21,0,0,21,21,42,42,105,21,0,127,84,105,42,0,21,21,42,0,0,0,21,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,10,43,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,51,80,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,4,9,13,36,127\\n7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,24,21,52,127\\n95,127,79,63,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,47,47,31\\n118,127,50,8,59,67,25,33,16,8,8,0,33,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,16,8,33,16,67,101,93,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,25,0,25,0,101,127,127,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,20,69,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,25,79,127\\n0,28,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,56,42,56,98,127,0,14,56\\n127,38,114,12,38,25,38,0,50,12,12,25,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,12,0,0,0,0,12,0,0,0,0\\n58,68,48,58,58,39,29,39,58,58,9,58,0,39,39,29,0,9,0,0,0,9,0,19,39,68,117,127,48,58,58,39,9,29,29,19,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,0,24,63,127\\n50,61,43,58,18,21,14,3,0,0,3,7,3,3,3,0,3,7,3,10,10,39,43,54,79,72,112,108,123,108,127,112,90,119,65,83,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,12,0,0,38,50,50,50,127,25,0,0,12,0,0,12,0\\n0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,5,0,11,11,16,38,33,22,99,33,82,66,127,99\\n127,53,41,13,7,7,2,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,79,57,31,6,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,6\\n127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,8,2,4,20,33,53,73,100,86,127,71,84,55,71,51,71,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,11,0,57,46,92,127,103,103,69,11,23,0,11,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,108,127,36,18,0,0,0,18,54,18,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,76,127,50,101,0,0,0,0\\n12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,12,0,50,12,0,0,50,0,0,0,12,12,0,12,0,0,0,0,25,12,0,12,0,12,12,12,0,12,0,12,0,0,25,12,63,12,0,25,38,38,101,63,114,127,76,63\\n31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,31,15,15,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,15,15,0,15,15,15,0,15,15,0,31,31,15,47,0,95,15,31,127,15,47,0,15,95,79,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,127,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,18,108,72,36,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,0,127,31,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n112,112,52,67,29,22,7,7,7,14,7,14,14,22,14,0,0,14,52,7,7,0,0,14,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,59,127\\n127,90,27,54,9,0,9,0,36,0,18,18,0,9,18,9,0,18,36,45,9,18,9,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,99,54\\n0,0,0,42,42,0,42,0,0,127,42,42,0,0,0,42,0,0,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,16,9,9,29,16,39,45,29,16,26,29,16,32,9,6,35,22,58,87,71,97,110,127,107,91,55,6,9,3,9,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,8,2,25,16,8,16,14,31,28,8,16,16,19,14,8,22,16,31,87,73,76,127,98,98,53,33,22,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,0,0,31,127,31,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,0,0,42,0,0,127,42,84,84,0,0,0,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,14,42,42,56,0,0,0,14,0,0,28,28,14,28,14,14,56,56,127,98,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,28,14,0,0,0,0,14,0,0,42,14,28,70,84,42,14,127,14,14,0,28,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,9,39,9,0,0,0,0,0,0,0,0,0,39,87,127,29,9,19,29,78,87,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,76,127,25,50,25,0,0,0,0,0,0,0,0,25,25,76,101,25,101,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,25,0,25,50,76,0,0,0,0,0,127,50,25,101,101,76,101,50,25,0,25,0,50,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,127,50,0,0,50,0,0,0,127,50,127,76,25,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,42,127,42,0,0,0,42,42,0,0,0,0,42,0,0,0,127,127,127,84,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,63,0,31,0,31,0,63,31,0,0,95,95,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,21,10,21,42,0,74,31,21,31,63,10,63,52,31,31,63,31,105,31,63,95,105,127,116\\n50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,0,25,0,12,50,25,50,12,25,63,50,63,63,101,50,63,50,76,38,50,76,114,114,127,101\\n0,0,42,84,127,127,42,42,42,0,0,0,0,0,84,0,0,0,42,0,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,21,21,0,0,42,42,63,10,21,21,10,52,63,127,116,74,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,54,18,9,54,18,45,27,18,54,18,18,18,36,27,72,127,27,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,31,31,47,47,0,15,15,0,0,15,0,0,15,0,31,79,79,127,111,63,0,31,15\\n0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,76,0,0,0,0,50,0,25,0,50,25,25,127,50,101,50,25,25\\n127,107,94,48,47,22,18,3,0,2,0,0,0,0,0,0,0,0,0\\n84,127,42,28,0,0,70,84,42,14,28,0,14,0,0,0,0,0,0,0,14,0,0,0,0,14,28,42,0,42,0,14,0,0,0,0,28\\n0,0,0,0,0,0,0,25,0,0,25,25,76,127,50,25,50,25,0\\n110,58,45,30,36,51,85,111,127,100,76,36,30,20,8,6,6,3,3\\n0,0,0,0,0,0,0,21,0,42,42,21,42,21,42,0,0,0,42,0,21,63,63,42,21,127,21,42,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,18,0,0,18,0,0,18,18,72\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,25,25,25,0\\n127,31,3,0,0,9,9,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,36,8,13,24,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,21,127,63\\n127,127,87,47,28,8,0,1,0,0,0,0,0,0,0,0,0,0,0\\n127,36,0,63,18,0,27,45,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,0,45,27,27,9,0,0,9,0\\n0,25,0,0,0,0,0,76,88,76,101,76,127,114,0,25,63,88,101\\n114,122,103,120,122,105,127,88,55,29,16,6,2,0,0,0,0,0,0\\n127,127,0,0,0,0,95,31,95,31,31,63,0,0,63,0,0,63,0,0,0,0,0,0,0,63,127,0,0,0,31,0,31,0,0,0,0\\n127,52,10,3,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,54,9,0,9,9,27,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,18,0,36,18\\n127,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,11,27,127\\n24,43,69,113,113,104,115,115,127,121,114,100,61,68,52,30,13,13,8,8,3,2,2,8,9,5,1,2,5,4,5,6,2,9,15,18\\n14,38,51,70,71,86,90,108,104,127,115,88,53,43,36,18,17,9,3,5,2,2,0,8,12,1,0,1,0,4,2,6,6,5,7,16\\n0,20,45,121,127,116,96,96,45,86,50,55,25,25,20,5,10,20,0,10,35,15,5,5,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,5,10,15,0,5,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n7,11,44,97,127,119,82,37,63,22,44,26,18,26,29,11,7,3,0,3,0,7,3,3,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,7,11,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,47,47,127,47,47,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,15,7,7,23,15,127,39,23,15,0,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n3,3,10,14,54,72,94,127,116,65,10,14,7,0,10,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\\n2,5,5,26,29,59,70,127,82,64,29,11,0,0,0,2,0,0,0,8,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,25,50,101,76,76,127,50,0,25,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,18,36,27,63,127,45,9,0,0,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,25,0,0,76,76,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,31,0,31,127,127,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,36,0,18,0,0,18,0,18,0,0,0,18,18,0,0,0,0,72,127,36,54,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,0,21,0,0,0,0,0,0,21,21,0,0,0,0,21,0,0,63,84,0,42,127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n5,17,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,11,17,17,28,5,40,51,80,51,51,51,40,17,23,17,23,28,127,63,51,63,40,23,28\\n7,22,14,14,22,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,22,29,59,89,112,52,44,52,59,59,29,14,14,7,104,127,82,59,119,59,44,14\\n14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,28,56,127,56,42,28,0,0,0,0,42,14,42,84,98,28,14,28,84,14\\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,127,42,84,0,84,42,0,84,42,0,84,84,42,84,84,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,0,12,0,88,101,127,101,12,12,25,0,12,12,12,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,42,28,14,98,112,127,56,14,14,14,42,28,0,28,28,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,28,14,0,0,14,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,31,31,0,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n27,45,27,45,36,36,63,72,72,99,127,45,54,72,45,9,36,18,27,0,18,54,18,18,9,9,9,18,0,18,27,27,45,18,18,18\\n48,29,48,48,58,68,97,78,97,107,78,39,127,39,48,19,9,0,9,9,19,0,9,9,0,9,9,29,19,39,9,29,48,19,19,9\\n0,0,95,127,31,127,0,31,31,63,0,31,31,63,31,63,0,0,31,63,127,63,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,0,31,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,76,25,127,50,101,50,25,25,25,50,25,25,0,0,76,50,0,0,50,101,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\\n0,0,0,0,0,0,31,31,0,31,0,63,127,31,0,31,95,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,42,42,0,0,84,127,0,0,42,0,0,42,42,42,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,63,127,0,0,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,92,34,80,127,92,80,103,23,0,11,23,11,0,11,11,0,0,0,0,80,11,23,46,23,0,11,0,0,0,0,0,0,0,0,0,0,11,11,0,11,0,23,69,11,34,46,92,46,92,57,23,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n12,38,76,25,38,12,50,88,63,12,12,38,0,0,12,0,0,0,12,12,12,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,12,0,0,12,38,127,88,101,63,50,50,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12\\n0,0,0,0,0,0,0,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,127,84,0,42,42,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,0,63,127,63,31,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,31,15,31,127,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,14,56,127,0,0,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,127,0\\n0,0,0,31,63,63,63,31,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,0,84,42,127,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42\\n0,21,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,84,105,127,63,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,105,0\\n50,50,0,0,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,76,127,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,25,0,25,0\\n21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42\\n0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,127,63,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,31,0,0,31,0,31,0,0,127,95,0,31,0,0,0,0,0,0,31,0,0,31,0\\n105,21,127,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,63\\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,42,0,42,84,42,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,36,127,72,72,18,18,36,54,36,36,108,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,10,42,127,21,31,63,10,42,42,0,42,10,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,57,127,57,23,0,23,34,0,0,0,23,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,52,74,42,10,31,42,84,42,63,21,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,84,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\\n0,127,31,95,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,31,0,0,0,63,0,0,63,0,31,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,63,31,95,95,31,127,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,127,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,0,95,95,95,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0\\n0,7,23,15,39,39,31,31,23,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,23,63,71,127,39,7,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,25,25,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,127,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,0,0,0,21,63,21,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,0,50,25,127,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,14,0,84,127,14,0,14,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,101,0,0,0,0,0,0,0,0,0,0,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,99,9,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,88,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,12,101,127,0,12,25,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,10,10,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,105,127,95,21,10,0,10,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,42,52,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,21,127,105,21,0,10,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,2,3,16,4,3,0,0,0,0,0,1,0,0,0,0,0,1,3,0,2,2,7,16,45,127,85,7,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,5,20,11,13,3,7,3,1,0,3,0,0,1,0,0,0,3,0,0,1,7,17,34,70,127,73,53,9,15,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,16,0,8,0,0,0,0,8,0,16,33,110,127,110,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,127,47,127,63,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,25,0,0,0,0,25,0,0,76,0,25,0,0,25,50,0,25,50,127,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,18,9,0,0,0,0,0,9,9,0,0,0,9,0,0,0,18,18,108,127,63,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,25,0,0,0,0,0,0,101,127,101,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,49,35,127,14,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0,63,127,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,127,63,95,95,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,21,58,127,47,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,28,28,0,0,14,14,0,0,0,0,0,0,0,0,0,14,0,0,0,14,14,14,70,127,56,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,18,36,54,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,63,63,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n25,0,25,0,25,0,50,0,0,101,127,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,25,0,0,0,25,0,25\\n18,0,0,0,0,36,0,0,0,36,72,54,72,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,36,127,108,36,18,0,36,0,36,36,36,0,0\\n42,21,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,127,84,42,42,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,50,0,101,0,127,127,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,0,0,0,0,0,0,31,31,127,127,127,127,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,7,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,49,105,127,112,35,7,0,7,0,0,0,0,0\\n0,0,0,0,9,0,0,0,0,0,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,117,108,18,9,9,9,9,9,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,21,7,21,7,0,21,7,0,0,0,0,7,0,0,7,7,42,84,127,105,42,7,7,0,7,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,6,24,6,6,0,6,6,6,6,12,6,6,18,0,0,0,0,0,0,30,12,84,127,114,42,12,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,15,15,0,15,0,0,0,0,31,15,0,0,0,0,15,15,63,47,127,79,15,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,1,1,1,2,7,14,33,127,29,11,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,5,5,4,9,18,16,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,3,19,92,127,115,50,61,7,0,3,0,3,0,3,0,3,7,0,3,3,7,11,11,23,42,65,38,11,15,3,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,95,63,127,63,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,6,13,26,26,53,127,20,6,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,46,0,92,103,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,31,127,31,31,0,31,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,25,0,25,0,25,25,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,50,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,18,18,18,127,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,36,54,72,36,36,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,76,25,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,42,0,127,84,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,12,12,38,38,0,0,0,0,0,0,0,0,12,38,63,12,127,12,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,31,127,47,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,12,12,25,63,127,101,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,10,0,10,63,127,116,63,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0\\n0,2,2,0,0,0,0,0,2,6,37,100,122,124,80,37,24,0,4,0,0,0,0,0,0,0,0,2,0,8,4,11,11,35,91,102,127,84,17,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,0,22,35,44,13,6,2,2,2,0,0,0,0\\n0,0,0,0,0,0,0,0,4,0,24,60,127,112,42,12,14,4,6,6,8,2,4,0,0,0,0,4,2,2,4,8,16,42,60,124,120,94,34,18,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,32,30,20,22,10,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,69,127,57,34,46,0,23,11,11,0,0,11,11,0,11,11,11,0,34,11,0,11,11,34,57,57,57,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,15,0,15,79,111,31,15,31,63,95,79,31,47,47,47,31,31,31,31,15,31,0,0,31,47,31,79,127,127,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,5,26,47,121,127,37,10,0,0,0,5,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,6,26,53,93,127,40,26,20,20,20,26,6,6,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,72,127,0,36,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,21,63,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,127,84,0,0,0,0,0,0,21,63,0,0,0,0,0,0,0,0,0,42,0,0,84,84,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,10,15,2,2,0,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,85,127,38,12,0,7,5,2,0,0,2,0,0,0,0,0,0,0,0,0,5,0,2,5,5,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,76,76,127,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,7,23,63,127,111,95,103,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,71,87,7,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,7,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,20,73,127,86,53,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,20,80,60,20,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,26,13,6,6,0,6,0,0,0,0,0,0\\n118,127,80,42,16,0,8,0,0,4,0,0,0,0,4,0,0,0,0,0,4,0,0,8,12,12,16,12,12,8,12,0,4,12,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,127,127\\n0,2,11,5,19,57,127,44,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,31,63,63,31,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n19,0,9,9,9,127,127,48,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,127,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42\\n0,0,0,0,0,0,127,84,0,42,84,42,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,42,127,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,4,9,9,4,18,47,103,127,89,23,23,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,4,4,4,4,9,9,27,72,127,113,54,27,13,9,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,31,31,95,31,95,31,63,63,95,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,31,31,31,63,63,95,127,63,31,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,42,0,127,0,127,0,0,42,0,127,0,42,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,10,5,0,10,20,81,127,30,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,19,0,0,12,38,101,127,69,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,1,7,2,2,5,31,58,100,127,108,55,24,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0,5,6,15,26,64,78\\n0,0,0,0,0,0,0,36,36,90,90,0,54,54,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,3,9,62,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,14,127\\n0,1,3,5,7,9,1,1,13,57,81,127,115,19,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,3,0,3,0,10,0,10,3,3,32,54,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,14,7,0,7,14,42,127,91,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,21,56\\n0,0,0,0,0,0,0,12,12,12,0,127,114,127,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,0\\n0,0,0,0,14,0,0,0,0,70,28,112,127,98,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,70,70,28,42,42,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,0,14,0,0,0,0,0,0,0,0\\n0,0,12,0,0,0,12,12,0,12,50,88,127,38,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,38,25,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,38,25,12,12,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,7,7,7,84,84,127,49,21,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n3,0,0,0,0,0,0,0,0,3,127,63,75,11,7,7,3,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,31,127,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,58,0,0,0,0,0,9,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,11,0,0,0,0,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,3,0,5,8,26,93,127,40,16,6,4,5,5,0,2,1,1,1,0,1,3,0,2,6,8,12,31,98,84,19,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,3,1,1,5,25,78,127,52,18,11,3,1,0,1,3,1,0,0,0,0,2,3,3,6,3,12,46,84,73,20,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,127,21,0,0,21,21,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,52,10,52,74,127,21,31,31,10,21,10,0,10,10,10,21,0,0,10,0,0,10,31,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,9,9,29,48,29,39,127,87,9,9,0,29,0,0,0,0,0,0,0,0,9,0,0,0,0,0,19,19,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,7,35,98,127,84,7,7,7,0,0,0,0,0,7,7,7,7,28,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,5,23,75,127,63,23,0,0,17,0,0,0,5,0,0,0,5,0,0,17,5,17,17,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,56,127,112,28,42,0,0,0,0,0,0,28,0,0,14,0,0,0,0,0,0,0,14,14,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,7,0,0,0,14,127,7,7,7,0,0,0,0,0,7,0,0,0,0,0,7,0,0,0,7,22,7,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,22,71,35,17,17,12,5,5,12,12,10,0,0,0,0,2,0,0,5,2,15,45,33,88,127,43,7,0,0,5,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,4,28,45,37,26,8,4,4,10,8,15,10,0,0,0,4,0,0,2,0,13,30,78,100,127,28,6,2,0,2,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,25,127,76,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,0,0,0,0,0,0,0,0,0,15,31,0,15,0,0,0,0,111,111,127,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,0,31,127,95,63,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,9,29,29,19,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,78,78,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,127,29,48,19,29,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,101,88,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,38,101,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,12,127,12,12,0,12,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,95,63,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,54,36,18,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,0,0,18,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,25,101,76,101,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,50,0,0,0,0,25,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,0,26,86,127,45,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,4,0,4,7,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,2,2,19,127,104,37,0,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,4,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,63,63,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,63,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,21,0,0,42,127,63,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,42,42,42,0,0,0,0,0,0,0,0,0\\n50,0,50,0,25,50,0,25,127,25,101,127,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,25,25,101,101\\n0,0,25,0,0,0,0,0,0,25,50,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50\\n0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,9,54,36,81,18,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,42,42,127,84,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,25,76,25,0,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,3,29,108,101,23,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,67,127\\n0,0,0,0,0,0,0,0,0,0,0,7,7,37,29,74,127,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,0\\n0,0,0,0,0,0,0,0,0,0,2,4,7,2,7,7,9,11,4,0,7,7,0,0,0,0,0,0,0,0,0,0,14,21,44,87,127\\n63,31,0,31,0,95,31,127,31,63,0,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,29,0,19,58,78,127,117\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,10,0,10,42,0,42,42,127\\n0,47,15,0,0,31,0,31,95,127,31,47,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,14,28,127,14,0,28,0,28,56,0,14,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n11,5,7,4,7,26,39,73,72,127,69,94,70,26,11,1,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n20,5,5,10,15,18,23,12,41,51,127,44,12,7,0,0,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,14,31,31,43,85,46,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,53,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,31,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127\\n0,0,0,0,0,0,0,0,5,10,5,26,47,26,42,31,21,0,5,0,5,0,0,0,0,0,0,0,0,0,5,5,0,21,42,37,127\\n0,0,0,0,0,0,0,0,9,36,36,45,63,63,63,45,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,54,36,63,127\\n36,0,0,0,0,0,0,18,127,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,14,14,0,0,0,0,14,0,0,28,42,56,127,98,84,42,14,14,14,0,0,0,0,0,0,0,14,0,0,28,14,14,14,98,127,84\\n0,0,0,0,0,0,21,0,63,0,42,21,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,3,5,2,3,4,27,27,97,127,84,27,3,1,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n14,0,7,0,0,14,29,37,127,104,82,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,95,63,31,31,0,0,0,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,31,31,63,0,31,0,0,0,0\\n0,0,0,0,50,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,0,101,25,0,0,25,25,25,25,0\\n18,0,0,0,0,0,0,0,18,72,36,18,127,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,108,90,36,90,36,18,18,0,0,18,18\\n0,0,0,0,0,0,0,25,12,25,0,25,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,63,12,76,127,63,38,38,0,0,0,0,0\\n0,0,0,0,18,0,0,0,18,72,72,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,54,18,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,36,54,18,36,18,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,25,0,50,50,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,0,0,0,127,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,76,0,0,0,0,0,0\\n84,127,98,14,42,42,70,14,28,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,18,0,0,18,18,127,108,0,54,18,36,54,36,36,72\\n0,26,5,68,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,84,28,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,14,56,0,127,112\\n127,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50\\n0,42,0,84,127,0,0,0,84,42,42,0,0,0,42,84,84,42,42,42,42,42,84,0,84,0,84,0,0,0,0,42,0,42,42,84,0\\n108,18,18,54,36,36,54,36,36,18,0,36,18,90,36,36,18,127,90,36,90,18,108,18,36,18,18,36,54,0,90,18,36,72,36,18,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,0,0,127,63,127,0,0,0,0,127\\n0,31,127,0,0,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,0,15,15,0,63,63,127,31,0,15,15,0,31,0,0,31,15,15,0,0,0,0,0,15,0,0,0,31,0,31,0,15,0,95,0\\n84,0,42,42,42,0,0,127,0,0,0,0,0,42,0,0,0,42,0,84,0,0,0,0,42,42,0,42,0,84,0,84,84,0,42,0,84\\n0,0,0,0,0,0,0,0,0,0,63,0,127,31,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,12,57,95,12,6,19,0,0,6,0,0,0,0,0,0,0,6,0,0,0,0,0,0,6,127,114\\n0,0,0,0,0,0,0,0,0,0,0,0,0,33,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,84,0,0,0,127,42,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84\\n31,127,0,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,31,31,31\\n63,63,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,63,63,0,127,0,0,63,0,0,0,63,0,0,0,0,0,0,0\\n0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,0,0,63,0,127,63,63,63,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0\\n0,0,0,0,0,21,21,21,42,42,42,84,105,63,0,63,42,105,84,127,63,63,21,105,84,21,0,42,84,0,21,0,21,0,0,21\\n127,57,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,9,38\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,95,127,95,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,127,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,42,0,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,31,95,0,31,0,0,0,63,0,0,0,0,31,63,0,31,31,0,31,0,0,0,0,0,0,0,0,127,95,0,0,0,0,0\\n127,42,25,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,55,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4\\n127,68,26,79,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,52,52\\n127,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,52,74,95,68,10,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,10\\n0,0,15,47,79,63,63,31,15,15,0,0,0,0,0,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,15,63,63,47,127\\n127,12,0,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n36,90,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,0,127,72\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,127,0,63,63,63,0,0,0,0,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0\\n23,127,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,117,127,36,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,79,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,76,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,25,50,25,25,0,0,0,0,0,0,0,0,0\\n127,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,18,0,18,36,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,36,9,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,11,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,34,127,11,0,0,0,0,0,0,0,0,0,0\\n127,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,127,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,127,21,0,21,0,0,0,0,0,0,0,0,0,0\\n127,34,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,114,31,12,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,51,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,15,0,0,0,0,0,0,0,0,0,15,0,0,15,63,63,95,127,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,63,63,31,31,127,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,127,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,127,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,50,50,127,0,0,0,0,0,0,0,0,0\\n127,56,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,81,36,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,0,25,12,38,12,0,0,12,0,12,12,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,127,38,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,14,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,63,31,31,127,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,127,18,18,36,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0\\n69,92,127,46,115,34,11,0,11,23,11,0,34,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,11,11,23,80\\n77,98,77,127,105,35,35,14,14,21,28,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,49,0\\n127,76,101,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25\\n0,101,127,127,50,127,50,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0\\n46,23,80,103,69,34,57,11,0,11,11,23,0,0,0,0,11,0,0,0,0,11,0,0,0,0,0,11,11,11,0,69,23,80,127,115\\n78,58,117,58,78,39,9,29,39,39,0,39,9,29,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,19,39,78,68,127,97\\n127,42,127,42,0,0,127,42,127,0,42,0,42,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42\\n46,127,46,69,34,11,34,0,57,0,0,11,0,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,23,11,23,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,46\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,42,127,42,42,0,0,0,0,0,0,0,0,84,0,84,127,84,0,42\\n31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,95,63,0,0,0,0,0,0,0,0,0,0,63,31,127,63,0,0\\n0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,42,96,127,66,36,6,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,7,77,127,112,70,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,23,39,47,127,71,23,23,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,27,63,72,127,72,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,84,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,18,36,18,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0\\n18,27,9,0,9,18,27,108,72,81,9,18,9,9,18,54,117,72,18,36,9,0,18,0,0,9,0,0,9,27,9,45,127,63,72,36,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,31,95,31,63,31,31,0,31,31,0,31,63,127,127,31,63\\n127,0,63,0,63,63,127,0,63,0,0,0,63,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,84,0,42,0,0,42,0,0,0,42,42,0,127,127,127,0,0,0,84,0,0,0,84,0,0,0,0,0,0,0,0,0,42,0,0\\n0,31,63,0,0,31,0,0,0,0,0,63,127,31,31,31,63,0,0,0,0,31,31,0,0,0,0,0,0,0,31,63,63,31,0,31,0\\n63,6,6,12,31,25,19,63,25,50,101,88,101,127,82,69,69,44,57,38,19,12,38,6,12,12,31,25,19,38,38,0,44,44,76,107,25\\n56,14,28,0,0,42,42,42,42,42,28,0,84,28,70,70,84,56,28,0,56,42,14,14,0,0,28,42,56,84,56,28,70,84,127,42,112\\n0,0,0,0,0,0,0,0,0,0,0,1,2,6,5,10,15,19,12,8,7,9,9,6,9,8,14,14,22,23,22,32,52,68,89,94,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,9,0,9,27,36,63,127,63,81,117,117,108,108\\n0,21,21,0,0,0,21,63,105,0,21,21,63,21,127,63,21,21,0,21,21,21,21,0,63,21,21,0,0,21,0,63,63,42,42,63,42\\n0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,0,0,0,21,0,21,63,21,21,0,21,0,42,21,0,21,63,63,105,127,105,127\\n0,0,0,0,0,0,0,0,0,9,4,0,9,13,9,9,9,4,9,0,9,0,9,18,18,4,9,9,13,22,27,95,45,104,108,72,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,63,42,0,21,127\\n127,0,0,0,63,63,0,127,0,0,0,63,0,63,63,0,0,0,0,127,0,0,63,0,0,0,127,63,0,0,63,0,63,0,63,63,0\\n0,111,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,127,31,15,0,0,15,0,0,0,0,0,0\\n0,3,3,0,0,0,0,23,7,47,31,127,103,119,99,23,11,19,3,0,0,3,0,0,3,0,0,0,7,3,11,11,31,23,95,103,55\\n0,0,0,0,0,0,36,54,0,72,54,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0\\n0,0,0,0,4,0,24,14,29,48,48,127,63,43,29,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0\\n0,0,0,0,14,0,0,14,0,70,42,112,84,127,56,14,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,28,0\\n0,0,0,0,0,36,0,18,0,72,0,127,72,18,36,0,0,0,0,0,0,0,36,0,0,0,0,18,36,0,0,0,18,18,18,72,36\\n0,0,0,0,0,0,0,0,25,0,0,0,50,127,25,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0\\n0,0,0,0,0,12,0,0,0,0,0,25,25,0,25,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,50,0,127\\n0,42,42,127,0,42,0,42,0,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,11,11,23,23,34,127,11,46,23,69,23,23,0,0,23,0,11,11,0,0,0,0,23,23,0,11,0,23,57,46,115\\n0,0,0,127,127,63,63,0,0,0,0,127,0,0,63,0,0,63,63,0,63,0,0,0,127,127,63,63,63,0,0,0,63,127,0,0\\n0,0,0,0,0,0,0,0,0,84,127,42,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84\\n0,0,21,21,0,0,0,42,21,127,127,42,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,37,127,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42\\n0,0,0,0,0,0,0,0,0,42,127,42,63,63,63,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,31,95,63\\n0,0,0,0,0,0,0,0,31,0,0,63,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,127\\n0,0,0,0,0,0,0,0,42,0,84,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84\\n0,0,0,0,0,0,0,5,5,17,40,80,127,75,51,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,40,86,46\\n0,0,0,0,0,0,0,0,0,0,6,63,127,69,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,57,114\\n0,0,0,0,0,0,5,0,0,0,8,41,127,60,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,24,110\\n0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,127,63,21,21,21,0,0,0,0\\n0,54,0,54,127,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,95,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,0,36,0,0,0,0,18,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,36,0,0,18,36,0,0,18,36,108,54,36,127,108\\n0,0,0,0,0,0,0,63,0,95,95,0,0,0,0,0,0,0,0,31,31,63,31,95,31,31,31,127,0,31,0,31,31,31,0,63,0\\n117,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,78\\n127,63,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,31,42,84,105\\n127,76,41,12,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,9,22,22,31\\n25,0,38,0,0,12,12,0,0,0,0,12,0,0,0,0,0,25,12,0,0,0,0,0,0,0,0,12,0,0,0,12,0,25,25,38,127\\n96,127,73,48,37,46,16,7,16,5,5,3,0,1,0,0,0,1,1,3,1,5,1,1,0,1,0,3,1,5,1,5,5,3,7,10,19,16,14,25,8,8,5,1,0,3,3,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,3,10,16,32,84\\n127,106,106,83,93,53,10,10,6,16,20,20,3,0,0,0,0,0,3,3,3,0,3,3,13,0,3,6,3,3,3,6,10,3,13,13,13,26,10,20,16,6,0,3,3,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,10,6,23,66,80\\n42,127,127,98,14,14,0,14,14,28,0,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,28\\n63,0,127,105,84,0,21,21,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,127,127,0,127,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,84,0,21,21,0,0,0,127,42,21,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n82,104,127,112,52,59,29,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,0,0,14,0,7,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,7,22,52\\n46,73,127,127,86,60,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,0,6\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,48,78,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,127,39,19,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,70,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,20,17,16,2,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,2,3,37,127,127,28,3,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,39,127,79,15,47,23,15,0,0,0,0,0,0,0,0,7,0,7,0,0,0,7,23,71,87,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,84,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,25,101,76,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,90,90,72,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,10,31,105,127,31,52,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,31,21,0\\n0,0,0,0,0,0,72,84,0,6,6,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,14,0,0,42,14,84,42,14,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,0\\n0,0,0,0,0,0,0,0,0,0,8,84,127,62,11,15,6,2,4,15,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,33,20,0,13,127,40,33,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,9,9,36,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,36,27,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,9,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,127\\n109,127,75,51,28,5,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,11,23,28,57,69,109,40,28,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,5,0,0,5,0,28,63,86\\n100,106,53,40,26,33,26,13,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,6,13,13,13,26,46,20,33,40,6,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,80,127\\n0,21,84,63,42,63,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,127,63,63,42,0,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,11,23,23,46,69,127,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,34,0,11,23,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,15,15,0,0,15,31,127,31,63,47,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127\\n0,0,0,0,0,0,50,101,127,127,127,50,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,25,0,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,31,111,15,15,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,127,63,127,0,127,0,0,0,63,63,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,0,1,1,1,1,0,0,3,5,15,23,46,83,127\\n0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,0,0,17,28,83,92,127\\n0,2,0,3,2,0,0,0,1,3,2,4,5,5,4,6,7,5,16,6,7,6,4,9,8,10,17,5,15,11,13,25,37,42,45,91,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,0,127,63,63,63,0,63,0\\n0,0,0,0,31,31,0,31,31,0,0,0,0,0,0,31,0,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,95,31,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,127,63,63,0,0,0,0,0,0,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,0,0,84,0,42,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,42,84,0,0\\n0,0,0,0,0,0,0,0,127,79,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,18,36,72,127,72,18,90,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,84,127,127,21,127,0,0,0\\n0,0,0,0,0,18,36,18,18,127,0,0,0,0,0,36,72,54,18,18,18,0,0,0,0,0,0,0,0,0,0,18,36,18,72,36,72\\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,8,17,48,74,122,127,74,26,8,52,13,26,17,13,13,21,0,8,8,4,8,0,13,26,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,63,95,15,127,63,111,95,127,95,15,15,0,15,15,0,0,0,0,0,63\\n0,0,0,0,0,0,0,0,0,0,0,18,0,36,127,72,36,72,36,54,0,18,0,18,18,18,18,36,54,18,0,54,54,0,54,54,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,39,87,63,79,111,127,111,87,103,39,31,15,0,15,7,15,7,23,7,31,31\\n0,0,0,0,0,0,0,0,0,1,0,0,18,32,123,127,65,36,13,8,6,9,1,3,1,0,3,1,1,3,4,1,4,8,11,1,0\\n0,0,0,0,0,0,0,0,0,0,12,51,72,117,127,99,66,45,30,12,24,15,6,3,3,15,12,12,9,6,3,9,9,0,27,6,6\\n0,0,0,0,0,0,0,0,88,25,0,0,25,101,0,127,25,12,12,0,0,0,0,0,0,0,0,0,0,12,0,38,12,50,76,50,76\\n0,0,0,0,0,0,0,0,35,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,42,0,0,0,0,21,127,42,42,21,63,21,0,0,42,0,0,84,0,0,0,0,0,0,0,21,0,0,21,42,105,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,127,50,76,0\\n84,63,84,21,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,127,84,127,127,105,63,21,21,0,0,0,0,0,0,0\\n0,2,2,0,2,2,9,18,23,32,37,127,89,101,39,25,21,16,11,2,0,0,0,0,0,0,0,0,2,2,9,14,18,28,39,103,98\\n14,14,43,14,9,29,29,43,58,63,127,92,78,48,14,48,9,4,0,0,9,0,0,0,0,0,0,4,0,4,4,0,14,29,43,48,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,39,34,48,53,68,112,73,53,102,78,34\\n18,14,26,3,7,22,33,48,52,74,74,59,104,26,7,26,11,0,7,0,0,0,0,0,0,0,0,3,0,0,7,0,14,22,14,14,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,11,22,29,18,26,33,63,70,127,59,56,14\\n18,0,0,36,18,0,54,108,18,36,36,127,90,54,18,36,0,18,0,18,0,0,0,0,0,0,0,0,36,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,18,72,72,72,54,127,108,54\\n72,18,54,0,54,36,18,72,18,18,18,72,108,18,108,0,0,18,0,0,0,18,0,18,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,127,36,108,127,36,90,54\\n0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,4,17,8,4,0,0,0,0,0,0,4,0,0,4,8,17,48,127,61,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,15,26,10,0,0,0,0,0,0,0,5,0,10,0,15,10,52,127,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,42,84,0,84,0,0,0,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,31,0,0,31,0,0,95,0,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,47,15,15,31,63,111,127,63,79,0,0,0,0,31,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,15,0,31,0,0,15,31,79,0\\n0,0,0,21,10,10,52,52,127,63,95,31,0,0,0,10,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,42,10,0\\n12,12,0,38,0,25,12,25,50,76,50,88,101,25,0,0,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,38,114,76,127,50,25,38,12,25,0,0,25\\n14,0,0,42,0,0,0,42,70,42,84,28,84,0,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,42,14,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,14,28,56,98,98,127,84,70,28,28,28,0,0,42\\n9,9,0,0,0,0,9,48,127,39,0,9,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0\\n25,0,0,0,0,12,0,76,127,88,0,0,12,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0\\n0,0,31,0,0,63,0,31,31,31,63,127,31,31,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,36,36,36,18,63,63,54,27,27,0,0,0,0,0,0,0,0,0,0,0,18,9,0,0,63,0,27,108,127\\n0,0,0,0,0,0,0,0,11,11,34,127,92,57,57,11,23,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,11,57,80,103,46\\n0,0,0,0,0,0,0,0,28,14,14,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,28\\n0,0,0,0,0,0,0,0,0,15,26,42,127,116,26,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,58,95,74\\n0,0,15,0,0,0,0,15,0,15,47,111,31,31,15,47,15,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,15,127,79,79,31\\n0,0,0,0,0,0,0,0,31,0,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,95,127,95,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,0,0,127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,95,127,31,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,63,63,0,0,0,0,0,0,0,0,0,0\\n127,0,0,21,21,28,0,42,28,0,0,0,0,0,0,7,0,0,0\\n12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,9,127\\n0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,89,127,59\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,2,4,127\\n127,2,0,0,0,0,0,0,0,0,8,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5\\n63,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,31,79,127\\n63,127,31,31,0,0,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0\\n127,63,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,111,31,15,0,15,15,0,0,15,15,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,84,105,21,0,21,0,42,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,84,21,0\\n0,63,31,95,95,63,95,63,31,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,127,63\\n0,0,127,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,127,0,0,63,127,127,0,0,63,0\\n127,127,63,31,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,0,0,0,0,0,31,127\\n0,0,0,0,47,0,0,0,0,15,15,0,15,15,0,0,0,0,31,47,0,0,15,31,0,0,15,0,0,0,0,0,0,0,0,0,127\\n63,0,0,31,0,0,0,63,0,0,0,127,95,31,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,76,76,25,127,0,50,76,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,84,63,127,42,21,21,105,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,127,31,95,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n95,95,111,47,127,15,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,39,29,78,39,87,127,58,68,97,87,78,48,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,29,19\\n0,0,0,0,0,0,0,0,0,25,0,38,50,88,76,50,0,0,0,0,0,0,0,0,0,0,12,0,0,12,50,50,12,127,76,38,50\\n0,0,0,0,0,0,0,0,0,0,50,127,0,76,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,76,0,50\\n0,0,0,0,14,42,28,14,84,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,21,42,63,84,127,21,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,21,63,63,42\\n0,0,0,0,0,0,0,0,0,95,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,31,0\\n0,0,0,0,0,0,0,0,0,21,0,105,63,21,21,0,21,0,0,0,0,0,0,0,0,0,0,21,0,42,0,42,63,63,42,21,127\\n2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,6,20,31,47,127\\n7,3,0,0,0,0,0,0,3,0,10,10,14,0,0,0,0,3,3,0,0,0,7,3,29,39,61,127,108,105,61,39,39,36,3,7,14\\n0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,63,0,0,127,0,0,31,63,0,0,0\\n0,0,0,0,0,0,0,0,0,15,31,0,0,15,0,0,0,0,15,0,47,15,15,31,15,47,47,63,31,15,0,0,0,0,0,15,127\\n127,19,7,19,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,127,25,76,50,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\\n8,15,4,0,2,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,4,10,21,63,85,122,127\\n0,127,84,21,63,63,21,0,0,0,0,21,0,21,21,21,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,25,38,38,12,12,0,0,0,12,25,0,12,0,0,0,0,0,0,0,0,0,0,0,25,38,0,25,38,38,12,50,12,12,12,127\\n127,127,63,0,15,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0\\n0,84,84,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,0,0,0,84,0,0,42,0,0\\n63,91,39,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,83,87,55,127\\n40,127,80,93,33,13,26,33,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,6,6,6,6,13\\n50,50,127,25,25,50,0,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,38,63,127,76,101,76,12,38,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,25,25,25\\n0,0,0,0,0,63,127,127,31,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,127,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n36,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,99,54,127,108\\n0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,54,54,127,54,36,127,127,72,108\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,6,13,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,70,56,42,56,70,14,127,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,73,19,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0\\n0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,127\\n42,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,10,10,127\\n63,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,63,127,63,0\\n63,15,31,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,15,0,15,0,31,127\\n0,0,0,4,12,33,46,55,12,16,4,8,0,12,8,0,0,0,4,8,0,0,4,0,8,0,0,0,0,0,0,0,0,0,4,0,127\\n0,0,0,0,0,0,0,0,0,0,0,31,31,63,31,0,0,31,95,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63\\n0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,31,0,127,63,95,63,0,31,63,31,31,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,9,0,0,18,0,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,127\\n25,0,0,0,0,0,0,0,12,25,12,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,63,127,95,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,7,3,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,84,84,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,21,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,84,63,63,42,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,127,28,14,28,14,28,0,28,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,2,1,52,127,109,38,31,25,12,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,23,123,127,63,35,67,35,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,63,42,21,0,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,21,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,101,50,25,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,0,42,0,42,0,42,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,16,25,16,33,16,16,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,25,127,50,25,16,16,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,42,42,0,0,0,0,42,42,127,127,84,84,0,84,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,50,76,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,0,0,0,0,0,0,0,0,0,0\\n0,42,0,0,0,42,42,42,42,42,0,42,0,84,84,42,42,0,42,0,0,0,0,0,0,84,127,127,0,84,84,42,0,0,0,84,42,0,0,0,42,42,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,0,0,0,63,0,0,63,0,127,63,63,63,63,63,127,0,0,0,0,0,0,0,127,63,0,127,0,127,0,0,0,63,127,0,127,127,127,0,63,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,63,127,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,63,76,127,50,12,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,127,69,69,23,11,34,11,23,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,54,0,0,0,18,54,127,18,36,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,127,42,84,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,31,31,31,127,95,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,63,127,31,0,0,0,31,0,31,0,63,0,0,0,31,0,0\\n0,0,0,0,0,31,31,31,0,95,0,0,0,127,0,31,31,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,127,12,12,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,40,127\\n0,127,84,84,84,84,0,0,42,0,42,0,0,84,84,0,42,127,84\\n0,63,63,0,63,63,0,127,63,63,0,63,0,0,63,0,63,63,0\\n127,25,50,12,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,9,12,12,22,92,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,0,84,0,42,84,0,0,42,127,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,47,58,37,127\\n0,0,0,0,0,0,0,0,0,0,0,54,108,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,36,18,0,0,0,0,0,0,0,0,0\\n50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,76,0,50,25,25,50,0,25,127,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,0,127,18,0,0,0,18,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,84,0,127,42,42,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,50,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,50,50,0,0,0,0\\n0,0,0,0,0,0,31,0,0,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,25,25,0,50,25,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127,0,25,67,0,8,8,0,0,0,0,0\\n0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,92,11,23,127,23,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,9,39,127,19,9,19,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,25,0,25,25,0,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,25,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,25,50,0,0,0\\n31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,31,63,63,0\\n127,78,44,26,3,15,5,3,0,0,0,0,0,0,0,0,0,0,0\\n127,42,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,42,0,42,21,42\\n0,0,0,0,12,0,50,63,127,38,50,50,50,76,38,25,0,12,0\\n127,15,0,0,0,15,15,31,15,31,47,47,0,0,0,0,0,15,0\\n0,0,0,0,0,0,0,0,42,0,42,42,0,42,0,84,0,0,0,42,42,0,0,0,42,0,0,0,0,0,0,42,0,42,0,127,0\\n127,123,90,60,36,27,21,15,27,21,6,9,12,9,12,18,21,15,24\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,52,52,127,116,74,105,31,52,127,74,31,0,10,0,0,0,0,0,0,0\\n69,127,69,115,57,11,23,11,0,23,23,57,46,69,11,46,80,23,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,0,0,2,1,0,1,1,0,1,4,37,127\\n14,44,48,112,127,89,108,123,78,89,89,37,33,18,7,7,11,11,18,3,14,11,11,18,3,11,3,14,7,44,74,115,108,89,108,127,82\\n60,127,60,66,54,36,24,18,18,42,18,6,18,0,0,0,18,0,6,6,12,0,0,6,0,0,6,6,12,6,0,6,0,0,0,6,0\\n11,0,22,55,66,127,88,66,55,71,27,27,11,11,16,11,5,0,0\\n0,0,21,0,0,0,0,0,0,42,21,42,21,42,0,42,0,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,63,127,63,0,0,0,0,127,0,0,63,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,14,0,0\\n18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,90,36,90,90\\n127,21,10,0,0,21,0,10,10,10,10,10,10,10,0,0,0,0,0\\n127,77,40,27,9,13,0,0,0,4,4,0,4,0,0,0,0,0,0\\n42,127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,9,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,38,12,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,3,1,9,31,127\\n127,41,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,76,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n28,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,79,127\\n84,127,34,9,4,2,22,47,29,19,2,7,0,0,0,0,0,0,4\\n127,50,101,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,108,0,36,9,9,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,52,10,0,21,42,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n92,23,127,23,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,22,45,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127\\n0,0,0,0,0,0,0,21,32,10,58,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,127,0,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,81,53,46,25,14,8,4,0,0,0,0,0,0,0,0,0,0,0\\n28,56,98,28,42,84,70,127,70,98,28,28,14,14,14,28,0,14,28\\n0,0,0,0,0,0,0,0,23,7,79,15,15,31,31,39,87,47,127\\n67,67,59,71,78,127,110,114,105,69,27,23,33,14,12,8,10,6,8\\n42,0,42,0,21,21,21,0,21,42,84,42,127,42,84,127,42,21,21,21,0,0,21,21,42,42,21,63,0,21,63,42,63,42,84,0,0\\n0,0,0,0,0,0,0,0,0,0,21,42,0,63,42,42,42,127,0\\n0,0,0,0,0,0,0,25,50,127,84,93,42,76,84,59,59,67,16\\n0,0,0,0,0,3,7,19,3,0,7,7,7,11,15,84,76,127,84\\n0,0,0,0,0,0,0,0,0,0,76,0,0,25,50,25,25,0,0,25,50,50,25,127,76,50,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,39,63,127,119,31,0,15,0,0,0,23,15\\n127,72,26,8,13,0,4,2,2,0,2,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,83,71,51,30,24,14,3,1,2,0,0,0,0,0,0,0,0,0\\n20,18,10,2,6,8,12,4,12,10,6,6,4,0,0,0,4,0,2,2,4,4,0,0,4,8,20,14,10,10,6,2,10,22,30,61,127\\n72,36,0,0,18,9,0,36,0,0,0,0,18,0,18,9,18,45,127\\n26,17,14,27,35,73,100,123,127,62,53,35,14,13,2,1,2,6,2\\n0,0,0,0,0,0,0,0,7,91,105,63,42,70,49,56,14,21,21,42,28,42,21,14,42,21,35,21,21,0,14,28,21,70,56,49,127\\n0,0,0,0,0,0,0,0,0,0,0,15,15,0,31,127,31,31,31\\n127,95,41,28,6,6,6,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,14,127\\n0,0,0,0,0,3,3,127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,63,0,0,0,0,127,63,63,127,63,0,127,63,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0\\n0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,0,0,63,127,0,127,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,84,84,42,84,127,0,84\\n25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,25,101,50,0\\n116,127,111,74,42,52,52,37,26,47,47,37,58,42,47,84,68,79,52\\n127,52,21,10,10,21,21,0,0,0,0,0,0,0,0,0,0,10,0,10,42,31,21,21,21,74,74,105,31,95,95,52,0,31,21,10,21\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,101,25,0,0,12,63,38,0,0,0,0,0,12,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,127,90,90,54,72,72,0,18,36,18,36,36,18,36,18,0,0,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,42,0,42,42,42,42,42,0\\n127,63,21,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,14,42,98,28,127,127,28\\n0,0,0,31,0,0,31,31,31,0,127,31,31,95,0,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,0,76,25,0,0,25,0,0,0,0\\n112,127,87,88,95,90,98,73,47,26,20,17,13,14,7,9,5,4,4\\n0,0,0,31,0,0,95,0,31,95,95,95,63,95,63,95,0,127,31,31,63,95,0,31,95,0,63,31,31,31,31,0,31,63,31,0,0\\n36,0,0,0,0,0,0,18,0,0,0,0,54,72,127,127,36,54,36\\n119,127,119,97,82,59,67,22,59,7,22,22,0,0,0,0,0,0,0\\n112,98,70,42,42,127,70,70,14,14,14,14,0,84,42,28,70,84,84\\n120,109,127,120,83,79,58,60,40,2,4,4,2,0,0,2,0,0,0\\n0,39,48,9,39,58,68,39,68,107,19,39,9,9,9,29,19,9,9,9,9,9,29,29,78,127,87,68,68,39,68,19,9,29,19,19,0\\n0,0,0,0,0,0,0,23,0,7,39,55,55,23,55,23,31,15,127\\n32,49,38,44,46,59,78,93,120,127,92,74,45,46,28,20,9,13,8\\n0,0,0,0,0,0,0,14,0,0,42,42,84,127,56,42,98,56,42,56,28,70,42,42,84,28,14,14,14,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,3,26,52,63,123,127,127\\n127,79,79,63,47,15,15,79,63,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,0,0,0,0,0,0,0,21,0,0,127,21,84,21,21,0,0,42,0,21,0,0,21,0,21,0,21,21,0,0,0,0,0,0,0,0\\n95,47,127,15,31,15,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31\\n25,12,12,12,12,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,12,25,12,12,38,12,127\\n21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,10,21,21,31,31,52,95,52,127,63\\n42,8,16,4,4,4,4,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,21,16,29,127,59\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84\\n0,0,0,0,0,0,0,0,0,95,95,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,21,21,0,42,127,0,21,0,42,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,50,50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,10,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127,16,0,0,0,0,0,0,0,0,0\\n0,0,0,31,31,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,95,63,63,127,0,31,31,0,0,0\\n0,84,0,0,0,0,0,42,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,127,42,84,42,42,42,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,127,63,0,0,63,0,127,63,0,127,0,0,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,84,127,127,127,42,84,84,84,84,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,42,0,0,42,127,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,0,0,42,42,42,0,0,84,42,127,42,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,0,127,0,84,42,0,42,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,42,42,42,42,84,42,0,0,0,42,42,42,0\\n0,0,0,0,63,63,0,127,127,0,0,0,0,0,0,63,63,0,63,63,63,63,0,63,0,0,0,0,0,0,0,63,63,0,0,0,127\\n0,0,0,0,0,0,0,0,15,15,47,127,63,63,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,31,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,31,127,31,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,0,25,127,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,25,101,25,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,54,72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n36,9,0,0,0,9,18,99,127,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,13,0,0,0,0,0,20,66,127,66,6,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,0,127\\n0,18,0,54,127,18,0,0,0,0,36,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,76,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,84,127,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,42,84,0,0,84,0,0,0,0\\n0,63,63,0,31,0,31,31,31,0,31,63,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,31,0,31,127,95,31,95,63,95,0,63,0,63,31,0,0,63,31,0,0,0,0,31,0,63,0,127,31,63\\n127,81,33,12,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,9,0,3,18\\n0,0,0,0,0,31,63,95,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,0,0,127,0,0,79,0,0,15,0\\n72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,36\\n92,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,69\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,127,79,47,47,31,0,0,0,0,0,0,0\\n0,0,6,13,127,26,80,33,0,0,0,0,0,0,0,0,0,0,0\\n84,127,70,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,25,25,76,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0\\n26,46,53,93,33,66,106,127,86,46,6,13,20,0,6,0,0,0,0\\n0,0,0,31,0,0,0,0,0,31,0,0,0,0,0,31,31,31,0,0,31,31,31,0,31,31,0,0,0,95,0,0,0,0,0,63,127\\n0,0,0,0,0,0,31,15,15,31,31,31,63,127,15,79,15,0,31\\n0,0,0,0,0,0,0,0,12,0,0,0,0,0,6,25,63,101,127\\n127,47,55,23,23,31,15,0,0,31,7,7,7,0,0,0,0,0,0\\n50,0,0,0,0,50,76,0,127,76,101,76,50,50,50,25,0,0,50\\n127,52,21,63,21,21,10,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,95,95,127\\n63,95,63,63,31,31,127,31,0,31,0,0,31,0,0,0,0,0,0\\n0,63,0,0,0,63,63,63,63,127,127,127,0,63,0,0,0,0,0\\n0,0,0,0,0,0,21,0,0,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,27,36,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,69,127\\n0,42,42,127,0,0,127,84,127,42,84,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,84,0\\n74,127,127,14,29,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,30,48,127,75,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,42,28,70,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28,0,28,56,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,63,63,127,127,0,63,0,63,63,0,0,63,0,127,63,0,63,63,63,0,63,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,2,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,15,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,127,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,127,0,0,63,63,0,63,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,12,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,84,127,84,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,116,52,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,127,31,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,36,0,0,0,0,0,0,0,0,0,0,0,0\\n46,34,0,11,11,0,57,80,92,127,92,46,46,46,57,0,23,103,115\\n12,30,127,96,60,18,0,12,0,0,0,0,0,0,0,0,0,0,0\\n0,42,127,127,42,84,42,42,0,127,127,84,0,0,42,0,0,0,0\\n0,127,76,50,127,25,76,50,0,25,0,0,0,0,0,0,0,0,0\\n127,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,127,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,127,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,21,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42\\n72,90,36,127,72,36,54,127,18,0,18,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127\\n0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,42,0,127,42,0,127,84,0,0,0,84\\n127,58,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,0,63,63,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,127,0,0,0,63,0,127,63,0,63\\n127,92,61,39,25,4,0,7,3,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,16,26,93,127\\n0,127,47,0,0,0,79,15,0,15,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,15,79,15,95,127\\n127,57,25,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,9,77,127\\n127,45,38,35,10,0,3,0,0,0,3,3,0,0,0,3,0,0,0\\n0,0,15,15,15,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,42,127,42,0,0,0,42,84,127,0,0,0,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,84,127,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,84,127,42,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,12,25,0,12,76,127,76\\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,84,127,63,0,21,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,127,105,84,0,0,0,0,0,0,0,0,0\\n0,90,18,0,36,36,127,36,36,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,47,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,114,101\\n127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,31,0,31,0,0,0,31,0,0\\n127,21,0,0,0,0,21,21,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,21,21,0,42,42,105,127\\n0,0,0,0,0,0,21,21,21,0,0,0,0,0,0,0,0,0,0,21,0,21,42,0,0,21,21,0,0,0,21,0,0,21,21,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,2,7,127\\n127,53,26,30,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,127\\n21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n52,78,56,52,13,4,4,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,17,39,74,65,127,105\\n95,47,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,95,95,127\\n127,111,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,63\\n127,38,0,0,12,0,25,12,12,0,0,0,0,25,12,0,0,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,25\\n84,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,31,105\\n127,95,52,14,14,17,14,0,10,0,3,7,0,0,0,0,0,0,0,0,0,3,0,0,3,0,10,14,0,7,21,10,3,7,31,42,49\\n127,85,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,44\\n127,31,19,12,12,3,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,6,9,6,0,9,12,9,38,69\\n108,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,4,0,4,40,63\\n117,127,19,29,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,9,9,19,0,0,29,29,117\\n0,127,84,84,42,84,42,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,0\\n0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,63,63,63,0,0,0,0,0,0,0,63,63,63,0,0,0,63,0,63,0,0,63,63,63,0,0,0,0,0,0,63,63,0,127,63,63,0,63,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0\\n0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,63,0,127,63,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,127,63,0,63,0,63,0,0,63,63,0,0,0,0,0,63,0,63,0,63,63,0,0\\n118,82,83,70,127,101,59,43,24,5,0,0,0,0,0,0,0,0,0\\n127,76,38,12,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,12,25,50\\n127,127,50,50,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,0,12,25,25\\n0,0,0,0,0,42,0,0,84,84,42,127,84,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,69,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,88,69,6,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,68,68,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,13,20,20,127,6,13,40,0,13,0,6,0,0,6,40,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,36,127,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n28,14,14,0,0,0,0,0,0,0,28,0,84,98,28,42,42,42,14,14,14,0,0,0,0,0,0,28,0,0,0,14,28,112,42,127,84\\n0,0,0,0,0,0,9,9,14,127,122,89,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,3,0,0,0,0,0,3,10,10,14,17,45,14,17,17,14,7,0,7,0,10,0,0,3,0,17,24,7,10,28,49,52,70,127\\n0,0,0,0,0,0,14,14,70,127,84,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,21,0,0,0,42,21,21,84,105,0,127,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42\\n0,0,0,0,0,0,0,0,0,127,21,105,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,84,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,84,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,0,0,0\\n0,0,0,0,0,0,0,0,0,84,84,42,0,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,5,19,59,127,97,24,10,10,1,0,3,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,42,127,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,29,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,31,63,63,127,95,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,0,0,25,0,76,50,127,50,0,0,25,0,0,25,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,117,81,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,31,63,0,31,0,95,127\\n0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,127,127,0\\n32,10,7,9,4,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,10,42,81,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,127\\n127,43,15,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,2,17,61,127\\n127,84,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,63,127,127\\n31,23,39,15,23,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,71,127,79,71,111,63\\n31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,127,111,127,31\\n127,81,26,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,4,33,8,76,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,49,70,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,10,10,79,127\\n127,38,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,23,11,11,34,80,127,127,115\\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,0,63,63,63,0,0,63,63,0,0,0,0,0,0,0,0,63,0,0,0,0,127,0,63,0,0,127,127,127,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,0,31,0,127,127,63,63,0,0,95,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,63,0,63,0,127,0,127,127,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,3,2,1,0,1,4,12,21,44,90,127\\n10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,5,0,0,10,74,47,5,0,21,5,0,10,10,5,37,127,42,37,52,74\\n127,63,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,9,27,54,127,18\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,63,127,84\\n127,37,10,0,0,0,0,0,0,0,10,0,0,0,5,5,5,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,0,0,21,0,21,63,63,127,84\\n127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,68,5,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,87,127\\n0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,95,63,63,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,127\\n67,127,37,41,22,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,18,59,82\\n53,42,25,28,1,1,5,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,3,1,5,15,53,100,127\\n101,114,50,25,50,127,63,12,50,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,12,12,0,0,0,0\\n0,84,42,127,127,127,42,84,0,127,42,0,0,42,42,0,0,0,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,19,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,0,0,10,121,68,127\\n0,0,36,0,0,0,0,18,0,18,0,36,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,36,18,0,54,54,127,36,36,18,108\\n127,91,20,0,0,0,0,0,0,2,2,0,2,2,2,5,5,0,0,0,2,5,2,2,0,2,0,2,0,0,2,2,0,2,53,106,66\\n127,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,58,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,0,31,21,10,52,31,116,127\\n27,5,38,49,38,55,77,115,88,127,82,82,38,60,22,16,5,5,0,5,5,5,11,11,11,5,11,22,0,11,16,27,11,44,11,27,27,44,71,88,44,44,49,38,22,33,11,11,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,11\\n10,12,21,34,68,83,72,106,100,127,86,89,56,36,39,40,32,18,7,10,7,10,17,3,15,4,17,14,15,14,12,14,12,34,17,21,25,51,54,84,79,79,81,75,62,53,18,1,3,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,3,1,1\\n0,0,0,0,0,84,42,84,0,42,84,0,0,0,84,0,42,0,127,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,42,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,8,33,93,84,84,127,67,8,8,8,8,0,8,8,0,0,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n21,0,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,84,21,63,127,84,42,21\\n18,72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,18,0,0,0,0,18,0,36,72,72,90,36,127,127,36,108\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28,0,56,0,0,0,14,28,14,28,28,42,28,56,98,42,70,127,127,98,56,56,14,56,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,32,42,14,28,18,0,42,28,65,56,32,32,32,4,23,32,42,127,65,51,32,28,32,18,9,18,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n14,0,0,42,28,70,127,70,42,28,14,14,0,0,14,0,0,0,0,0,0,0,0,14,14,14,0,0,0,14,14,0,14,14,14,0,0,0,14,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,14,14,0,14,0,14,0\\n0,0,12,25,12,25,88,25,38,25,25,12,0,25,0,0,0,0,0,12,0,0,0,0,0,0,12,0,12,0,12,12,12,0,12,0,0,0,50,0,127,63,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,0,38,0,0,12,0,0\\n18,18,54,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127,127\\n127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,21,0,21,0\\n63,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,63,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,42,127,84,84,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n120,127,55,32,21,4,4,13,4,0,4,4,12,2,5,1,2,1,0\\n50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,25,0,0,0,0,25,0,0,0,0,0,25,0,101,127,50\\n127,63,45,13,18,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,9,47,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,127,31,63,31,63,63\\n127,95,56,77,42,10,7,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,3,0,0,3,0,10,24,35,42\\n127,48,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,6,24,58,127\\n119,119,127,56,0,3,10,3,0,0,0,0,0,0,0,0,0,0,0\\n127,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,18,127\\n63,127,95,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,127\\n0,0,0,0,0,0,0,0,0,0,0,31,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,95,0\\n127,51,17,11,11,17,5,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,47,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,0,0,0,0,0,0,0,0\\n127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,0,95,127,0,63,127,95,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n10,21,68,89,127,121,89,84,100,89,52,63,15,52,10,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,5,0,0,0,15\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,58,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,90,127,72,36,18,108\\n127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n108,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127\\n0,0,127,63,0,0,0,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95\\n0,0,84,0,42,84,0,42,127,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,116,127,42,74,95,52,21,21,42,10,0,10,0,0,21,0,0,0,21,0,10,21,10,0\\n36,0,0,0,0,0,0,0,0,0,36,54,127,0,36,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,36,72\\n0,0,0,0,0,0,0,0,0,0,0,63,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,63,42,0,0,21,21,0,0,0,0,0,0\\n0,0,4,0,0,0,18,2,2,4,32,100,106,94,45,6,6,4,4,0,0,0,2,0,0,0,2,0,0,0,0,2,0,16,47,75,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,33,127\\n0,0,0,0,0,0,21,0,42,127,42,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n9,1,3,1,3,0,7,10,23,21,61,127,95,12,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,127,76,101,101,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,101\\n0,0,0,0,0,0,0,31,127,95,63,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,47,127,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,0\\n0,0,0,0,0,0,0,0,0,0,10,10,105,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,58,117,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,63,63,127,0,0,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,127,63,0,0,0,0,0,0,0\\n127,106,102,94,83,84,53,25,14,6,0,0,0,0,0,0,0,0,0\\n8,17,17,17,17,17,56,35,52,52,30,21,8,0,0,8,4,4,0,0,4,0,0,4,4,30,21,26,13,21,91,48,26,21,83,127,43\\n0,0,0,0,0,0,0,0,31,47,0,15,63,79,127,15,95,95,127\\n13,3,5,3,5,18,42,82,127,116,109,71,42,23,10,4,1,4,1\\n0,0,0,0,0,0,0,0,0,21,56,42,63,70,127,56,42,7,21,35,7,42,21,49,14,42,21,7,21,49,28,0,14,0,0,7,0\\n0,0,0,0,0,0,0,0,0,0,28,0,0,70,98,98,0,127,112\\n0,46,0,0,0,46,23,69,115,127,80,80,11,0,0,11,0,0,0\\n0,0,0,0,0,0,0,0,0,15,0,0,0,47,127,0,0,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,7,95,103,95,127,55,79\\n127,33,46,33,80,11,35,57,11,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,50,127,38,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,76,127,127,127,127,25,0,0\\n127,95,31,0,0,0,0,31,0,0,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,63,0,31,31,0,0,0,0,31,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,15,0,15,0\\n0,0,0,0,42,0,0,0,0,0,0,0,42,0,42,84,0,0,42,0,0,0,127,84,42,84,84,42,0,0,0,42,0,0,0,42,0\\n63,127,63,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,42,0,127,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n46,80,23,23,11,0,0,34,46,34,103,92,92,127,115,115,103,69,46\\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,50,50,25,127,25,101,50,101,50,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,42,0,21,0,63,84,63,21,42,21,21,63,63,21,105,105,127\\n120,127,101,77,51,43,34,29,21,17,9,4,4,1,0,1,0,0,0\\n0,1,1,1,0,1,1,1,5,5,7,3,0,2,1,0,0,0,0,0,0,0,0,1,0,0,2,5,5,1,3,2,1,3,27,64,127\\n39,39,39,9,9,0,9,0,0,9,48,58,58,127,87,58,0,9,0\\n127,102,87,68,68,78,87,78,39,29,9,4,0,9,19,4,4,4,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,31,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,18,127,18,18,18,54,90,108,72,108\\n127,127,0,31,31,31,63,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,41,16,7,5,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,21,105,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,0,15,47,0,31,127\\n0,0,9,4,13,4,4,4,27,13,22,13,77,95,63,90,63,72,127\\n0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,42,42,0,0,84,42,0,42,42,0,0,0,0,0,0,42,0,0,0,0,0,0\\n70,91,81,100,127,118,85,72,52,43,63,43,54,81,50,65,52,30,30\\n0,0,0,0,0,0,0,3,0,7,0,3,0,3,7,30,0,0,0,3,3,3,15,26,3,3,3,0,3,0,0,0,11,3,46,127,76\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,0,0,21,10,84,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,42,127,101,25,0,8,33,59,25,33,0\\n0,25,25,50,101,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n56,56,42,98,112,127,70,84,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n121,127,88,95,81,40,12,10,1,3,0,1,0,0,0,0,0,0,0\\n14,0,3,7,17,14,10,7,0,7,0,10,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,3,7,0,0,3,10,17,28,127\\n0,0,0,0,0,0,0,0,14,0,0,14,42,42,70,127,14,0,0\\n39,25,31,47,50,76,98,127,127,70,56,33,14,5,5,11,0,2,11\\n0,0,0,0,0,0,31,0,0,0,0,31,0,95,0,0,0,0,0,31,31,0,31,0,31,0,0,0,0,0,0,31,0,31,63,127,63\\n0,0,0,0,0,0,0,0,0,15,0,0,15,15,47,63,95,111,127\\n127,21,42,74,74,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,21,0,0,21,31,31,10,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,10,127\\n127,63,23,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0,39,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,7,10,7,33,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,63,127\\n108,72,127,9,27,0,9,18,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,0,0,0,42,0,42,42,42,0,0,0,0,84,84,127,127,0,0,0,0,0,0\\n84,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,95,95,63,127\\n127,127,31,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,31,0,0,31,0,0,31,0,0\\n0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,42,42,84,42,0,0,84,42,0,84,0\\n127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,21,42,0,0,21,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0\\n63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,127,127,0,127,95,95,31,0,0,0,31,127,63,63\\n127,74,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,114,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,18,0,0,0,0,18,0,0,0,0,0,0,0,0,36,72,36,127,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,31,0,0,0,31,0,0,31,31,0,95,63,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n19,19,40,23,52,71,127,107,95,91,67,50,23,28,14,23,9,14,9\\n0,0,0,0,42,0,0,0,42,0,0,42,0,0,0,0,84,42,0,0,0,0,42,42,42,127,84,0,0,42,0,0,0,42,0,0,0\\n17,17,21,12,17,33,32,59,94,110,119,127,82,109,85,64,46,57,53\\n0,0,0,0,0,0,0,0,0,0,42,0,127,42,42,0,0,42,84,0,84,42,42,127,127,42,42,84,42,42,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,0,95,0,127,63,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,72,108,36,36,0,0\\n127,40,20,33,20,6,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,118,106,82,92,47,22,10,4,0,0,0,0,0,0,0,0,0,0\\n115,63,11,34,51,46,28,17,11,5,11,0,0,0,0,0,0,0,0,0,11,17,0,0,0,11,5,0,0,17,11,63,34,69,40,51,127\\n127,0,0,0,15,0,0,0,31,31,31,79,15,31,31,63,15,15,63\\n60,35,42,37,50,77,116,127,97,74,37,26,11,8,2,3,0,0,3\\n0,0,0,0,0,0,21,42,63,127,63,0,21,42,21,21,0,21,0,0,0,0,21,21,0,0,21,21,21,0,0,21,21,42,63,21,42\\n0,0,0,0,0,0,0,0,0,0,63,63,127,127,63,127,127,63,0\\n3,1,6,1,33,67,100,127,127,102,81,45,15,10,12,6,8,3,0\\n0,0,0,0,0,0,0,15,15,47,31,47,0,47,31,0,31,31,15,47,47,0,0,31,31,127,95,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,6,16,56,89,127,123,115,75,62,57,44,38,35\\n0,0,0,0,0,0,0,0,0,127,95,63,127,63,127,127,0,31,0,31,63,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,15,23,15,15,23,15,63,127,95,95\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,23,103,63,55,47,127\\n127,49,42,21,0,21,21,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,49,0,4,45,4,18,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,50,0,127,0,0,0,0,0,0,0,0,0,0,50,0,50,0,0,25,25,0,0,0,0,0,0,25,0,25,0,0,0,0,25,0,101\\n0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,54,54,127,54,36,36,0,18,0,0,0\\n115,127,103,46,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,23\\n0,0,0,0,0,31,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,63,31,31,0,0,0,0,0,127\\n127,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,68,32,27,23,7,2,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,3,3,7,4,4,2,8,4\\n127,47,0,31,0,47,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,47,0,31,0,15,0,0,0,0,0,0\\n0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,21,21,42,21,127,63,21,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,56,0,0,0,0,0\\n42,0,0,0,0,21,21,42,42,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,105,84,127,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,127,95,31,31,0,0,0,0,0,0,0\\n20,36,39,51,60,92,86,85,113,127,126,105,96,68,43,36,35,24,21,19,14,23,18,22,31,30,18,23,16,8,15,7,13,18,10,16\\n22,34,53,48,60,71,90,119,122,127,118,107,99,67,45,39,35,43,23,16,28,29,16,25,33,28,20,21,11,10,4,7,10,6,8,16\\n42,63,63,0,127,42,105,84,63,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,21\\n50,76,101,76,127,127,50,76,127,101,25,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,37,58,74,127,116,31,68,79,42,31,47,15,31,10,21,0,21,47,52,58,74,31,10,5,5,5,5,0,0,0,0,0,0,0,0,0,5,0,0,5,26,31,58,21,5,31,42,5,21,5,5,0,0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,5\\n0,29,42,29,71,127,76,88,42,80,71,21,16,16,12,16,21,8,12,38,63,97,88,46,16,4,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,12,29,25,8,0,29,12,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4\\n0,0,0,42,0,42,0,42,84,105,127,105,127,63,42,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,28,28,42,84,127,56,98,42,14,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,3,13,35,42,71,65,113,127,117,32,29,16,26,3,3,0,9,3,6,0,6,3,3,0,0,0,0,0,3,0,0,0,3,0,6\\n0,8,11,17,20,32,100,127,103,59,94,32,17,5,8,5,2,2,0,8,8,2,8,0,0,0,0,2,0,0,0,0,5,0,2,0\\n0,84,84,127,63,21,21,63,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0\\n0,31,31,31,95,127,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,28,0,14,14,28,42,127,98,42,0,0,14,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,36,36,72,36,54,127,36,72,0,18,0,0,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,12,6,0,18,0,18,18,18,12,24,42,90,84,42,60,54,102,48,78,127,48,48,6,6,6,0,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,40,15,0,0,5,0,5,15,5,15,5,45,60,86,30,30,76,127,111,71,50,86,40,15,10,0,5,0,5,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,31,95,0,31,95,0,127,63,0,31,127,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,21,21,42,42,127,42,0,42,42,21,84,105,42,42,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,42,0,42,127,84,0,0,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,25,25,127,101,25,50,76,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,11,46,46,80,92,57,115,46,34,57,80,127,34,127,11,69,0,11,11\\n0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,9,27,45,27,127,90,18,72,36,63,63,63,127,117,63,63,27,27,9,18\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,31,0,127,95,63,0,0,0,0,31,0,31,63,31,0,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,63,0,127,105,127,21,0,0,0,21,21,42,63,21,0,21,0,21,0,0\\n25,31,31,82,50,57,114,101,82,88,107,76,127,63,31,57,76,57,82,25,69,50,63,63,31,31,31,38,19,19,19,25,12,12,0,25\\n23,23,40,34,23,57,98,103,86,121,121,127,46,98,86,86,51,75,75,28,57,51,69,57,57,23,23,17,28,23,11,17,23,5,11,28\\n0,0,25,25,25,127,101,25,25,25,50,25,25,0,0,0,101,25,76,50,76,25,76,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,50,50,50,0,25,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n21,42,63,63,42,127,84,63,42,42,42,21,0,21,0,21,42,42,84,84,63,21,63,42,63,42,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,42,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\\n0,0,0,0,11,115,127,34,23,0,23,23,34,0,11,23,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,31,21,127,21,42,74,31,0,0,0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,0,0,0,0,0,0,8,8,25,0,42,50,0,33,33,16,127,59,16,33,25,25,50,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,15,15,15,47,47,63,79,0,15,0,127,47,111,127,79,95,79,31,0,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,36,90,127,54,36,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,15,127,31,31,15,31,79,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\\n0,0,95,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31\\n0,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,63,63,127,63,127,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,31,0,0,127,95,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,31,0,0,0,0,0\\n127,63,95,63,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0\\n0,42,127,42,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84\\n0,127,84,42,84,42,42,127,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n14,28,32,89,127,65,61,56,14,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4\\n5,15,52,116,127,42,58,21,15,21,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,5,0\\n21,21,0,63,127,63,21,21,0,0,0,0,42,21,0,0,0,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,42,84,42,84,0,42,42,0,0,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,127,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,14,0,0,0,0,14,28,127,28,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,8,0,25,25,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,93,33,0,8,0,0,0,8,0,0,0\\n0,0,0,0,0,0,0,11,11,34,23,46,92,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,127,34,11,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,47,127,47,79,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,0,9,18,9,45,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,101,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,31,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,44,29,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,104,112,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,15,0,0,0,0,0,0,0,0,0,0,15,0,15,0,15,15,15,47,79,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,25,50,127,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,4,4,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,100,21,8,13,4,0,0,0,0,0,0\\n0,0,0,0,0,4,0,0,0,4,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,95,127,27,13,9,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,63,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,127,127,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,69,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,80,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,127,95,111,79,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n25,0,0,0,25,0,0,50,0,0,101,50,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,14,28,14,0,14,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,112,127,84,56,56,0,14,14,0,42,0,0\\n0,42,14,0,0,0,14,0,56,28,127,112,42,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,84,98,14,42,14,14,14,14,28,14,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,47,87,55,23,7,15,0,0,0,0,0,23,7,0,0,0,0,0,0,7,23,7,23,127,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,12,38,25,76,88,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,127,63,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,108,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,18,36,18,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,50,50,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,76,127,127,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,127,127,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,63,105,63,42,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,21,42,127,84,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,63,63,0,0,127,63,0,63\\n0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,31,31,0,0,63,31,0,31\\n40,17,0,0,0,5,5,17,23,63,86,127,86,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,46,34,23,5,0,17,0,0,0,0,11\\n13,18,4,0,4,9,4,9,40,58,127,108,49,13,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,54,18,9,9,0,0,0,4,9,0,9\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,1,0,3,6,36,88,127,84,46,26,5,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,5,16,50,87,40,13,5,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,0,1,0,3,19,56,56,39,14,10,5,0,1,0,0,0,1\\n0,0,0,0,0,0,3,0,11,7,19,71,127,111,99,27,11,7,3,3,0,0,0,0,0,0,0,0,3,11,7,3,3,7,23,99,51,75,19,11,0,0,0,7,0,0,0,0,11,7,0,0,0,0,0,0,0,3,3,39,31,47,51,7,23,0,3,3,0,0,3,0\\n0,0,0,0,0,0,0,0,0,0,9,0,18,54,18,0,9,0,0,0,0,0,9,0,0,0,0,0,0,0,9,9,27,127,36,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,31,127,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,101,50,25,0,0,0,0,0,0,0\\n0,0,0,0,0,14,0,0,0,0,0,0,98,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,98,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,84,56,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,0,74,63,31,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,21,127,31,31,21,0,0,0,0,10,0,0,10,10,0,0,0,0,0,0,0,0,21,84,10,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,102,127,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,9,48,68,127,48,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,127,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,7,15,55,47,103,127,103,0,15,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,7,39,23,55,47,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,23,23,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,5,10,40,96,127,25,40,5,5,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,10,15,15,40,30,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,20,5,0,0,0,0,0,0,5,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,79,79,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,15,31,15,0,0,0,0,0,0,0\\n0,0,95,31,31,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,63,42,21,63,63,63,127,105,63,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,12,76,76,38,127,63,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,3,12,39,78,99,127,127,81,21,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,45,111,96\\n0,0,0,0,0,0,0,0,12,12,101,88,127,114,38,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,12,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,49,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,127\\n0,1,0,0,0,0,0,2,5,21,73,127,12,5,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,84,84,42,0,0,84,127,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,3,27,43,75,87,127,51,31,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,27,63\\n0,0,0,0,0,0,11,0,0,23,92,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,0,0,42,63,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,0,42,127,127,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,54,72,108,127,72,36,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,14,70,127,127,98,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,2,0,0,4,14,29,127,97,43,14,7,4,4,0,0,4,0,0,0,4,4,2,0,0,2,4,51,92,95,53,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,5,10,37,127,99,35,13,8,5,2,10,0,5,0,2,0,0,0,0,0,0,2,18,35,75,91,64,10,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,12,127,25,0,0,0,0,0,0,0,0,0,0,0,0,38,0,12,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,31,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,31,31,127,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,95,63,0,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,127,95,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,25,50,0,0,0,0,0,0,0,76,101,0,0,0,0,25,0,0,25,0,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,14,14,14,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,42,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,127,56,28,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,54,127,108,72,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,54,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,127,0,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,18,36,36,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,54,127,36,0,54,0,0,0,0,0,0\\n0,0,0,0,0,0,42,0,42,84,0,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,84,127,42,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,57,23,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,46,57,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,70,127,56,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,8,0,8,8,0,8,0,8,25,25,33,8,0,0,0,0,0,0,0,0,8,0,0,0,0,8,16,8,16,8,8,0,67,127,33\\n0,31,0,0,31,0,0,0,0,0,0,0,31,15,31,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,31,0,0,95,95,127,95\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,0,47,31,95,47,79,79,127,31\\n0,0,127,0,63,0,127,0,0,0,0,0,0,31,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0,0,31,0,0,31,63,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,23,11,103,127,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,21,21,84,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,42,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,42,84,0,0,42,42,42,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,0,0,25,12,38,12,63,63,127\\n127,47,0,111,15,15,79,63,0,15,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,31\\n0,12,12,25,25,38,38,12,38,76,76,127,114,88,38,50,38,63,50,38,0,0,0,0,0,0,0,0,0,25,0,0,12,12,25,38,25\\n0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,21,21,10,21,74,10,31,127,42,42,63\\n0,31,0,0,31,0,63,31,31,63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,15,0,0,15,0,79,127,63,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,63,0,95,0,0,31,0,63,63,127,63,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,0,31,127,31,31,63,31,95,31,63,31,31,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,50,0,127,50,127,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,63,0,0,63,63,63,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,63,0,0,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,63,0,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,84,127,0,0,14,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,31,47,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,10,5,26,37,52,15,42,26,10,10,5,0,10,15,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,63\\n0,0,0,0,0,0,0,0,0,0,18,108,72,127,54,54,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,90,18,0\\n0,0,0,1,0,1,0,1,2,16,76,127,118,60,15,6,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,5,9,26,40\\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,0,36,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,54,127,72\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,127,95\\n0,0,0,11,0,0,11,0,11,23,23,80,127,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,47,111,47,79,79,47,79,47,31,0,0,0,47,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,28,0,0,112,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,63,0,0,63,127,63,127,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\\n0,0,0,0,0,0,0,3,0,3,6,44,92,127,54,13,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,13,6,6,41\\n127,95,31,31,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,42,127,105,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,31,0,31,31,31,31,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,36,0,36,127,127,54,90,72,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,18,54,108,18,0,0\\n0,0,0,0,0,0,0,18,18,127,0,54,108,54,54,36,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,90,127,18,0\\n0,0,0,0,0,42,0,0,21,0,63,127,63,105,63,42,21,21,0,21,0,0,21,0,63,21,21,0,0,0,0,0,0,21,127,42,0\\n0,0,0,0,0,0,0,6,6,6,13,60,127,80,46,6,0,6,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,6,6,33,80\\n0,0,31,31,0,0,63,31,31,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,31,0,47,15,63,79,95,95,127,0,0,0,0,47,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,14,56,28,70,70,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28\\n0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,84,0,42,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,90,127,108,72,0,0,0,0,0,0,0,0\\n52,61,48,55,58,71,74,127,65,74,26,6,9,3,0,0,0,0,0\\n0,10,0,0,10,0,10,31,127,127,95,105,52,42,21,31,10,31,0\\n0,0,0,0,0,0,6,3,0,20,13,23,33,43,36,76,56,70,127\\n0,8,0,4,8,0,16,32,122,77,127,102,69,20,49,36,16,12,8\\n0,0,0,0,0,0,0,0,14,28,70,0,0,28,14,112,42,14,14,28,0,127,0,14,14,0,42,28,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,39,53,106,127\\n0,0,0,0,0,2,2,15,48,83,111,120,127,81,66,56,46,54,54\\n0,0,0,0,0,0,0,0,3,23,67,127,75,115,87,63,91,87,79\\n0,0,0,0,0,0,0,0,7,11,46,38,76,26,42,50,65,127,123\\n127,38,76,88,63,12,25,88,63,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,79,15,47,63,79,111,111,15,95,0\\n127,105,98,56,49,35,31,14,3,0,0,0,0,0,0,0,0,0,0\\n127,96,54,24,15,10,9,8,10,15,18,22,19,17,16,16,15,14,18\\n1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,3,4,8,11,26,53,82,127,84,61,25,18,13,10,19,17,23,38\\n0,0,0,101,101,127,0,0,0,50,0,0,0,0,76,25,0,0,0\\n0,0,0,0,0,1,2,1,2,8,32,30,59,61,71,90,127,121,107\\n127,118,55,50,97,67,46,46,71,101,50,33,25,4,12,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,6,9,18,32,43,63,79,106,127\\n127,63,87,23,31,15,0,0,0,0,0,7,7,0,0,0,0,0,0\\n56,70,63,84,56,42,49,63,98,91,127,98,42,91,91,84,112,77,112\\n0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,18,54,127,18,0,54,18,36,18,54,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,5,5,20,0,30,96,66,127,101\\n0,0,0,0,0,0,0,0,0,2,7,0,0,0,0,4,28,110,127\\n127,47,10,10,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0\\n0,48,48,0,29,9,127,68,107,78,87,19,0,48,39,19,0,9,9,19,0,0,29,0,39,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,8,6,3,7,24,19,20,16,12,22,21,15,18,52,127\\n84,93,127,42,0,8,50,8,33,33,67,42,8,25,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n58,19,30,30,22,24,32,29,53,55,87,102,100,127,109,79,89,74,87\\n0,0,16,16,0,0,8,16,16,8,16,33,42,67,76,93,59,67,127,127,93,50,118,8,25,8,0,0,0,8,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,0,95,31,63,127,127,63\\n9,6,6,4,0,0,0,4,4,25,18,13,25,43,76,127,122,96,23,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,7,1,9,7,7,10,12,43,127\\n0,31,31,0,0,0,0,31,31,0,127,0,0,31,31,0,0,63,0\\n9,15,16,32,41,66,101,123,127,102,95,74,54,35,34,22,25,22,24\\n26,33,0,0,13,13,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,13,73,93,127,40,46,20,13,40,100,40,93\\n0,0,0,0,9,9,19,48,48,48,97,78,78,127,78,48,9,9,58\\n63,127,127,15,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,10,21,52,74,21,116,127,127,10,21\\n0,0,0,0,0,0,0,0,0,0,5,0,13,29,13,15,42,84,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,14,9,7,11,55,25,18,35,58,74,53,48,62,80,127\\n0,0,21,0,7,0,0,56,127,35,63,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,63,127,95,31,0,95,0,0,0,0,0,0,0,0,0\\n34,69,127,115,34,11,0,11,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0\\n29,52,127,52,14,7,0,0,7,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,37,0,0,7\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,10,4,12,53,127,30,14,20,22,22,16,22,32,18,10,10,0,0,6,4,4,2,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,6,30,127,113,17,24,27,30,68,30,58,54,41,17,17,13,3,3,13,10,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n6,12,6,0,0,0,6,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,38,25,19,127,107,12,19\\n4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,28,32,127,47,0,0\\n55,45,32,20,3,1,8,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,8,16,35,64,93,127,116\\n69,41,36,14,4,8,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,6,13,37,47,112,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,84,84,127,127,0,0,0,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,25,0,0,0,0,0,50,0,25,0,127,50,25,0,0,25,25,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,14,127,98,0,0,0,28,70,112,28,98,127,84,112,28,0,14,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,36,45,0,0,0,18,45,45,63,27,127,81,63,18,36,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,84,84,42,42,42,42,42,127,42,84,84\\n0,0,0,0,0,0,0,0,31,31,63,63,0,63,127,63,31,0,0\\n127,90,81,108,63,63,63,45,18,36,36,27,63,18,45,54,90,72,90\\n127,71,25,33,33,16,8,8,8,21,16,12,21,16,12,12,38,8,8\\n0,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,25,0,25,0,0,0,127,0,50,0,0\\n0,0,0,0,0,0,0,0,9,9,9,68,127,78,29,0,0,0,0\\n127,17,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,63,31,0,31,31,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,15,0,0,0,15,15,47,63,31,47,63,79,127\\n127,64,33,54,28,17,13,2,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,36,5,1,3,1,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,0,25,76,50,25,101,50,25,50,76,0,0,76,101,127,76,50,0\\n101,127,50,25,25,0,76,76,50,25,0,76,0,50,0,76,0,25,50\\n0,25,25,25,50,127,101,0,0,0,0,0,0,0,0,0,0,0,0\\n127,72,54,36,40,13,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,108,36,90,127,36,36,90,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,18,18,18,0,0,0,0,0,0,0,0,0,36,18,0,18,0,18,0,0,18,0,0,72,127,18,0,0,0,0,18,0,0,18,0,36\\n66,62,127,71,11,7,5,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,67,21,17,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,31,0,0,0,0,0,63,0,0,31,95,31,95,0,31,0,31,31,0,0,0,0,127,63,0,0,31,0,0,0,0,0,0,0,0\\n84,84,127,0,0,42,42,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,42,127,0,0,0,0,42,0,0,0,0,0\\n127,70,49,14,21,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,39,15,23,7,31,47,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,31,31,0,0,0,0,0,0,0,31,0,31,63\\n127,37,5,21,21,10,15,10,0,0,0,5,0,0,0,0,0,0,0\\n16,8,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,4,0,8,29,38,29,42,50,33,93,114,105,127\\n127,100,86,23,3,5,3,1,1,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,1,3,28,68,73,127,98,82,37,19,2,1,1,1,1,0,0,0,1,2,1,4,10,3,11,32,52\\n0,63,63,127,31,0,31,63,31,0,31,0,0,0,0,0,0,0,0\\n127,88,38,88,38,25,12,12,0,0,0,0,0,0,0,0,0,12,0\\n127,76,41,24,16,9,6,2,2,1,0,0,0,0,0,0,0,0,0\\n23,0,0,0,0,23,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,0,23,127,115\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,31,47,95,127\\n0,1,0,0,0,0,0,0,0,5,1,18,10,5,29,7,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,38,127\\n0,0,0,0,11,46,23,34,46,46,34,127,103,69,23,115,115,92,115\\n0,0,0,0,0,0,0,0,0,2,0,0,5,5,14,11,2,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,31,72,69,127\\n0,63,105,105,63,127,42,105,21,21,21,0,0,42,21,0,0,0,0\\n127,123,40,11,8,5,6,11,15,11,6,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,1,3,18,25,66,96,83\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,35,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,39,127,39,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,37,127,44,0,0,0,0,0,0,0,0,0,0\\n14,0,7,0,7,0,7,0,14,0,49,77,127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,7,21,7,7,0,0,14,0,0,0,0\\n0,0,0,0,0,25,8,8,0,0,42,67,127,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,25,25,16,0,0,8,0,0,0,0,16\\n0,8,8,8,0,0,0,8,0,16,59,127,110,25,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,25,8,0,0,0,0,0,0,0,0\\n0,0,5,5,0,5,0,0,15,5,15,127,96,30,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,10,35,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,15,31,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,47,127,31,15,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,84,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,63,0,127,127,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,6,6,6,54,127,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,18,0,24,6,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,9,9,127,117,39,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,9,0,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,0,0,31,0,0,0,0,0,31,0,0,0,0,0,31,63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,127,0,0,0,0,0,0,42,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,127,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,21,0,0,0,0,0,0,42,0,0,0,0,0,0,0,21,127,84,127,42,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,127,76,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,95,31,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,101,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,127,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,42,0,0,0,0,0,42,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,42,0,0,0,0,0,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,0,42,0,0,0,0,0,0,0,0,0\\n21,0,21,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,84,84,127,0,42,0,21,21\\n0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,63,0,63,0,63,0,0,63,127,0,0,0,0,0,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,84,42,127,127,42,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,42,28,0,70,42,127,42,14,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,69,34,127,0,0,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,76,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,0,50,50,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,76,0,25,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,0,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,0,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,42,42,0,42,42,0,0,0,0,0,0,0,0,0,0,42,42,0,42,42,0,0,0,0,84,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,63,0,63,0,0,63,127,31,63,31,0,0,0,0,0,0,63,0,0,0,0,0,0,0,31,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,127,42,42,42,84,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,84,0,0,0,0,0,0,0,0,42,127,84,42,0,84,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0\\n11,15,11,0,3,0,3,3,0,3,0,3,11,7,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,7,35,43,127,55,59,59,55,43,19,27,11,27\\n15,10,5,5,5,20,15,0,10,0,15,5,15,0,20,15,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,10,10,10,40,91,91,127,101,45,66,111,91,25,35,10\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,18,18,18,127,54,0,0,0,0,0\\n0,12,0,12,0,0,12,50,101,50,114,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,114,127,76,38,76,38,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,50,50,63,50,50,12,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,9,9,18,99,90,45,36,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,72,108,27,63,18,9,0,0,0,0,0,0,0,0,0,0,0,0,9,18,9,54,127,63,63,9,0,9,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,20,40,93,60,60,80,80,127,60,73,26,20,0,6,0,0,0,0,0\\n0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,15,5,15,52,42,95,127,58,84,100,47,31,21,21,26,5,15,5,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,127,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,8,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,67,127,33,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,76,25,0,0,0,0,0,0,0\\n0,42,0,42,127,0,84,84,0,42,42,42,42,0,0,0,42,84,0,127,42,0,0,0,0,0,0,42,0,42,127,0,42,42,84,0\\n25,25,25,0,25,127,25,50,50,101,101,101,0,0,50,0,0,76,25,25,0,0,0,0,0,0,0,0,0,0,0,50,25,25,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,36,36,54,54,36,108,127,36,18,18,0,36,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,105,42,127,42,42,42,21,21,0,0,0,0,0,0,0,0,0,0\\n77,16,44,16,0,5,0,0,5,5,0,0,0,16,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,33,71,93,55,127,49,49,33,71,27,27,38\\n63,37,21,15,0,0,10,5,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,37,127,100,95,52,63,42,21,26,37,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,25,0,25,25,25,50,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,56,0,127,0,28,28,42,28,56,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,90,72,18,18,72,127,36,0,0,0,0,0,0,18,18,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,42,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,127,127,0,42,84,42,0,0,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,84,42,0,84,0,0,0,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,127,31,0,0,31,127,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0,31,0,0,0,31,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,42,42,84,0,0,42,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,31,31,0,31,31,127,127,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,0,0,0,0,0,21,0,0,21,0,21,0,0,21,21,0,127,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,31,63,31,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0\\n15,0,0,0,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,95,111,79,79,31,127,31,15\\n42,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,21,63,21,105,63,84,21\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,127,0,127,127,63,63,0,0\\n42,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,42,42,42,0,42,0,0,84,84,0,42,42\\n12,0,6,6,0,0,0,0,12,6,19,25,44,44,31,12,19,6,0,0,6,0,0,0,0,6,12,0,6,0,25,19,19,25,19,50,127\\n127,84,31,21,31,52,10,0,21,0,0,0,0,0,0,0,0,21,10,0,10,10,0,31,31,42,31,31,31,10,21,0,0,10,0,0,42\\n127,90,90,45,36,18,9,9,27,9,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,21,0,0,21,42,0,0,0,0,0,0,0,0,42,127,0,42,0,84,0,42,0,0,42,0,84,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,27,72,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,72\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,21,42,105,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,12,63,127,105,33,16,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,8,33,50,50,101,127,59,25,25,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,25,67,67\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,10,127\\n0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,6,0,26,26,106,127,73,33,40,40,46,13,20,53\\n0,0,0,0,0,0,0,0,0,0,38,38,50,50,63,127,127,101,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,127,72,36,36\\n0,0,0,0,0,0,127,7,0,0,14,82,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,43,127,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,127,127,31,0,31,31,0\\n127,47,79,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,21,127,42,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0\\n0,31,0,0,0,0,31,63,127,95,31,0,0,0,0,0,31,0,0\\n84,0,21,42,0,0,21,84,105,63,63,63,127,21,21,42,0,0,42\\n0,0,0,0,0,0,0,9,39,39,127,87,78,48,48,29,19,39,19\\n3,3,3,7,10,3,35,45,77,59,88,127,74,63,63,42,28,10,24,28,7,17,17,14,0,3,3,0,7,0,0,3,0,3,0,3\\n0,7,0,2,9,9,9,34,43,70,58,127,70,39,58,56,46,17,19,14,4,4,9,4,4,4,2,2,4,0,0,0,0,0,0,0\\n0,0,0,0,25,25,127,101,101,76,0,0,0,101,50,50,50,25,50,50,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,25,76,0,25,0,25,50,25,0,50,76,76,25,0,0,25,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,0,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,25,25,127,25,0,0,0,25,0,0,0,25,0,50,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,0,42,0,0,127,42,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,21,0,0,0,0,42,63,0,21,127,63,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0\\n0,21,21,0,0,21,0,0,21,84,0,127,63,0,42,42,0,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,15,15,111,111,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15\\n14,0,84,42,127,127,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,63,31,0,0,0,0,0,0,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,31,0,0,0,0,0,0,0,31,0\\n0,0,0,0,0,0,0,0,0,0,0,55,127,42,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,63,16,21,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,33,29,29,33,21,42,4,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,50,101,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,50,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,76,76,50,127,0,0,0,0,0,0\\n0,63,127,84,42,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,5,0,77,77,127,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,38,27,44\\n0,0,0,0,0,0,0,0,0,0,0,0,76,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,50,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,127\\n0,0,0,0,0,0,0,4,4,15,127,70,4,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,127,101,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,127,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,127,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,17,5,40,75,69,127,34,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,57,109,69\\n0,0,0,0,0,0,0,0,0,64,127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,5,33,66,121,127,60,5,5,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,56,14,0\\n0,0,0,0,0,0,0,0,0,0,0,59,22,37,29,29,112,127,74\\n0,0,0,0,0,0,21,0,0,0,0,0,105,63,127,63,105,127,0\\n0,21,21,21,63,127,0,21,84,42,42,0,21,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,31,31,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,13,26,127,66,33,93,106\\n0,0,0,0,0,0,0,0,0,0,0,0,1,14,44,70,101,122,127\\n0,0,0,0,0,0,0,0,0,0,0,101,127,50,76,127,50,0,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,114,88,127\\n0,0,0,0,0,0,0,0,0,31,0,15,47,0,0,31,63,31,127\\n0,0,0,0,0,0,0,0,0,0,0,9,4,13,49,22,81,90,127\\n0,0,0,0,0,0,0,0,0,0,0,1,1,1,3,7,36,90,127\\n0,0,0,0,0,0,0,0,0,31,0,31,0,31,0,0,31,0,31,0,31,31,0,0,0,31,127,0,0,0,0,0,31,0,0,0,0\\n0,0,0,0,0,0,0,0,11,0,23,23,23,23,69,103,127,115,115\\n0,0,0,0,0,0,0,0,0,21,21,42,21,0,21,21,0,42,127\\n95,127,79,79,47,31,63,15,15,15,15,15,0,0,0,0,0,15,31\\n12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,31,15,9,3,3,31,107,127\\n0,0,0,0,0,0,0,0,0,0,17,30,118,109,127,74,52,35,30,4,4,0,0,0,0,0,0,0,0,0,0,17,30,30,70,61,122\\n0,0,0,0,0,0,0,0,0,21,74,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127\\n0,0,0,0,0,0,0,0,0,31,15,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,38,88,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,91,127,56,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,63,31,0,31,0,0,0,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,63,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,1,6,27,97,127,71,23,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,25,73,126\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,91,119,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127\\n0,0,4,1,0,0,0,4,2,3,56,127,22,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,9,22,76,82,69,31,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,9,47,127,127\\n0,0,0,0,0,0,0,9,48,127,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n108,127,72,72,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,36,0,36,0,18,18,0,18,18,0\\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,84,42,42,84,21,105,21,42,0\\n127,68,68,31,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,97,74,59,11,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,18,11,7\\n127,50,101,63,50,19,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,12,31,76\\n127,79,47,0,15,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,31,0,31,0,0,31,31,47,31\\n0,54,90,90,90,54,18,127,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,95,39,71,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0\\n104,44,59,67,59,82,127,97,119,67,22,7,7,0,0,0,7,0,0\\n127,127,63,31,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,10,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,47,127,42,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,32,127,29,6,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19\\n0,0,0,0,0,0,0,0,0,0,0,0,4,8,16,16,38,59,127,55,38,21,25,0,8,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,127,54,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,34,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,36\\n127,29,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24\\n0,0,0,0,0,0,0,8,8,59,25,16,127,118,101,59,25,8,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,19,63,127\\n9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,9,22,49,127\\n0,0,0,18,0,0,18,36,127,0,0,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,127,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,84,105,127\\n127,49,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,25,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,42,21,0,0,0,42,0,84,0,0,0,0,21,105,0,0,0,0\\n42,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,127,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21\\n63,127,0,0,31,31,31,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,31,31,63,0,31,0,0,0,31,0,0,0,0,63,63\\n0,0,0,0,63,0,0,0,0,0,0,0,42,42,21,0,21,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,17,17,0,127\\n0,31,0,31,127,15,0,0,0,0,0,47,0,0,0,0,0,0,0\\n42,42,84,21,0,0,0,0,0,0,0,21,0,42,21,127,21,21,0\\n0,0,0,0,63,63,0,127,0,0,0,63,127,63,127,127,0,0,0\\n0,0,0,0,0,0,0,0,0,95,31,63,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,21,105,52,95,127\\n127,56,14,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,12,0,0,12,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,105,0,0,0,0,0,0,0,0\\n0,84,42,42,105,21,84,63,42,42,42,42,42,42,0,42,42,63,21,127,63,84,63,127,105,127,42,21,63,42,63,63,42,21,42,0,0\\n0,21,0,21,42,42,42,0,63,0,42,21,0,105,127,63,0,0,0\\n127,127,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,127,127,0,63,0,0,63,0,0,0,0,0,0\\n0,127,50,50,0,25,0,0,50,0,0,0,0,25,25,0,25,0,25,0,0,25,50,25,25,0,0,25,0,25,50,25,0,0,50,127\\n0,0,0,0,0,0,0,0,0,25,0,0,25,0,25,50,25,127,101,50,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,12,0,12,38,0,127,76,101,50,12,38,12,25,12,0,0,12,0,0,76,76,63,76,25,12,38,0,12,12,0,0,12\\n0,0,0,0,0,6,6,0,6,13,33,73,113,53,33,13,40,20,33,0,26,13,53,93,127,120,46,13,13,0,6,0,0,6,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,36,45,18,127,36,36,45,9,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,18,0,9,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,9\\n57,80,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n127,36,36,36,0,0,18,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,0,18,0,36,0,36,54\\n0,36,0,0,0,0,18,0,0,127,54,108,108,54,72,36,0,0,36\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,63,42,63,127\\n63,31,0,0,0,0,0,0,0,31,0,0,127,0,31,0,31,127,127\\n0,0,0,0,0,0,0,0,0,1,0,4,3,3,13,56,78,127,64\\n0,0,0,0,39,29,29,0,48,68,127,117,39,68,39,29,29,39,19\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,101,127,101,101,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,38,63,101,127,63,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,127,25,25,50,50,50,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,25,50,50,0,25,50,101,50,127,50,0,25,0,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,72,72,127,0\\n127,39,23,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,55,103,55,15,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15\\n97,37,22,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,22,7,14,44,127,29,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0\\n127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,127\\n123,127,42,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0\\n127,84,70,56,105,56,70,63,14,28,7,14,0,0,0,0,0,0,0,21,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,14\\n127,77,21,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,9,18,9,0,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,97,50,29,4,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8\\n50,127,12,25,0,0,12,50,0,12,12,12,0,0,12,0,0,0,0,0,0,12,0,0,0,12,38,25,38,38,114,12,25,38,0,50,25\\n0,0,0,0,0,0,0,0,0,31,31,0,63,0,0,31,0,0,0,0,0,0,31,0,63,0,31,63,127,63,31,0,0,0,0,0,0\\n63,127,87,31,23,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,7,0,0,0,7,0,0,0,0,0,0,0,23,23,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,63,63,127,63,63,0,0,63,63,63,127,63,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,63,0,0,0,0,63,63,0,0,0,0\\n63,0,0,63,0,0,63,0,63,0,0,63,63,0,63,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,63,0,63,63,0,0,0,0,0,63,127,0,63,63,63,0,0,63,0,0\\n0,0,0,0,0,0,42,42,127,0,14,14,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,127,54,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,41,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,114,101,127\\n127,127,39,7,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,127,101\\n0,95,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,31,0,0,0,0\\n31,127,0,7,7,0,0,0,0,7,0,0,0,0,0,0,0,0,0\\n84,127,84,42,42,0,42,0,42,0,0,42,0,42,42,0,0,0,0\\n63,95,31,63,63,63,63,31,0,0,0,0,0,31,0,31,127,0,127\\n84,0,0,84,42,42,127,42,84,42,42,0,0,0,0,0,0,0,0\\n0,0,0,0,18,18,36,0,0,0,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,18,0,0,0,18,0,0,18,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,58,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,98,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n11,11,27,27,38,99,127,60,77,38,38,38,27,33,11,11,5,5,11\\n0,0,76,0,0,76,0,0,0,25,127,76,76,50,50,50,25,0,25,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,65,17,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,0,12,12,12,0,0,0,0,0,0,0,0\\n127,0,31,95,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,95,31,0,0,0,0,0,0,0,0,63,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,31,63,127,63,31,95,0\\n127,56,56,49,49,7,7,21,0,14,0,0,0,0,0,0,0,0,0\\n127,63,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,127,0,127\\n127,96,52,37,24,9,9,3,0,0,0,0,0,0,0,0,0,0,0\\n127,90,29,4,4,2,2,2,7,2,2,0,0,0,0,0,2,0,2,0,0,2,0,0,0,2,2,2,0,7,0,7,2,9,29,51,73\\n0,127,95,31,0,0,0,63,0,0,0,31,0,0,0,0,0,31,0\\n76,25,127,50,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,114,127\\n127,0,0,0,0,127,0,0,0,0,0,0,0,0,63,0,127,0,63,0,127,0,0,63,127,0,63,0,63,0,0,0,0,0,0,63,0\\n0,50,25,0,0,0,25,0,0,0,76,76,25,127,50,50,76,50,25,25,0,25,50,101,101,0,76,0,50,25,0,0,0,0,0,0\\n0,50,0,0,0,25,0,25,50,25,25,50,50,76,101,0,76,0,0,50,25,76,127,50,50,50,50,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,84,0,84,42,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,114,25,38,25,38,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,25,50,76,76,127,76,50,76,0,0,0,0,0,25,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,101,50,127,25,25,25,0,0,0,25,25,0,0,0,0,0,0\\n0,0,0,0,0,0,0,7,7,14,52,37,37,44,67,74,127,22,7,0,0,0,0,0,0,0,7,22,14,14,7,0,0,29,22,37,14\\n0,0,0,0,0,0,42,84,0,127,42,84,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0\\n0,0,0,0,0,0,5,0,0,0,0,0,15,5,42,37,84,127,116\\n0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,37,63,127,79,79,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,26,127,52,5,0,0,0,0\\n0,2,4,17,9,14,27,7,22,37,54,62,27,72,127,62,34,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,127,25,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,50,25,127,76,25,50,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,76,50,25,25,127,76,0,0,50,0,25,0,0,0,0,0,0,0\\n0,1,1,0,0,3,3,10,92,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,127,127,42,84,84,0,42,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,105,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,127,0,42,42,0,84,0,0,0,0,84,0,0\\n39,107,127,78,68,68,48,29,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,29,107,58\\n63,0,31,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,95,0\\n84,127,84,84,42,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,31,31,63,39,31,31,55,15,47,47,95,127,15,31,7,0,7,15,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,29,19,117,107,127,48,68,48,29,58,19,39,29,0,58,29,19,0,19,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,0,0,31,0,0,0,95,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,29,19,127,68,19,19,9,29,39,39,19,39,29,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,105,84,127,42,63,0,21,0,21,21,63,63,21,21,0,0,21,21,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,63,0,63,63,31,0,0,0,31,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,84,84,127,127,0,84,42,42,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,42,0,42,42,127,42,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,0,0,63,63,127,127,63,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,127,0,0\\n31,31,0,63,31,127,0,0,31,31,63,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\\n84,0,0,42,84,84,127,42,84,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,32,84,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,63,90,54,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,33,127,118\\n42,21,42,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,23,80,127,115,115,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63\\n0,0,31,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,31,127\\n101,76,50,25,0,0,0,0,0,0,25,25,25,0,25,0,0,0,25,25,25,0,0,50,50,127,0,0,25,0,0,0,25,25,0,0,50\\n16,8,25,0,0,76,33,16,42,42,25,50,127,110,50,59,8,33,16,25,16,16,16,16,33,8,16,16,16,8,8,33,33,59,0,67,118\\n63,63,0,95,63,63,31,0,0,0,31,0,0,0,31,0,0,31,0,0,63,95,95,95,127,0,31,95,95,31,0,0,0,63,0,0,0\\n0,18,18,72,54,18,0,0,54,36,0,0,127,0,18,18,18,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,5,5,11,23,5,40,127\\n0,15,0,127,111,15,15,15,31,0,15,0,0,0,0,0,0,15,31\\n0,0,0,0,0,0,0,0,14,14,28,42,28,56,84,98,84,127,84\\n0,0,0,0,0,0,0,0,0,0,0,14,0,84,127,42,14,0,0,0,42,28,28,28,14,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,21,0,21,127,105,63,21,0,0,21,21,21,63,21,21,0,0,0,0,0,0,0,0,0,0,0\\n80,66,120,127,40,73,40,0,20,13,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,6,6,26,20,13,0,33,93,26\\n63,31,31,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,63,95,31,0,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,63,0,0,0,0\\n105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,31,63,127,95,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,31,10,105,127\\n68,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,39,78,87,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,19,9,39,87,68,127\\n0,0,0,0,0,0,0,0,0,31,95,0,95,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,127,63\\n0,0,0,0,0,0,0,0,0,42,127,21,84,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42\\n31,63,21,31,42,21,42,0,10,10,31,21,10,42,52,63,42,10,31,10,0,10,21,31,31,74,63,63,31,63,42,127,74,74,31,63\\n16,0,8,8,42,33,25,33,8,25,16,8,42,59,25,127,118,42,50,25,16,25,16,25,16,50,8,8,16,25,16,8,50,25,42,33\\n0,0,0,0,0,0,0,0,18,36,36,127,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,36,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,63,127,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,18,0,18,0,54,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,54,127,36,0\\n0,0,0,0,0,0,0,0,0,0,0,84,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,105,127\\n0,0,127,63,63,0,63,0,0,63,63,63,63,63,0,63,63,0,0,0,0,127,127,0,0,63,0,0,0,0,63,63,127,0,63,0\\n0,0,0,0,0,0,0,0,31,31,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,63,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,0,84,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,0,127,42,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,36,127,108,0,36,54,54,36,72,36\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,63,127,0\\n39,0,9,9,9,29,39,68,87,117,127,78,39,0,0,9,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,15,47,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,50,101\\n0,0,0,21,21,42,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,63,0,0,127,63,63,63,0,63,63,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,15,15,95,127,63\\n0,0,0,0,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,95,127,63\\n0,0,0,0,0,0,0,0,0,0,21,21,42,105,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127\\n0,0,0,0,0,0,0,0,0,25,0,127,76,0,25,101,25,0,0\\n0,0,0,0,0,0,0,0,0,0,0,38,88,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,127\\n0,0,0,0,0,127,127,127,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,63,0,0,63,0,0,0\\n0,0,0,0,0,0,0,0,0,42,105,127,105,42,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,42\\n127,127,127,0,63,0,0,0,0,63,0,0,63,0,0,0,0,0,63,0,0,0,127,63,127,0,0,0,63,0,63,63,0,63,0,63,0\\n84,42,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,84,84\\n0,0,0,0,0,0,0,0,0,0,28,56,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,56,0\\n79,60,33,14,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,7,16,22,59,84,127\\n29,4,14,29,0,0,4,14,9,9,19,9,9,14,9,14,24,19,14,43,9,9,0,4,19,14,4,29,0,53,14,14,48,14,92,53,127\\n66,57,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,30,69,127\\n63,63,6,12,0,12,6,6,6,12,12,6,25,0,0,0,12,0,0,0,6,6,0,19,0,0,12,12,6,6,31,12,12,31,38,114,127\\n127,69,28,11,5,11,0,0,11,5,5,0,5,0,0,0,5,11,5,23,5,0,5,5,0,0,0,0,0,0,0,0,0,0,5,0,0\\n25,25,9,12,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,31,25,47,127\\n127,84,84,42,0,0,0,0,0,0,0,0,0,21,84,42,63,42,42,84,42,0,21,42,21,0,21,0,0,0,0,0,0,0,21,0,0\\n0,63,31,31,0,0,15,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,63,15,31,47,127,79,111,127\\n127,72,16,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,13,24,26\\n127,69,20,4,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,2,7,12,23,32\\n127,100,40,20,6,6,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,0,6,6\\n112,127,56,70,42,42,28,28,28,28,56,28,0,0,0,0,28,28,0,0,0,14,0,0,0,0,28,14,14,42,14,0,28,56,56,84,28\\n127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,68,45,18,4,22,18,13,4,0,0,0,4,0,0,0,0,0,0,0,0,4,0,0,0,4,4,0,0,4,13,4,18,4,27,54,36\\n0,3,7,3,3,3,15,3,23,3,15,59,19,63,39,43,39,59,39,31,27,0,3,3,0,0,3,7,7,7,3,3,7,19,11,47,127\\n127,35,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,42,21,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n97,94,72,127,61,76,58,83,65,47,43,18,7,14,10,3,21,29,7,14,14,21,3,3,3,7,10,25,43,21,14,10,3,10,10,14,10,7,25,32,21,7,32,50,21,25,14,10,3,0,3,0,10,0,0,0,0,0,0,0,0,0,0,3,3,7,10,10,36,25,54,39\\n95,82,104,120,99,110,127,95,62,62,35,14,13,6,8,5,12,4,8,10,5,12,10,13,6,10,13,20,41,29,20,18,6,16,13,20,20,20,28,24,22,32,60,20,32,33,17,2,2,5,4,2,9,1,1,1,0,1,1,0,1,0,1,4,5,6,9,10,29,41,48,72\\n0,72,18,54,90,90,72,127,108,0,18,0,18,18,0,18,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,0,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18\\n0,14,56,14,28,127,14,56,70,28,42,0,0,0,0,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,0,42,127,84,84,0,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,31,95,31,63,0,31,31,31,0,0,0,0,31,63,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,127,84,84,0,0,127,0,42,0,42,42,42,42,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,63,21,127,63,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,21\\n15,15,79,0,127,47,31,15,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,15\\n42,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,39,127,68,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,63,127,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,127,81,127\\n127,59,11,7,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,84,84,127,127,84\\n127,69,34,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,31,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,63,0,127,31,0,0,0,0,0,0,63,31,127,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,21,31,10,127,95,63,95,31,31,31,0,21,21,0,74,21,10,42,21,84,95,84\\n52,18,22,0,11,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,3,11,44,127,119\\n0,42,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,84,0,42,84,42,127,0\\n127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,36,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,18,0,36,54,127,108\\n127,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n6,38,25,6,38,19,38,19,6,19,0,0,12,12,0,0,0,0,12,6,12,6,0,6,6,25,6,0,0,0,0,6,12,12,38,63,101,127,82,69,6,50,38,25,19,19,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n18,0,0,27,36,36,18,36,45,9,9,9,9,9,9,27,0,0,9,27,0,0,0,0,0,18,9,0,0,0,0,0,0,9,36,63,127,81,117,99,27,27,54,72,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,0,0,21,127,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,0,42,0,21\\n0,42,0,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,42,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,31,0,0,31,31,127,0,0,0,63,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,63,31,0,95,63,0,0,0,0,31,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,50,0,25,0,50,0,25,0,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,101,50,76,127,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,39,127,58,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,42,42,42,0,0,0,0,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,108\\n0,127,76,50,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0\\n127,113,65,35,10,9,4,3,1,1,1,1,1,0,0,0,0,1,0\\n0,127,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,84\\n93,105,63,42,38,21,16,8,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,21,8,25,21,21,63,127,110\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,19,14,58,29,63,127\\n73,61,36,38,28,14,4,0,2,0,0,0,2,0,2,0,0,2,2,0,0,2,0,4,6,2,0,0,8,8,22,40,65,49,69,118,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,63,47\\n127,47,63,111,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,79,127,111,0\\n84,63,127,0,0,0,21,0,0,0,0,42,0,0,0,21,0,0,0\\n108,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n74,68,37,10,5,0,0,5,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,5,31,68,127\\n127,49,69,34,20,17,5,5,8,0,5,0,0,0,0,0,0,0,0\\n0,127,63,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,12,76,25\\n63,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,95,0\\n6,48,60,48,54,78,127,36,84,6,6,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,24,18,30,18,24,18,54,18,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,18,12\\n77,49,60,115,127,57,49,46,15,2,2,2,2,0,0,0,2,0,0,0,0,0,0,2,0,0,4,0,0,0,0,4,2,0,4,11,17,22,37,62,80,37,53,40,28,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,17,4,6,77,37\\n127,99,52,24,9,3,1,0,0,0,0,0,0,0,0,0,0,0,0\\n127,80,41,25,21,22,24,30,23,19,13,8,7,4,4,2,2,1,2,1,1,2,4,7,8,15,18,25,28,31,31,22,23,22,23,25,33\\n90,53,22,14,5,31,8,25,36,36,36,62,67,59,62,56,70,127,107\\n30,20,5,10,5,7,2,2,2,2,0,0,0,5,2,0,2,5,0,2,12,2,0,0,0,5,7,5,2,0,0,2,2,7,15,50,127\\n42,21,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,127\\n53,60,23,16,3,20,6,10,3,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,13,6,3,36,50,76,127\\n127,39,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,71,95\\n80,11,5,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,11,0,23,11,34,23,0,127\\n127,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,31,63,63,127\\n50,50,25,57,12,6,6,6,12,25,12,19,12,12,0,19,19,0,31,0,6,0,6,6,25,12,6,19,12,6,31,6,44,57,50,82,127\\n127,127,63,48,48,41,44,33,26,18,3,7,14,11,0,7,3,11,0,11,7,3,11,11,18,22,18,56,56,52,26,59,37,56,56,70,112\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,25,127,101,101,76,25,50,0,50,0,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,50,0,76,25,127,101,101,25,25,50,25,50,50\\n0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,84,42,127,42,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,84,84,42,0,84,0,84,42\\n127,101,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,12,76\\n0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,21,10,0,127\\n127,76,50,12,63,50,0,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101\\n101,127,127,88,63,84,50,8,29,8,8,0,0,0,0,0,0,4,0,0,0,4,0,0,0,0,8,4,4,50,0,0,0,4,4,8,0,0,4,0,4,12,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,16,8,33,97,93,110\\n0,25,50,50,50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\\n108,54,54,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,9,36,54,108,127,72\\n63,127,42,10,21,0,0,0,0,10,0,0,21,0,0,21,10,0,0,10,10,0,0,0,0,0,52,0,10,0,10,10,0,0,10,10,0\\n0,47,31,15,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0\\n58,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,48,97\\n127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0\\n101,127,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0\\n0,127,0,0,0,0,0,0,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,18,0,0\\n31,31,63,95,31,63,31,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,31,0,63,31,63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,0,0\\n74,52,65,56,52,96,48,127,26,30,21,17,4,4,4,0,4,0,0,0,0,13,0,0,0,0,0,17,0,4,4,4,0,13,8,13,26,35,35,21,43,21,52,56,21,8,8,8,0,4,0,0,4,0,0,0,0,0,0,0,0,0,0,4,17,13,13,4,13,8,8,21\\n95,127,47,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,36,0,0,0,0,18,0,0,108,36,54,72,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,90,108,127,54,18,18,36,0,18,0\\n25,12,12,25,0,12,0,0,0,38,12,76,25,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,0,12,76,127,12,25,25,25,38,12,0\\n0,0,0,0,0,0,42,0,42,0,0,0,42,127,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,42,0,0,0,0,0\\n0,42,0,0,42,0,42,0,127,0,84,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0\\n0,6,0,0,0,0,0,6,0,0,0,19,25,19,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,82,127\\n0,0,0,0,0,0,0,0,0,0,18,18,0,36,72,0,36,127,18,18,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,127,50,101,127,76,50,0,25,0,0,0,0,0,0,0,25,0,0,25,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,127,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,95,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,41,127,76,37,9,4,8,11,5,1,2,1,0,0,0,0,2,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,25,127,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,111,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,15,47,15,0\\n127,63,9,9,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,56\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,76,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,0,14,37,56,47,75,127,98,98,28,56,37,47,37,9,28,18,42,37,37,9,18,42,14,65,98,122\\n84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,127,84,127,127,0,0,0,0,0,0,0,0,0,0,0\\n42,42,84,105,21,127,0,42,42,21,0,0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,14,42,127,56,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,16,67,50,127,67,25,50,33,25,25,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,98,70,127,70,42,70,14,42,42,42,28,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,7,39,79,127,63,47,7,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,1,0,4,7,30,89,127,99,72,50,25,15,10,11,3,4,1,2,0,0,0,0,0,0,0,1,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,8,50,25,12,127,88,46,38,38,8,8,8,4,0,0,0,4,0,0,0,4,0,0,0,0,0\\n0,0,0,0,0,0,0,0,23,39,127,79,19,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,5,38,69,127,96,96,33,20,4,4,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,31,10,52,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,84,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,47,15,0,0,0,0,0,0,0,0,0,0,0,31,0,15,63,31,95,127\\n0,0,0,0,0,0,0,0,27,0,27,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,25,101,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,127,101\\n0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,76,25,127,101,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,21,63,42,63,0,0,63,0,0,0,42,21,84,63,63,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,36,127,36,54,0,0,0,0,0,0,0,0,18,0,0,18,0,54,0,54,0,0,0,0,0,0,0,0,0,0,0,0\\n63,37,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,14,84,127,14,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,3,6,34,83,127,105,114,6,30,0,0,0,0,0,0,0,6,0,3,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,2,0,37,57,89,127\\n127,88,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,31,31,127,0,79,63,15,63,63,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,31,31,31,63,0,63,31,31,0,0,0,31,31,127,0\\n127,118,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n3,1,5,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,15,33,71,127\\n127,77,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n58,127,19,9,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,13,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,14,14,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,28,0,28,14,28,56,127,84,42,28,56,28\\n0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,50,38,76,127,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,0,76,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,42,84,127,42,84,21,63,42,42\\n127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,72,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,2,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,58,127\\n0,0,0,28,14,0,14,28,14,28,0,14,0,14,14,14,14,14,14,0,14,28,28,14,28,28,14,14,56,14,0,0,42,56,127,28,84\\n0,42,127,84,42,42,0,21,0,0,0,0,21,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,21,0,0\\n127,56,18,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,50,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,46,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0\\n29,48,9,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,14,48,127\\n72,127,72,18,0,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,32,15,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,74,52,31,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,127,99,27,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,36\\n0,28,14,127,70,56,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,14,42,14,28,98,112\\n31,79,31,127,63,47,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,50,25,50,127,0,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,0,0,0,0,0,0,0,0,0,0,0\\n127,47,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,31,63,31,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,31,0,31,0,0,0,0,0,63,31,0,0,0,0,63,0,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n25,50,101,50,76,127,76,0,101,25,0,50,0,25,0,0,0,0,25,25,101,25,25,76,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n21,63,127,84,84,84,84,63,84,0,21,0,0,0,0,0,0,0,0,42,21,21,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\\n127,63,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,15,0,31,0,0,0,0,15,15,127\\n112,127,42,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28\\n127,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31\\n127,74,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,21\\n127,63,36,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,27,36,54\\n127,31,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,31,0,0,0,0,0,0,0,0,31,0\\n0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,42,42,42,42,42,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,101,25,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,10,21,10,42,21,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,52,42,105,95,63,42,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,84,127,31,10,10,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,0,15,31,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,47,127,79,95,63,15,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,47,63,111,79,63,47,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,7,0,0,14,28,70,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,35,127,127,35,14,0,7,0,0,0,0,0,0\\n8,0,0,0,0,0,0,8,0,42,8,16,8,25,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,8,16,16,25,101,127,50,8,0,8,0,8,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,63,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,84,127,84,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,12,12,25,25,50,63,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,12,88,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,84,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,14,14,0,98,98,112,127,56,42,28,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,56,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,84,56,42,70,0,14,0,0,0,0,0,0\\n0,0,0,0,0,0,7,0,7,22,14,29,104,127,104,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,22,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,22,37,14,37,37,0,22,14,7,0,7,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,48,127,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,42,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,11,11,11,5,0,0,5,0,0,0,0,0,0,0,0,0,0,0,5,0,11,49,127,88,71,33,16,5,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,3,10,3,10,13,0,3,0,0,0,0,0,0,0,0,3,6,6,0,36,33,90,127,110,86,56,10,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,12,12,0,25,25,127,88,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,18,0,18,72,127,90,72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,54,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,63,63,127,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,127,127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,25,0,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,127,50,25,25,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,11,34,23,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,57,57,23,127,23,11,23,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,63,31,127,79,31,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,47,0,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,36,36,90,90,127,72,72,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,72,72,36,108,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,25,0,25,0,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0\\n0,0,0,0,31,0,0,31,0,0,63,31,31,0,63,0,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,95,31,63,63,0,63,31,31,0,31,31,0,0,31,31,0,0,0,31,0,31,63,95,63,127,63,95,0,0,0,0,0,0,0,0,0\\n0,42,0,0,0,0,0,0,0,0,0,42,42,127,42,42,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,84,84,0,84,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,42,42,0,84,42,0,0,42,0,42,0,0,0,0,0,0,0,0\\n127,90,42,16,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0\\n9,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,4,13,4,9,27,72,127,108,99\\n127,90,25,11,6,0,1,1,0,0,0,0,0,0,0,0,0,0,0\\n127,86,69,71,8,4,2,4,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,79,57,31,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,8,27,70,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101,127,50,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,6,18,53,92,127\\n127,75,25,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,1,3,5,9,16,38,39\\n127,57,23,5,5,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,11,11,5,0,5,23,23,34\\n127,66,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,58,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,4,19,63,115,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,11,27,81,92,127\\n63,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,95,63\\n78,127,87,87,39,68,0,68,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n40,127,106,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,123,66,19,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,29,127\\n127,84,54,26,9,9,8,9,7,2,1,1,1,0,0,2,1,1,3\\n0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,0,0,0,0,0,0,8,8,8,16,93,33,33,33,76,84,127,101\\n101,127,118,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,17,59,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,31,74,84,63,10,21,127\\n127,77,41,16,5,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,5,3,6,5,7,3,9,5,6\\n127,95,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,20,62,127\\n42,21,42,127,127,0,21,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,103,127\\n76,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,76,127\\n95,127,31,0,31,31,15,0,15,15,0,31,0,0,0,0,0,0,0\\n72,18,0,0,54,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,11,29,67,127\\n0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,0,95,95,63,63\\n0,23,39,31,79,127,47,47,55,0,7,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,19,127\\n72,127,127,54,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0\\n63,95,127,63,31,0,0,0,0,0,15,0,0,0,15,31,15,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,51,127\\n0,21,31,127,95,21,105,10,31,31,31,31,42,31,21,31,10,52,21,21,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n16,20,69,127,57,86,61,28,40,65,45,57,90,57,28,32,20,20,8,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,31,31,31,63,0,0,63,31,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n15,79,95,47,47,15,0,47,79,63,31,63,127,111,111,47,47,47,31,47,15,15,15,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,31,79,31,31,0,0,31,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,15,15\\n0,0,0,0,0,0,0,0,63,63,127,63,0,63,127,63,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0\\n0,0,0,0,0,25,0,0,0,25,25,76,76,127,25,0,0,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,63,31,63,127,0,127,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,0,42,84,127,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n15,47,47,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,31,15\\n0,63,127,95,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,0\\n0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,84,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,95,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,12,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,34,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,57,127,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,11,46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,0,95,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,127,84,21,42,0,0,0,0,0,0,0,0,0\\n77,77,78,92,106,127,124,85,51,37,25,16,14,6,5,4,4,3,6\\n127,98,40,26,17,15,18,24,27,21,26,25,26,24,25,10,18,18,13,13,16,19,26,39,50,49,45,44,33,25,12,18,13,15,18,30,36\\n8,2,6,2,4,2,4,6,31,33,52,41,24,35,45,89,95,127,104\\n127,47,11,4,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,8,24,49,32,51,84,127\\n127,67,28,3,3,0,7,3,5,1,5,3,3,0,1,7,3,7,9,1,1,5,11,7,5,5,7,11,0,1,3,0,0,3,1,1,22\\n127,77,22,6,2,2,1,0,4,10,4,0,2,4,1,0,0,0,0,2,4,2,2,4,9,16,13,14,22,10,13,9,5,1,2,1,0\\n127,99,30,0,3,0,0,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,87,34,19,7,2,9,7,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,3,8,46,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,127,108\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,38,127\\n127,84,21,0,0,0,0,0,0,0,0,0,21,0,21,42,0,0,21,105,21,21,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,21,42,0,21,21,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,42,0,0,63,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,3,0,0,5,5,3,5,29,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,10,2,0,0,0,0,0,2,2,38,127\\n0,31,15,0,15,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,47,0,15,127\\n127,95,95,63,63,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\\n56,28,42,42,14,28,28,0,28,0,14,0,14,0,14,28,0,0,14,14,0,0,0,0,42,14,42,42,14,28,14,0,14,28,70,127,56\\n127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,9,52,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,4,1,2,0,0,0,2,53,127\\n0,0,0,3,2,2,1,0,0,0,1,0,1,3,0,1,0,3,0,1,0,1,4,4,4,15,32,58,51,67,71,85,84,105,121,118,127\\n0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,25,0,12,12,0,0,25,0,12,38,0,12,12,76,76,50,50,50,101,88,127\\n127,114,0,88,25,12,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,112,56,28,0,0,14,28,0,14,28,42,14,42,28,56,127,70,14,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,0,0,0,50,0,0,0,25,25,76,127,25,50,76,0,25,127,101,50,127,25,25,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,0,101,25,127,101,101,50,127,76,0,101,76,25,25,0,0,0\\n0,31,63,0,0,31,63,31,31,0,31,0,31,0,0,0,31,95,127,63,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0\\n31,0,31,0,31,0,95,31,0,0,0,0,31,0,0,63,31,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,22,0,0,0,22,22,52,127,59,44,22,52,22,14,14,44,59,67,44,29,22,67,14,7,7,0,7,89,82,22,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,16,0,16,0,42,33,59,110,127,93,8,16,33,8,33,25,50,110,67,25,25,59,59,16,8,8,8,59,67,59,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,127,42,0,127,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,0,0,0,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,6,19,0,0,6,12,25,12,50,38,69,63,127,57,31,6,31,44,6\\n0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,0,0,0,0,11,11,23,34,92,127,57,46,92,69,69,11,23,11\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,84,84,84,42,42,127,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,84,42,0,0,0,42,127,42,84,0,0,0,0,84,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,80,78,22,26,7,4,1,0,0,0,0,0,0,0,0,0,0,0\\n127,53,26,9,5,3,3,5,3,0,3,0,0,0,0,1,0,0,0,0,0,0,0,3,3,0,1,1,17,7,0,1,1,0,0,3,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,25,127,101\\n127,117,49,19,4,3,2,0,0,0,0,0,0,0,0,0,0,0,0\\n127,72,42,12,12,6,0,0,0,3,0,3,0,0,0,0,0,0,3,0,0,0,0,3,6,3,9,0,6,15,0,9,6,15,3,21,6\\n101,25,101,25,0,0,0,0,0,0,25,127,76,101,25,50,101,25,50\\n127,71,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,49,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,105,42\\n0,0,0,0,0,63,127,127,0,0,0,127,0,0,127,63,0,63,0,0,127,0,0,63,0,0,0,0,0,0,0,0,63,0,63,127,127\\n0,0,31,0,31,63,0,63,127,31,0,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,63,0,0\\n76,76,25,25,25,50,25,0,50,25,0,25,0,0,0,0,25,25,25,0,0,101,76,25,50,127,50,76,25,0,25,0,0,25,25,50\\n0,63,42,0,84,63,63,0,0,21,0,42,63,0,21,21,21,0,21,21,21,21,84,42,127,105,21,0,0,0,0,105,84,21,0,21\\n0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,0,127,127,0,0,0,0,0,127,127,127,0,0,0,0,0,0,127,0,127,127\\n0,0,0,0,42,0,0,0,0,127,0,42,0,127,84,127,127,84,0,0,42,42,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n25,0,0,0,0,0,0,0,0,25,25,0,50,127,127,50,76,0,25,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,63,31,0,31,31,0,127,31,0,0,31,31,31,31,0,0,0,0\\n127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,0,52,0,21,0,0,0,10,0,10,0,10,0,0,0,0,0,0,0,0,0,10,10,0,10,21,42,10,52,42,84,127,74,52,31\\n50,50,38,0,50,25,0,0,12,0,0,0,12,0,0,0,0,0,0,0,12,0,0,0,0,0,0,50,0,50,50,63,101,114,127,101\\n21,0,42,21,63,21,127,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,42,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,69,57,127,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,127,10,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,15,0,31,47,127\\n84,0,42,0,0,0,0,0,0,0,84,127,84,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0\\n0,0,0,0,0,84,0,0,0,42,127,127,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,16,16,76,76,127,76,16,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,25,16\\n0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,15,15,0,0,0,0,0,0,0,0,0,15,15,31,31,0,0,15,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,10,10,10,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,18,72,54,72,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,54,36,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,28,28,70,70,14,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,28,127,0,14,0,0,14,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,5,33,30,55,66,53,43,10,25,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,12,30,127\\n0,0,0,0,0,0,0,0,25,25,50,50,127,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,0,127,127,63,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,36,127,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,27,127,45,9,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,9,9,27,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,10,10,0,10,0,0,31,127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0\\n0,0,0,0,0,31,0,63,31,63,0,63,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,21,0,0,0,0,0,63,0,0,0,0,105,21,105,127,42,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,28,127,56,14,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,28,127,14,98,28,28,14,14,14,14,14,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,72,72,72,36,36,72,18,18,0,54,18,36,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n36,127,72,0,0,0,18,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,18,36,54,54,127,36,18,0,0,18,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,31,0,127,127,63,95,0,95,0\\n0,0,0,0,0,0,0,0,0,0,84,63,84,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,95,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,111,127,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,12,12,127,50,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,84,127,84,42,84,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,84,127,33,84,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,15,0,15,47,0,15,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,127,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,9,48,127,78,117,9,48,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,6,0,0,0,24,72,54,66,72,127,127,90,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,95,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79\\n90,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,54,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\\n127,31,42,10,21,10,10,0,0,0,0,0,0,0,0,0,0,0,0\\n31,0,31,31,63,0,31,63,0,31,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,15,79,127,127\\n0,0,0,0,0,0,0,31,0,0,31,127,63,31,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,21,84,105,127,116,105,42,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,63,63\\n0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,127,63,42,127,105,21,0\\n0,63,127,105,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,112\\n127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,42,105,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,63,63,0,63,95,0,127,31,95,63,31,95,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,63,127,105,42,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,0,0,0,127\\n0,0,0,0,15,15,0,47,95,127,31,47,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0\\n0,0,0,0,15,15,15,0,0,0,31,95,127,31,31,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n74,37,37,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,52,44,67,127,112,74,37,22,0\\n127,95,38,12,12,25,6,0,6,19,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n36,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,36,18,54,127,0,0,0,0,0\\n127,50,25,12,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,76,127,127,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,105,127,84,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,0,0,42,21,0,42,63,127,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,50,25,0,0,25,0,50,0,127,0,0,0,50,0,25,0,0,0,0,0,0,0,0,0\\n127,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,91,68,60,10,10,0,5,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,30,25\\n42,105,0,42,0,21,0,21,21,42,21,42,0,0,21,42,0,0,0,0,0,0,0,21,0,0,0,42,21,0,21,42,127,84,42,84,127\\n127,55,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0\\n42,0,63,0,0,0,42,42,0,21,21,0,0,0,0,0,0,0,21,21,0,42,0,21,0,0,0,0,21,127,42,84,127,0,0,21,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,127,50,25,25,76,0\\n0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,33,127,33\\n63,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31\\n0,0,0,42,0,0,0,0,0,0,42,0,42,42,0,0,0,0,84,84,84,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,45,9,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,84,42,0,42,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,81,54,45,127\\n0,0,0,0,31,95,0,0,0,0,63,0,127,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127\\n0,0,0,0,0,0,0,0,25,25,0,50,127,76,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31,31,31,0,63,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,42,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,0,0,0,0,0,0,0,0,0\\n0,0,42,0,0,0,0,42,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,23,7,0,15,7,0,23,71,127,87,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,84,42,0,0,127,42,42,84,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0\\n0,0,0,0,28,14,14,127,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,61,49,34,15,18,18,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,42,52,105,127,52,95,63,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,10,0,0,5,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,5,0,21,10,0,0,0,0,0,0,0,0,21,31,89,74,127\\n0,12,101,76,50,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,101,38,0\\n127,69,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,34\\n127,0,42,42,0,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42\\n0,0,0,0,0,0,0,0,0,0,18,54,90,127,72,72,36,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0,0,36,0,36,0\\n0,0,0,0,0,0,0,0,39,127,68,78,78,58,19,39,87,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,63,63,127,63,63,63,63,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,127,63,63,0\\n0,0,0,0,0,0,0,6,20,127,120,100,46,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,14,0,0,70,127,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,21,42,127,63,21,105,21,0,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0\\n0,0,0,0,0,0,9,9,68,97,9,127,97,0,0,0,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,63,0,0,63,0,63,127,0,0,127,127,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,25,0,0,0,101,0,25,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,25,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,76,50,101,127,0,25,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,50,25,0,25,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,25,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,76,50,127,0,0,25,0,25,25,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,95,0,31,31,31,31,0,31,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,21,63,0,0,21,21,21,0,0,0,0,0,0,0,0,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,21,10,0,0,21,21,21,10,0,21,10,31,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,21,95,63,63,127,84,21,0,10,10,0,0,0,21\\n0,0,0,23,23,0,11,0,23,46,11,23,46,23,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,11,34,34,46,115,127,0,11,23,11,0,0,0,11\\n14,21,28,21,7,28,21,35,0,35,28,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,21,35,42,127\\n0,0,0,0,0,0,0,31,0,15,0,15,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127\\n0,0,0,0,0,0,0,0,0,31,63,31,63,127,127,63,63,31,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,68,127,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,21,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,18,36,127,36,54,0,0,0,0,0,0,18,0\\n56,127,56,84,14,28,56,0,42,42,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,127,127,0,0,127,63,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,127,0,63,127,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0\\n0,0,0,0,0,63,31,0,0,63,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,63,63,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,63,15,127,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0\\n0,13,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,6,26,6,10,30,30,120,127\\n0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,38,0,25,127\\n0,0,42,0,21,63,0,42,21,63,0,0,21,0,0,63,0,84,21,84,63,21,0,21,21,42,21,21,21,0,0,0,21,42,63,21,127\\n0,6,0,6,0,0,6,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,44,31,127,101\\n0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,8,15,66,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,0,0,0,21,21,0,10,21,74,74,127\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,0,0,0,42,0,42,0,0,42,42,84,42,42,84,84,0,0,42,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,29,63,127\\n0,0,0,21,21,42,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,18,18,0,54,127,36,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,74,52,24,49,21,7,10,0,3,0,0,0,0,0,0,0,0,0\\n12,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,18,24,57,78,127\\n0,0,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,3,26,30,33,46,36,36,23,56,66,127\\n28,49,21,14,0,0,14,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,14,7,21,21,14,21,56,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,21,0,63,42,42,127\\n0,0,0,0,0,0,95,31,127,0,0,0,0,0,0,0,0,31,0,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,117,111,72,45,66,33,54,45,30,21,12,21,6,6,3,3,3,0\\n127,41,19,9,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,54,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n98,127,42,7,0,0,0,0,14,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,0,63,127,42\\n127,81,38,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,63,0,0,12,0,127\\n84,127,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,63,63,63\\n127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,72,90,81,127,90,99,36,27,0,9,0,18,0,0,0,0,0,0\\n127,73,18,14,6,1,2,0,0,0,2,0,0,1,0,0,0,0,0\\n56,127,47,9,9,14,14,14,4,0,0,0,4,0,4,0,0,9,0\\n127,105,84,31,0,31,10,74,42,42,21,0,0,0,0,10,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,127,0,0,0,0,0,63,0,63,0,0,127,127,0,0,63,0,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,67,74,29,59,127,119,37,14,14,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,66,66,20,53,127,113,13,26,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,21,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,0,0,0,21,42,21,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,50,0,0,101,101,25,50,25,0,25,25,25,0,0,0,25,0,0,0,25,0,0\\n0,0,0,0,0,0,0,0,0,42,0,0,0,0,84,42,42,0,84,42,0,0,127,42,0,42,0,84,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,84,0,84,84,42,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,0,0,42,84,84,42,42,0,0,0,42,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,84,84,0,42,84,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,84,84,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,63,0,63,0,63,0,63,127,63,0,63,0,0,0,0,0,0,0\\n95,127,119,55,103,31,7,0,0,0,0,0,0,0,0,0,0,0,0\\n127,74,31,21,10,10,21,31,63,52,31,52,31,63,21,10,31,10,0\\n127,74,0,10,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0\\n111,79,119,71,127,71,55,55,71,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,19,44,127,107,88,6,6,0,0,0,0,0,0,0,0\\n40,127,80,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,84,105,127,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,72\\n0,0,0,0,0,0,0,42,0,127,84,0,0,84,84,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,42,42,84\\n127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,39\\n50,0,0,0,12,12,12,12,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,0,0,0,0,127\\n27,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,45,54,127\\n127,101,114,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,12,0\\n0,0,0,0,0,0,0,0,0,31,127,15,0,0,15,95,0,47,0,0,0,31,31,0,0,0,15,0,0,0,15,0,0,0,0,0,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,21,105,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,114,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127\\n127,47,15,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,15,111,63\\n127,63,26,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,13,15,43,91\\n63,127,15,47,15,47,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,31,31,63,0\\n46,80,46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,127,92\\n127,79,63,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,31,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,63,15,15,63,127\\n70,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,7,7,7,14,14,14,7,56,127,112\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,10,21,15,31,42,95,127\\n0,0,0,0,0,0,0,14,56,84,42,127,14,84,112,98,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,28,28,0\\n0,0,0,0,0,0,0,0,0,31,0,63,63,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,63,63\\n0,0,0,0,11,0,0,0,69,69,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,0,31,95,63,31,63,127,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,3,12,3,15,19,28,25,34,9,19,15,6,3,0,0,3,0,0,0,0,0,0,0,0,0,0,6,12,22,25,50,76,127\\n0,0,0,0,0,9,36,27,72,117,117,127,45,36,54,9,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,18,0,0\\n0,23,0,0,0,0,0,34,11,46,127,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,31,0,0,31,0,0,0,127,0,95,95,31,95,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,95,31,0,127,0\\n127,103,60,30,14,6,2,1,0,0,0,0,0,0,0,0,0,0,0\\n127,112,99,69,60,56,58,30,18,14,5,2,2,2,4,2,3,2,1,1,1,7,4,8,9,24,4,0,0,1,1,0,1,2,4,8,15\\n127,103,67,21,11,11,13,17,3,33,59,115,73,59,27,31,19,13,31\\n127,91,60,51,55,56,55,52,40,27,11,8,3,2,1,0,1,1,0\\n73,63,30,24,33,34,55,91,127,81,48,45,16,7,3,2,1,1,0,0,2,0,0,0,11,7,3,3,1,0,0,0,0,0,0,6,60\\n0,5,5,0,0,0,11,11,17,23,34,63,103,127,86,34,51,5,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,6,30,30,6,9,17,17,26,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,5,2,4,7,8,17,127\\n127,39,66,102,17,4,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,23,19,25,11,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n11,0,0,0,2,0,0,8,2,13,8,11,30,0,2,0,0,0,0,0,0,0,0,0,0,0,0,5,0,2,0,2,8,24,27,104,127\\n15,7,2,2,0,0,0,0,5,7,21,15,0,2,0,5,0,0,0,0,2,0,2,0,0,0,0,0,0,0,2,0,0,0,13,31,127\\n0,0,0,0,12,12,12,19,25,6,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,31,19,31,107,127\\n3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,18,83,127\\n0,5,5,0,0,0,0,0,0,5,11,23,17,17,5,5,0,5,0,0,0,0,0,0,5,0,23,11,0,11,11,5,0,17,28,46,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,21,84,105,84,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,38,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,9,0,9,45,54,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,3,4,3,25,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,29,58,9,97,48,127,97\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,41,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,15,0,0,0,15,31,47,47,31,63,127\\n127,46,33,29,12,21,12,25,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,21,7,3,3,3,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,92,25,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,12,16,3,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,15,31,47,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,19,13,21,7,4,3,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,21,10,0,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,6,0,60,33,93,33,127,80\\n0,21,21,0,0,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,0,0,0,0,0,21,21,0,0,21,21,0,84,42,21,0,105,63,42,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,27,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,88,127\\n127,28,7,0,35,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,23,3,0,7,3,11,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,116,127\\n39,9,9,29,9,14,4,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,39,92,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,127,50\\n42,127,63,0,0,0,0,21,0,21,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,21,21,0,21,42,105,105,42\\n127,127,47,31,23,7,23,7,15,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n23,0,0,0,0,0,0,11,11,11,11,11,46,57,0,0,0,0,0,0,0,0,0,23,11,11,23,127,57,34,23,23,0,0,0,0,0\\n1,2,3,2,3,4,8,12,29,51,98,127,88,40,11,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,18,28\\n0,0,0,0,0,0,0,15,63,79,127,127,79,63,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0\\n23,19,19,34,23,46,46,50,50,127,80,123,80,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,31,15,63,71,111,79,127,79,23,47,63,7,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,9,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,127,84,21,0,42,0,42,127\\n2,5,0,0,0,2,9,17,16,64,124,127,113,83,17,4,1,4,2,0,1,0,0,0,0,0,0,0,0,0,0,0,3,3,9,21,13\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,23,0\\n0,0,0,0,0,0,0,0,3,24,80,127,54,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,3,42,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,18,0,0,45,127\\n0,0,0,0,0,0,0,11,11,34,46,69,34,34,0,0,0,0,0,0,0,0,0,0,0,80,127,0,0,0,0,0,0,0,23,34,23\\n0,0,0,0,0,0,0,0,7,4,14,12,59,72,102,127,39,29,19,27,22,4,2,2,0,2,2,7,7,12,14,22,39,37,32,12,17,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,2,4,0,0,7,7,2,0,4,0,0,0,0\\n0,0,0,0,0,0,0,0,9,13,13,26,107,87,91,127,74,45,26,16,29,0,0,3,13,13,22,3,9,6,22,3,3,13,13,6,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,6,0,3,0,6,9,6,9,0,3,0,3,0,0,0,0\\n0,0,0,0,0,0,0,0,0,63,63,47,31,63,15,15,47,0,47,127,79,15,47,0,0,0,0,0,0,15,0,15,0,0,0,31,31,31,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,0,79,0,0,0,0,15,127,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,0,3,2,2,5,11,127,18,17,3,1,0,1,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,2,8,14,127,18,8,4,1,0,1,1,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,24,127,120,20,44,13,3,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,101,101,50,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,18,127,18,90,0,36,0,0,0,0,18,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,56,28,0,14,127,127,14,14,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,57,117,127,39,21,20,8,2,2,2,0,0,3,4,1,1,1,2,1,2,6,9,9,23,32,15,6,1,0,1,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,2,5,5,50,127,116,36,27,24,9,5,1,2,2,4,8,3,3,1,1,1,3,1,3,7,30,111,83,23,16,7,2,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,31,127,15,15,47,0,0,0,15,0,0,0,0,0,15,0,0,47,63,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,0,84,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,29,47,127,39,13,1,7,1,3,5,1,9,25,15,7,0,1,1,1,7,3,17,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,15,43,127,102,24,9,0,21,3,3,6,6,21,24,21,18,0,0,3,3,0,6,6,3,3,9,0,0,0,0,0,0,0,0,0,0,0,0,0\\n1,0,0,0,0,0,1,3,7,12,36,127,31,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,16,13,7,3,2,1,0,0,0,0,0\\n0,0,0,0,0,0,1,1,10,14,37,127,31,11,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,14,10,5,3,1,0,0,0,0,0,0\\n31,31,0,0,0,63,0,0,0,31,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,127,95,63,0,0,0,0,0\\n0,0,0,0,31,0,0,31,31,0,63,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,0,31,127,0,0,0,0,0,0\\n2,2,3,0,0,1,0,3,12,21,70,127,42,16,4,2,4,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,9,10,6,0,0,0,2,1,1\\n0,2,8,5,2,2,8,17,20,56,76,127,79,26,5,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,20,35,0,0,11,2,2,2,5,2\\n0,0,0,0,0,1,0,1,7,32,127,115,30,7,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,1,1,1,0,0,0,0,0,1\\n0,0,1,0,1,3,2,7,10,19,54,127,58,14,2,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,5,11,4,3,2,2,0,0,0,1,0\\n0,0,0,0,0,63,0,0,0,127,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,63,127,84,84,42,21,84,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,15,31,127,31,15,15,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0\\n4,8,1,0,4,11,12,17,25,20,31,103,127,118,19,9,2,1,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,4,10,4,2,0,0,0,0,0\\n2,3,3,1,2,2,5,5,18,35,35,66,127,108,26,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,6,14,17,2,0,0,2,0,0\\n127,21,42,42,42,42,0,0,0,0,42,63,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\\n23,23,11,0,0,0,0,11,0,0,57,127,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,11,0,0,11,23,0\\n0,0,0,0,0,0,0,0,0,21,21,21,21,42,127,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,72,127,72,54,90,72,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,54,72,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,105,105,42,21,21,0,0,0,0,0,0,0,0,0,0,0,21,42,21,42,84,63,21,63,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,9,0,14,83,127,83,9,0,0,0,4,0,0,0,0,0,0,0,0,0,4,14,24,39,4,19,29,4,0,0,0,0,4,0,0,0,0,0\\n0,0,10,5,5,5,15,5,55,127,127,66,15,10,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,20,0,0,0,15,40,25,20,25,0,0,5,0,0,0\\n0,7,0,0,7,0,21,0,56,119,127,56,14,28,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,0,7,7,0,42,63,21,0,0,0,0,0,7\\n0,0,0,0,25,50,76,76,50,127,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,25,0,0,0,0\\n0,0,0,0,0,0,0,0,18,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0\\n0,0,0,0,0,0,31,0,15,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0\\n0,0,2,0,0,0,0,0,0,4,14,42,72,89,92,82,14,9,2,2,2,2,0,0,0,0,0,0,2,4,4,19,24,74,87,127,42,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,14,4,7,14,4,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,15,31,89,87,76,42,15,5,2,5,7,0,2,0,0,0,0,0,0,5,7,31,50,79,113,127,68,39,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,10,5,13,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,0,50,25,0,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,26,43,127,52,0,4,2,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,59,64,127,57,0,0,2,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,111,127,31,0,0,0,0,0,0,15,0,15,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,31,63,63,95,95,127,47,31,15,0,0,0,0,0,0,0,0,0,0,0,47,79,111,111,127,63,15,31,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,9,19,9,117,87,68,68,39,9,9,9,0,9,0,0,0,9,0,0,0,0,0,0,39,39,127,87,19,9,39,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,127,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,1,0,1,1,4,17,42,127,32,8,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,7,6,4,2,0,0,0,0,0,0\\n0,1,1,0,1,0,1,2,9,18,41,127,44,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,12,2,2,3,0,0,0,1,0,0\\n0,0,0,0,0,10,0,0,84,63,31,95,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,10,0,0,0,10,0,10,0\\n0,0,0,0,0,7,0,37,29,97,52,127,74,22,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,7,14,7,0,0,0,22,0\\n0,0,0,0,0,0,0,0,0,0,0,31,95,63,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,63,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,50,101,127,50,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,101,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,76,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,7,0,7,22,37,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,74,127,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,84,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,63,42,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,9,58,127,107,58,39,9,0,9,0,0,0,0,0,0,0,0,0,48,0,29,0,9,9,9,9,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,27,45,108,127,81,36,27,0,9,0,0,0,0,0,0,0,9,0,0,0,18,0,18,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,72,127,99,117,108,54,63,18,9,0,0,0,9,18,0,9,0,0,0,0,9,9,18,63,27,18,0,18,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,6,40,60,100,127,66,60,46,13,6,0,0,6,13,20,6,0,0,0,0,0,0,13,0,40,20,26,40,33,33,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,12,12,127,63,0,0,0,0,0,0,0,0,12,25,12,12,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,23,0,11,127,57,11,0,0,0,0,0,0,0,11,23,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,18,27,45,99,45,45,27,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,127,27,18,0,9,0,0,0,0,0\\n0,0,0,0,0,0,0,19,9,127,117,48,9,9,9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,39,58,48,9,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,127,63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0\\n0,0,0,0,0,21,0,21,127,105,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n105,56,49,21,7,10,5,10,3,3,7,8,15,12,10,35,26,49,37,79,75,127,104,79,63,42,24,35,12,0,1,0,0,0,0,0,0\\n0,0,7,0,7,0,0,0,0,0,0,15,0,7,7,7,47,71,71,127,87,15,55,15,0,0,7,0,0,0,0,0,0,0,0,0,0\\n127,63,31,95,0,31,0,0,0,0,0,0,31,31,0,31,0,0,95,0,31,63,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0\\n8,0,0,0,1,0,0,0,0,4,7,10,1,8,13,33,45,65,127,86,102,100,55,55,40,20,13,8,7,0,5,0,0,1,2,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,12,127,63,38,50,12,0,12,0,0,12,12,0,0,0,0,0,0,0\\n0,0,0,0,0,0,12,0,0,0,0,50,25,25,63,63,63,101,127,38,63,0,12,0,38,12,0,0,0,0,0,0,0,0,0,0,0\\n33,47,58,127,58,24,15,8,5,8,4,0,3,5,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n4,20,11,52,127,68,9,4,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,21,0,127,105,21,0,0,21,0,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n58,57,82,127,75,36,32,28,8,19,10,3,7,12,7,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n9,29,68,53,127,43,24,58,39,19,9,0,29,34,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n61,65,127,105,65,39,21,61,8,4,8,30,17,0,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,9,9,11,17,43,65,127,85,68,21,5,14,3,7,5,3,8,9\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,16,5,5,22,38,16,127,60,44,27,27,0,16,11,16,11,22,11\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,1,0,1,9,31,83,127,52,12,5,2,0,0,1,0,0,2\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,127,63,63,0,0,0,95,0,0,31,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,15,9,18,17,67,127,103,79,51,70,54,47,63,47,39,26,15\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,6,0,33,46,33,26,40,60,127,127,40,0,6,6,13\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,22,29,29,89,89,74,127,112,89,52,29,67,44,22,7,22,44,89\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,95,127,0,31,0,31,31,0,31,0,0,0,0\\n127,81,54,45,18,9,27,0,0,0,0,0,18,18,18,18,18,36,127,81,90,72,90,108,81,27,9,9,0,27,9,0,0,0,0,0,0\\n0,0,0,7,0,0,0,7,0,7,7,7,0,7,0,7,44,44,89,127,119,89,67,59,44,22,7,0,7,7,7,0,0,0,0,0,0\\n127,101,76,25,0,0,0,12,12,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,36,36,9,9,9,9,0,0,0,0,0,0,0,0,9,0,18,18,18,54,36,45,0,27,0,0,0,0,9,9,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,3,3,0,3,6,9,31,53,85,107,50,85,127,50,31,12,3,3,3,0,0,0,0,0,0,0\\n48,39,83,92,122,127,53,4,9,19,0,4,9,4,24,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,127,127,31,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,42,127,105,77,21,49,21,28,7,35,7,0,56,28,14,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,31,31,31,95,127,63,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,0,0,63,127,127,21,42,127,42,63,63,84,21,21,84,127\\n0,0,0,0,0,25,0,0,0,0,0,0,0,25,0,0,50,127,25,76,0,0,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0\\n127,46,17,0,11,5,0,5,0,0,5,0,11,5,5,0,0,5,11,34,34,28,40,11,5,17,5,5,0,0,0,0,0,0,0,5,23\\n87,61,46,17,21,7,29,4,9,7,0,4,9,7,9,17,48,31,53,70,80,127,119,87,39,2,0,4,0,0,0,0,0,0,2,0,0\\n0,0,0,0,0,63,0,0,31,0,0,0,0,0,127,127,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,38,22,9,6,12,22,41,28,31,12,3,12,6,12,6,3,3,0,22,41,127,88\\n0,0,2,0,1,1,2,1,0,0,2,2,4,15,27,72,117,127,122,109,108,74,39,20,10,0,0,0,0,0,1,0,0,0,0,0,0\\n25,0,50,76,127,38,38,38,12,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,74,127,10,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n4,24,78,127,85,43,28,10,6,10,8,6,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,56,70,127,56,28,28,0,14,0,0,14,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,6,6,0,6,38,127,95,25,19,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,12,50,50,127,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,14,0,14,28,77,84,127,56,42,0\\n127,31,47,31,15,15,31,0,0,15,15,15,0,31,47,0,0,0,0,15,15,31,15,15,31,0,0,15,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,29,9,19,68,97,29,127,48,39,29,39,39,58,117,117,78,97,19,0,0,39,0,0,0,0,0,9,0\\n127,89,67,46,15,12,8,3,4,1,0,0,0,0,0,0,0,1,2,2,5,6,8,6,8,8,5,4,2,2,4,0,1,1,1,1,1\\n42,127,21,63,21,0,0,0,0,0,84,0,0,0,0,0,0,0,84,0,0,0,21,21,0,21,0,0,0,0,0,0,0,0,0,0,0\\n127,100,82,89,48,37,48,33,29,11,7,0,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,11,0,22\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,7,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6,3,13,127\\n127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,63,127,0,127,0,63,0,0,0,0,0,0,0\\n95,15,127,47,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n15,15,15,15,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,5,5,31,74,105,116,127,58,68,26,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,0,0\\n7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,22,14,52,74,127,97,74,59,37,52,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,22,0,0,14,14\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,21,105,127,42,84,21,63,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,127,31,0,95,0,0,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,127,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,8,0,110,127,16,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,33,127,8,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,57,127,0,0,0,0,0,0,0,0,0,0\\n35,23,67,127,27,75,39,19,7,31,23,23,7,7,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,3,11,11,7,35,35,15,27,111,59,35\\n26,15,29,108,127,47,26,13,0,7,7,0,7,10,21,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,0,5,5,7,13,18,5,29,39,29,37\\n76,25,76,25,76,0,25,0,25,0,0,25,76,127,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,25,25,0,25,25,50,25\\n101,25,0,101,76,0,50,0,0,0,25,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,25,50,0,0,0,0,25\\n0,0,0,0,31,127,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,31,0,31,0\\n0,0,25,127,0,50,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,0,0,25,25\\n5,21,74,84,127,52,5,26,0,15,10,10,5,5,15,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,5,37,52,63,15\\n14,52,44,127,89,67,82,22,14,37,44,7,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,14,22,89,97,22,37\\n95,0,31,127,31,95,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0\\n42,0,84,84,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,42,84\\n0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,80,127,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,10,31,31,10,52,127,84,63,74,74,31,21,0,31,42,63,31,0,0,0,10,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,42,127,42,63,21,21,63,21,21,84,63,127,63,63,21,21,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,63,63,42,21,21,0,21,127,42,63,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,28,14,84,14,14,0,56,84,127,98,0,0,0,14,0,14,14,14,28,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,19,19,107,127,58,97,68,48,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,19\\n50,0,0,0,12,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,88,63,114,88,127,88,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,31,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,101,50,127,76,25,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,81,0,5,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,127,54,0,4,0,0,0,0,0,0,0,0\\n38,25,63,50,88,25,12,12,25,0,38,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,127,63,50,63,63\\n12,25,88,127,114,63,38,12,12,0,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,88,50,114,12,63,63,38\\n7,0,87,127,87,47,39,23,7,0,31,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,55,23,39,23,63,7\\n25,25,63,76,63,12,127,12,0,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,63,50,76,76,38,12\\n0,14,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,14,0,42,42,127,98,127,98,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0\\n0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,14,98,70,98,84,127,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,42,42,42,0,0,0,0,0,0,0,42,127,0,42,127,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,0,63,0,0,31,0,31,63,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,28,14,56,0,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,47,0,15,15,47\\n22,19,10,9,6,10,9,10,12,17,21,27,39,52,72,83,109,125,127\\n0,0,0,0,1,1,1,0,1,2,1,3,7,14,15,41,75,100,127\\n81,28,19,10,7,5,7,4,5,6,14,10,13,26,25,38,48,60,98,127,118,69,47,24,13,7,3,2,1,1,0,0,0,0,0,1,0\\n108,18,0,9,0,0,0,0,0,0,0,0,0,9,27,72,108,127,63,36,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n3,0,0,0,0,0,0,0,0,0,0,0,1,4,7,19,37,71,127\\n0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,19,6,44,127\\n20,39,82,127,68,54,82,66,24,11,3,1,5,15,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,19,58,127,127,68,19,39,9,0,9,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,16,39,18,13,10,20,28,45,73,81,78,127,118,90,58,47\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,24,69,32,32,12,32,32,81,94,127,98,90,61,24,32,24\\n23,62,42,59,51,65,47,57,108,72,69,67,67,97,82,112,127,115,98\\n6,4,4,4,5,3,2,4,3,7,14,23,18,16,21,28,52,94,127,77,47,50,33,21,14,10,9,4,5,2,0,0,0,0,0,0,0\\n0,0,0,0,0,0,1,0,3,2,17,61,91,109,25,22,39,127,103\\n127,14,10,14,0,0,0,17,31,123,21,7,21,17,35,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,71,88,29,4,42,16,12,46,46,21,16,16,25,50,127\\n127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,127\\n21,10,0,10,0,0,0,127,105,105,74,21,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\\n0,0,0,0,0,0,0,0,0,0,0,23,0,46,46,80,127,46,34,34,46,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,46,46,57,103,80,46,46,11,11,0,0,0,0,0,0,0,0,0,0\\n127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,45,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0\\n0,0,0,0,0,0,0,0,12,0,12,12,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,95,0,0,0,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0\\n0,0,63,127,127,63,0,0,127,0,0,0,63,0,0,127,0,63,0\\n127,68,63,52,52,21,15,15,26,37,5,10,0,5,10,26,0,10,10\\n127,83,105,109,76,10,2,4,2,4,0,0,6,2,4,2,10,6,8,4,21,8,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,9,9,0,19,9,48,19,117,127,68,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,98,127,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,127,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,127,90,36,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,31,31,0,0,31,31,127,31,31,31,127,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,9,0,0,9,0,19,19,127,19,78\\n71,71,44,40,10,27,35,40,82,82,120,112,127,103,88,86,71,46,38,31,44,21,21,12,4,2,4,4,6,0,0,0,2,0,0,0,0\\n90,54,18,9,9,0,0,0,0,0,0,27,18,18,9,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,11,39,21,35,75,49,54,39,72,94,101,105,75,127\\n0,31,0,0,31,31,0,63,0,63,95,31,95,95,0,0,0,127,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,7,22,14,0,0,0,22,104\\n0,42,28,0,0,28,42,28,14,14,14,14,56,56,84,127,28,70,56,14,14,14,0,28,0,28,0,0,14,42,0,0,0,0,0,0,84\\n101,127,50,0,25,0,25,0,0,12,12,12,0,0,0,12,0,0,0,25,12,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,31,31,31,0,0,0,0,95,63,127,63,63,63,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,14,0,14,0,0,0,0,14,0,0,0,14,28,127,14,0,42,14,0,0,0,0,0,0,14,14,28,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,50,50,0,101,0,25,127,25,50\\n0,0,0,0,0,0,0,0,0,0,0,7,71,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,7,7,0,0,7,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,18,9,0,0,9,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,8,25,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,9,0,18,127,36,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,0,63,0,127,63,0,0,0,0,0,0,0,0,31,31,31,31,0\\n127,63,81,90,36,36,27,36,9,9,9,0,0,0,0,0,9,0,36,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,47,15,63,127\\n0,0,0,0,0,31,31,31,63,127,95,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,25,0,12,0,0,0,0,0,12,76,38,88,127\\n0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,0,63,63,127\\n0,7,5,4,4,5,8,10,14,15,35,28,62,73,105,122,127,112,121\\n4,9,9,11,9,2,11,16,19,23,14,19,19,21,59,31,67,71,64,76,127,112,62,14,28,11,11,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,4,2,9,20,49,92,127\\n0,0,0,0,0,0,0,0,5,5,0,0,11,11,22,127,66,115,66\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,90,108,127,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,28,56,28,0,0,56,28,14,0,0,14,0,0,0\\n0,0,0,0,63,127,21,21,84,42,42,63,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n36,127,0,18,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,18,54,54,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,12,88,101,127,63,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25\\n0,0,31,31,95,0,63,63,127,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,15,0,0,0,0,0,0,0,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,0,15,15,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,0,31,0,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,31,0,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127\\n127,62,25,4,3,4,2,3,2,2,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,2,0,4,5,4\\n127,45,11,3,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,7\\n127,72,25,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0\\n127,39,31,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,50,127,88,76,12,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,127,21,0,21,0,0,21,0,0,0,0,21,0,0,0,0,0,0,21,63,127,127,105,105,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,76,127,76,0,76,0,25,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,23,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,31,127,71,55,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,18,9,9,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,9,0,127,127,45,0,9,9,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,127,105,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,52,31,0,0,0,0,0,0,0,0,0,0,0,10,10,0,0,0,10,0,31,127,63,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,29,39,0,0,0,0,0,0,0,0,0,0,0,9,19,0,0,0,48,0,58,127,19,9,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,84,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,50,25,50,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,127,63,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,12,127,76,101,0,0\\n0,4,6,4,6,10,12,24,14,24,14,51,20,49,30,26,20,30,20,10,14,16,8,4,0,4,6,2,2,0,10,8,10,10,32,98,127\\n127,31,0,23,7,23,7,15,7,15,31,47,47,31,15,15,7,15,15,39,15,23,7,0,0,7,0,0,0,0,0,7,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,8,5,0,8,25,95,127,107,36,5\\n127,0,63,31,0,31,127,31,0,0,31,31,0,0,0,63,31,31,63,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,88,60,36,53,32,24,17,20,24,26,26,36,31,28,22,27,28,47\\n109,127,63,33,23,22,16,2,7,4,2,7,6,3,7,6,8,16,14,6,8,2,17,9,4,1,1,0,0,1,1,0,0,0,0,0,0\\n0,5,5,0,0,0,0,0,0,0,5,20,20,30,127,81,111,81,20\\n11,11,2,0,2,0,2,5,2,0,0,0,5,11,14,34,86,103,127\\n50,50,50,25,0,0,0,0,0,0,0,25,0,25,127,76,101,101,101,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,76,76,127,50,25,101,25,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,29,28,29,7,26,31,61,68,82,24,37,51,70,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,63,31,63,0,95,127,31,95,0,0,0\\n78,105,105,90,58,68,105,95,75,58,46,58,65,63,41,43,61,75,127\\n32,40,20,20,15,7,3,2,17,27,30,13,17,19,24,21,35,27,43,46,51,78,66,64,95,127,106,92,74,45,23,6,0,0,0,0,0\\n0,0,0,0,0,2,2,5,21,27,62,83,70,127,56,62,51,56,32\\n39,39,0,9,9,48,68,78,127,97,9,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,10,1,0,16,85,127,90,84,43,15,6,25,62\\n127,34,11,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,0,0,0,0,0,0,0,5,5,0,0\\n0,0,0,14,0,0,0,0,0,4,0,0,0,0,0,4,9,19,19,19,4,14,14,4,9,9,9,0,4,14,24,24,29,58,68,48,127\\n127,13,12,2,1,3,1,8,13,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,23,55,127,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,84,42,127,84,105,63,63,0,42,21,42,21,0\\n127,63,105,21,21,0,0,0,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,105,21,84,42,21,42,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,105,0,0,21,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,21,21,84,21,0,42,0,0,0,0,21,0,21,0,0,0,0\\n0,0,0,0,0,25,0,0,12,0,12,12,0,0,0,12,0,0,50,63,76,101,127,76,50,114,127,50,76,12,12,38,50,88,25,63,0\\n11,11,3,3,11,41,65,127,26,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,19,19,44,19,6,6,12,6,50,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,127,50,25,25,0,127,0,50,0,0,0\\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,10,10,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,42,127,42,21,84,42,0,0,21,0,0,0,0,42,42,21,0,42,42\\n0,0,0,0,0,0,0,4,0,0,4,0,4,0,4,9,24,34,24,43,53,127,39,68,9,4,4,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,2,0,2,33,127,64,47,38,7,16,7,9\\n0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,0,0,0,127,0,95,95,95,63,31,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,38,63,76,50,114,38,50,0,0,0,0,0,12,0,0,0,0,0,0\\n0,0,9,19,19,68,78,39,107,97,127,68,58,9,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,48,58,0\\n0,13,0,6,26,46,60,60,40,73,127,73,53,33,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,33,33,80\\n0,0,0,0,0,0,0,18,18,36,0,54,36,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,72,127,72,18,0,0,18,0,0,0,0\\n0,0,0,46,34,0,0,11,57,46,46,115,11,46,0,11,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,23,127,57,11,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,127,0,84,42,84,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,95,0,0,0,31,0,0,0,0,0,0,31,31,31,0,63,127,63,31,95,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,36,18,0,127,108,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,50,25,0,25,0,76,127,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,50,50,127,0,25,25,0,25,25,0,0,0,50,0,25,25,0,50,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,63,0,0,63,0,127,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,63,63,0,0,63,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,127,127,0,127,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,63,0,63,0,0,0,0,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0\\n0,0,50,25,0,25,25,0,25,0,25,25,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,127,25,0,0,0,0,0\\n0,0,12,0,38,0,50,50,127,12,0,0,0,0,25,0,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,63,88,12,50,0,0,12,0,0\\n56,28,14,14,0,0,0,0,28,14,0,0,0,0,42,56,127,112,56\\n127,45,90,90,18,0,27,9,27,0,18,0,9,0,9,9,0,9,0,27,0,36,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,18,0,18,0,36,72,90,127,90,127,0,0,0\\n127,105,21,0,31,10,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,7,0,15,15,39,79,79,55,127\\n0,0,0,0,0,11,0,0,23,11,0,5,17,17,98,51,51,51,17,98,127,40,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,56,42,84\\n0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0\\n84,28,14,35,49,35,63,63,49,84,91,63,98,84,84,91,35,127,112\\n127,63,76,0,12,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,38,25,0,0,12,0,0,0,12,0,0,12,0,25,38,38,101,127\\n39,58,58,58,43,34,14,9,48,4,14,34,24,14,39,43,87,107,127\\n80,127,80,66,46,13,20,20,0,0,0,0,20,6,6,20,33,53,33,46,53,73,26,26,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,25,0,0,25,25,25,50,127,50,0,101,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,63,0,0,127,63,0,127,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,0,25,76,127,50,25,0,25,0,25,25,0,0,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,42,0,84,42,42,0,0,84,0,42,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,95,63,127,63,31,63,63,0,31,0,0,0,0,0,0,0,0,0,0,0\\n0,31,31,31,127,63,0,31,127,63,31,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,84,127\\n0,0,0,0,0,0,0,0,0,0,0,50,12,12,12,50,38,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,127,58\\n5,0,2,0,0,14,14,19,31,107,112,127,59,67,16,19,2,14,2,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,2,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,25,0,0,25,0,25,0,25,50,50,127,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,42,127,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,0,11,60,127,66,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,53,127,100,20,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,15,0,0,63,127,47,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,21,0,0,63,63,0,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,127\\n0,0,0,0,0,0,0,0,84,42,42,42,0,42,127,0,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,21,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0\\n15,7,0,7,0,7,0,7,0,0,7,7,0,23,23,23,63,127,15\\n0,0,0,0,0,0,9,0,0,0,9,0,0,0,9,0,19,29,39,127,127,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,105,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,5,127\\n0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,7,15,0,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,23,127,15,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,111,127,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,9,0,0,127,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,90,127,54,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,15,7,87,23,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,119,127,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,0,127,84,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,84,127,21,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,76,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,21,10,10,63,42,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,95,127,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,6,36,30,24,0,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,127,72,12,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,50,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,0,0,0,0,42,0,42,42,0,0,0,0,42,0,0,0,0,0,0,0,127,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,2,11,24,44,30,55,127\\n0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,28,42,37,51,127,98,32,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,38,127,110\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,0,42,84,84,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,108,127,54,18,72,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,11,0,0,0,34,23,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,46,127,80,11,0,11,0,11,0,0,0,0,0,0,0,0,0,0,0,11,23,11,92,80,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,14,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28,56,28,28,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,28,42,56,127,14,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,23,46,127,57,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,23,115,127,46,11,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,11,34,127,23,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,115,127,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,23,23,15,15,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,15,39,63,127,31,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,28,14,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,28,0,42,42,56,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,15,0,0,0,47,63,15,15,47,127,31\\n0,0,0,0,0,42,42,0,0,0,0,0,0,0,21,63,0,21,42,127,105,63,105,0,21,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,10,21,15,52,79,52,89,127\\n0,12,0,0,0,0,0,0,0,12,12,12,12,0,12,0,38,101,127,63,38,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,44,127\\n0,0,63,31,31,0,0,0,0,0,31,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,9,0,0,0,58,0,58,127,19,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,31,0,127,0,95,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,0,31,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,105,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,127,127,0,84,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,84,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,90,68,23,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,11,127,99,58,28,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,25,127,88,55,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,39,127,87,51,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,18,36,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,47,63,31,127\\n0,0,0,0,0,0,0,0,0,0,0,3,10,13,23,23,20,60,127\\n0,18,0,18,18,36,36,18,54,0,127,108,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72\\n0,0,0,0,0,0,0,0,25,25,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,127,50,25,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,5,25,15,15,30,81,60,127,45,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,5,0\\n0,0,0,0,0,0,0,0,18,72,72,127,36,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,42,42,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,84,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,36,54,54,54,18,0,18,36,0,0,0,0,0,0,0,0,0,0,36,54,127,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,63,31,127,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,63,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,24,4,9,0,0,0,0,4,29,107,127,34,4,0,9,4,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,15,0,5,0,0,0,5,31,116,127,63,10,5,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,17,127,84,21,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,52,127,45,7,0,0,0,0,0,0,0,0,0,0,0\\n9,0,0,0,0,0,0,0,0,4,9,127,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,4,0,0,0,0,0,0,0,0,0\\n5,0,5,5,0,0,0,0,0,5,20,127,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,10,127,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,10,0,0,0,0,0,0,0,0,15,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,63,127,63,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,31,31,63,31,95,127,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,0,127\\n0,0,0,0,0,0,0,0,0,63,0,127,95,0,127,127,0,95,127\\n0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,63,63,63,63,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,6,6,0,12,6,12,12,12,24,18,36,90,127,48,120\\n127,21,42,42,21,21,21,42,0,0,21,0,0,0,0,42,21,21,0,21,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,50,0,101,25,0,0,0,0,25,127,76,76,76,50,0\\n0,0,0,0,0,0,0,0,0,0,3,7,7,14,22,33,52,82,127\\n95,15,0,0,0,0,15,0,0,0,0,0,0,0,31,15,47,127,63,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,127,69,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,114,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,78,127,84,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,67,127,73,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,42,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,127,19,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127,50,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,31,95,127,15,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,0,0,0,0,0,0,0,63,127,79,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,127,87,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,78,9,9,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,12,0,0,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,105,63,84,0,0,0,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,71,55,31,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,15,7,15,0,0,0,7,95\\n127,67,56,33,7,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,15,31,31,15,127,31,63\\n127,91,31,14,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,4,0,0,2,14,2,47,79,79,59,43,6,4,0,4,0,2,0,0,0,0,0,4,0,2,2,4,0,2,16,20,36,69,65,16,12,2,0,0,2,2,0,0,0,0,0,2,0,0,0,4,8,24,98,127,57,22,6,2,0,2,0,4,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,6,27,77,127,94,29,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,6,10,30,29,19,14,5,0,1,0,0,0,0,0,1,0,0,0,0,2,2,3,12,52,91,93,62,33,13,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,58,9,127,9,9,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,10,42,0,10,10,10,0,10,0,0,0,0,0,0,0,0,10,0,21,63,52,127,31,10,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,18,127,54,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,127,50,25,0,0,0,0,25,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,127,39,0,0,0,0,9,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,16,59,76,127,93,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,42,76,25,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,2,15,43,42,16,2,5,2,0,1,1,0,0,0,0,0,0,0,0,0,0,4,7,42,127,63,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,95,0,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,0,12,38,114,127,88,76,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,0,12,76\\n0,0,0,0,0,0,0,0,0,0,31,0,31,0,31,31,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,95,127\\n127,55,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,68,18,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,57,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,69,17,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,31,55,85,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,3,10,42,105,127,105,113,59\\n0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,1,8,17,31,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,30,38,50,123,127,107\\n127,85,28,8,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3\\n96,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,46,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,51,79,127,95\\n127,48,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,67,31,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,27,25,40,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,72,127,36,0\\n127,80,27,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,12,39,127\\n127,77,31,11,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,6,15,28,39\\n127,86,39,16,7,2,4,2,2,2,1,0,1,0,0,0,1,0,0,0,1,1,0,0,2,0,0,0,0,0,0,0,2,5,19,55,109\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,6,17,2,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,9,6,29,127\\n127,91,57,38,27,23,18,12,11,8,8,6,3,2,3,4,4,4,3,4,3,3,4,3,6,5,6,5,5,6,5,3,2,4,5,5,5\\n56,127,123,56,84,67,45,42,28,56,24,49,28,77,49,35,52,42,31,31,24,17,28,7,14,10,10,3,0,14,10,0,0,3,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,24,24,45,20,4,16,53,127,106,20,57,106,81,122,110,90\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,11,11,34,127,80,46,34,23,46,57,57,69,46\\n127,117,98,119,68,72,35,30,11,14,7,7,7,18,16,9,11,11,23,16,18,21,35,18,11,9,9,0,4,23,7,7,14,2,7,9,4\\n0,0,0,0,0,0,0,0,10,10,52,127,95,63,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,39,127\\n0,0,0,0,0,11,11,23,11,0,11,57,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,57,92,92,46,11,0,11,0,0,0,0,0\\n0,0,0,0,0,10,0,10,0,0,31,21,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,127,95,21,0,0,10,0,0,0,0,0\\n0,0,0,0,0,15,0,0,0,0,15,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,95,127,15,0,0,0,0,0,0,0\\n0,0,0,0,0,42,0,0,0,0,84,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,44,6,44,127\\n0,0,0,0,0,0,0,0,0,14,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,14,0,0,0,0,0,0,0,0,0,0\\n127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18\\n105,127,42,21,21,0,21,10,0,0,0,21,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,9,127\\n127,7,15,7,7,0,7,0,0,0,0,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,2,1,1,18,63,117,127,113,72,41,40,25,21,43,33,20,14,5,2,4,0,0,6,0,9,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,8,8,2,1,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,8,30,83,127,92,57,33,41,16,15,6,6,3,4,1,1,0,0,4,3,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,2,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,14,14,42,98,127,42,28,14,14,42,0,42,0,0,0,28,28,0,14,0,0,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,88,127,25,38,12,12,38,12,12,0,0,12,12,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,21,0,42,105,42,21,21,21,63,127,21,0,0,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,21,105,127,0,21,0,21,0,0,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,42,84,42,127,84,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,54,18,54,127,18,36,90,0,0,36,36,0,18,0,0\\n0,0,0,0,2,0,0,0,0,0,2,28,127,14,0,2,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,10,45,127,56,0,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,9,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0\\n0,0,0,0,0,0,0,0,0,11,23,34,127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,19,95,127,23,2,6,1,1,2,1,2,0,0,1,0,0,0,0,0,2,4,8,8,14,19,31,31,8,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,15,14,3,5,1,0,0,2,1,0,0,1,0,0,0,0,0,1,1,2,8,21,22,19,59,127,46,3,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,127,25,25,0,25,25,0,0,0,0,0,0,25,25,50,0,0,0,0,25,0,25,76,76,0,0,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,98,0,28,0,0,56,42,0,0,0,14,14,0,28,14,0,0,0,0,14,14,56,127,84,28,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,79,95,127,63,15,0,0,15,0,15,0,15,15,15,15,15,31,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,79,47,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,45,99,127,54,18,27,9,18,0,0,0,0,0,9,0,0,9,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,45,0,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,2,1,2,0,5,127,119,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,2,0,0,2,0,0,0,0,8,105,127,7,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,105,21,21,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,0,0,63,63,0,95,127,0,63,31,31,0,31,0,0,0,0,0,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,5,0,15,5,0,111,127,79,31,68,10,0,0,0,0,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,18,36,0,18,18,0,18,18,0,0,0,0,0,18,36,18,90,90,108,36,127,36,18,0,0,0,18,18,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,0,0,63,42,21,0,0,21,21,0,0,0,0,21,42,21,21,42,0,63,42,42,127,0,0,0,0,21,0,0,0,0,0,0,0,0\\n109,127,83,43,21,13,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,30,41,48,52,91\\n15,2,1,0,5,5,0,0,1,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,5,0,3,0,1,5,17,45,73,127\\n127,97,79,44,31,28,17,19,7,5,8,17,5,4,4,2,5,5,10,23,8,13,5,22,20,17,13,5,20,5,20,11,20,20,36,42,35\\n63,31,63,0,63,63,95,0,31,0,31,0,31,0,0,31,63,0,0,0,0,127,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0\\n31,79,111,127,79,47,31,47,95,15,47,47,15,0,0,95,15,79,111,15,15,47,31,31,15,31,15,31,31,0,0,15,0,0,47,31,0\\n127,33,7,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50\\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50\\n127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\\n127,28,42,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,112\\n111,127,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,99\\n0,0,0,0,0,0,0,0,0,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,127,0,0,0,63,63,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,63,0,127,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,101,76,101,127,127,76,76,50,0,50,76,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,76,50,0,50,76,76,127,127,101,76,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,95,31,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,0,63,95,63,0,0,0,127,31,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,31,31,95,31,95,31,127,63,31,63,0,63,95,0,0,31,0,0,0,0,31,0,0,31,0,0,31,0,0,0,0\\n127,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90\\n127,61,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,69\\n127,105,42,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,21,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,42,0,0,0,42,105\\n127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,38,127,63,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,0,42,63,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,127,127,42,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,19,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,76,0,76,76,101,127,25,127,50,50,50,0,25,0,25,50,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,40,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n80,127,73,46,53,53,26,20,6,6,6,6,0,20,0,0,20,20,33,40,33,13,0,0,6,6,0,6,0,13,0,20,6,6,20,0,13\\n84,98,112,127,14,28,0,14,0,14,0,0,0,0,0,0,0,14,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,42,28,28,56\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,84,127,42,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0\\n127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42\\n25,0,0,76,25,50,25,127,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,25,25,101,25,0,0,25,25\\n63,31,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,18,90,127,24\\n0,42,84,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,42,0\\n127,63,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n65,51,32,16,8,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,3,34,127\\n127,34,20,9,4,3,3,3,2,0,1,0,0,0,0,0,0,0,0\\n119,23,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,15,23,79,127\\n30,45,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,53,93,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,15,127\\n72,45,72,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,127\\n0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127\\n46,20,10,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,83,127\\n127,74,74,52,63,21,10,10,0,0,0,0,0,0,31,0,10,0,31,21,21,10,42,31,0,31,42,31,10,0,10,10,0,0,0,0,0\\n84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0\\n127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,42,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84\\n111,106,87,76,71,65,77,91,97,93,97,108,104,117,111,117,123,127,120\\n127,99,45,43,24,16,11,18,14,11,4,11,8,9,5,23,36,41,40,61,33,58,62,43,29,29,17,10,5,4,1,2,0,1,0,0,0\\n1,2,0,1,0,0,0,0,1,1,0,4,14,21,71,72,78,127,124\\n0,34,11,103,92,11,46,127,80,23,11,46,0,11,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,25,59,59,21,12,16,84,76,105,55,50,84,127,55,21,0\\n0,0,0,0,0,9,9,0,0,9,0,0,0,0,9,9,9,72,72,72,127,54,81,63,36,45,9,18,36,18,27,0,9,0,0,0,0\\n127,81,51,15,18,3,6,0,0,0,0,0,3,3,0,0,3,3,6,6,9,15,24,27,51,48,21,21,6,3,0,0,0,0,0,0,0\\n0,127,127,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,63,127,0,0,63,0,0,0,0,0,0,0,0\\n0,11,92,127,34,0,80,57,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,63,79,127,47,95,47,31,0,15,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,9,27,108,117,127,45,36,18,0,0,0,0,9,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,84,84,0,0,42,0,0,42,0,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,127,127,63,0,0,127,0,63,63,0,63,0,63,0,0,0,0,0,0,0\\n127,127,42,42,21,0,21,0,21,0,0,0,0,0,0,42,21,0,0,42,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,0,12,0,0,12,0,12,0,12,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,84,84,127,84,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,0,0,127,63,63,31,0,0,0\\n0,0,0,0,0,0,1,2,6,17,69,127,104,49,15,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,42,64\\n0,0,0,0,0,0,0,0,0,56,127,28,70,42,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,28,28\\n0,0,0,0,0,0,63,63,95,0,95,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,10,0,10,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,0,21,0,0\\n0,0,0,0,0,0,0,0,0,11,127,93,121,16,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,11,22\\n0,0,0,0,0,0,0,0,0,0,0,36,108,127,72,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,90,36,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,36,18,36,36,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,47,63,79,95,127,31,31,15,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,63,47,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,47,63,31,31,47,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,0,0,0,0\\n0,0,0,0,0,0,0,7,3,19,59,123,127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,35,39,19,0,3,3,3,0,0,0,0\\n0,0,0,0,0,0,7,0,14,52,97,127,89,22,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,112,59,59,29,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,72,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,42,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,127,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,42,0,0,21,63,42,42,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,18,18,18,127,72,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,18,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,0,25,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,10,95,127,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,21,52,10,0,0,10,0,0,0,0,0,0\\n127,56,8,5,2,1,0,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,1,0,1,0,1,0,0,2,1,0,3,3,4,0\\n127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n44,77,41,33,8,5,24,16,2,0,2,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,27,33,46,127\\n127,15,31,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,16,53,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,16,54,49,117,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,10,44,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,11,14,25,47,56,127,112,67\\n127,64,14,5,7,2,5,3,3,3,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0\\n127,107,69,41,24,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,10,9\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,27,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,2,1,10,13,75,127\\n127,102,77,63,40,27,27,20,10,8,10,3,5,9,11,16,7,7,11,6,15,6,11,7,7,9,10,6,10,1,4,1,0,0,0,0,0\\n89,82,127,112,59,29,22,7,14,7,7,14,0,7,22,14,52,52,29,22,22,0,7,7,0,7,0,0,0,0,0,0,0,0,0,0,0\\n112,35,84,127,105,112,77,42,14,14,7,21,7,21,49,7,0,7,0,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,2,3,2,6,19,46,65,105,115,81,94,127,110,65,30,18,17,24\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,2,20,28,24,22,27,100,127,95,58,13,6,9,12\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,2,2,1,1,9,25,38,83,111,127,97,95,60,43,37,41,18,17,22,26\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,10,35,127,96,116,81,25,45,15,20,15,20,15,20,20\\n105,127,74,52,63,42,52,0,0,10,10,10,10,0,10,10,0,10,52,31,42,105,105,52,42,52,21,21,10,0,42,10,0,0,10,10,0\\n127,96,65,52,26,14,10,5,2,3,4,2,2,2,3,2,0,2,1,3,3,6,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,78,66,30,15,15,3,3,0,3,0,0,0,0,6,3,12,15,6,3,3,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,8,0,1,4,7,10,24,43,90,127,37,12,7,2,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,11,34,103,127,100,34,3,0,3,0\\n127,111,119,55,55,63,15,7,0,0,0,0,0,0,0,0,7,0,0,0,0,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0\\n127,80,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,15,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,69,11,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,2,10,4,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,3,25,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,27,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,25,12,25,38,127\\n127,59,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,17\\n127,60,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,25,38,40\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,42,42,105,105,84,84,42,63,84,127,21,21,42,42,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,42,42,105,21,21,127,127,105,42,84,21,21,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\\n66,55,60,27,0,22,0,0,0,0,5,0,0,5,5,0,0,0,0,0,0,0,0,5,11,0,5,0,5,0,0,0,0,0,0,0,5,0,11,5,22,16,5,27,22,33,49,127,82,99,77,27,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27\\n46,75,23,17,11,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,11,5,0,5,5,0,11,11,0,11,0,0,0,11,0,0,5,0,0,17,11,0,5,40,46,57,69,127,63,46,46,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,51\\n0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,127,31,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\\n84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,127,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42\\n0,0,0,0,0,0,25,0,0,0,127,101,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,9,9,9,0,9,0,108,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,38,0,0,12,0,127,50,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,42,31,21,63,63,31,63,63,127,105,127,21,31,0,0,0,21,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,7,7,0,7,47,87,103,39,95,55,47,103,127,47,47,7,23,0,15,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,127,127,42,84,42,0,42,84,84,127,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,70,127,14,42,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,10,15,30,35,35,10,35,66,35,86,127,71,66,25,71,45,60,10,20,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,34,80,46,69,34,57,57,46,103,80,92,115,127,46,34,34,23,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,76,0,127,0,0,25,25,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,21,63,0,42,105,21,21,21,21,42,63,127,63,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n1,0,0,0,0,0,0,2,2,14,14,30,49,33,14,9,6,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,8,21,46,59,46,18,17,18,12,5,8,3,2,2,0,0,1,0,2,4,3,8,21,42,80,127,114,81,27,9,2,1,0,0,0,0,0,0\\n0,0,0,0,1,1,2,2,2,7,21,23,28,31,16,11,3,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,5,5,17,20,36,26,25,13,7,3,0,5,5,0,2,3,0,1,0,2,0,3,8,14,38,85,112,127,73,26,9,0,2,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,50,0,0,50,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,25,25,25,0,50,0,0,50,0,0,50,25,0,25,25,0,0,0,25,101,127,76,25,50,0,76,0,0,0,25,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,50,0,0,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,0,50,50,50,0,0,0,0,0,0,0,0,0,25,0,0,0,76,50,50,50,101,101,101,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,7,15,0,7,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,0,23,7,7,7,7,7,0,0,0,0,0,0,0,0,15,15,7,23,15,7,63,103,127,111,47,0,7,7,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,9,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,4,0,9,0,0,4,9,0,0,9,0,9,14,0,0,4,9,39,127,92,63,29,19,14,4,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,72,18,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,2,5,2,5,5,2,16,51,67,127,16,5,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,6,0,3,0,3,0,35,58,127,29,6,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,27,127,63,18,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,12,38,127,76,44,0,0,12,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,31,63,127,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,12,12,0,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,1,1,16,22,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,9,66,127,38,5,4,0,0,0,0,0,0,0\\n1,0,0,0,0,1,0,0,2,4,20,20,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,9,62,127,32,2,0,2,1,0,1,0,1,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,76,25,12,12,0,0,0,0,0,0,0\\n0,18,0,18,0,0,0,18,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,127,18,18,0,0,18,0,0,0,0,18\\n0,0,0,14,0,0,0,0,0,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,14,42,127,112,70,14,0,0,0,0,0,0,14\\n0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,0,0,11,127,23,23,11,11,11,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,1,3,17,42,30,15,14,6,1,0,0,0,0,0,0,4,5,7,2,3,2,4,5,15,46,127,91,18,8,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,3,12,26,43,26,12,4,3,0,0,0,0,0,0,0,0,0,0,0,2,2,4,6,26,127,93,12,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,3,0,27,102,106,51,6,20,6,10,0,0,0,6,6,0,3,13,24,24,30,24,34,44,109,127,20,6,6,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,1,0,3,27,60,41,23,9,0,5,0,0,3,3,0,7,1,1,0,1,5,1,0,13,66,127,91,27,0,3,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,1,1,1,6,19,95,83,17,4,4,3,2,2,0,1,5,2,2,0,2,0,1,0,2,7,17,19,46,127,75,13,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,7,15,1,11,66,102,81,27,3,6,3,1,1,3,3,2,3,2,1,1,1,2,0,0,5,7,22,60,127,90,20,10,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,127,127,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,127,5,0,0,5,0,5,0,11,34,17,0,0,5,23,0,5,11,5,23,11,28,17,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,8,0,16,0,0,16,16,50,16,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,8,0,8,25,127,67,76,33,59,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,7,21,35,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,0,21,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,28,42,127,91,56,7,0,0,7,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,6,6,6,6,19,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,12,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,57,127,76,25,0,0,0,0,0,6,0,6,0,0\\n0,0,0,0,0,0,0,0,7,56,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,5,127,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,9,0,0,0,0,0,0,0,0,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,127,117,0,27,9,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,63,38,12,12,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,42,21,21,0,21,0,0,0,0,0,0,0,0,0,10,0,10,10,84,127,84,21,0,21,74,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,15,0,0,15,127,111,79,0,15,31,15,0,0,0,0,15,0,15,31,0,0,0,31,31,95,0,63,0,79,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,63,0,0,0,0,63,127,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,6,18,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,18,30,18,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,6,66,127,72,60,36,6,0,0,0,0,0,0,0,0\\n0,0,0,0,0,3,0,0,0,0,0,0,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,6,20,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,0,6,10,56,90,127,23,3,3,0,0,0,0,0,0,0,0\\n0,0,0,0,4,0,0,0,0,0,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,30,74,127,65,13,13,0,0,0,0,0,0,0\\n0,0,0,0,0,0,4,0,0,4,14,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,9,43,68,127,83,29,4,0,0,0,4,0,0,0\\n0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,127,45,18,18,18,9,0,0,0,0,0\\n10,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,42,10,10,0,0,0,10,10,21\\n0,0,0,0,0,0,0,0,0,0,25,25,0,50,127,76,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,76,127,25,76,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,15,0,15,0,31,111,127,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,15,15,79,31,95,31,15,0,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,127,0,31,0,0,0,0,0,0,0,0,0\\n50,25,50,0,12,12,0,0,50,0,25,50,25,63,127,63,127,50,0,25,50,0,0,12,0,0,0,25,0,0,0,0,0,0,0,0,25\\n0,0,0,0,0,42,0,0,0,0,21,84,42,42,63,42,21,0,0,0,21,21,0,0,0,0,0,0,0,21,0,0,0,21,42,21,127\\n0,0,0,0,0,0,0,21,63,127,84,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,0,0,1,6,5,1,18,33,127,125,63,50,26\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,2,0,0,0,1,8,86,127,49,5,5,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,34,92,127,69,80,57,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,0,127,54,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,50,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,127,101\\n0,0,0,0,0,0,0,0,25,63,38,12,50,38,50,25,50,0,0,0,0,25,0,0,0,0,0,0,12,0,0,12,0,50,63,38,127\\n0,0,0,0,0,0,0,0,0,11,11,11,80,46,69,46,69,46,46,57,127,80,80,80,46,0,0,11,0,0,11,11,23,11,0,11,23\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,8,42,84,127,76,110,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,63,0,0,0\\n127,87,36,12,4,1,1,0,0,0,0,1,1,1,1,1,1,1,0\\n127,92,45,18,8,4,2,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0\\n2,1,2,2,1,1,1,1,2,4,6,8,17,25,41,63,91,106,127\\n33,23,10,10,8,16,6,19,6,4,2,6,6,8,8,33,44,76,127\\n0,42,0,21,42,21,63,21,42,21,21,42,21,21,127,0,105,63,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,127,101\\n127,31,10,16,18,11,6,2,3,0,1,0,0,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n34,47,60,92,127,72,89,30,18,18,9,0,1,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,3,6,10,14,18,17,35,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,9,1,1,4,4,6,12,58,103,92,127,84,65,56\\n121,96,81,86,60,75,71,80,73,70,79,60,88,100,98,113,105,103,127\\n127,72,71,53,50,33,46,31,30,21,30,17,24,27,24,47,43,41,52,47,60,52,69,30,29,22,21,5,0,1,0,0,1,0,0,1,0\\n0,0,0,0,0,0,4,6,1,12,24,20,34,27,41,106,85,106,127\\n127,55,25,6,10,25,23,21,8,8,4,1,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,3,1,1,3,21,19,8,8,12,25,38,59,127\\n127,73,21,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,5,2,3,0,0,0,0,0,0,0,0,0,0,0\\n127,70,13,0,0,3,0,0,1,0,0,0,0,1,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,42,12,12,12,0,4,4,8,4,4,4,8,8,16,8,33,25,42,25,80,42,101,105,101,93,55,29,33,29,21,25,46,59,76,127,67\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,79,127\\n127,101,63,114,25,25,38,12,25,25,50,0,50,101,101,38,12,0,12,12,12,0,0,0,25,12,0,0,0,0,12,25,12,12,0,0,0\\n127,18,5,9,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,66,30,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,18,90,90,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,45,25,9,6,3,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,27,36,45,36,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n55,63,119,127,75,39,19,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,39,95,79,31,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,54,127,36,54,72,72\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,28,0,14,42,127,84,127,112,56\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,63,127,63,127,127,127,0,0,0,63,0\\n127,63,46,34,0,11,0,0,5,0,17,5,5,0,0,0,0,0,5,0,17,17,5,11,0,0,0,5,0,0,0,0,0,0,0,0,0\\n0,0,10,0,10,0,10,0,10,0,0,0,10,0,21,84,74,84,127,74,31,74,63,63,63,52,21,0,10,21,0,10,21,0,21,21,21\\n127,30,13,12,6,6,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,0,21,21,0,127,42,42,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,67,59,41,17,8,2,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n40,53,127,61,57,28,16,0,0,0,0,0,0,0,0,8,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,111,95,31,127,63,95\\n0,127,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,42,42,0,0,0,0,0,0,0,21,0,0\\n84,63,0,21,0,0,84,0,42,0,0,0,0,0,0,0,0,21,0,0,21,63,127,105,0,63,21,63,21,0,0,0,0,0,0,0,0\\n127,16,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,71,31,9,0,1,0,0,0,1,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,127,14,56,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,7,11,23,11,23,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,25,21,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,95,31,95,0,0,63,0,0,0,0,0,0,0,0,0\\n127,25,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,38,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,47,15,7,19,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,4,4,0,8,0,8,127,83,61\\n0,0,0,28,0,0,0,0,0,0,0,0,0,0,14,70,28,84,98,28,0,98,127,84,127,98,56,56,0,28,14,14,0,84,0,42,0\\n127,31,0,10,31,21,21,10,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0,0,0,30,86,127,50,35,60\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,6,0,0,0,3,7,73,127,85,57,22\\n127,55,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,115\\n70,76,69,86,83,87,99,127,123,84,46,26,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1\\n0,0,14,28,14,14,14,14,56,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0\\n92,103,69,46,127,98,46,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,127,76,101,67,84,50,0,25,8,8,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,14,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,2,1,4,11,127\\n0,11,23,17,17,34,80,80,127,103,80,51,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n4,8,13,3,6,24,25,48,66,127,85,32,30,10,4,8,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,2,0\\n28,14,0,14,14,28,0,70,112,70,127,98,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,2,4,21,21,65,91,127,96,58,70,52,43,35,30,35,64,29,26,20,11,13,11,2,0,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,9,9,34,69,127,94,103,55,82,92,86,76,82,67,75,36,21,21,26,26,13,7,1,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63,63,127,127,63,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,84,42,0,42,0,0,127,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,63,63,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,50,127,101,50,25,0,25,0,25,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,14,28,56,14,127,112,0,0,14,0,0,0,0,0\\n1,2,0,1,3,4,3,5,8,16,17,32,127,109,35,4,2,0,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6,2,2,2,2,2,1,0,0,1,1\\n3,2,2,2,1,3,1,7,13,24,30,44,127,76,33,7,1,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,11,8,5,2,4,4,6,3,0,0,1,1\\n0,0,16,25,8,8,25,25,8,42,42,50,118,127,16,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,8,0,0,8\\n0,0,0,12,6,12,0,12,48,42,24,18,127,48,48,6,0,0,12,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,24,24,24,30,12,0,6,6,0,0\\n0,3,1,0,0,0,1,2,5,1,8,52,127,13,5,1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,1\\n2,2,0,0,1,0,2,5,1,4,17,66,127,15,5,3,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,1,0,0,1,4,1\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,8,0,0,16,8,42,59,93,118,50,127,101,42,16,8,0,8,16,0,16,33,0,0,0,8,0,8,8,0,8,25,59,0,16,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,12,6,6,44,82,76,38,127,19,38,12,19,6,12,0,0,0,6,6,0,0,0,0,0,12,6,19,6,6,12,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,0,0,12,25,12,50,127,76,38,0,0,25,0,0,0,0,0,0,0,0,12,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,15,55,127,0,0,15,0,7,7,103,23,23,7,39,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,11,15,35,75,67,55,47,51,27,27,3,39,15,3,27,31,27,27,63,83,127,127,71,55,19,3,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,11,7,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,4,4,36,53,45,40,53,40,49,20,8,32,20,36,12,0,24,40,20,53,86,81,127,110,57,28,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,16,8,0,4,0,0,0,0,0,0,0,0,0\\n0,0,10,3,17,24,13,17,6,41,72,30,127,106,54,3,0,10,0,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,30,17,6,3,0,13,0,0,6,0,6\\n0,0,5,5,8,13,10,21,8,35,29,54,127,67,43,10,5,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,13,16,10,8,5,2,0,2,10,2,5,5\\n0,0,0,0,0,0,0,42,0,42,63,105,127,21,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,12,50,12,127,88,50,12,0,0,0,0,0,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,25,0,25,76,76,76,25,127,0,0,0,0,25,25,0,0,0,0,25,25,25,0,25,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,25,0,0,76,25,101,50,76,0,0,0,0,0,0,0,0,0,0,25,0,25,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,21,10,10,21,31,31,21,21,0,10,0,10,10,10,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,25,76,50,12,25,50,38,38,12,0,0,12,12,0,38,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,15,15,10,10,63,74,127,68,10,10,0,0,0,0,0,0,0,0,0,10,0,5,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,76,127,50,76,50,0,0,25,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,31,31,127,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,95,31,0,31,31,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,50,127,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0\\n0,0,0,4,0,4,13,4,54,127,95,77,13,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,27,22,13,18,4,4,0,4,0,0\\n0,0,0,0,0,9,0,48,87,117,127,87,9,0,0,29,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,19,48,39,39,19,9,9,19,0,0,0\\n0,0,0,0,0,0,0,0,127,127,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,0,0,0,0,25\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,95,127,0,31,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,63,0,0,63,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,0,14,0,28,0,0,0,0,0,0,0,14,0,14,14,127,70,56,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,127,0,0,0,0,0,0,0,0,0,0,25,25,50,0,101,101,76,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,5,5,17,34,57,121,127,28,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,23,23,23,11,0,0,0,0,0\\n0,0,5,0,5,0,5,11,22,60,60,127,22,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,22,11,5,16,5,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,95,127,63,63,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,127,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12\\n127,29,33,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,12,55,105\\n0,84,0,42,42,84,84,42,84,84,0,42,84,42,127,42,42,42,0,0,0,0,0,84,42,0,42,42,0,0,42,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0\\n127,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,31,63\\n127,39,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,25,50,25,25,25,25,25,25,0,127,0,25,25,25,0,0,0,25,25,76,0,0,0,76,0,50,0,0,0,0,0,0,0,0,0\\n0,18,0,0,36,0,18,36,127,54,36,0,36,0,18,0,36,18,0\\n31,0,15,15,0,0,31,0,15,0,15,0,63,31,0,31,47,111,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,63,21,0,0,42,21,0,0,0,0\\n0,0,0,0,0,0,0,0,31,31,31,31,95,0,0,0,31,63,127\\n50,59,42,101,84,127,84,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,19,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,3,20,27,3,13,0,10,34,99,127,92,102,85,82,102\\n127,38,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,42,42,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,63,105,42,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,84,127,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,108,54,18,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,18,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,0,127,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,95,0,95,127,63,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,31,127\\n0,0,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,38,63,101,25,12,12,0,0,12,38,127,38,25,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,84,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,42,21,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,36,90,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,80,127,69,127,46\\n127,0,31,0,15,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95\\n0,0,0,0,0,0,0,0,0,0,0,0,11,103,127,23,34,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,23,23,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,15,0,0,5,0,42,89,127,47,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,127,84,0,0,84,0,0,0,84,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,7,0,3,0,3,7,3,22,29,48,127,97,104,115,104\\n0,3,0,0,0,0,3,15,0,11,15,42,19,46,88,100,127,111,76,57,50,38,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,11,22,82,60,127,88,121\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,14,7,49,56,70,98,127,28,7,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,0,127,84,42,84,0,84,0,42,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,42,84,84,127,0,0,127,42,0,0,42,0,0,0,0,42,0,0,0,0,0\\n0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,0,9,127,81,27,9,9,0,0,0,0,0,0,0,0,0,0,0,0\\n65,127,97,116,83,119,94,32,36,3,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,127,84,42,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,127,29,39,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,23,127,39,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,54,127,18,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,27,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,127,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,95,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,95,95,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,42,84,21,21,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,18,0,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,54,127,72,54,36,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,0,0,76,38,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,25,114,127,25,0,12,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,31,0,0,15,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,34,69,127,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,79,0,31,47,0,15,31,0,15,79,47,15,47,31,31,31,79,127\\n0,95,127,127,127,31,31,63,63,95,63,95,127,63,63,63,127,95,0,31,0,31,0,0,0,31,0,0,0,0,0,31,63,127,63,31,63\\n0,0,0,0,2,1,1,1,0,1,1,2,3,16,37,127,46,20,23\\n0,95,31,95,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,48,78,127,19,0,0,9,9,0\\n0,0,21,42,84,42,42,42,21,127,63,42,42,21,21,21,63,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,50,25,101,76,127,50,50,25,50,76,25,25,0,76,25,25,0,0,25,25,0\\n127,127,112,107,109,86,72,65,28,28,33,10,12,7,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0\\n12,0,0,0,0,0,0,0,0,25,25,12,12,12,25,12,25,101,127,127,101,88,127,25,76,38,38,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,7,7,7,49,0,0,0,35,21,28,63,42,127,42,91,35,14,14,7,14,14,7,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n25,0,0,0,0,0,0,0,25,127,76,0,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,0,63,95,95,95,0,31,31,31,0,0,127,63,31,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,42,42,84,84,127,0,127,127,127,84,127,0,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,36,18,36,0,54,18,72,18,127,72,72,72,36,54,72,72\\n15,23,7,23,23,15,23,31,63,39,31,127,15,7,39,15,23,15,15,23,15,0,0,0,0,7,39,0,23,15,7,0,0,0,0,0,0\\n0,0,5,0,5,0,5,0,0,23,28,69,121,109,63,51,63,75,127\\n8,10,21,10,24,7,23,36,34,24,31,34,46,53,80,80,93,127,121\\n10,15,21,10,15,21,5,63,31,52,15,26,52,37,37,47,21,10,68,89,127,15,10,5,5,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,3,4,9,12,3,6,20,49,104,127,95\\n0,0,0,0,0,9,0,0,0,0,18,54,54,90,54,127,63,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,6,6,0,0,13,0,13,26,0,0,26,20,86,127,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,84,127,93,76,16,33,0,0,0,8,0,0,33,8,0,16,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,92,127,47,4,11,9,20,27,27,20,15,9,6,4,2,13\\n0,0,0,0,0,0,0,0,0,0,42,84,84,42,127,0,0,0,42,42,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0\\n0,90,36,72,0,54,18,90,72,127,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,77,87,54,87,51,37,54,61,28,11,7,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,21,0,0,0,0,21,42,21,42,127,63,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,0,0,0,21,0,0,0,21\\n0,0,0,0,0,0,0,0,0,31,0,95,127,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0\\n63,0,0,63,0,63,0,63,63,0,63,127,0,0,0,0,0,127,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,127,127,84,84,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,84,42,0,42,0,0,0,0,0,0,0,0,0,42,42,84,84,127,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,116,74,42,21,0,21,21,0,0,10,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,42,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,127,127,0,84,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,36,72,36,90,127,54,72,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,127,127,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,50,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,50,10,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4\\n127,51,17,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,76,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5\\n112,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n112,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,84,42,127,127,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,84,84,127,0,42,0,84,42,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,84,84,127,127,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,14,0,14,28,127,84,70,14,14,0,28,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,14,0,0,0,0,0,0,0,0,0,0,0\\n69,127,34,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n76,127,38,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,84,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,105,105,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,25,25,0,0,0,0,0,0,0,0,0,0\\n127,76,38,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n89,67,82,74,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,22,127,127,89\\n28,14,56,28,14,28,127,14,0,0,28,0,56,28,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,42,127,92,23,3,0,3,7,19,50,73,50,15,7,15\\n72,108,127,102,96,12,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,63,127,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,0,0,42,63,63,21,42,105,127\\n127,108,80,43,25,17,3,7,2,0,1,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,2,5,7,7,14,18,18,36\\n127,79,22,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,74,8,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,16,8,21,55,67,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,42,127,42,0\\n127,90,25,15,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n104,127,59,44,37,29,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,22,14,29,44,59\\n127,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101\\n127,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,111,127,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,42,127,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36\\n0,0,0,0,0,0,0,0,0,25,50,127,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,50,127,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,31,31,0,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\\n14,14,14,7,35,0,35,49,127,42,0,7,7,7,7,0,28,0,0,0,0,0,7,0,0,14,21,0,14,7,28,0,7,21,14,35,0\\n0,0,0,0,0,0,0,0,63,42,21,42,127,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,63,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,63,95,95,31,127,31,0,0\\n0,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,0\\n127,72,63,90,45,36,0,0,0,0,0,0,18,0,0,0,0,0,0\\n21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,31,127\\n127,31,31,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,63\\n127,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,50,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,50,76,127,101\\n101,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50\\n127,50,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,81,30,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,58,87\\n46,23,23,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,17,57,127\\n127,111,74,21,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42\\n0,0,42,84,0,42,42,42,42,42,0,0,42,0,0,0,42,0,0,0,0,0,42,0,0,0,42,0,0,0,0,84,42,0,127,0,84\\n9,4,2,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,7,20,57,112,127\\n84,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42,0,0,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,127,84,84,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,27,27,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,81,127,36,27,0,0,0,0,0,0,0,0,0,0,9,0,0,0,9,0,27,90,54,63,18,63,0,0,9,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,5,0,5,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,21,52,74,127,68,10,0,5,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,10,42,127,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,52,21,0,10,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,8,76,127,42,8,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,16,16,42,67,33,16,0,8,8,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,36,0,0,54,18,0,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,18,18,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,42,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,105,127,105,21,0,21,0,0,0,0,0,0\\n49,88,74,67,56,74,38,24,42,67,74,42,49,63,52,35,31,28,38,45,45,28,42,67,91,116,116,56,67,59,63,109,119,112,123,127,84\\n0,63,42,0,0,0,42,21,21,0,0,42,0,0,0,0,0,63,21,42,21,105,127,105,42,42,0,21,0,21,0,0,0,0,0,0,0\\n0,0,0,0,13,26,66,66,93,100,127,86,120,93,113,60,40,13,26,6,33,46,6,6,6,13,6,26,13,13,6,6,6,6,26,13,40\\n0,0,0,0,0,0,0,0,0,0,0,0,36,72,127,36,0,18,0,0,0,18,18,0,0,18,18,0,0,0,0,0,0,0,0,18,0\\n0,0,0,0,0,0,0,0,0,0,18,0,36,36,18,0,0,18,0,0,18,36,0,0,0,0,36,18,0,0,0,54,0,18,18,127,36\\n0,0,0,0,0,0,0,0,0,0,0,54,127,18,18,0,0,18,18,18,0,36,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,18,0,0,18,0,0,0,0,18,0,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,95,63,63,127,0\\n0,0,0,0,0,6,12,18,84,48,66,84,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,108,127,120\\n0,0,0,0,1,2,0,2,1,6,12,22,34,71,81,74,104,127,100\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,14,21,35,127,24,17,17,0,3,7,3,0,0,0,0,3,3,7,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,11,80,127,69,14,11,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,35,91,52,43,96,17,87,127,30,8,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,50,76,0,101,50,127,0,25,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,3,3,7,11,7,7,11,127,111,23,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,8,8,0,33,0,8,0,127,50,84,50\\n0,25,0,0,50,0,0,0,0,0,25,25,0,0,0,127,0,25,76,76,50,25,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,0,127,84,42,84,0,84,84,0,0\\n0,0,0,0,0,0,0,0,0,0,0,13,127,43,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,6,33,116,60,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,108,43,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,12,3,3,46,127,43,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,72,127,9,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,108,9,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,127,2,0,4,3,2,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,127,10,0,5,5,2,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,21,0,0,0,0\\n127,43,12,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,29,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n52,33,18,4,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,10,13,20,40,71,100,127\\n127,74,30,9,4,0,0,2,0,0,0,0,0,0,0,0,0,4,0,0,0,1,0,2,0,4,2,0,1,2,0,1,1,1,1,3,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,63,127,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,2,8,8,8,51,127\\n104,127,48,22,20,2,4,2,6,2,2,12,0,6,0,0,0,0,0,0,0,4,0,2,0,0,0,0,2,4,4,26,30,26,44,58,100\\n127,74,20,12,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,84,0,0,0,0,21,0,0,0,63,84\\n127,87,31,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,23,31,71,15\\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,39,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,95,127\\n127,63,63,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,17,11,11\\n63,127,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,105,105,84,127\\n127,47,31,15,0,0,0,0,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,70,42,0,7,0,0,0,0,0,0,7,0,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14\\n127,63,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,42,10,5,26,15,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,69,34,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,84,0,42,42,0,84,42,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,127,127,127,127,0\\n0,15,47,15,15,127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n56,28,0,0,0,0,0,0,0,0,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,28,0,42,42,127,56\\n72,127,54,18,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,18,18,0,0,0,0,0,0,0,36\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,12,12,38,127\\n127,111,15,63,15,31,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0\\n63,0,0,127,127,95,0,0,0,0,127,63,63,0,63,31,0,63,0\\n127,45,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,127\\n120,127,40,40,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0\\n127,28,20,14,2,0,0,0,2,2,2,0,2,0,0,0,2,0,5,0,11,14,2,11,2,2,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,21,0,0,42,84,127,21,21,42,42,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,76,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,14,28,56,0,14,14,0,14,0,0,0,0,14,0,0,0,14,28,127,98,56,0,42,28,0,0,0,0,0,0,0,0,0,0,0,0\\n0,56,56,42,0,14,14,14,28,56,14,0,0,42,14,70,14,56,0,127,56,70,28,42,28,14,0,42,28,14,0,28,14,0,0,14,0\\n79,127,71,39,15,15,7,7,7,15,0,0,0,0,23,15,15,23,15,0,23,15,31,15,0,0,7,0,0,0,7,0,0,0,0,0,0\\n50,25,0,0,0,12,12,25,12,12,38,38,0,12,0,12,127,12,76,63,12,38,0,0,0,88,25,50,38,0,25,0,0,0,0,0,25\\n0,0,84,0,0,0,0,0,0,0,0,42,42,0,0,42,0,42,127,42,84,42,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,31,0,0,0,0,0,0,95,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,28,127\\n0,0,0,0,0,0,0,0,0,25,0,25,127,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,76,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,84,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,21,0,0,0,0,0,0,0,0,0\\n127,82,39,26,27,25,21,8,7,15,8,8,6,3,2,0,0,1,0\\n38,6,19,0,6,19,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,19,57,127\\n84,84,63,0,63,63,63,42,0,21,127,42,42,63,63,127,84,21,42\\n127,33,12,0,4,0,0,4,4,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,34,7,9,7,19,12,21,19,19,4,4,2,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,58,7,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,10,15\\n127,127,26,21,21,21,15,31,26,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,81,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,103,63,31,31,15,0,15,7,0,0,0,0,0,0,0,0,0,0\\n0,42,42,42,0,42,84,84,127,84,0,42,42,42,42,0,0,42,0\\n67,0,16,8,16,127,76,0,8,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,76,25,0,0,0,0,127\\n0,0,0,0,0,0,0,0,4,0,0,0,36,54,90,45,81,117,127\\n0,0,0,0,0,0,0,0,0,0,0,0,14,14,127,28,28,14,0\\n94,127,94,54,21,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,14,0,0,0,7,7\\n0,0,0,0,0,0,0,0,0,0,0,12,12,101,50,127,25,63,38,38,38,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,21,105,63,84,127,63,0,21,0,42,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,29,127,29,78\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,63,31,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,0,127,0,42,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,10,21,52,63,52,127\\n0,0,0,0,0,0,0,0,0,0,7,14,35,70,70,127,112,21,56,70,77,42,56,21,28,0,0,0,0,0,0,0,7,0,0,0,0\\n15,0,0,0,7,7,15,15,23,23,79,127,31,0,7,7,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,3,0,0,7,7,11,7,3,3,7,3,0,11,3,3,3,0,0,7,0,3,7,44,85,82,127\\n0,0,0,0,0,0,0,14,0,14,14,0,14,84,127,56,70,84,70,28,14,42,14,14,14,14,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,127,0,0,0,31,0,0,31,0,0,0,0,0,0,63,0,0,0,0,0\\n0,0,0,0,0,0,2,8,5,8,13,32,37,62,127,64,54,51,70,59,32,40,27,16,18,29,8,5,18,8,2,2,2,2,13,10,10\\n0,0,0,0,0,0,0,0,0,0,0,0,9,45,9,72,72,127,99,63,127,18,0,27,9,9,0,0,9,0,0,0,0,0,0,0,0\\n7,14,7,7,3,10,3,0,3,3,21,39,58,72,90,101,116,87,127,123,79,79,39,32,7,0,0,0,0,0,0,0,0,3,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,0,28,127,28,0,14,28,56,112,70,70,84,28,84\\n0,0,0,0,2,0,0,2,17,11,11,17,32,59,56,103,109,127,62,73,35,32,41,26,29,32,23,2,20,11,5,14,11,20,8,8,5\\n0,0,2,0,0,0,2,4,7,4,7,9,12,14,27,42,59,82,127,97,74,57,42,32,2,4,4,2,0,0,0,0,0,0,2,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,42,0,0,0,0,0,0,0,0,0,63,0,0,84,42,84,84,127,63,42,21,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,54,54,127,72,36,54,18,0,0,0,0,18,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,6,40,6,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,127,60,20,33,20,86,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,51,40,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,34,11,28,5,0,0,11,127,34,17,28,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,42,127,21,0,0,0,0,0,0,0,0,0,0\\n127,90,51,30,15,4,2,1,0,0,0,0,0,0,0,0,0,0,0\\n93,81,45,47,23,16,13,10,3,4,2,3,0,1,0,2,0,0,0,0,0,0,4,4,3,1,2,0,2,1,1,1,4,3,4,13,127\\n123,127,61,19,19,39,58,19,35,26,26,13,26,16,0,6,3,6,0\\n127,79,111,15,31,15,15,0,15,15,0,79,0,0,15,0,0,0,0\\n0,0,0,42,42,0,0,0,42,42,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,6,0,127,38,82,57,31,0,6,0,0,0\\n127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,95\\n0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,40,127\\n19,14,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,4,4,68,127\\n127,80,46,20,12,6,4,2,1,0,0,0,0,0,0,0,0,0,0\\n127,68,20,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0\\n127,63,0,10,10,21,21,21,0,10,21,31,0,0,0,0,0,10,21\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,27,45,36,127\\n127,72,15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3\\n127,56,10,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,26\\n127,105,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0\\n127,11,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n90,127,90,9,9,18,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,18,0,9,0\\n127,36,39,3,9,12,9,9,15,0,3,0,0,6,3,6,0,0,0,0,0,0,0,3,0,6,3,6,6,0,0,0,0,0,0,0,0\\n127,48,18,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\\n101,127,101,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n12,38,127,0,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,0,0,0,0,0,42,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,3,9,23,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,127,76,25,101,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,42,0,84,84,42,42,42,0\\n0,33,127,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,127\\n127,127,63,0,63,47,15,0,15,0,15,15,0,31,0,0,0,0,15,0,0,0,0,0,15,0,0,0,0,0,15,15,0,0,0,0,0\\n127,22,40,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,27,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,15,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,23,0,11,0,0,0,0,0,0,23,11,11,0,23,46,57,127,103,69\\n63,0,0,0,0,0,0,0,0,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,0,0,31,0,0,31,31,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,42,28,0,14,0,0,0,0,0,0,0,0,0,0,0,0,14,0\\n72,9,0,54,127,72,45,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,0,28,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,25,101,127,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,42,0,42,42,42,127,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,42,0,127,127,84,42,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,127,25,76,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,21,0,42,21,127,21,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,95,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,63,63,31,0,0,0,0\\n0,0,0,0,0,0,18,0,0,36,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,0,127,0,0,36,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,127,127,0,0,0,0,0,0,0,0,0,0,127,0,63,0,0,0,63,0,127,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,14,0,0,0,0,0,0,0,0,28,98,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,28,42,127,98,56,0,0,28,28,28,0\\n0,0,0,0,0,12,0,0,12,25,63,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,25,25,114,127,63,50,38,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,0,0,0,0,0,0,31,0,0,0\\n0,0,0,0,42,0,0,0,0,0,0,0,0,42,127,42,0,42,42,84,127,42,42,42,0,0,42,0,0,42,42,127,0,0,0,0,0\\n127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127\\n127,88,76,19,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0\\n127,111,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,42,63,0,0,21,42,63,0,0,0,21,0,21,21,0,0,0,0\\n0,12,25,25,50,38,101,76,127,38,38,63,12,12,25,0,12,0,0,0,0,0,0,0,0,0,12,0,0,0,12,0,25,38,25,63,101\\n127,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,31,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,105,21,0,0,0,0,0,0,0,0,0,0\\n0,9,9,29,39,19,0,127,78,29,48,19,48,19,9,0,0,9,0,0,0,0,0,0,0,9,9,0,39,29,19,0,0,29,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,127\\n23,51,63,127,34,46,51,46,63,46,28,11,40,11,17,5,0,5,11,17,5,11,0,0,11,0,0,0,0,0,0,5,5,5,5,5,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,27,127\\n127,63,10,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n115,127,0,34,69,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,73,16,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,10,40,46\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,18,18,9,0,18,9,127\\n127,44,6,12,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,38,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,127\\n127,63,42,0,10,0,0,0,10,10,10,0,10,74,74,10,0,10,42,0,21,63,52,21,21,0,0,31,10,0,21,0,10,0,10,31,21\\n0,0,0,0,0,0,0,0,0,127,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,42,21,0,42,0,0,0,0,0,0,0,0\\n0,63,0,0,0,0,0,0,0,0,0,31,0,63,0,0,0,63,0,0,31,0,0,31,31,0,0,0,0,31,0,0,31,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,39,39,55,127,87,111,111,79,15,0,0,15,0,0,0,0,0,0,0,0,0,7,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,63,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5\\n127,76,12,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,127,50,0,63,76\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,0,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,61,127\\n127,25,76,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,127,0,42,0,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0\\n0,42,42,0,84,0,0,0,0,0,0,0,0,42,0,42,84,0,84,0,42,84,0,127,0,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,42,84,127,84,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,22,127,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0\\n127,31,95,127,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,63,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,25,31,38,127\\n127,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41\\n0,0,0,84,0,42,42,0,42,0,127,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,12,12,12,0,0,0,0,0,0,0,38,25,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,5,15,127\\n127,69,24,6,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,1,2,3,5,3,1,0,0,0,0,0,0,4,24,64,82\\n42,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,105,127,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,33,127\\n127,85,27,12,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,10,17\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,28,14,42,14,7,7,7,28,127\\n63,31,31,23,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,15,63,87,127\\n101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,12,12,0,101,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,58,127\\n127,71,79,31,39,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,47,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,26,0,52,127\\n0,47,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,79,31,127,63\\n127,95,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,6,12,11\\n127,70,18,37,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,48,48,52\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,54,36,0,0,0,18,0,36,0,0,0,0,0,54,127,127,90,0,0\\n31,31,31,15,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,63,127,72,18\\n36,18,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,36,18,36,72,54,127,18,0,36,36\\n0,0,0,0,18,36,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,127,36,18,36,0,18,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,95,95,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,21,31,31,84,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,0,0,21,127,42,127\\n127,61,22,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0\\n68,127,73,9,14,4,0,0,0,4,0,0,0,0,4,0,0,4,0\\n127,94,20,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4\\n72,72,18,36,18,127,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,31,127,63,63,0\\n106,127,80,33,13,0,0,0,13,0,0,0,6,0,0,0,6,0,13,0,0,0,0,0,6,0,0,0,0,6,6,0,0,0,0,6,26\\n127,66,79,53,34,12,12,3,3,9,0,3,3,9,0,6,3,0,3,6,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,7,7,0,0,55,127,63,0,7,55,95\\n0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,84,127,0,84,42,42,42,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,38,127,66,66\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,95,127\\n63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,127,63,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,4,19,19,58,102,127\\n0,0,0,0,0,0,0,31,31,63,0,95,0,31,0,0,0,0,0,0,0,0,0,0,0,63,63,95,63,63,127,0,0,0,0,0,0\\n127,47,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\\n0,95,127,63,63,63,63,31,31,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,31,0,0\\n11,0,11,40,34,34,11,34,40,11,0,5,0,0,5,28,0,5,127\\n127,95,31,31,31,0,0,0,0,0,31,127,31,0,0,0,0,0,0\\n0,0,84,84,84,42,0,84,0,42,0,0,0,0,84,0,42,127,0\\n63,63,63,31,0,0,31,0,0,0,63,95,127,31,63,95,63,0,0\\n28,28,14,0,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,14,0\\n101,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101\\n127,75,61,34,20,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,7,16\\n127,50,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,6,0,0,0,0,6,82,88\\n127,49,35,49,42,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,35,14,56\\n63,127,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,31,84\\n127,84,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,31,84\\n127,60,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,62\\n127,78,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,22,58\\n127,57,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,6,127,127\\n127,55,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127\\n127,86,68,37,35,26,18,13,7,10,16,0,1,1,0,0,1,3,0,0,0,3,4,2,2,3,0,1,3,10,8,14,12,17,29,26,24\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,9,11,13,2,2,6,0,13,24,4,29,27,27,24,52,127\\n63,127,95,0,31,0,0,0,0,0,31,63,31,63,31,31,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,26,127\\n127,77,39,17,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,13,37\\n127,70,28,37,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,5,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,0,72,0,72,127,18,36\\n127,84,38,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,6\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,4,4,2,0,4,6,25,63,127\\n76,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,127\\n88,127,38,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,7,14\\n0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,28,28,56,84,127,56,28,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,31,0,0,0,0,31,0,0,31,0,0,31,0,0,0,0,31,0,63,63,0,0,31,0,0,0,0,63,63,31,0,0,0,95,127\\n31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,47,111,95,127,63,31,15,47,31,63,47,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,63,127,127,127,127,127,127,127\\n127,58,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,85,83,35,11,4,2,2,0,0,0,0,0,1,0,0,0,0,0\\n127,38,6,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,103,55,23,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,25,0,50,0,0,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,84,127\\n127,46,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n88,44,41,127,63,19,28,9,3,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,34,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,55,127\\n127,54,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\\n127,105,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,95,47,15,15,79,31,0,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,0,0,0,15,63,0,47,31,127\\n118,127,100,38,35,8,8,5,0,0,2,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,5,5\\n84,42,0,0,42,127,0,42,0,0,0,0,0,42,0,42,0,0,42,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,31,127,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,97,57,27,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0\\n14,14,7,7,4,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,49,127\\n127,48,23,8,9,7,6,3,12,5,6,2,1,0,0,0,0,0,0\\n127,57,0,28,11,0,5,0,0,0,0,5,0,0,0,0,0,0,0\\n0,36,18,36,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,0,18,0,0,0,0,0\\n127,90,90,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,13,9,5,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,57,127\\n127,63,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,63,127\\n63,26,2,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,34,127\\n72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0\\n8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,39,52,127,122\\n105,31,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,21,42,116,127\\n84,42,127,84,84,42,0,0,0,0,0,0,0,0,0,0,84,0,42,0,42,42,42,42,42,84,0,42,42,42,0,0,0,0,0,0,0\\n56,68,72,70,73,80,90,90,97,111,109,127,122,106,101,86,80,84,85\\n109,98,109,76,54,45,54,21,26,12,26,31,7,24,21,19,29,34,48,45,61,78,127,92,84,96,69,89,100,76,35,9,2,3,1,0,2\\n0,0,0,1,1,2,4,5,7,2,1,22,35,71,96,105,102,109,127\\n2,19,47,43,26,10,7,5,5,1,8,65,127,16,7,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,10,26,37,67,46,15,24,19,31,31,42,68,127,104,24,15\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,127,63,0,63,63,31,0,0,0\\n0,50,0,0,0,0,25,0,0,0,0,25,25,0,25,0,0,0,50,50,76,25,25,76,50,127,0,101,50,25,25,50,0,0,0,0,0\\n46,127,69,69,11,0,0,11,0,0,0,0,0,0,0,0,0,11,11,34,23,0,103,92,69,80,57,92,34,80,0,23,0,0,0,0,0\\n8,48,127,83,17,13,26,4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,0,111,127,127,15,15,63,31,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,21,9,11,37,58,127,96,28,28,7,2,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,30,127,91,76,40,30,10,20,5,10,10,5,0\\n127,39,39,23,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,23,23,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,63,0,127,0,31,31,63,31,31,0\\n90,27,36,127,27,9,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,76,127,76,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,2,13,31,71,119,127,81,25,12,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,6,2,12\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,74,50,127\\n0,0,0,0,0,0,0,0,0,33,42,127,67,16,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,21,21,0,105,84,127,105,42,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n7,7,11,19,7,0,2,0,9,26,23,127,62,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,4,47,57,14,11,21,23,0,0,0,0,11,14\\n7,5,2,0,7,7,5,10,7,28,36,114,49,7,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,5,98,127,44,10,15,12,0,2,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,25,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,50,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,21,21,42,21,21,0,0,0,0,0,0,0,0,0,0,21,0,42,42,21,21,42,42,127,42,0,0,0,21,21,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,25,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,50,127,25,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,34,80,57,46,23,0,11,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,11,115,115,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,23,11,34,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,8,59,33,33,8,25,16,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,8,42,59,93,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,33,0,8,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0\\n0,42,0,42,0,0,42,0,42,42,84,127,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,0,0,42,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,12,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,127,95,31,0,0,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,127,116,74,21,31,10,10,0,10,0,0,0,0,0,0,0,0,0,0,10,0,0,10,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,10,10,52,127,127,63,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,109,59,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,2,17,28,54,70\\n127,50,50,38,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n97,127,48,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,19,39,39,48,9,29,39,58\\n127,49,46,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,61,6,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,27\\n127,127,21,0,21,0,42,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n47,0,0,7,0,7,0,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,15,79,127\\n21,10,21,0,10,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127\\n127,19,0,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n95,47,127,95,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,8,40,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,4,28,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,27,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,20,127\\n0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,50,0,76,127,50,0\\n127,28,0,14,35,0,7,14,7,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,127\\n127,84,26,0,5,0,0,5,0,5,0,0,0,5,0,5,10,5,10,26,26,5,21,37,37,15,5,5,10,0,0,0,0,0,0,5,0\\n50,0,0,0,76,127,25,76,0,25,0,0,0,0,0,0,0,0,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,12,25,114,127,63,63,25,38,38,38,25,25,0,0,0,0,12,12,12,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,127,0,0,31,31,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0\\n0,0,10,0,10,10,21,31,0,0,0,0,0,10,127,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,13,43,90,110,127,20,13,16,6,6,3,6,10,6\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,14,84,70,28,70,0,0,14,56,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,10,0,0,10,37,42,68,79,84,127,37,95,63,37,10,37,37,21\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,21,42,127,84,21,84,105,0,21,0,0,42,105,84\\n0,0,31,0,0,0,0,0,31,0,0,0,0,31,0,0,0,31,0,0,0,0,127,63,127,95,0,0,0,0,0,0,0,0,0,0,0\\n127,0,127,63,127,63,0,0,0,0,0,0,0,63,0,0,0,127,63,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,28,0,7,0,21,35,35,127,63,63,14,14,28,7,0,0,7,0,0,0,0,0,0,0,0,0\\n7,14,7,14,10,7,7,10,14,0,3,3,10,18,72,127,7,3,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,18,0,0,0,0,72,36,0,0,18,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,88,127,76,38,50,0\\n0,25,0,0,25,0,25,0,0,25,0,0,0,25,25,25,0,0,25,25,25,127,25,0,25,50,0,0,25,25,25,25,0,25,0,0,0\\n127,84,42,42,0,42,0,0,21,0,0,0,0,0,42,21,42,42,21,21,63,21,84,0,21,0,0,0,0,0,21,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,50,38,127,76,88,25\\n42,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,127,21,0,0,0,0,0\\n47,71,127,71,47,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,10,0,10,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,16,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,9,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,45,127\\n127,84,21,42,0,10,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,10,10,0,63\\n127,87,63,7,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,52,63,127,127\\n0,0,0,42,127,0,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,42,84,84,84,127,42,84,84,0,127,84\\n127,63,11,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,3,15,27,39,31\\n127,46,23,14,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,2,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,63,95,0,0,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,25,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,0,31,63,0,127,31,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,42,31,21,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,10,0,0,0,0,0,0,10,0,0,0,0,10,0,31,0,10,63,95,95,127,105,63,42,10,10,0,10,0,0,10,0,0,0,0,0,0,0,0,0,0,0,10,10,63\\n70,63,21,7,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,21,0,7,7,0,0,0,0,0,0,7,0,0,0,7,0,14,14,21,56,127,112,63,63,35,28,14,21,0,0,0,0,0,0,0,0,0,0,0,0,14,0,7,14,14,56\\n0,0,0,0,0,0,10,0,0,10,10,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,10,0,0,0,10,127,10,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,10,0,0,0,0,127,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,9,0,127,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n18,72,54,54,127,108,36,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,18,0\\n36,0,54,54,127,127,72,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,42,42,84,0,0,84,0,42,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,50,50,50,127,25,76,25,76,0,0,25,0,25,0,50,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,63,42,21,21,63,84,42,105,63,42,127,42,0,0,42,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,0,127,63,63,0,0,31,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,1,0,0,0,1,0,0,1,11,3,11,17,14,8,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,20,50,51,48,26,29,11,4,4,3,0,2,2,0,1,0,0,0,0,2,11,17,36,79,122,127,87,33,12,6,2,0,2,0,0,0,0\\n0,2,0,0,0,3,1,1,1,1,6,10,17,9,10,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,24,43,37,48,40,19,17,9,2,3,1,0,0,0,1,0,1,0,1,2,7,7,25,80,106,127,69,43,18,14,3,1,6,0,1,0,0\\n0,0,11,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,23,0,23,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,11,127,69,0,11,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,15,15,0,0,31,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,15,0,15,15,0,15,0,0,15,15,0,0,0,0,0,0,0,0,0,127,95,47,15,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,15,15,0,15,0,15,15,31,15,15,0,15,0,0,0,0,0,79,79,63,95,127,95,15,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,0,15,15,0,0,0,0,0,0,0,0,15,0,0,15,0,0,0,31,111,63,127,95,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,5,0,0,0,5,21,121,127,21,5,0,21,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,5,0,0,20,30,91,127,45,15,10,25,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,4,0,0,0,0,0,8,0,0,61,127,20,12,0,0,0,0,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,25,0,127,76,127,127,101,50,101,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n5,13,1,0,0,1,0,1,4,25,63,68,25,1,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,5,10,56,127,49,13,6,4,2,4,0,13,4,1\\n1,14,0,1,0,0,0,1,10,32,71,75,33,5,3,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,5,14,60,127,55,46,14,5,1,3,14,7,0,0\\n0,0,0,0,0,0,0,0,0,0,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,127,95,79,0,31,15,15,0,0,0,0,0\\n0,0,0,0,0,0,0,0,12,12,88,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,25,38,127,38,12,12,25,12,0,0,0,0\\n0,0,0,0,0,10,0,0,10,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,21,95,127,42,10,10,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,127,15,31,0,15,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,7,62,127,57,11,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,9,91,127,46,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,0,10,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,10,21,31,127,95,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,29,0,58,127,58,19,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,59,22,127,74,7,37,0,0,0,0,22,14,7,7,14,7,0,0,7,0,29,37,44,97,97,44,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,111,111,15,63,79,0,0,0,0,0,15,0,0,0,0,0,0,0,0,63,95,79,127,95,95,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,1,5,12,24,44,41,14,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,12,27,55,42,38,38,21,13,6,2,0,0,0,0,0,0,2,0,0,0,0,3,14,37,99,127,85,64,32,13,2,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,17,30,39,48,17,0,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,21,48,56,52,91,48,30,17,0,4,0,0,0,0,0,0,0,0,0,0,0,0,13,21,83,127,105,65,21,0,4,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,0,15,0,0,0,15,47,0,0,0,15,0,0,0,0,0,0,0,0,0,0,31,0,31,63,127,31,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,127,0,127,42,0,0,0,0,0,0,0,0\\n0,0,0,4,4,0,4,18,42,47,94,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,32,117,127,9,9,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,12,50,76,38,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,88,114,127,12,0,12,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,56,127,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,42,56,56,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,38,101,63,50,0,0,0,0,0,0,0,0,0,0,0,0,12,12,127,101,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,111,111,127,47,0,0,0,0,0,0,0,0,0,15,0,0,15,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,9,9,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,24,29,39,43,19,9,0,0,0,0,4,0,0,0,0,0,0,0,0,0,9,14,29,127,73,39,14,4,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,6,12,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,24,42,36,36,42,6,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,78,60,127,102,36,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,14,0,127,70,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,9,15,0,0,12,0,6,41,120,101,31,6,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,12,9,0,25,107,127,107,41,28,12,3,0,0,0,0,3\\n2,0,0,0,2,0,0,4,9,27,55,32,13,4,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,6,0,4,18,60,127,71,36,13,11,9,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,0,76,76,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,50,50,127,101,0,25,25,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,101,12,25,12,0,12,0,0,0,0,0,0,0,0,0,0,12,0,50,88,127,38,50,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,47,111,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,111,127,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,15,15,0,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,63,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,79,79,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,127,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,63,127,114,50,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,127,63,63,0,0,0,0,0,0,0\\n72,30,18,0,12,18,18,12,12,30,12,54,30,54,78,127,102,30,54,48,0,12,24,12,30,0,6,0,0,0,6,0,0,6,6,36,36\\n0,0,0,127,84,42,0,0,84,42,0,84,42,0,0,42,0,42,42,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,35,35,28,14,7,0,7,0,7,0,14,14,0,35,35,49,91,119,84,70,14,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,54,72,72,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,18,0,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,51,5,5,5,17,86,28,69,98,92,127,103,51,69\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,4,56,127,39,4,0,0,0\\n0,0,21,0,21,21,42,0,0,21,0,42,63,21,127,63,21,84,0,0,0,0,0,0,0,0,21,0,42,21,0,0,21,0,0,21,84\\n50,101,25,25,0,0,0,0,0,0,0,0,0,50,25,25,25,25,0,76,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n10,0,0,0,0,0,5,0,0,0,10,5,0,15,63,31,47,42,127,37,58,15,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,21,8,8,8,16,12,16,4,0,0,4,0,0,0,0,0,0,4,8,8,8,4,0,25,71,127\\n0,31,0,63,31,0,63,0,31,0,0,31,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,21,0,21,21,0,21,0,0,21,63,127,105,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,6,9,18,12,12,0,9,27,57,123,127,57,27,12\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,24,87,127,71,26,4,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,58,127,87,68,19,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,127,127,14,14,0,0\\n0,0,0,0,25,0,25,25,0,0,25,25,25,50,76,127,76,0,50,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,11,0,0,0,0,17,11,34,40,34,86,127,103,86,75,75,51,23,17,34,23,11,17,5,23,5,11,0,11,28,34,11,34,127\\n14,7,0,7,0,0,0,0,0,14,28,21,42,14,35,28,84,77,127,56,42,35,14,14,7,0,0,0,0,0,0,0,0,0,0,7,0\\n0,0,0,0,0,0,0,0,0,0,10,10,0,31,74,74,42,31,10,52,31,10,31,10,0,0,0,0,0,0,42,21,21,10,31,52,127\\n0,0,0,0,0,15,0,0,0,0,0,0,15,47,95,127,95,0,111,47,15,47,47,0,0,0,0,0,0,0,0,0,0,0,47,0,31\\n0,0,0,31,127,15,15,0,47,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,42,42,42,84,84,127,0,0,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,14,9,23,9,9,14,23,56,127,117,32,9\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,8,0,4,8,4,20,45,127,106,73,20,8\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,12,25,0,0,0\\n0,0,0,0,0,0,0,0,0,63,127,127,63,127,0,0,127,63,63,63,63,63,0,63,63,63,0,63,0,0,0,0,127,0,127,63,0\\n0,19,9,9,0,48,68,19,29,19,19,39,127,87,48,58,29,68,19,97,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,42,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,95,63,63,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,96,67,62,62,67,87,109,127,76,29,8,3,1,0,0,0,0,0\\n94,85,43,38,38,59,71,107,114,127,69,23,12,3,4,2,0,0,0,0,1,0,2,4,1,3,2,3,2,1,0,0,3,3,2,2,0\\n12,9,9,3,3,9,12,15,41,22,38,19,41,82,76,98,69,111,127\\n0,10,3,4,1,10,13,25,33,74,92,127,116,98,98,78,68,83,69\\n8,4,4,0,0,8,0,0,25,67,50,59,127,114,127,80,84,63,50,46,50,16,29,38,63,42,12,0,0,0,0,0,0,4,0,4,0\\n0,0,0,0,0,0,0,0,0,0,1,8,20,29,42,65,117,122,127\\n127,31,84,42,21,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,43,26,30,13,0,10,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,11,3,78,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,26,8,2,4,8,11,29,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,16,55,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,127,127,127,0,42,0,0,0,0,42,0\\n127,21,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,43,48,6,4,2,0,4,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,15,1,5,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,117,96,73,64,63,64,62,40,34,24,14,9,5,5,4,3,3,5\\n127,97,69,42,30,23,26,24,26,21,15,12,7,7,5,3,3,3,3,3,3,5,4,6,5,5,7,4,1,1,0,0,0,0,0,0,0\\n59,52,67,37,82,29,37,14,37,7,7,22,14,37,127,74,74,37,44\\n10,3,0,0,0,0,2,9,5,11,46,80,89,102,101,127,117,101,88\\n117,127,87,58,48,48,9,9,19,29,19,0,9,0,0,0,0,9,0\\n127,31,42,42,42,0,31,10,0,0,10,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n19,97,127,48,117,68,19,19,0,0,19,0,9,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,24,6,11,4,6,0,4,0,11,22,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n21,10,10,21,31,127,31,63,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,6,11,8,13,16,15,18,43,49,44,43,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,10,5,10,2,5,12,55,127,66,35,12,35,15\\n127,113,109,88,97,105,115,106,112,79,54,41,30,14,14,9,6,8,0\\n120,127,110,92,70,39,24,20,14,14,14,10,11,6,4,2,1,5,6,5,6,16,11,10,3,3,3,2,6,7,6,2,0,0,0,0,0\\n0,0,0,31,0,0,95,95,63,127,127,63,0,31,0,0,0,0,0\\n0,13,2,2,8,16,13,8,8,5,18,51,62,94,81,86,91,127,97\\n127,47,47,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,72,0,18,18,36,27,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,53,46,11,3,5,13,15,22,18,12,8,34,127\\n127,64,27,11,6,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,3,0,0,0,1,0,2\\n44,29,7,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,82,123,127\\n15,23,9,7,6,1,0,1,0,0,6,11,9,3,14,3,9,6,1,3,7,6,7,9,9,14,17,11,11,4,3,1,12,9,34,53,127\\n127,11,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n68,64,109,127,47,5,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,127,31,95,63,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,31,47,31,63,127,127\\n6,6,0,0,3,0,0,0,0,3,6,6,3,3,0,3,6,3,0,3,3,0,0,6,13,17,3,0,6,3,17,6,17,20,37,127,116\\n127,21,25,8,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,118,101,50,8,4,0,4,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,76,82,26,7,10,5,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,2,5\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,14,28,37,70,127\\n0,2,0,5,7,4,5,7,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,5,0,1,4,15,19,44,112,127\\n127,74,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,88,84,21,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,22,18,52,127\\n0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,11,17,11,5,5,5,0,0,28,34,103,127,103\\n127,39,4,4,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,21,42,127,63,84\\n0,0,0,0,42,0,0,0,0,42,0,42,0,0,42,0,42,0,0,84,84,0,0,84,0,0,0,0,127,0,0,84,0,42,0,42,84\\n127,63,0,105,105,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,25,25,25,0,25,25,25,50,0,25,0,0,0,0,0,25,25,127,0,0,0,0,50,0,25,0,76,25,25,0,0\\n0,0,0,9,11,9,5,39,66,85,127,80,42,19,9,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,5,15\\n50,127,101,50,76,25,50,101,76,101,101,76,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0\\n112,106,115,127,106,105,115,114,123,103,79,62,50,15,11,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,15,18,15\\n0,15,31,15,47,63,127,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,101,101,127,101,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n108,127,90,54,72,36,72,54,36,72,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,36\\n0,18,18,18,18,54,18,18,0,36,0,127,36,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n5,5,13,10,29,18,60,63,127,108,55,26,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,31,0,63,0,31,95,127,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,95,47,63,31,63,111,47,111,127,111,95,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,23,34,69,69,46,127,103,69,80,103,103,57,127,115,127,57,46,11,34,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n5,5,0,0,0,0,0,5,0,0,5,52,127,52,79,10,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,5,0,0,5,0,0,0,0,0,0,0,0\\n0,0,0,0,0,6,0,6,0,6,6,80,127,73,20,0,6,0,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,0,6,0,0,6,0,0,0,0,0,0\\n31,47,15,0,95,47,31,111,47,95,15,47,0,111,63,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,15,127,79,63,15,47,31,47,15\\n11,23,0,92,34,69,46,80,46,92,11,34,23,127,46,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,23,23,11,34,80,34,34,23\\n0,0,0,0,0,0,0,15,15,0,63,47,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,7,7,29,7,22,14,0,7,0,7,29,0,0,0,14,0,0,0,0,7,7,14,29,37,74,127,37,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,23,11,34,34,46,34,23,11,11,0,0,0,0,0,0,0,0,0,0,0,11,11,34,69,103,92,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,12,34,34,34,21,30,27,21,52,37,52,49,89,68,86,127,111,92,34,15,9,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,29,32,44,23,44,32,59,44,41,29,73,79,56,85,118,112,127,50,56,26,20,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,2,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,2,8,45,118,127,37,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,2,0,0,2,13,43,127,116,37,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,0,0,0,0,0,0,0,0,0\\n7,15,0,0,23,55,7,7,15,39,23,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,55,71,127,63,55,7,15,23\\n0,18,0,0,0,90,18,18,0,36,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,127,72,72,108,36,36,18,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,54,108,18,36,72,54,18,18,127,72,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,50,25,25,127,101,25,101,25,25,25,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,42,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,111,15,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,63,21,63,21,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,21,42,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,42,42,0,0,0,0,0,0,0,0,42,0,84,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,12,0,0,0,0,12,12,50,88,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,31,31,31,31,31,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0\\n0,0,0,0,0,21,0,21,42,105,127,0,0,0,0,0,63,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,42,0,42,0,0,0,0,0,0\\n0,0,0,36,0,0,0,36,54,72,127,90,36,18,0,18,54,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,36,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,42,7,14,0,0,0,0,0,0,0,0,0,0,7,21,63,14,49,49,63,127,49,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,11,34,11,23,57,46,0,34,0,0,0,23,0,0,0,0,0,11,34,34,23,46,103,127,46,46,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n7,0,0,0,0,23,39,15,79,119,127,63,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,7,39,23,15,7,7,23,0,7,0,0\\n0,12,0,0,0,0,19,12,38,95,127,82,44,0,0,6,6,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,6,0,0,0,6,12,31,0,25,6,12,0,0,0,6\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,42,0,0,42,0,0,0,0,42,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,42,0,42,0,0,0,0,0,42,0,84,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,53,22,4,1,0,4,2,1,5,1,2,1,0,0,1,4,1,0\\n127,93,35,30,22,17,7,7,7,5,12,20,10,15,12,0,2,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,31,0,63,0,127,95,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,31,116,127\\n127,23,3,3,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,28,6,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n105,31,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,10,21,127\\n0,63,0,0,63,0,0,0,0,0,0,0,0,63,0,127,0,0,0,63,0,0,0,63,63,63,63,0,0,0,63,0,63,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,55,127\\n127,23,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,105,21,10,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,31,127,31,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0\\n127,63,63,63,63,127,0,63,31,0,0,0,0,0,0,0,0,0,0\\n3,6,7,11,18,29,60,118,127,117,98,68,29,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,2,11,27,26\\n0,0,0,0,0,21,0,21,21,0,84,42,21,127,84,63,0,21,84\\n0,0,0,0,0,0,0,1,2,2,3,8,9,15,30,46,77,99,127\\n127,42,63,42,52,116,42,63,42,10,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42\\n0,0,0,0,0,0,0,0,0,0,0,2,6,8,8,17,26,72,127\\n0,0,0,0,0,0,0,0,0,0,0,0,9,27,86,99,99,127,45,45,27,13,27,18,13,9,0,0,9,0,4,4,0,9,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,10,42,127\\n0,0,0,0,0,0,0,0,0,10,10,127,127,13,3,13,3,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,2,0,1,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,34,34,69,103,127,92,86,69,92,109,75,40,86,40,17,34,28,17,5,5,0\\n6,4,5,8,10,10,6,7,11,9,40,127,77,15,7,3,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n24,0,0,6,12,6,30,12,54,24,54,72,127,12,0,0,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,42,0,0,0,42,127,0,127,84,0,0,42,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,1,1,4,7,21,67,114,127,75,26,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,6,11\\n0,0,0,0,0,0,0,0,0,21,0,63,21,21,21,127,21,63,0\\n0,0,0,0,3,2,2,6,4,7,16,21,29,49,66,87,125,127,121\\n0,9,0,0,0,0,0,0,0,0,0,9,9,18,18,32,51,70,127,122,89,61,47,14,9,4,4,0,0,4,0,0,14,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,127,75,117,75,90,66,33,24,0,6,3,0,0,9,15,9,3,0,3,6,6,12\\n19,9,4,19,34,29,39,53,73,73,83,34,4,9,34,127,63,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,0,1,1,3,6,30,38,80,127,126,82,54,25,12,6,3,2,0,0,0,0,1,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,74,31,31,84,63,63,74,31,52,52,10,10,31,127,31,52,52,10,21\\n3,1,1,2,7,6,6,5,10,23,73,127,68,14,3,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,63,63,63,31,0,31,63,127,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,6,1,8,11,13,21,36,45,61,102,113,127,83,74,48,33,24,8,3,2,4,1,1,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,95,63,63,0,63,0,0,0,0,0,0,0,0,0,63,127\\n0,11,11,46,11,11,0,92,80,127,92,57,11,0,0,11,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n43,9,4,1,3,3,11,13,18,12,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,2,2,3,29,127\\n0,0,0,0,0,9,0,0,0,0,29,9,19,19,48,127,87,107,97\\n0,0,0,0,0,0,0,7,0,7,7,0,14,44,67,59,127,97,119\\n8,4,4,6,2,6,4,2,20,12,29,52,41,97,83,127,127,122,62\\n0,0,0,14,0,0,0,0,0,0,7,14,7,7,14,0,49,70,127\\n5,27,11,12,5,5,4,6,1,4,15,4,15,18,15,40,30,50,61,78,127,69,40,15,6,0,1,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,3,3,9,21,42,73,116,127,123\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,21,63,42,21,0,21,127,42,105,63,42,42\\n8,12,29,50,59,114,93,127,59,29,16,4,8,25,33,12,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,5,18,13,10,26,15,39,42,44,23,23,39,31,52,68,97,124,127\\n8,4,4,10,6,8,2,8,10,2,8,2,19,12,21,38,58,55,127,111,114,71,60,21,40,8,2,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,1,2,1,5,14,13,20,20,29,46,100,127,108,105\\n0,63,63,0,127,63,63,127,0,0,0,63,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,9,0,0,0,0,9,9,54,127,36,0,18,9,0,9,0,0,9,18,9,9,0,0,0,9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0,0,0,0,0,0\\n0,0,0,0,0,10,0,0,0,0,0,10,0,74,127,31,0,21,0,0,0,0,31,21,21,10,10,0,0,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,0,0,0,0,0,0,0,0,10\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,31,39,127,95,15,31,7,7,23,7,0,0,0,0,0,0,0,0,0,0,0,15,15,23,31,55,63,7,0,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,9,0,45,45,127,90,36,18,18,9,0,0,0,0,0,0,0,0,18,0,9,0,0,0,0,9,18,54,81,0,0,18,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,2,3,53,127,24,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,2,1,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,3,5,50,127,23,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,2,0,0,0,0,0,0,0,0,0,0\\n0,0,4,0,0,0,4,8,49,24,20,57,127,73,73,69,8,0,12,12,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0\\n0,0,2,0,0,0,2,0,0,2,8,37,127,40,49,37,0,0,8,28,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,3,0,0,0,0,37,127,34,10,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,3,43,127,32,10,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,105,0,0,0,21,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,36,18,127,0,54,18,18,0,0,0,0,0,0,18,0,18,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,7,39,127,87,15,15,0,0,23,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,7,23,0,23,103,63,47,7,7,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,28,127,70,23,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,18,0,4,9,14,56,47,14,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,23,46,46,57,23,80,46,57,92,80,46,23,23,23,0,0,11,0,11,23,34,46,23,34,11,23,0,0,0,11,0,0,0,0,0,0,0,0,34,11,0,11,11,23,34,46,127,69,69,23,23,11,11,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,11,46,46,46,46,69,127,57,34,34,11,23,11,0,0,23,34,0,11,11,34,0,34,11,34,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,0,0,69,23,92,80,103,92,34,23,34,11,11,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,0,127,28,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,10,0,0,3,3,13,0,6,54,127,54,27,10,10,10,0,17,44,13,3,3,0,0,0,0,0,0,0,0,0,0,3,6,6,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,11,3,0,0,0,19,3,27,63,127,91,31,19,3,0,3,3,23,11,3,0,0,0,3,0,0,0,0,0,0,0,0,7,19,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,5,44,127,33,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,6,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,4,47,127,29,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,5,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,14,28,127,98,28,28,0,42,0,0,28,14,70,14,42,70,56,28,0,42,70,42,28,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,42,14,28,14,14,14,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,9,19,68,127,58,58,9,48,19,0,19,29,19,9,29,19,0,9,0,0,19,78,19,19,0,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,9,0,19,9,9,19,9,29,19,9,29,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,4,0,0,0,0,2,17,127,10,2,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,17,0,0,0,0,3,52,127,12,3,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,0,0,127,84,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,42,0,42,0,0,42,0,42,84,42,0,0,84,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,63,127,63,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,127,101,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0\\n127,123,72,58,27,26,20,3,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0\\n91,127,79,79,62,28,26,28,16,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,127,63,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,0,63,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,0,42,21,21,42,21,84,127,42,42,21,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,84,0,0,21,84,84\\n76,25,50,0,0,0,0,50,50,76,50,0,0,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,25,50,50,50,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,58,52,42,74,127,105,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,50,50,76,127,114,88,76,38,63,38,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0\\n127,0,0,0,0,0,84,84,84,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,0,0,42\\n0,0,0,0,0,50,0,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,0,0,0,0,25\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,127,76,76,0\\n4,5,7,8,5,9,6,10,10,9,10,19,26,32,53,54,75,127,119\\n123,51,17,24,6,10,20,13,3,0,6,3,3,10,6,48,68,68,92,102,116,127,102,82,41,34,20,13,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,8,4,25,67,63,78,120,93,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,33,80,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,101,76,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,101,127\\n0,0,28,127,42,14,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,18,0,0,0,0,0,0,0,0,0,36,127,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,42,0,0,0,14,0,0,0,28,42,127,42,14,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,31,0,0,0,31,63,0,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,127,108,18,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,127,59,2,0,0,0,0,0,0,0,0,0\\n0,3,3,0,3,0,0,7,19,30,34,127,107,30,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,3,0\\n63,63,108,54,36,0,0,0,9,9,0,63,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,90,0,9,63,18,0,0,0,0,0,127\\n18,6,0,0,12,0,0,0,0,0,30,66,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,18,0,0,6,0,0,0,0,6,0\\n25,0,0,127,50,0,0,0,0,0,0,76,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0,0,0,0,25,0,25,0\\n0,0,0,0,0,0,0,0,0,42,42,42,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,14,14,18,52,108,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,63,127\\n127,36,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,12,12,127\\n101,50,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,6,0,127,101\\n0,0,0,0,0,0,0,0,0,0,2,8,59,94,99,10,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,27,29,113,127,75,16,16,0,0,0,8,2,0,2,0,0,0,0,0,0,24,18,29,54,86,108,48,2,5,2,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,5,0,0,5,31,31,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,10,52,127,47,21,15,0,10,0,10,5,0,0,0,5,0,0,0,0,5,63,5,26,52,95,68,5,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,127,84,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,76,127,50,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,54,36,54,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,3,127,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,90,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,79,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n24,34,3,0,0,0,0,0,3,0,12,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,127,21,12,0,3,0,3,3,18,34,12\\n0,0,0,0,0,0,0,0,0,0,0,29,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,63,127,24,14,4,0,0,9,19,4,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,57,127,28,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,55,127,25,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,10,5,15,100,100,95,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,15,47,74,127,68,68,0,84,42,0,10,0,0,0,0,0,0,0,0,0,0,5,63,15,42,63,79,5,10,0,0,0,5,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,84,70,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,84,127,98,56,14,0,28,0,0,0,0,0,0,0,0,0,0,0,28,28,0,14,28,70,28,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,63,31,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,127,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,127,0,76,0,0,0,0,25,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,76,25,25,0,0,0,0,0,25,0,0\\n0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,127,95,0,95,0,31,0,0,31,0,63,0,63,0,0,0,0,31,63,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,127,52,74,0,63,42,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,127,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,95,127,31,0,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0\\n84,84,63,105,42,0,42,127,105,63,21,21,63,21,21,0,42,42,0\\n0,0,0,0,0,0,0,15,0,15,0,31,0,0,0,0,0,15,15,0,15,95,47,127,0,15,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,11,0,0,0,0,0,0,23,57,46,127,34,92\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,25,12,25,0,38,25,63,0,127\\n127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,25,0,0,12,0,0,0,0,25,0,0,38,25,127\\n0,0,2,1,2,0,4,9,11,37,51,80,127,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,5\\n0,0,0,0,0,0,0,3,0,3,18,127,67,37,7,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,18,11,11,3,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,4,127,97,9,4,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,19,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,54,108,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,12,0,0,0,0,12,0,12,0,25,0,50,101,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n3,4,5,10,13,12,20,44,67,99,127,114,95,46,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,4,17,41,61\\n0,95,63,31,95,31,0,31,127,63,31,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,3,35,115,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,2,127\\n0,0,0,6,0,2,14,21,38,69,99,127,101,114,74,16,4,4,0,0,0,0,0,0,0,0,0,2,4,0,0,0,0,4,6,27,33\\n0,0,0,0,0,0,0,0,0,1,23,127,54,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,25,2,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,27,127,66,7,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,1,1,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,127,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,25,0,127,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,84,0,42,84,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,54,27,117,108,127,72,36,63,36,45,54,0,27,0,0,0,0,0,0,0,0,0\\n0,0,25,25,76,127,76,50,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n46,127,51,92,34,63,40,34,28,11,5,0,0,11,40,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,127,0,95,31,31,31,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,48,127,127,39,107,68,0,19,19,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,127,84,42,42,21,0,0,0,21,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,127,25,25,76,50,127,76,0,25,76,0,0,0,0,0,25,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,101,127,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,42,127,127,42,42,0,0,42,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n15,7,7,11,11,3,3,3,3,11,11,11,7,42,34,34,57,42,73,96,123,127,84,80,38,19,3,23,11,3,0,7,3,0,0,0,0\\n18,4,28,18,0,9,4,0,9,14,0,4,0,14,14,0,14,28,23,98,127,79,79,9,4,0,4,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,69,69,127,57,34,57,34,11,11,0,0,0,0,0,11,0,0,0,0,0,0\\n0,0,5,0,0,0,0,0,0,0,0,0,0,0,5,20,30,71,127,106,60,55,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,60,16,27,5,22,71,55,44,44,38,33,11,27,22,127,104,49,99,93,110,77,93,33,71,33,38,16,38,0,11,5,22,0,16,0,0\\n127,54,36,0,0,9,18,0,27,9,0,0,0,9,0,0,18,36,36,63,27,36,45,36,18,0,0,0,0,0,0,0,0,9,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,84,21,42,127,63,0,21,84,0,42,21,0,0,0,0,21,0,42,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,18,0,54,36,127,90,108,18,0,0,18,0,0,0,0,0,0,0,0,0,0\\n63,79,15,127,47,95,39,31,31,31,15,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n18,0,18,0,0,0,0,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,108,72,18,0,18\\n0,0,0,0,18,36,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,127,90,127,18,36,36,18\\n2,1,1,0,0,1,0,1,2,2,0,11,21,26,47,82,100,97,127\\n25,12,0,8,0,8,0,0,0,0,0,0,0,0,0,8,12,33,55,127,76,46,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,16,46,127\\n42,84,105,0,63,127,42,0,42,63,42,21,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,45,18,3,6,0,18,42,127,117,12,9,3,9,0,0,0\\n12,3,6,3,8,5,5,6,8,4,6,8,13,24,43,49,78,90,127\\n0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,29,44,44,44,127,37,37,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,25,50,0,12,0,12,25,0,0,0,0,0,0,0,0,0,0,0\\n127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n43,19,8,0,0,2,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,2,26,83,127\\n28,23,5,2,5,2,0,5,0,0,2,0,0,2,0,2,2,5,0,2,0,2,0,0,0,0,0,0,0,5,2,11,5,31,49,72,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,15,45,127\\n50,50,50,127,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,25,50,0\\n0,0,0,0,0,0,0,0,0,15,0,0,15,15,0,31,127,95,63\\n127,66,19,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1\\n127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42\\n0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,84,127,84\\n0,0,0,0,101,0,127,0,50,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,95,31,31,42,63,21,127\\n127,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,127\\n95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95\\n127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\\n127,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,63\\n127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34\\n127,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\\n127,0,0,7,23,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,72,0,0,127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,42,21,0,21,42,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,25,25,25,76,76,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,84,116,31,31,0,10,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,7,55,39,15,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,74,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,28,28,14,56,84,14,70,127,14,42,84,0,14,0,0,0,0,0,0,0,28,0,0,0,0,0,0,28,0,0\\n0,0,0,0,31,31,63,31,127,31,0,0,31,0,63,63,63,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,38,127,38,0,0\\n0,18,0,0,0,36,0,54,72,36,54,127,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,13,33,6,127\\n63,0,0,0,31,0,0,95,127,95,63,63,31,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,112,42,127,28,84,14,56,56,0,0,0,0,0,14,0,0,0,14,14,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,47,47,127,15,31,31,0,0,0,0,0,0,0,15,0,31,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,127,63,63,127,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,127,127,0,63,0,0,0,0,0,0,0\\n127,19,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,127\\n127,89,37,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,127\\n127,40,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,127\\n23,127,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,11,69\\n127,89,43,14,11,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,127\\n127,127,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,74,63,21,10,21,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,81,9,0,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,21,21,10,0,52,42,63,31,0,42,10,0,0,0,0,0,0,0,0,42,42,21,10,10,31,0,0,10,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,93,127,18,7,3,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,31,0,0,0,0,31,0,0,31,31,127,0,63,0\\n0,36,36,0,18,0,0,0,72,54,18,18,36,0,0,18,0,18,0,0,54,18,0,0,0,0,0,0,0,0,0,0,0,0,18,127,72\\n0,63,0,0,0,127,127,63,63,127,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\\n0,0,9,0,0,0,9,90,127,90,54,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,54,36\\n31,0,0,47,15,111,15,127,47,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,31\\n0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,10,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,52,10,10,127,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,127,0,31,31,0,0,31,31,0,31,0,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,127,76,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n16,29,59,71,127,84,110,50,88,101,88,55,76,55,76,88,118,50,25\\n29,39,83,50,94,90,94,79,94,87,54,36,68,97,101,127,58,43,58,43,14,21,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,11,11,0,11,34,34,127,23\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,31,0,0,0,127,127,31,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,95,95,95,127,31,31,95,31,0,0,31,31,31,0,0,0,31,0,0,0,0\\n0,0,0,15,0,0,0,127,63,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,25,0,25,0,25,0,25,50,0,0,0,0,0,0,0,0,0,0\\n28,84,56,0,28,56,127,56,28,56,42,28,14,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,94,84,82,127,82,87,91,58,61,21,9,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4\\n127,63,0,0,63,63,127,63,127,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0\\n50,25,25,50,127,0,127,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,0,31,31,0,95,63,63,31,31,63,63,127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,127,84,0,0,84,42,84,84,42,0,0,42,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,127,18,72,36,36,18,90,36,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,63,105,42,105,105,127,42,63,21,21,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,84,127,127,0,42,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,50,127,50,0,0,0,0,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,72,36,0,54,0,36,18,36,18,54,54,127,54,72,18,36,90,36,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,95,0,0,31,0,95,31,31,0,63,63,31,0,63,127,63,63,127,63,95,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,63,0,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,0,48,29,29,48,29,48,0,39,9,68,68,127,117,39,29,58,29,29,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,47,31,31,111,15,31,47,15,15,47,15,79,127,47,111,127,63,127,15,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,127,127,63,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,21,127,105,127,42,0,42,21,0,0,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,63,0,95,0,0,0,31,0,0,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,42,0,42,84,84,42,0,42,0,84,127,0,0,0,0,42,42,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,21,42,35,28,56,127,56,70\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,54,0,0,36,18,54,54,127,90,72,90,127,36,0\\n0,0,0,0,0,0,0,0,0,0,0,0,2,22,33,41,71,113,127,121,107,91,55,52,35,49,24,55,60,88,57,33,22,16,2,2,5\\n0,0,0,0,0,0,0,0,0,0,0,76,101,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,12,18,27,29,36,24,11,22,23,11,14,13,32,43,51,80,110,127,48,37,26\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,7,21,77,28,63,77,56,112,77,127,56,14,28,14\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,15,0,0,0,0,0,0,0,0,31,31,31,0,127,0,15,0\\n0,0,0,0,0,0,0,0,0,6,0,6,6,12,18,30,48,54,78,66,42,42,114,72,78,42,72,54,96,60,127,120,48,66,0,6,12\\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,9,18,0,72,27,9,18,0,18,27,9,0,9,0,27,0,36,81,127,117,99,90\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,14,112,98,56,84,70,14,0,14,127,56,98,14,42,70,127,56,56,14,28,14,28\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,22,14,52,82,127,89,44,14,7,37,7,44,67,0,14,14,7,14,14,7,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,63,63,31,63,95,95,0,63,63,127,31,31,0,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,42,0,21,42,127,21,42,0,42,63,0,0,0\\n42,127,84,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,50,127,76,101,0,25,0,0\\n101,101,25,127,127,25,25,50,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,38,12,12,25,38,50,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,15,31,15,127,0,15,15,31,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,95,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,84,127,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,52,31,10,31,0,21,0,42,21,31,0,0,0,0,0,0,0\\n31,127,47,95,111,47,15,0,0,15,15,0,15,0,0,0,0,0,0,0,0,0,0,15,0,15,0,0,0,0,15,0,0,0,0,0,0\\n0,0,0,0,0,0,5,0,0,0,0,17,11,5,23,11,57,51,127\\n0,127,50,101,127,25,0,25,25,50,25,0,50,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,87,71,66,60,34,34,15,26,18,26,10,7,7,2,5,5,0,0\\n127,95,95,95,127,31,63,31,95,31,31,0,63,31,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,25,0,0,0,0,0,25,0,0,76,127,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,31,95,31,0,0,0,0,0,0,0,31,31,31,127\\n58,97,73,117,97,127,92,73,29,29,48,14,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,0,50,25,25,50,101,76,0,76,0,0,76,127,0,50,50,25,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,95,127,63,63,63,31,63,95,63,0,31,95,31,127,63,31,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,7,29,44,67,59,112,67,82,74,127,59,44,44,67,89,59,37,7,74,14,22,0,7,0,0\\n0,0,0,5,0,11,0,11,22,44,127,77,44,16,0,11,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,15,15,19,34,15,15,30,34,30,61,53,73,127,65,92,61,15,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,19,29,29,68,87,127,107,48,39,97,97,68,78,48,68,39,19,0,9,0,0\\n0,0,14,14,0,0,0,14,28,56,42,127,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,25,50,50,101,127,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,50,0,50,76,76,0,76,76,25,25,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,127,42,14,70,42,14,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,42,42,28,42,14,28,70,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,63,31,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,84,84,42,127,42,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,42,21,0,0,0,0,0,0,21,21,0,42,21,63,42,84,127,127,127,21,42,63,42,105,42,42,0,21,0,42,0,0,0,0,21,0\\n127,42,21,21,0,21,0,84,21,0,31,0,10,0,10,0,21,31,0,105,95,63,21,52,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,127,93,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,50,76,0,0,0,0,0\\n0,0,0,0,0,0,0,14,0,0,0,14,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,14,0,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,70,14,127,112,42,14,28,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,0,0,42,0,0,0,0,0,0,0,0\\n80,127,73,46,13,13,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,6,40,13\\n127,42,31,8,2,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,42,84,84,42,0,42,127\\n63,31,31,15,31,0,15,0,0,0,0,0,0,0,0,15,0,15,0,15,0,47,0,15,15,0,15,31,31,0,0,0,0,0,127,79,63\\n127,119,111,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,74,0,0,0,0,10,42,127\\n127,42,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,31,10,0\\n127,51,28,5,5,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,127,80,57,27,11,2,8,5\\n101,50,76,0,50,50,101,127,127,0,0,25,0,25,0,0,0,0,0,25,25,0,25,0,25,0,50,50,50,25,101,25,0,0,0,25,0\\n127,0,0,0,63,63,63,63,127,0,63,0,127,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0\\n127,42,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,127,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,18,0,18,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,54,54,0,0,0,0,0,0,0,0\\n127,127,84,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,111,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,31,127,31,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,31,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,127,0,127,95,0,0,0,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,0,127,63,63,0,127,0,0,0,0,127,0,0,63,0,63,0,0,0,0,0,0,0,0,0\\n0,15,0,15,0,47,15,0,0,0,0,0,0,95,0,0,63,63,127,47,31,0,31,47,63,0,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,108,0,127,18,0,72,108,18,90,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,21,63,63,84,42,42,127,42,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,21,0,21,0\\n127,105,63,42,0,0,21,0,21,21,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,0,0,76,127\\n0,63,42,127,63,105,105,21,42,105,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,25,25,76,0,25,25,50,76,50,25,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,63,0,0,127,127,127,0,0,63,0,127,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,92,127,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,127,46,11,11,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,0,11,0,0,0,0,0,0,0,0,0\\n0,90,127,54,0,0,0,0,0,0,0,0,0,0,0,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,127,50,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\\n127,73,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,6\\n127,42,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,95,45,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n108,127,99,75,55,29,16,8,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,4,2,12,8,5,7,8,8\\n0,0,0,0,0,0,0,0,15,15,127,31,31,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,15,127\\n101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,50,127,101\\n127,79,47,39,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,42,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,116,95,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n55,35,30,11,14,7,5,9,1,2,1,1,1,2,1,1,1,0,3,2,6,0,6,2,0,3,3,0,0,1,2,10,17,33,72,115,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,50,76,127,25,63,38,50,50\\n0,0,15,31,15,0,0,0,0,15,0,0,15,31,0,0,0,0,0,0,0,15,15,0,0,0,0,0,0,0,0,0,0,31,79,127,31\\n127,71,20,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,94,46,23,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,9,16,35,72,94,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,112,28,56,127,84\\n127,86,51,23,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,29,78,39,68,19,127,39,58\\n127,73,29,9,0,4,9,0,4,0,0,4,0,0,0,0,0,9,4,0,0,0,0,0,4,0,0,0,0,0,0,4,0,0,0,0,0\\n127,88,48,23,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2\\n127,121,97,41,20,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,10,11,14,14\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,27,86,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,38,127\\n127,80,27,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,18,90,72\\n127,124,68,50,66,34,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,0,5,31,39,34,23,74\\n127,49,42,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,14,21,0\\n72,54,27,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,45,127\\n111,103,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,23,127\\n12,31,31,82,31,44,88,82,114,101,63,50,95,107,31,44,25,19,44,19,12,25,69,44,82,95,127,95,82,31,50,31,19,57,0,25,25\\n0,0,0,36,18,0,0,0,54,18,0,54,0,18,36,72,18,90,0,36,0,127,54,18,0,18,36,18,0,18,0,54,0,0,0,0,36\\n127,86,76,63,26,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,3,6,0,0\\n127,55,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n105,127,89,15,52,26,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,15,21,37,10,0\\n84,21,63,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127\\n0,0,0,0,0,0,42,127,0,0,42,0,0,0,0,42,42,42,84,42,0,42,0,0,42,42,0,0,0,0,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,42,0,42,0,0,0,0,0,84,42,0,42,42,42,84,0,0,0,0,127,0,0,0,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,0,101,101,25,0,0,0\\n0,0,0,0,0,0,0,0,25,0,50,76,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,25,0,0,0,0,0\\n95,127,79,47,47,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,0,0,15,15,0,0,0,0,0\\n127,106,72,20,25,5,2,0,0,0,0,0,0,0,0,0,0,0,0,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,66,10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,20,29\\n0,0,0,0,0,0,0,0,6,3,9,9,12,15,12,9,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,0,15,15,21,9,9,9,3,0,0,0,0,0,0,0,0,0,0,0,3,3,0,6,43,55,127,80,58,27,12,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,8,16,12,16,33,38,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,8,8,38,25,4,8,4,4,0,0,0,0,0,0,0,0,0,0,4,4,4,21,59,88,118,127,67,29,12,4,8,0,4,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,127,112,42,0,0,0,0,0,0,0,14,0\\n0,0,0,0,0,0,0,0,0,0,0,25,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,127,101,38,12,0,0,0,12,0,12,0,0\\n0,0,0,0,0,0,0,0,0,0,0,7,31,87,55,31,7,0,0,7,0,0,0,0,7,0,0,0,0,0,0,0,0,7,23,127,87,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,19,127,29,39,9,0,0,19,0,0,0,0,0,9,0,0,0,9,0,0,9,19,9,68,97,29,9,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,10,84,127,105,42,10,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,37,127,37,7,14,7,7,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,76,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,7,0,0,0,29,14,67,119,127,59,89,44,37,22,29,14,7,0,0,7,0,0,7,0,0,14,7,0,7,14,7,44\\n127,28,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,88,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,28,56,84,98,28,127,56\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,48,127,114,30,6,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,29,9,9,9,9,29,127,48,29,68,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,10,0,0,0,10,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,21,0,21,63,105,127,84,42,21,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,33,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,44,7,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,39,127\\n127,56,13,23,3,0,0,0,0,0,0,0,0,0,6,3,0,3,0,3,6,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,15,31,127,127\\n127,68,17,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,82,27,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,74,20,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,49,14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,38,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,54,45,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,53,97,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,55,127\\n127,59,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,57,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,47,84,127\\n127,69,18,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,95,31,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,10,42,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,127,39,0\\n127,69,19,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,28,70,127,84\\n127,56,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,44,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,95,42,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,18,0,72,36,0,36,90,127,72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,42,0,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,31,127,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,25,0,25,25,101,25,127,25,101,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,72,54,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,79,63,0,0,0,0,0,0,0,0,0,0,0,0\\n127,74,52,25,18,10,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,92,34,10,7,7,7,5,2,10,2,5,0,2,2,0,0,0,0,5,0,0,2,2,5,7,0,5,2,5,0,0,0,7,2,7,10\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,31,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,1,23,127\\n127,125,76,64,51,46,44,57,44,52,33,53,32,35,22,24,11,15,15,13,6,9,4,5,3,1,1,0,0,0,0,0,0,1,1,1,8\\n0,28,28,14,42,42,70,14,14,42,56,84,112,70,84,127,42,56,42,28,14,28,0,0,0,0,14,28,14,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,10,15,30,54,55,26,16,25,38,66,97,127,116,95,81,95,85,88\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,16,42,0,0,0,0,8,8,42,42,127,110,25,42,8,16,16\\n23,75,127,63,51,80,46,57,80,69,51,34,46,57,86,63,46,51,46,40,23,28,11,5,5,0,11,0,0,28,11,17,11,17,40,5,11\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,127,57,34,34,0,0,23,34,34,11,46,23,57,57,46\\n112,127,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,28\\n0,0,25,25,0,0,0,25,0,0,50,0,0,0,50,50,76,0,25,0,0,0,0,0,0,0,0,0,0,50,0,50,0,50,50,127,101\\n0,0,0,0,0,0,0,0,63,63,0,0,127,63,0,127,127,0,63,0,63,0,0,0,63,0,0,0,0,0,0,0,0,127,63,0,0\\n0,0,0,0,0,0,0,0,0,0,36,108,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,14,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,50,25,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,50,127,63,88,0,12,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,42,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,63,127,21,105,21,21,21,21,0,0,0,0,0,0,0\\n127,6,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,18,18,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,31,0,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,11,0,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,11,0,0,11,0,0,0,0,0,0,0,0,0,0,11,0,23,34,92,127,57,34,11,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,108,36,54,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,127,36,0,0,0,0,0,0,0,0,0\\n127,103,71,63,55,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0\\n0,0,0,0,0,0,0,0,0,0,11,17,25,40,46,51,101,127,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,127,127,101,50,25,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0\\n127,97,21,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,84,63,21,0,0,21,21,0,0,0,21,63,127,127,0,0,21,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,63,127,15,47,0,0,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,0,0,25,76,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,54,72,36,72,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,0,0,0,0,0,0,0,0,0,25,25\\n0,0,0,0,0,0,0,0,31,0,31,63,0,0,63,127,31,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,0,0,0,0,0,31,0\\n23,0,0,0,23,23,23,0,0,0,0,0,0,0,11,127,46,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,127,69,0,0,0,11,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,21,21,52,31,42,127,52,84,74,52,10,10,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,56,70,127,84,84\\n0,0,0,0,0,0,0,0,0,42,0,127,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,0,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,127,0,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,50,127,0,0,0,0,25,0,0,25,0,25,0,0,0,25,25,101,0,0,0,25,76,50,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,95,0,0,0,31,31,31,0,0,0,0,0,0,31,63,0,0,31,63,31,0,31,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,15,0,0,0,0,15,0,31,63,127,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,18,0,0,0,0,0,0,0,0,18,18,127,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,56,127\\n127,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11\\n127,40,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,9,27\\n127,50,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,12\\n127,45,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,36,0\\n12,6,18,6,12,6,6,18,12,6,18,24,30,6,24,24,24,6,18,12,0,12,0,12,6,18,12,6,12,48,18,24,78,30,96,127,96\\n127,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,10,0,0,10,10,52,95,116,116,84,63,116,63,74,31,31,10,21,10,21,21,31,52,10,52,31,21,63,116,127\\n0,0,0,31,0,0,31,0,0,31,0,95,0,0,31,31,0,31,0,31,31,63,95,63,127,31,31,0,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,50,0,25,0,25,0,50,127,25,25,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0\\n0,42,0,127,127,127,0,0,0,0,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,6,3,13,53,127,76,40,3,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,23,63,43,23,13,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,6,20,33,66,60,50,13,6,3,3,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,3,17,61,127,78,24,44,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,27,24,89,102,61,20,6,3,0,0,3,0,0,0,0,0,0,0,0,0,10,3,13,37,92,109,82,82,92,17,3,0,0,0,0,0,0,0\\n0,0,0,0,0,0,15,0,0,31,15,47,15,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,127,31,15,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,63,127,15,0,15,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,71,39,7,15,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,50,101,76,76,25,50,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,127,76,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,14,56,70,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,56,70,127,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,12,0,0,25,38,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,12,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,76,127,127,50,12,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,76,127,50,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,21,0,21,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,63,0,21,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,95,47,0,0,0,0,0,0,0,0,0\\n127,58,14,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,5,25\\n127,72,10,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,12,25,88,25,25,12,50,127\\n127,119,115,71,44,38,34,11,3,0,1,5,0,0,5,0,1,1,0,0,0,0,0,1,0,1,1,0,0,1,3,13,5,3,13,7,3\\n127,55,79,19,7,7,0,0,23,0,3,11,3,0,7,15,11,35,3,3,7,0,3,3,0,7,0,0,0,0,0,0,3,0,3,7,15\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,16,2,0,0,0,0,0,0,0,0,2,16,44,127\\n127,62,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,73,12,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,18,9,0,18,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,57,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,51,17,28,8,8,5,0,0,0,0,0,2,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,42,21,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,127\\n127,54,13,9,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,63,127\\n36,36,127,72,108,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,21,0,0,0,0,0,0,0,0,21,42,0,0,0,21,0,0,0,0,0,42,0,21,0,0,0,0,0,0,42,21,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,2,0,10,64,127,120,90\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,95,0,127,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,23,34,77,127,115\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,12,0,0,0,12,0,12,0,12,25,12,25,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,127,25,76,0,0,0,25,50,25,0,0,0,25,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,9,9,27,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,7,7,39,71,71,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,18,108,72,90,90,127,18,72,18,0,18,18,36,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,10,10,52,127,84,63,10,10,42,10,0,10,31,10,10,21,0,10,10,31,10,10,21,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,10,0,10,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,31,111,111,127,63,47,31,15,15,0,15,0,31,47,47,31,0,47,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,15,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,0,63,63,63,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0\\n0,31,0,0,0,0,0,0,63,0,127,31,127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,31,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,71,127,87,16,6,26,9,0,0,3,0,0,0,0,0,0,0,0,0,9,0,0,6,6,9,3,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,31,127,52,10,21,15,15,0,0,0,0,5,0,0,0,0,0,0,0,0,10,15,5,0,15,10,26,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,42,105,21,127,21,0,0,0,0,21,0,21,21,0,0,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,21,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,0,31,63,95,127,31,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,63,0,95,127,31,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,31,0,127,127,31,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,0,31,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,21,0,127,42,42,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,63,0,0,21,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,101,25,0,0,0,0,0,0,0,50,127,101,25,50\\n63,127,95,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,21,21,127,105,105,63,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,7,31,31,47,23,111,127,0,7,0,15,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,7,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,14,37,44,37,52,127,22,7,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,127,63,18,27,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,95,95,127,127,95,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,31,0,127,127,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127\\n0,0,0,0,0,0,0,0,0,9,63,36,108,54,127,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,36,18,81,27,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,23,80,127,103,57,46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,69,34,23,23,11,0,0,0,0,0,0,0,0\\n0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,127\\n127,45,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n56,28,98,127,84,56,84,42,14,14,28,42,28,0,28,14,28,14,42,98,28,70,14,0,0,0,0,0,14,0,0,14,42,28,0,28,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,63,0,0,0,0,38,63,127,25,0,0,0,0,0,0,0,0\\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,21\\n0,0,0,0,0,5,10,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,5,26,58,127\\n50,50,50,127,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,102,58,34,53,29,14,4,9,14,0,0,9,4,4,19,14,4,14,4,39,9,4,0,0,0,0,0,0,4,4,0,0,14,24,39,48\\n0,25,0,25,0,25,0,0,25,25,76,0,76,0,127,0,25,76,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,127,0,25,0,50,25,25,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,21,0,42,0,0,42,42,63,84,21,0,42,0,0,0,21,0,21,84,0,42,127,42,42,42,21,0\\n0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,15,10,26,21,47,47,74,100,116,127,47,37,26,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,7,0,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,7,7,7,29,22,14,52,89,127,52,89,44,14,14,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,42,127,42,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,63,63,127,95,0,95,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,31,31,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,67,19,8,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,93,35,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,31,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,68,92,14,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,80,51,11,23,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,57,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,57,31,25,19,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,95\\n84,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,84\\n127,47,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,0,63\\n14,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,127\\n127,31,63,63,0,31,31,0,0,0,0,0,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,38,50,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,40,28,17,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,42,21,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0\\n127,102,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,9,73,78\\n127,0,31,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n14,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,14,21,43,127,94\\n127,77,7,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,0,0,0,0,0,0,7,14\\n0,127,25,0,0,50,0,0,25,0,0,0,0,0,0,0,0,50,0,0,0,0,0,50,0,0,0,0,0,0,0,0,25,0,0,0,0\\n0,0,9,0,0,0,58,39,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,127\\n25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,63,127\\n108,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,127,36\\n63,63,31,63,63,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,31,127,127,31,31,0,31,31,0,0,0,0,0,0,0,0,0\\n31,0,0,0,31,0,31,15,47,63,15,47,0,0,15,15,15,63,79,31,47,15,15,0,31,47,79,15,63,79,79,127,79,0,0,0,0\\n108,18,54,0,36,0,0,0,0,0,0,18,0,18,0,0,18,0,54,54,127,90,90,72,36,0,0,0,0,18,0,18,54,0,18,0,0\\n0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,7,7,0,15,15,0,7,0,3,3,39,75,127\\n127,87,34,7,4,4,9,9,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,3,0,4,6,13,30,31,45\\n127,22,3,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,0,6,0,6,0,19,6,38,31,127\\n0,36,18,0,18,0,0,18,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,54,90,72,90,127,127,72\\n127,102,63,33,12,27,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,0,3,3,9,18,24\\n54,27,36,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,45,0,54,108,127\\n127,127,95,47,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,3,3,15,43,23,79,127\\n127,35,7,7,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,56\\n127,31,47,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,64,27,3,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0\\n127,99,27,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,62,50,22,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,63,127,0,63,31,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0\\n0,0,10,10,0,0,0,10,0,10,0,31,10,52,10,42,42,84,127,116,21,52,42,0,0,0,10,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,9,0,4,4,4,9,39,83,127,48,29,19,29,19,68,29,0,19,19,0,0,0,0,0,0,0,19,19,39\\n0,0,0,0,0,0,0,0,0,0,0,0,0,2,8,8,44,33,127,52,24,5,22,16,11,2,0,2,5,41,27,0,0,2,2,2,0\\n0,0,0,0,0,0,0,0,0,0,0,50,50,50,127,50,127,50,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,112,21,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,37,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n28,14,0,28,0,0,0,0,14,0,28,70,42,70,14,84,127,84,56\\n0,36,0,36,0,0,0,0,0,36,18,18,0,18,36,108,127,36,36\\n0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,46,46,127,69\\n34,23,11,5,17,0,0,0,0,23,17,34,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,63,127,92\\n127,63,127,0,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n38,57,127,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0\\n127,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,42,63,0,21,95,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,39,26,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,45,127\\n127,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,18,18,72,72,0,54,0,0,0,0,0,18,0,0,0,0,18,18,0,0,18,0,0,0,0,36,18,18,18,127,54,0,0,0,36\\n0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,127,0,31,63,31,0,63,0,0,0,31,0,0,0,0,0,0,0,63,0,0\\n0,0,0,0,0,31,31,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,127,0,63,0,31,31,0\\n127,74,28,15,24,10,6,0,8,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,4,10,6,8,10,37,87\\n127,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,10,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,7,53,127\\n0,0,0,0,0,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,127,0,63,31,0\\n127,68,43,9,24,9,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,19,0,19,4,34,63,19\\n127,111,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127\\n15,15,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,127\\n0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,63,0,0,0,0,0,31,0,31,63,31,95,127,31,0,0,0,0,63\\n36,0,0,0,0,36,0,127,36,0,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,0,90,90,36,18,18,0,36\\n127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14\\n21,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,26,75,127\\n127,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,29,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,59,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n101,76,127,0,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,25,50\\n72,127,96,120,12,15,18,3,3,0,0,0,0,0,0,0,0,0,0\\n127,127,47,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,63,63,63,63,0,0,0,63,127,0,0,127,0,63,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,80,127,11,0\\n127,79,15,79,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,38,38,63,25,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,50\\n56,46,15,15,10,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,53,69,127\\n127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,111,111,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\\n127,84,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,24,0,4,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,63,127,127,0,63,0,63,127,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,31,15,47,127,47,47,15,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,18,0,127,0,0,0,18,0,18\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,95,127,0,63,0,0,0,31,0,63\\n0,0,0,0,0,0,0,0,0,0,28,127,112,112,70,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,95,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,127,42,84,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,0,0,0,15,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,15,0,0,0,15,31,15,0,0,0,31,0,0,31,47\\n63,63,31,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,127,63,0,0,31,0,0,31,31,0,0,0,63,63,63\\n31,0,31,0,31,0,31,31,0,0,31,31,95,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0\\n63,12,12,50,25,38,0,0,0,12,127,0,0,50,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,76,25,127,25,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,21,0,21,0,0,0,0,0,21,21,0,0,21,0,0,0,42,21,21,42,127,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,63,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,63,31,31,127,111,127,63,15,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,31,0,79,0,0,127,63,47,0,15,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,70,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,11,0,11,0,0,0,0,0,0,0,11,11,0,0,80,127,46,34,80,0,11,34,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,127,95,0,0,31,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,42,0,0,42,0,0,127,84,42,0,42,84,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,0,0,18,127,36,54,0,18,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,36,18,0,18,127,36,18,36,0,18,18,0,18,90,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,127,127,63,63,0,0,0,63,63,0,127,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,47,47,63,127,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,84,127,127,84,42,84,0,0,0,42,0,0,0,0,0,0,0,0\\n90,81,127,36,0,18,18,9,0,0,9,0,0,0,0,0,9,27,0\\n0,31,127,0,63,0,0,31,0,0,0,0,63,0,31,127,63,0,0\\n0,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,0,127,63,0,0,0,31,0,0,0,0,63,0,63,63,0,127,0,0\\n127,63,31,21,10,0,0,0,0,0,0,0,21,0,21,10,10,21,21\\n0,0,0,0,0,0,0,3,3,15,29,101,123,101,37,17,3,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,3,19,51,81,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,7,18,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,3,13,30,13,43,127\\n0,0,0,0,3,0,0,0,0,10,3,50,127,58,18,14,0,0,0,3,0,3,0,0,3,7,0,0,0,0,0,0,3,3,25,21,14\\n0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,127,0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,84\\n0,1,1,1,0,0,0,2,5,29,77,14,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,52,127\\n0,0,0,0,0,0,0,0,0,0,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,63,21,42,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,29,127\\n0,0,0,0,0,0,0,0,25,66,30,45,127,71,25,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,20,40,30\\n0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,63,127\\n0,0,0,0,0,0,0,0,95,31,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\\n0,0,0,0,0,0,0,0,31,0,0,63,63,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,95,127\\n127,0,0,0,0,0,0,0,0,0,0,3,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,14,124,127,38,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,8,77,127,34,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,22,127,42,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,9,0,0,19,29,9,9,29,39,127,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,0,9,0,0,0,0,0,0,0,9\\n12,38,12,38,12,12,12,12,0,0,12,38,127,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,12,12,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,15,15,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,0,31,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,76,127,101,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,42,0,0,0,0,42,0,84,0,42,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,21,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,127,21,21,21,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,111,15,0,0,0,0,31,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,127,95,95,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,63,21,21,21,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,56,77,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,7,14,42,56,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,5,16,93,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,16,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,105,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,127,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,84,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,15,51,127,111,35,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,40,127,34,23,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,63,31,0,0,127,127,63,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,8,0,0,8,42,127,59,25,16,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,4,70,94,127,23,0,0,4,0,0,4,9,0,0,0,0,0,0,0,0,0,0,0,0,14,4,28,28,14,4,4,0,0,0,9,18,42,28,4,0,0,0,0,0,0,0,0,0,0,4,4,9,42,122,23,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,16,8,59,84,8,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,8,33,42,16,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,8,16,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,84,127,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,1,6,9,6,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,2,2,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,8,31,127,50,27,4,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,6,10,9,5,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,4,2,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,55,127,79,31,0,5,0,0,0,0,0,0,0,0\\n0,0,1,0,2,2,7,9,17,60,107,127,83,16,0,1,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,0,18,35,45,24,14,8,1,5,1,1,1,0\\n0,0,0,0,0,0,1,1,11,56,47,127,53,6,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,3,3,3,2,2,1,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,4,28,127,84,21,7,8,9,13,7,2,1,1,0,0,0,0,0,0,0,0,0,0,0,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,25,123,127,38,12,13,10,3,1,1,0,0,0,0,0,0,0,0,0,0,2,7,2,6,4,5,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,7,7,0,0,0,14,70,77,127,42,7,14,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,7,7,0,35,14,0,0,0,0,0,0,0,0\\n2,2,0,0,0,2,4,8,15,25,49,127,55,19,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,15,19,10,0,0,0,0,0,2,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,39,31,31,0,7,0,0,23,15,0,7,15,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,91,106,20,0,15,0,0,0,10,0,5,5,5,5,0,0,0,0,0,5,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,0,54,72,72,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,108,54,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,72,127,54,36,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,36,18,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,18,36,0,54,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,54,72,127,0,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,50,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,6,18,12,0,12,42,114,127,96,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,48,24,42,12,0,6,0,0,0,0,0\\n12,0,0,0,6,6,12,12,38,25,127,127,88,38,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,38,44,12,19,0,6,0,6,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,127,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0,31,0,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,127,84,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,127,105,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,21,42,21,84,0,0,0,0,21\\n0,0,0,0,0,0,15,15,47,79,31,127,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,15,79,31,15,15,47,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,63,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,127,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n36,0,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,18,54,54,127,0,54,18,0,0,0,0,0,0,0,0\\n42,105,127,21,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,105,84,63,127,63,0\\n127,55,23,23,47,0,0,0,0,0,0,0,0,0,0,0,0,7,0,23,7,7,7,7,15,31,23,55,31,7,0,0,0,0,0,0,0\\n0,42,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,42,42,0,42,84,127,0,0,0,0,42,0,0,0,0,0,0\\n122,127,42,8,8,4,0,1,0,2,2,2,2,1,0,1,0,0,0,5,8,8,45,84,112,109,42,9,2,2,1,2,4,4,4,1,5\\n127,0,0,15,0,31,15,63,0,47,15,63,31,0,0,63,63,15,31,31,0,15,63,15,15,31,31,0,31,0,15,15,15,95,15,47,31\\n127,38,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,42,84,42,0,0,42,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,127,21,0,0,0\\n84,0,0,127,42,84,0,0,0,0,0,0,42,0,0,0,0,0,84,0,84,42,42,0,0,0,0,0,0,0,0,42,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,11,17,65,127,123,27,20,4,0,1,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,127,90,72,72,54,54,0,0,54,36,18,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,15,79,63,87,103,127,63,63,39,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,31,95,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n23,5,11,17,40,11,11,69,28,0,23,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n16,50,25,16,50,127,67,8,25,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n53,70,94,115,127,97,62,11,8,2,2,17,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,9,0,27,27,54,27,81,36,0,9,127,72,27,0,9,27,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,66,127,121,93,77,55,22,11,0,5,0,27,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,63,45,36,127,108,127,117,63,72,9,18,54,54,36\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,111,127,63\\n72,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,18,127,0,72,36,72,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\\n0,84,84,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,127,84,0,42,0,0,0,0,0,0,0,0,0\\n0,63,0,63,0,0,0,0,0,0,63,0,127,0,127,0,63,0,63,0,0,0,0,0,0,63,0,63,0,0,127,0,63,63,0,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,0,0,0,31,127,63,0,0,0,0,0,0,0,0,0,0,0\\n50,127,76,50,101,101,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,127\\n0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,127\\n90,9,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,36,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,18,9,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,13,8,52,127,87,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,21,17,8,0,8\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,31,31,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95\\n127,98,70,70,56,28,42,0,14,14,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,28,42,70,28\\n127,56,98,42,98,28,70,14,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,0,42,28,56,56,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,84,127,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n116,100,64,34,26,21,18,20,29,43,68,95,127,89,55,39,25,20,21\\n0,0,6,0,6,0,6,12,12,12,12,19,25,19,25,44,44,76,127\\n127,0,127,63,0,63,127,63,127,0,0,63,0,127,0,0,127,127,0\\n5,2,5,5,10,2,0,2,5,0,10,15,7,15,23,39,74,82,127\\n0,0,0,0,0,0,0,0,42,127,84,127,0,84,0,0,84,0,0\\n127,77,22,9,8,6,3,1,2,3,4,3,4,3,1,3,2,1,2,2,10,12,17,76,120,64,17,9,4,3,3,4,1,3,4,3,5\\n36,54,36,18,18,36,127,18,18,36,54,18,72,18,0,0,0,18,36\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,127\\n127,46,23,11,34,28,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,21,0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n60,120,102,127,84,90,54,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,52,42,74,42,95,10,31,95,21,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,15,17,1,10,12,25,34,56,77,119,114,127,101,49\\n112,66,38,15,14,20,36,21,38,73,72,113,127,65,51,81,59,38,34\\n0,31,0,15,15,15,0,31,0,47,0,0,31,15,31,95,63,79,127\\n0,31,47,15,15,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,47,15,127,127,111,31,79,79,0,0,0,0,0,0,0,0\\n127,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,6,0,9,45,44,62,35,34,20,19,29,77,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,57,0,34,127,0,0,0\\n24,28,50,39,41,47,76,79,116,123,127,122,84,47,47,46,87,78,114\\n0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,127,54,36,36,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,24,127\\n127,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,28,14,28,127,42,28,28\\n0,0,0,0,0,0,21,105,127,105,31,10,0,0,0,0,0,0,0\\n0,25,0,50,0,50,25,0,101,127,50,76,0,76,76,25,76,101,101\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,127,104,37,14,7,7,0,0,0\\n127,116,81,67,57,61,77,86,110,83,120,114,102,106,100,63,65,90,90\\n0,21,21,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,63,42,21,0,0,21,0,21,0,63,42,0,127\\n76,25,127,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,27,57,49,71,63,93,74,63,74,127,99\\n127,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,127,127,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,127,127,63,63,63,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,127,104,66,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127,71,71,10,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,9,0,0,9,18,9,18,49,22,22,31,127,31,22,31,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,19,6,6,57,12,63,25,25,38,38,127,25,12,6,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,25,25,0,0,0,101,127,101,101,101,127,101,25,0,25,0,0,0,0,0,25,0,0,25,0,0,0,0,0,25,0,0,25,25,0\\n0,31,0,31,0,63,63,127,95,31,127,31,127,0,31,0,0,0,0,63,0,31,0,31,0,0,0,0,31,0,0,31,31,31,0,0\\n42,0,0,84,0,42,42,0,0,42,0,84,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,84,84,42,42\\n0,0,63,0,31,0,0,0,31,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,127,63,63,0,0\\n127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47\\n127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47\\n0,0,0,127,63,0,0,0,0,0,63,63,0,127,0,127,0,0,127,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,50,0,0,0,0,0,0,25,50,50,25,0,25,0,0,25,127,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,52,112,127,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,28,61,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,42,127,84,0,0,0,84,28,28,14,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,70,70,0\\n0,0,0,0,25,0,0,0,0,50,50,25,0,25,50,76,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,127,50,50\\n0,0,0,0,0,0,21,0,0,0,21,84,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,42\\n127,0,0,0,31,0,31,0,0,0,0,0,0,0,31,63,31,0,31,31,0,0,0,0,63,63,0,0,63,95,0,31,31,0,0,0,0\\n0,0,0,0,0,0,0,0,25,0,0,25,25,50,0,76,127,0,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,127\\n0,0,0,0,0,0,31,31,127,0,127,0,0,0,31,31,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,31,95,63,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,0,31,7,47,87,127,95,47,47,47,47,15,31,39,55,7,95,95,55,31,39,0,15,31,0,31,7,39,7,103,119,79,87,71,23,47\\n0,0,0,0,0,0,0,0,0,18,18,0,0,0,36,72,54,54,0,127,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,127,38,88,0,38,38,38,12,25,12,12,25,25,0,25,12,25,25,12,63,63,76,101,101,38,76,38,12,0,50,12,25,38,12,76,76\\n42,105,63,127,21,0,0,21,0,0,0,21,0,0,0,0,0,21,0\\n127,83,83,35,107,37,10,30,10,15,10,21,17,10,0,2,8,0,4\\n0,0,0,36,18,0,0,18,0,0,0,0,0,0,0,0,0,0,0,18,18,90,90,18,36,54,127,36,0,0,0,0,0,0,0,0,0\\n0,4,0,4,0,4,0,0,0,0,4,0,4,0,4,4,127,122,18\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,77,127\\n127,127,63,63,127,15,31,63,15,0,63,0,0,31,0,15,15,15,15,0,15,15,0,47,15,31,31,15,15,63,111,111,47,95,79,79\\n36,127,45,9,45,9,18,18,0,18,18,0,18,9,0,0,0,27,9,18,0,0,0,18,18,0,9,9,18,18,36,36,99,54,81,72\\n0,0,0,0,0,0,0,0,0,0,25,76,38,25,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,0,12,0,25,38,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,42,0,84,84,42,84,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,63,31,127,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,42,84,0,0,84,0,0,0,42,0,84,127,0,0,0,0,84,0,0,0,0,0,42,0,0,42,42,84,42,0,0,84\\n0,0,0,0,0,0,0,63,0,63,127,0,0,0,63,0,63,0,0\\n23,115,103,115,115,92,103,46,103,80,127,103,69,23,11,46,11,34,0\\n0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,31,127,63,31,95,0,0,0,0,0,0,0,0,0\\n127,25,101,50,0,0,50,25,0,0,0,0,0,50,0,0,25,25,25,0,0,0,50,0,0,0,0,25,25,25,76,0,50,0,0,25\\n63,95,0,63,0,0,63,31,0,0,0,0,63,31,0,0,31,0,0,0,0,0,0,0,31,0,63,95,63,63,63,127,31,0,0,31\\n0,0,0,0,0,0,0,0,0,0,0,76,25,0,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,101\\n0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,50,0,25,0,0,0,0,25,127,50,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,10,10,42,105,127,95,21\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,31,95,31,63,95,0,31,31,31,0,0,0,0,0,0,0,0,0,0\\n0,14,0,0,0,28,0,14,14,42,127,84,42,0,14,28,0,42,0\\n127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,42,42,42,0,0,42,0,42,42,0,0,0,0,0,0,0,0,127,42,42,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,95,0,31,31,63,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,31,63,0,0,127\\n0,0,0,0,0,63,47,15,95,127,63,31,47,47,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,47,127\\n0,63,0,31,0,0,0,31,0,63,31,31,0,0,63,31,95,0,127\\n70,21,28,21,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,49,77,77,127,56,21,49,0,0,0,0,0\\n0,0,0,0,0,0,31,31,0,0,0,127,31,0,31,63,0,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,63,0\\n0,0,0,0,0,0,0,9,9,27,36,45,81,72,9,72,90,45,27,0,9,0,0,0,0,0,0,0,0,0,0,0,18,36,99,99,90,72,27,81,127,36,36,9,0,0,0,0,0,0,0,0,0,0,0,18,36,27,36,45,9,36,54,45,63,36,9,18,9,9,0,0\\n0,0,0,0,0,0,0,0,10,31,63,31,42,42,42,95,52,116,31,0,0,0,0,0,0,0,0,0,0,0,0,10,21,84,42,127,116,63,105,95,95,95,0,10,0,0,0,0,0,0,0,0,0,0,0,0,21,42,52,42,63,42,95,42,63,42,31,21,10,10,0,0\\n127,52,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,50,101,0,127,101,0,25,0,25,0,25,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,28,56,127\\n0,0,0,0,0,0,0,0,9,9,0,0,0,0,9,27,63,117,127,72,27,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,76,25,0,0,0,76,127\\n0,0,0,0,0,0,0,0,21,127,0,0,0,0,0,21,0,0,0,0,0,21,0,0,0,0,0,21,21,0,0,0,21,0,0,0,0\\n42,21,42,21,0,0,0,0,42,21,0,0,0,0,0,42,0,0,0,0,0,0,0,21,127,42,21,21,42,0,21,0,0,0,0,0,0\\n0,0,63,63,63,127,0,0,0,0,127,127,0,63,0,63,127,63,0\\n0,31,0,0,0,0,0,0,31,31,0,0,31,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,31,0,63,0\\n0,0,0,0,0,0,0,63,0,63,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,63,127,127,63\\n0,0,0,0,0,0,0,0,42,84,84,127,127,0,42,0,0,0,0\\n127,127,111,31,63,63,47,31,0,0,0,0,0,0,0,0,0,0,0\\n0,76,127,76,0,0,127,50,50,0,76,101,50,76,25,25,0,25,0\\n0,0,0,0,0,0,0,0,0,127,95,63,63,31,0,0,0,0,0\\n36,18,0,0,0,0,72,36,18,36,18,18,0,0,18,18,36,18,72,36,18,36,0,54,36,18,18,36,54,127,72,18,54,36,72,18\\n25,50,50,0,50,25,76,0,0,0,0,0,0,0,25,0,0,25,25,76,50,0,0,101,25,127,76,50,50,76,76,101,127,0,0,0\\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0\\n63,0,0,63,127,63,63,127,127,127,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,127,63,63,63,63,0,0,0,63,0,0\\n0,0,0,0,31,63,127,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,63,127,0,31,0,0,0\\n0,0,0,0,0,0,0,0,12,12,25,88,63,38,25,63,25,25,0,12,0,0,0,0,0,0,0,0,0,25,0,12,0,76,63,101,127\\n0,0,0,0,18,18,18,18,0,36,127,36,18,54,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36\\n0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,31,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,127,63,31,95,0,31,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,84,42,42,0,0,84,42,0,0,0,0\\n0,50,0,25,0,50,76,0,25,76,0,101,127,101,25,0,0,25,0\\n14,7,0,7,7,0,0,7,14,22,29,127,82,37,14,29,0,0,0\\n0,0,0,0,31,0,0,31,95,63,31,31,0,0,31,0,31,0,63,95,0,63,31,63,63,127,31,31,0,0,31,31,0,63,0,0\\n0,0,0,0,0,63,63,31,31,95,95,127,31,0,0,0,31,0,95,0,63,63,0,0,63,95,0,31,0,0,0,0,0,63,0,0\\n63,31,95,63,0,0,63,0,0,31,63,63,0,31,63,31,31,0,127\\n0,127,84,42,84,84,42,0,42,127,42,127,42,42,127,42,127,0,0\\n127,0,0,127,0,63,0,0,63,0,0,0,0,0,0,63,127,63,0,0,0,0,63,0,0,0,63,63,0,0,0,0,127,0,0,63\\n127,0,63,127,63,0,0,0,0,0,0,0,0,127,0,127,127,63,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,63,0,0\\n0,0,0,0,0,0,0,0,18,18,54,90,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,36\\n0,31,31,0,31,0,0,0,0,0,31,127,95,31,31,0,0,0,0\\n0,0,0,95,0,127,95,0,0,0,0,127,0,0,0,0,0,0,0\\n25,19,38,76,38,38,76,69,63,69,127,63,69,31,31,6,12,12,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,127\\n127,0,0,0,0,0,0,63,127,0,0,0,0,63,0,0,0,63,0\\n72,18,0,36,36,36,18,127,72,90,108,54,72,72,54,36,0,36,0\\n36,36,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,72,72,36,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,76,50,0,50,127,0,76,50,50,50,0,0,0,0\\n0,0,0,31,127,31,63,31,95,127,127,63,63,0,31,0,31,0,0\\n0,0,0,0,0,0,0,0,0,0,31,63,95,127,31,0,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,31,63,127,127\\n0,0,14,14,14,0,0,42,42,42,127,56,42,14,14,0,0,0,28\\n0,0,42,42,42,0,127,84,127,84,84,42,84,42,0,0,0,0,0\\n0,0,0,0,63,0,0,0,63,63,0,127,0,0,0,0,63,0,0\\n0,0,0,0,31,0,0,0,0,31,0,0,31,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0\\n31,15,15,127,79,79,63,0,31,0,0,31,31,95,79,31,95,31,95\\n0,42,0,84,84,42,0,42,0,0,0,42,84,42,0,42,0,0,0,0,42,0,127,0,0,42,0,127,0,127,0,0,84,42,0,0\\n0,31,0,95,0,31,0,0,0,31,0,127,31,0,31,0,0,0,0,0,63,0,95,0,31,0,0,31,0,31,0,63,63,31,0,31\\n0,0,0,0,0,0,0,0,0,127,0,127,63,63,0,0,0,63,63,0,0,0,0,0,0,0,0,63,0,63,0,63,63,0,63,127,0\\n127,42,42,63,42,21,0,21,0,42,21,21,0,84,84,42,21,0,127\\n54,18,36,63,18,0,9,36,63,127,72,63,99,63,18,0,18,0,0\\n127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,70\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,127,56\\n0,0,0,0,0,0,0,63,0,127,127,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0\\n0,0,0,0,0,18,36,0,9,9,72,127,99,45,27,18,36,0,0,18,0,0,18,0,0,0,9,0,0,27,27,18,0,0,0,18,0\\n0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,63,127,63,63,127,0,0,31,0,31,0\\n0,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,63,95,0,0,0\\n127,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,0,63,127,127\\n25,12,16,21,46,25,33,46,46,50,25,33,29,71,93,80,42,93,127\\n117,87,58,68,68,48,29,9,0,0,0,0,0,0,0,0,9,9,19,29,58,48,97,58,58,127,97,87,68,29,9,0,9,0,0,0,0\\n76,25,50,0,25,63,25,12,38,50,76,114,63,127,50,50,25,12,25\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,76,50,101,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,0,0,127,63,42,127\\n70,70,28,28,56,49,63,35,98,49,28,35,56,70,70,56,84,127,84\\n19,29,0,0,0,0,0,9,9,0,0,0,0,9,0,0,19,0,29,9,29,9,39,68,127,68,39,0,48,39,29,0,0,0,0,9,0\\n0,0,0,0,0,0,0,0,0,38,0,38,88,127,38,25,0,12,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,54,18,18,0,18,36,72,36,72,0,72,127,72\\n23,40,34,40,23,69,80,69,92,109,127,109,115,103,34,17,23,23,11\\n0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,42,42,0,42,21,0,0,0,21,21,0,0,0\\n63,95,0,0,0,31,0,31,0,63,31,31,127,0,63,63,63,0,0\\n89,127,52,48,52,56,78,67,97,85,108,127,97,100,74,74,63,48,22\\n0,101,0,25,25,25,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,127,76,127,50,50,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,0,0,14,14,70,84,84\\n50,76,76,76,76,127,50,25,25,50,0,76,25,101,25,0,0,0,0,25,0,50,0,0,0,0,0,0,25,0,0,0,25,0,0,0\\n127,127,63,31,63,95,63,31,63,95,31,0,63,31,95,31,0,0,0,0,63,95,31,31,0,0,0,0,31,0,0,0,0,0,0,31\\n0,0,0,0,0,0,42,0,84,0,0,0,0,0,0,0,84,127,42,0,0,0,0,0,0,0,0,84,0,0,0,84,127,0,0,0,0\\n76,127,25,38,12,0,0,0,12,0,0,0,0,0,0,0,12,12,12,12,25,25,0,12,88,25,25,38,25,0,12,25,0,0,12,0,0\\n63,47,31,79,63,79,127,79,31,47,31,15,47,31,0,47,15,79,0,15,15,111,47,15,47,31,47,47,15,111,79,95,15,63,0,95,31\\n127,63,0,0,127,63,0,0,0,0,0,0,127,127,0,63,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0\\n0,0,0,42,42,42,0,0,0,0,0,0,42,0,127,42,0,42,42,0,42,42,42,84,84,42,0,127,84,84,84,84,0,84,42,0,0\\n127,0,0,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,95,0,0,0,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,1,4,17,30,55,55,41,31,25,22,25,16,3,1,1,0,0,0,0,0,0,1,1,4,3,2,7,22,70,127\\n0,0,0,0,0,0,63,42,0,42,0,63,0,63,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,63,127\\n0,0,0,0,0,0,1,1,16,46,63,66,73,30,13,12,4,1,0,1,0,0,0,0,0,0,0,0,0,2,0,1,0,9,11,63,127\\n0,0,0,0,0,0,0,11,0,23,11,46,127,103,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,69\\n0,127,63,0,0,0,0,127,63,127,0,0,0,0,63,63,63,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,15,15,63,31,47,31,15,15,0,15,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,42,0,0,127,42,42,84,0,84,42,0,42,0,0,0\\n84,0,0,0,0,0,42,84,42,84,127,127,127,0,0,42,0,0,0\\n0,0,0,0,0,0,0,0,0,25,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50\\n0,0,0,0,0,0,0,0,0,0,0,101,50,25,0,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,50,25,0,25,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,101,50,101,0,50,50,25,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,63,42,21,63,127,42,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,63,0,21,21,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,0,42,84,21,42,21,21,42,21,0,0,0,0,0,0\\n0,0,0,0,0,0,42,0,42,0,0,0,42,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,84,0,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,0,0,0,0,42,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,127,63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,31,63,0,31,95,0,31,0,0,0,0,0,0,0\\n0,0,0,21,42,127,63,0,21,42,21,42,63,0,21,0,0,0,0\\n19,9,9,48,78,19,127,29,48,9,78,29,78,9,9,19,9,9,19\\n71,45,116,91,60,127,127,76,55,76,30,30,40,40,71,71,91,96,71\\n0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,127,0,0,0,0,0,42,0,0,0,42,0,42,0\\n0,42,0,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,42,0,0,0,0,0,0,0,0,0,0,42,42\\n0,0,0,84,84,0,0,0,0,42,127,84,84,0,0,127,0,0,0\\n0,63,31,63,63,31,0,0,63,0,95,31,31,31,95,0,0,0,127\\n112,56,70,56,42,42,14,28,28,112,56,28,56,42,127,112,70,28,28\\n0,0,0,0,0,0,5,16,77,49,5,0,0,0,22,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,71,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,84,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,84,0,42,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,0,0,0,42,84,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,63,0,63,0,63,127,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,0,0,63,63,63,127,0,0,0,0,0,0,0,0\\n0,42,0,42,0,0,84,0,0,0,127,84,42,42,42,127,0,42,0\\n50,38,63,38,50,50,76,76,63,63,76,101,25,38,76,38,38,127,50\\n0,0,0,5,0,15,0,20,25,76,106,127,91,10,5,5,0,0,0\\n57,66,83,84,78,69,81,60,102,127,105,92,65,83,71,48,60,71,36\\n50,76,50,12,0,12,12,0,25,0,0,0,0,0,0,0,0,0,0,0,0,25,38,50,127,101,76,12,0,12,0,76,0,0,0,0,0\\n0,21,0,21,0,0,0,0,42,105,127,105,42,42,21,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,36,18,0,18,18,0,0\\n0,0,0,0,25,25,25,25,25,76,127,101,25,76,25,0,0,25,0\\n109,123,106,116,61,127,106,65,68,120,113,92,82,92,116,109,106,72,75\\n101,25,76,127,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,25,76,76,25,25,50,0,0,0,0,0,0,0,25,0,0\\n0,84,0,0,0,0,0,0,0,0,127,0,0,42,0,0,0,0,42,0,0,0,0,42,42,42,0,0,0,42,0,42,0,0,42,0,0\\n0,0,0,0,0,0,18,0,0,72,0,18,108,72,90,18,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,36,127,54,36\\n0,0,0,0,0,0,0,0,21,105,84,21,21,21,127,21,0,0,21,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,84,105,0\\n0,42,0,0,42,0,42,127,0,0,42,42,42,0,0,42,42,42,0\\n6,16,20,13,23,10,20,23,40,43,56,73,90,127,30,33,3,3,0\\n0,42,84,84,0,127,0,0,0,42,42,0,0,0,42,0,42,42,0\\n127,69,69,39,11,3,5,7,9,51,91,105,75,59,53,29,19,15,3\\n22,50,60,68,57,100,127,118,100,75,60,49,33,55,60,64,92,111,114\\n30,68,98,79,49,11,1,1,3,43,83,108,87,127,104,58,39,0,0\\n84,63,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,127,72,0,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,95,31,63,127,0,0,63,0,0,0,0,0\\n0,0,0,25,50,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,25,12,38,50,12,0,0,0,38,25,0,38,0,12,38,12,0,25\\n63,0,95,31,31,31,127,31,95,31,63,31,63,0,0,31,0,0,0\\n0,0,0,0,0,0,0,0,31,63,31,127,127,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,36,6,127,36,24\\n0,0,14,56,0,28,14,70,0,42,84,28,56,98,28,28,42,14,28,70,28,14,14,0,0,0,14,84,28,14,14,14,127,112,28,0,28\\n0,0,0,0,0,0,0,0,25,25,0,0,0,0,25,101,0,0,0,25,25,25,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,0,0,0,0,0,0,0,0,50,0,0,0,0,25,0,127,25,76,0,0,0,0,0,50,0\\n0,0,0,0,0,0,0,0,50,0,0,0,25,25,0,50,25,0,0,0,0,0,50,76,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,50,0,25,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,127,50,50,0,25,25,50,0,0,0\\n0,0,0,0,0,0,0,0,0,101,50,76,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,50\\n106,103,96,100,95,103,98,110,121,101,103,94,70,96,84,86,82,103,127\\n124,67,34,41,25,28,15,17,2,2,8,0,4,7,4,4,11,5,11,31,46,21,24,79,127,105,83,33,30,56,25,18,10,11,12,5,17\\n69,23,69,34,92,92,92,127,115,92,34,57,80,57,0,11,23,92,46\\n127,31,31,63,31,31,0,0,31,127,31,0,31,63,31,0,31,63,0,63,0,0,31,63,31,31,31,63,31,0,63,0,0,0,63,63,0\\n127,63,84,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,63,42,42,63,105,0,0,42,0,0,0,0,0,0,0,0\\n127,45,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,27,63,72,27,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,63,63,63,63,0,63,63,63,0,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,127,0\\n0,42,0,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,84,84,0,0,0,0,0,42,42,0,0,0,0\\n0,0,0,0,0,0,0,0,10,21,31,58,68,68,15,5,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,21,68,127\\n0,0,0,0,0,42,0,42,42,42,0,42,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,127,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,76,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,50,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,84,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,127,0,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,42,42,0,0,0,0,0,84\\n0,0,0,0,0,0,0,42,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,42,42,42,0,0,0,0,42,0,0,0,0,0\\n0,42,42,0,0,0,0,42,0,42,42,0,0,0,0,42,0,42,0,0,0,42,42,127,0,42,0,0,0,0,0,42,0,42,84,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,63,127,84\\n0,0,0,0,63,63,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,127,0,63,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,0,0,0,0,0,0,0,0,0,0\\n0,0,0,36,0,36,0,0,18,18,0,18,0,18,0,0,0,0,0,0,36,18,18,18,127,90,54,72,90,54,0,18,0,0,18,0,0\\n0,0,0,0,0,0,0,0,0,0,42,0,42,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,127,42,42,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,127,63,127,63,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,101,0,0,0,0,0,0,0,0,0,0\\n90,54,72,90,54,18,0,0,0,0,9,0,0,0,0,9,0,0,0,0,0,0,0,0,18,27,36,54,117,81,108,117,90,45,127,63,54\\n63,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,95,31,127,63,0,31,31,31,31,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,42,42,0,0,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,9,39,68,97,78,127,107,58,19,9,9,0,9,9,0,9,19,0,0,0,0,9,9,19,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,127,0,21,42,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,14,0,14,70,14,28,14,0,28,28,0,28,0,14,0,14,0,42,112,112,56,127,98,70,28\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,21,31,0,42,10,31,52,10,10,0,10,21,21,10,0,0,10,21,31,42,95,116,127,74,52,31,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,63,0,63,0,127,0,0,0,0,0,0,0,0,0,63,127,63,0,127,63,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,84,127,84,42,84,42,0,42,0,42,0,0,0,84,84,0,0,0,0,0,0,0,127,42,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,31,63,0,0,127,63,0,0,31,0,63,31,95,31,31,0,0,31,0,31,0,31,31,31\\n0,127,42,0,21,21,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,31,63,31,95,31,0,0,0,0,0,0,0,31,31,0,0,0,0,31,0,63,63,31,127,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\\n0,0,0,0,31,127,0,127,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,76,127,25,25,25,0,0,0,0,0,0,25,25,50,50,101,0,25,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,63,95,95,31,31,0,0,0,0,0,0,0,0,0,127,63,95,31,95,0,31\\n0,0,0,127,50,50,25,25,0,0,25,0,0,0,0,0,0,0,50,0,0,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,12,76,127,50,12,0,38,0,0,0,0\\n10,7,0,7,2,5,2,17,7,5,5,5,12,10,30,53,63,81,127\\n0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,14,14,28,56,70,127,0,14,28,0,0,14,14,0,0,0,0,0,0,0,0\\n0,0,0,0,6,0,0,0,0,0,6,0,0,0,6,25,44,114,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,50,0,50,0,0,127,76,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,76,50,76,0,0,0\\n0,0,0,9,27,9,9,0,9,36,18,18,27,18,54,63,27,127,108\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,127,0,50,0,25,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,38,12,25,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,28,127,112,70,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,34,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,105,42,127,63,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,72,108,127,36,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,25,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,127,63,31,0,63,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,9,9,29,127,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,19,39,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,12,0,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,25,12,12,0,0,0,0,0,0,0\\n120,102,100,67,65,56,33,28,23,20,31,15,15,15,13,15,24,22,45,41,55,68,97,101,126,127,116,95,50,55,35,32,20,13,12,18,3\\n63,0,0,15,31,15,0,0,15,15,0,0,15,15,47,15,15,31,31,0,47,63,0,15,79,47,15,15,15,31,127,0,47,0,0,15,0\\n127,15,15,0,0,15,15,15,0,0,0,0,0,0,15,15,0,0,0,0,0,47,0,0,63,31,15,0,15,0,0,0,15,31,15,0,0\\n30,40,50,45,35,20,15,20,20,0,10,30,15,35,40,40,76,111,106,50,71,86,127,81,91,66,81,50,15,30,35,5,5,10,5,10,0\\n0,63,127,127,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,63,127,63,127,0,0,0,0,0,0,0,63,0\\n97,127,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,39,21,42,74,31,50,23,39,127\\n80,33,73,60,26,26,0,20,26,6,6,26,0,13,40,13,26,26,86,66,66,127,113,46,100,100,40,73,66,46,53,33,13,6,13,13,40\\n127,90,90,81,18,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,18,9,0,18,18,0,18,9,0,9,0,9,36\\n0,31,31,0,0,0,0,0,0,0,31,0,0,0,0,0,0,31,31,0,0,0,0,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0,0\\n0,0,0,0,42,127,0,0,42,0,0,0,0,0,0,0,0,42,42,84,42,42,0,0,0,0,0,84,42,0,42,0,42,0,0,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42\\n63,0,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,63,127,0,127,0,0,0,63,0,0,0,0,0,63,0,63,0,0,127,0,0,63,127,63,0,127,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,47,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63\\n0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,63,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,14,14,70,127,84,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,63,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,25,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,6,13,13,33,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,86,127,113,6,20,26,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,23,57,69,46,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,103,92,103,127,46,11,46,0,11,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,127,50,0,25,0,25,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,42,21,127,21,21,21,21,0,0,0,0,0\\n0,0,0,11,11,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,127,92,34,23,11,11,0,57,0,0,0,0,11\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,108,54,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,105,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,11,23,11,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,103,115,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,95,111,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,42,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,55,127,63,23,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,23,79,47,111,47,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,63,127,38,25,0,0,0,0,0,0,0,12,0,0,88,0,50,0,12,76,101,50,114,12,0,12,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,31,31,0,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,72,127,54,72,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,50,76,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,127,0,50,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,31,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,4,22,9,18,58,58,127,86,40,18,4,4,0,0,0,0,0,0,9,0,0,0,0,4,4,18,63,49,54,90,63,54,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,18,36,31,27,36,13,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,8,0,13,52,48,127,43,13,0,0,0,8,0,0,0,0,0,0,0,0,0,8,0,0,17,8,21,13,70,74,21,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,8,43,35,39,26,4,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,0,84,84,0,84,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,50,25,0,0,127,127,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,72,18,36,18,0,18,127,108,36,0,0,0,0,0,0,0,0,0,18,18,0,90,0,108,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,63,31,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,63,111,95,47,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,95,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,9,29,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,25,127,65,25,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,7,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0\\n0,42,84,42,42,127,42,0,42,0,42,0,42,0,0,42,0,42,0,0,0,0,127,0,42,42,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,31,31,63,127,111,127,0,15,0,15,15,0,31,0,0,0,31,47,0,0,0\\n127,63,63,0,63,0,0,0,0,63,0,0,63,0,0,0,0,63,0,0,63,0,63,63,0,63,63,0,0,0,0,0,63,63,63,0,0\\n0,0,0,0,0,0,0,0,0,63,63,63,63,127,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,127,0,0,127,0,127,0,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,127,127,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,31,0,0,0,127,95,95,95,63,0,63,31,63,0,63,63,31,63,31,63,0,95,95,63,95,63,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,95,63,127,0,63,0,0,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,42,0,42,0,127,0,0,84,127,42,42,84,127,0,42,42,0,0,0,0,0\\n63,21,21,42,21,0,127,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,21,0,0,0,21,105\\n0,0,0,0,0,0,0,0,0,2,4,12,19,42,49,75,86,95,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,127,84,84,70,42,28,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,1,0,1,0,2,15,24,62,109,127\\n0,0,0,0,0,0,0,0,0,0,0,31,31,127,63,63,0,31,127\\n0,0,0,0,0,0,5,1,1,3,10,14,21,40,36,44,83,123,127\\n0,0,11,0,0,0,5,16,0,0,0,0,5,0,5,11,0,5,55,66,71,127,60,127,93,49,16,5,5,16,0,0,5,0,0,0,0\\n0,0,0,0,0,0,25,0,25,50,76,127,50,101,127,50,0,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,5,5,5,17,51,121,127,127,40,5,86,69,34\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,19,39,127,87,107,68,39,9,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,36,72,18,72,72,36,36,72,36,72,54,127,90,54,72,72,90,90,90,18,0,0,0,0,0,0,0,0,0\\n0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,72,18,127,36,18,18,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,63,0,63,0,127,63,127,0,0,63,127,63,63,127,0,63,0,0,0,0,0,63,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,84,84,127,105,84,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,18,63,127,82,22,37,26,18,7,14,0,3,3,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,18,36,18,127,90,54,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,3,0,0,3,0,12,21,45,69,87,102,127,42,27,9,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,3,24,27,18,66\\n0,0,0,0,0,0,0,0,0,63,63,0,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,31,31,0,0,0,0,0,0,0\\n0,0,0,0,0,0,50,25,0,0,50,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,42,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,127,31,31,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,84,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,12,63,127,50,19,25,38,19,12,6,12\\n0,63,0,31,0,0,0,63,0,31,31,31,31,63,31,127,95,63,0\\n71,39,43,23,15,27,27,31,43,51,39,75,63,79,127,103,63,95,79\\n63,31,0,31,31,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,95,127,127,0,63,0,95,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,12,38,25,127,12,12,38,0,0,0,0\\n0,0,0,0,0,0,25,25,0,76,25,25,101,50,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,101,127,101\\n25,50,127,127,50,76,76,25,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,76\\n63,31,63,127,0,0,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,127\\n50,50,127,76,50,25,25,0,0,0,0,50,0,25,0,25,25,0,0,0,50,0,0,0,0,0,0,0,0,25,25,0,101,25,50,25\\n76,50,25,101,76,127,50,50,25,101,0,25,0,0,25,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0\\n0,63,63,21,0,0,0,0,0,0,0,42,21,0,0,0,21,42,21,0,21,42,84,63,21,21,42,21,42,42,21,127,21,21,42,0,0\\n23,127,34,34,23,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,11,11,0,0,0,0,0,34,57,23\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,31,127,31,0,95,0,0,31,0,0,0,0,0,0,0,0,0,0\\n0,25,38,25,12,0,0,12,0,12,0,25,25,38,63,127,63,38,25\\n127,63,0,7,0,0,0,7,0,0,23,23,71,95,111,39,39,55,63\\n0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,84,0,0,42,127,42,42,0,0,0,0,0,0,0\\n28,42,28,84,42,28,42,28,28,0,14,0,14,0,28,14,14,14,28,14,42,127,14,70,56,14,42,0,14,42,42,14,14,14,42,0,0\\n0,0,42,0,127,42,0,0,0,0,0,42,0,0,0,0,0,0,0,42,42,0,42,0,42,0,0,0,0,0,84,0,0,42,0,0,0\\n42,42,63,21,21,42,42,21,0,0,21,21,21,42,42,0,21,21,0,21,84,105,21,42,21,127,21,63,21,0,63,63,0,0,21,42,0\\n0,0,0,101,25,0,0,0,0,0,0,0,0,127,50,0,50,0,0\\n0,31,0,31,0,0,31,0,0,31,0,0,0,0,0,31,0,31,0,0,31,0,0,63,0,0,0,0,0,0,0,31,63,0,31,31,127\\n121,93,71,22,33,49,38,33,27,22,22,0,11,11,16,5,44,22,27,82,66,115,110,104,121,127,93,77,99,88,44,38,5,16,38,16,44\\n127,105,63,21,0,21,0,0,0,0,0,0,0,0,42,42,21,42,84,21,21,63,105,63,21,42,21,0,0,21,0,0,0,21,0,0,0\\n0,31,0,31,0,31,31,0,0,0,95,0,0,0,0,0,0,0,0,0,0,31,0,31,31,0,31,127,31,63,31,0,0,31,0,0,127\\n127,66,31,51,25,5,14,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n107,127,95,51,29,11,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,0,42,42,77,91,127,98,112,21,7,42,28,56,84,14\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,127,0,42,84,84,84,84,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,3,13,27,45,64,107,127,118,118,118,125,99,69,64,78,114\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,5,23,0,34,23,46,75,109,127,109,109,121,121,115\\n0,0,0,0,25,25,25,0,0,0,0,0,25,0,0,25,0,0,0,0,50,25,127,50,50,50,76,0,0,0,25,25,0,0,0,0,0\\n16,0,8,0,0,0,0,16,8,0,0,8,0,8,0,8,0,0,50,67,127,59,16,0,0,16,0,8,8,8,0,8,8,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,101,25,25,0,101,76,101,127,0\\n127,0,0,31,0,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,15,0,0,31,0,0,0,0,0,0,0,0,0\\n42,63,42,52,52,31,21,31,31,10,10,0,0,0,21,0,10,0,21,10,63,10,31,21,42,127,95,21,42,42,21,0,31,10,10,31,0\\n127,127,111,0,0,15,15,0,15,0,0,0,0,0,0,0,15,31,0,15,47,15,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,95,31,0,63,127,63,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,7,7,0,0,23,15,31,31,79,103,119,127,95,87,63,15,0\\n63,31,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,31,31,63,31,127,63,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,63,127,42,21,0,21,0,63,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,63,63,63,21,21,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,27,99,127,72,36,9,0,0,0,9,0,9,27,18,0,9,18,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,56,42,14,14,28,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,27,27,54,9,18,18,18,27,9,0,0,0,0,0,0,18,18,18,54,81,127,27,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,12,0,0,0,12,25,12,0,12,38,0,0,0,25,50,63,114,127,101,101,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,31,0,31,127,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,84,84,127,127,0,42,0,42,0,0,0,0,84,42,84,127,84,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,50,76,25,76,0,0,25,0,0,0,0,25,0,50,76,50,127,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,0,0,0,0,0,21,21,63,105,127,84,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,50,0,25,0,0,25,0,0,25,25,25,50,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,14,0,14,127,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,0,14,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,15,47,95,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,50,76,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,42,21,0,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,42,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,11,46,80,80,127,69,46,11,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,23,80,57,46,80,92,92,69,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,11,57,115,115,103,11,11,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,7,39,103,55,15,31,55,31,7,0,0,0,0,0,7,7,0,0,0,0,0,0,0,15,31,47,47,55,111,23,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,31,39,79,127,63,7,7,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,127,36,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,56,42,42,84,14,0,14,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,95,111,95,127,95,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,105,84,42,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,127,127,95,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,70,56,98,84,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,14,70,14,28,14,28,14,0,14,28,14,14,0,0,0,0,0,0,0,0,14,127,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,127,31,42,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,52,21,10,10,0,0,0,0,0,84,21,10,10,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,127,18,36,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,21,31,63,31,10,0,0,0,0,0,0,0,0,0,0,0,0,10,21,10,52,52,42,127,42,10,10,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,7,87,0,0,0,23,39,7,0,0,0,0,0,0,0,0,0,0,0,23,23,47,79,127,31,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,3,8,71,119,35,14,7,1,3,3,0,0,0,1,3,3,0,0,1,0,12,12,23,67,127,96,28,7,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,2,13,109,64,18,7,2,0,0,0,0,0,0,5,1,0,0,0,0,0,0,11,13,55,127,72,16,9,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,127,63,31,0,0,0,0,0,63,0,0,0,0,0,0,31,0,0,0,95,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,31,0,0,0,0,0,0,0,127,31,31,0,0,63,0,31,0,63,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,95,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,28,42,56,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,56,127,127,14,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,50,25,50,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,127,50,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127,117,19,9,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,18,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,81,127,72,9,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,13,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,100,113,127,40,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,25,127,76,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,50,25,50,0,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,97,81,64,47,28,33,27,37,17,20,7,6,9,11,6,3,5,1\\n95,79,95,63,31,15,127,47,47,79,31,31,15,31,0,31,0,0,63\\n127,63,67,33,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,16,16,46,38,29,8,8,25,8,8,12,12,12,0\\n84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,84,127,42,42,42,0,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,15,0,0,15,15,0,79,31,47,127,31,31,63\\n127,90,86,97,73,104,108,82,84,57,59,55,22,25,27,15,28,33,38\\n122,127,83,30,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,17,13,39,39,26,61,52,48,43,21,13,43,4,4,0,35\\n0,0,0,0,0,0,0,25,127,76,76,50,0,0,0,0,0,25,50\\n127,58,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,0,0,0,0,0,0,0,0,0,0,10,42,10,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,63,31,0,0,63,63,63,0,0,0,31,31,0,0\\n28,17,34,11,0,0,11,5,0,5,5,0,5,0,0,0,0,0,0,0,0,0,0,5,5,5,5,28,11,57,63,109,80,127,75,51\\n19,25,31,0,12,0,6,6,0,0,0,0,0,0,0,0,6,0,0,0,6,0,0,6,12,12,6,6,44,44,82,101,82,127,57,95\\n0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,127,0,0,0,0,0,0,0,0,63,63,63,127,63,0,0,127,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,14,0,42,0,28,56,28,56,0,28,70,42,84,112,84,127,70,42,42,0,14\\n18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,90,18,0,18,18,54,18,54,18,18,36,90,36,54,72,72,127,90,0,18,72,72\\n25,0,0,0,25,0,127,50,0,0,0,0,0,0,0,25,25,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,42,127,42,84,84,0,84,127,42,0,0,0,0,42,0,0,84,0,42,42,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n65,66,127,73,53,70,39,15,22,8,6,5,6,6,12,8,5,3,12,6,13,15,12,30,34,51,32,41,65,53,66,53,29,46,60,53\\n114,99,114,52,44,54,34,39,19,24,17,4,7,2,12,7,4,12,19,12,22,49,42,64,127,102,69,69,87,79,49,82,62,94,79,94\\n36,36,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,108,36,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0\\n28,28,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,42,127,70,14,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,42\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,127,0,42,42,42,0,0,84,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0,63,127,127,63,127,63,63,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,63,31,0,63,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,36,36,36,36,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,21,21,21,0,52,21,52,84,31,42,116,21,42,0,0,0,10,10,21,21,10,10,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,74\\n115,69,34,11,34,23,23,69,80,57,34,127,11,11,0,0,0,11,23,23,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,80\\n42,0,21,0,0,0,21,21,0,42,21,42,21,0,0,0,21,21,21,21,0,0,0,0,0,0,0,21,21,63,63,105,127,105,63,42\\n31,47,15,47,0,0,15,0,0,47,47,15,31,0,0,31,0,15,15,15,0,0,0,0,0,0,0,0,0,47,127,111,47,15,63,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,11,57,127,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,46,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5,22,127,82,66,93,66,82,16,27,11,11,0,22,0,0,38,5\\n0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,0,15,127,76,66,101,50,81,25,10,5,10,0,20,0,0,30,10\\n127,25,88,25,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,63,63,25,0,25,25,12,12,0,0,0,0,0\\n0,0,0,0,0,50,127,50,0,0,0,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,76,127,50,0,0,0,0,0,0,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0,127,95,0,31,0,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,127,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,127,0,63,127,0,63,0,0,127,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,0,0,50,25,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0\\n42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,0,63,0,0,0,0,0,0,0,0,31,63,0,31,31,31,0,31,0,0,0\\n0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,127,25,50,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,17,21,33,64,36,18,6,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,8,39,52,127\\n0,0,0,0,0,0,18,0,0,36,0,0,0,18,18,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,72\\n0,0,0,0,0,0,0,0,0,112,127,0,28,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,42,14\\n0,0,0,0,0,0,33,30,30,33,73,127,23,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,16,60,113\\n0,0,0,0,0,0,0,0,0,0,63,0,21,42,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,42,127\\n0,0,0,0,0,0,0,0,0,54,0,54,127,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,15,0,15,127,15,47,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,112,28,56,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,18,27,90,18,18,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,108,54,45,9,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,95,95,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,47,47,111,127,63,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,105,0,0,0,0,21,0,0,0,0,0\\n0,0,0,0,0,0,0,14,14,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,28,28,84,127,70,28,0,0,42,0,70,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,15,0,7,7,0,0,0,47,127,95,71,7,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,54,127,90,72,54,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,95,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,50,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,101,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,127,0,0,0,0,0,0,0,0,0,0\\n0,0,42,42,0,0,0,0,0,0,42,127,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,79,127,47,15,47,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,45,127,72,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,8,67,50,118,127,93,33,59,0,8,0,8,0,0,0,0,0,8,0,0,0,8,8,76,50,25,16,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,78,96,102,127,78,18,24,30,12,12,6,6,0,0,6,6,0,12,12,12,6,0,36,0,18,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,10,0,0,0,0,0,0,5,0,5,0,0,0,0,0,0,5,15,30,50,111,127,10,20,10,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,95,31,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,92,127,28,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,28,17,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,0,84,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,127,111,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,36,127,108,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,127,31,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,84,63,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,105,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,127,127,63,95,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,23,46,0,0,0,0,11,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,103,127,34,11,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,127,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,84,42,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,6,0,0,24,42,78,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,18,12,36,24,12,0,0,0,6,0,0,0,0\\n0,0,0,0,0,5,11,5,0,17,63,115,127,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,40,40,5,0,5,11,5,5,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,31,63,63,0,0,127,127,95,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,14,14,28,0,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,42,56,70,14,28,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,21,21,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,127,127,105,42,127,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,42,127,84,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,47,127,47,31,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,101,127,25,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,28,56,127,119,77,21,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,10,31,127,116,31,0,0,10,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,25,127,12,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,84,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,50,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,76,50,25,25,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,18,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,36,18,0,0,0,18,0,0,0,0,18,0,0,0,0,0,0,0,0,36,0,36,18,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,0,63,0,0,0,0,0\\n0,0,0,0,0,0,0,0,84,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,15,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,36,36,90,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,108,54,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0,36,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,42,0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,21,0,0,0,21,0,0,0,0,21,0,21,0,0,0,0,0,21,0,0,0,0,0,63,0,0,21,0,21,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,7,0,14,44,59,127,29,52,14,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,7,29,52,119\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,9,13,30,55,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,42,21,105,21,127\\n0,0,0,0,0,0,0,0,31,127,31,63,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\\n0,0,0,0,0,0,0,0,0,8,8,127,127,101,33,42,33,8,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,16,0\\n0,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,63,127,95\\n127,42,42,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,0,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,127,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,42,0,84,84,127,84,0,42,105,0,42,0,0,0,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0\\n0,0,0,0,0,25,25,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,101,0,0,0,0,127,101,25,0,0,25,0,0\\n0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,127,101,25,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,127,25,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,28,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,42,42,0,0,0,0,0,127,42,84,127,42,0,84,0,0,42,0,0,0,0,42,42,0,127,42,42,84,0,84,0,0\\n0,0,0,0,0,25,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,0,25,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,63,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,127,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,25,50,127,50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,50,25,0,0,0,25,0,0,0,0,0,0,0,0\\n95,31,31,31,63,63,127,47,15,31,15,31,63,31,31,79,111,95,127\\n71,87,61,68,74,58,61,52,104,127,71,78,113,61,26,39,32,35,52\\n0,63,63,0,0,0,0,0,63,0,63,0,63,0,0,0,0,0,63,0,0,63,127,0,63,0,0,0,127,0,0,63,0,0,63,0\\n0,42,42,0,42,0,42,42,42,0,42,42,0,0,0,0,0,0,0,0,0,0,42,0,42,42,0,0,127,0,0,0,0,0,0,0\\n40,26,26,26,40,0,0,0,0,6,6,0,6,13,33,20,26,13,26,26,6,33,53,46,33,40,46,13,26,33,46,33,86,100,127,73\\n74,22,14,0,7,14,0,0,0,0,7,14,7,29,7,14,14,14,29,14,7,59,59,37,67,29,67,37,59,7,82,59,59,104,127,112\\n0,0,0,0,0,7,2,18,23,68,47,87,108,63,50,47,66,50,60,5,5,0,5,0,0,0,0,5,0,10,0,10,2,26,95,92,127\\n0,0,0,0,0,0,0,0,0,0,31,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,42,42,84,84,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,117,90,9,63,9,18,9,27,0,18,9,0,0,9,0,0,9,0\\n84,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,42,0,0,42,0,42,127,0,42,42,0\\n74,52,97,87,119,127,83,75,70,62,49,39,49,35,29,26,26,22,11\\n9,29,34,4,0,0,0,0,4,4,4,0,0,0,0,0,0,4,0,0,9,34,39,39,68,19,78,92,127,43,39,43,29,24,24,9,0\\n101,50,0,25,25,127,25,0,0,50,127,25,25,25,25,50,25,25,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,127,55\\n89,99,75,102,41,44,30,13,10,24,6,44,20,13,6,6,6,10,3,3,13,6,0,13,6,13,20,30,37,51,58,72,82,92,102,127\\n108,87,116,61,54,39,50,43,18,25,14,21,7,3,10,18,18,0,0,7,7,7,3,7,18,7,29,32,65,65,72,79,76,112,101,127\\n0,50,127,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,101,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0\\n127,31,31,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,95,63,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31\\n63,31,63,31,63,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,95,31,127,63,0\\n42,127,42,84,0,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,127,0,42,42,42,42,84,127\\n0,63,0,127,127,63,0,0,0,31,31,0,0,31,0,31,31,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0\\n63,0,95,127,63,31,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,127,31,0,0,31,0,95,63,63,63,31,0,95,31,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,42,21,63,21,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,127\\n0,0,0,0,0,0,0,0,18,0,9,0,0,18,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,9,27,18,54,45,108,127\\n0,0,0,0,0,0,0,0,0,0,0,0,42,21,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,42,42,0,21,42,0,127,0,0,21,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,42,127,84,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,21,127,63,42,42,0,0,0,0,0,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,111,15,47,63,15,15,15,15,63,127,127,47,95,63,0,31,0,0\\n50,76,76,76,25,25,0,25,127,25,0,0,0,0,0,25,25,25,101\\n127,72,54,17,18,8,17,22,34,61,106,54,82,46,32,17,6,15,27\\n57,57,57,46,69,34,23,46,11,11,11,11,23,11,23,0,0,23,0,11,0,11,0,46,46,57,127,46,23,46,0,23,0,11,34,57\\n101,63,63,38,25,25,25,12,25,0,0,25,25,0,0,25,0,0,0,38,0,0,38,25,50,88,127,114,25,0,0,12,12,0,50,76\\n23,23,23,34,103,103,57,103,34,34,92,127,103,23,23,11,46,46,69\\n127,31,0,0,31,31,0,0,0,63,31,0,31,31,63,31,0,0,0\\n84,42,0,0,42,42,0,42,0,0,84,42,127,42,42,0,84,0,42,0,42,0,0,42,0,0,42,42,42,0,0,42,0,42,0,84,84\\n127,74,0,0,0,0,0,21,10,0,10,0,0,0,10,0,0,10,10,0,0,10,31,0,42,52,10,10,10,0,10,21,0,0,0,0,21\\n0,0,0,0,0,0,0,63,0,0,63,0,127,0,0,0,0,0,63,0,0,0,0,63,0,63,0,63,63,0,0,0,0,0,127,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,127,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,11,0,46,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,46,23,46,23,23,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,127,57,23,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,31,52,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,42,74,127,105,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,10,42,84,74,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,95,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,127,127,42,10,0,0,0,0,0,0,0,0,0\\n0,0,0,0,50,0,25,50,127,25,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0\\n25,0,0,0,25,101,50,127,25,25,0,0,50,0,0,0,25,0,0,76,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,12,25,25,25,12,63,25,50,25,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,42,0,21,127,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,127,63,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,104,73,42,63,33,19,7,9,1,3,1,3,1,0,0,0,1,3,3,6,4,4,4,7,15,20,15,33,22,9,22,14,7,19,20,9\\n84,127,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,84,42,0,42,0\\n0,50,50,76,25,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,0,76,0,50,101,127,0,50,0,25,50,25,50,0,0,0\\n89,127,97,29,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,14,22,14,14,14,22,52,0,67,7,14,29,7,29,22,0,22,0,7,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,14,14,14,22,59,82,37,104\\n42,42,21,63,21,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,21,42,0,21,0,0,42,0,21,0,21,42,21,0,42,21,0,21,63,0,21,0,0,21,0,0,0,0,21,21,0,0,0,0,0,0,0,0,21,21,0,0,0,0,21,21,0,42,0,127,84,21\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,0,0,0,0,84,84,0,0,0,0,0,0,42,0,0,84,42,0,0,0\\n63,15,15,31,15,15,0,0,0,0,0,0,0,15,31,0,15,0,0,0,0,31,15,15,0,0,0,31,0,31,0,95,15,15,0,47,15,0,0,0,0,15,0,0,0,0,0,15,0,0,31,0,31,0,15,0,0,0,0,0,0,15,0,0,0,15,15,15,111,95,95,127\\n50,25,25,25,50,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,76,127,50,25,0,25,0,25,0,0,0,0,0,25,0,0,0,0,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,101,127,101,76,25\\n0,63,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,31,0,0,0,63,127,31,0,0,31,31,0,0,0,31,31,0,0,0,0,0,0,0,63,0,0,0,31,0,0,0,31,0\\n63,0,0,0,0,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,63,0,0,0,0,0,0,0,63,0,0,63,0,63,0,0,127,127,0,63,63,0,0,0,63,0,0,63,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,127,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,84,127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,127,63,63,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,127,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,84,84,127,0,42,0,0,0,42,84,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,31,127,84\\n63,127,79,0,0,15,0,0,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,0,79,31\\n0,0,0,0,1,2,3,2,2,14,25,28,45,64,78,100,112,119,127\\n0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,29,0,29,82,52,127,74,7,7,7,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n71,71,101,35,86,66,86,81,35,91,60,71,66,101,127,66,60,86,71\\n127,42,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,105,42,0,31,0,0,0,0,0,0,0,0,0\\n0,6,0,0,0,0,0,6,0,40,20,73,127,106,46,20,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,20,26,53,80\\n93,120,86,80,60,127,106,46,86,33,40,13,13,13,13,0,13,26,53\\n127,79,63,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,47,15,0,63,15,31,15,0,0\\n127,84,21,21,21,0,0,0,0,0,0,0,0,0,42,0,0,21,42\\n72,127,18,36,18,0,18,0,0,0,0,18,0,18,0,0,90,18,0,36,0,0,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0\\n127,95,127,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,127,0,84,0,0,0,0,0,0,42,42,127,0,0,0,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,21,0,0,42,0,0,42,84,63,42,42,0,21,0,0,0,0,21,0,0,0,21,0,21,42,21,21,63,127\\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,127,0,0,0,0,0,0,0,0,0,0,0\\n0,0,50,50,0,25,0,25,25,50,127,25,0,0,0,0,0,0,0\\n63,95,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,63,127,31,95,63,0,0,0,0,0,0,0,0,0,0\\n57,31,37,48,57,50,83,55,51,56,54,39,61,62,59,52,86,102,127\\n72,42,12,6,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,4,8,11,27,127,83,71,9,6,7,3,1,2,3,2,2,2,0\\n36,0,0,36,18,36,127,54,54,0,0,18,0,54,18,0,18,18,0\\n127,0,63,127,63,63,63,63,63,127,0,63,0,63,63,127,0,63,0,0,0,63,127,0,0,0,0,63,63,127,63,63,0,63,63,63\\n0,42,84,42,42,84,42,127,42,84,0,42,0,84,0,84,0,42,0,42,0,0,0,0,0,0,0,84,84,42,0,0,0,0,42,0\\n0,14,7,0,0,7,0,59,59,59,127,14,14,22,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,7,29,29,37,37,22,29,0\\n0,0,0,31,0,0,31,31,0,63,0,0,0,0,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127\\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,25,0,0,0,0,0,0,0,0,25,0,0,0,76,50,127,76,25,0,25,0\\n84,84,127,31,31,42,21,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,21,0,0,0,42,127,21,0,84,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,84,0,84,42,0,0,0,0,0,0,0,0\\n97,39,58,68,68,48,107,127,107,58,48,68,39,39,39,78,19,39,39\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,127,84\\n0,0,50,76,25,50,25,50,0,0,0,127,76,25,0,0,0,0,0\\n0,0,0,10,0,21,0,84,127,74,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n50,50,25,50,25,0,0,127,76,25,0,25,25,50,76,0,0,25,50\\n0,31,31,95,0,95,127,63,0,31,0,31,0,31,63,31,95,63,0\\n0,9,0,0,0,9,0,0,0,0,0,0,0,9,0,18,18,54,127\\n0,95,31,0,63,31,0,31,0,0,0,0,0,31,31,0,63,0,0,0,31,0,63,63,0,63,127,0,95,31,0,31,63,63,0,0,63\\n0,127,63,31,95,31,0,0,31,0,31,0,31,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,31,31,31,95,127,31,31,63,63\\n0,0,0,84,84,0,127,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,27,81,108,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,108,90,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,84,84,84,127,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,18,18,0,36,0,18,36,0,18,54,18,54,72,127,36,54,72,72\\n7,3,0,0,0,0,0,0,0,0,0,0,1,0,1,5,50,92,127\\n0,25,0,50,0,0,0,25,50,25,101,76,50,127,50,50,101,50,50\\n0,0,25,0,0,0,25,0,0,0,0,25,127,0,0,0,0,0,0,0,0,0,25,25,25,25,0,0,0,0,0,0,0,0,0,0,50\\n84,84,84,42,84,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,63,42,84,127,127,63,63,21,21,21,0,0,21,0,0,0\\n0,0,0,0,0,0,0,0,0,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,50,76,0,0,0,0,0,0,0,25,0,0,0,0,25,0,0,0,0,0,0,25,25,127,127,25,0,0,25,0,0,0,0,0,0,0\\n127,12,0,0,25,63,12,12,0,0,0,0,0,12,0,0,12,12,12,12,0,0,12,38,50,50,50,25,0,0,25,0,0,0,0,0,25\\n0,0,0,0,0,0,0,0,0,0,0,127,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,42,0,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,0,0,84,84,0,0,0,0,0,0,0,0,0,42,0,42,42,0,127,0,84,42,0,84,0,0,42,42,0,0,0\\n0,0,0,0,63,0,63,0,0,63,0,63,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,127,0,0,63,0,0,63,0,0,63,0,0,0,0,0,0,63,0,0,0,127,0,0,0,63,0,0,127,63,127,0,0,0,0,0,127,63,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,10,0,10,0,26,79,127\\n0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,25\\n127,0,0,21,0,42,0,0,21,0,21,0,21,0,0,0,21,42,0\\n13,0,20,13,0,0,0,6,20,46,66,26,73,86,53,60,86,127,80\\n36,0,36,0,18,54,54,18,0,18,90,54,36,18,54,0,18,0,36,72,18,18,72,72,72,127,54,0,0,54,36,0,0,0,0,0\\n21,42,21,0,21,42,0,42,21,42,42,42,42,21,63,21,21,21,63,0,0,84,84,105,42,127,63,21,21,0,21,21,63,21,21,21\\n63,31,127,0,0,95,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,127,127,0,63,127,0,0,0,63,0,63,63,127,0,0,127,0\\n50,127,0,0,0,0,50,0,0,25,0,76,76,76,127,76,101,0,101\\n0,0,0,0,0,0,63,0,0,0,0,0,0,127,0,0,31,31,63,0,95,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0\\n0,127,42,42,42,42,127,84,42,0,0,0,0,0,0,84,0,0,84\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,127\\n0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,42,84,42,0,127,0,0,0,0,0,0,42,0\\n0,36,36,36,18,0,0,18,18,54,18,127,0,18,0,0,0,0,36\\n0,127,25,0,0,25,25,0,0,50,25,0,0,0,0,25,0,0,25,76,0,25,0,25,25,76,25,0,25,0,50,25,0,0,0,0,0\\n0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,63,63,63,63,0,0,127,63,0,0,0,0,0,127,0\\n0,42,0,84,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,0,42,0,0,0,0,127,0,42,0,0,0,0,42,42,0,0,0\\n108,127,0,54,9,9,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,127,63,84,84,63,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,127,84,63,74,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,15,47,111,127,63\\n127,63,105,84,21,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,127,42,8,8,8,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,81,60,27,10,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,7,23,57,86,127\\n0,42,84,84,84,0,0,0,0,0,0,0,0,0,0,0,0,42,127,84,42,0,42,0,42,0,0,0,42,0,0,0,0,42,0,0,0\\n18,0,9,0,0,0,9,0,9,13,0,31,18,36,36,77,31,40,36,18,27,40,27,63,127,90,81,27,18,13,31,9,4,0,0,0,9\\n0,0,0,0,0,0,0,0,0,0,25,0,50,25,25,50,127,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,42,0,0,0,42,127,42,0,84,42,127,42,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,84\\n0,50,0,0,101,50,50,0,50,76,25,25,50,0,50,50,0,25,25,25,25,50,25,25,76,127,76,25,0,76,50,50,25,50,25,0,0\\n0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,42,21,21,63,84,105,127,42,0,63,42,42,0,42,0,0,0,0,0,0,0,0\\n0,0,50,0,25,0,25,127,0,0,0,0,25,0,0,0,0,0,0,0,0,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,9,9,0,18,0,0,0,9,27,99,45,127,117,36,18,0\\n0,0,15,0,15,0,15,0,15,15,47,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,25,114,50,127\\n0,0,0,0,0,0,0,0,9,9,48,48,127,48,107,39,39,48,0,0,0,0,0,9,19,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,50,127,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,21,21,42,84,127,63,63,0,21,0,21,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,0,0,127,0,42,63,42,21,21,42,0,0,21,0,0,21,21,21,0,0,0,0,0,0,0,0,0\\n25,127,50,25,76,0,25,0,50,25,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,0,0,0,0,25,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0\\n31,0,127,95,0,31,31,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,0,0,0,0,0,31,0,0,0,63,0,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,31,31,31\\n127,68,37,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,127,84,42,0,0,0,0,0,0\\n3,0,5,3,0,0,6,4,1,0,0,0,1,0,0,0,0,0,0,0,0,1,4,3,6,2,17,50,65,97,127,93,59,30,19,12,9\\n0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,42,0,127,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,4,0,0,4,9,9,9,29,48,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,127,127,0,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,88,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,31,31,127,95,127,0,95,63,0,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,25,25,50,25,25,50,0,127,50,25,25,0,0,25,0\\n0,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,127,0,0,0,63,0,0,0,63,63,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,63,63,0,63,63,127,0,63,0,0,0,127,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,23,127,34,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,56,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,127,56,28,127,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,63,0,0,127,0,127,63,0,63,0,63,0,0,0,63,127,127\\n0,31,31,95,0,127,31,31,0,0,0,95,63,31,0,0,0,95,127\\n63,47,31,31,0,0,0,0,31,15,0,0,0,15,0,0,0,0,47,0,31,63,15,63,127,127,0,15,31,0,0,0,0,0,0,0,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,63,105,127,21,42,21,0,0,0,42,42\\n63,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,127,95,31,0,31,0,31,0,0,0,0,0,31,63\\n31,63,47,15,15,15,31,31,0,15,79,31,0,0,0,31,15,47,15,15,15,0,47,47,31,95,31,47,0,15,63,31,15,0,15,127,127\\n101,76,76,76,50,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,50,76,25,76,50,50,127,76,0,0,0,0,25,0,0,0\\n0,0,0,0,0,0,0,0,0,12,24,72,72,84,42,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,60,127,60,24,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,30,42,120,90,30,6,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,19,97,78,87,19,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,48,68,39,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,48,48,127,29,0,9,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,127,101,25,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,42,42,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,127,88,88,25,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,76,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,72,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,108,18,90,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,31,63,127,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,127,31,31,31,31,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,42,127,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,84,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,127,127,42,0,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,18,127,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,36,18,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,5,11,16,5,27,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,127,44,38,11,0,0,5,0,0,11,0\\n0,0,0,0,0,0,0,7,0,23,63,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,39,127,111,0,0,7,0,7,0,0,0,0\\n124,98,127,116,77,85,69,54,51,57,54,46,46,20,25,15,7,5,25\\n112,84,56,127,56,42,0,0,0,0,0,0,0,0,0,0,0,14,14,28,0,14,14,0,70,84,28,98,0,14,28,0,14,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,56,42,42,56,84,127,84,84,56\\n103,93,88,85,62,88,64,62,72,127,114,77,90,64,72,28,49,44,31\\n0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,127,25,0,101,0,101,0,0,0,0,0,0\\n127,103,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,36,0,0,18,0,54,127,54,18,36,18\\n15,0,15,15,15,0,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,15,15,127,31,63,111,31,0,15\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,63,0,63,127,95,31,95,0,63,31,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,84,42,127,127,0,84,0,0,0\\n38,76,127,63,88,50,25,50,50,12,63,50,38,38,50,50,12,25,63,38,12,76,63,25,63,38,38,76,38,63,88,50,38,38,38,38\\n45,127,9,72,54,27,36,18,18,45,45,45,81,45,36,18,9,36,18,9,36,0,18,27,54,54,27,36,36,81,36,9,72,45,36,36\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,11,22,63,70,127,63,56,14,22,3,7,11,11,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,6,27,48,65,127,68,41,27,6,3,13,10,3,0,0\\n0,63,31,95,63,31,31,127,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,63,63,0,0,63,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,3,3,43,127,91,75,79,3,11,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,3,3,15,63,87\\n0,0,0,0,0,0,15,0,0,0,0,15,63,127,15,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,0\\n0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,0,0,42,0,42,127,0,42,84,0,0,0,0,0,0,0,42,0,0,0,0,0,0,42,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,14,14,28,127,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,112,0,14,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,63,63,63,63,0,63,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,127,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,84,42,84,84,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,127,0,34,11,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,33,127,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,76,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,25,25,127,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,63,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,127,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,42,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,42,0,127,42,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,42,0,0,127,127,0,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0\\n63,0,31,0,0,0,0,0,0,63,31,127,63,31,63,0,0,0,0,0,0,0,0,63,63,31,0,0,31,0,0,0,0,31,31,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,31,127,52,52,0\\n0,0,0,0,0,0,0,0,0,0,0,21,21,127,42,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,31,31,31,31,0,0,0,0,0,31,0,63,31,31,0,31,0,31,0,0,0,31,63,63,63,31,0,0,31,0,0,31,31,63,127,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,127,0,63,63,127,127,127,127\\n54,18,0,0,9,9,0,0,36,45,81,72,54,36,45,0,36,45,9,9,0,0,18,0,0,9,0,0,0,0,9,0,0,0,36,18,127\\n127,21,42,21,84,21,21,0,0,0,21,21,21,0,0,21,0,21,0,21,63,42,42,21,63,63,63,21,21,42,0,21,0,21,42,0,0\\n0,0,0,0,12,0,0,25,0,0,0,38,50,63,0,38,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,50,0,38,12,127\\n0,0,31,95,127,63,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,15,0,15,63,127,47,47,79,79,31\\n3,6,5,6,6,15,18,27,45,57,62,66,56,80,127,120,57,29,10,6,1,0,0,0,0,0,0,0,0,0,0,3,2,0,2,4,0\\n0,0,0,33,5,5,0,5,0,16,71,127,71,44,77,33,49,66,5,11,0,5,0,0,0,11,11,5,0,5,0,0,5,0,0,0,0\\n0,0,0,0,0,0,2,1,5,4,12,9,3,1,1,5,0,0,1,1,0,0,0,0,1,2,4,5,2,6,7,24,70,105,127,63,30\\n0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,0,127,76,0,0,0,0,0,0,0,25,0,0,0,0\\n0,0,0,0,0,0,31,95,31,63,95,31,63,0,31,0,63,31,0,31,0,0,0,0,0,0,0,31,0,0,0,0,0,31,31,31,127\\n127,0,15,63,15,0,63,15,0,0,31,15,31,47,0,31,63,15,0\\n115,34,11,23,0,0,23,23,11,0,34,0,11,0,0,0,23,11,11,11,0,23,46,57,127,34,23,11,34,0,23,34,11,11,0,11,0\\n127,31,63,95,63,31,0,0,0,0,127,63,63,95,31,0,0,0,0\\n0,0,0,0,0,0,0,19,63,25,38,63,127,12,44,19,6,6,0,0,0,0,0,0,0,0,0,0,0,0,6,0,38,31,44,76,38\\n65,45,36,8,45,36,24,16,24,32,61,86,127,127,36,40,16,12,24\\n0,0,0,0,0,0,0,0,0,0,0,72,127,54,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,72\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,127,127,42,84,42,42,0\\n50,25,25,63,38,12,76,25,12,127,38,50,63,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,63,0,0,31,63,31,127,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,63,0,0,0,0,0,0,0,0,63,127,63,0,0,0,0,0,0,0,0,127,0,0,63,0,63,0,0,0,0,0,0,63,63,127\\n0,0,0,0,42,0,42,42,0,0,0,42,0,0,0,0,42,0,127,42,42,0,0,0,0,42,42,0,0,42,42,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n25,25,0,0,0,0,0,0,0,0,0,50,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0\\n0,0,63,63,63,63,0,0,0,0,63,63,0,0,63,127,63,127,0\\n11,3,11,3,11,20,43,127,119,100,81,62,37,22,3,0,1,0,3\\n0,0,0,0,0,0,0,0,0,0,31,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,11,11,103,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,12,12,114,127,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n76,38,50,25,0,12,0,25,38,50,38,88,127,38,25,25,0,0,76\\n0,0,0,0,0,0,0,0,0,63,0,31,127,95,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,31,0,63,63\\n0,63,127,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,95,95,0,63,0,31,0,0,0,0,0,0,63\\n0,63,0,0,63,63,0,0,63,0,0,0,63,63,63,0,127,63,127,0,63,0,0,0,0,0,63,63,63,127,63,63,63,0,63,63,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,31,63,0,0,31,95,95,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127\\n0,63,0,42,42,127,21,0,21,0,21,21,21,0,0,0,84,42,0,0,21,0,0,42,21,0,0,21,0,84,21,21,0,21,0,0\\n127,31,31,63,0,47,15,15,0,15,15,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,15,31,31,0,31,15,31,15\\n0,0,42,84,127,42,84,0,84,0,42,0,0,0,0,0,0,0,42,0,0,42,0,0,42,0,84,0,42,42,42,42,0,42,84,0\\n63,0,31,95,31,127,63,0,31,63,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,31,0,0,0,31\\n0,63,0,0,0,0,63,63,127,0,63,127,127,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,127,95,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,95,63,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,25,25,50,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,127,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,50,50,127,0,25,0,0,0,0,0,0,0\\n0,0,0,31,0,31,0,31,31,31,0,0,0,31,0,0,0,0,0,0,31,0,0,0,0,0,31,63,0,127,0,0,31,0,31,0,0\\n0,42,42,0,0,42,127,0,127,84,42,42,0,42,0,42,0,84,0,0,0,42,0,42,0,0,0,42,42,42,42,84,127,42,0,42,0\\n44,22,52,59,44,14,22,37,67,82,37,52,0,29,29,127,44,29,29\\n0,0,0,31,0,31,31,31,63,0,0,0,63,0,31,0,63,0,0,63,0,0,0,0,0,0,0,0,31,31,0,127,95,31,31,63,0\\n0,5,0,5,0,0,5,0,2,0,2,28,63,25,11,2,5,5,5,0,0,0,0,2,0,5,5,0,0,5,2,5,5,5,14,28,127\\n0,0,0,0,0,0,63,31,63,31,0,31,0,0,0,0,95,127,0\\n0,25,50,0,0,76,50,0,0,25,25,0,0,0,0,0,0,127,76,0,0,0,76,0,0,25,25,0,0,25,50,50,25,0,25,0,0\\n0,0,0,0,0,0,0,0,0,42,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,127,21,0,0\\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,0,0,0,0,0,63,127,0,0,0,0,0,0,0,0,0,63,127,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0\\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,63,0,63,0,0,0,0,0,0,0,0,63,127,0,63,127,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,63,0,0,127,127,63,63,63,0,0,0,63,0,63,0,0,127,0,0,63,63,0,0,63,0,0,63,63,0,0,63,0,0\\n0,0,0,0,0,0,29,0,22,127,14,0,0,0,7,52,74,7,14,0,0,0,0,0,0,0,0,0,0,0,0,22,52,44,7,0,0\\n0,0,0,0,0,0,25,0,50,25,0,0,127,0,0,0,0,50,25,0,25,0,0,0,25,0,0,25,0,0,25,50,0,0,25,127,0\\n0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,0,0,0,0,63,0,63,0,0,63,0,0,0,0,63,0,0,0,0,63,0,0,0,0,0,63,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0\\n0,0,0,0,0,15,31,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0\\n0,0,0,0,0,54,18,0,0,18,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,63,0,63,63,0,0,0,127,0,0,63,127,127,0,0,0,0,0,0,0,0,63,0,0,0,63,0,0,0,0\\n0,0,0,63,63,127,0,0,0,0,0,0,63,0,0,0,0,0,0,63,63,63,0,0,63,0,0,0,127,63,0,0,0,0,0,0,0\\n84,0,0,0,0,0,0,42,0,0,0,127,0,84,127,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,84,0\\n0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,0,0,0,18,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,0,0,0,0,0,0,0,0,15,0,31,15,15,111,127\\n0,47,15,47,0,0,63,63,15,63,127,31,0,15,0,63,47,63,31,15,15,0,31,15,15,0,31,31,0,31,111,47,15,63,15,0,31\\n0,25,76,25,50,76,50,127,25,0,0,0,0,0,0,0,0,25,25,25,127,25,76,0,0,25,0,0,50,50,0,76,25,0,0,0,0\\n127,21,42,63,127,105,0,63,0,0,21,0,0,0,0,0,0,21,0,84,42,84,42,21,21,42,0,42,0,63,42,0,21,21,0,0,0\\n0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,127,127,0,63,0,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,63,127,63,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,63,63,0,0,0,127\\n95,47,0,15,0,0,0,0,0,0,0,0,127,31,15,0,0,0,0\\n127,63,63,63,31,0,0,127,95,31,127,95,63,31,63,31,31,63,0\\n0,0,0,0,0,0,0,0,0,0,127,25,101,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,101\\n118,95,88,127,99,118,76,46,48,50,40,35,38,71,38,61,52,55,59\\n0,127,31,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,0,31,0,127,31,95,0,31,31,0,0,95,63,63\\n127,42,84,21,63,84,0,0,42,21,0,21,0,42,42,21,21,0,63,0,21,42,42,21,21,42,0,21,21,42,42,42,42,42,105,42\\n90,72,127,0,18,36,18,72,36,0,0,54,18,36,36,0,18,36,36,18,0,0,18,18,18,18,0,36,54,18,0,18,36,36,72,36\\n31,63,0,0,0,0,31,0,0,0,0,0,0,0,31,0,0,0,31,63,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31\\n0,127,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,76,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25\\n0,0,0,0,0,0,0,0,0,10,10,31,31,31,10,21,0,0,42,0,0,0,0,0,0,0,10,0,0,0,0,0,10,0,10,52,127\\n0,0,0,0,0,0,0,0,0,42,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,84,42,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,84,0,0,127,42,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,42,42,84,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,42,0,0,42,0,42,84,0,0,0,0,0,0,0,0,0\\n0,0,0,84,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,0,0,84,42,127\\n0,0,0,0,0,0,63,31,0,0,63,127,63,31,0,0,31,31,0\\n112,70,112,56,70,14,42,28,42,70,112,70,127,42,42,127,56,56,28\\n81,102,120,92,49,24,18,34,29,63,70,106,127,95,47,34,40,81,104\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,34,34,127,46\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,50,0,0,0,0,0,50,25,101,127,50\\n31,31,0,0,0,0,31,0,0,0,31,31,0,63,31,31,0,63,0,0,31,63,0,63,95,63,31,63,63,31,127,0,31,31,0,31\\n0,31,31,0,63,0,0,0,0,0,0,31,31,31,31,63,31,0,0,31,31,0,31,63,31,0,0,0,31,127,63,95,0,63,0,0\\n72,36,18,54,36,18,0,18,54,54,36,36,18,18,0,18,0,18,0,0,18,54,36,127,72,18,36,18,54,0,18,0,18,108,90,54\\n21,42,21,84,42,0,21,0,0,84,21,21,0,63,21,0,42,21,0,21,63,84,84,21,21,63,127,105,105,0,0,0,0,84,63,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,127,0,0,63,31,31,31,31,0,31,0,0,0,0,0,0,31,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,127,0,42,42,127,0,127,0,0,0,0,0,0,0,0,42,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,79,127,79,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,63,127,0,0,0,0,0,0,0,0,0,0\\n63,0,0,0,31,0,63,31,0,31,63,31,127,95,127,0,31,63,127\\n84,84,0,0,84,0,84,0,127,42,42,127,42,127,127,84,84,42,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,72,18,18,127,18,18,0,0,0,0,0,0\\n105,10,21,10,10,10,10,21,10,84,105,52,0,127,74,21,0,21,0\\n63,95,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,0,0,0,0,0,0,0,0,0,0,0\\n127,27,18,36,36,18,45,45,9,18,0,0,0,0,0,9,0,0,18,27,54,18,0,27,27,18,0,36,36,0,45,9,9,0,0,0,0\\n0,63,31,31,31,31,0,31,31,0,0,63,0,0,31,31,0,31,127\\n127,54,72,0,18,9,9,9,27,72,45,63,99,36,45,18,18,18,18\\n0,63,63,0,63,0,0,63,0,0,0,0,63,63,127,0,0,0,0,63,0,0,127,0,0,0,0,0,0,0,0,0,0,63,0,0\\n0,42,127,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,42,0,84,0,42,42,0,0,0,0,0,0,0,0,0,42,0,0\\n127,0,0,0,42,0,63,63,0,0,0,0,0,21,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0,0,0,21,0,0,0,0\\n101,25,25,50,101,0,25,25,25,0,0,0,0,0,0,25,50,25,50,25,25,25,127,0,25,101,0,50,25,0,76,0,0,0,0,25,0\\n127,49,56,89,54,58,35,25,37,11,23,11,30,28,44,47,44,32,56\\n0,0,0,42,0,0,42,127,42,0,0,0,0,42,0,0,0,0,0,0,0,84,0,0,42,0,0,0,42,0,0,42,0,0,0,42\\n0,0,63,0,63,63,0,63,0,0,0,63,0,0,0,0,63,0,0,0,63,63,0,0,0,0,0,0,0,0,63,127,63,127,0,0\\n127,31,0,63,52,63,0,52,21,52,21,0,21,42,105,0,0,21,0\\n0,0,0,0,0,63,63,0,0,0,0,127,63,0,63,0,0,0,0\\n0,14,0,0,42,42,0,42,14,0,14,14,42,28,56,14,14,28,28,70,14,0,28,14,0,0,0,14,14,42,14,127,14,14,14,42,0\\n0,0,0,0,0,0,0,0,21,42,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,127,0,0,0\\n0,0,0,0,0,63,0,0,63,127,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,63,63,0,63,0,0,0,63,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63\\n0,0,63,0,0,0,0,0,63,0,0,0,0,0,0,63,127,0,0,63,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,63,0,63,0,0,0,63,0,0,0,0,0,0,63,63,0,0,0,0,0,0,127\\n0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,0,42,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,42,0,0,0,127,0,0,0,0,0\\n0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,127,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,63,0,63,0,63,0,63,0,0,0,0,0,0,0,0,0,0,63,0,0,63,0,0,0,0\\n0,0,0,0,0,0,84,127,0,0,0,0,42,0,0,0,0,42,0,84,0,0,0,0,0,0,0,42,0,0,0,42,0,0,0,0,84\\n0,47,0,0,0,0,0,111,79,63,95,111,47,79,15,79,15,31,47,31,0,15,0,15,0,15,0,0,0,31,79,31,31,95,111,95,127\\n63,63,0,31,95,127,31,31,0,31,0,0,31,0,0,0,0,0,95,0,31,63,31,0,63,31,63,0,31,31,0,0,0,0,0,0,0\\n50,25,101,25,0,0,76,0,50,76,101,76,50,76,25,25,0,101,50,0,25,76,0,50,0,25,50,127,0,101,25,50,76,25,101,101,0\\n127,63,84,105,105,21,0,0,21,0,0,0,0,0,0,0,21,0,0,0,42,0,0,42,105,105,63,63,0,21,21,0,0,0,0,21,0\\n0,127,0,0,84,0,0,0,0,0,84,0,0,0,0,127,0,42,0,0,0,84,84,42,84,42,127,127,42,0,42,0,0,0,0,0,0\\n0,0,0,42,127,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,42,0,42,0,0,84,84,84,0,0,0,0,0,0,0,0\\n0,0,0,31,0,0,15,15,0,15,0,0,15,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,0,0,31,15,79,127\\n0,127,31,31,31,0,31,0,0,0,0,31,0,0,0,0,0,31,0,0,31,63,31,63,63,31,31,0,31,0,0,0,0,0,0,0,0\\n0,0,0,0,63,0,63,0,0,0,0,0,0,63,0,0,0,0,0,127,0,63,0,0,0,0,0,63,0,127,0,0,63,63,0,63,0\\n0,21,0,0,0,0,0,0,21,42,0,42,127,21,63,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,63,0\\n127,63,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,0,21,21,21,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,14,14,127,42,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,84,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,14,28,112,28,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,18,18,0,0,36,36,36,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,36,72,0,54,18,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,90,36,18,18,0,0,0,0,0,0,0\\n0,31,0,31,63,63,127,0,0,0,31,63,0,31,0,0,0,0,31,31,63,0,0,63,31,0,0,95,0,31,0,0,0,31,0,0,0\\n105,85,61,65,45,27,21,18,34,23,21,14,3,7,3,7,3,12,12,10,12,16,21,29,34,32,45,96,125,127,65,43,19,29,12,10,7\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,0,31,31,0,31,127,95,0,0,0,31,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,31,0,47,127,111,127\\n127,95,0,63,0,31,31,0,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,0,31,31,0,0,31,0,0,0,0,0\\n54,127,0,54,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,0,36,36,90,0,36,18,18,0,18,18,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,72,36,54,36,36,90,72\\n54,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,18,72,36,54,72,36,54,0,0,36,18,36,18,18,0,0,0,0,0,18,0,18,0,0,0,18,18,0,0,0,0,18,0,0,0,0,54,0,0,18,72,72,54,90,127,72\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,42,42,0,0,0,0,42,42,0,0,0,0,42,42,42,127,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,31,0,0,0,0,0,0,127,0,31,63,95,31,0\\n63,31,31,31,0,63,31,31,31,63,0,31,63,0,0,0,0,0,127,0,31,0,0,31,0,0,31,31,31,31,31,31,63,31,0,0,0,0,0,31,0,0,0,31,31,0,63,31,31,0,31,0,0,0,0,0,127,0,0,31,0,0,0,31,31,0,63,0,31,95,31,31\\n25,50,0,50,25,0,0,0,0,0,0,0,25,0,25,0,0,0,0,0,0,0,0,0,25,50,25,25,0,25,50,0,0,0,0,25,0,0,25,0,25,0,25,76,76,0,0,25,0,0,0,0,25,50,50,0,25,25,0,25,0,0,0,0,25,0,127,25,50,76,50,76\\n0,29,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,19,0,39,48,9,48,68,9,68,97,127,97\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,127,42,42,127,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,127,0,0,0,0,0,31,0,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,0,127,0,42,0,42,42,84,0,0,42,0\\n0,63,0,0,63,63,63,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,0,63,63,0,127,127,0\\n76,38,38,12,50,63,25,50,25,63,50,50,25,25,38,38,25,0,38,12,50,50,63,50,127,114,101,101,50,12,63,12,0,12,25,25,0\\n0,0,0,0,31,0,0,0,0,0,0,0,31,31,0,31,0,63,95,127,31,63,63,95,63,127,31,0,31,0,0,0,0,0,0,0,0\\n0,31,95,0,127,95,63,31,0,0,0,31,0,0,31,63,31,31,31,31,0,0,63,0,31,0,0,0,31,31,0,31,0,31,0,0,0\\n42,127,42,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,42,0,21,0,21,0,0,0,0,21,0\\n0,0,0,0,0,0,0,0,0,0,8,8,33,110,118,101,76,110,127,110,93,33,33,16,0,0,0,0,16,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,29,19,87,58,58,87,127,117,39,9,19,19,9,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,127,84,127,42,42,42,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,63,0,0,0,31,95,63,127,31,0,63,95,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,4,13,27,58,122,127,63,72,81\\n0,0,0,0,0,0,0,0,0,0,7,14,7,0,7,35,70,91,127\\n0,0,0,0,0,0,0,0,0,0,0,10,31,42,84,127,63,127,31,52,42,0,0,21,10,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,14,70,14,42,42,127,70,14,14,28,14,0,0\\n0,0,0,0,0,0,0,15,0,0,111,79,127,47,95,15,31,0,0\\n0,0,0,0,0,1,0,1,4,4,10,16,49,95,127,112,77,57,44\\n0,0,0,0,0,0,0,0,0,0,9,27,36,86,127,90,99,63,45,27,36,4,9,4,13,0,0,4,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,3,11,64,127,15,3,5,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,2,2,13,28,61,115,124,127,84,66,37,33,17,15,15,7,2,7,2,1,1,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,76,76,25,127,0,25,0,0,0,0,0,0,0,0,25,0,0,0,25,0\\n0,0,0,0,0,0,0,0,0,0,0,47,63,31,63,63,127,47,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,18,0,0,0,18,0,18,90,127,72,72,72\\n0,0,0,0,0,0,0,0,0,0,0,0,0,47,47,47,15,127,63\\n0,0,0,0,0,0,0,0,0,0,0,7,0,3,18,41,78,127,63,33,33,33,14,14,11,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,1,1,1,29,44,52,102,127,98,82,77\\n0,0,0,0,0,1,1,2,2,6,9,15,21,30,41,53,87,114,127\\n0,0,5,2,5,4,0,2,0,1,0,1,0,1,2,10,13,17,35,29,51,80,127,121,90,51,42,5,3,1,1,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,12,6,19,31,88,63,127,50,25,38,12\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,10,10,5,4,11,67,127,107,64,44,14,38,16,11\\n0,0,0,0,0,36,36,127,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,127,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,10,0,0,0,0,0,0,10,5,0,10,26,127,21\\n10,0,5,15,0,26,5,15,21,15,0,21,42,42,42,42,79,58,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,15,31,47,15,47,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,25,0,25,50,76,0\\n0,4,0,37,14,28,9,37,37,42,98,122,108,127,47,56,79,47,0\\n0,0,25,0,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,127,50,0,25,0,25,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,63,127,63,63,63,0,0,0\\n42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,84,0,0,0,127,42,0,0,42,42,42,0,42,42,42,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,25,101,127,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,0,0,127,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,84,42,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,42,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,25,0,50,0,50,25,25,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,76,0,0,50,25,0,0,25,50,127,25,0,0,0,25,50,0,76,0,50,76,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,25,0,0,127,25,0,0,25,25,0,0,0,0,0,50,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n84,127,105,105,105,63,84,42,42,21,21,21,21,0,0,0,0,21,0,0,0,0,0,21,21,42,84,0,0,21,21,21,42,63,21,63\\n54,54,54,54,127,72,90,90,18,108,0,36,36,0,0,18,0,0,18,18,0,0,0,0,0,18,18,0,36,0,18,18,18,36,0,18\\n0,31,95,0,0,0,127,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0\\n0,25,127,0,0,0,0,25,0,0,0,0,25,50,0,0,0,25,25,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n31,0,0,95,95,31,63,0,127,95,127,63,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,31,0,0,0,31,31,0,31,31\\n63,127,63,31,63,31,31,63,0,0,63,0,63,0,0,0,0,0,0,0,0,0,0,0,63,0,0,31,63,0,31,31,63,63,31,0\\n106,118,127,90,81,40,32,20,24,24,20,36,57,36,24,16,16,24,36,45,73,40,69,94,114,122,86,36,57,36,40,36,20,49,45,36,16\\n0,0,42,0,0,0,0,42,21,0,21,63,84,127,105,21,21,0,63,0,0,0,0,21,0,0,21,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,127,127,76,101,50,50,50,0,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,9,10,0,7,10,17,64,79,61,52,44,90,127,94\\n0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,18,0,36,18,54,36,36,0,127,54,36,90,0,54,18,18,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,14,0,0,84,98,14,56,127,56\\n127,63,31,0,0,127,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,31,63,31,0,0,0,0,31,0,0,31,0,0\\n0,31,0,31,0,31,31,95,63,31,127,31,95,95,0,0,95,63,31,0,63,31,63,63,31,63,0,31,31,95,0,31,31,63,31,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,21,21,21,21,0,127,63,21,63,84,21,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,127,18,72,54,54,18,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,63,63,42,127,63,42,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,21,21,127,0\\n0,0,0,0,0,0,0,63,0,0,127,127,0,127,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0\\n0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,25,25,127,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,38,101,12,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,25,76,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,127,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,50,0,50,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,42,42,42,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,42,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,127,42,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,127,31,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,127,23,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,21,0,127,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,105,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,127,0,21,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,127,90,0,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,36,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,36,18,18,0,18,0,0,0,0,0,0,0,0\\n36,36,27,9,0,0,9,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,9,0,18,9,45,54,127\\n0,63,47,63,0,63,0,47,0,0,47,47,0,0,0,0,15,15,0,0,0,0,0,0,15,0,0,31,15,0,0,15,127,47,0,15,63\\n0,0,0,0,0,31,0,0,0,31,31,0,31,0,0,31,0,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0,31,127,63,31,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,127,90,36,0,0,0,0,0,0,0,18,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,127,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,127,31,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,101,127,76,50,101,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,101,0,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,84,127,21,42,0,42,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,42,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,21,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,84,0,0,0,84,84,42,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,42,84,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,31,47,79,47,47,127,63,31,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,47,31,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,15,31,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,31,95,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,47,127\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,42,0,0,0,42,63,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,28,56,127,0,0\\n63,63,0,0,0,0,0,0,0,0,0,127,0,31,0,0,63,31,0,31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,95,63,0,127,31,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,3,11,67,127,52,37,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,41,97,108,74,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,82,112,14,7,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,17,57,127,40,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,86,86,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,34,69,63,17,0,0,0,0,0,0,0,0\\n127,34,23,11,57,46,11,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,34,57\\n127,42,63,42,0,0,0,0,0,0,0,0,0,21,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,95,127,127,0\\n127,127,0,95,63,31,31,63,31,31,0,0,0,95,127,31,31,31,0\\n46,69,127,127,57,34,57,34,46,0,34,0,0,0,23,23,11,57,23,46,23,23,11,0,0,11,34,11,11,11,11,0,0,34,46,80\\n39,97,127,97,68,29,97,19,9,19,19,9,0,9,0,0,9,9,19,0,19,0,9,19,9,9,9,19,0,29,39,29,19,48,58,29\\n0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,10,10,74,127,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,72,127,54,0,18,18,0\\n0,31,0,47,0,127,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n38,38,38,63,88,12,63,88,63,12,12,12,50,12,0,0,0,0,0,0,12,25,12,0,38,63,63,127,25,50,12,25,12,0,12,12\\n0,42,84,21,105,63,105,42,21,42,105,42,63,0,21,21,0,21,0,0,0,21,21,42,42,21,84,105,63,127,21,0,42,0,84,63\\n0,108,127,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18\\n0,0,42,42,42,0,0,0,0,0,0,42,42,127,42,84,0,0,0,0,0,0,0,0,84,84,42,0,42,42,0,0,0,0,0,0\\n0,63,63,63,0,0,0,0,0,0,0,0,127,31,31,0,0,0,0,0,0,0,0,0,0,31,63,31,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,63,0,0,0,0,95,63,0,0,31,0,0,0,127,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,84,0,42,0,0,127,84,42,0,84,0,0,42,42,0,0,0\\n0,0,0,0,0,0,72,127,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,21,0,0,0,0,0,0,0,0,63,0,42,127,84,21,0,0,0,0,0,0,0,0,0,0,21,21,105,42,0,0,0,0,0,0\\n0,84,0,0,0,0,0,0,0,42,0,42,84,127,84,42,0,0,0,0,0,0,0,0,0,0,42,84,84,84,84,42,84,0,42,42\\n0,0,0,127,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,31,47,47,31,15,0,0,0,47,15,15,47,15,0,15,0,15,0,0,47,15,31,79,31,63,47,0,0,31,31,31,47,0,0,31,0\\n0,0,0,0,0,0,0,0,0,31,31,127,95,95,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,31,0,95,0\\n127,63,54,18,18,9,27,27,18,63,63,36,81,36,81,27,36,18,27,0,9,27,127,45,127,81,54,45,18,9,18,81,81,36,54,54,36\\n0,0,0,0,0,0,63,0,31,31,31,63,63,95,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,95,0\\n0,42,0,0,0,127,42,42,0,0,0,0,42,42,0,42,0,42,84,0,0,0,0,84,42,42,0,0,0,0,42,42,42,0,0,0,0\\n127,71,33,21,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,127,56,70,127,84\\n50,25,127,101,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,79,63,127,111,95,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,84,28,35,14,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,0,84,0,42,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84\\n0,0,0,0,0,0,0,0,0,0,14,127,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n19,9,0,0,0,0,0,0,19,19,9,39,127,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,63,63,84,21,21,21,0,0,0,0,0,0,0,21,0,0,21,0\\n0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,76,127,25,50,76,0,25,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,76,127,50,25,0,0,25,0,0,0,0,25,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,18,18,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,54,127,72,36,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,38,38,127,12,38,0,25,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,38,63,127,25,12,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n72,127,108,72,36,36,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,63,63,0,127,0,63,0,0,0,0,0,0,0,0,0,0\\n127,31,63,127,63,31,127,0,0,63,95,0,127,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,50,127,25,25,76,25,25,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,50,88,127\\n50,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,50,76,25,0,0,127,76,25,25,25,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,18,0,0,36,72,72,127,90,18,72\\n127,63,31,15,15,15,0,79,0,31,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n127,95,79,31,79,31,0,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n10,5,15,5,10,25,76,76,40,71,35,40,5,10,5,20,10,10,10,5,5,10,10,15,15,81,121,127,111,91,50,20,20,10,10,15,0\\n0,0,0,95,63,0,95,31,95,95,31,31,63,95,0,63,0,0,0,0,31,0,127,95,31,31,31,0,95,95,31,127,31,0,0,31,0\\n127,44,76,38,57,44,82,107,50,25,25,50,57,25,50,44,69,50,25\\n0,42,0,84,84,42,42,0,0,127,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,50,118,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,63,84,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,54,127,90,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,25,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,127,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,88,12,12,12,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,101,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,127,15,7,0,0,0,0,0,0,7,7,7,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,33,118,127,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,101,0,101,0,0,0,0,0,0,0,0,127,101,25,25,0,0,0,0,0,0,0,0,0,0\\n45,27,40,27,22,4,0,4,13,4,9,9,40,36,36,36,54,77,127\\n0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,50,101,127,50\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,0,50,0,25,25,127,76,0\\n31,79,0,15,0,0,15,0,0,0,0,15,31,47,0,95,47,79,127\\n0,38,12,25,25,0,76,127,88,76,12,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,21,63,84,127,63,63,127,84,42,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21\\n21,0,0,0,0,0,21,42,127,42,42,63,63,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,15,47,127,0,31,47,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0\\n0,0,31,0,0,31,63,0,31,31,63,63,31,127,31,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,21,42,21,127,84,21,0,0,0\\n0,0,0,0,0,0,0,0,54,18,0,127,108,54,72,0,0,0,0\\n31,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,63,47,0\\n127,47,55,55,7,23,7,15,15,23,0,0,15,7,0,0,7,0,7,7,7,0,31,15,47,23,31,7,15,47,31,55,55,79,63,87,111\\n28,14,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,42,28,0,0,0,0,0,0,28,0,0,14,56,28,56,127,56\\n36,0,0,0,18,36,36,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,127,0,0,18,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,18,0,18,0,18,0,36,54,36,18,0,0\\n0,0,0,0,0,0,0,127,0,0,0,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0,63,0,0,0,63,63,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,63,63,0,0,0,0,0,127,63\\n0,127,127,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,127,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,127,127,127,127\\n95,0,0,31,31,0,31,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,31,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0\\n0,0,0,0,0,0,0,0,0,0,25,50,25,76,127,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,127,63,15,0,15,0,0,0,0\\n0,0,127,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,127,127,127,127,127,0,0,0,0,127,127,0,0,127,127,0,127,0\\n0,0,0,0,0,0,0,127,63,127,63,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n63,0,0,0,63,63,0,0,63,0,0,0,63,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,63,0,0\\n0,0,0,0,0,76,127,50,50,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,0,56,28,28,56,98,127,84\\n0,0,0,0,0,0,0,0,0,0,0,0,76,0,101,25,0,127,0\\n127,31,31,0,0,31,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,63,31,0,31,31,31,31,0,0\\n0,7,15,7,111,127,15,7,15,0,0,0,0,15,31,23,31,71,31\\n0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,23,11,0,57,46,127,46,57,57,11,23,11,0,0,0,0,11,0,0,0,0\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,31,0,31,127,63,63,31,63,0,0,31,31,31,0,127,63\\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,42,127,127,0,42,0,0,0,0,42,0,0,0,0,42,0',rsb),l);for(B=0;B<A.length;B++){C=A[B];w=Krb.kdb(a.c,C);if(!w){w=new Lrb.ix((s=Hrb.rnb('<').length,Erb.k7(Hrb.rnb(C).substr(Hrb.rnb(C).length-s,s),'<')||(t=Hrb.rnb('>').length,Erb.k7(Hrb.rnb(C).substr(Hrb.rnb(C).length-t,t),'>'))?0:(u=Hrb.rnb('-').length,Erb.k7(Hrb.rnb(C).substr(Hrb.rnb(C).length-u,u),'-')||(v=Hrb.rnb('+').length,Erb.k7(Hrb.rnb(C).substr(Hrb.rnb(C).length-v,v),'+'))?1:(r=Hrb.rnb('=').length,Erb.k7(Hrb.rnb(C).substr(Hrb.rnb(C).length-r,r),'=')?3:2))));Krb.pjb(a.c,C,w)}if(d!=null){c=Erb.v7(d[B],',');w.a=tX(Drb.b3,hub,6,c.length,15,1);for(i=0;i<c.length;i++)w.a[i]=Erb.V5(c[i],eub,32767)<<16>>16}if(q!=null){k=Erb.v7(q[B],',');w.d=rX(Drb.b3,[Rvb,hub],[13,6],15,[k.length,2],2);for(i=0;i<k.length;i++){j=Erb.p7(k[i],A7(45),1);w.d[i][0]=Erb.V5(Erb.x7(k[i],0,j),eub,32767)<<16>>16;w.d[i][1]=Erb.V5(Erb.w7(k[i],j+1),eub,32767)<<16>>16}}if(g!=null){h=Erb.v7(g[B],',');w.c=tX(Drb.b3,hub,6,h.length,15,1);for(i=0;i<h.length;i++)w.c[i]=Erb.V5(h[i],-128,127)<<24>>24}if(f!=null){e=Erb.v7(f[B],',');w.b=tX(Drb.JY,nub,6,e.length,15,1);for(i=0;i<e.length;i++)w.b[i]=Erb.V5(e[i],-128,127)<<24>>24}}};\nLrb.qw=function qw(a){var b,c,d,e;a.a=15;for(e=(c=(new Krb.Kcb(a.c)).a.hc().sb(),new Krb.Rcb(c));e.a.jc();){d=(b=e.a.kc(),b.nc());Lrb.gx(d)}};Lrb.rw=function rw(){this.c=new Krb.xjb;this.b=0};Lrb.sw=function sw(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q;d=tX(Drb.LY,Osb,6,2,15,1);n=Lrb.vw(a,c);for(i=0;i<2;i++){if(c[3*i]!=-1){f=2-i;o=3-3*i;j=0;for(m=0;m<3;m++){g=Jrb.Fn(a,c[f],m);if(g!=n[1-i]&&a.C[g]!=1){c[o]=g;b?(d[j++]=Lrb.Sv(b,c)):(d[j++]=Jrb.Sj(a,c))}}c[o]=-1;return Lrb.uw(d)}}e=tX(Drb.LY,Osb,6,2,15,1);k=0;for(h=0;h<3;h++){p=Jrb.Fn(a,c[1],h);if(p!=n[0]&&a.C[p]!=1){c[0]=p;l=0;for(m=0;m<3;m++){q=Jrb.Fn(a,c[2],m);if(q!=n[1]&&a.C[q]!=1){c[3]=q;b?(e[l++]=Lrb.Sv(b,c)):(e[l++]=Jrb.Sj(a,c))}}d[k++]=Lrb.uw(e)}}c[0]=-1;c[3]=-1;return Lrb.uw(d)};Lrb.tw=function tw(a,b){if(b[0]!=-1&&b[3]!=-1)return Lrb.Sv(a,b);return Lrb.sw(a.o,a,b)};Lrb.uw=function uw(a){var b,c;c=(a[1]+a[0])/2;b=$wnd.Math.abs(a[1]-a[0]);if(b>ntb)return c;return c<0?c+ntb:c-ntb};Lrb.vw=function vw(a,b){var c,d,e;e=tX(Drb.NY,Qsb,6,2,15,1);if(Jrb.Dn(a,b[1],b[2])!=-1){e[0]=b[2];e[1]=b[1]}else{c=tX(Drb.NY,Qsb,6,16,15,1);d=Jrb.co(a,c,b[1],b[2],15,null,null);e[0]=c[1];e[1]=c[d-1]}return e};Lrb.ww=function ww(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;Jrb.ou(a,7);j=0;for(e=0;e<a.g;e++){if(Jrb.Qk(a,e)==1&&!(e<a.g&&Jrb.Gr(a.p,e))&&Jrb._n(a,a.D[0][e])>1&&Jrb._n(a,a.D[1][e])>1&&(a.F[e]&64)==0&&!((a.F[e]&128)!=0&&(!!a.p&&e<a.g?Jrb.wr(a.p,e):0)<=5)){b[e]=true;++j}}g=tX(Drb.NY,Qsb,6,2,15,1);n=tX(Drb.NY,Qsb,6,2,15,1);f=null;for(d=0;d<a.g;d++){if(b[d]&&(f==null||!f[d])){c=0;for(l=0;l<2;l++){g[l]=a.D[l][d];n[l]=a.D[1-l][d];p=n[l];while(Jrb.wn(a,g[l])==2&&Jrb._n(a,g[l])==2&&Jrb.Dk(a,g[l])<10){for(m=0;m<2;m++){h=Jrb.Fn(a,g[l],m);if(h!=n[l]){i=Jrb.Hn(a,g[l],m);if(b[i]&&Jrb.Qk(a,i)==1){b[i]=false;--j}n[l]=g[l];g[l]=h;++c;break}}if(g[l]==p){c=0;break}}}if(c!=0){b[d]=false;--j;if(Jrb._n(a,g[0])>1&&Jrb._n(a,g[1])>1){q=Jrb.qo(a,n[0],g[0]);r=Jrb.qo(a,n[1],g[1]);k=q<r?0:1;o=Jrb.Dn(a,n[k],g[k]);f==null&&(f=tX(Drb.c3,itb,6,a.g,16,1));f[o]=true;b[o]=true;++j}}}}return j};Lrb.xw=function xw(a){var b;b=Lrb.ow(Lrb.nw,a);return !b?null:Lrb.dx(b)};Lrb.yw=function yw(a,b,c,d){Lrb.Zw(d,a,b);if(c!=null){c[0]=d.f[0];c[1]=d.b[0];c[2]=d.b[1];c[3]=d.f[1]}return d.d};Lrb.zw=function zw(a){var b;b=Lrb.ow(Lrb.nw,a);return !b?null:Lrb.ex(b)};Lrb.Aw=function Aw(a){var b;b=Lrb.ow(Lrb.nw,a);return !b?null:Lrb.cx(b)};Lrb.Bw=function Bw(){var a;!Lrb.nw&&(Lrb.nw=new Lrb.rw);(Lrb.nw.b&1)!=0&&Lrb.nw.a!=15&&(Erb.X7(),String.fromCharCode(10));a=1&~Lrb.nw.b;if(a!=0){Lrb.pw(Lrb.nw,a);a==1&&Lrb.qw(Lrb.nw)}};Z3(314,1,{},Lrb.rw);_.a=0;_.b=0;Drb.RZ=B5(314);Lrb.Cw=function Cw(a,b){var c,d;for(d=0;d<a.b.length;d++){c=$wnd.Math.abs(a.b[d]-b.b[d]);if(c>Svb&&c<a.a[d]-Svb)return c<a.a[d]/2^a.b[d]<b.b[d]?1:-1}return 0};Lrb.Dw=function Dw(a,b){var c,d;for(d=0;d<a.b.length;d++){c=$wnd.Math.abs(a.b[d]-b.b[d]);if(c>Svb&&c<a.a[d]-Svb)return false}return true};Lrb.Ew=function Ew(a,b){this.b=a;this.a=b};Z3(222,1,{222:1,28:1},Lrb.Ew);_.rb=function Fw(a){return Lrb.Cw(this,a)};_.mb=function Gw(){var a,b;b=new Erb.S7;for(a=0;a<this.b.length;a++){b.a+=a==0?'Torsions: ':', ';Erb.P7(b,(Zrb.cV(),Zrb.dV(this.b[a],3)+'('+IY($wnd.Math.round(this.a[a]+0.5))+')'))}return b.a};Drb.TZ=B5(222);Lrb.Jw=function Jw(){Lrb.Jw=_3;Lrb.Iw=BX(nX(Drb.LY,1),Osb,6,15,[mtb,ntb,Tvb,Ztb]);Lrb.Hw=BX(nX(Drb.NY,2),lub,7,0,[BX(nX(Drb.NY,1),Qsb,6,15,[0,0,0,2]),BX(nX(Drb.NY,1),Qsb,6,15,[0,0,1,2]),BX(nX(Drb.NY,1),Qsb,6,15,[0,1,1,3]),BX(nX(Drb.NY,1),Qsb,6,15,[2,2,3,2])])};Lrb.Kw=function Kw(a,b,c,d){var e,f,g,h;if(d==1&&!Lrb.Pw(a,b)){if(Jrb.Gn(a.b,b)==3)return -1;if(Jrb.Gn(a.b,b)==3){e=Lrb.Nw(a,b,c);if(Jrb.zu(a.b,e[0])==Jrb.zu(a.b,e[1]))return e[2];return Jrb.zu(a.b,e[0])==Jrb.zu(a.b,e[2])?e[1]:e[0]}}g=-1;h=-1;for(f=0;f<Jrb.Gn(a.b,b);f++){e=Jrb.Fn(a.b,b,f);if(e!=c&&g<Jrb.zu(a.b,e)){g=Jrb.zu(a.b,e);h=e}}return h};Lrb.Lw=function Lw(a){var b,c,d,e,f;a.a=rX(Drb.NY,[lub,Qsb],[7,6],15,[a.d.length,4],2);a.c=rX(Drb.NY,[lub,Qsb],[7,6],15,[a.d.length,2],2);a.e=tX(Drb.NY,Qsb,6,a.d.length,15,1);b=tX(Drb.NY,Qsb,6,2,15,1);for(e=0;e<a.d.length;e++){for(f=0;f<2;f++){b[0]=Jrb.Ik(a.b,1-f,a.d[e]);b[1]=Jrb.Ik(a.b,f,a.d[e]);Lrb.Vw(a.b,b[1])&&Lrb.Tw(a.b,b[0],b,null);a.a[e][1+f]=b[1];a.c[e][f]=b[0]}c=Lrb.Mw(a,a.a[e][1],a.c[e][0]);d=Lrb.Mw(a,a.a[e][2],a.c[e][1]);a.e[e]=Lrb.Hw[c][d];a.a[e][0]=Lrb.Kw(a,a.a[e][1],a.c[e][0],c);a.a[e][3]=Lrb.Kw(a,a.a[e][2],a.c[e][1],d)}};Lrb.Mw=function Mw(a,b,c){var d;if(Jrb.Gn(a.b,b)==2)return 1;d=Lrb.Nw(a,b,c);if(Jrb.Gn(a.b,b)==3){return Jrb.zu(a.b,d[0])==Jrb.zu(a.b,d[1])?Lrb.Pw(a,b)?2:1:Lrb.Pw(a,b)?1:0}if(Jrb.Gn(a.b,b)==4){if(Jrb.zu(a.b,d[0])==Jrb.zu(a.b,d[1])&&Jrb.zu(a.b,d[0])==Jrb.zu(a.b,d[2]))return 3;if(Jrb.zu(a.b,d[0])==Jrb.zu(a.b,d[1])||Jrb.zu(a.b,d[0])==Jrb.zu(a.b,d[2])||Jrb.zu(a.b,d[1])==Jrb.zu(a.b,d[2]))return 1}return 0};Lrb.Nw=function Nw(a,b,c){var d,e,f;f=0;d=tX(Drb.NY,Qsb,6,Jrb.Gn(a.b,b)-1,15,1);for(e=0;e<Jrb.Gn(a.b,b);e++)Jrb.Fn(a.b,b,e)!=c&&(d[f++]=Jrb.Fn(a.b,b,e));return d};Lrb.Ow=function Ow(a,b){var c,d,e;e=tX(Drb.MY,Pub,6,a.d.length,15,1);d=tX(Drb.MY,Pub,6,a.d.length,15,1);for(c=0;c<a.d.length;c++){e[c]=Lrb.Uw(Lrb.tw(b,a.a[c]),a.e[c]);d[c]=Lrb.Iw[a.e[c]]}return new Lrb.Ew(e,d)};Lrb.Pw=function Pw(a,b){if(Jrb.wn(a.b,b)==1&&Jrb.Dk(a.b,b)<10||Jrb.yo(a.b,b)||Jrb.Fo(a.b,b,true))return true;return false};Lrb.Qw=function Qw(a){Lrb.Jw();this.b=a;Jrb.ou(this.b,63);this.d=Lrb.Sw(a);Lrb.Lw(this)};Lrb.Rw=function Rw(a,b){Lrb.Jw();this.b=a;Jrb.ou(this.b,63);this.d=b;Lrb.Lw(this)};Lrb.Sw=function Sw(a){Lrb.Jw();var b,c,d,e,f;Jrb.ou(a,7);e=tX(Drb.c3,itb,6,a.g,16,1);d=0;for(c=0;c<a.g;c++){if(Lrb.Ww(a,c)){e[c]=true;++d}}f=tX(Drb.NY,Qsb,6,d,15,1);d=0;for(b=0;b<a.g;b++)e[b]&&(f[d++]=b);return f};Lrb.Tw=function Tw(a,b,c,d){var e,f,g;for(e=0;e<2;e++){f=Jrb.Fn(a,c[1],e);if(f!=c[0]){if(f==b)return false;g=Jrb.Hn(a,c[1],e);c[0]=c[1];c[1]=f;if(a.j[f]==1)return false;d!=null&&!Jrb.sl(a,c[0])&&!Jrb.sl(a,c[1])&&(d[0]=$wnd.Math.max(d[0],g));if(!(a.j[f]==2&&a.o[f]==2&&a.C[f]<=7))return true;return Lrb.Tw(a,b,c,d)}}return false};Lrb.Uw=function Uw(a,b){var c;c=Lrb.Iw[b]/2;while(a<-c)a+=mtb;while(a>=c)a-=Lrb.Iw[b];return a};Lrb.Vw=function Vw(a,b){return a.j[b]==2&&a.o[b]==2&&a.C[b]<=7};Lrb.Ww=function Ww(a,b){var c,d,e,f,g,h,i,j,k,l,m;if(Jrb.Qk(a,b)!=1||b<a.g&&Jrb.Gr(a.p,b)||(!!a.p&&b<a.g?Jrb.wr(a.p,b):0)==3)return false;c=tX(Drb.NY,Qsb,6,2,15,1);for(h=0;h<2;h++){c[h]=a.D[h][b];if(Jrb.sl(a,c[h])||Jrb._n(a,c[h])<=1)return false}if(Lrb.Vw(a,c[0])||Lrb.Vw(a,c[1])){l=tX(Drb.NY,Qsb,6,1,15,1);l[0]=b;d=tX(Drb.NY,lub,7,2,0,2);for(i=0;i<2;i++){if(Lrb.Vw(a,c[i])){d[i]=tX(Drb.NY,Qsb,6,2,15,1);d[i][0]=c[1-i];d[i][1]=c[i];if(!Lrb.Tw(a,c[1-i],d[i],l))return false}}if(b!=l[0])return false;for(j=0;j<2;j++)d[j]!=null&&(c[j]=d[j][1])}for(g=0;g<2;g++){f=Jrb.Gn(a,c[g]);if(f==1)return false;m=0;for(k=0;k<f;k++){e=Jrb.Fn(a,c[g],k);(a.u[e]&oub)!=0||++m}if(m<2)return false}return true};Z3(219,1,{},Lrb.Qw,Lrb.Rw);Drb.SZ=B5(219);Lrb.Yw=function Yw(){Lrb.Yw=_3;Lrb.Xw=BX(nX(Drb.NY,2),lub,7,0,[BX(nX(Drb.NY,1),Qsb,6,15,[0,0,1]),BX(nX(Drb.NY,1),Qsb,6,15,[0,2,3]),BX(nX(Drb.NY,1),Qsb,6,15,[1,3,3])])};Lrb.Zw=function Zw(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V;Jrb.mu(a.c);a.d=null;Jrb.ou(b,63);if(Jrb.Qk(b,c)!=1||c<b.g&&Jrb.Gr(b.p,c))return false;if(Jrb.Dk(b,b.D[0][c])==1||Jrb.Dk(b,b.D[1][c])==1)return false;I=(b.F[c]&128)!=0;if(I&&(!!b.p&&c<b.g?Jrb.wr(b.p,c):0)<6)return false;e=tX(Drb.c3,itb,6,b.f,16,1);a.a=0;for(A=0;A<2;A++){a.b[A]=b.D[A][c];a.e[A]=b.D[1-A][c];while(Jrb.wn(b,a.b[A])==2&&Jrb._n(b,a.b[A])==2&&Jrb.Dk(b,a.b[A])<10){for(J=0;J<Jrb.Gn(b,a.b[A]);J++){g=Jrb.Fn(b,a.b[A],J);if(g!=a.e[A]&&b.C[g]!=1){if(b.j[g]==1||a.a==16)return false;e[a.b[A]]=true;a.e[A]=a.b[A];a.b[A]=g;++a.a;break}}}K=Jrb._n(b,a.b[A]);if(K>4||K==1)return false;e[a.b[A]]=true}for(B=0;B<2;B++){for(J=0;J<Jrb.Gn(b,a.b[B]);J++){g=Jrb.Fn(b,a.b[B],J);b.C[g]!=1&&(e[g]=true)}}a.g=tX(Drb.NY,Qsb,6,b.f,15,1);Jrb.hn(b,a.c,e,true,a.g);for(C=0;C<a.g.length;C++)a.g[C]!=-1&&(a.i[a.g[C]]=C);Jrb.vm(a.c,true);if(I){f=Jrb.Dn(a.c,a.g[a.b[0]],a.g[a.b[1]]);if(f!=-1){Jrb.sm(a.c,f,256,true);R=(Jrb.ou(b,7),b.p);for(Q=0;Q<R.i.a.length;Q++){if(Jrb.Ir(R,Q,c)){for(D=0;D<2;D++){for(J=0;J<Jrb.Gn(b,a.b[D]);J++){g=Jrb.Fn(b,a.b[D],J);if(g!=a.e[D]){if(Jrb.Hr(R,Q,g)&&b.C[g]!=1){Jrb.sm(a.c,Jrb.Dn(a.c,a.g[a.b[D]],a.g[g]),256,true);break}}}}}}}}for(F=0;F<2;F++){Jrb.Fo(b,a.b[F],true)&&Jrb.cm(a.c,a.g[a.b[F]],Ttb,true);i=false;for(J=0;J<Jrb.Gn(b,a.b[F]);J++){g=Jrb.Fn(b,a.b[F],J);if(g!=a.e[F]&&b.C[g]!=1){r=Jrb.Dn(a.c,a.g[a.b[F]],a.g[g]);if(Jrb.Tk(a.c,r)==8){i=true}else if(b.C[g]==6&&!Jrb.yo(b,a.b[F])){q=g<b.f&&Jrb.Fr(b.p,g)?2:4;Jrb.cm(a.c,a.g[g],q,true)}h=Jrb.Hn(b,a.b[F],J);S=!!b.p&&h<b.g?Jrb.wr(b.p,h):0;(S==3||S==4)&&Jrb.sm(a.c,r,S<<17,true);if(h<b.g&&Jrb.Gr(b.p,h)||Jrb.In(b,a.b[F],J)==2){K=Jrb._n(b,g);v=K==3;!v&&K==2&&(b.u[g]&Oub)==0&&(v=Jrb.ro(b,a.b[1-F],h)!=-1);v?Jrb.cm(a.c,a.g[g],Dtb,true):h<b.g&&Jrb.Gr(b.p,h)&&Jrb.cm(a.c,a.g[g],Ctb,true)}Jrb.In(b,a.b[F],J)==1&&(Jrb._n(b,g)==4?Jrb.cm(a.c,a.g[g],Htb,true):b.C[g]==6&&Jrb.cm(a.c,a.g[g],Etb,true))}}i||(Jrb.yo(b,a.b[F])?Jrb.cm(a.c,a.g[a.b[F]],2,true):Jrb.cm(a.c,a.g[a.b[F]],4,true))}Jrb.ou(a.c,191);for(w=0;w<2;w++){s=a.g[a.b[w]];if(Jrb.xk(a.c,s)==3){if(Jrb.xk(b,a.b[w])==3){return false}else{L=Jrb.xn(a.c,s);Jrb.tm(a.c,L,257);if(Jrb.Ik(a.c,0,L)!=s){Jrb.km(a.c,1,L,Jrb.Ik(a.c,0,L));Jrb.km(a.c,0,L,s)}Jrb.ou(a.c,191)}}}m=a.g[a.b[0]];n=a.g[a.b[1]];O=a.g[a.e[0]];P=a.g[a.e[1]];j=Jrb.rk(a.c,m);k=Jrb.rk(a.c,n);if(Jrb.il(a.c,m)&&Jrb.il(a.c,n)){if((j!=0||k!=0)&&(j!=k||Jrb.qk(a.c,m)!=Jrb.qk(a.c,n)))return false}l=false;if(Jrb.il(a.c,m)&&j!=0){Jrb.Xl(a.c,m,0,-1);l=true}if(Jrb.il(a.c,n)&&k!=0){Jrb.Xl(a.c,n,0,-1);l=true}l&&Jrb.ou(a.c,191);M=Jrb.zu(a.c,m);N=Jrb.zu(a.c,n);if(M<N){V=a.b[0];a.b[0]=a.b[1];a.b[1]=V;V=a.e[0];a.e[0]=a.e[1];a.e[1]=V;V=m;m=n;n=V;V=O;O=P;P=V}H=false;if(Jrb.il(a.c,m)||Jrb.il(a.c,n)){Jrb.il(a.c,m)?(H=Jrb.pu(a.c,m)==1):Jrb.il(a.c,n)&&(H=Jrb.pu(a.c,n)==1);if(H){for(d=0;d<a.c.q;d++)Jrb.gm(a.c,d,-Jrb.Ak(a.c,d));Jrb.ou(a.c,191)}}o=Lrb._w(a,m,O);p=Lrb._w(a,n,P);a.f[0]=o==-1?-1:a.i[o];a.f[1]=p==-1?-1:a.i[p];G=Jrb.wu(a.c);if(G==null)return false;t=Lrb.$w(a,m,O);u=Lrb.$w(a,n,P);t==0&&u==0&&(a.c.I&vub)==oub?(U=2):(U=Lrb.Xw[t][u]);T=U==0?H?'<':'>':U==1?H?'-':'+':U==3?'=':'';a.d=G+T;return true};Lrb.$w=function $w(a,b,c){var d,e,f,g;if(Jrb.Gn(a.c,b)==2)return 1;d=Lrb.ax(a,b,c);if(Jrb.Gn(a.c,b)==3){return Jrb.zu(a.c,d[0])==Jrb.zu(a.c,d[1])?Jrb.wn(a.c,b)==1&&Jrb.Dk(a.c,b)<10||Jrb.yo(a.c,b)||Jrb.Fo(a.c,b,true)?2:1:Jrb.wn(a.c,b)==1&&Jrb.Dk(a.c,b)<10||Jrb.yo(a.c,b)||Jrb.Fo(a.c,b,true)?1:0}if(Jrb.Gn(a.c,b)==4){for(e=0;e<d.length;e++){g=Jrb.zu(a.c,d[e]);for(f=e+1;f<d.length;f++)if(g==Jrb.zu(a.c,d[f]))return 1}}return 0};Lrb._w=function _w(a,b,c){var d,e,f,g,h,i,j,k,l,m;k=-1;l=-1;m=-1;f=tX(Drb.c3,itb,6,Jrb.Gn(a.c,b),16,1);for(i=0;i<Jrb.Gn(a.c,b);i++){if(!f[i]){e=Jrb.Fn(a.c,b,i);if(e!=c){g=Jrb.zu(a.c,e);if(l<g){h=false;for(j=i+1;j<Jrb.Gn(a.c,b);j++){d=Jrb.Fn(a.c,b,j);if(d!=c&&Jrb.zu(a.c,d)==g){f[j]=true;if(h)return e;h=true}}if(h){m=e}else{l=g;k=e}}}}}if(k==-1)if(Jrb.wn(a.c,b)==1&&Jrb.Dk(a.c,b)<10||Jrb.yo(a.c,b)||Jrb.Fo(a.c,b,true))return m;return k};Lrb.ax=function ax(a,b,c){var d,e,f;f=0;d=tX(Drb.NY,Qsb,6,Jrb.Gn(a.c,b)-1,15,1);for(e=0;e<Jrb.Gn(a.c,b);e++)Jrb.Fn(a.c,b,e)!=c&&(d[f++]=Jrb.Fn(a.c,b,e));return d};Lrb.bx=function bx(){Lrb.Yw();this.c=new Jrb.Hu(24,29);this.i=tX(Drb.NY,Qsb,6,24,15,1);this.b=tX(Drb.NY,Qsb,6,2,15,1);this.e=tX(Drb.NY,Qsb,6,2,15,1);this.f=tX(Drb.NY,Qsb,6,2,15,1)};Z3(214,1,{},Lrb.bx);_.a=0;Drb.UZ=B5(214);Lrb.cx=function cx(a){var b,c,d,e,f,g,h,i,j;b=null;switch(a.e){case 1:b=tX(Drb.b3,hub,6,2*a.a.length,15,1);for(d=0;d<a.a.length;d++){b[d]=a.a[d];b[a.a.length+d]=180+a.a[d]<<16>>16}return b;case 2:e=a.a[0]==0?1:0;f=a.a[a.a.length-1]==180?a.a.length-1:a.a.length;j=f-e;b=tX(Drb.b3,hub,6,a.a.length+j,15,1);for(g=0;g<a.a.length;g++)b[g]=a.a[g];for(h=e;h<f;h++)b[b.length-1-h+e]=360-a.a[h]<<16>>16;return b;case 3:e=a.a[0]==0?1:0;f=a.a[a.a.length-1]==90?a.a.length-1:a.a.length;j=f-e;b=tX(Drb.b3,hub,6,2*a.a.length+2*j,15,1);for(i=0;i<a.a.length;i++){b[i]=a.a[i];b[a.a.length+j+i]=180+a.a[i]<<16>>16}for(c=e;c<f;c++){b[a.a.length+j-1-c+e]=180-a.a[c]<<16>>16;b[b.length-1-c+e]=360-a.a[c]<<16>>16}return b;default:return a.a;}};Lrb.dx=function dx(a){var b,c,d,e,f,g,h,i,j,k;b=null;k=a.c.length;switch(a.e){case 1:b=tX(Drb.b3,hub,6,2*k,15,1);for(d=0;d<k;d++){b[d]=a.c[d];b[k+d]=a.c[d]}return b;case 2:e=a.a[0]==0?1:0;f=a.a[k-1]==180?k-1:k;j=f-e;b=tX(Drb.b3,hub,6,k+j,15,1);for(g=0;g<k;g++)b[g]=a.c[g];for(h=e;h<f;h++)b[b.length-1-h+e]=a.c[h];return b;case 3:e=a.a[0]==0?1:0;f=a.a[k-1]==90?k-1:k;j=f-e;b=tX(Drb.b3,hub,6,2*k+2*j,15,1);for(i=0;i<k;i++){b[i]=a.c[i];b[k+j+i]=a.c[i]}for(c=e;c<f;c++){b[k+j-1-c+e]=a.c[c];b[b.length-1-c+e]=a.c[c]}return b;default:return a.c;}};Lrb.ex=function ex(a){var b,c,d,e,f,g,h,i,j,k;b=null;k=a.d.length;switch(a.e){case 1:b=rX(Drb.b3,[Rvb,hub],[13,6],15,[2*k,2],2);for(d=0;d<k;d++){b[d][0]=a.d[d][0];b[d][1]=a.d[d][1];b[k+d][0]=180+a.d[d][0]<<16>>16;b[k+d][1]=180+a.d[d][1]<<16>>16}return b;case 2:e=a.a[0]==0?1:0;f=a.a[k-1]==180?k-1:k;j=f-e;b=rX(Drb.b3,[Rvb,hub],[13,6],15,[k+j,2],2);for(g=0;g<k;g++){b[g][0]=a.d[g][0];b[g][1]=a.d[g][1]}for(h=e;h<f;h++){b[b.length-1-h+e][0]=360-a.d[h][1]<<16>>16;b[b.length-1-h+e][1]=360-a.d[h][0]<<16>>16}return b;case 3:e=a.a[0]==0?1:0;f=a.a[k-1]==90?k-1:k;j=f-e;b=rX(Drb.b3,[Rvb,hub],[13,6],15,[2*k+2*j,2],2);for(i=0;i<k;i++){b[i][0]=a.d[i][0];b[i][1]=a.d[i][1];b[k+j+i][0]=180+a.d[i][0]<<16>>16;b[k+j+i][1]=180+a.d[i][1]<<16>>16}for(c=e;c<f;c++){b[k+j-1-c+e][0]=180-a.d[c][1]<<16>>16;b[k+j-1-c+e][1]=180-a.d[c][0]<<16>>16;b[b.length-1-c+e][0]=360-a.d[c][1]<<16>>16;b[b.length-1-c+e][1]=360-a.d[c][0]<<16>>16}return b;default:return a.d;}};Lrb.fx=function fx(a,b,c,d,e,f){var g,h,i,j,k,l;a.a[c]=b<<16>>16;a.c[c]=a.c[c]+a.c[d]<<16>>16;a.d[c][0]=e<<16>>16;a.d[c][1]=f<<16>>16;l=a.a.length-1;i=tX(Drb.b3,hub,6,l,15,1);j=tX(Drb.b3,hub,6,l,15,1);k=tX(Drb.b3,Rvb,13,l,0,2);h=0;for(g=0;g<a.a.length;g++){if(g!=d){i[h]=a.a[g];j[h]=a.c[g];k[h]=a.d[g];++h}}a.a=i;a.c=j;a.d=k};Lrb.gx=function gx(a){var b,c,d,e,f,g,h,i,j,k,l,m;b=0;while(a.a.length!=0){if(a.a.length==1){if(a.e==1||a.e==0)break;else if(a.e==2&&(a.a[0]==0||a.a[0]==180))break;else if(a.e==3&&(a.a[0]==0||a.a[0]==90))break}m=a.a[0]!=0&&(a.e==2||a.e==3)?-1:0;l=-1;k=xsb;for(g=m;g<a.a.length;g++){i=g+1;c=g>=0?a.a[g]:-a.a[0];d=i<a.a.length?a.a[i]:a.e==1?a.a[0]+180:a.e==2?360-a.a[a.a[g]==180?g-1:g]:a.e==3?180-a.a[a.a[g]==90?g-1:g]:a.a[0]+360;if(k>d-c){k=d-c;l=g}}if(k>15)break;f=l;h=f+1;if(f==-1){b+=a.c[0];a.a[0]=0;a.c[0]=a.c[0]*2<<16>>16;a.d[0][0]=-a.d[0][1]}else if(h<a.a.length){j=Lrb.hx(a,f,h,a.a[h]);Lrb.fx(a,j,f,h,a.d[f][0],a.d[h][1])}else if(a.e==1){h=0;j=Lrb.hx(a,f,h,a.a[h]+180);j<=180?Lrb.fx(a,j,f,h,a.d[f][0],a.d[h][1]+180):Lrb.fx(a,j-180,h,f,a.d[h][0],a.d[f][1]-180)}else if(a.e==2){h=a.a[f]==180?f-1:f;if(a.a[f]<180){b+=a.c[f];a.a[f]=180;a.c[f]=a.c[f]*2<<16>>16;a.d[f][1]=360-a.d[f][0]<<16>>16}else{Erb.X7();String.fromCharCode(10);j=Lrb.hx(a,f,h,a.a[h]);Lrb.fx(a,j,h,f,a.d[h][0],a.d[f][1])}}else if(a.e==3){h=a.a[f]==90?f-1:f;if(a.a[f]<90){b+=a.c[f];a.a[f]=90;a.c[f]=a.c[f]*2<<16>>16;a.d[f][1]=180-a.d[f][0]<<16>>16}else{Erb.X7();String.fromCharCode(10);j=Lrb.hx(a,f,h,a.a[h]);Lrb.fx(a,j,h,f,a.d[h][0],a.d[f][1])}}else{h=0;j=Lrb.hx(a,f,h,a.a[h]+360);j<=360?Lrb.fx(a,j,f,h,a.d[f][0],a.d[h][1]+360):Lrb.fx(a,j-360,h,f,a.d[h][0],a.d[f][1]-360)}}if(b!=0)for(e=0;e<a.c.length;e++)a.c[e]=IY($wnd.Math.round(100*a.c[e]/(100+b)))<<16>>16};Lrb.hx=function hx(a,b,c,d){return IY($wnd.Math.round((a.a[b]*a.c[b]+d*a.c[c])/(a.c[b]+a.c[c])))};Lrb.ix=function ix(a){this.e=a};Lrb.jx=function jx(a){var b;this.e=a.e;if(a.a!=null){this.a=tX(Drb.b3,hub,6,a.a.length,15,1);for(b=0;b<this.a.length;b++)this.a[b]=360-a.a[this.a.length-b-1]<<16>>16}if(a.d!=null){this.d=rX(Drb.b3,[Rvb,hub],[13,6],15,[a.d.length,2],2);for(b=0;b<this.d.length;b++){this.d[b][0]=360-a.d[this.a.length-b-1][1]<<16>>16;this.d[b][1]=360-a.d[this.a.length-b-1][0]<<16>>16}}if(a.c!=null){this.c=tX(Drb.b3,hub,6,a.c.length,15,1);for(b=0;b<this.c.length;b++)this.c[b]=a.c[this.c.length-b-1]}if(a.b!=null){this.b=tX(Drb.JY,nub,6,a.b.length,15,1);for(b=0;b<this.b.length;b++)this.b[b]=a.b[this.b.length-b-1]}};Z3(164,1,{164:1},Lrb.ix,Lrb.jx);_.e=0;Drb.VZ=B5(164);Lrb.kx=function kx(a,b){var c,d,e,f;c=b[1];d=b[2];e=a.j[c]-1;f=a.j[d]-1;if(e>3||f>3){this.b=tX(Drb.b3,hub,6,4,15,1);this.b[0]=45;this.b[1]=135;this.b[2]=225;this.b[2]=315;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[4,2],2);this.c[0][0]=30;this.c[0][1]=60;this.c[1][0]=120;this.c[1][1]=150;this.c[2][0]=210;this.c[2][1]=240;this.c[2][0]=300;this.c[2][1]=330;this.a=tX(Drb.b3,hub,6,4,15,1);this.a[0]=25;this.a[1]=25;this.a[2]=25;this.a[3]=25}else if((a.o[c]==0||a.C[c]>9)&&(a.o[d]==0||a.C[d]>9)){if(e==3&&f==3||e==3&&f==2||e==3&&f==1||e==2&&f==3||e==1&&f==3||e==2&&f==2&&(b[0]!=-1||b[3]!=-1)){this.b=tX(Drb.b3,hub,6,3,15,1);this.b[0]=60;this.b[1]=180;this.b[2]=300;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[3,2],2);this.c[0][0]=45;this.c[0][1]=75;this.c[1][0]=165;this.c[1][1]=195;this.c[2][0]=285;this.c[2][1]=315;this.a=tX(Drb.b3,hub,6,3,15,1);this.a[0]=33;this.a[1]=33;this.a[2]=33}else if(e==1&&f==2&&b[3]==-1||e==2&&f==1&&b[0]==-1){this.b=tX(Drb.b3,hub,6,3,15,1);this.b[0]=60;this.b[1]=180;this.b[2]=300;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[3,2],2);this.c[0][0]=45;this.c[0][1]=75;this.c[1][0]=165;this.c[1][1]=195;this.c[2][0]=285;this.c[2][1]=315;this.a=tX(Drb.b3,hub,6,3,15,1);this.a[0]=40;this.a[1]=20;this.a[2]=40}else if(e==1&&f==1||e==1&&f==2&&b[3]!=-1||e==2&&f==1&&b[0]!=-1||e==2&&f==2&&b[0]==-1&&b[3]==-1){this.b=tX(Drb.b3,hub,6,3,15,1);this.b[0]=60;this.b[1]=180;this.b[2]=300;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[3,2],2);this.c[0][0]=45;this.c[0][1]=75;this.c[1][0]=165;this.c[1][1]=195;this.c[2][0]=285;this.c[2][1]=315;this.a=tX(Drb.b3,hub,6,3,15,1);this.a[0]=25;this.a[1]=50;this.a[2]=25}}else if((a.o[c]==0||a.C[c]>9)&&a.o[d]==1||(a.o[d]==0||a.C[d]>9)&&a.o[c]==1){if(e==3||f==3){this.b=tX(Drb.b3,hub,6,6,15,1);this.b[0]=0;this.b[1]=60;this.b[2]=120;this.b[3]=180;this.b[4]=240;this.b[5]=300;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[6,2],2);this.c[0][0]=-15;this.c[0][1]=15;this.c[1][0]=45;this.c[1][1]=75;this.c[2][0]=105;this.c[2][1]=135;this.c[3][0]=165;this.c[3][1]=195;this.c[4][0]=225;this.c[4][1]=255;this.c[5][0]=285;this.c[5][1]=315;this.a=tX(Drb.b3,hub,6,6,15,1);this.a[0]=16;this.a[1]=16;this.a[2]=16;this.a[3]=16;this.a[4]=16;this.a[5]=16}else if(e==1&&f==1){this.b=tX(Drb.b3,hub,6,2,15,1);this.b[0]=120;this.b[1]=240;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[2,2],2);this.c[0][0]=105;this.c[0][1]=135;this.c[1][0]=225;this.c[1][1]=255;this.a=tX(Drb.b3,hub,6,2,15,1);this.a[0]=50;this.a[1]=50}else if(a.o[c]==1&&e==2&&f==1||a.o[d]==1&&f==2&&e==1){this.b=tX(Drb.b3,hub,6,2,15,1);this.b[0]=90;this.b[1]=270;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[2,2],2);this.c[0][0]=75;this.c[0][1]=105;this.c[1][0]=255;this.c[1][1]=285;this.a=tX(Drb.b3,hub,6,2,15,1);this.a[0]=50;this.a[1]=50}else if(a.o[c]==1&&e==1&&f==2&&b[3]==-1||a.o[d]==1&&f==1&&e==2&&b[0]==-1){this.b=tX(Drb.b3,hub,6,3,15,1);this.b[0]=0;this.b[1]=120;this.b[2]=240;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[3,2],2);this.c[0][0]=-15;this.c[0][1]=15;this.c[1][0]=105;this.c[1][1]=135;this.c[2][0]=225;this.c[2][1]=255;this.a=tX(Drb.b3,hub,6,3,15,1);this.a[0]=60;this.a[1]=20;this.a[2]=20}else if(a.o[c]==1&&e==1&&f==2&&b[3]!=-1||a.o[d]==1&&f==1&&e==2&&b[0]!=-1){this.b=tX(Drb.b3,hub,6,3,15,1);this.b[0]=0;this.b[1]=120;this.b[2]=240;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[3,2],2);this.c[0][0]=-15;this.c[0][1]=15;this.c[1][0]=105;this.c[1][1]=135;this.c[2][0]=225;this.c[2][1]=255;this.a=tX(Drb.b3,hub,6,3,15,1);this.a[0]=20;this.a[1]=40;this.a[2]=40}else if(e==2&&f==2){if(b[0]==-1||b[3]==-1){this.b=tX(Drb.b3,hub,6,2,15,1);this.b[0]=0;this.b[1]=180;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[2,2],2);this.c[0][0]=-15;this.c[0][1]=15;this.c[1][0]=165;this.c[1][1]=195;this.a=tX(Drb.b3,hub,6,2,15,1);this.a[0]=50;this.a[1]=50}else{this.b=tX(Drb.b3,hub,6,2,15,1);this.b[0]=90;this.b[1]=270;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[2,2],2);this.c[0][0]=75;this.c[0][1]=105;this.c[1][0]=255;this.c[1][1]=285;this.a=tX(Drb.b3,hub,6,2,15,1);this.a[0]=50;this.a[1]=50}}}else if(a.o[c]==1&&a.o[d]==1){if(e==1&&f==1){this.b=tX(Drb.b3,hub,6,2,15,1);this.b[0]=0;this.b[1]=180;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[2,2],2);this.c[0][0]=-15;this.c[0][1]=15;this.c[1][0]=165;this.c[1][1]=195;this.a=tX(Drb.b3,hub,6,2,15,1);this.a[0]=10;this.a[1]=90}else{this.b=tX(Drb.b3,hub,6,6,15,1);this.b[0]=0;this.b[1]=50;this.b[2]=130;this.b[3]=180;this.b[4]=230;this.b[5]=310;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[6,2],2);this.c[0][0]=-15;this.c[0][1]=15;this.c[1][0]=35;this.c[1][1]=65;this.c[2][0]=115;this.c[2][1]=145;this.c[3][0]=165;this.c[3][1]=195;this.c[4][0]=215;this.c[4][1]=245;this.c[5][0]=295;this.c[5][1]=325;this.a=tX(Drb.b3,hub,6,6,15,1);this.a[0]=40;this.a[1]=5;this.a[2]=5;this.a[3]=40;this.a[4]=5;this.a[5]=5}}else{this.b=tX(Drb.b3,hub,6,1,15,1);this.b[0]=180;this.c=rX(Drb.b3,[Rvb,hub],[13,6],15,[1,2],2);this.c[0][0]=165;this.c[0][1]=195;this.a=tX(Drb.b3,hub,6,1,15,1);this.a[0]=100}};Z3(215,1,{},Lrb.kx);Drb.WZ=B5(215);Lrb.nx=function nx(){Lrb.nx=_3;Lrb.mx=BX(nX(Drb.MY,1),Pub,6,15,[1,Uvb,Vvb,2.119999885559082,1.9800000190734863,1.909999966621399,1.7699999809265137,Wvb,1.5,Xvb,1.5800000429153442,2.5,2.509999990463257,2.25,2.190000057220459,1.899999976158142,1.8899999856948853,Yvb,1.8300000429153442,2.7300000190734863,2.619999885559082,2.5799999237060547,Zvb,$vb,_vb,_vb,awb,bwb,bwb,2.380000114440918,2.390000104904175,cwb,dwb,1.8799999952316284,Yvb,ewb,2.25,3.2100000381469727,2.8399999141693115,2.75,2.5199999809265137,2.559999942779541,_vb,awb,Zvb,awb,2.1500000953674316,fwb,gwb,2.430000066757202,$vb,hwb,1.9900000095367432,2.0399999618530273,2.059999942779541,3.4800000190734863,3.0299999713897705,2.9800000190734863,iwb,jwb,2.950000047683716,jwb,2.9000000953674316,kwb,lwb,mwb,kwb,nwb,lwb,mwb,owb,2.740000009536743,2.630000114440918,fwb,2.569999933242798,gwb,2.4800000190734863,2.4100000858306885,dwb,cwb,_vb,hwb,2.5999999046325684,2.5399999618530273,2.5,2.5,2.5,2.5,2.5,owb,2.930000066757202,iwb,2.7100000381469727,2.819999933242798,nwb,lwb,pwb,3.4000000953674316,pwb,2.700000047683716]);Lrb.lx=BX(nX(Drb.MY,1),Pub,6,15,[0.25,0.3199999928474426,0.46000000834465027,qwb,1.0199999809265137,0.8500000238418579,0.75,0.7099999785423279,0.6299999952316284,0.6399999856948853,0.9599999785423279,rwb,swb,1.2599999904632568,twb,uwb,1.0299999713897705,0.9900000095367432,vwb,wwb,xwb,1.4800000190734863,ywb,zwb,Awb,1.190000057220459,twb,uwb,1.100000023841858,Uvb,Uvb,Bwb,Cwb,Cwb,twb,1.1399999856948853,Cwb,2.0999999046325684,Dwb,Ewb,1.5399999618530273,Fwb,1.3799999952316284,Gwb,1.25,1.25,Uvb,swb,Hwb,Xvb,Iwb,Iwb,ywb,qwb,1.350000023841858,cwb,wwb,Pvb,Ewb,Jwb,1.7400000095367432,Kwb,Lwb,Mwb,Nwb,Mwb,Owb,Wvb,Pwb,1.6399999856948853,Qwb,Rwb,1.5199999809265137,Xvb,Swb,1.309999942779541,Twb,Awb,1.2300000190734863,Bwb,1.4199999570846558,1.5,Hwb,1.5099999904632568,Uwb,Fwb,Uwb,2.2300000190734863,2.009999990463257,ewb,1.75,Nwb,Qwb,xwb,Lwb,Wvb,Wvb,Mwb,Mwb,Pwb,Owb,Kwb,Jwb,1.6100000143051147,Vwb,1.4900000095367432,Vvb,1.409999966621399,zwb,Twb,Gwb,Cwb,Swb,ywb,Vvb,Rwb,1.75,Pwb,Vwb])};Mrb.px=function px(){Mrb.px=_3;Mrb.ox=Jrb.Xm('X',32)};Mrb.qx=function qx(a,b){Mrb.px();var c,d,e,f,g;for(e=0;e<a.q;e++){g=Jrb.su(a);Jrb.jm(g,e,Mrb.ox);Jrb.ou(g,15);for(d=0;d<g.f;d++){if((g.u[d]&Hub)!=0&&Jrb.no(g,d)==-1){f=(Jrb.ou(g,7),g.o[d]==2&&g.j[d]==2?Jrb.To(g,d,false):Jrb.Vo(g,d,false));if(f!=-1){a.H[f]=257;a.T=0;if(a.D[1][f]==d){c=a.D[0][f];a.D[0][f]=d;a.T=0;a.D[1][f]=c;a.T=0}Jrb.Xl(a,d,b,0)}}}}};Mrb.rx=function rx(a){Mrb.px();var b,c,d,e;Mrb.qx(a,1);d=a.q;c=tX(Drb.B0,Esb,2,d,6,1);for(b=0;b<d;b++){e=Jrb.su(a);Jrb.Vl(e,b,(Jrb.Ej(),Jrb.yj)[e.C[b]]+'*');e.C[b]==1?Jrb.jm(e,b,Mrb.ox):Jrb.am(e,b,e.A[b]+5);Mrb.sx(e);c[b]=Jrb.Kf(new Jrb.fg(e,8))}return c};Mrb.sx=function sx(a){var b;Jrb.ou(a,15);for(b=0;b<a.q;b++){(a.u[b]&3)!=0&&Jrb.Xl(a,b,1,0)}};Mrb.ox=0;Mrb.tx=function tx(a,b,c){var d,e;d=rX(Drb.B0,[ssb,Esb],[30,2],6,[a.f,b],2);Jrb.ou(a,7);for(e=0;e<a.f;e++){d[e]=Mrb.ux(a,e,b,c)}return d};Mrb.ux=function ux(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p;i=new Jrb.Hu(a.f,a.g);k=new Krb.zkb;n=0;m=0;g=tX(Drb.c3,itb,6,a.f,16,1);f=tX(Drb.NY,Qsb,6,a.f,15,1);for(p=0;p<c&&m<a.f;p++){if(m==0){f[0]=b;g[b]=true;m=1}else{o=m;for(j=n;j<m;j++){e=f[j];for(l=0;l<a.j[e];l++){h=a.i[e][l];if(!g[h]){switch(d){case 0:g[h]=true;f[o++]=h;break;case 1:if(!(Mrb.wx(a,e)&&Mrb.wx(a,h))){g[h]=true;f[o++]=h}}}}}n=m;m=o}Jrb.hn(a,i,g,true,null);Krb.wkb(k,Jrb.Kf(new Jrb.fg(i,8)))}return Krb.ykb(k,tX(Drb.B0,Esb,2,k.a.a.length,6,1))};Mrb.vx=function vx(a,b,c){var d,e,f,g,h,i;h=Jrb.tp(new Jrb.Fp(true),a);e=-1;for(f=0;f<h.q;f++){d=h.t==null?null:h.t[f]==null?null:Erb.i7((g=h.t[f],hsb.Kab(),g));if(d!=null&&(i=Hrb.rnb('*').length,Erb.k7(Hrb.rnb(d).substr(Hrb.rnb(d).length-i,i),'*'))){e=f;break}}if(e>=0){return Mrb.ux(h,e,b,c)}return tX(Drb.B0,Esb,2,0,6,1)};Mrb.wx=function wx(a,b){if(a.C[b]!=6)return false;if(a.s[b]!=0)return false;if(Jrb.Wn(a,b)+a.j[b]!=4)return false;return true};Mrb.Hx=function Hx(){Mrb.Hx=_3;Mrb.xx=$wnd.Math.cos($tb);Mrb.Cx=$wnd.Math.sin($tb);Mrb.zx=$wnd.Math.cos(Wwb);Mrb.Ex=$wnd.Math.sin(Wwb);Mrb.Bx=$wnd.Math.cos(Ztb);Mrb.Gx=$wnd.Math.sin(Ztb);Mrb.yx=$wnd.Math.cos(Xwb);Mrb.Dx=$wnd.Math.sin(Xwb);Mrb.Ax=$wnd.Math.cos(Qub);Mrb.Fx=$wnd.Math.sin(Qub);$wnd.Math.cos(Ywb);$wnd.Math.sin(Ywb)};Mrb.Ix=function Ix(a){Mrb.Hx();var b,c;Jrb.ou(a,1);c=a.f;for(b=0;b<c;b++){Mrb.Jx(a,b)}};Mrb.Jx=function Jx(a,b){Mrb.Hx();var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J;A=Jrb.Wn(a,b);I=a.J[b].a;J=a.J[b].b;switch(A){case 1:{C=a.j[b];if(C==0){k=Jrb.Bn(a,true);n=0}else{k=I-Jrb.Ak(a,a.i[b][0]);n=J-Jrb.Bk(a,a.i[b][0])}if(C==1){t=Jrb.Gj(a,I+Mrb.Ax*k+Mrb.Fx*n,J-Mrb.Fx*k+Mrb.Ax*n,0)}else if(C==2){k=I-0.5*(Jrb.Ak(a,a.i[b][0])+Jrb.Ak(a,a.i[b][1]));n=J-0.5*(Jrb.Bk(a,a.i[b][0])+Jrb.Bk(a,a.i[b][1]));t=Jrb.Gj(a,I+k,J+n,0)}else if(C==3){F=a.i[b][0];for(r=1;r<3;r++){h=a.k[b][r];(a.H[h]==129||a.H[h]==257)&&(F=a.i[b][r])}c=$wnd.Math.abs(Jrb.Wm(Jrb.Vm(a.J[b].a,a.J[b].b,Jrb.Ak(a,a.i[b][0]),Jrb.Bk(a,a.i[b][0])),Jrb.Vm(a.J[b].a,a.J[b].b,Jrb.Ak(a,a.i[b][1]),Jrb.Bk(a,a.i[b][1]))));d=$wnd.Math.abs(Jrb.Wm(Jrb.Vm(a.J[b].a,a.J[b].b,Jrb.Ak(a,a.i[b][0]),Jrb.Bk(a,a.i[b][0])),Jrb.Vm(a.J[b].a,a.J[b].b,Jrb.Ak(a,a.i[b][2]),Jrb.Bk(a,a.i[b][2]))));e=$wnd.Math.abs(Jrb.Wm(Jrb.Vm(a.J[b].a,a.J[b].b,Jrb.Ak(a,a.i[b][1]),Jrb.Bk(a,a.i[b][1])),Jrb.Vm(a.J[b].a,a.J[b].b,Jrb.Ak(a,a.i[b][2]),Jrb.Bk(a,a.i[b][2]))));D=true;if(c>d&&c>e){if(d+e<ntb){D=false;k=I-0.5*(Jrb.Ak(a,a.i[b][0])+Jrb.Ak(a,a.i[b][1]));n=J-0.5*(Jrb.Bk(a,a.i[b][0])+Jrb.Bk(a,a.i[b][1]))}}else if(d>c&&d>e){if(c+e<ntb){D=false;k=I-0.5*(Jrb.Ak(a,a.i[b][0])+Jrb.Ak(a,a.i[b][2]));n=J-0.5*(Jrb.Bk(a,a.i[b][0])+Jrb.Bk(a,a.i[b][2]))}}else{if(c+d<ntb){D=false;k=I-0.5*(Jrb.Ak(a,a.i[b][1])+Jrb.Ak(a,a.i[b][2]));n=J-0.5*(Jrb.Bk(a,a.i[b][1])+Jrb.Bk(a,a.i[b][2]))}}if(D){G=a.i[b][0];j=Eub;for(q=0;q<3;q++){f=a.i[b][q];if(f!=F){i=$wnd.Math.pow(a.J[b].a-a.J[f].a,2)+$wnd.Math.pow(a.J[b].b-a.J[f].b,2);if(i<j){G=f;j=i;Erb.X7();String.fromCharCode(10)}}}t=Jrb.Gj(a,(a.J[F].a+a.J[G].a)/2,(a.J[F].b+a.J[G].b)/2,0)}else{t=Jrb.Gj(a,I+k,J+n,0)}}else{t=Jrb.Gj(a,I+k,J+n,0)}Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1)}break;case 2:B=a.j[b];if(B==1){k=I-Jrb.Ak(a,a.i[b][0]);n=J-Jrb.Bk(a,a.i[b][0]);t=Jrb.Gj(a,I+(Mrb.Bx*k-Mrb.Gx*n)*0.7,J+(Mrb.Gx*k+Mrb.Bx*n)*0.7,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1);t=Jrb.Gj(a,I+(Mrb.yx*k-Mrb.Dx*n)*0.7,J+(Mrb.Dx*k+Mrb.yx*n)*0.7,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1)}else if(B==2){l=I-Jrb.Ak(a,a.i[b][0]);o=J-Jrb.Bk(a,a.i[b][0]);m=I-Jrb.Ak(a,a.i[b][1]);p=J-Jrb.Bk(a,a.i[b][1]);v=$wnd.Math.sqrt(l*l+o*o)*0.7;w=$wnd.Math.sqrt(m*m+p*p)*0.7;k=l+m;n=o+p;u=$wnd.Math.sqrt(k*k+n*n);g=(v+w)/2;k=k/u*g;n=n/u*g;H=Jrb.no(a,b);t=Jrb.Gj(a,I+Mrb.xx*k-Mrb.Cx*n,J+Mrb.Cx*k+Mrb.xx*n,0);Jrb.jm(a,t,1);H>-1?Jrb.Jj(a,b,t,1):Jrb.Jj(a,b,t,257);t=Jrb.Gj(a,I+Mrb.zx*k-Mrb.Ex*n,J+Mrb.Ex*k+Mrb.zx*n,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1)}else{for(s=0;s<A;s++){t=Jrb.Gj(a,I,J,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1)}}break;case 3:{if(a.i[b][0]>0){k=(I-Jrb.Ak(a,a.i[b][0]))*0.7;n=(J-Jrb.Bk(a,a.i[b][0]))*0.7;t=Jrb.Gj(a,I+k,J+n,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1);t=Jrb.Gj(a,I-n,J+k,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1);t=Jrb.Gj(a,I+n,J-k,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1)}else{k=Jrb.Bn(a,true);n=Jrb.Bn(a,true);t=Jrb.Gj(a,I+k,J+n,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1);t=Jrb.Gj(a,I-n*Mrb.Bx,J+k*Mrb.Gx,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1);t=Jrb.Gj(a,I-n*Mrb.Bx,J-k*Mrb.Gx,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1)}}break;default:{for(s=0;s<A;s++){t=Jrb.Gj(a,I,J,0);Jrb.jm(a,t,1);Jrb.Jj(a,b,t,1)}break}}};Mrb.Kx=function Kx(a){Mrb.Hx();var b,c;Jrb.ou(a,1);c=0;for(b=0;b<a.q;b++){a.C[b]==1?++c:(c+=a.e[b]-a.j[b]+Jrb.Wn(a,b))}return c};Mrb.xx=0;Mrb.yx=0;Mrb.zx=0;Mrb.Ax=0;Mrb.Bx=0;Mrb.Cx=0;Mrb.Dx=0;Mrb.Ex=0;Mrb.Fx=0;Mrb.Gx=0;Nrb.Mx=function Mx(a,b,c){var d,e,f;f=b.length;d=new Nrb.rz(a.f,f,false);d.a[0]=0;d.b[0]=0;for(e=0;e<f;e++){d.k[e]=128-f;d.e[e]=b[e]}f<8?Nrb.Vx(d):Nrb.Tx(a,d,b,c);Nrb.Cy(a.d,d)};Nrb.Nx=function Nx(a,b,c,d,e){var f,g,h,i,j,k,l,m;g=tX(Drb.NY,Qsb,6,e,15,1);for(f=0;f<a.f.q;f++){for(i=0;i<Jrb.rn(a.f,f);i++){m=c[Jrb.Fn(a.f,f,i)];for(j=0;j<i;j++)if(m<g[j])break;for(k=i;k>j;k--)g[k]=g[k-1];g[j]=m}l=Jrb.rn(a.f,f);Jrb.wg(b[f],f);Jrb.tg(b[f],d,Drb.r3(c[f]));Jrb.tg(b[f],(e-l)*(d+1),0);for(h=0;h<l;h++)Jrb.tg(b[f],d+1,Drb.r3(g[h]))}};Nrb.Ox=function Ox(a){var b,c,d,e,f,g,h,i,j,k,l;d=Jrb.gg(a.f.f);i=2;for(c=0;c<a.f.f;c++)i=$wnd.Math.max(i,Jrb.rn(a.f,c));f=(62+2*d+i*(d+1))/63|0;e=tX(Drb.ZY,mub,118,a.f.q,0,1);for(b=0;b<a.f.q;b++){e[b]=new Jrb.xg(f);Jrb.wg(e[b],b)}l=tX(Drb.NY,Qsb,6,a.f.q,15,1);for(g=0;g<a.f.g;g++){h=Jrb.Rk(a.f,g);if(h==1||h==2){Jrb.ug(e[Jrb.Ik(a.f,0,g)],Drb.r3(h));Jrb.ug(e[Jrb.Ik(a.f,1,g)],Drb.r3(h))}}j=Nrb.Px(e,l);do{k=j;Nrb.Nx(a,e,l,d,i);j=Nrb.Px(e,l)}while(k!=j);return l};Nrb.Px=function Px(a,b){var c,d;d=0;Krb.Ueb(a,0,a.length,null);for(c=0;c<a.length;c++){(c==0||Jrb.vg(a[c],a[c-1])!=0)&&++d;b[a[c].a]=d}return d};\nNrb.Qx=function Qx(a){var b,c,d,e,f,g,h,i,j,k,l,m;for(i=new Krb.ueb(a.d);i.a<i.c.a.length;){h=Krb.teb(i);for(j=0;j<h.f.length;j++){d=h.f[j];if(Jrb.Qk(a.f,d)==2){!Jrb.Po(a.f,d)&&(Jrb.Rk(a.f,d)==3||Jrb.Rk(a.f,d)==0)&&Jrb.rm(a.f,d);if(!Jrb.Mo(a.f,d)&&Jrb.Gn(a.f,Jrb.Ik(a.f,0,d))>1&&Jrb.Gn(a.f,Jrb.Ik(a.f,1,d))>1&&(Jrb.Rk(a.f,d)==1||Jrb.Rk(a.f,d)==2)){m=tX(Drb.NY,Qsb,6,2,15,1);e=tX(Drb.NY,Qsb,6,2,15,1);for(k=0;k<2;k++){m[k]=a.f.M;e[k]=Jrb.Ik(a.f,k,d);for(l=0;l<Jrb.rn(a.f,e[k]);l++){f=Jrb.Fn(a.f,e[k],l);f!=Jrb.Ik(a.f,1-k,d)&&m[k]>f&&(m[k]=f)}}g=Nrb.Xy(h.a[h.g[e[0]]],h.b[h.g[e[0]]],h.a[h.g[e[1]]],h.b[h.g[e[1]]]);b=Nrb.Xy(h.a[h.g[m[0]]],h.b[h.g[m[0]]],h.a[h.g[e[0]]],h.b[h.g[e[0]]]);c=Nrb.Xy(h.a[h.g[e[1]]],h.b[h.g[e[1]]],h.a[h.g[m[1]]],h.b[h.g[m[1]]]);Nrb.Xx(g,b)<0^Nrb.Xx(g,c)<0^Jrb.Rk(a.f,d)==2&&Nrb.fz(h,d)}}}}};Nrb.Rx=function Rx(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;m=new Krb.Yi;r=new Krb.Yi;d=new Krb.Yi;for(f=new Krb.ueb(a.d);f.a<f.c.a.length;){e=Krb.teb(f);g=0;Hrb.Mmb(d.a,0);for(h=0;h<e.e.length;h++){b=e.e[h];c=a.i[b];if(c!=0){Krb.Ei(d,new Nrb.Zy(e,h,c));g+=c}}if(g!=0){Krb.Vi(d,new Nrb.Oy);for(j=new Krb.ueb(d);j.a<j.c.a.length;){i=Krb.teb(j);if(g*i.b>0){c=$wnd.Math.abs(g)>=$wnd.Math.abs(i.b)?i.b:g;g-=c;Krb.Ei(c<0?m:r,new Nrb.Zy(e,i.a,c));if(g==0)break}}}}if(m.a.length==0||r.a.length==0)return null;Krb.Vi(r,new Nrb.Hy);Krb.Vi(m,new Nrb.Ly);for(p=new Krb.ueb(r);p.a<p.c.a.length;){n=Krb.teb(p);for(l=new Krb.ueb(m);l.a<l.c.a.length;){k=Krb.teb(l);if(n.b==-k.b){a.i[Nrb.jz(n.c,n.a)]-=n.b;a.i[Nrb.jz(k.c,k.a)]-=k.b;return new Nrb.Uy(n.c,k.c,n.a,k.a)}}}for(q=new Krb.ueb(r);q.a<q.c.a.length;){n=Krb.teb(q);for(l=new Krb.ueb(m);l.a<l.c.a.length;){k=Krb.teb(l);if(n.b>-k.b){a.i[Nrb.jz(n.c,n.a)]+=k.b;a.i[Nrb.jz(k.c,k.a)]-=k.b;return new Nrb.Uy(n.c,k.c,n.a,k.a)}}}for(o=new Krb.ueb(r);o.a<o.c.a.length;){n=Krb.teb(o);for(l=new Krb.ueb(m);l.a<l.c.a.length;){k=Krb.teb(l);if(n.b<-k.b){a.i[Nrb.jz(n.c,n.a)]-=n.b;a.i[Nrb.jz(k.c,k.a)]+=n.b;return new Nrb.Uy(n.c,k.c,n.a,k.a)}}}return null};Nrb.Sx=function Sx(a){if(a.d.a.length<2)return null;return new Nrb.Ty(Krb.Ji(a.d,0),Krb.Ji(a.d,1))};Nrb.Tx=function Tx(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;k=BX(nX(Drb.LY,2),ssb,12,0,[BX(nX(Drb.LY,1),Osb,6,15,[20]),null,null,BX(nX(Drb.LY,1),Osb,6,15,[0,10]),null,null,BX(nX(Drb.LY,1),Osb,6,15,[-4,12]),BX(nX(Drb.LY,1),Osb,6,15,[0,0,-7.5]),null,null,null,null,BX(nX(Drb.LY,1),Osb,6,15,[8.571428571428571,-8.571428571428571]),null,null,null,BX(nX(Drb.LY,1),Osb,6,15,[-2.4])]);l=BX(nX(Drb.NY,2),lub,7,0,[BX(nX(Drb.NY,1),Qsb,6,15,[146]),BX(nX(Drb.NY,1),Qsb,6,15,[627]),null,BX(nX(Drb.NY,1),Qsb,6,15,[2457,1170]),null,BX(nX(Drb.NY,1),Qsb,6,15,[2451,8643,2519]),BX(nX(Drb.NY,1),Qsb,6,15,[9362,14798]),BX(nX(Drb.NY,1),Qsb,6,15,[34377,-2147448999,26214]),null,BX(nX(Drb.NY,1),Qsb,6,15,[37449,137313,95703,34371,37815,54891,132867,-2147309741,54857,55129,-2147449005,-2147449065]),null,BX(nX(Drb.NY,1),Qsb,6,15,[530697,531819,899169,137289,694617,-2146951863,-2146952797,-2146939175,-2146929547,-2146929564,-2146625111,-2146931799,-2146940503,-2146931935]),BX(nX(Drb.NY,1),Qsb,6,15,[1007293,610915]),BX(nX(Drb.NY,1),Qsb,6,15,[542985,137283,2122017,530691,2206773,-2144711351,219209,2840841,137555,-2146871031,-2147264167,613705,-2145360543,-2146625271,694611,2454837,-2145356703,-2147345133,-2146928951,-2146931805,-2144641719,-2146951869,-2146625237,-2146624183,2841963,1074905,-2146625117,2799955,-2144723645,138583,859225,-2145264843,-2145216253,-2146624149,-2144700727,-2146928917,-2143905527,-2144045771,-2146789097,2288547,544407,2104323,-2146911977,-2144479405,3633737,-2146870089,-2146952169]),null,BX(nX(Drb.NY,1),Qsb,6,15,[8487297,2172633,2116611,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8829813]),BX(nX(Drb.NY,1),Qsb,6,15,[14071213])]);s=1<<b.e.length;g=0;i=0;if(b.e.length>7){for(n=0;n<b.e.length;n++){h=Nrb._x(a,c,d,n);h==1?(g+=s):h==2&&(i+=s);g>>>=1;i>>>=1}}v=b.e.length-9;if(b.e.length>=9&&b.e.length<=25&&l[v]!=null){for(C=0;C<l[v].length;C++){r=(_ub&l[v][C])==0;j=xsb&l[v][C];for(p=false;!p;p=!p){if(p){if(r)break;t=0;for(e=1;e!=s;e<<=1){t<<=1;(j&e)!=0&&(t|=1)}j=t}for(w=0;w<b.e.length;w++){if((j&g)==0&&(~j&i)==0){f=0;m=Zwb*(k[v]==null?0:k[v][C]);u=0;A=j;q=true;for(o=0;o<b.e.length;o++){q&&++u;(A&1)==0&&(q=!q);A>>>=1}B=u>(b.e.length/2|0);for(n=1;n<b.e.length;n++){b.a[n]=b.a[n-1]+$wnd.Math.sin(f);b.b[n]=b.b[n-1]+$wnd.Math.cos(f);(j&1)==0&&(B=!B);f+=m+(B?Ztb:Xwb);j>>>=1}return}(j&1)!=0&&(j|=s);j>>>=1}}}}Nrb.Wx(b,g,i)};Nrb.Ux=function Ux(a){var b,c,d,e,f,g,h,i,j,k;b=null;j=null;for(g=0;g<a.f.g;g++){if(Jrb.Tk(a.f,g)==16){c=Jrb.Ik(a.f,0,g);e=-1;h=0;for(;h<a.d.a.length;h++){e=Nrb.kz(Krb.Ji(a.d,h),c);if(e!=-1)break}d=Jrb.Ik(a.f,1,g);f=-1;i=0;for(;i<a.d.a.length;i++){f=Nrb.kz(Krb.Ji(a.d,i),d);if(f!=-1)break}if(h!=i){if(h>i){k=h;h=i;i=k;k=e;e=f;f=k}j==null&&(j=tX(Drb.a$,ssb,386,a.d.a.length,0,2));j[i]==null&&(j[i]=tX(Drb.a$,{386:1,4:1,5:1,8:1},90,i,0,1));if(j[i][h])Nrb.Ry(j[i][h],e,f);else{xX(j[i],h,new Nrb.Uy(Krb.Ji(a.d,h),Krb.Ji(a.d,i),e,f));!b&&(b=new Krb.Yi);Krb.Ei(b,j[i][h])}}}}return b};Nrb.Vx=function Vx(a){var b,c;b=ntb-ntb*(a.e.length-2)/a.e.length;for(c=1;c<a.e.length;c++){a.a[c]=a.a[c-1]+$wnd.Math.sin(b*(c-1));a.b[c]=a.b[c-1]+$wnd.Math.cos(b*(c-1))}};Nrb.Wx=function Wx(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;if(b==0||(b&c)!=0){Nrb.Vx(a);return}q=-1;r=0;f=1<<a.e.length-2;e=1<<a.e.length-1;h=1;g=2;for(j=0;j<a.e.length;j++){if((c&(e|h))==0&&(b&(e|h))!=0&&(b&f)==0){o=0;(c&f)!=0&&(o+=4);(b&e)!=0&&(o+=2);(b&h)!=0&&(o+=1);if(r<o){r=o;q=j}}f=e;e=h;h=g;g=1<<(j+2<a.e.length?j+2:j+2-a.e.length)}if(q==-1){Nrb.Vx(a);return}m=0;m|=1<<q;n=2;while(n<a.e.length-1){l=q+n<a.e.length?q+n:q+n-a.e.length;e=1<<(l==0?a.e.length-1:l-1);if((c&e)!=0){++n;continue}h=1<<l;if((b&e)!=0){if((c&h)!=0){Nrb.Vx(a);return}m|=h;n+=2;continue}g=1<<(l+1<a.e.length?l+1:l+1-a.e.length);if((b&h)!=0&&(c&g)!=0){m|=h;n+=3;continue}++n}if(m==0){Nrb.Vx(a);return}d=ntb-ntb*(a.e.length-2)/a.e.length;for(k=1;k<a.e.length;k++){a.a[k]=a.a[k-1]+$wnd.Math.sin(d*(k-1));a.b[k]=a.b[k-1]+$wnd.Math.cos(d*(k-1))}h=1;p=2*$wnd.Math.sin(d/2);for(i=0;i<a.e.length;i++){if((m&h)!=0){a.a[i]+=p*$wnd.Math.cos(d*(i-0.5));a.b[i]-=p*$wnd.Math.sin(d*(i-0.5))}h<<=1}};Nrb.Xx=function Xx(a,b){var c;c=a-b;while(c<Mub)c+=mtb;while(c>ntb)c-=mtb;return c};Nrb.Yx=function Yx(a,b,c){var d,e;d=0;for(e=0;e<Jrb.rn(a.f,c);e++){Nrb.mz(b,Jrb.Fn(a.f,c,e))&&++d}return d};Nrb.Zx=function Zx(a,b,c,d){var e,f,g,h,i;h=Nrb.kz(b,d);i=Nrb.kz(c,d);Nrb.qz(c,b.a[h]-c.a[i],b.b[h]-c.b[i]);e=Nrb.wy(a,b,d);f=Nrb.wy(a,c,d);g=0;Nrb.Yx(a,b,d)==1&&Nrb.Yx(a,c,d)==1&&(g=Ztb);Nrb.pz(c,c.a[i],c.b[i],e-f+g+ntb);return Nrb.cy(a,b,c,1)};Nrb.$x=function $x(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L;t=tX(Drb.NY,Qsb,6,e,15,1);u=tX(Drb.NY,Qsb,6,e,15,1);for(p=0;p<e;p++){t[p]=Nrb.kz(b,d[p]);u[p]=Nrb.kz(c,d[p])}F=0;H=0;G=0;I=0;for(q=0;q<e;q++){F+=b.a[t[q]];H+=b.b[t[q]];G+=c.a[u[q]];I+=c.b[u[q]]}F/=e;H/=e;G/=e;I/=e;Nrb.qz(c,F-G,H-I);j=tX(Drb.b$,Bsb,35,e,0,1);l=tX(Drb.b$,Bsb,35,e,0,1);f=tX(Drb.b$,Bsb,35,e,0,1);g=tX(Drb.b$,Bsb,35,e,0,1);for(r=0;r<e;r++){j[r]=new Nrb.Wy(F,H,b.a[t[r]],b.b[t[r]]);l[r]=new Nrb.Wy(F,H,c.a[u[r]],c.b[u[r]]);f[r]=new Nrb.Vy(j[r].a-l[r].a,j[r].b*l[r].b);g[r]=new Nrb.Vy(j[r].a+l[r].a,j[r].b*l[r].b)}w=Nrb.Ay(f,e);A=Nrb.Ay(g,e);K=0;L=0;for(s=0;s<e;s++){for(v=0;v<Jrb.rn(a.f,d[s]);v++){h=Jrb.Fn(a.f,d[s],v);Nrb.mz(b,h)&&!Nrb.mz(c,h)&&++K;!Nrb.mz(b,h)&&Nrb.mz(c,h)&&++L}}k=tX(Drb.b$,Bsb,35,K,0,1);m=tX(Drb.b$,Bsb,35,L,0,1);n=tX(Drb.b$,Bsb,35,L,0,1);K=0;L=0;for(o=0;o<e;o++){for(v=0;v<Jrb.rn(a.f,d[o]);v++){h=Jrb.Fn(a.f,d[o],v);if(Nrb.mz(b,h)&&!Nrb.mz(c,h)){i=Nrb.kz(b,h);k[K]=new Nrb.Wy(b.a[t[o]],b.b[t[o]],b.a[i],b.b[i]);++K}if(!Nrb.mz(b,h)&&Nrb.mz(c,h)){i=Nrb.kz(c,h);J=new Nrb.Wy(c.a[u[o]],c.b[u[o]],c.a[i],c.b[i]);m[L]=new Nrb.Vy(w.a+J.a,J.b);n[L]=new Nrb.Vy(A.a-J.a,J.b);++L}}}B=Nrb.Ay(k,K);C=Nrb.Ay(m,L);D=Nrb.Ay(n,L);if($wnd.Math.abs(Nrb.Xx(B.a,C.a))>$wnd.Math.abs(Nrb.Xx(B.a,D.a))){Nrb.pz(c,F,H,w.a)}else{Nrb.ez(c,F,H);Nrb.pz(c,F,H,A.a)}return Nrb.cy(a,b,c,e)};Nrb._x=function _x(a,b,c,d){var e,f,g,h,i,j;f=d==b.length-1?0:d+1;h=d==0?b.length-1:d-1;g=f==b.length-1?0:f+1;if(Jrb.Qk(a.f,c[d])==2){e=Jrb.Rk(a.f,c[d]);if(e==1||e==2){Nrb.hy(a,b[h],b[d],b[f])^Nrb.hy(a,b[g],b[f],b[d])&&(e=e==1?2:1);return e}}if(Jrb.Po(a.f,c[d])){i=Jrb.Cr(Jrb.jo(a.f),c[h],c[d]);j=Jrb.Cr(Jrb.jo(a.f),c[f],c[d]);if(i!=-1||j!=-1)return i==j?2:1;return 2}return 0};Nrb.ay=function ay(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;e=tX(Drb.NY,Qsb,6,a.f.q,15,1);f=tX(Drb.NY,Qsb,6,a.f.q,15,1);g=tX(Drb.NY,Qsb,6,a.f.q,15,1);h=tX(Drb.NY,Qsb,6,a.f.q,15,1);e[0]=b;g[b]=1;h[0]=-1;d=0;i=0;while(d<=i){if(d==0||!a.b[e[d]]){for(j=0;j<Jrb.rn(a.f,e[d]);j++){c=Jrb.Fn(a.f,e[d],j);m=Jrb.Hn(a.f,e[d],j);if(g[c]==0&&!a.c[m]){e[++i]=c;f[i]=m;g[c]=g[e[d]]+1;h[i]=d}}}if(d==i){n=new Nrb.Yy(g[e[d]]);k=d;for(l=0;l<n.a.length;l++){n.a[l]=e[k];n.b[l]=f[k];k=h[k]}return n}++d}return null};Nrb.by=function by(a){var b,c,d,e;e=0;d=null;for(c=new Krb.ueb(a);c.a<c.c.a.length;){b=Krb.teb(c);if(e<b.b[0].e.length*b.b[1].e.length){e=b.b[0].e.length*b.b[1].e.length;d=b}}return d};Nrb.cy=function cy(a,b,c,d){var e,f,g,h,i;f=new Nrb.rz(a.f,b.e.length+c.e.length-d,b.i|c.i);e=0;for(h=0;h<b.e.length;h++){f.e[e]=b.e[h];f.k[e]=b.k[h];f.a[e]=b.a[h];f.b[e++]=b.b[h]}for(g=0;g<c.e.length;g++){i=Nrb.kz(b,c.e[g]);if(i==-1){f.e[e]=c.e[g];f.k[e]=c.k[g];f.a[e]=c.a[g];f.b[e++]=c.b[g]}else{if(f.k[i]<c.k[g]){f.k[i]=c.k[g];f.a[i]=c.a[g];f.b[i]=c.b[g]}}}return f};Nrb.dy=function dy(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;h=tX(Drb.NY,Qsb,6,a.f.q,15,1);i=tX(Drb.NY,Qsb,6,a.f.q,15,1);j=tX(Drb.NY,Qsb,6,a.f.q,15,1);k=tX(Drb.NY,Qsb,6,a.f.q,15,1);h[0]=c;j[c]=1;k[0]=-1;g=0;l=0;while(g<=l){for(m=0;m<Jrb.rn(a.f,h[g]);m++){e=Jrb.Fn(a.f,h[g],m);o=Jrb.Hn(a.f,h[g],m);if(e==b){f=j[h[g]];d=tX(Drb.NY,Qsb,6,f,15,1);d[0]=o;for(n=1;n<f;n++){d[n]=i[g];g=k[g]}return d}if(j[e]==0){h[++l]=e;i[l]=o;j[e]=j[h[g]]+1;k[l]=g}}if(g==l)return null;++g}return null};Nrb.ey=function ey(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;c=Jrb.Ik(a.f,0,b);d=Jrb.Ik(a.f,1,b);g=tX(Drb.NY,Qsb,6,a.f.q,15,1);h=tX(Drb.NY,Qsb,6,a.f.q,15,1);i=tX(Drb.NY,Qsb,6,a.f.q,15,1);j=tX(Drb.NY,Qsb,6,a.f.q,15,1);g[0]=c;g[1]=d;h[1]=b;i[c]=1;i[d]=2;j[0]=-1;j[1]=0;f=1;k=1;while(f<=k){for(l=0;l<Jrb.Gn(a.f,g[f]);l++){e=Jrb.Fn(a.f,g[f],l);if(f>1&&e==c){o=new Nrb.Yy(i[g[f]]);h[0]=Jrb.Hn(a.f,g[f],l);m=f;for(n=0;n<o.a.length;n++){o.a[n]=g[m];o.b[n]=h[m];m=j[m]}return o}if(i[e]==0&&Jrb.Lo(a.f,e)){g[++k]=e;h[k]=Jrb.Hn(a.f,g[f],l);i[e]=i[g[f]]+1;j[k]=f}}++f}return null};Nrb.fy=function fy(a,b,c,d){var e,f,g,h,i,j;g=tX(Drb.NY,Qsb,6,a.f.q,15,1);h=tX(Drb.NY,Qsb,6,a.f.q,15,1);g[0]=c;g[1]=b;h[c]=1;h[b]=2;f=1;i=1;while(f<=i){for(j=0;j<Jrb.Gn(a.f,g[f]);j++){e=Jrb.Fn(a.f,g[f],j);if(e==d)return 1+h[g[f]];if(h[e]==0&&Jrb.Lo(a.f,e)){g[++i]=e;h[e]=h[g[f]]+1}}++f}return 0};Nrb.gy=function gy(a,b){var c,d,e,f,g,h,i;h=(b.T&15)!=0;i=b.T&248;!a.g&&(a.g=new Krb.Vib);(a.e&2)!=0&&Jrb.Wo(b,false);a.f=b;Jrb.ou(a.f,7);a.d=new Nrb.Ey;a.b=tX(Drb.c3,itb,6,a.f.q,16,1);a.c=tX(Drb.c3,itb,6,a.f.r,16,1);a.i=tX(Drb.NY,Qsb,6,a.f.q,15,1);for(c=0;c<a.f.q;c++)a.i[c]=Jrb.mk(a.f,c);(a.e&12)!=0&&Nrb.ry(a);(a.e&1)==0&&!!Nrb.Lx&&Nrb.ty(a,Nrb.Lx);Nrb.qy(a);Nrb.my(a);Nrb.oy(a);Nrb.my(a);for(f=new Krb.ueb(a.d);f.a<f.c.a.length;){d=Krb.teb(f);Nrb.nz(d)}Nrb.Qx(a);Nrb.uy(a);Nrb.sy(a);Nrb.ly(a);Nrb.jy(a);Nrb.ny(a);for(e=new Krb.ueb(a.d);e.a<e.c.a.length;){d=Krb.teb(e);for(g=0;g<d.e.length;g++){Jrb.gm(a.f,d.e[g],d.a[g]);Jrb.hm(a.f,d.e[g],d.b[g]);Jrb.im(a.f,d.e[g],0)}}if(h){Jrb._o(a.f,i);Jrb.cp(a.f)}a.a&&Jrb.Hl(a.f)};Nrb.hy=function hy(a,b,c,d){var e,f;for(f=0;f<Jrb.Gn(a.f,c);f++){e=Jrb.Fn(a.f,c,f);if(e!=d&&e<b)return false}return true};Nrb.iy=function iy(a,b,c){var d;Nrb.Sy(b,c,(a.e&12)!=0);d=Nrb.cy(a,b.b[0],b.b[1],0);Nrb.xy(a,b.b[0],b.b[1],d)};Nrb.jy=function jy(a){var b;b=Nrb.Rx(a);while(b){Nrb.iy(a,b,Iwb);b=Nrb.Rx(a)}};Nrb.ky=function ky(a,b,c,d){var e,f,g,h,i;e=tX(Drb.NY,Qsb,6,d,15,1);f=0;for(g=0;g<b.e.length;g++)for(h=0;h<c.e.length;h++)b.e[g]==c.e[h]&&(e[f++]=b.e[g]);i=d==1?Nrb.Zx(a,b,c,e[0]):Nrb.$x(a,b,c,e,d);Nrb.xy(a,b,c,i)};Nrb.ly=function ly(a){var b,c;c=Nrb.Ux(a);while(c){b=Nrb.by(c);Nrb.iy(a,b,Uvb);c=Nrb.Ux(a)}};Nrb.my=function my(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;while(true){s=0;n=0;q=null;r=null;for(g=1;g<a.d.a.length;g++){d=Krb.Ji(a.d,g);for(h=0;h<g;h++){e=Krb.Ji(a.d,h);b=0;c=0;o=0;p=0;for(k=0;k<d.e.length;k++){for(m=0;m<e.e.length;m++){if(d.e[k]==e.e[m]){++c;b=d.e[k];o<d.k[k]&&(o=d.k[k]);p<e.k[m]&&(p=e.k[m])}}}if(c>0){f=c==1&&Nrb.Yx(a,d,b)==1&&Nrb.Yx(a,e,b)==1?0:1;o>p?(i=(f<<24)+(o<<16)+(p<<8)+c):(i=(f<<24)+(p<<16)+(o<<8)+c);if(s<i){s=i;n=c;o=0;p=0;for(l=0;l<d.e.length;l++)o<d.k[l]&&(o=d.k[l]);for(j=0;j<e.e.length;j++)p<e.k[j]&&(p=e.k[j]);if(o>p){q=d;r=e}else{q=e;r=d}}}}}if(s==0)break;n==q.e.length?Krb.Ri(a.d,q):n==r.e.length?Krb.Ri(a.d,r):Nrb.ky(a,q,r,n)}};Nrb.ny=function ny(a){var b;b=Nrb.Sx(a);while(b){Nrb.iy(a,b,rwb);b=Nrb.Sx(a)}};Nrb.oy=function oy(a){var b,c,d,e,f,g,h;while(true){f=null;for(b=0;b<a.f.q;b++){h=0;for(e=0;e<Jrb.rn(a.f,b);e++)a.c[Jrb.Hn(a.f,b,e)]||++h;if(h==1){g=Nrb.ay(a,b);(!f||g.a.length>f.a.length)&&(f=g)}}if(!f)break;c=new Nrb.rz(a.f,f.a.length,false);for(d=0;d<f.a.length;d++){a.b[f.a[d]]=true;d<f.a.length-1&&(a.c[f.b[d]]=true);c.e[d]=f.a[d];c.a[d]=$wnd.Math.cos($tb)*d;c.b[d]=(d&1)==1?0:0.5;c.k[d]=128+f.a.length}Nrb.Cy(a.d,c)}};Nrb.py=function py(a,b,c){var d,e,f,g,h,i,j,k,l,m;for(f=0;f<a.f.r;f++){d=Jrb.Ik(a.f,0,f);e=Jrb.Ik(a.f,1,f);if(Jrb.Mo(a.f,f)||Jrb.Qk(a.f,f)!=1||Jrb.rn(a.f,d)==1||Jrb.rn(a.f,e)==1)continue;if((a.e&4)!=0&&Jrb.sl(a.f,d)&&Jrb.sl(a.f,e))continue;l=false;for(j=0;j<2;j++){g=Jrb.Ik(a.f,j,f);if(Jrb.rn(a.f,g)>2){m=true;i=-1;for(k=0;k<Jrb.rn(a.f,g);k++){h=Jrb.Fn(a.f,g,k);h!=Jrb.Ik(a.f,1-j,f)&&(i==-1?(i=c[h]):i!=c[h]&&(m=false))}if(m){l=true;break}}}l||((a.e&8)!=0&&Jrb.sl(a.f,d)&&Jrb.sl(a.f,e)?(b[f]=1):(b[f]=2))}};Nrb.qy=function qy(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M;for(d=0;d<a.f.f;d++){if(Jrb.rn(a.f,d)>4){m=new Nrb.rz(a.f,1+Jrb.rn(a.f,d),false);m.a[Jrb.rn(a.f,d)]=0;m.b[Jrb.rn(a.f,d)]=0;m.k[Jrb.rn(a.f,d)]=32;m.e[Jrb.rn(a.f,d)]=d;a.b[d]=true;for(o=0;o<Jrb.rn(a.f,d);o++){j=Jrb.Fn(a.f,d,o);m.a[o]=$wnd.Math.sin(Ztb*o-Tvb);m.b[o]=$wnd.Math.cos(Ztb*o-Tvb);m.k[o]=32;m.e[o]=j;a.b[j]=true;a.c[Jrb.Hn(a.f,d,o)]=true}Nrb.Cy(a.d,m)}}I=Jrb.jo(a.f);for(H=0;H<I.i.a.length;H++){J=Krb.Ji(I.j,H).length;F=Krb.Ji(I.i,H);K=false;if((a.e&12)!=0){K=true;for(o=0;o<J;o++){if(!Jrb.sl(a.f,F[o])){K=false;break}}}if(!K){r=false;for(p=0;p<J;p++){if(Jrb.An(a.f,F[p])==J){r=true;break}}if(r){G=Krb.Ji(I.j,H);Nrb.Mx(a,F,G);for(o=0;o<J;o++){a.b[F[o]]=true;a.c[G[o]]=true}}}}for(h=0;h<a.f.g;h++){if(Jrb.Mo(a.f,h)&&!a.c[h]){M=Nrb.ey(a,h);F=M.a;G=M.b;Nrb.Mx(a,F,G);for(o=0;o<M.a.length;o++){a.b[F[o]]=true;a.c[G[o]]=true}}}for(i=0;i<a.f.r;i++){if(!a.c[i]&&Jrb.Qk(a.f,i)==3){e=Jrb.Ik(a.f,0,i);f=Jrb.Ik(a.f,1,i);w=Jrb.rn(a.f,e)+Jrb.rn(a.f,f);if(w>2){m=new Nrb.rz(a.f,w,false);k=0;for(p=0;p<Jrb.rn(a.f,e);p++){j=Jrb.Fn(a.f,e,p);if(j!=f){m.e[k++]=j;a.b[j]=true;a.c[Jrb.Hn(a.f,e,p)]=true}}m.e[k++]=e;m.e[k++]=f;for(q=0;q<Jrb.rn(a.f,f);q++){j=Jrb.Fn(a.f,f,q);if(j!=e){m.e[k++]=j;a.b[j]=true;a.c[Jrb.Hn(a.f,f,q)]=true}}for(o=0;o<w;o++){m.a[o]=o;m.b[o]=0;m.k[o]=1}a.b[e]=true;a.b[f]=true;a.c[i]=true;Nrb.Cy(a.d,m)}}}for(g=0;g<a.f.r;g++){if(!a.c[g]&&Jrb.Qk(a.f,g)==2){b=tX(Drb.NY,Qsb,6,a.f.q,15,1);for(o=0;o<2;o++){b[0]=Jrb.Ik(a.f,o,g);b[1]=Jrb.Ik(a.f,1-o,g);if(Jrb.wn(a.f,b[0])==1&&Jrb.wn(a.f,b[1])==2&&Jrb.rn(a.f,b[1])==2){a.b[b[0]]=true;a.b[b[1]]=true;a.c[g]=true;v=1;do{A=Jrb.Fn(a.f,b[v],0)==b[v-1]?1:0;b[v+1]=Jrb.Fn(a.f,b[v],A);if(Jrb.wn(a.f,b[v+1])==2&&Jrb.rn(a.f,b[v+1])>2)break;a.b[b[v+1]]=true;a.c[Jrb.Hn(a.f,b[v],A)]=true;++v}while(Jrb.wn(a.f,b[v])==2&&Jrb.rn(a.f,b[v])==2);w=Jrb.rn(a.f,b[0])+Jrb.rn(a.f,b[v])+v-1;m=new Nrb.rz(a.f,w,false);for(t=0;t<=v;t++){m.a[t]=t;m.b[t]=0;m.k[t]=64;m.e[t]=b[t]}l=v+1;n=false;for(u=0;u<Jrb.rn(a.f,b[0]);u++){j=Jrb.Fn(a.f,b[0],u);if(j!=b[1]){m.a[l]=-0.5;m.b[l]=n?$wnd.Math.sin(Ztb):-$wnd.Math.sin(Ztb);m.k[l]=64;m.e[l]=j;++l;n=true}}n=false;for(s=0;s<Jrb.rn(a.f,b[v]);s++){j=Jrb.Fn(a.f,b[v],s);if(j!=b[v-1]){m.a[l]=v+0.5;m.b[l]=n?-$wnd.Math.sin(Ztb):$wnd.Math.sin(Ztb);m.k[l]=64;m.e[l]=j;++l;n=true}}Nrb.Cy(a.d,m)}}}}for(c=0;c<a.f.q;c++){if(Jrb.rn(a.f,c)==4){B=tX(Drb.NY,Qsb,6,4,15,1);C=tX(Drb.NY,Qsb,6,4,15,1);D=0;for(p=0;p<4;p++){B[D]=Jrb.Fn(a.f,c,p);C[D]=Jrb.Hn(a.f,c,p);Jrb.rn(a.f,B[D])==1&&!a.c[C[D]]&&++D}if(D==2){m=new Nrb.rz(a.f,3,false);for(o=0;o<2;o++){a.b[B[o]]=true;a.c[C[o]]=true;m.e[o]=B[o];m.k[o]=32}m.a[0]=-0.5;m.b[0]=0.866;m.a[1]=0.5;m.b[1]=0.866;m.a[2]=0;m.b[2]=0;m.k[2]=32;m.e[2]=c;Nrb.Cy(a.d,m)}if(D==3){for(q=0;q<2;q++){if(Jrb.Qk(a.f,C[q])==1){L=B[q];B[q]=B[2];B[2]=L;L=C[q];C[q]=C[2];C[2]=L}}m=new Nrb.rz(a.f,4,false);for(o=0;o<3;o++){a.b[B[o]]=true;a.c[C[o]]=true;m.e[o]=B[o];m.k[o]=32}m.a[0]=-1;m.b[0]=0;m.a[1]=1;m.b[1]=0;m.a[2]=0;m.b[2]=1;m.a[3]=0;m.b[3]=0;m.k[3]=32;m.e[3]=c;Nrb.Cy(a.d,m)}}}};Nrb.ry=function ry(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;h=0;for(c=0;c<a.f.q;c++)Jrb.sl(a.f,c)&&++h;if(h<2)return;l=0;j=0;for(k=0;k<a.f.r;k++){d=Jrb.Ik(a.f,0,k);e=Jrb.Ik(a.f,1,k);if(Jrb.sl(a.f,d)&&Jrb.sl(a.f,e)){a.c[k]=true;a.b[d]=true;a.b[e]=true;j+=Jrb.Ok(a.f,k);++l}}l!=0&&j!=0?(j/=l):(j=Jrb.Ek(a.f));for(f=0;f<a.f.q;f++)Jrb.sl(a.f,f)&&!a.b[f]&&--h;if(h<2)return;t=tX(Drb.NY,Qsb,6,a.f.q,15,1);m=Jrb.Pn(a.f,t,true,true);s=tX(Drb.NY,Qsb,6,m,15,1);for(g=0;g<a.f.q;g++)t[g]!=-1&&++s[t[g]];r=tX(Drb.f$,Bsb,43,m,0,1);for(o=0;o<m;o++)r[o]=new Nrb.rz(a.f,s[o],true);i=tX(Drb.NY,Qsb,6,m,15,1);for(b=0;b<a.f.q;b++){p=t[b];if(p!=-1){r[p].k[i[p]]=vtb;r[p].e[i[p]]=b;r[p].a[i[p]]=Jrb.Ak(a.f,b)/j;r[p].b[i[p]]=Jrb.Bk(a.f,b)/j;++i[p]}}u=-1;v=0;for(q=0;q<m;q++){if(v<s[q]){v=s[q];u=q}}Nrb.Cy(a.d,r[u]);for(n=0;n<m;n++)n!=u&&Nrb.Cy(a.d,r[n])};Nrb.sy=function sy(a){var b,c;for(b=0;b<a.f.q;b++){if(!a.b[b]&&Jrb.rn(a.f,b)==0){c=new Nrb.rz(a.f,1,false);a.b[b]=true;c.e[0]=b;c.a[0]=0;c.b[0]=0;c.k[0]=0;Nrb.Cy(a.d,c)}}};Nrb.ty=function ty(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;o=null;o=new Jrb.xs;Jrb.rs(o,a.f);g=tX(Drb.c3,itb,6,a.f.f,16,1);for(q=b.sb();q.jc();){p=q.kc();n=null;s=p.b;Jrb.ps(o,s);Jrb.ds(o,4,8)!=0&&(n=o.D);if(n){for(m=new Krb.ueb(n);m.a<m.c.a.length;){l=Krb.teb(m);r=0;for(d=l,e=0,f=d.length;e<f;++e){c=d[e];g[c]&&++r}if(r<=1){i=p.c;a.a?(i=false):(a.a=true);j=new Nrb.rz(a.f,l.length,i);for(k=0;k<l.length;k++){c=l[k];i&&Jrb._l(a.f,c,true);j.k[k]=256;j.e[k]=c;j.a[k]=Jrb.Ak(p.b,k)/p.a;j.b[k]=Jrb.Bk(p.b,k)/p.a;g[c]=true;a.b[c]=true}for(h=0;h<s.g;h++)a.c[Jrb.Dn(a.f,l[s.D[0][h]],l[s.D[1][h]])]=true;Nrb.Cy(a.d,j)}}}}return g};Nrb.uy=function uy(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;b=Nrb.Ox(a);f=tX(Drb.JY,nub,6,a.f.r,15,1);Nrb.py(a,f,b);for(e=0;e<a.f.r;e++)f[e]==2&&(Jrb.Lo(a.f,Jrb.Ik(a.f,0,e))||Jrb.Lo(a.f,Jrb.Ik(a.f,1,e)))&&(f[e]=3);for(n=0;n<a.d.a.length;n++){l=Krb.Ji(a.d,n);i=Nrb.iz(l);r=l.c;q=new Nrb.sz(l);p=-1;for(m=0;m<224&&i.a.length!=0;m++){j=Krb.Sib(a.g,i.a.length);h=(Hrb.fnb(j,i.a.length),i.a[j]);g=Nrb.dy(a,h[0],h[1]);c=tX(Drb.NY,Qsb,6,g.length,15,1);d=0;if(m<32){for(o=1;o<g.length-1;o++)f[g[o]]==3&&(c[d++]=g[o])}else if(m<96){for(o=1;o<g.length-1;o++)f[g[o]]>=2&&(c[d++]=g[o])}else{for(o=1;o<g.length-1;o++)f[g[o]]>=1&&(c[d++]=g[o])}if(d!=0){t=c[0];if(d>1){do{t=c[Krb.Sib(a.g,d)]}while(t==p)}if(t!=p){p=t;Nrb.fz(l,t);i=Nrb.iz(l);if(r>l.c){r=l.c;q=new Nrb.sz(l)}}}}Krb.Ti(a.d,n,q);l=q;k=1;do{s=9999;for(o=0;o<l.e.length;o++){u=b[l.e[o]];u==k?Nrb.oz(l,o):u>k&&u<s&&(s=u)}k=s}while(s!=9999)}};Nrb.vy=function vy(a,b){a.g=new Krb.Wib(b)};Nrb.wy=function wy(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;e=tX(Drb.LY,Osb,6,Jrb.rn(a.f,c)+1,15,1);g=tX(Drb.NY,Qsb,6,Jrb.rn(a.f,c)+1,15,1);h=tX(Drb.NY,Qsb,6,Jrb.rn(a.f,c)+1,15,1);q=Nrb.kz(b,c);f=0;for(j=0;j<Jrb.rn(a.f,c);j++){g[f]=Jrb.Fn(a.f,c,j);h[f]=Jrb.Hn(a.f,c,j);l=Nrb.kz(b,g[f]);l!=-1&&(e[f++]=Nrb.Xy(b.a[q],b.b[q],b.a[l],b.b[l]))}if(f==1)return e[0]+ntb;for(k=f-1;k>0;k--){for(m=0;m<k;m++){if(e[m]>e[m+1]){r=e[m];e[m]=e[m+1];e[m+1]=r;s=g[m];g[m]=g[m+1];g[m+1]=s;t=h[m];h[m]=h[m+1];h[m+1]=t}}}e[f]=e[0]+mtb;g[f]=g[0];h[f]=h[0];n=-100;o=0;for(i=0;i<f;i++){d=e[i+1]-e[i];if(f>2&&Jrb.Mo(a.f,h[i])&&Jrb.Mo(a.f,h[i+1])){p=Nrb.fy(a,g[i],c,g[i+1]);p!=0&&(d-=100-p)}if(n<d){n=d;o=i}}return (e[o]+e[o+1])/2};Nrb.xy=function xy(a,b,c,d){var e;e=$wnd.Math.min(Krb.Li(a.d,b,0),Krb.Li(a.d,c,0));Krb.Di(a.d,e,d);Krb.Ri(a.d,b);Krb.Ri(a.d,c)};Nrb.yy=function yy(){Nrb.zy.call(this,2)};Nrb.zy=function zy(a){this.e=a;(a&1)==0&&!Nrb.Lx&&!Nrb.Lx&&(Nrb.Lx=new Nrb.az)};Nrb.Ay=function Ay(a,b){var c,d,e,f,g;g=0;c=0;for(d=0;d<b;d++){g+=a[d].b*$wnd.Math.sin(a[d].a);c+=a[d].b*$wnd.Math.cos(a[d].a)}if(c==0)f=g>0?otb:Wtb;else{f=$wnd.Math.atan(g/c);c<0&&(f+=ntb)}e=$wnd.Math.sqrt(g*g+c*c)/b;return new Nrb.Vy(f,e)};Nrb.By=function By(a,b){var c,d;c=$wnd.Math.abs(a.b);d=$wnd.Math.abs(b.b);return c<d?-1:c>d?1:0};Z3(84,1,{},Nrb.yy,Nrb.zy);_.a=false;_.e=0;Drb._Z=B5(84);Nrb.Cy=function Cy(a,b){var c,d;for(d=new Krb.ueb(a);d.a<d.c.a.length;){c=Krb.teb(d);if(Nrb.dz(c,b))return false}return Hrb.Kmb(a.a,b),true};Nrb.Dy=function Dy(a,b){return Nrb.Cy(a,b)};Nrb.Ey=function Ey(){Krb.Yi.call(this)};Z3(259,18,zub,Nrb.Ey);_.add=function Fy(a){return Nrb.Dy(this,a)};Drb.XZ=B5(259);Nrb.Gy=function Gy(a){var b,c;b=a.c.e.length;c=a.c.e.length;return c<b?-1:c>b?1:0};Nrb.Hy=function Hy(){};Z3(261,1,{},Nrb.Hy);_.qb=function Iy(a,b){var c;return Nrb.Gy((c=a,b,c))};_.jb=function Jy(a){return this===a};Drb.YZ=B5(261);Nrb.Ky=function Ky(a){var b,c;b=a.c.e.length;c=a.c.e.length;return b<c?-1:b>c?1:0};Nrb.Ly=function Ly(){};Z3(262,1,{},Nrb.Ly);_.qb=function My(a,b){var c;return Nrb.Ky((c=a,b,c))};_.jb=function Ny(a){return this===a};Drb.ZZ=B5(262);Nrb.Oy=function Oy(){};Z3(260,1,{},Nrb.Oy);_.qb=function Py(a,b){return Nrb.By(a,b)};_.jb=function Qy(a){return this===a};Drb.$Z=B5(260);Nrb.Ry=function Ry(a,b,c){a.c[0]+=Nrb.gz(a.b[0],b);a.d[0]+=Nrb.hz(a.b[0],b);a.c[1]+=Nrb.gz(a.b[1],c);a.d[1]+=Nrb.hz(a.b[1],c);++a.a[0];++a.a[1]};Nrb.Sy=function Sy(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;d=tX(Drb.LY,Osb,6,2,15,1);for(j=0;j<2;j++){a.c[j]/=a.a[j];a.d[j]/=a.a[j];d[j]=Nrb.bz(a.b[j],a.c[j],a.d[j],a.b[1-j].e.length,b)}Nrb.pz(a.b[0],a.c[0],a.d[0],otb-d[0]);Nrb.pz(a.b[1],a.c[1],a.d[1],4.71238898038469-d[1]);w=Eub;v=-1.7976931348623157E308;g=a.d[0]-a.d[1];for(k=0;k<a.b[1].b.length;k++){a.b[1].b[k]+=g;w>a.b[1].b[k]&&(w=a.b[1].b[k]);v<a.b[1].b[k]&&(v=a.b[1].b[k])}t=v-w+2*b;e=IY($wnd.Math.ceil(t));w+=(t-e)/2-b;r=tX(Drb.LY,Osb,6,e,15,1);for(l=0;l<e;l++)r[l]=a.c[1]+b;for(m=0;m<a.b[1].b.length;m++){u=a.b[1].b[m]-w;s=IY(u-b);h=$wnd.Math.min(IY(u+b),e-1);for(q=s;q<=h;q++){r[q]>a.b[1].a[m]&&(r[q]=a.b[1].a[m])}}for(n=0;n<e;n++)r[n]-=b;f=a.c[0]-a.c[1];for(o=0;o<a.b[0].a.length;o++){p=IY(a.b[0].b[o]-w);p>=0&&p<r.length&&f<a.b[0].a[o]-r[p]&&(f=a.b[0].a[o]-r[p])}for(i=0;i<a.b[1].a.length;i++)a.b[1].a[i]+=f;if(c){Nrb.pz(a.b[0],a.c[0],a.d[0],d[0]-otb);Nrb.pz(a.b[1],a.c[0],a.d[0],d[0]-otb)}};Nrb.Ty=function Ty(a,b){var c,d;this.b=tX(Drb.f$,Bsb,43,2,0,1);this.b[0]=a;this.b[1]=b;this.c=tX(Drb.LY,Osb,6,2,15,1);this.d=tX(Drb.LY,Osb,6,2,15,1);this.a=tX(Drb.NY,Qsb,6,2,15,1);for(c=0;c<2;c++){for(d=0;d<this.b[c].e.length;d++){this.c[c]+=Nrb.gz(this.b[c],d);this.d[c]+=Nrb.hz(this.b[c],d)}this.a[c]=this.b[c].e.length}};Nrb.Uy=function Uy(a,b,c,d){this.b=tX(Drb.f$,Bsb,43,2,0,1);this.b[0]=a;this.b[1]=b;this.c=tX(Drb.LY,Osb,6,2,15,1);this.d=tX(Drb.LY,Osb,6,2,15,1);this.c[0]=Nrb.gz(this.b[0],c);this.d[0]=Nrb.hz(this.b[0],c);this.c[1]=Nrb.gz(this.b[1],d);this.d[1]=Nrb.hz(this.b[1],d);this.a=tX(Drb.NY,Qsb,6,2,15,1);this.a[0]=1;this.a[1]=1};Z3(90,1,{90:1},Nrb.Ty,Nrb.Uy);Drb.a$=B5(90);Nrb.Vy=function Vy(a,b){this.a=a;this.b=b};Nrb.Wy=function Wy(a,b,c,d){var e,f;this.a=Nrb.Xy(a,b,c,d);e=c-a;f=d-b;this.b=$wnd.Math.sqrt(e*e+f*f)};Nrb.Xy=function Xy(a,b,c,d){var e,f,g;f=c-a;g=d-b;if(g!=0){e=$wnd.Math.atan(f/g);g<0&&(f<0?(e-=ntb):(e+=ntb))}else e=f>0?otb:Wtb;return e};Z3(35,1,{35:1},Nrb.Vy,Nrb.Wy);_.a=0;_.b=0;Drb.b$=B5(35);Nrb.Yy=function Yy(a){this.a=tX(Drb.NY,Qsb,6,a,15,1);this.b=tX(Drb.NY,Qsb,6,a,15,1)};Z3(211,1,{},Nrb.Yy);Drb.c$=B5(211);Nrb.Zy=function Zy(a,b,c){this.c=a;this.a=b;this.b=c};Z3(167,1,{167:1},Nrb.Zy);_.a=0;_.b=0;Drb.d$=B5(167);Nrb._y=function _y(){Nrb._y=_3;Nrb.$y=BX(nX(Drb.B0,1),Esb,2,6,['gkvt@@@@LddTTTrbTRTRTRRRRRRRRRRRRRrVRrIh\\\\IAaQxlY@gRHdJCJcRXlv_CfJx|A\\\\hRHejiLaQjTje^kSjtFcIhvXmVKMjt{lN{Kavy\\\\^wGjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjh@@vo@HBC@PhLN@bPhtFKCcpDbILaRhtzCIbsX\\\\nOO`JDbqDjSKdJeJmQjtz}Ahr[LVkMnpz\\\\nwGj{PBhBdBlBBBjBfBnBaBiBeBmBcBkBgBoB`bhbdblbbbjbfbnbabibebmbcbkbgbob`RhRdRlRbRjRfRnRaRiReRmRcRkRgRoR`rhrdrlrbrjrfrnrarirermrcrkrgror`JhJdJlJbJjJfJnJaJiJeJmJcJkJgJoJ`jhjdjljbjjjfjnjajijej` !BnkjyVwsVr|iQn|Q|goTZWPIJwbudnRkVYBez]siZymNJZUqNFBqZWxS~iCXVU]SeRjwrtSPAjkvXLpBAZauDPzq]PfMlecrMnkv|@\\\\SFD`m|mWiEoCXp`SIe_J[l|[XCbloTV`[Gc@FJGopyyoOlFQfUy^w\\\\Bgz|','gcrt@@@@LdbbbbTRbRbRbRRRRRRRRRRRRVRrVQIA`HtRGAaIxZAHfShTjCIbqylQGKgqdBaXeQJeruBiPitZmFoPZLFSYbvZlVGMnsZ]vWSmr{]UUUUUUUUUUUUUUUUUUUUUUUUUUUUUT@@[G`DAA`HTFG@QHTZCEaqxBQDfPiTZ]AdqYlNWGgpEBQXbUIerEReVhuZ]^`tYMfKUfwX]NW[jkPBhBdBlBbBjBfBnBaBiBeBmBcBkBgBoB`bhbdblbbbjbfbnbabibebmbcbkbgbob`RhRdRlRbRjRfRnRaRiReRmRcRkRgRoR`rhrdrlrbrjrfrnrarirermrcrkrgror`JhJdJlJbJjJfJnJaJiJeJmJcJkJgJoJ`jhjdjljbjjjfjnjajij` !B^cR]`]Fm]QkfljE\\\\p\\x7FUVfgOmFXsQe_gXPyXis_wF|vUUX_XbxpzU]HUFgYViwFo~@uemc@}~T\\x7FIEPioYVwr]JnM~[ZEC\\\\g}~o_pUfdo~irsklTLiyVJshnw^iVAsZ`_~}PYkckURH{FYMImFaRaccUlCZSHMfP','dml@@Dje^VGiyZjjjh@vtHSBinFU@ !BPTCTy[skMzUPF`AJbBixEZHS[Il','dml@@DjYVvGiyZjjjh@vtHSBinFU@ !BwLo~BJ~UquhXBinZ\\\\ykA@F_eMrT','dml@@LdfbbQX^fUZjjj`C[PaLJfxYT !BzxIHVc{OiJVRpprePho~]}y\\x7FwLl','deL@@DjUYkfEijjjj@MeBDpj[ad !B\\x7FaA\\x7FMVr[AvkKzm_jKvVbD{sk','dil@@LddTQRl[NX^Fjjjj@MiBDpj[a@ !BPfL@\\x7Fox@M~T@\\x7Fox@\\x7F`C~@@','daL@@DjYtKJqjynjjjj@MaBDpj[` !B`bL@_gx@@Gy~@Gx@_`@'])};Nrb.az=function az(){Nrb._y();var a,b,c,d,e,f,g;Krb.Yi.call(this);f=new Jrb.Ns;for(c=Nrb.$y,d=0,e=c.length;d<e;++d){b=c[d];a=Jrb.tp(new Jrb.Bp,b);Jrb.Gs(f,a);g=new Nrb.tz(a);g.a=Jrb.Ek(g.b);Hrb.Kmb(this.a,g)}};Z3(311,18,zub,Nrb.az);Drb.e$=B5(311);Nrb.bz=function bz(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;if(a.e.length==1)return 0;C=e+$wnd.Math.sqrt(d);k=tX(Drb.LY,Osb,6,36,15,1);for(o=0;o<a.e.length;o++){f=Nrb.Xy(b,c,a.a[o],a.b[o]);h=Nrb.cz(N3(u3($wnd.Math.round(f*36/mtb))));l=b-a.a[o];m=c-a.b[o];F=l*l+m*m;k[h]<F&&(k[h]=F)}v=-1;u=-1;for(p=0;p<36;p++){k[p]=$wnd.Math.sqrt(k[p]);if(v<k[p]){v=k[p];u=p}}D=u-18<0?u-18+36:u-18>=36?u-18-36:u-18;for(q=0;q<=18;q++){k[D+q<0?D+q+36:D+q>=36?D+q-36:D+q]+=0.01*q;k[D-q<0?D-q+36:D-q>=36?D-q-36:D-q]+=0.01*q}G=tX(Drb.LY,Osb,6,9,15,1);i=tX(Drb.LY,Osb,6,9,15,1);for(r=1;r<9;r++){G[r]=$wnd.Math.sin(r*$wb);i[r]=$wnd.Math.cos(r*$wb)}A=Eub;w=-1;for(g=0;g<36;g++){if(k[g]>=A)continue;t=k[g];for(n=1;n<9;n++){for(s=-1;s<=1;s+=2){B=g+s*n<0?g+s*n+36:g+s*n>=36?g+s*n-36:g+s*n;if(k[B]*i[n]<=t)continue;j=i[n]*$wnd.Math.min(k[B],C/G[n]);if(t<j){t=j;if(A<=t)break}}if(A<=t)break}if(A>t){A=t;w=g}}return mtb*w/36};Nrb.cz=function cz(a){return a<0?a+36:a>=36?a-36:a};Nrb.dz=function dz(a,b){var c,d,e;if(b.e.length!=a.e.length)return false;d=Nrb.lz(a);e=Nrb.lz(b);for(c=0;c<d.length;c++)if(d[c]!=e[c])return false;return true};Nrb.ez=function ez(a,b,c){var d,e,f;for(f=0;f<a.e.length;f++){e=$wnd.Math.sqrt((a.a[f]-b)*(a.a[f]-b)+(a.b[f]-c)*(a.b[f]-c));d=0-Nrb.Xy(b,c,a.a[f],a.b[f]);a.a[f]=b+e*$wnd.Math.sin(d);a.b[f]=c+e*$wnd.Math.cos(d)}};Nrb.fz=function fz(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;a.d==null&&(a.d=tX(Drb.NY,lub,7,a.j.r,0,2));if(a.d[b]==null){n=tX(Drb.NY,Qsb,6,a.e.length,15,1);t=tX(Drb.c3,itb,6,a.j.q,16,1);e=Jrb.Ik(a.j,0,b);f=Jrb.Ik(a.j,1,b);n[0]=e;t[e]=true;k=0;o=0;while(k<=o){for(q=0;q<Jrb.rn(a.j,n[k]);q++){g=Jrb.Fn(a.j,n[k],q);if(!t[g]&&g!=f){n[++o]=g;t[g]=true}}if(k==o)break;++k}m=o+1>(a.e.length/2|0);if(a.i){i=false;h=false;for(q=0;q<a.e.length;q++){d=a.e[q];Jrb.sl(a.j,d)&&d!=e&&d!=f&&(t[a.e[q]]?(i=true):(h=true))}i!=h&&(m=i)}j=2;a.d[b]=tX(Drb.NY,Qsb,6,m?a.e.length-o:o+2,15,1);for(r=0;r<a.e.length;r++){a.e[r]==e?(a.d[b][m?0:1]=r):a.e[r]==f?(a.d[b][m?1:0]=r):m^t[a.e[r]]&&(a.d[b][j++]=r)}}v=a.a[a.d[b][0]];w=a.b[a.d[b][0]];u=Nrb.Xy(v,w,a.a[a.d[b][1]],a.b[a.d[b][1]]);for(p=2;p<a.d[b].length;p++){s=a.d[b][p];l=$wnd.Math.sqrt((a.a[s]-v)*(a.a[s]-v)+(a.b[s]-w)*(a.b[s]-w));c=2*u-Nrb.Xy(v,w,a.a[s],a.b[s]);a.a[s]=v+l*$wnd.Math.sin(c);a.b[s]=w+l*$wnd.Math.cos(c)}};Nrb.gz=function gz(a,b){return a.a[b]};Nrb.hz=function hz(a,b){return a.b[b]};Nrb.iz=function iz(a){var b,c,d,e,f,g,h,i;a.c=0;c=new Krb.Yi;for(e=1;e<a.e.length;e++){for(f=0;f<e;f++){h=$wnd.Math.abs(a.a[e]-a.a[f]);i=$wnd.Math.abs(a.b[e]-a.b[f]);d=$wnd.Math.sqrt(h*h+i*i);if(d<0.8){b=tX(Drb.NY,Qsb,6,2,15,1);b[0]=a.e[e];b[1]=a.e[f];Hrb.Kmb(c.a,b)}g=1-$wnd.Math.min(d,1);a.c+=g*g}}return c};Nrb.jz=function jz(a,b){return a.e[b]};Nrb.kz=function kz(a,b){var c;for(c=0;c<a.e.length;c++)if(b==a.e[c])return c;return -1};Nrb.lz=function lz(a){if(a.n==null){a.n=Krb.Ceb(a.e,a.e.length);Hrb.Nmb(a.n,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])))}return a.n};Nrb.mz=function mz(a,b){var c;for(c=0;c<a.e.length;c++)if(b==a.e[c])return true;return false};Nrb.nz=function nz(a){var b,c,d,e,f,g;d=0;for(f=0;f<a.e.length;f++){b=a.e[f];c=Jrb.rn(a.j,b);for(g=0;g<c;g++)Jrb.Fn(a.j,b,g)>b&&++d}a.f=tX(Drb.NY,Qsb,6,d,15,1);a.g=tX(Drb.NY,Qsb,6,a.j.q,15,1);d=0;for(e=0;e<a.e.length;e++){b=a.e[e];c=Jrb.rn(a.j,b);a.g[b]=e;for(g=0;g<c;g++)Jrb.Fn(a.j,b,g)>b&&(a.f[d++]=Jrb.Hn(a.j,b,g))}};\nNrb.oz=function oz(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;o=a.a[b];s=a.b[b];f=tX(Drb.b$,Bsb,35,4,0,1);k=0;for(l=0;l<a.f.length;l++){if(k>=4)break;if(b==a.g[Jrb.Ik(a.j,0,a.f[l])]||b==a.g[Jrb.Ik(a.j,1,a.f[l])])continue;p=a.a[a.g[Jrb.Ik(a.j,0,a.f[l])]];t=a.b[a.g[Jrb.Ik(a.j,0,a.f[l])]];q=a.a[a.g[Jrb.Ik(a.j,1,a.f[l])]];u=a.b[a.g[Jrb.Ik(a.j,1,a.f[l])]];h=$wnd.Math.sqrt((p-o)*(p-o)+(t-s)*(t-s));i=$wnd.Math.sqrt((q-o)*(q-o)+(u-s)*(u-s));e=$wnd.Math.sqrt((q-p)*(q-p)+(u-t)*(u-t));if(h<e&&i<e){if(p==q){g=$wnd.Math.abs(o-p);g<0.5&&(f[k++]=new Nrb.Vy(Nrb.Xy(p,s,o,s),(0.5-g)/2))}else if(t==u){g=$wnd.Math.abs(s-t);g<0.5&&(f[k++]=new Nrb.Vy(Nrb.Xy(o,t,o,s),(0.5-g)/2))}else{m=(u-t)/(q-p);n=-1/m;c=t-m*p;d=s-n*o;r=(d-c)/(m-n);v=m*r+c;g=$wnd.Math.sqrt((r-o)*(r-o)+(v-s)*(v-s));g<0.5&&(f[k++]=new Nrb.Vy(Nrb.Xy(r,v,o,s),(0.5-g)/2))}continue}if(h<0.5){f[k++]=new Nrb.Vy(Nrb.Xy(p,t,o,s),(0.5-h)/2);continue}if(i<0.5){f[k++]=new Nrb.Vy(Nrb.Xy(q,u,o,s),(0.5-i)/2);continue}}if(k>0){j=Nrb.Ay(f,k);a.a[b]+=j.b*$wnd.Math.sin(j.a);a.b[b]+=j.b*$wnd.Math.cos(j.a)}};Nrb.pz=function pz(a,b,c,d){var e,f,g;for(g=0;g<a.e.length;g++){f=$wnd.Math.sqrt((a.a[g]-b)*(a.a[g]-b)+(a.b[g]-c)*(a.b[g]-c));e=Nrb.Xy(b,c,a.a[g],a.b[g])+d;a.a[g]=b+f*$wnd.Math.sin(e);a.b[g]=c+f*$wnd.Math.cos(e)}};Nrb.qz=function qz(a,b,c){var d;for(d=0;d<a.e.length;d++){a.a[d]+=b;a.b[d]+=c}};Nrb.rz=function rz(a,b,c){this.j=a;this.i=c;this.e=tX(Drb.NY,Qsb,6,b,15,1);this.k=tX(Drb.NY,Qsb,6,b,15,1);this.a=tX(Drb.LY,Osb,6,b,15,1);this.b=tX(Drb.LY,Osb,6,b,15,1)};Nrb.sz=function sz(a){var b,c;this.j=a.j;this.i=a.i;this.e=tX(Drb.NY,Qsb,6,a.e.length,15,1);this.k=tX(Drb.NY,Qsb,6,a.e.length,15,1);this.a=tX(Drb.LY,Osb,6,a.e.length,15,1);this.b=tX(Drb.LY,Osb,6,a.e.length,15,1);for(c=0;c<a.e.length;c++){this.e[c]=a.e[c];this.k[c]=a.k[c];this.a[c]=a.a[c];this.b[c]=a.b[c]}if(a.f!=null){this.f=tX(Drb.NY,Qsb,6,a.f.length,15,1);for(b=0;b<a.f.length;b++)this.f[b]=a.f[b]}if(a.g!=null){this.g=tX(Drb.NY,Qsb,6,a.g.length,15,1);for(b=0;b<a.g.length;b++)this.g[b]=a.g[b]}};Z3(43,1,{43:1},Nrb.rz,Nrb.sz);_.c=0;_.i=false;Drb.f$=B5(43);Nrb.tz=function tz(a){this.b=a;this.c=false};Z3(210,1,{210:1},Nrb.tz);_.a=0;_.c=false;Drb.g$=B5(210);Orb.uz=function uz(a){a.c=new Krb.Yi};Orb.vz=function vz(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;t=-1;A=0;w=0;C=0;q=0;r=0;s=0;D=0;F=0;A=0;for(k=0;k<a.d;k++)A+=d[k]*d[k];A=$wnd.Math.sqrt(A);if(A>f)for(l=0;l<a.d;l++)d[l]*=f/A;w=0;for(m=0;m<a.d;m++)w+=d[m]*a.e[m];if(w>=0)return t;C=0;for(n=0;n<a.d;n++){B=$wnd.Math.abs(d[n])/$wnd.Math.max($wnd.Math.abs(b[n]),1);B>C&&(C=B)}s=1.0E-7/C;q=1;p=0;while(p<1000){if(q<s){t=1;break}for(o=0;o<a.d;o++)e[o]=b[o]+q*d[o];a.k=Prb.uA(a,e);if(a.k-c<=_wb*q*w)return 0;if(p==0)D=-w/(2*(a.k-c-w));else{u=a.k-c-q*w;v=F-c-r*w;g=(u/(q*q)-v/(r*r))/(q-r);h=(-r*u/(q*q)+q*v/(r*r))/(q-r);if(g==0)D=-w/(2*h);else{i=h*h-3*g*w;i<0?(D=0.5*q):h<=0?(D=(-h+$wnd.Math.sqrt(i))/(3*g)):(D=-w/(h+$wnd.Math.sqrt(i)))}D>0.5*q&&(D=0.5*q)}r=q;F=a.k;q=$wnd.Math.max(D,0.1*q);++p}for(j=0;j<a.d;j++)e[j]=b[j];return t};Orb.wz=function wz(a,b,c){var d,e,f,g;g=1;for(e=0;e<a.g.q;e++){a.i[3*e]=Jrb.Ak(a.g,e);a.i[3*e+1]=Jrb.Bk(a.g,e);a.i[3*e+2]=Jrb.Ck(a.g,e)}g=Orb.xz(a,b,c);if(g==0){for(d=0;d<a.g.q;d++){Jrb.gm(a.g,d,a.i[3*d]);Jrb.hm(a.g,d,a.i[3*d+1]);Jrb.im(a.g,d,a.i[3*d+2])}}for(f=new Krb.ueb(a.c);f.a<f.c.a.length;){Krb.teb(f);null.Ec()}return g};Orb.xz=function xz(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O;a.e=tX(Drb.LY,Osb,6,a.d,15,1);d=tX(Drb.LY,Osb,6,a.d,15,1);j=tX(Drb.LY,Osb,6,a.d,15,1);B=tX(Drb.LY,Osb,6,a.d,15,1);O=tX(Drb.LY,Osb,6,a.d,15,1);s=tX(Drb.LY,Osb,6,a.d*a.d,15,1);for(l=0;l<a.d;l++)B[l]=a.i[l];h=Prb.uA(a,a.i);Prb.vA(a);D=0;for(m=0;m<a.d;m++){s[m*a.d+m]=1;O[m]=-a.e[m];D+=a.i[m]*a.i[m]}A=100*$wnd.Math.max($wnd.Math.sqrt(D),a.d);H=(Erb.X7(),u3(Date.now()));for(u=1;u<=b&&!a.f;u++){C=Orb.vz(a,a.i,h,O,B,A);if(C<0)return 2;h=a.k;L=0;for(n=0;n<a.d;n++){O[n]=B[n]-a.i[n];a.i[n]=B[n];J=$wnd.Math.abs(O[n])/$wnd.Math.max($wnd.Math.abs(a.i[n]),1);J>L&&(L=J);d[n]=a.e[n]}if(L<1.2E-7){return 0}i=Prb.vA(a);L=0;K=$wnd.Math.max(a.k*i,1);for(o=0;o<a.d;o++){N=$wnd.Math.abs(a.e[o])*$wnd.Math.max($wnd.Math.abs(a.i[o]),1);L=$wnd.Math.max(L,N);d[o]=a.e[o]-d[o]}L/=K;if(L<c){return 0}e=0;g=0;F=0;G=0;for(p=0;p<a.d;p++){t=p*a.d;j[p]=0;for(v=0;v<a.d;v++)j[p]+=s[t+v]*d[v];e+=d[p]*O[p];g+=d[p]*j[p];F+=d[p]*d[p];G+=O[p]*O[p]}if(e>$wnd.Math.sqrt(3.0E-8*F*G)){e=1/e;f=1/g;for(q=0;q<a.d;q++)d[q]=e*O[q]-f*j[q];for(r=0;r<a.d;r++){t=r*a.d;for(v=r;v<a.d;v++){s[t+v]+=e*O[r]*O[v]-f*j[r]*j[v]+g*d[r]*d[v];s[v*a.d+r]=s[t+v]}}}for(k=0;k<a.d;k++){t=k*a.d;O[k]=0;for(v=0;v<a.d;v++)O[k]-=s[t+v]*a.e[v]}I=u3(Date.now());M=K3(I,H);if(x3(M,a.j)){for(w=new Krb.ueb(a.c);w.a<w.c.a.length;){Krb.teb(w);null.Ec()}H=I}}return 1};Orb.yz=function yz(a){var b,c,d;Orb.uz(this);d=0;for(b=0;b<a.f;b++){d+=Jrb.Wn(a,b)}if(d>0){throw h3(new Erb.i6('molecule needs explicit hydrogen atoms for force field calculations'))}this.g=a;this.d=3*a.q;this.e=tX(Drb.LY,Osb,6,this.d,15,1);this.i=tX(Drb.LY,Osb,6,this.d,15,1);this.f=false;this.j=20;for(c=0;c<a.q;c++){this.i[3*c]=a.J[c].a;this.i[3*c+1]=a.J[c].b;this.i[3*c+2]=a.J[c].c}};Z3(238,1,{});_.d=0;_.f=false;_.j=0;_.k=0;Drb.h$=B5(238);Prb.zz=function zz(a,b,c,d,e){this.a=c;this.b=d;this.c=e;this.d=Qrb.$B(a.b,b.a[d]);this.f=Qrb.TB(a.a,b,c,d,e);this.e=Qrb.SB(a.a,b,c,d,e)};Prb.Az=function Az(a,b){var c,d,e,f,g,h;c=new Krb.Yi;for(d=0;d<b.q;d++){if(b.e[d]>1){for(e=0;e<b.e[d];e++){g=b.i[d][e];for(f=e+1;f<b.e[d];f++){h=b.i[d][f];Krb.Ei(c,new Prb.zz(a,b,g,d,h))}}}}return c};Z3(302,1,axb,Prb.zz);_.Db=function Bz(a){var b,c;c=Prb.AB(new Prb.MB(a,this.b,this.a),new Prb.MB(a,this.b,this.c));b=c*bxb-this.f;if(this.d)return 143.9325*this.e*(1+$wnd.Math.cos(c));return cxb*this.e*b*b*(1+-0.006981317*b)};_.Eb=function Cz(a,b){var c,d,e,f,g,h,i,j,k,l;i=Prb.FB(new Prb.MB(a,this.b,this.a));j=Prb.FB(new Prb.MB(a,this.b,this.c));g=Prb.EB(new Prb.MB(a,this.b,this.a));h=Prb.EB(new Prb.MB(a,this.b,this.c));d=(i.a*j.a+i.b*j.b+i.c*j.c)/($wnd.Math.sqrt(i.a*i.a+i.b*i.b+i.c*i.c)*$wnd.Math.sqrt(j.a*j.a+j.b*j.b+j.c*j.c));l=1-d*d;k=dxb;l>0&&(k=$wnd.Math.sqrt(l));c=bxb*$wnd.Math.acos(d)-this.f;f=exb*this.e*c*(1+-0.0104719755*c);this.d&&(f=-143.9325*this.e*k);e=BX(nX(Drb.LY,1),Osb,6,15,[1/g*(j.a-d*i.a),1/g*(j.b-d*i.b),1/g*(j.c-d*i.c),1/h*(i.a-d*j.a),1/h*(i.b-d*j.b),1/h*(i.c-d*j.c)]);b[3*this.a]+=f*e[0]/-k;b[3*this.a+1]+=f*e[1]/-k;b[3*this.a+2]+=f*e[2]/-k;b[3*this.b]+=f*(-e[0]-e[3])/-k;b[3*this.b+1]+=f*(-e[1]-e[4])/-k;b[3*this.b+2]+=f*(-e[2]-e[5])/-k;b[3*this.c]+=f*e[3]/-k;b[3*this.c+1]+=f*e[4]/-k;b[3*this.c+2]+=f*e[5]/-k};_.a=0;_.b=0;_.c=0;_.d=false;_.e=0;_.f=0;Drb.i$=B5(302);Prb.dA=function dA(a){Erb.cA.call(this,a)};Z3(155,26,{155:1,4:1,15:1,26:1,23:1},Prb.dA);Drb.j$=B5(155);Prb.eA=function eA(){Erb.aA.call(this)};Z3(267,26,Csb,Prb.eA);Drb.k$=B5(267);Prb.fA=function fA(a,b,c){Prb.gA.call(this,a,b,b.D[0][c],b.D[1][c])};Prb.gA=function gA(a,b,c,d){this.a=c;this.b=d;this.d=Qrb.mC(a.d,b,c,d);this.c=Qrb.lC(a.d,b,c,d)};Prb.hA=function hA(a,b){var c,d;d=new Krb.Yi;for(c=0;c<b.r;c++)Krb.Ei(d,new Prb.fA(a,b,c));return d};Z3(201,1,axb,Prb.fA);_.Db=function iA(a){var b,c;c=Prb.CB(new Prb.LB(a,this.a),new Prb.LB(a,this.b));b=(c-this.d)*(c-this.d);return 71.96625*this.c*b*(1+-2*(c-this.d)+2.3333333333333335*b)};_.Eb=function jA(a,b){var c,d,e,f;d=Prb.CB(new Prb.LB(a,this.a),new Prb.LB(a,this.b));e=d-this.d;c=143.9325*this.c*e*(1+-3*e+4.666666666666667*e*e);if(d>0){for(f=0;f<3;f++){b[3*this.a+f]+=c*(a[3*this.a+f]-a[3*this.b+f])/d;b[3*this.b+f]-=c*(a[3*this.a+f]-a[3*this.b+f])/d}}};_.a=0;_.b=0;_.c=0;_.d=0;Drb.l$=B5(201);Prb.kA=function kA(b){var c,d,e,f,g,h,i,j;c=null;try{c=new fsb.v4(new fsb.z4(b));i=Erb.V5(Erb.y7(fsb.u4(c)),_ub,xsb);e=Erb.v7(Erb.y7(fsb.u4(c)),',');j=rX(Drb.v0,[ssb,Bsb],[8,1],5,[i,e.length],2);for(g=0;(f=fsb.u4(c))!=null&&g<i;g++){h=Erb.v7(Erb.y7(f),',');for(d=0;d<e.length;d++){switch(Erb.c7(e[d],0)){case 105:xX(j[g],d,Erb.A6(Erb.V5(Erb.y7(h[d]),_ub,xsb)));break;case 102:xX(j[g],d,Hrb.rnb(Erb.U5(Erb.y7(h[d]))));break;case 99:xX(j[g],d,p5(Erb.c7(Erb.t7(Erb.t7(Erb.y7(h[d]),\"'\"),'\"'),0)));}}}return j}catch(a){a=g3(a);if(zY(a,83)){Erb.X7();String.fromCharCode(10)}else throw h3(a)}return rX(Drb.v0,[ssb,Bsb],[8,1],5,[1,1],2)};Prb.lA=function lA(a){var b,c,d,e,f,g;g=Prb.kA(a);f=g.length;b=g[0].length;e=rX(Drb.NY,[lub,Qsb],[7,6],15,[f,b],2);for(c=0;c<f;c++)for(d=0;d<b;d++)e[c][d]=g[c][d].a;return e};Prb.mA=function mA(a,b,c,d,e,f,g){this.a=a;this.b=b;this.e=c;this.d=f;this.c=d*e/g};Prb.nA=function nA(a,b,c,d,e,f){var g,h,i,j,k;h=new Krb.Yi;g=Rrb.zD(a,b);for(i=0;i<b.q;i++){for(j=0;j<i+1;j++){k=Prb.WA(c,new Prb.fB(i,j));(k==(Prb.bB(),Prb.YA)||k==Prb.aB)&&$wnd.Math.abs(g[i])>fxb&&$wnd.Math.abs(g[j])>fxb&&Prb.EB(new Prb.JB(b,i,j))<d&&Krb.Ei(h,new Prb.mA(i,j,k,g[i],g[j],e,f))}}return h};Z3(303,1,axb,Prb.mA);_.Db=function oA(a){var b,c;c=Prb.EB(new Prb.MB(a,this.a,this.b));b=c+0.05;this.d&&(b*=b);return 332.0716*this.c/b*(this.e==(Prb.bB(),Prb.YA)?0.75:1)};_.Eb=function pA(a,b){var c,d,e,f,g;f=Prb.EB(new Prb.MB(a,this.a,this.b));c=f+0.05;c*=this.d?c*c:c;d=-332.0716*(this.d?2:1)*this.c/c*(this.e==(Prb.bB(),Prb.YA)?0.75:1);for(g=0;g<3;g++){e=0.02;f>0&&(e=d*(a[3*this.a+g]-a[3*this.b+g])/f);b[3*this.a+g]+=e;b[3*this.b+g]-=e}};_.a=0;_.b=0;_.c=0;_.d=false;Drb.m$=B5(303);Prb.rA=function rA(){Prb.rA=_3;Prb.qA=new Krb.thb};Prb.sA=function sA(a){a.a=new Krb.Yi};Prb.tA=function tA(a){return Prb.uA(a,a.i)};Prb.uA=function uA(a,b){var c,d,e;e=0;for(d=new Krb.ueb(a.a);d.a<d.c.a.length;){c=Krb.teb(d);e+=c.Db(b)}return e};Prb.vA=function vA(a){var b,c,d,e,f,g;a.e=tX(Drb.LY,Osb,6,a.d,15,1);for(c=new Krb.ueb(a.a);c.a<c.c.a.length;){b=Krb.teb(c);b.Eb(a.i,a.e)}g=-100000000;d=0.1;for(f=0;f<a.d;f++){a.e[f]*=d;a.e[f]>g&&(g=a.e[f])}if(g>10){while(g*d>10)d*=0.5;for(e=0;e<a.d;e++)a.e[e]*=d}return d};Prb.wA=function wA(a){Prb.rA();Prb.xA.call(this,a,gxb,new Krb.thb)};Prb.xA=function xA(a,b,c){Prb.rA();var d,e,f,g,h;Orb.yz.call(this,a);Prb.sA(this);this.b=new Prb.zA(a);Jrb.ou(this.g,7);h=Krb.ubb(Prb.qA,b);f=Krb._hb(c.c,hxb)?Erb.$5(Krb.aib(c.c,hxb)):100;d=Krb._hb(c.c,ixb)?Erb.$5(Krb.aib(c.c,ixb)):1;e=Krb._hb(c.c,jxb)&&Erb.Lc(Krb.aib(c.c,jxb),'distance');g=new Prb.XA(this.b);(!Krb._hb(c.c,kxb)||Erb.R4(Krb.aib(c.c,kxb)))&&Krb.Gi(this.a,Prb.Az(h,this.b));(!Krb._hb(c.c,lxb)||Erb.R4(Krb.aib(c.c,lxb)))&&Krb.Gi(this.a,Prb.hA(h,this.b));(!Krb._hb(c.c,mxb)||Erb.R4(Krb.aib(c.c,mxb)))&&Krb.Gi(this.a,Prb.nA(h,this.b,g,f,e,d));(!Krb._hb(c.c,nxb)||Erb.R4(Krb.aib(c.c,nxb)))&&Krb.Gi(this.a,Prb.BA(h,this.b));(!Krb._hb(c.c,oxb)||Erb.R4(Krb.aib(c.c,oxb)))&&Krb.Gi(this.a,Prb.lB(h,this.b));(!Krb._hb(c.c,pxb)||Erb.R4(Krb.aib(c.c,pxb)))&&Krb.Gi(this.a,Prb.rB(h,this.b));(!Krb._hb(c.c,qxb)||Erb.R4(Krb.aib(c.c,qxb)))&&Krb.Gi(this.a,Prb.xB(h,this.b,g,f))};Prb.yA=function yA(a,b){Prb.rA();Krb.vbb(Prb.qA,a)||Krb.xbb(Prb.qA,a,b)};Z3(144,238,{},Prb.wA,Prb.xA);Drb.n$=B5(144);Prb.zA=function zA(a){Jrb.Ej();var b,c,d,e,f;Jrb.Iu.call(this,a);Jrb.Sn(this,Jrb.qn(this));f=(Jrb.ou(this,7),this.p);this.b=tX(Drb.q$,Qsb,6,f.i.a.length,15,1);Krb.Ieb(this.b);b=false;c=true;while(!b&&c){b=true;c=false;for(e=0;e<f.i.a.length;e++){if(this.b[e]==2){this.b[e]=Rrb.wD(this,e);this.b[e]!=2&&(c=true)}this.b[e]==2&&(b=false)}}if(!b)throw h3(new Prb.eA);this.a=tX(Drb.NY,Qsb,6,this.q,15,1);for(d=0;d<this.a.length;d++){this.a[d]=-1;this.a[d]=Rrb.qD(this,d);if(this.a[d]==0)throw h3(new Prb.dA(\"Couldn't assign an atom type to atom \"+d+' ('+Jrb.yj[this.C[d]]+')'))}};Z3(239,27,Avb,Prb.zA);Drb.o$=B5(239);Prb.AA=function AA(a,b,c,d,e,f){this.d=c;this.a=d;this.b=e;this.c=f;this.e=Qrb.NC(a.k,b,c,d,e,f)};Prb.BA=function BA(a,b){var c,d,e,f,g;g=new Krb.Yi;for(f=0;f<b.q;f++){if(b.e[f]!=3)continue;c=b.i[f][0];d=b.i[f][1];e=b.i[f][2];Krb.Ei(g,new Prb.AA(a,b,f,c,d,e));Krb.Ei(g,new Prb.AA(a,b,f,c,e,d));Krb.Ei(g,new Prb.AA(a,b,f,d,e,c))}return g};Z3(163,1,axb,Prb.AA);_.Db=function CA(a){var b,c,d,e,f;d=Prb.FB(new Prb.MB(a,this.d,this.a));e=Prb.FB(new Prb.MB(a,this.d,this.b));f=Prb.FB(new Prb.MB(a,this.d,this.c));c=Prb.FB(new Prb.HB(d.b*e.c-d.c*e.b,d.c*e.a-d.a*e.c,d.a*e.b-d.b*e.a));b=bxb*$wnd.Math.asin(c.a*f.a+c.b*f.b+c.c*f.c);return cxb*this.e*b*b};_.Eb=function DA(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;m=new Prb.MB(a,this.d,this.a);n=new Prb.MB(a,this.d,this.b);o=new Prb.MB(a,this.d,this.c);h=$wnd.Math.sqrt(m.a*m.a+m.b*m.b+m.c*m.c);i=$wnd.Math.sqrt(n.a*n.a+n.b*n.b+n.c*n.c);j=$wnd.Math.sqrt(o.a*o.a+o.b*o.b+o.c*o.c);m=Prb.FB(m);n=Prb.FB(n);o=Prb.FB(o);l=Prb.FB(Prb.BB(new Prb.HB(-m.a,-m.b,-m.c),n));p=o.a*l.a+o.b*l.b+o.c*l.c;e=1-p*p;d=$wnd.Math.max(e>0?$wnd.Math.sqrt(e):0,dxb);c=bxb*$wnd.Math.asin(p);f=m.a*n.a+m.b*n.b+m.c*n.c;r=$wnd.Math.max(1-f*f,dxb);q=$wnd.Math.max(r>0?$wnd.Math.sqrt(r):0,dxb);g=exb*this.e*c;s=new Prb.HB(o.b*n.c-o.c*n.b,o.c*n.a-o.a*n.c,o.a*n.b-o.b*n.a);t=new Prb.HB(m.b*o.c-m.c*o.b,m.c*o.a-m.a*o.c,m.a*o.b-m.b*o.a);u=new Prb.HB(n.b*m.c-n.c*m.b,n.c*m.a-n.a*m.c,n.a*m.b-n.b*m.a);v=d*q;w=p/(d*r);A=BX(nX(Drb.LY,1),Osb,6,15,[(s.a/v-(m.a-n.a*f)*w)/h,(s.b/v-(m.b-n.b*f)*w)/h,(s.c/v-(m.c-n.c*f)*w)/h]);B=BX(nX(Drb.LY,1),Osb,6,15,[(t.a/v-(n.a-m.a*f)*w)/i,(t.b/v-(n.b-m.b*f)*w)/i,(t.c/v-(n.c-m.c*f)*w)/i]);C=BX(nX(Drb.LY,1),Osb,6,15,[(u.a/v-o.a*p/d)/j,(u.b/v-o.b*p/d)/j,(u.c/v-o.c*p/d)/j]);for(k=0;k<3;k++){b[3*this.a+k]+=g*A[k];b[3*this.d+k]+=-g*(A[k]+B[k]+C[k]);b[3*this.b+k]+=g*B[k];b[3*this.c+k]+=g*C[k]}};_.a=0;_.b=0;_.c=0;_.d=0;_.e=0;Drb.p$=B5(163);Prb.EA=function EA(a){if(a<3)return 0;else if(a<11)return 1;else if(a<19)return 2;else if(a<37)return 3;else if(a<55)return 4;return 0};Prb.FA=function FA(a){var b;b=0;a==2?(b=1):a>=3&&a<=10?(b=2):a>=11&&a<=18?(b=3):a>=19&&a<=36?(b=4):a>=37&&a<=54&&(b=5);(a>=21&&a<=30||a>=39&&a<=48)&&(b*=10);return b};Erb.GA=function GA(a,b){return a.b-b.b};Erb.HA=function HA(a){return a.a!=null?a.a:''+a.b};Erb.IA=function IA(a){return a.b};function JA(a,b){this.a=a;this.b=b}\nZ3(49,1,{4:1,28:1,49:1});_.rb=function LA(a){return Erb.GA(this,a)};_.compareTo=function KA(a){return Erb.GA(this,a)};_.equals=function MA(a){return this===a};_.jb=function(a){return this.equals(a)};_.hashCode=function NA(){return Hrb.$mb(this)};_.lb=function(){return this.hashCode()};_.name=function OA(){return Erb.HA(this)};_.ordinal=function PA(){return Erb.IA(this)};_.toString=function QA(){return this.a!=null?this.a:''+this.b};_.mb=function(){return this.toString()};_.b=0;Drb.j0=B5(49);Prb.RA=function RA(){return BX(nX(Drb.q$,1),Qsb,6,15,[0,1,2])};Drb.q$=C5(null,Prb.RA);Prb.SA=function SA(a,b,c,d,e,f){var g,h,i,j;c=$wnd.Math.max(0,c);d=$wnd.Math.min(f.Mb(),d);g=(d-c)/2|0;i=c;h=d;if(f.Lb(i,a)>b||f.Lb(h-1,a)<b)return -1;while(d>=c){g=c+((d-c)/2|0);j=f.Lb(g,a);if(j==b){if(e&&g>i&&f.Lb(g-1,a)==b)d=g;else if(!e&&g<h-1&&f.Lb(g+1,a)==b)c=g;else return g}else j>b?(d=g):j<b&&(c=g);if(d-c==1&&f.Lb(c,a)<b&&f.Lb(d,a)>b)break}return -1};Prb.TA=function TA(a,b){return Prb.SA(0,a,0,b.a.length,true,b)};Prb.UA=function UA(a,b,c){var d,e,f;if(a.length!=b.length)return -1;f=0;d=c.Mb();for(e=0;e<a.length-1;e++){f=Prb.SA(a[e],b[e],f,d+1,true,c);d=Prb.SA(a[e],b[e],f,d+1,false,c);if(f==-1||d==-1)return -1}return Prb.SA(a[e],b[e],f,d+1,true,c)};Prb.VA=function VA(a){a.a=new Krb.thb};Prb.WA=function WA(a,b){return Krb.tbb(a.a,b)!=null?Krb.tbb(a.a,b):(Prb.bB(),Prb.aB)};Prb.XA=function XA(a){var b,c,d,e,f,g,h,i,j,k;Prb.VA(this);for(b=0;b<a.q;b++){Krb.wbb(this.a,new Prb.fB(b,b),(Prb.bB(),Prb.ZA));for(c=0;c<a.e[b];c++){i=a.i[b][c];h=new Prb.fB(b,i);Krb.wbb(this.a,h,Prb._A);for(d=0;d<a.e[i];d++){j=a.i[i][d];g=new Prb.fB(b,j);(!Krb.pbb(this.a,g)||HY(Krb.tbb(this.a,g))===HY(Prb.YA))&&Krb.wbb(this.a,g,Prb.$A);for(e=0;e<a.e[j];e++){k=a.i[j][e];f=new Prb.fB(b,k);Krb.pbb(this.a,f)||Krb.wbb(this.a,f,Prb.YA)}}}}};Z3(240,1,{},Prb.XA);Drb.s$=B5(240);Prb.bB=function bB(){Prb.bB=_3;Prb.ZA=new Prb.cB('ONE_ONE',0);Prb._A=new Prb.cB('ONE_TWO',1);Prb.$A=new Prb.cB('ONE_THREE',2);Prb.YA=new Prb.cB('ONE_FOUR',3);Prb.aB=new Prb.cB('ONE_X',4)};Prb.cB=function cB(a,b){JA.call(this,a,b)};Prb.dB=function dB(){Prb.bB();return BX(nX(Drb.r$,1),xub,91,0,[Prb.ZA,Prb._A,Prb.$A,Prb.YA,Prb.aB])};Z3(91,49,{91:1,4:1,28:1,49:1},Prb.cB);Drb.r$=C5(91,Prb.dB);Prb.eB=function eB(a,b){if(a.a>b.a)return 1;if(a.a<b.a)return -1;if(a.b>b.b)return 1;if(a.b<b.b)return -1;return 0};Prb.fB=function fB(a,b){this.a=a>b?a:b;this.b=a>b?b:a};Z3(81,1,{81:1,28:1},Prb.fB);_.rb=function gB(a){return Prb.eB(this,a)};_.jb=function hB(a){var b;if(a===this)return true;if(!zY(a,81))return false;b=a;return this.a==b.a&&this.b==b.b};_.lb=function iB(){return (new Erb.o6(this.a)).a^(new Erb.o6(this.b)).a};_.mb=function jB(){return this.a+','+this.b};_.a=0;_.b=0;Drb.t$=B5(81);Prb.kB=function kB(a,b,c,d,e){this.a=c;this.b=d;this.c=e;this.i=Qrb.TB(a.a,b,c,d,e);this.f=Qrb.mC(a.d,b,c,d);this.g=Qrb.mC(a.d,b,e,d);this.d=Qrb.SC(a.n,b,c,d,e);this.e=Qrb.SC(a.n,b,e,d,c)};Prb.lB=function lB(a,b){var c,d,e,f,g,h,i,j;j=new Krb.Yi;for(c=0;c<b.q;c++){d=b.a[c];if(b.e[c]<=1&&Qrb.$B(a.b,d))continue;for(f=0;f<b.e[c];f++){h=b.i[c][f];for(g=0;g<b.e[c];g++){i=b.i[c][g];if(h>i)continue;if(Prb.oB(a,b,h,c,i)){e=new Prb.kB(a,b,h,c,i);($wnd.Math.abs(e.d)>_wb||$wnd.Math.abs(e.e)>_wb)&&(Hrb.Kmb(j.a,e),true)}}}}return j};Prb.oB=function oB(a,b,c,d,e){var f;f=b.a[d];if(Qrb.$B(a.b,f)||c==e)return false;if(Jrb.Dn(b,c,d)==-1||Jrb.Dn(b,d,e)==-1)return false;return true};Z3(304,1,axb,Prb.kB);_.Db=function mB(a){var b,c,d,e;b=Prb.EB(new Prb.MB(a,this.b,this.a));c=Prb.EB(new Prb.MB(a,this.b,this.c));e=Prb.AB(new Prb.MB(a,this.b,this.a),new Prb.MB(a,this.b,this.c));d=exb*(e*bxb-this.i);return d*(b-this.f)*this.d+d*(c-this.g)*this.e};_.Eb=function nB(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;k=Prb.EB(new Prb.MB(a,this.b,this.a));l=Prb.EB(new Prb.MB(a,this.b,this.c));n=Prb.FB(new Prb.MB(a,this.b,this.a));o=Prb.FB(new Prb.MB(a,this.b,this.c));d=n.a*o.a+n.b*o.b+n.c*o.c;q=1-d*d;p=$wnd.Math.max(q>0?$wnd.Math.sqrt(q):0,dxb);c=bxb*$wnd.Math.acos(d)-this.i;m=bxb*(this.d*(k-this.f)+this.e*(l-this.g));e=1/k*(o.a-d*n.a);f=1/k*(o.b-d*n.b);g=1/k*(o.c-d*n.c);h=1/l*(n.a-d*o.a);i=1/l*(n.b-d*o.b);j=1/l*(n.c-d*o.c);b[3*this.a]+=exb*(n.a*this.d*c+e/-p*m);b[3*this.a+1]+=exb*(n.b*this.d*c+f/-p*m);b[3*this.a+2]+=exb*(n.c*this.d*c+g/-p*m);b[3*this.b]+=exb*((-n.a*this.d-o.a*this.e)*c+(-e-h)/-p*m);b[3*this.b+1]+=exb*((-n.b*this.d-o.b*this.e)*c+(-f-i)/-p*m);b[3*this.b+2]+=exb*((-n.c*this.d-o.c*this.e)*c+(-g-j)/-p*m);b[3*this.c]+=exb*(o.a*this.e*c+h/-p*m);b[3*this.c+1]+=exb*(o.b*this.e*c+i/-p*m);b[3*this.c+2]+=exb*(o.c*this.e*c+j/-p*m)};_.a=0;_.b=0;_.c=0;_.d=0;_.e=0;_.f=0;_.g=0;_.i=0;Drb.u$=B5(304);Prb.pB=function pB(a,b){this.a=new Qrb.UB(this);this.e=new Qrb.tC;this.b=new Qrb.dC;this.c=new Qrb.iC;this.d=new Qrb.nC(this);this.f=new Qrb.AC;this.i=new Qrb.GC;this.g=new Qrb.DC;this.j=new Qrb.KC;this.k=new Qrb.OC(this,a);this.n=new Qrb.TC(this);this.o=new Qrb.XC(this,b);this.p=new Qrb.iD};Z3(131,1,{131:1},Prb.pB);Drb.v$=B5(131);Prb.qB=function qB(a,b,c,d,e,f){var g;this.a=c;this.b=d;this.c=e;this.d=f;g=Qrb.WC(a.o,b,c,d,e,f);this.e=g.a;this.f=g.b;this.g=g.c};Prb.rB=function rB(a,b){var c,d,e,f,g,h,i,j,k;k=new Krb.Yi;for(c=0;c<b.q;c++){for(g=0;g<b.e[c];g++){d=b.i[c][g];for(h=0;h<b.e[d];h++){e=b.i[d][h];if(c==e)continue;for(i=0;i<b.e[e];i++){f=b.i[e][i];if(d==f||c==f)continue;if(f>c){j=new Prb.qB(a,b,c,d,e,f);($wnd.Math.abs(j.e)>0.001||$wnd.Math.abs(j.f)>0.001||$wnd.Math.abs(j.g)>0.001)&&(Hrb.Kmb(k.a,j),true)}}}}}return k};Z3(305,1,axb,Prb.qB);_.Db=function sB(a){var b,c,d,e,f,g,h,i,j;e=new Prb.MB(a,this.a,this.b);f=new Prb.MB(a,this.c,this.b);g=new Prb.MB(a,this.b,this.c);h=new Prb.MB(a,this.d,this.c);i=new Prb.HB(e.b*f.c-e.c*f.b,e.c*f.a-e.a*f.c,e.a*f.b-e.b*f.a);j=new Prb.HB(g.b*h.c-g.c*h.b,g.c*h.a-g.a*h.c,g.a*h.b-g.b*h.a);d=(i.a*j.a+i.b*j.b+i.c*j.c)/($wnd.Math.sqrt(i.a*i.a+i.b*i.b+i.c*i.c)*$wnd.Math.sqrt(j.a*j.a+j.b*j.b+j.c*j.c));b=2*d*d-1;c=d*(2*b-1);return 0.5*(this.e*(1+d)+this.f*(1-b)+this.g*(1+c))};_.Eb=function tB(a,b){var c,d,e,f,g,h,i,j,k,l,m;g=BX(nX(Drb.y$,1),Bsb,20,0,[new Prb.MB(a,this.b,this.a),new Prb.MB(a,this.b,this.c),new Prb.MB(a,this.c,this.b),new Prb.MB(a,this.c,this.d)]);m=BX(nX(Drb.y$,1),Bsb,20,0,[Prb.BB(g[0],g[1]),Prb.BB(g[2],g[3])]);d=BX(nX(Drb.LY,1),Osb,6,15,[Prb.EB(m[0]),Prb.EB(m[1])]);if($wnd.Math.abs(d[0])<fxb||$wnd.Math.abs(d[1])<fxb)return;m[0]=Prb.FB(m[0]);m[1]=Prb.FB(m[1]);c=Prb.DB(m[0],m[1]);k=1-c*c;j=k>0?$wnd.Math.sqrt(k):0;h=2*j*c;i=3*j-4*j*k;f=0.5*(-this.e*j+2*this.f*h-3*this.g*i);l=-f*($wnd.Math.abs(j)<fxb?1/c:1/j);e=BX(nX(Drb.LY,1),Osb,6,15,[1/d[0]*(m[1].a-c*m[0].a),1/d[0]*(m[1].b-c*m[0].b),1/d[0]*(m[1].c-c*m[0].c),1/d[1]*(m[0].a-c*m[1].a),1/d[1]*(m[0].b-c*m[1].b),1/d[1]*(m[0].c-c*m[1].c)]);b[3*this.a]+=l*(e[2]*g[1].b-e[1]*g[1].c);b[3*this.a+1]+=l*(e[0]*g[1].c-e[2]*g[1].a);b[3*this.a+2]+=l*(e[1]*g[1].a-e[0]*g[1].b);b[3*this.b]+=l*(e[1]*(g[1].c-g[0].c)+e[2]*(g[0].b-g[1].b)+e[4]*-g[3].c+e[5]*g[3].b);b[3*this.b+1]+=l*(e[0]*(g[0].c-g[1].c)+e[2]*(g[1].a-g[0].a)+e[3]*g[3].c+e[5]*-g[3].a);b[3*this.b+2]+=l*(e[0]*(g[1].b-g[0].b)+e[1]*(g[0].a-g[1].a)+e[3]*-g[3].b+e[4]*g[3].a);b[3*this.c]+=l*(e[1]*g[0].c+e[2]*-g[0].b+e[4]*(g[3].c-g[2].c)+e[5]*(g[2].b-g[3].b));b[3*this.c+1]+=l*(e[0]*-g[0].c+e[2]*g[0].a+e[3]*(g[2].c-g[3].c)+e[5]*(g[3].a-g[2].a));b[3*this.c+2]+=l*(e[0]*g[0].b+e[1]*-g[0].a+e[3]*(g[3].b-g[2].b)+e[4]*(g[2].a-g[3].a));b[3*this.d]+=l*(e[4]*g[2].c-e[5]*g[2].b);b[3*this.d+1]+=l*(e[5]*g[2].a-e[3]*g[2].c);b[3*this.d+2]+=l*(e[3]*g[2].b-e[4]*g[2].a)};_.a=0;_.b=0;_.c=0;_.d=0;_.e=0;_.f=0;_.g=0;Drb.w$=B5(305);Prb.uB=function uB(a,b){var c,d,e,f,g;f=Qrb.hD(b.p,a.b);g=Qrb.hD(b.p,a.d);c=Qrb.dD(b.p,a.b);d=Qrb.dD(b.p,a.d);e=(f-g)/(f+g);return 0.5*(f+g)*(1+(c==68||d==68?0:0.2*(1-$wnd.Math.exp(-12*e*e))))};Prb.vB=function vB(a,b,c){var d,e,f,g,h,i,j;f=Qrb.eD(b.p,a.b);g=Qrb.eD(b.p,a.d);d=Qrb.cD(b.p,a.b);e=Qrb.cD(b.p,a.d);h=Qrb.gD(b.p,a.b);i=Qrb.gD(b.p,a.d);j=c*c;return 181.16*f*g*d*e/(($wnd.Math.sqrt(d/h)+$wnd.Math.sqrt(e/i))*j*j*j)};Prb.wB=function wB(a,b,c,d){var e,f;this.b=b.a[c];this.d=b.a[d];this.a=c;this.c=d;e=Prb.uB(this,a);f=Prb.vB(this,a,e);this.e=Qrb.dD(a.p,this.b);this.f=Qrb.dD(a.p,this.d);if(this.e==68&&this.f==65||this.e==65&&this.f==68){e=e*0.8;f*=0.5}this.g=e;this.i=f};Prb.xB=function xB(a,b,c,d){var e,f,g,h,i;i=new Krb.Yi;for(f=0;f<b.q;f++){for(g=f+1;g<b.q;g++){e=new Prb.fB(f,g);h=Krb.tbb(c.a,e)!=null?Krb.tbb(c.a,e):(Prb.bB(),Prb.aB);(h==(Prb.bB(),Prb.YA)||h==Prb.aB)&&Prb.EB(new Prb.JB(b,f,g))<d&&Krb.Ei(i,new Prb.wB(a,b,f,g))}}return i};Z3(306,1,axb,Prb.wB);_.Db=function yB(a){var b,c,d,e,f,g,h,i,j;f=Prb.EB(new Prb.MB(a,this.a,this.c));g=f*f;h=g*g*g*f;b=1.07*this.g/(f+rxb*this.g);c=b*b;d=c*c*c*b;i=this.g*this.g;j=i*i*i*this.g;e=1.12*j/(h+sxb*j)-2;return d*e*this.i};_.Eb=function zB(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;e=Prb.EB(new Prb.MB(a,this.a,this.c));g=e/this.g;h=g*g;i=h*h*h;j=i*g;k=j+sxb;l=1.07/(g+1.07-1);m=l*l;n=m*m*m*l;c=this.i/this.g*n*(txb*i/(k*k)+(txb/k+14)/(g+rxb));for(f=0;f<3;f++){d=0.01*this.g;e>0&&(d=c*(a[3*this.a+f]-a[3*this.c+f])/e);b[3*this.a+f]+=d;b[3*this.c+f]-=d}};_.a=0;_.b=0;_.c=0;_.d=0;_.e=0;_.f=0;_.g=0;_.i=0;Drb.x$=B5(306);Prb.AB=function AB(a,b){return $wnd.Math.acos((a.a*b.a+a.b*b.b+a.c*b.c)/($wnd.Math.sqrt(a.a*a.a+a.b*a.b+a.c*a.c)*$wnd.Math.sqrt(b.a*b.a+b.b*b.b+b.c*b.c)))};Prb.BB=function BB(a,b){return new Prb.HB(a.b*b.c-a.c*b.b,a.c*b.a-a.a*b.c,a.a*b.b-a.b*b.a)};Prb.CB=function CB(a,b){return $wnd.Math.sqrt((a.a-b.a)*(a.a-b.a)+(a.b-b.b)*(a.b-b.b)+(a.c-b.c)*(a.c-b.c))};Prb.DB=function DB(a,b){return a.a*b.a+a.b*b.b+a.c*b.c};Prb.EB=function EB(a){return $wnd.Math.sqrt(a.a*a.a+a.b*a.b+a.c*a.c)};Prb.FB=function FB(a){if($wnd.Math.sqrt(a.a*a.a+a.b*a.b+a.c*a.c)>0)return new Prb.HB(a.a/$wnd.Math.sqrt(a.a*a.a+a.b*a.b+a.c*a.c),a.b/$wnd.Math.sqrt(a.a*a.a+a.b*a.b+a.c*a.c),a.c/$wnd.Math.sqrt(a.a*a.a+a.b*a.b+a.c*a.c));return new Prb.HB(0,0,0)};Prb.GB=function GB(a,b){return new Prb.HB(b.a-a.a,b.b-a.b,b.c-a.c)};Prb.HB=function HB(a,b,c){this.a=a;this.b=b;this.c=c};Prb.IB=function IB(a,b){this.a=a.J[b].a;this.b=a.J[b].b;this.c=a.J[b].c};Prb.JB=function JB(a,b,c){Prb.KB.call(this,Prb.GB(new Prb.IB(a,b),new Prb.IB(a,c)))};Prb.KB=function KB(a){this.a=a.a;this.b=a.b;this.c=a.c};Prb.LB=function LB(a,b){this.a=a[3*b];this.b=a[3*b+1];this.c=a[3*b+2]};Prb.MB=function MB(a,b,c){Prb.KB.call(this,Prb.GB(new Prb.LB(a,b),new Prb.LB(a,c)))};Z3(20,1,{20:1},Prb.HB,Prb.IB,Prb.JB,Prb.LB,Prb.MB);_.jb=function NB(a){var b;if(a===this)return true;if(!zY(a,20))return false;b=a;return $wnd.Math.abs(this.a-b.a)<0.01&&$wnd.Math.abs(this.b-b.b)<0.01&&$wnd.Math.abs(this.c-b.c)<0.01};_.lb=function OB(){return Erb.b6(Hrb.rnb(this.a))+Erb.b6(Hrb.rnb(this.b))+Erb.b6(Hrb.rnb(this.c))};_.a=0;_.b=0;_.c=0;Drb.y$=B5(20);Qrb.PB=function PB(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o;o=BX(nX(Drb.LY,1),Osb,6,15,[0,0,0]);j=BX(nX(Drb.LY,1),Osb,6,15,[0,0,0]);h=BX(nX(Drb.NY,1),Qsb,6,15,[b.C[c],b.C[d],b.C[e]]);i=1.75;for(k=0;k<3;k++){switch(h[k]){case 1:o[k]=1.395;break;case 6:o[k]=2.494;j[k]=1.016;break;case 7:o[k]=2.711;j[k]=1.113;break;case 8:o[k]=3.045;j[k]=1.337;break;case 9:o[k]=2.847;break;case 14:o[k]=2.35;j[k]=0.811;break;case 15:o[k]=2.35;j[k]=1.068;break;case 16:o[k]=2.98;j[k]=1.249;break;case 17:o[k]=2.909;j[k]=1.078;break;case 35:o[k]=3.017;break;case 53:o[k]=3.086;}}l=Qrb.mC(a.a.d,b,c,d);m=Qrb.mC(a.a.d,b,d,e);g=(l-m)*(l-m)/((l+m)*(l+m));n=Zwb*f;Rrb.nD(b,c,d,e,4)?(i*=0.85):Rrb.nD(b,c,d,e,3)&&(i*=0.05);return i*o[0]*j[1]*o[2]/((l+m)*n*n*$wnd.Math.exp(2*g))};Qrb.QB=function QB(a,b,c,d,e){var f;if(Rrb.nD(b,c,d,e,3))return 60;else if(Rrb.nD(b,c,d,e,4))return 90;f=b.a[d];switch(Qrb.YB(a.a.b,f)){case 2:if(b.C[d]==8)return 105;else if(Qrb.$B(a.a.b,f))return 180;break;case 3:if(Qrb.cC(a.a.b,f)==3&&Qrb._B(a.a.b,f)==0){return b.C[d]==7?107:92}break;case 4:return 109.45;}return 120};Qrb.RB=function RB(a,b,c,d,e){var f,g,h,i,j,k,l,m,n;f=b.a[c];h=b.a[d];i=b.a[e];k=Rrb.mD(a.a,b,c,d,e);m=-1;for(l=0;l<5&&m<0;l++){g=a.a.g.a[f-1][l];j=a.a.g.a[i-1][l];g>j&&(g=(n=Erb.A6(j),Erb.A6(j=g),n).a);m=Prb.UA(BX(nX(Drb.NY,1),Qsb,6,15,[2,1,3,0]),BX(nX(Drb.NY,1),Qsb,6,15,[h,g,j,k]),a)}return m};Qrb.SB=function SB(a,b,c,d,e){var f;f=Qrb.RB(a,b,c,d,e);return f<0?Qrb.PB(a,b,c,d,e,Qrb.QB(a,b,c,d,e)):$wnd.Math.abs(Erb.W5(a.b[f][4]))<0.001?Qrb.PB(a,b,c,d,e,Erb.W5(a.b[f][5])):Erb.W5(a.b[f][4])};Qrb.TB=function TB(a,b,c,d,e){var f;f=Qrb.RB(a,b,c,d,e);return f<0?Qrb.QB(a,b,c,d,e):Erb.W5(a.b[f][5])};\nQrb.UB=function UB(a){this.b=Prb.kA('2342\\nint,int,int,int,float,float\\n0,0,1,0,0.000,108.900\\n0,1,1,1,0.851,109.608\\n0,1,1,2,0.736,109.445\\n0,1,1,3,0.777,107.517\\n0,1,1,4,1.006,110.265\\n0,1,1,5,0.636,110.549\\n0,1,1,6,0.992,108.133\\n0,1,1,8,0.777,108.290\\n0,1,1,9,1.136,108.194\\n0,1,1,10,1.050,109.960\\n0,1,1,11,1.225,108.313\\n0,1,1,12,1.056,108.679\\n0,1,1,13,1.078,106.820\\n0,1,1,14,0.980,109.945\\n0,1,1,15,0.743,107.397\\n0,1,1,17,1.089,108.578\\n0,1,1,18,1.093,109.315\\n0,1,1,19,0.755,115.436\\n0,1,1,20,1.021,108.659\\n0,1,1,22,1.001,110.125\\n0,1,1,25,0.803,112.356\\n0,1,1,26,0.833,109.879\\n0,1,1,34,1.179,106.493\\n0,1,1,37,0.756,108.617\\n0,1,1,39,0.927,109.170\\n0,1,1,40,1.130,108.678\\n0,1,1,41,0.330,98.422\\n0,1,1,43,1.135,108.019\\n0,1,1,45,1.197,105.028\\n0,1,1,54,1.173,106.424\\n0,1,1,55,1.150,107.604\\n0,1,1,56,1.199,110.371\\n0,1,1,57,1.012,109.900\\n0,1,1,58,1.179,106.327\\n0,1,1,61,1.125,109.311\\n0,1,1,63,1.006,110.058\\n0,1,1,64,0.988,111.064\\n0,1,1,67,1.216,104.557\\n0,1,1,68,1.018,107.195\\n0,1,1,73,1.160,104.658\\n0,1,1,78,1.012,109.850\\n0,1,1,80,0.947,113.327\\n0,1,1,81,1.108,109.837\\n0,2,1,2,1.113,111.453\\n0,2,1,3,0.667,104.829\\n0,2,1,4,1.022,109.873\\n0,2,1,5,0.632,110.292\\n0,2,1,6,1.074,108.699\\n0,2,1,8,0.884,111.553\\n0,2,1,9,1.118,109.577\\n0,2,1,10,1.160,107.963\\n0,2,1,11,1.192,110.419\\n0,2,1,12,1.070,109.410\\n0,2,1,15,1.078,109.560\\n0,2,1,17,1.077,109.434\\n0,2,1,18,1.188,105.110\\n0,2,1,20,1.053,107.448\\n0,2,1,22,0.942,114.020\\n0,2,1,25,0.893,106.815\\n0,2,1,26,1.029,99.065\\n0,2,1,34,1.066,111.817\\n0,2,1,37,0.985,111.446\\n0,2,1,39,1.124,109.513\\n0,2,1,40,1.149,108.270\\n0,2,1,45,1.232,103.978\\n0,2,1,63,0.935,114.692\\n0,2,1,67,1.224,104.687\\n0,3,1,3,0.974,111.746\\n0,3,1,4,1.019,109.850\\n0,3,1,5,0.650,108.385\\n0,3,1,6,0.528,104.112\\n0,3,1,8,1.197,105.837\\n0,3,1,9,1.201,105.535\\n0,3,1,10,0.634,102.655\\n0,3,1,11,1.189,110.328\\n0,3,1,12,1.136,106.064\\n0,3,1,13,1.147,103.645\\n0,3,1,14,1.048,106.404\\n0,3,1,15,1.125,107.192\\n0,3,1,17,1.092,108.602\\n0,3,1,18,1.120,108.119\\n0,3,1,20,0.969,111.830\\n0,3,1,22,0.999,110.522\\n0,3,1,26,0.742,116.555\\n0,3,1,34,1.141,107.871\\n0,3,1,37,1.011,109.833\\n0,3,1,39,1.136,108.751\\n0,3,1,40,1.174,106.941\\n0,3,1,41,1.033,108.216\\n0,3,1,45,1.221,104.281\\n0,3,1,63,1.069,107.077\\n0,3,1,64,1.028,109.186\\n0,3,1,81,1.167,107.327\\n0,4,1,4,0.954,114.186\\n0,4,1,5,0.615,111.417\\n0,4,1,6,1.273,109.977\\n0,4,1,8,1.099,111.063\\n0,4,1,9,1.187,106.750\\n0,4,1,10,1.117,110.488\\n0,4,1,13,1.021,110.047\\n0,4,1,15,1.028,112.432\\n0,4,1,18,1.187,105.351\\n0,4,1,22,1.174,102.556\\n0,4,1,26,0.853,108.999\\n0,4,1,34,1.148,108.160\\n0,4,1,37,0.993,111.424\\n0,5,1,5,0.516,108.836\\n0,5,1,6,0.781,108.577\\n0,5,1,8,0.653,110.297\\n0,5,1,9,0.733,109.894\\n0,5,1,10,0.740,107.646\\n0,5,1,11,0.875,107.897\\n0,5,1,12,0.698,108.162\\n0,5,1,13,0.613,106.049\\n0,5,1,14,0.508,113.019\\n0,5,1,15,0.576,109.609\\n0,5,1,17,0.634,107.944\\n0,5,1,18,0.663,106.855\\n0,5,1,19,0.450,113.195\\n0,5,1,20,0.706,111.000\\n0,5,1,22,0.618,110.380\\n0,5,1,25,0.487,109.486\\n0,5,1,26,0.466,111.172\\n0,5,1,34,0.872,106.224\\n0,5,1,35,0.644,125.663\\n0,5,1,37,0.627,109.491\\n0,5,1,39,0.811,106.299\\n0,5,1,40,0.719,109.870\\n0,5,1,41,0.525,108.904\\n0,5,1,43,0.692,109.083\\n0,5,1,45,0.741,105.197\\n0,5,1,46,0.719,106.735\\n0,5,1,54,0.874,106.973\\n0,5,1,55,0.861,108.507\\n0,5,1,56,0.814,108.223\\n0,5,1,57,0.626,110.420\\n0,5,1,58,0.750,105.481\\n0,5,1,61,0.710,109.227\\n0,5,1,62,0.655,113.035\\n0,5,1,63,0.621,110.467\\n0,5,1,64,0.622,110.457\\n0,5,1,67,0.732,106.474\\n0,5,1,68,0.748,103.817\\n0,5,1,72,0.547,116.576\\n0,5,1,73,0.633,107.153\\n0,5,1,78,0.640,109.078\\n0,5,1,80,0.684,105.144\\n0,5,1,81,0.721,107.870\\n0,6,1,6,1.156,111.368\\n0,6,1,8,1.333,112.223\\n0,6,1,9,1.224,116.950\\n0,6,1,10,1.432,108.568\\n0,6,1,11,1.593,106.900\\n0,6,1,15,1.273,112.012\\n0,6,1,17,1.348,108.655\\n0,6,1,19,0.906,117.214\\n0,6,1,20,1.293,108.202\\n0,6,1,22,1.287,108.913\\n0,6,1,25,1.171,103.598\\n0,6,1,26,0.888,118.433\\n0,6,1,34,1.257,114.975\\n0,6,1,37,0.878,107.978\\n0,6,1,39,1.485,106.464\\n0,6,1,40,1.371,110.779\\n0,6,1,41,1.333,106.467\\n0,6,1,45,1.523,104.438\\n0,6,1,57,1.308,108.467\\n0,6,1,63,1.351,106.535\\n0,6,1,64,1.238,111.308\\n0,8,1,8,1.203,110.856\\n0,8,1,9,1.133,114.080\\n0,8,1,10,1.258,108.683\\n0,8,1,12,1.217,107.251\\n0,8,1,15,1.120,112.356\\n0,8,1,20,1.116,109.353\\n0,8,1,25,1.143,98.698\\n0,8,1,34,1.138,113.412\\n0,8,1,37,1.090,110.992\\n0,8,1,39,1.364,104.193\\n0,8,1,40,0.964,123.962\\n0,8,1,41,1.234,103.868\\n0,8,1,43,1.137,113.596\\n0,8,1,45,1.583,96.139\\n0,8,1,57,1.038,114.266\\n0,8,1,63,1.104,110.598\\n0,8,1,64,1.156,108.127\\n0,9,1,10,1.209,110.720\\n0,9,1,12,1.173,109.152\\n0,9,1,15,1.024,117.465\\n0,9,1,25,1.060,102.432\\n0,9,1,37,1.077,111.565\\n0,9,1,40,1.084,116.728\\n0,9,1,80,1.163,107.509\\n0,10,1,10,1.191,111.995\\n0,10,1,15,1.161,110.502\\n0,10,1,17,1.269,105.509\\n0,10,1,20,1.220,104.838\\n0,10,1,22,1.132,109.262\\n0,10,1,25,1.015,104.822\\n0,10,1,37,1.107,110.423\\n0,10,1,40,1.264,108.536\\n0,10,1,41,1.087,110.961\\n0,10,1,57,1.268,103.622\\n0,11,1,11,1.638,106.081\\n0,11,1,15,1.254,109.517\\n0,11,1,20,1.243,107.637\\n0,11,1,25,1.244,97.532\\n0,11,1,34,1.338,108.669\\n0,11,1,35,1.556,110.367\\n0,11,1,37,1.151,112.278\\n0,11,1,41,1.301,105.053\\n0,11,1,45,1.550,100.991\\n0,11,1,73,1.303,106.569\\n0,11,1,75,0.884,114.378\\n0,12,1,12,1.096,110.422\\n0,12,1,15,1.146,111.064\\n0,12,1,18,1.299,104.827\\n0,12,1,19,0.932,108.971\\n0,12,1,20,1.081,108.605\\n0,12,1,22,1.097,108.028\\n0,12,1,25,0.989,106.118\\n0,12,1,37,1.076,109.030\\n0,12,1,39,1.150,110.359\\n0,12,1,45,1.353,101.430\\n0,12,1,63,1.071,109.474\\n0,12,1,64,1.093,108.338\\n0,13,1,13,1.093,111.645\\n0,13,1,20,1.084,106.534\\n0,13,1,22,1.068,107.469\\n0,13,1,45,1.305,101.383\\n0,14,1,20,1.021,107.718\\n0,15,1,15,1.147,111.896\\n0,15,1,25,1.059,103.308\\n0,15,1,34,1.222,107.318\\n0,15,1,37,1.051,110.959\\n0,15,1,40,1.149,111.005\\n0,15,1,41,1.263,100.981\\n0,15,1,63,1.060,110.596\\n0,15,1,64,1.059,110.703\\n0,15,1,73,1.289,105.029\\n0,17,1,37,1.065,110.049\\n0,18,1,20,1.121,107.960\\n0,18,1,22,1.283,101.125\\n0,18,1,37,1.203,104.390\\n0,18,1,45,1.287,105.273\\n0,18,1,64,1.093,109.683\\n0,19,1,54,0.772,119.506\\n0,20,1,20,1.229,99.084\\n0,20,1,37,1.052,107.428\\n0,20,1,45,1.169,106.335\\n0,22,1,22,0.990,111.226\\n0,22,1,25,0.885,107.293\\n0,22,1,34,1.045,112.940\\n0,22,1,37,1.037,108.586\\n0,22,1,45,1.182,106.181\\n0,25,1,25,0.551,127.138\\n0,25,1,34,0.779,119.271\\n0,25,1,37,0.784,113.945\\n0,25,1,40,1.062,102.417\\n0,25,1,58,0.916,110.234\\n0,26,1,26,0.625,118.700\\n0,34,1,34,1.216,109.167\\n0,34,1,37,1.075,111.275\\n0,34,1,41,1.048,112.238\\n0,34,1,63,1.077,111.412\\n0,34,1,73,1.142,110.240\\n0,37,1,37,0.986,111.315\\n0,37,1,40,1.129,109.188\\n0,37,1,43,1.074,111.478\\n0,37,1,45,1.259,102.800\\n0,37,1,57,0.981,112.047\\n0,37,1,64,1.175,102.239\\n0,37,1,68,1.100,109.983\\n0,37,1,78,1.005,110.638\\n0,37,1,81,1.176,107.040\\n0,39,1,39,1.260,108.547\\n0,40,1,40,1.182,112.005\\n0,40,1,55,1.322,105.786\\n0,40,1,63,1.032,114.505\\n0,40,1,64,1.000,116.376\\n0,41,1,41,1.082,105.400\\n0,41,1,63,1.061,107.112\\n0,41,1,81,1.093,110.553\\n0,45,1,45,1.391,102.088\\n0,0,2,0,0.000,119.400\\n1,0,2,0,0.000,118.200\\n2,0,2,0,0.000,120.800\\n3,0,2,0,0.000,62.600\\n6,0,2,0,0.000,60.500\\n0,1,2,1,0.752,118.043\\n0,1,2,2,0.672,122.141\\n1,1,2,2,0.684,116.929\\n1,1,2,3,0.698,116.104\\n0,1,2,4,0.828,125.045\\n1,1,2,4,0.846,121.613\\n0,1,2,5,0.446,120.108\\n0,1,2,6,1.160,115.518\\n0,1,2,10,1.015,116.707\\n0,1,2,12,0.983,115.343\\n0,1,2,13,0.964,115.395\\n0,1,2,15,0.939,119.465\\n0,1,2,17,0.883,121.868\\n0,1,2,18,0.961,117.918\\n0,1,2,20,0.880,118.310\\n0,1,2,22,0.873,119.114\\n0,1,2,30,0.826,124.605\\n1,1,2,37,0.721,116.064\\n0,1,2,40,0.982,118.515\\n0,1,2,45,1.121,109.921\\n0,1,2,56,1.006,117.192\\n1,1,2,63,0.768,127.945\\n1,1,2,64,0.966,113.884\\n1,1,2,67,1.115,110.185\\n1,2,2,2,0.747,121.550\\n2,2,2,2,0.796,126.284\\n6,2,2,2,0.173,60.549\\n1,2,2,3,0.545,111.297\\n2,2,2,3,0.893,118.456\\n5,2,2,3,0.184,59.145\\n1,2,2,4,0.902,121.053\\n2,2,2,4,0.889,119.794\\n0,2,2,5,0.535,121.004\\n1,2,2,5,0.463,118.442\\n0,2,2,6,1.117,121.267\\n1,2,2,6,1.204,114.538\\n1,2,2,9,0.960,123.536\\n2,2,2,9,1.045,116.273\\n0,2,2,10,1.003,120.828\\n1,2,2,10,1.026,117.324\\n0,2,2,11,1.089,119.100\\n1,2,2,11,1.090,116.828\\n0,2,2,12,0.931,120.132\\n1,2,2,12,0.957,117.526\\n0,2,2,13,0.867,122.717\\n0,2,2,14,0.818,122.584\\n1,2,2,14,0.819,122.344\\n0,2,2,15,0.931,121.553\\n1,2,2,15,0.949,119.466\\n0,2,2,17,0.977,117.167\\n0,2,2,18,1.044,114.561\\n0,2,2,19,0.668,124.721\\n0,2,2,20,0.931,117.784\\n0,2,2,22,0.809,126.820\\n3,2,2,22,0.149,66.165\\n0,2,2,25,0.700,123.830\\n0,2,2,34,1.066,116.151\\n0,2,2,35,0.911,137.103\\n1,2,2,37,0.598,117.508\\n2,2,2,37,0.817,124.229\\n1,2,2,39,0.976,122.360\\n0,2,2,40,0.773,126.830\\n1,2,2,40,0.976,120.132\\n0,2,2,41,0.432,110.442\\n0,2,2,43,1.144,111.808\\n0,2,2,45,1.194,109.231\\n1,2,2,45,1.062,113.984\\n0,2,2,46,1.005,121.534\\n0,2,2,55,0.995,121.154\\n0,2,2,56,1.234,108.879\\n0,2,2,62,0.808,135.269\\n1,2,2,63,0.948,118.277\\n1,2,2,64,0.866,123.528\\n2,2,2,64,0.859,121.998\\n1,2,2,67,1.132,112.136\\n0,2,2,72,0.770,134.269\\n1,2,2,81,1.078,116.541\\n2,3,2,3,0.853,120.370\\n2,3,2,4,0.878,119.739\\n1,3,2,5,0.487,117.291\\n1,3,2,6,1.142,116.738\\n2,3,2,9,1.005,117.648\\n1,3,2,10,1.039,115.698\\n1,3,2,11,1.150,112.876\\n1,3,2,12,0.997,114.732\\n1,3,2,13,0.946,116.643\\n1,3,2,14,0.891,117.111\\n1,3,2,15,1.023,114.635\\n1,3,2,20,0.870,119.265\\n1,3,2,22,0.816,123.510\\n1,3,2,30,1.025,112.209\\n1,3,2,34,1.099,111.723\\n1,3,2,35,1.141,118.767\\n2,3,2,37,0.868,119.758\\n1,3,2,40,1.024,116.408\\n1,3,2,41,0.855,119.505\\n1,3,2,43,1.046,114.257\\n1,3,2,45,1.077,112.401\\n1,3,2,46,1.066,114.841\\n2,4,2,4,0.832,124.158\\n0,4,2,5,0.573,121.000\\n1,4,2,5,0.545,120.000\\n2,4,2,9,0.973,120.845\\n1,4,2,15,0.906,122.447\\n1,4,2,18,0.947,119.537\\n1,4,2,30,0.819,126.938\\n2,4,2,37,0.864,121.093\\n1,4,2,40,1.083,114.355\\n1,4,2,45,1.158,109.426\\n2,4,2,63,0.860,122.442\\n0,5,2,5,0.365,119.523\\n0,5,2,6,0.589,108.757\\n1,5,2,9,0.643,117.000\\n0,5,2,10,0.667,114.859\\n0,5,2,11,0.795,108.186\\n0,5,2,12,0.622,110.650\\n0,5,2,13,0.566,113.513\\n0,5,2,15,0.546,119.562\\n0,5,2,17,0.492,124.000\\n0,5,2,18,0.548,119.053\\n0,5,2,22,0.534,120.000\\n0,5,2,25,0.395,124.000\\n0,5,2,30,0.572,120.000\\n0,5,2,35,0.682,124.164\\n1,5,2,37,0.491,117.423\\n1,5,2,39,0.655,115.724\\n0,5,2,40,0.568,112.322\\n0,5,2,41,0.294,123.706\\n0,5,2,45,0.728,107.774\\n0,5,2,55,0.651,116.000\\n0,5,2,62,0.568,125.344\\n1,5,2,63,0.550,120.000\\n1,5,2,64,0.546,120.000\\n0,5,2,72,0.531,122.009\\n1,5,2,81,0.665,115.000\\n1,6,2,9,1.214,120.520\\n0,6,2,10,1.311,115.921\\n0,6,2,22,1.080,120.560\\n0,6,2,35,1.172,132.391\\n1,6,2,37,1.198,114.441\\n0,6,2,40,1.239,119.073\\n0,6,2,45,1.637,102.438\\n1,9,2,10,1.098,119.802\\n1,9,2,15,0.915,127.574\\n2,9,2,37,0.981,119.536\\n1,9,2,40,0.922,130.521\\n0,10,2,12,1.144,112.723\\n0,10,2,15,1.078,117.519\\n0,10,2,25,1.144,100.818\\n1,10,2,37,1.021,117.139\\n0,10,2,40,0.988,126.034\\n0,10,2,41,0.951,120.000\\n0,12,2,12,1.012,119.105\\n0,12,2,17,1.110,114.206\\n0,12,2,18,1.201,110.553\\n0,12,2,19,0.704,126.646\\n0,12,2,20,0.903,120.563\\n0,12,2,30,0.892,122.753\\n1,12,2,37,0.976,116.136\\n0,12,2,45,1.076,115.543\\n0,13,2,18,1.132,113.616\\n0,15,2,15,0.996,123.027\\n0,15,2,35,0.950,133.654\\n1,15,2,37,1.007,115.757\\n0,15,2,40,0.895,128.924\\n0,17,2,17,1.051,117.955\\n1,18,2,37,1.183,106.608\\n0,22,2,22,0.841,122.108\\n3,22,2,22,0.180,58.963\\n1,22,2,37,0.806,124.693\\n1,30,2,37,0.849,123.816\\n1,35,2,37,0.991,128.032\\n0,40,2,40,0.949,128.436\\n0,40,2,56,1.072,120.987\\n1,40,2,63,0.922,124.268\\n1,40,2,64,0.955,121.881\\n0,40,2,72,0.820,135.317\\n0,45,2,45,1.284,108.095\\n2,64,2,64,0.888,120.342\\n0,0,3,0,0.000,117.300\\n1,0,3,0,0.000,115.800\\n4,0,3,0,0.000,90.800\\n7,0,3,0,0.000,91.100\\n8,0,3,0,0.000,88.900\\n0,1,3,1,1.151,118.016\\n1,1,3,2,1.106,116.853\\n1,1,3,3,1.214,114.612\\n0,1,3,5,0.808,117.280\\n0,1,3,6,1.043,109.716\\n0,1,3,7,0.938,124.410\\n0,1,3,9,0.978,119.788\\n1,1,3,9,1.038,115.132\\n0,1,3,10,0.984,112.735\\n0,1,3,12,1.007,113.972\\n0,1,3,15,1.024,113.612\\n0,1,3,16,0.949,119.986\\n0,1,3,18,0.732,134.097\\n0,1,3,20,0.830,120.312\\n0,1,3,22,0.928,115.001\\n0,1,3,35,1.058,122.808\\n1,1,3,37,1.051,115.191\\n1,1,3,39,1.178,107.895\\n0,1,3,40,0.979,118.457\\n0,1,3,41,0.897,116.681\\n0,1,3,43,1.046,113.731\\n0,1,3,45,1.132,109.019\\n0,1,3,51,1.160,116.573\\n0,1,3,53,1.052,115.065\\n0,1,3,54,1.135,111.322\\n1,1,3,58,1.162,108.129\\n0,1,3,62,1.119,111.523\\n1,1,3,63,0.909,117.001\\n1,1,3,64,0.887,118.253\\n0,1,3,67,1.142,110.666\\n0,1,3,74,1.010,116.851\\n0,1,3,75,0.646,128.037\\n2,2,3,2,0.976,112.562\\n6,2,3,2,0.157,62.792\\n2,2,3,3,0.957,113.239\\n1,2,3,5,0.901,115.350\\n1,2,3,6,0.932,106.510\\n1,2,3,7,0.936,122.623\\n1,2,3,9,0.831,122.253\\n2,2,3,9,1.120,111.408\\n1,2,3,10,1.042,111.721\\n1,2,3,12,0.901,120.769\\n1,2,3,15,1.057,112.105\\n1,2,3,16,0.881,124.850\\n1,2,3,22,0.969,113.027\\n1,2,3,25,0.853,109.794\\n2,2,3,37,0.973,112.935\\n2,2,3,39,1.197,107.592\\n1,2,3,40,0.910,123.437\\n1,2,3,43,1.105,111.169\\n1,2,3,53,1.082,114.032\\n1,2,3,54,1.012,118.588\\n1,2,3,55,1.186,107.278\\n1,2,3,56,1.151,108.909\\n2,2,3,63,0.918,116.947\\n2,2,3,64,1.033,110.084\\n1,2,3,67,1.022,117.597\\n2,3,3,3,0.822,121.775\\n8,3,3,3,1.280,89.965\\n1,3,3,5,0.943,113.762\\n1,3,3,6,0.935,103.030\\n1,3,3,7,0.919,117.024\\n1,3,3,9,1.050,115.704\\n1,3,3,10,1.129,110.421\\n1,3,3,12,1.053,111.492\\n1,3,3,15,1.390,97.562\\n1,3,3,16,1.092,111.888\\n1,3,3,20,0.977,110.910\\n1,3,3,22,1.010,110.295\\n8,3,3,30,1.353,87.789\\n2,3,3,37,0.932,114.949\\n2,3,3,39,1.237,105.384\\n1,3,3,40,1.003,117.124\\n1,3,3,41,0.790,124.361\\n1,3,3,45,0.919,121.023\\n1,3,3,53,1.170,109.169\\n2,3,3,63,0.981,112.685\\n2,3,3,64,0.880,118.840\\n1,3,3,67,1.119,111.860\\n1,4,3,6,1.269,111.750\\n1,4,3,7,1.126,120.852\\n1,4,3,9,1.192,109.833\\n2,4,3,37,0.964,114.081\\n0,5,3,5,0.594,116.699\\n0,5,3,6,0.819,108.253\\n0,5,3,7,0.670,123.439\\n0,5,3,9,0.623,119.491\\n1,5,3,9,0.638,117.168\\n0,5,3,10,0.874,111.761\\n0,5,3,16,0.522,124.405\\n1,5,3,37,0.564,116.400\\n0,5,3,40,0.959,111.684\\n0,5,3,53,0.644,118.000\\n0,5,3,54,0.816,115.471\\n1,5,3,63,0.559,118.000\\n1,5,3,64,0.566,117.000\\n0,5,3,67,0.700,113.698\\n0,6,3,6,1.678,109.094\\n0,6,3,7,1.155,124.425\\n0,6,3,9,1.275,119.478\\n1,6,3,9,1.416,111.868\\n0,6,3,10,1.405,112.187\\n0,6,3,16,1.269,116.317\\n0,6,3,20,1.182,113.581\\n4,6,3,20,1.495,93.130\\n0,6,3,22,1.276,110.826\\n7,6,3,30,1.530,93.191\\n1,6,3,37,0.808,102.881\\n1,6,3,39,1.611,104.655\\n0,6,3,40,1.371,113.565\\n0,6,3,41,1.477,102.658\\n0,6,3,43,1.330,114.183\\n0,6,3,48,1.315,115.328\\n0,6,3,51,1.409,120.427\\n0,6,3,54,1.495,110.510\\n0,6,3,62,1.421,112.542\\n1,6,3,63,1.339,109.082\\n1,6,3,64,1.267,111.993\\n1,6,3,80,1.256,113.698\\n1,7,3,9,1.147,127.084\\n0,7,3,10,0.907,127.152\\n0,7,3,12,0.984,130.049\\n0,7,3,15,1.101,123.313\\n0,7,3,20,0.713,129.492\\n0,7,3,22,1.093,121.851\\n1,7,3,30,0.972,129.010\\n1,7,3,37,0.734,119.968\\n1,7,3,39,1.352,116.727\\n0,7,3,41,1.281,112.087\\n0,7,3,43,1.163,124.549\\n0,7,3,48,1.114,127.879\\n1,7,3,54,1.288,114.184\\n0,7,3,55,1.258,120.056\\n0,7,3,56,1.175,123.854\\n1,7,3,58,1.323,117.081\\n0,7,3,62,1.129,129.349\\n1,7,3,63,1.036,126.456\\n1,7,3,64,1.071,124.133\\n1,7,3,78,0.955,132.047\\n1,9,3,9,1.119,120.094\\n2,9,3,9,1.021,124.131\\n0,9,3,10,1.105,120.697\\n1,9,3,10,1.154,116.608\\n0,9,3,12,1.056,118.046\\n0,9,3,15,1.036,119.679\\n1,9,3,15,1.042,118.787\\n1,9,3,16,0.936,127.665\\n0,9,3,17,1.035,117.902\\n0,9,3,18,1.121,114.698\\n0,9,3,20,0.951,120.437\\n0,9,3,22,1.040,116.861\\n0,9,3,25,0.955,109.442\\n0,9,3,35,1.054,134.470\\n1,9,3,37,0.997,119.569\\n2,9,3,37,1.060,114.740\\n0,9,3,40,0.844,128.078\\n1,9,3,40,1.018,124.152\\n0,9,3,41,1.114,112.513\\n0,9,3,45,1.497,102.140\\n2,9,3,54,1.244,108.056\\n1,9,3,57,1.038,118.096\\n1,9,3,63,1.004,120.054\\n1,9,3,64,1.053,117.060\\n1,9,3,80,0.959,124.150\\n0,10,3,10,1.612,114.923\\n0,10,3,15,1.167,112.206\\n0,10,3,16,1.005,123.150\\n0,10,3,18,1.299,106.052\\n0,10,3,20,1.019,115.213\\n4,10,3,20,1.338,92.724\\n0,10,3,22,1.076,113.651\\n7,10,3,30,1.438,90.508\\n0,10,3,35,1.223,122.649\\n1,10,3,37,1.101,112.495\\n1,10,3,39,1.434,104.419\\n0,10,3,40,1.093,119.697\\n0,10,3,43,1.144,115.929\\n0,10,3,51,1.375,114.685\\n0,10,3,55,1.286,109.590\\n0,10,3,56,1.200,113.168\\n1,10,3,63,1.075,114.623\\n1,10,3,64,1.098,113.233\\n1,10,3,78,1.182,109.543\\n0,11,3,40,1.296,113.244\\n0,11,3,75,0.850,120.964\\n0,12,3,40,1.095,115.284\\n1,12,3,63,0.965,117.217\\n0,12,3,74,1.110,116.502\\n0,15,3,15,1.109,115.620\\n0,15,3,16,0.981,124.329\\n0,15,3,17,1.191,110.607\\n0,15,3,18,1.061,118.034\\n4,15,3,20,1.345,91.041\\n1,15,3,30,1.026,113.753\\n1,15,3,37,1.037,113.305\\n0,15,3,40,1.066,117.388\\n1,15,3,57,0.896,122.260\\n0,15,3,67,1.407,102.583\\n0,15,3,74,1.076,119.117\\n1,16,3,30,0.991,117.695\\n0,16,3,35,1.030,130.230\\n1,16,3,37,0.934,121.415\\n1,16,3,39,1.004,123.196\\n0,16,3,62,0.963,126.347\\n1,16,3,63,1.006,117.454\\n1,16,3,64,1.064,114.110\\n0,17,3,17,0.939,123.528\\n1,18,3,37,0.948,118.188\\n4,20,3,20,1.495,94.800\\n4,20,3,22,1.286,89.459\\n7,20,3,37,1.282,89.733\\n4,20,3,43,1.384,90.526\\n0,22,3,22,0.932,115.334\\n4,22,3,22,1.496,83.915\\n1,22,3,37,0.940,114.995\\n1,25,3,37,0.677,123.404\\n0,25,3,67,0.661,131.520\\n2,37,3,37,0.933,115.566\\n1,37,3,40,0.987,118.790\\n1,37,3,41,0.864,119.565\\n1,37,3,43,1.125,110.383\\n1,37,3,45,1.120,110.268\\n1,37,3,54,1.033,117.645\\n1,37,3,62,1.085,114.132\\n2,37,3,63,0.934,116.163\\n2,37,3,64,0.955,114.701\\n1,37,3,67,1.084,114.460\\n2,39,3,39,1.231,112.582\\n0,40,3,40,1.146,117.002\\n1,40,3,63,0.888,126.089\\n1,40,3,64,1.145,110.889\\n0,40,3,75,0.790,122.163\\n0,45,3,53,1.382,105.849\\n1,55,3,64,1.267,104.747\\n2,64,3,64,0.989,113.280\\n0,0,4,0,0.000,180.000\\n1,0,4,0,0.000,180.000\\n0,1,4,4,0.423,180.000\\n0,1,4,42,0.463,180.000\\n0,2,4,2,0.442,180.000\\n1,2,4,4,0.432,180.000\\n0,2,4,30,0.444,180.000\\n1,2,4,42,0.474,180.000\\n1,3,4,4,0.427,180.000\\n1,3,4,42,0.469,180.000\\n0,4,4,5,0.281,180.000\\n0,4,4,6,0.551,180.000\\n0,4,4,10,0.486,180.000\\n1,4,4,37,0.430,180.000\\n0,7,4,9,0.648,180.000\\n1,9,4,42,0.537,180.000\\n0,15,4,42,0.487,180.000\\n0,20,4,42,0.469,180.000\\n0,22,4,42,0.472,180.000\\n1,37,4,42,0.472,180.000\\n0,42,4,43,0.541,180.000\\n1,42,4,63,0.474,180.000\\n1,42,4,64,0.473,180.000\\n0,0,6,0,0.000,110.400\\n3,0,6,0,0.000,57.900\\n4,0,6,0,0.000,90.200\\n0,1,6,1,1.197,106.926\\n0,1,6,2,0.967,103.614\\n0,1,6,3,0.923,108.055\\n0,1,6,6,1.884,103.905\\n0,1,6,8,1.629,105.422\\n0,1,6,9,1.628,106.496\\n0,1,6,10,1.656,105.317\\n0,1,6,15,1.480,111.230\\n0,1,6,17,1.493,111.951\\n0,1,6,18,1.370,116.346\\n0,1,6,19,1.093,114.943\\n0,1,6,20,1.316,112.833\\n0,1,6,21,0.793,106.503\\n0,1,6,22,1.391,109.759\\n0,1,6,25,1.095,115.581\\n0,1,6,26,1.170,112.081\\n0,1,6,37,1.075,102.846\\n0,1,6,40,1.719,103.733\\n0,1,6,41,1.454,109.046\\n0,1,6,43,1.642,105.462\\n0,1,6,45,1.642,105.875\\n0,1,6,63,1.449,109.545\\n0,1,6,64,1.512,106.848\\n0,2,6,2,1.354,113.339\\n0,2,6,3,0.671,98.438\\n0,2,6,18,1.365,117.169\\n0,2,6,25,1.025,120.078\\n0,2,6,29,0.816,105.727\\n0,2,6,37,1.418,110.694\\n0,2,6,57,1.341,114.785\\n0,3,6,3,1.455,110.067\\n0,3,6,4,1.409,112.404\\n0,3,6,8,1.648,105.872\\n0,3,6,10,1.596,108.437\\n0,3,6,18,1.274,121.468\\n0,3,6,19,1.019,119.840\\n0,3,6,20,1.379,111.381\\n4,3,6,20,1.748,91.216\\n0,3,6,22,1.328,113.491\\n0,3,6,24,0.583,111.948\\n0,3,6,25,1.006,121.410\\n0,3,6,29,0.876,111.417\\n0,3,6,37,0.614,95.300\\n0,3,6,64,1.424,111.483\\n0,4,6,18,1.423,115.233\\n0,6,6,21,1.362,95.697\\n0,8,6,21,0.832,99.409\\n0,9,6,21,1.115,101.592\\n0,10,6,21,0.923,99.688\\n0,18,6,18,1.334,125.242\\n0,18,6,33,0.812,115.364\\n0,18,6,37,1.429,114.473\\n0,18,6,39,1.558,114.152\\n0,18,6,43,1.710,108.479\\n0,19,6,19,0.642,141.096\\n0,19,6,21,0.597,118.204\\n0,19,6,37,0.941,124.421\\n4,20,6,20,1.339,89.100\\n0,20,6,21,0.944,104.587\\n0,20,6,37,1.394,110.394\\n0,21,6,40,1.124,101.417\\n0,21,6,43,1.058,103.253\\n0,21,6,54,1.175,100.000\\n0,21,6,55,1.139,101.000\\n3,22,6,22,0.242,58.680\\n3,22,6,43,0.279,57.087\\n0,24,6,25,0.607,118.533\\n0,25,6,25,0.777,129.375\\n0,25,6,37,1.099,115.923\\n0,26,6,37,1.090,116.692\\n0,29,6,30,0.986,108.000\\n0,29,6,37,0.726,105.409\\n0,29,6,64,0.923,108.922\\n0,37,6,37,1.462,108.967\\n0,37,6,58,1.607,108.274\\n0,0,8,0,0.000,110.400\\n3,0,8,0,0.000,58.500\\n4,0,8,0,0.000,95.000\\n0,1,8,1,1.090,107.018\\n0,1,8,6,1.297,102.829\\n0,1,8,8,1.347,105.708\\n0,1,8,9,1.182,114.240\\n0,1,8,10,1.307,108.079\\n0,1,8,15,1.085,118.283\\n0,1,8,17,1.096,117.478\\n0,1,8,19,0.779,122.759\\n0,1,8,20,1.221,105.873\\n0,1,8,22,1.147,109.200\\n0,1,8,23,0.763,109.062\\n0,1,8,25,0.865,117.482\\n0,1,8,26,0.926,112.630\\n0,1,8,40,1.363,105.609\\n0,1,8,45,1.266,110.149\\n0,1,8,46,1.265,111.092\\n0,6,8,6,1.776,107.296\\n0,6,8,17,1.664,105.334\\n0,6,8,22,1.456,107.100\\n0,6,8,23,0.861,100.510\\n3,8,8,8,0.230,60.000\\n0,8,8,23,0.792,108.917\\n0,8,8,25,1.068,110.595\\n0,8,8,26,1.047,110.816\\n0,9,8,23,0.832,108.864\\n4,10,8,20,1.805,84.690\\n0,10,8,23,0.846,106.788\\n0,12,8,22,1.227,107.439\\n0,15,8,19,0.845,125.674\\n4,17,8,17,1.198,110.056\\n0,17,8,23,0.647,116.842\\n0,19,8,23,0.542,112.000\\n4,20,8,20,1.103,90.370\\n0,20,8,23,0.684,113.359\\n3,22,8,22,0.209,57.087\\n0,22,8,23,0.697,110.033\\n0,22,8,25,0.896,115.361\\n0,23,8,23,0.595,105.998\\n0,23,8,25,0.510,117.000\\n0,23,8,26,0.553,110.959\\n0,23,8,34,0.808,109.000\\n0,23,8,39,0.757,111.820\\n0,23,8,40,0.819,108.120\\n0,23,8,43,0.857,106.222\\n0,23,8,55,0.868,106.000\\n0,23,8,56,0.876,105.092\\n0,0,9,0,0.000,111.500\\n1,0,9,0,0.000,109.100\\n0,1,9,3,0.878,106.409\\n0,1,9,9,1.306,110.005\\n0,1,9,53,1.216,113.995\\n0,1,9,67,1.391,106.413\\n1,2,9,3,1.242,109.856\\n1,2,9,9,1.306,112.528\\n1,3,9,3,1.204,111.488\\n1,3,9,4,1.194,113.272\\n0,3,9,6,1.579,106.872\\n0,3,9,8,1.386,108.822\\n1,3,9,9,1.390,108.355\\n0,3,9,10,1.365,109.548\\n0,3,9,12,1.373,103.303\\n0,3,9,15,1.265,110.780\\n0,3,9,18,1.205,114.743\\n0,3,9,20,1.198,109.751\\n0,3,9,25,0.873,119.927\\n0,3,9,27,0.818,108.779\\n0,3,9,34,1.355,108.199\\n0,3,9,35,1.511,109.907\\n1,3,9,37,1.185,111.663\\n1,3,9,39,1.396,108.538\\n0,3,9,40,1.365,109.440\\n0,3,9,41,1.169,112.551\\n0,3,9,45,1.369,109.796\\n1,3,9,53,1.351,110.578\\n1,3,9,54,1.643,98.943\\n0,3,9,55,1.431,106.195\\n0,3,9,56,1.375,109.289\\n1,3,9,57,1.125,115.780\\n1,3,9,63,1.247,109.989\\n1,3,9,64,1.302,106.461\\n1,3,9,78,1.323,106.641\\n1,3,9,81,1.567,101.581\\n0,4,9,19,0.456,161.741\\n1,4,9,67,1.402,108.868\\n0,6,9,67,1.794,105.043\\n0,9,9,10,1.518,109.154\\n1,9,9,37,1.397,108.014\\n0,9,9,40,1.594,106.413\\n0,9,9,62,1.390,114.417\\n1,9,9,63,1.320,112.325\\n1,9,9,64,1.352,109.711\\n1,37,9,53,1.343,110.162\\n1,37,9,67,1.296,111.871\\n0,40,9,67,1.538,108.056\\n1,53,9,64,1.318,111.149\\n0,0,10,0,0.000,117.500\\n3,0,10,0,0.000,58.900\\n4,0,10,0,0.000,92.900\\n0,1,10,1,1.117,117.909\\n0,1,10,2,1.004,118.916\\n0,1,10,3,0.821,119.600\\n0,1,10,6,1.179,108.865\\n0,1,10,8,1.137,116.189\\n0,1,10,9,1.132,117.005\\n0,1,10,10,1.247,111.009\\n0,1,10,17,1.014,122.388\\n0,1,10,20,0.960,119.679\\n0,1,10,25,0.745,125.390\\n0,1,10,28,0.552,120.066\\n0,1,10,37,1.038,116.332\\n0,1,10,39,1.060,120.838\\n0,1,10,40,1.194,113.314\\n0,1,10,41,1.031,118.033\\n0,1,10,45,1.268,109.599\\n0,1,10,63,0.949,122.185\\n0,1,10,64,0.960,121.315\\n0,2,10,2,1.146,112.878\\n0,2,10,3,1.000,120.703\\n0,2,10,6,1.405,111.609\\n0,2,10,20,1.132,111.544\\n0,2,10,28,0.638,118.553\\n0,2,10,37,0.977,121.506\\n0,3,10,3,0.709,120.274\\n0,3,10,4,0.864,130.236\\n0,3,10,6,0.960,110.133\\n0,3,10,8,1.168,116.075\\n4,3,10,8,1.527,93.608\\n0,3,10,9,1.174,116.443\\n0,3,10,10,1.184,115.377\\n0,3,10,13,0.998,118.867\\n0,3,10,14,0.871,124.162\\n0,3,10,15,1.076,118.969\\n0,3,10,17,1.132,116.612\\n0,3,10,20,0.936,122.540\\n4,3,10,20,1.371,93.349\\n0,3,10,22,0.975,120.929\\n0,3,10,25,0.794,122.157\\n0,3,10,26,0.848,117.912\\n0,3,10,28,0.575,120.277\\n0,3,10,34,1.251,112.201\\n0,3,10,35,1.395,112.633\\n0,3,10,37,1.023,118.596\\n0,3,10,40,1.216,113.680\\n0,3,10,41,1.098,115.913\\n0,3,10,45,1.212,113.447\\n0,3,10,63,1.091,115.381\\n0,3,10,64,1.048,117.574\\n0,4,10,20,0.816,131.702\\n0,6,10,28,0.829,113.214\\n0,6,10,37,1.393,111.476\\n0,8,10,28,0.703,117.160\\n0,8,10,37,1.167,115.599\\n0,9,10,26,0.847,123.206\\n0,9,10,28,0.751,114.501\\n0,9,10,37,1.222,113.553\\n0,9,10,39,1.310,115.309\\n0,10,10,28,0.735,114.715\\n0,10,10,41,1.237,113.743\\n0,15,10,28,0.614,119.033\\n4,20,10,20,1.381,91.694\\n0,20,10,28,0.555,123.394\\n0,20,10,37,1.006,117.703\\n3,22,10,22,0.202,58.894\\n0,22,10,28,0.605,119.583\\n0,25,10,28,0.447,122.785\\n0,28,10,28,0.435,115.630\\n0,28,10,34,0.757,113.000\\n0,28,10,35,0.836,114.000\\n0,28,10,37,0.628,118.227\\n0,28,10,40,0.754,113.000\\n0,28,10,41,0.560,128.067\\n0,28,10,63,0.640,118.099\\n0,28,10,64,0.643,117.575\\n0,37,10,40,1.232,112.412\\n0,0,15,0,0.000,97.900\\n4,0,15,0,0.000,80.200\\n0,1,15,1,1.654,97.335\\n0,1,15,2,1.321,97.853\\n0,1,15,3,1.325,97.326\\n0,1,15,4,1.344,97.370\\n0,1,15,9,1.725,89.814\\n0,1,15,15,1.377,100.316\\n0,1,15,18,1.309,101.641\\n0,1,15,19,1.007,102.069\\n0,1,15,20,1.366,94.913\\n0,1,15,22,1.268,99.768\\n0,1,15,25,0.967,104.732\\n0,1,15,30,1.379,95.613\\n0,1,15,37,1.439,97.111\\n0,1,15,40,1.555,94.643\\n0,1,15,57,1.301,98.686\\n0,1,15,63,1.304,98.330\\n0,1,15,64,1.306,98.066\\n0,1,15,71,0.931,96.494\\n0,2,15,2,1.434,95.108\\n0,2,15,3,1.318,98.813\\n0,2,15,4,1.426,95.780\\n0,2,15,15,1.457,97.789\\n0,2,15,37,1.362,96.942\\n0,2,15,43,1.709,90.872\\n0,3,15,3,1.402,95.424\\n0,3,15,6,1.804,94.075\\n0,3,15,15,1.403,99.399\\n4,3,15,20,1.666,79.842\\n0,3,15,37,1.308,98.541\\n0,3,15,63,1.390,96.051\\n0,3,15,71,0.830,97.000\\n0,6,15,37,1.679,97.231\\n0,8,15,8,1.444,105.143\\n0,8,15,37,1.446,98.976\\n0,9,15,9,1.626,98.524\\n0,9,15,64,1.504,97.105\\n0,10,15,15,1.415,103.715\\n0,12,15,37,1.428,97.534\\n0,15,15,15,1.413,104.893\\n0,15,15,18,1.563,99.173\\n0,15,15,37,1.361,100.790\\n0,15,15,64,1.332,102.040\\n0,15,15,71,0.787,99.239\\n4,20,15,30,1.978,73.428\\n0,20,15,37,1.361,95.589\\n0,25,15,25,0.947,99.505\\n4,25,15,25,1.030,87.982\\n0,25,15,26,1.002,96.851\\n0,25,15,37,1.172,95.428\\n0,26,15,37,1.144,96.710\\n4,30,15,30,1.732,79.546\\n0,37,15,37,1.295,98.802\\n0,37,15,63,1.379,96.197\\n0,37,15,64,1.286,99.423\\n0,37,15,71,0.813,96.222\\n0,71,15,71,0.734,93.377\\n0,0,17,0,0.000,99.400\\n4,0,17,0,0.000,78.400\\n0,1,17,1,1.415,93.266\\n0,1,17,2,1.387,94.732\\n0,1,17,3,1.430,92.852\\n0,1,17,6,1.863,92.132\\n0,1,17,7,1.408,107.104\\n0,1,17,8,1.661,91.498\\n0,1,17,10,1.547,94.839\\n0,1,17,20,1.453,91.368\\n0,1,17,22,1.423,92.591\\n0,1,17,37,1.376,94.911\\n0,2,17,2,1.313,97.901\\n0,2,17,7,1.478,105.412\\n0,2,17,43,1.207,108.882\\n0,3,17,7,1.513,103.431\\n0,6,17,6,2.164,97.766\\n0,6,17,7,1.850,107.431\\n0,7,17,8,1.438,113.808\\n0,7,17,10,1.525,110.549\\n0,7,17,20,1.442,104.737\\n0,7,17,22,1.449,104.928\\n0,7,17,37,1.500,104.313\\n4,8,17,20,1.891,78.354\\n0,8,17,37,1.687,91.169\\n0,37,17,37,1.487,91.633\\n0,0,18,0,0.000,104.600\\n4,0,18,0,0.000,80.300\\n0,1,18,1,1.230,101.166\\n0,1,18,2,1.264,100.420\\n0,1,18,3,1.242,100.883\\n0,1,18,6,1.744,95.671\\n0,1,18,9,1.438,99.465\\n0,1,18,20,1.224,101.315\\n0,1,18,22,1.207,101.417\\n0,1,18,32,1.446,107.066\\n0,1,18,37,1.234,101.070\\n0,1,18,43,1.449,98.014\\n0,1,18,48,1.277,106.586\\n0,1,18,62,1.374,102.402\\n0,2,18,2,1.254,101.492\\n0,2,18,6,1.664,98.668\\n0,2,18,9,1.539,96.849\\n0,2,18,32,1.422,108.979\\n0,2,18,37,1.263,100.489\\n0,2,18,48,1.083,116.668\\n0,3,18,9,1.418,100.361\\n0,3,18,32,1.557,103.453\\n0,3,18,43,1.350,101.747\\n0,6,18,6,1.922,103.052\\n0,6,18,9,1.916,97.446\\n0,6,18,32,1.837,108.063\\n0,6,18,37,1.528,102.229\\n0,6,18,43,1.644,103.815\\n0,9,18,12,1.464,101.180\\n0,9,18,32,1.583,109.945\\n0,9,18,37,1.358,102.378\\n0,9,18,43,1.323,109.227\\n0,12,18,32,1.584,103.959\\n0,12,18,37,1.376,98.976\\n0,15,18,32,1.497,107.170\\n0,15,18,37,1.324,101.399\\n0,20,18,32,1.383,109.292\\n0,20,18,37,1.108,106.508\\n4,20,18,43,1.831,80.297\\n0,22,18,32,1.465,105.247\\n0,32,18,32,1.569,120.924\\n0,32,18,37,1.497,105.280\\n0,32,18,39,1.804,101.600\\n0,32,18,43,1.569,108.548\\n0,32,18,48,1.229,126.841\\n0,32,18,55,1.509,112.548\\n0,32,18,58,1.592,106.139\\n0,32,18,62,1.326,121.426\\n0,32,18,63,1.571,103.212\\n0,32,18,64,1.634,101.771\\n0,32,18,80,1.400,110.401\\n0,37,18,37,1.157,104.380\\n0,37,18,39,1.404,99.854\\n0,37,18,43,1.416,99.200\\n0,37,18,48,1.330,104.466\\n0,37,18,55,1.397,100.926\\n0,37,18,62,1.178,110.665\\n0,37,18,63,1.202,102.735\\n0,43,18,43,1.545,99.905\\n0,43,18,64,1.285,104.868\\n0,0,19,0,0.000,108.700\\n4,0,19,0,0.000,89.900\\n0,1,19,1,0.616,113.339\\n0,1,19,5,0.390,110.795\\n0,1,19,6,0.777,113.958\\n0,1,19,8,0.716,111.521\\n0,1,19,9,0.779,106.380\\n0,1,19,12,0.729,108.947\\n0,1,19,20,0.656,108.828\\n0,1,19,40,0.754,108.858\\n0,1,19,63,0.699,106.924\\n0,1,19,75,0.530,111.633\\n0,2,19,12,0.819,102.981\\n0,5,19,5,0.258,108.699\\n0,5,19,6,0.520,109.677\\n0,5,19,8,0.461,109.070\\n0,5,19,12,0.446,106.756\\n0,6,19,6,1.051,111.280\\n0,6,19,12,0.968,106.022\\n0,6,19,37,0.870,108.096\\n0,8,19,8,0.862,108.099\\n0,8,19,12,0.786,110.683\\n0,12,19,12,0.879,104.597\\n0,15,19,15,0.816,108.681\\n4,20,19,20,0.802,89.931\\n0,37,19,37,0.726,105.045\\n0,0,20,0,0.000,113.200\\n4,0,20,0,0.000,88.800\\n0,1,20,1,0.943,113.131\\n0,1,20,3,0.906,114.940\\n0,1,20,5,0.417,114.057\\n0,1,20,6,1.231,110.677\\n0,1,20,8,1.080,111.090\\n0,1,20,10,1.100,110.057\\n0,1,20,11,1.173,110.993\\n0,1,20,12,0.976,114.773\\n0,1,20,15,1.035,111.226\\n0,1,20,18,0.978,115.383\\n0,1,20,20,0.502,113.313\\n0,1,20,22,0.915,115.201\\n0,1,20,25,0.744,116.096\\n0,1,20,26,0.721,117.611\\n0,1,20,30,0.908,115.220\\n0,1,20,34,1.090,110.505\\n0,1,20,37,0.947,112.650\\n0,1,20,41,0.973,111.787\\n0,1,20,43,1.087,110.187\\n0,1,20,45,1.132,108.074\\n0,2,20,3,0.982,111.060\\n0,2,20,5,0.596,113.035\\n0,2,20,6,1.139,115.851\\n0,2,20,12,0.951,116.750\\n0,2,20,20,0.931,114.138\\n0,3,20,3,0.982,109.919\\n0,3,20,5,0.624,112.989\\n0,3,20,6,1.157,113.611\\n4,3,20,8,1.473,87.271\\n0,3,20,10,1.016,113.988\\n0,3,20,11,1.184,109.849\\n0,3,20,12,0.969,114.891\\n0,3,20,13,1.008,110.951\\n0,3,20,20,0.849,118.273\\n4,3,20,20,1.524,88.961\\n0,3,20,34,1.137,107.667\\n4,3,20,37,1.382,85.619\\n0,3,20,43,0.960,116.707\\n0,4,20,5,0.584,115.078\\n0,4,20,20,0.920,115.312\\n0,5,20,5,0.439,109.107\\n0,5,20,6,0.818,111.352\\n0,5,20,8,0.728,114.011\\n0,5,20,9,0.657,112.826\\n0,5,20,10,0.663,112.010\\n0,5,20,12,0.339,114.117\\n0,5,20,15,0.562,114.339\\n0,5,20,17,0.561,113.000\\n0,5,20,18,0.605,111.570\\n0,5,20,20,0.564,113.940\\n0,5,20,26,0.472,109.722\\n0,5,20,30,0.688,116.038\\n0,5,20,34,0.661,112.000\\n0,5,20,37,0.552,115.670\\n0,5,20,40,0.682,111.331\\n0,5,20,43,0.655,111.686\\n0,6,20,6,1.443,114.408\\n0,6,20,10,1.225,116.666\\n0,6,20,13,1.162,114.868\\n0,6,20,20,1.109,116.117\\n4,6,20,20,1.433,93.413\\n0,6,20,22,1.106,117.205\\n0,6,20,30,1.144,114.705\\n4,6,20,30,1.658,87.873\\n0,8,20,20,1.185,105.606\\n4,8,20,20,1.486,91.244\\n0,8,20,26,0.874,111.782\\n0,9,20,20,1.103,109.640\\n0,10,20,15,1.170,109.525\\n0,10,20,17,1.127,110.564\\n0,10,20,18,1.404,100.845\\n0,10,20,20,1.032,113.170\\n4,10,20,20,1.468,87.497\\n4,10,20,30,1.507,86.657\\n0,10,20,37,0.963,117.360\\n0,11,20,11,1.504,108.020\\n0,11,20,17,1.221,109.460\\n0,11,20,20,1.051,116.673\\n0,11,20,30,0.997,120.309\\n0,12,20,12,1.020,117.603\\n0,12,20,19,0.973,105.821\\n0,12,20,20,0.866,118.108\\n0,12,20,30,0.887,120.399\\n0,13,20,13,1.077,113.361\\n0,13,20,20,0.938,115.037\\n0,14,20,20,0.837,112.888\\n0,15,20,15,1.094,114.048\\n0,15,20,20,1.058,109.793\\n4,15,20,20,1.324,90.483\\n0,15,20,30,0.960,115.468\\n4,15,20,30,1.447,86.726\\n4,17,20,17,1.309,94.977\\n0,17,20,20,0.930,116.108\\n0,18,20,20,1.007,113.480\\n4,18,20,20,1.355,90.185\\n0,18,20,41,1.241,102.656\\n0,19,20,19,0.567,122.298\\n4,19,20,19,0.921,88.477\\n0,20,20,20,1.008,108.644\\n4,20,20,20,1.149,90.294\\n0,20,20,22,0.840,119.817\\n4,20,20,22,1.364,86.669\\n4,20,20,25,1.181,84.818\\n0,20,20,30,0.994,109.745\\n4,20,20,30,1.399,85.303\\n0,20,20,34,1.069,111.143\\n4,20,20,34,1.382,90.128\\n0,20,20,37,0.833,119.709\\n4,20,20,37,1.346,86.810\\n0,20,20,40,1.097,110.254\\n0,20,20,41,0.922,114.408\\n0,20,20,43,0.964,116.540\\n4,20,20,43,1.290,92.879\\n0,20,20,45,1.083,110.090\\n0,22,20,22,0.866,118.829\\n4,22,20,22,1.649,79.399\\n4,26,20,26,0.789,96.811\\n0,26,20,34,0.843,113.805\\n0,34,20,41,1.070,111.943\\n0,37,20,43,0.954,117.365\\n0,0,22,0,0.000,116.100\\n3,0,22,0,0.000,59.400\\n4,0,22,0,0.000,91.600\\n0,1,22,1,0.903,116.483\\n0,1,22,2,0.884,118.360\\n0,1,22,3,0.836,121.424\\n0,1,22,4,0.900,117.720\\n0,1,22,5,0.604,111.788\\n0,1,22,6,1.179,113.545\\n0,1,22,8,0.973,117.469\\n0,1,22,17,1.070,109.087\\n0,1,22,18,1.097,108.265\\n0,1,22,22,0.871,118.246\\n0,1,22,37,0.882,118.041\\n0,1,22,43,1.014,114.899\\n3,2,22,2,0.263,48.820\\n0,2,22,3,0.956,114.147\\n0,2,22,4,0.784,126.957\\n0,2,22,5,0.573,115.869\\n0,2,22,6,1.012,123.319\\n0,2,22,22,0.880,118.260\\n3,2,22,22,0.166,60.845\\n0,2,22,45,1.009,116.146\\n0,3,22,3,0.819,122.977\\n0,3,22,4,0.876,119.718\\n0,3,22,5,0.559,116.738\\n0,3,22,6,1.184,113.646\\n0,3,22,8,1.072,112.261\\n0,3,22,10,0.987,117.750\\n0,3,22,12,0.930,118.047\\n4,3,22,20,1.267,90.869\\n0,3,22,22,0.861,119.252\\n4,3,22,22,1.196,93.287\\n4,3,22,30,1.301,89.217\\n0,3,22,37,0.852,120.464\\n0,3,22,40,1.033,114.288\\n0,3,22,43,1.124,109.441\\n0,3,22,45,1.117,110.033\\n0,4,22,5,0.560,118.000\\n0,4,22,6,1.200,113.650\\n0,4,22,8,0.966,119.034\\n0,4,22,15,0.931,120.455\\n0,4,22,22,0.877,118.890\\n0,4,22,45,1.089,112.227\\n0,5,22,5,0.242,114.938\\n0,5,22,6,0.683,117.836\\n0,5,22,8,0.621,115.758\\n0,5,22,10,0.658,113.806\\n0,5,22,11,0.776,108.296\\n0,5,22,12,0.620,109.865\\n0,5,22,20,0.623,110.000\\n0,5,22,22,0.583,117.875\\n0,5,22,37,0.532,119.438\\n0,5,22,40,0.653,112.855\\n0,5,22,41,0.519,122.000\\n0,5,22,43,0.658,112.128\\n0,5,22,45,0.665,112.000\\n0,6,22,12,1.136,118.409\\n0,6,22,17,1.328,108.583\\n0,6,22,18,1.381,107.009\\n0,6,22,22,1.124,115.942\\n3,6,22,22,0.205,60.711\\n0,6,22,37,1.093,118.170\\n3,6,22,43,0.179,68.138\\n0,6,22,45,1.422,108.368\\n0,8,22,22,0.925,120.144\\n3,8,22,22,0.176,61.507\\n0,10,22,22,0.916,121.411\\n3,10,22,22,0.184,60.603\\n0,11,22,11,1.610,102.859\\n0,11,22,22,1.062,116.086\\n0,12,22,12,1.067,114.988\\n0,12,22,22,0.925,117.971\\n0,13,22,13,1.085,113.473\\n0,13,22,22,0.908,117.606\\n0,15,22,22,0.918,120.404\\n0,17,22,22,1.029,111.106\\n0,18,22,22,1.078,109.054\\n0,20,22,22,0.812,122.430\\n4,20,22,22,1.198,92.930\\n0,22,22,22,0.787,124.070\\n3,22,22,22,0.171,60.000\\n4,22,22,22,1.225,91.653\\n0,22,22,30,0.777,124.514\\n0,22,22,34,0.983,116.415\\n0,22,22,37,0.847,120.135\\n3,22,22,40,0.178,61.163\\n0,22,22,41,0.886,118.045\\n3,22,22,43,0.176,61.536\\n0,22,22,45,1.022,114.380\\n0,34,22,41,1.008,116.095\\n0,37,22,37,0.846,120.774\\n3,37,22,37,0.237,51.029\\n0,37,22,43,0.936,119.789\\n0,0,25,0,0.000,106.500\\n4,0,25,0,0.000,89.100\\n0,1,25,1,1.072,99.158\\n0,1,25,3,1.268,91.423\\n0,1,25,6,1.394,98.288\\n0,1,25,8,1.150,101.775\\n0,1,25,12,1.180,98.890\\n0,1,25,15,1.074,103.431\\n0,1,25,25,0.852,100.707\\n0,1,25,32,1.186,107.891\\n0,1,25,37,0.972,104.924\\n0,1,25,40,1.358,93.644\\n0,1,25,43,1.190,98.760\\n0,1,25,71,0.537,109.363\\n0,1,25,72,0.976,111.306\\n0,2,25,6,1.302,102.892\\n0,2,25,8,1.022,109.148\\n0,2,25,10,1.629,85.839\\n0,2,25,32,0.983,120.127\\n0,2,25,72,0.863,119.249\\n0,3,25,6,1.277,103.026\\n0,3,25,32,1.164,109.307\\n0,6,25,6,1.769,99.311\\n0,6,25,8,1.419,104.161\\n0,6,25,9,1.403,105.407\\n0,6,25,10,1.448,102.194\\n0,6,25,11,1.680,99.260\\n0,6,25,12,1.489,98.818\\n0,6,25,32,1.501,109.688\\n0,6,25,37,1.312,102.280\\n0,6,25,39,1.617,97.314\\n0,6,25,40,1.380,105.601\\n0,6,25,71,0.844,100.242\\n0,6,25,72,1.219,112.058\\n0,8,25,8,1.224,105.341\\n0,8,25,10,1.214,104.893\\n0,8,25,11,1.411,101.655\\n0,8,25,20,1.010,108.094\\n0,8,25,32,1.217,114.325\\n0,8,25,37,1.106,104.742\\n0,8,25,40,1.265,103.617\\n0,8,25,72,0.977,117.767\\n0,9,25,32,1.232,114.493\\n0,10,25,10,1.346,98.856\\n0,10,25,32,1.273,110.640\\n0,10,25,72,1.021,114.624\\n0,11,25,32,1.528,106.045\\n0,12,25,12,1.303,99.224\\n0,12,25,32,1.305,106.320\\n0,15,25,15,1.113,107.673\\n4,15,25,15,1.264,93.138\\n0,15,25,32,1.248,107.964\\n0,15,25,72,0.933,119.729\\n4,20,25,20,1.220,85.039\\n0,20,25,72,0.965,111.595\\n0,25,25,72,0.890,106.612\\n0,32,25,32,1.248,122.857\\n0,32,25,37,1.097,113.430\\n0,32,25,39,1.605,99.255\\n0,32,25,40,1.122,119.057\\n0,32,25,43,1.257,110.308\\n0,32,25,57,1.219,108.740\\n0,32,25,63,1.211,108.168\\n0,32,25,71,0.642,117.733\\n0,32,25,72,1.050,121.823\\n0,37,25,37,0.947,107.124\\n0,37,25,40,0.965,112.107\\n0,37,25,72,0.868,118.776\\n0,40,25,40,1.496,95.270\\n0,40,25,72,1.035,114.441\\n0,57,25,57,1.059,102.995\\n0,63,25,63,1.032,102.950\\n0,71,25,71,0.419,100.483\\n0,0,26,0,0.000,98.100\\n4,0,26,0,0.000,83.600\\n0,1,26,1,1.085,98.054\\n0,1,26,8,1.263,96.331\\n0,1,26,10,1.115,102.175\\n0,1,26,12,1.147,98.926\\n0,1,26,15,1.141,100.260\\n0,1,26,20,1.075,98.171\\n0,1,26,26,0.997,92.571\\n0,1,26,37,1.081,98.754\\n0,1,26,71,0.672,97.353\\n0,6,26,6,1.833,97.935\\n0,6,26,11,1.663,100.061\\n0,6,26,12,1.442,99.021\\n0,8,26,8,1.189,105.662\\n0,8,26,12,1.028,110.069\\n0,8,26,34,1.509,93.096\\n0,11,26,11,1.757,94.795\\n0,12,26,15,1.271,99.730\\n0,12,26,34,1.508,90.565\\n0,12,26,40,1.165,103.783\\n0,12,26,71,0.704,96.577\\n0,15,26,26,1.047,96.592\\n0,15,26,40,1.543,91.164\\n4,20,26,20,1.252,83.624\\n0,71,26,71,0.473,94.470\\n0,0,30,0,0.000,134.200\\n1,0,30,0,0.000,131.800\\n4,0,30,0,0.000,97.700\\n7,0,30,0,0.000,92.300\\n1,2,30,3,0.778,128.756\\n0,2,30,15,0.805,130.439\\n0,2,30,20,0.727,132.187\\n0,2,30,22,0.737,131.100\\n1,2,30,30,0.751,132.225\\n1,3,30,4,0.721,134.566\\n1,3,30,5,0.410,135.975\\n1,3,30,6,0.845,137.596\\n1,3,30,20,0.714,130.677\\n7,3,30,20,1.280,89.957\\n1,3,30,30,0.857,122.418\\n7,3,30,30,1.260,93.102\\n0,4,30,20,0.690,136.444\\n0,5,30,20,0.390,131.835\\n0,5,30,30,0.364,132.652\\n0,6,30,30,0.876,139.045\\n0,15,30,15,0.876,130.718\\n4,15,30,15,1.239,101.359\\n0,15,30,30,0.782,132.228\\n4,15,30,30,1.141,100.902\\n4,20,30,30,1.117,95.513\\n7,20,30,30,1.191,93.909\\n0,20,30,40,0.769,134.526\\n1,20,30,67,0.704,138.631\\n4,22,30,22,1.179,93.007\\n8,30,30,30,1.230,93.732\\n0,30,30,40,0.706,145.470\\n1,30,30,67,0.907,125.792\\n0,0,34,0,0.000,109.400\\n4,0,34,0,0.000,89.400\\n0,1,34,1,0.862,112.251\\n0,1,34,2,1.154,109.212\\n0,1,34,8,1.330,106.399\\n0,1,34,9,1.166,112.989\\n0,1,34,10,1.388,104.291\\n0,1,34,20,1.201,106.135\\n0,1,34,26,0.913,112.004\\n0,1,34,36,0.576,111.206\\n0,1,34,37,1.141,109.045\\n0,2,34,36,0.694,112.000\\n0,8,34,36,0.796,109.753\\n0,9,34,36,0.793,108.649\\n0,10,34,36,0.828,108.000\\n4,20,34,20,1.448,89.411\\n0,20,34,36,0.665,112.526\\n0,22,34,36,0.694,110.000\\n0,36,34,36,0.578,107.787\\n0,36,34,37,0.717,108.668\\n0,36,34,43,0.840,108.000\\n0,0,37,0,0.000,118.800\\n1,0,37,0,0.000,115.900\\n3,0,37,0,0.000,64.700\\n4,0,37,0,0.000,91.800\\n0,1,37,37,0.803,120.419\\n0,1,37,38,0.992,118.432\\n0,1,37,58,1.027,116.528\\n0,1,37,63,0.837,123.024\\n0,1,37,64,0.821,124.073\\n0,1,37,69,1.038,115.506\\n1,2,37,37,0.712,119.695\\n1,2,37,38,1.029,117.220\\n1,3,37,37,0.798,114.475\\n7,3,37,37,1.320,90.784\\n1,3,37,38,1.109,112.724\\n1,3,37,58,1.134,111.566\\n1,3,37,69,1.119,111.916\\n1,4,37,37,0.906,119.614\\n1,4,37,38,1.087,114.623\\n0,5,37,37,0.563,120.571\\n0,5,37,38,0.693,115.588\\n0,5,37,58,0.699,113.316\\n0,5,37,63,0.702,121.238\\n0,5,37,64,0.523,121.446\\n0,5,37,69,0.794,111.638\\n0,5,37,78,0.563,119.432\\n0,6,37,37,0.968,116.495\\n0,6,37,38,1.324,115.886\\n0,6,37,64,1.139,118.868\\n1,9,37,37,0.974,121.003\\n1,9,37,38,1.137,117.591\\n0,10,37,37,1.025,117.918\\n0,10,37,38,1.088,120.135\\n0,10,37,58,1.077,120.925\\n0,11,37,37,1.094,118.065\\n0,11,37,38,1.223,117.328\\n0,12,37,37,0.950,118.495\\n0,12,37,38,1.126,113.859\\n0,12,37,64,1.076,111.320\\n0,13,37,37,0.917,118.117\\n0,14,37,37,0.861,118.045\\n0,15,37,37,0.755,121.037\\n0,15,37,38,1.027,119.421\\n0,15,37,64,0.976,117.125\\n0,17,37,37,0.930,119.408\\n0,17,37,38,1.179,110.828\\n0,17,37,64,0.946,118.357\\n0,18,37,37,1.029,113.991\\n0,18,37,38,1.278,106.908\\n0,18,37,64,0.975,117.029\\n0,19,37,37,0.660,125.278\\n0,20,37,37,0.744,129.614\\n4,20,37,37,1.217,93.425\\n0,22,37,37,0.805,125.777\\n3,22,37,37,0.152,64.704\\n0,22,37,38,0.904,124.494\\n0,25,37,37,0.718,121.600\\n0,26,37,37,0.691,122.967\\n0,34,37,37,1.030,116.423\\n0,34,37,64,1.074,113.905\\n0,35,37,37,0.964,131.858\\n0,35,37,38,1.187,124.980\\n0,37,37,37,0.669,119.977\\n1,37,37,37,0.864,122.227\\n4,37,37,37,1.380,90.193\\n0,37,37,38,0.596,126.139\\n1,37,37,38,1.033,117.271\\n0,37,37,39,1.038,117.619\\n1,37,37,39,1.078,114.622\\n0,37,37,40,1.045,121.633\\n0,37,37,41,0.892,119.572\\n0,37,37,43,1.013,117.860\\n0,37,37,45,1.114,112.337\\n0,37,37,46,0.999,120.038\\n0,37,37,55,1.002,120.163\\n0,37,37,56,1.020,117.801\\n1,37,37,57,0.881,120.932\\n0,37,37,58,1.014,120.052\\n1,37,37,58,1.127,112.251\\n0,37,37,61,1.072,115.515\\n0,37,37,62,0.941,124.384\\n0,37,37,63,0.478,111.243\\n1,37,37,63,0.894,120.190\\n0,37,37,64,0.423,112.567\\n1,37,37,64,0.912,118.973\\n1,37,37,67,1.064,114.980\\n0,37,37,69,0.872,116.778\\n1,37,37,69,1.042,116.438\\n0,37,37,78,0.974,116.439\\n0,37,37,81,1.034,115.664\\n1,37,37,81,1.104,111.759\\n0,38,37,38,0.725,128.938\\n0,38,37,40,1.024,123.755\\n0,38,37,43,1.165,115.355\\n0,38,37,58,0.979,128.362\\n1,38,37,58,1.257,111.356\\n0,38,37,62,1.148,118.349\\n0,38,37,63,1.095,115.386\\n1,38,37,63,1.076,114.910\\n0,38,37,64,1.070,116.605\\n1,38,37,67,1.289,109.610\\n0,40,37,58,1.103,119.417\\n0,40,37,63,0.943,122.904\\n0,40,37,64,0.931,123.541\\n0,40,37,78,0.931,123.604\\n0,41,37,58,0.967,120.535\\n0,45,37,63,1.031,116.781\\n0,45,37,64,1.156,110.199\\n0,45,37,69,1.248,111.041\\n0,58,37,62,1.016,125.987\\n0,58,37,63,1.152,112.628\\n0,58,37,64,1.291,106.250\\n1,58,37,64,1.108,113.166\\n0,58,37,78,1.188,110.842\\n0,0,38,0,0.000,113.800\\n0,37,38,37,1.085,115.406\\n0,37,38,38,1.289,112.016\\n0,37,38,63,1.230,110.181\\n0,37,38,64,1.207,111.032\\n0,37,38,69,1.238,114.692\\n0,37,38,78,1.118,114.813\\n0,38,38,38,1.343,118.516\\n0,0,39,0,0.000,120.700\\n1,0,39,0,0.000,125.400\\n0,1,39,63,0.854,123.380\\n0,1,39,65,1.111,118.049\\n1,2,39,63,0.858,130.275\\n1,2,39,65,0.900,133.220\\n1,3,39,63,0.900,127.045\\n1,3,39,65,1.126,118.909\\n0,6,39,63,1.166,122.985\\n0,6,39,65,1.396,117.707\\n0,8,39,63,1.000,124.868\\n0,8,39,65,1.057,127.145\\n1,9,39,63,0.981,127.725\\n1,9,39,65,1.170,122.487\\n0,10,39,63,1.109,119.788\\n0,10,39,65,1.118,124.961\\n0,18,39,63,1.108,117.061\\n0,23,39,63,0.551,127.770\\n0,23,39,65,0.752,118.352\\n0,23,39,78,0.581,124.000\\n0,25,39,63,0.667,134.561\\n0,25,39,65,0.944,118.135\\n0,37,39,63,0.900,127.009\\n1,37,39,63,0.922,125.312\\n1,37,39,65,1.080,121.090\\n0,40,39,63,0.984,126.832\\n0,45,39,63,1.056,121.641\\n0,45,39,65,1.354,112.464\\n0,63,39,63,1.152,109.599\\n1,63,39,63,0.887,128.078\\n0,63,39,64,1.004,120.577\\n1,63,39,64,0.899,126.936\\n0,63,39,65,1.284,112.087\\n1,63,39,65,1.146,117.990\\n0,63,39,78,1.300,105.800\\n0,64,39,65,1.007,126.117\\n0,65,39,65,1.462,116.898\\n0,0,40,0,0.000,115.000\\n3,0,40,0,0.000,57.800\\n0,1,40,1,1.064,113.703\\n0,1,40,2,0.998,118.873\\n0,1,40,3,1.007,118.319\\n0,1,40,6,1.421,109.742\\n0,1,40,9,1.203,113.198\\n0,1,40,10,1.232,111.320\\n0,1,40,11,1.436,104.665\\n0,1,40,12,1.202,109.320\\n0,1,40,20,1.047,114.970\\n0,1,40,25,0.912,114.483\\n0,1,40,28,0.689,112.374\\n0,1,40,30,1.024,118.604\\n0,1,40,37,0.835,107.349\\n0,1,40,39,1.254,110.622\\n0,1,40,40,1.183,114.011\\n0,1,40,45,1.223,112.226\\n0,1,40,46,1.025,122.982\\n0,1,40,63,1.084,114.473\\n0,1,40,64,1.064,115.483\\n0,2,40,2,0.997,120.651\\n0,2,40,3,0.981,121.660\\n0,2,40,6,1.316,115.626\\n0,2,40,9,1.118,119.196\\n0,2,40,10,1.142,117.260\\n0,2,40,19,0.732,128.087\\n0,2,40,28,0.767,111.053\\n0,2,40,37,1.049,117.022\\n0,2,40,39,1.192,115.106\\n0,2,40,40,1.060,122.253\\n0,2,40,63,1.008,120.447\\n0,3,40,3,0.883,128.240\\n0,3,40,8,1.259,111.557\\n0,3,40,9,1.106,119.822\\n0,3,40,10,1.269,111.261\\n0,3,40,12,1.146,112.718\\n0,3,40,15,1.105,117.871\\n0,3,40,20,1.130,112.139\\n0,3,40,22,1.072,114.420\\n0,3,40,25,0.820,121.724\\n0,3,40,28,0.700,114.808\\n0,3,40,37,1.056,116.655\\n0,3,40,40,1.147,117.511\\n0,3,40,64,1.132,113.602\\n0,6,40,28,0.889,110.000\\n0,8,40,28,0.764,111.915\\n0,8,40,37,1.216,112.920\\n0,8,40,63,1.351,108.085\\n0,9,40,28,0.774,112.549\\n0,9,40,37,1.236,112.751\\n0,10,40,28,0.799,109.725\\n0,10,40,37,1.316,108.686\\n0,11,40,37,1.546,101.687\\n0,15,40,15,1.154,121.497\\n3,22,40,22,0.204,57.777\\n0,22,40,37,1.066,114.220\\n0,22,40,63,1.126,112.006\\n0,25,40,28,0.485,120.000\\n0,25,40,37,0.868,117.977\\n0,26,40,28,0.506,118.000\\n0,26,40,37,0.812,122.336\\n0,28,40,28,0.560,109.160\\n0,28,40,30,0.656,119.230\\n0,28,40,37,0.662,110.288\\n0,28,40,39,0.789,110.951\\n0,28,40,40,0.782,111.731\\n0,28,40,45,0.674,120.000\\n0,28,40,54,0.738,118.714\\n0,28,40,63,0.670,116.188\\n0,28,40,64,0.659,117.057\\n0,28,40,78,0.618,119.829\\n0,37,40,37,1.004,119.018\\n0,37,40,45,1.376,106.579\\n0,37,40,54,1.394,107.777\\n0,37,40,63,1.060,116.867\\n0,45,40,64,1.283,111.332\\n0,45,40,78,1.410,105.678\\n0,46,40,64,1.189,116.345\\n0,0,41,0,0.000,118.300\\n0,1,41,32,1.209,114.689\\n0,1,41,72,1.024,114.936\\n0,2,41,32,1.309,115.461\\n0,3,41,32,1.210,114.810\\n0,5,41,32,0.912,113.960\\n0,6,41,72,1.319,113.899\\n0,9,41,72,1.089,117.795\\n0,10,41,72,1.039,121.240\\n0,20,41,32,1.090,120.965\\n0,22,41,32,1.079,122.748\\n0,32,41,32,1.181,130.600\\n0,32,41,37,1.136,118.871\\n0,32,41,41,1.401,107.694\\n0,37,41,72,1.035,114.919\\n0,55,41,72,0.982,123.972\\n0,62,41,72,1.052,120.425\\n0,72,41,72,0.912,130.128\\n0,72,41,80,1.094,112.175\\n0,0,43,0,0.000,113.300\\n0,1,43,1,1.109,110.353\\n0,1,43,2,1.052,114.321\\n0,1,43,3,0.938,121.050\\n0,1,43,4,0.927,123.204\\n0,1,43,18,1.116,115.011\\n0,1,43,25,0.853,115.637\\n0,1,43,28,0.646,113.739\\n0,1,43,37,1.083,112.511\\n0,1,43,45,1.140,115.034\\n0,1,43,64,1.025,116.188\\n0,2,43,18,1.227,110.268\\n0,3,43,18,1.011,121.488\\n0,3,43,20,1.053,113.913\\n4,3,43,20,1.327,93.575\\n0,3,43,28,0.626,117.464\\n0,4,43,28,0.616,122.000\\n0,4,43,45,1.253,112.373\\n0,6,43,18,1.673,104.311\\n3,6,43,22,0.279,54.827\\n0,6,43,28,0.868,110.000\\n0,6,43,37,1.519,105.833\\n0,6,43,43,1.603,108.652\\n0,8,43,18,1.511,104.036\\n0,8,43,28,0.794,110.320\\n0,15,43,15,1.558,103.008\\n0,15,43,18,1.409,108.458\\n0,17,43,18,1.367,111.904\\n0,18,43,18,1.144,120.463\\n0,18,43,20,0.961,123.768\\n4,18,43,20,1.451,92.867\\n0,18,43,22,1.171,112.379\\n0,18,43,28,0.628,116.881\\n0,18,43,34,1.324,111.347\\n0,18,43,37,1.185,112.132\\n0,18,43,43,1.379,109.036\\n0,18,43,64,1.108,116.279\\n0,20,43,28,0.626,115.000\\n3,22,43,22,0.209,57.032\\n0,25,43,28,0.468,118.274\\n0,28,43,28,0.477,112.596\\n0,28,43,34,0.810,110.000\\n0,28,43,37,0.669,113.350\\n0,28,43,64,0.658,115.293\\n0,0,44,0,0.000,91.600\\n0,63,44,63,1.962,88.495\\n0,63,44,65,2.261,94.137\\n0,63,44,78,1.738,86.270\\n0,63,44,80,1.748,86.194\\n0,65,44,65,1.530,101.147\\n0,65,44,80,1.629,93.534\\n0,78,44,78,0.903,119.401\\n0,0,45,0,0.000,116.700\\n0,1,45,32,1.260,118.182\\n0,2,45,32,1.294,118.082\\n0,3,45,32,1.343,115.589\\n0,6,45,32,1.787,111.682\\n0,8,45,32,1.515,115.695\\n0,9,45,32,1.339,123.850\\n0,10,45,32,1.578,112.194\\n0,20,45,32,1.245,118.893\\n0,22,45,32,1.293,117.503\\n0,32,45,32,1.467,128.036\\n0,32,45,37,1.298,117.857\\n0,32,45,39,1.715,107.633\\n0,32,45,40,1.497,116.432\\n0,32,45,43,1.545,113.711\\n0,32,45,63,1.335,116.765\\n0,32,45,64,1.330,116.908\\n0,32,45,78,1.394,114.962\\n0,0,46,0,0.000,111.000\\n0,1,46,7,1.440,110.492\\n0,2,46,7,1.489,112.709\\n0,7,46,8,1.724,109.817\\n0,7,46,37,1.519,110.569\\n0,7,46,40,1.650,111.405\\n0,0,48,0,0.000,118.400\\n0,3,48,18,1.065,122.928\\n0,18,48,28,0.736,113.969\\n0,0,49,0,0.000,111.400\\n0,50,49,50,0.522,111.433\\n0,0,51,0,0.000,111.400\\n0,3,51,52,0.913,111.360\\n0,0,53,0,0.000,180.000\\n0,3,53,47,0.574,180.000\\n0,9,53,47,0.649,180.000\\n0,0,54,0,0.000,119.500\\n1,0,54,0,0.000,115.700\\n0,1,54,1,0.923,121.439\\n0,1,54,3,0.707,124.083\\n0,1,54,36,0.294,122.881\\n0,3,54,6,1.376,115.398\\n1,3,54,9,1.128,114.457\\n0,3,54,36,0.685,119.698\\n1,3,54,40,1.105,116.439\\n0,6,54,36,0.826,115.000\\n0,9,54,40,1.195,123.403\\n0,36,54,36,0.300,113.943\\n0,0,55,0,0.000,120.800\\n0,1,55,1,0.951,119.946\\n0,1,55,36,0.307,126.448\\n0,1,55,37,1.032,117.035\\n0,1,55,57,0.751,120.606\\n0,1,55,80,0.972,121.082\\n0,2,55,3,1.041,116.994\\n0,2,55,36,0.621,120.000\\n0,2,55,57,1.047,118.847\\n0,3,55,9,1.053,121.298\\n0,3,55,36,0.567,124.000\\n0,3,55,57,0.953,123.573\\n0,3,55,62,1.041,122.163\\n0,6,55,36,0.833,114.000\\n0,6,55,57,1.408,112.958\\n0,8,55,36,0.656,122.000\\n0,8,55,57,1.259,113.209\\n0,9,55,57,1.001,126.373\\n0,18,55,36,0.578,125.000\\n0,18,55,57,1.054,122.320\\n0,36,55,36,0.355,117.729\\n0,36,55,37,0.623,120.405\\n0,36,55,41,0.485,134.689\\n0,36,55,57,0.663,119.499\\n0,36,55,64,0.632,118.000\\n0,36,55,80,0.684,115.880\\n0,37,55,57,1.110,115.816\\n0,41,55,57,0.911,126.801\\n0,57,55,62,1.054,123.366\\n0,57,55,64,1.026,119.465\\n0,0,56,0,0.000,119.100\\n0,1,56,36,0.472,123.585\\n0,1,56,57,0.774,119.267\\n0,2,56,9,1.181,116.311\\n0,2,56,36,0.582,124.037\\n0,2,56,57,1.029,118.607\\n0,3,56,36,0.585,121.521\\n0,3,56,57,0.885,126.567\\n0,8,56,36,0.785,111.009\\n0,8,56,57,1.288,110.357\\n0,9,56,36,0.683,120.258\\n0,9,56,57,1.186,115.661\\n0,36,56,36,0.450,117.534\\n0,36,56,37,0.602,120.000\\n0,36,56,57,0.646,120.649\\n0,36,56,63,0.579,123.766\\n0,36,56,80,0.625,120.000\\n0,37,56,57,1.058,115.912\\n0,57,56,63,1.019,118.915\\n0,0,57,0,0.000,120.900\\n1,0,57,0,0.000,118.100\\n0,1,57,55,1.017,117.865\\n1,3,57,55,1.085,115.034\\n0,5,57,55,0.674,116.747\\n0,6,57,55,1.279,119.257\\n1,9,57,55,0.980,128.143\\n0,12,57,55,1.058,118.327\\n0,15,57,55,0.983,123.646\\n0,25,57,55,0.790,122.889\\n1,37,57,55,0.967,121.379\\n0,55,57,55,0.855,126.476\\n1,55,57,63,1.016,118.800\\n1,55,57,64,1.039,117.166\\n0,56,57,56,1.342,120.010\\n0,0,58,0,0.000,119.000\\n1,0,58,0,0.000,119.900\\n0,1,58,37,1.003,119.236\\n0,1,58,64,0.961,121.070\\n1,3,58,37,0.983,121.506\\n0,6,58,37,1.371,114.370\\n0,18,58,37,1.005,120.665\\n0,36,58,37,0.650,118.713\\n0,36,58,63,0.650,118.000\\n0,36,58,64,0.620,120.051\\n0,37,58,37,0.996,122.710\\n1,37,58,37,1.036,118.260\\n0,37,58,63,1.087,116.989\\n0,37,58,64,1.061,117.942\\n0,0,59,0,0.000,105.600\\n0,63,59,63,1.273,106.313\\n0,63,59,65,1.750,107.755\\n0,63,59,78,1.713,101.179\\n0,63,59,80,1.599,105.341\\n0,65,59,65,1.754,107.683\\n0,65,59,78,1.644,107.142\\n0,65,59,82,1.864,103.624\\n0,0,61,0,0.000,180.000\\n0,1,61,60,0.475,180.000\\n0,37,61,42,0.536,180.000\\n0,37,61,60,0.484,180.000\\n0,0,62,0,0.000,108.300\\n0,1,62,18,1.316,109.273\\n0,2,62,23,0.817,105.542\\n0,3,62,3,1.318,106.821\\n0,3,62,18,1.311,111.144\\n0,3,62,55,1.528,102.414\\n0,9,62,18,1.515,107.660\\n0,18,62,37,1.229,114.618\\n0,18,62,41,1.366,108.722\\n0,18,62,63,1.427,106.284\\n0,18,62,64,1.317,110.366\\n0,0,63,0,0.000,123.300\\n1,0,63,0,0.000,124.300\\n0,1,63,39,0.935,121.832\\n0,1,63,44,0.902,122.101\\n0,1,63,59,1.175,115.253\\n0,1,63,64,0.737,131.378\\n0,1,63,66,0.865,127.610\\n1,2,63,39,1.027,117.864\\n1,2,63,59,0.987,127.524\\n1,2,63,64,0.730,133.818\\n1,2,63,66,0.828,132.383\\n1,3,63,39,0.900,125.395\\n1,3,63,44,0.935,120.481\\n1,3,63,59,1.158,117.219\\n1,3,63,64,0.766,130.065\\n1,3,63,66,0.950,123.049\\n1,4,63,44,0.848,126.602\\n1,4,63,59,1.211,114.804\\n1,4,63,64,0.795,127.817\\n0,5,63,39,0.617,121.127\\n0,5,63,44,0.393,126.141\\n0,5,63,59,0.784,114.076\\n0,5,63,64,0.577,131.721\\n0,5,63,66,0.643,125.134\\n0,5,63,78,0.482,130.000\\n0,5,63,81,0.588,124.000\\n0,6,63,39,1.234,120.509\\n0,6,63,59,1.564,113.514\\n0,6,63,64,0.951,131.301\\n1,9,63,39,1.068,121.741\\n1,9,63,44,0.963,124.598\\n1,9,63,64,0.804,134.237\\n1,9,63,66,0.912,133.020\\n0,10,63,39,1.084,120.356\\n0,10,63,44,1.112,115.732\\n0,10,63,59,1.307,116.218\\n0,10,63,64,0.867,128.750\\n0,10,63,66,0.981,127.617\\n0,12,63,39,1.111,114.439\\n0,12,63,44,1.035,119.321\\n0,12,63,64,0.838,126.226\\n0,12,63,66,0.980,122.280\\n0,15,63,39,1.064,117.958\\n0,15,63,44,0.952,125.654\\n0,15,63,64,0.813,129.284\\n0,15,63,66,0.962,124.490\\n0,18,63,44,1.110,116.077\\n0,18,63,64,0.740,135.028\\n0,19,63,39,0.647,132.369\\n0,19,63,64,0.517,141.986\\n0,25,63,39,0.597,139.439\\n0,25,63,66,0.776,122.699\\n0,35,63,59,1.351,124.475\\n0,35,63,64,0.808,145.098\\n0,37,63,39,1.011,132.046\\n1,37,63,39,0.934,123.481\\n0,37,63,44,0.764,133.930\\n1,37,63,44,0.915,121.637\\n0,37,63,59,1.041,124.836\\n1,37,63,59,1.214,114.211\\n0,37,63,64,0.679,122.881\\n1,37,63,64,0.742,131.784\\n0,37,63,66,0.742,140.668\\n1,37,63,66,0.871,128.130\\n0,38,63,39,1.022,124.814\\n0,38,63,64,0.910,126.513\\n0,39,63,39,0.910,131.461\\n1,39,63,39,1.105,119.174\\n0,39,63,40,1.112,119.261\\n1,39,63,44,1.144,114.126\\n0,39,63,45,1.166,115.115\\n1,39,63,57,0.931,123.222\\n0,39,63,58,1.042,123.231\\n1,39,63,63,0.949,122.353\\n0,39,63,64,0.813,107.255\\n1,39,63,64,0.943,123.441\\n0,39,63,66,1.012,110.865\\n1,39,63,66,1.095,120.834\\n0,40,63,44,0.943,125.881\\n0,40,63,59,1.298,117.078\\n0,40,63,64,0.845,130.865\\n0,40,63,66,0.940,130.926\\n0,44,63,45,1.125,114.633\\n0,44,63,56,1.030,120.178\\n0,44,63,62,0.991,122.899\\n1,44,63,63,0.894,123.341\\n0,44,63,64,0.853,108.480\\n0,44,63,66,0.854,114.516\\n0,44,63,72,0.915,129.129\\n0,44,63,78,1.217,106.254\\n0,44,63,81,1.278,108.400\\n0,45,63,59,1.467,108.824\\n0,45,63,64,0.940,122.725\\n0,45,63,66,1.164,116.157\\n0,56,63,66,0.875,134.888\\n1,57,63,66,0.945,123.246\\n0,58,63,64,0.965,122.522\\n0,59,63,64,1.035,110.108\\n0,59,63,66,1.181,115.592\\n0,62,63,66,0.976,128.662\\n1,63,63,64,0.776,129.499\\n1,63,63,66,0.929,124.689\\n0,66,63,72,0.911,129.610\\n0,0,64,0,0.000,121.400\\n1,0,64,0,0.000,121.700\\n0,1,64,63,0.776,128.041\\n0,1,64,64,0.766,128.061\\n0,1,64,65,0.963,120.640\\n0,1,64,66,0.952,120.685\\n0,1,64,81,1.050,114.735\\n0,1,64,82,1.013,117.414\\n1,2,64,63,0.861,122.947\\n1,2,64,64,0.816,125.433\\n1,2,64,65,0.907,125.781\\n1,2,64,66,1.010,118.540\\n1,2,64,82,0.923,124.473\\n1,3,64,63,0.828,124.890\\n1,3,64,64,0.774,128.286\\n1,3,64,65,0.973,120.954\\n1,3,64,66,0.949,121.821\\n1,3,64,81,0.995,118.754\\n1,4,64,63,0.845,123.889\\n1,4,64,64,0.804,126.131\\n1,4,64,65,1.036,117.401\\n1,4,64,66,1.010,118.254\\n0,5,64,63,0.501,126.170\\n0,5,64,64,0.546,127.405\\n0,5,64,65,0.664,118.412\\n0,5,64,66,0.699,120.478\\n0,5,64,78,0.482,127.331\\n0,5,64,81,0.605,120.000\\n0,5,64,82,0.597,122.000\\n0,6,64,63,1.112,120.985\\n0,6,64,64,1.043,123.922\\n0,6,64,65,1.348,115.506\\n0,6,64,66,1.156,123.890\\n1,9,64,64,0.959,120.924\\n1,9,64,65,1.098,119.529\\n1,9,64,66,1.013,123.743\\n0,10,64,63,0.937,123.695\\n0,10,64,64,0.893,125.735\\n0,10,64,65,1.016,124.788\\n0,10,64,66,1.065,121.125\\n0,12,64,63,0.845,126.259\\n0,12,64,64,0.869,124.058\\n0,12,64,65,1.020,120.198\\n0,12,64,66,0.971,122.900\\n0,13,64,63,0.845,123.004\\n0,13,64,64,0.883,120.111\\n0,15,64,63,0.870,124.581\\n0,15,64,64,0.882,123.309\\n0,15,64,65,1.008,121.049\\n0,15,64,66,0.990,121.826\\n0,18,64,65,1.065,118.404\\n0,18,64,66,1.067,118.002\\n0,37,64,63,0.906,117.966\\n0,37,64,64,0.854,136.087\\n1,37,64,64,0.772,128.673\\n0,37,64,65,0.799,134.844\\n1,37,64,65,0.942,122.866\\n0,37,64,66,0.845,130.337\\n0,37,64,78,0.706,135.432\\n0,37,64,81,0.917,124.856\\n0,37,64,82,0.946,123.684\\n1,37,64,82,1.000,119.086\\n0,38,64,63,0.988,121.242\\n0,38,64,64,0.858,129.014\\n0,38,64,65,0.989,127.335\\n0,38,64,66,1.022,124.454\\n0,39,64,64,1.086,114.312\\n0,39,64,65,1.060,122.481\\n1,39,64,65,1.204,114.188\\n1,39,64,66,1.170,115.157\\n0,40,64,63,0.948,123.538\\n0,40,64,64,0.928,123.853\\n0,40,64,65,0.958,129.125\\n0,40,64,81,1.035,123.154\\n0,40,64,82,1.183,115.934\\n0,43,64,63,0.885,126.749\\n0,43,64,64,0.898,124.876\\n0,43,64,65,1.024,123.706\\n0,43,64,66,1.017,123.409\\n0,45,64,63,0.981,120.063\\n0,45,64,64,0.921,123.014\\n0,45,64,65,1.276,110.521\\n0,45,64,66,1.199,113.371\\n0,55,64,64,0.907,124.405\\n0,55,64,65,1.002,125.220\\n1,57,64,65,1.020,117.950\\n1,57,64,66,0.959,121.017\\n0,58,64,63,1.075,115.646\\n0,58,64,64,0.815,131.812\\n0,58,64,66,0.978,126.562\\n0,62,64,64,0.885,126.560\\n0,62,64,65,1.073,121.703\\n0,63,64,64,0.866,108.239\\n1,63,64,64,0.827,124.584\\n0,63,64,66,1.038,111.621\\n0,63,64,78,1.172,105.176\\n0,63,64,81,1.164,110.895\\n0,63,64,82,1.395,101.902\\n0,64,64,64,0.967,115.037\\n0,64,64,65,0.916,113.570\\n1,64,64,66,1.003,118.067\\n0,64,64,78,1.194,103.479\\n0,64,64,82,1.210,108.553\\n0,65,64,66,1.055,115.369\\n0,65,64,81,1.168,116.240\\n0,66,64,66,0.932,129.624\\n0,0,65,0,0.000,104.500\\n0,39,65,64,1.738,101.550\\n0,39,65,66,1.589,106.360\\n0,39,65,82,1.740,101.208\\n0,44,65,64,1.430,103.829\\n0,44,65,66,1.366,110.552\\n0,44,65,78,1.419,104.213\\n0,59,65,64,1.788,103.452\\n0,59,65,81,1.774,104.872\\n0,0,66,0,0.000,106.900\\n0,63,66,64,1.206,103.779\\n0,63,66,66,1.406,106.735\\n0,63,66,78,1.339,105.365\\n0,63,66,81,1.408,106.806\\n0,64,66,65,1.709,107.658\\n0,65,66,66,1.932,111.306\\n0,0,67,0,0.000,119.900\\n1,0,67,0,0.000,116.600\\n0,1,67,3,0.982,120.683\\n0,1,67,9,1.178,115.581\\n0,1,67,32,1.233,119.589\\n0,1,67,67,1.257,111.574\\n1,2,67,32,1.118,126.320\\n1,2,67,67,1.231,113.438\\n0,3,67,23,0.567,128.000\\n0,3,67,32,1.290,120.945\\n1,3,67,37,1.122,113.631\\n1,9,67,30,1.142,118.899\\n0,9,67,32,1.325,125.531\\n1,9,67,37,1.186,115.979\\n0,23,67,32,0.805,120.000\\n1,30,67,32,1.370,114.854\\n1,32,67,37,1.240,120.019\\n0,32,67,67,1.504,117.327\\n1,37,67,67,1.310,110.017\\n0,0,68,0,0.000,108.800\\n0,1,68,1,1.159,108.238\\n0,1,68,23,0.772,107.200\\n0,1,68,32,0.958,110.757\\n0,23,68,23,0.650,104.892\\n0,23,68,32,0.659,112.977\\n0,0,69,0,0.000,120.300\\n0,32,69,37,1.123,121.777\\n0,32,69,38,1.486,117.217\\n0,37,69,37,1.223,116.447\\n0,38,69,38,1.122,125.930\\n0,31,70,31,0.658,103.978\\n0,0,73,0,0.000,106.600\\n0,1,73,32,1.590,100.180\\n0,1,73,72,1.481,96.166\\n0,32,73,32,1.665,115.012\\n0,32,73,72,1.326,115.134\\n0,0,74,0,0.000,113.000\\n0,3,74,7,1.357,113.010\\n0,0,75,0,0.000,94.900\\n0,1,75,3,1.138,96.779\\n0,3,75,19,1.044,91.970\\n0,3,75,71,0.729,95.899\\n0,0,76,0,0.000,107.600\\n0,76,76,76,1.434,109.889\\n0,76,76,78,1.493,103.519\\n0,78,76,78,1.235,109.421\\n0,0,77,0,0.000,109.500\\n0,32,77,32,1.652,109.472\\n0,0,78,0,0.000,121.900\\n1,0,78,0,0.000,126.100\\n0,1,78,78,0.744,130.960\\n0,1,78,81,0.938,121.477\\n1,3,78,78,0.827,125.468\\n1,3,78,81,0.922,123.748\\n0,5,78,76,0.584,123.407\\n0,5,78,78,0.546,128.000\\n0,5,78,79,0.617,122.000\\n0,5,78,81,0.542,109.881\\n1,9,78,78,0.863,129.501\\n1,9,78,81,0.991,125.857\\n0,37,78,76,0.770,137.282\\n0,37,78,78,0.803,128.249\\n0,37,78,81,0.864,128.714\\n0,38,78,78,0.844,130.617\\n0,38,78,81,1.023,123.532\\n0,39,78,64,0.734,138.714\\n0,39,78,78,1.202,109.426\\n0,40,78,76,0.930,130.150\\n0,40,78,78,0.778,135.746\\n0,40,78,81,1.058,121.251\\n0,44,78,63,0.677,141.902\\n0,44,78,64,0.663,142.589\\n0,44,78,66,0.816,134.701\\n0,44,78,78,1.089,111.702\\n0,45,78,76,1.199,114.467\\n0,45,78,78,0.915,125.050\\n0,45,78,81,1.216,112.926\\n0,59,78,64,0.963,128.471\\n0,59,78,65,1.097,128.375\\n0,59,78,78,1.443,105.916\\n0,63,78,64,0.942,117.779\\n0,64,78,65,0.835,131.530\\n0,64,78,78,1.038,111.834\\n0,66,78,78,1.030,118.376\\n0,76,78,76,1.245,113.179\\n0,76,78,78,1.159,111.900\\n0,78,78,78,1.336,99.459\\n0,78,78,81,1.302,105.130\\n0,79,78,81,1.217,114.792\\n0,0,79,0,0.000,103.400\\n0,78,79,81,1.569,102.043\\n0,79,79,81,1.625,104.857\\n0,0,80,0,0.000,121.900\\n1,0,80,0,0.000,128.200\\n0,1,80,81,0.864,127.147\\n1,3,80,81,0.886,128.181\\n0,5,80,81,0.651,125.682\\n0,18,80,81,1.032,120.869\\n0,41,80,81,0.909,125.057\\n0,44,80,55,0.918,127.755\\n0,44,80,81,1.184,112.411\\n0,55,80,59,1.254,120.263\\n0,55,80,81,0.991,127.612\\n0,56,80,81,1.003,126.038\\n0,59,80,81,1.439,112.030\\n0,81,80,81,1.205,108.609\\n0,0,81,0,0.000,119.500\\n0,1,81,63,0.996,120.129\\n0,1,81,64,0.978,119.970\\n0,1,81,78,0.879,126.535\\n0,1,81,79,1.144,116.113\\n0,1,81,80,0.895,126.324\\n1,2,81,78,0.927,125.080\\n1,2,81,80,0.895,128.399\\n1,9,81,78,1.015,124.270\\n1,9,81,80,1.106,120.028\\n0,36,81,64,0.522,130.295\\n0,36,81,66,0.583,128.738\\n0,36,81,78,0.578,124.658\\n0,36,81,80,0.575,124.787\\n0,37,81,64,0.929,122.408\\n1,37,81,64,0.983,119.722\\n0,37,81,65,1.184,114.158\\n1,37,81,65,1.281,110.477\\n1,37,81,78,0.884,126.208\\n1,37,81,80,0.940,123.333\\n0,63,81,64,1.115,114.945\\n0,64,81,65,1.075,122.099\\n0,64,81,80,1.143,113.176\\n0,66,81,80,1.067,122.250\\n0,78,81,80,0.957,110.556\\n0,79,81,80,1.379,107.936\\n0,32,82,59,1.666,114.660\\n0,32,82,64,1.075,131.706\\n0,32,82,65,1.238,129.293\\n0,59,82,64,1.563,105.660\\n0,64,82,65,1.281,112.955\\n');this.a=a};\nZ3(326,1,{},Qrb.UB);_.Lb=function VB(a,b){return Erb.X5(this.b[a][b])};_.Mb=function WB(){return this.b.length};Drb.z$=B5(326);Qrb.XB=function XB(a,b){return a.a[Prb.SA(0,b,0,a.a.length,true,a)][6]>0};Qrb.YB=function YB(a,b){return a.a[Prb.SA(0,b,0,a.a.length,true,a)][2]};Qrb.ZB=function ZB(a){return a.a.length};Qrb.$B=function $B(a,b){var c;c=Prb.SA(0,b,0,a.a.length,true,a);return c>=0&&a.a[c][7]>0};Qrb._B=function _B(a,b){return a.a[Prb.SA(0,b,0,a.a.length,true,a)][5]};Qrb.aC=function aC(a,b){return a.a[Prb.SA(0,b,0,a.a.length,true,a)][4]};Qrb.bC=function bC(a,b){return a.a[Prb.SA(0,b,0,a.a.length,true,a)][8]>0};Qrb.cC=function cC(a,b){return a.a[Prb.SA(0,b,0,a.a.length,true,a)][3]};Qrb.dC=function dC(){this.a=Prb.lA('95\\nint,int,int,int,int,int,int,int,int\\n1,6,4,4,0,0,0,0,0\\n2,6,3,4,0,2,0,0,1\\n3,6,3,4,0,2,0,0,1\\n4,6,2,4,0,3,0,1,1\\n5,1,1,1,0,0,0,0,0\\n6,8,2,2,1,0,0,0,0\\n7,8,1,2,0,2,0,0,0\\n8,7,3,3,1,0,0,0,0\\n9,7,2,3,0,2,0,0,1\\n10,7,3,3,1,1,0,0,0\\n11,9,1,1,1,0,0,0,0\\n12,17,1,1,1,0,0,0,0\\n13,35,1,1,1,0,0,0,0\\n14,53,1,1,1,0,0,0,0\\n15,16,2,2,1,0,0,0,0\\n16,16,1,2,0,2,0,0,0\\n17,16,3,4,0,2,0,0,0\\n18,16,4,4,0,0,0,0,0\\n19,14,4,4,0,0,0,0,0\\n20,6,4,4,0,0,0,0,0\\n21,1,1,1,0,0,0,0,0\\n22,6,4,4,0,0,0,0,0\\n23,1,1,1,0,0,0,0,0\\n24,1,1,1,0,0,0,0,0\\n25,15,4,4,0,0,0,0,0\\n26,15,3,3,1,0,0,0,0\\n27,1,1,1,0,0,0,0,0\\n28,1,1,1,0,0,0,0,0\\n29,1,1,1,0,0,0,0,0\\n30,6,3,4,0,2,0,0,1\\n31,1,1,1,0,0,0,0,0\\n32,8,1,12,1,1,0,0,0\\n33,1,1,1,0,0,0,0,0\\n34,7,4,4,0,0,0,0,0\\n35,8,1,1,1,1,0,0,0\\n36,1,1,1,0,0,0,0,0\\n37,6,3,4,0,2,1,0,1\\n38,7,2,3,0,2,1,0,0\\n39,7,3,3,1,1,1,0,1\\n40,7,3,3,1,0,0,0,0\\n41,6,3,4,0,1,0,0,0\\n42,7,1,3,0,3,0,0,0\\n43,7,3,3,1,0,0,0,0\\n44,16,2,2,1,1,1,0,0\\n45,7,3,4,0,2,0,0,0\\n46,7,2,3,0,2,0,0,0\\n47,7,1,2,0,2,0,0,0\\n48,7,2,2,0,0,0,0,0\\n49,8,3,3,0,0,0,0,0\\n50,1,1,1,0,0,0,0,0\\n51,8,2,3,0,2,0,0,0\\n52,1,1,1,0,0,0,0,0\\n53,7,2,4,0,2,0,1,0\\n54,7,3,4,0,2,0,0,1\\n55,7,3,34,0,1,0,0,0\\n56,7,3,34,0,1,0,0,0\\n57,6,3,4,0,2,0,0,1\\n58,7,3,4,0,1,1,0,1\\n59,8,2,2,1,1,1,0,0\\n60,6,1,3,0,3,0,0,0\\n61,7,2,4,0,3,0,1,0\\n62,7,2,2,1,0,0,0,0\\n63,6,3,4,0,2,1,0,1\\n64,6,3,4,0,2,1,0,1\\n65,7,2,3,0,2,1,0,0\\n66,7,2,3,0,2,1,0,0\\n67,7,3,4,0,2,0,0,1\\n68,7,4,4,0,0,0,0,0\\n69,7,3,4,0,1,1,0,0\\n70,8,2,2,1,0,0,0,0\\n71,1,1,1,0,0,0,0,0\\n72,16,1,1,1,1,0,0,0\\n73,16,3,3,0,0,0,0,0\\n74,16,2,4,0,2,0,0,0\\n75,15,2,3,0,2,0,0,1\\n76,7,2,2,1,0,0,0,0\\n77,17,4,4,0,0,0,0,0\\n78,6,3,4,0,2,1,0,1\\n79,7,2,3,0,2,1,0,0\\n80,6,3,4,0,2,0,0,1\\n81,7,3,4,0,1,1,0,1\\n82,7,3,4,0,1,1,0,0\\n87,26,0,0,0,0,0,0,0\\n88,26,0,0,0,0,0,0,0\\n89,9,0,0,0,0,0,0,0\\n90,17,0,0,0,0,0,0,0\\n91,35,0,0,0,0,0,0,0\\n92,3,0,0,0,0,0,0,0\\n93,11,0,0,0,0,0,0,0\\n94,19,0,0,0,0,0,0,0\\n95,30,0,0,0,0,0,0,0\\n96,20,0,0,0,0,0,0,0\\n97,29,0,0,0,0,0,0,0\\n98,29,0,0,0,0,0,0,0\\n99,12,0,0,0,0,0,0,0\\n')};Z3(321,1,{},Qrb.dC);_.Lb=function eC(a,b){return this.a[a][b]};_.Mb=function fC(){return Qrb.ZB(this)};Drb.A$=B5(321);Qrb.gC=function gC(a,b){return Erb.W5(a.a[b][3])};Qrb.hC=function hC(a,b){return Erb.W5(a.a[b][2])};Qrb.iC=function iC(){this.a=Prb.kA('58\\nint,int,float,float\\n1,6,1.084,5.15\\n1,7,1.001,7.35\\n1,8,0.947,9.10\\n1,9,0.92,10.6\\n1,14,1.48,2.3\\n1,15,1.415,2.95\\n1,16,1.326,4.30\\n1,17,1.28,4.3\\n1,35,1.41,4.2\\n1,53,1.60,2.7\\n6,6,1.512,3.80\\n6,7,1.439,4.55\\n6,8,1.393,5.40\\n6,9,1.353,6.20\\n6,14,1.86,2.6\\n6,15,1.84,2.7\\n6,16,1.812,2.85\\n6,17,1.781,2.75\\n6,35,1.94,2.6\\n6,53,2.16,1.4\\n7,7,1.283,6.00\\n7,8,1.333,5.90\\n7,9,1.36,5.9\\n7,14,1.74,3.7\\n7,15,1.65,4.8\\n7,16,1.674,3.75\\n7,17,1.75,3.5\\n7,35,1.90,2.9\\n7,53,2.10,1.6\\n8,8,1.48,3.6\\n8,9,1.42,4.6\\n8,14,1.63,5.2\\n8,15,1.66,4.7\\n8,16,1.470,9.90\\n8,17,1.70,4.1\\n8,35,1.85,3.4\\n8,53,2.05,1.6\\n9,14,1.57,6.4\\n9,15,1.54,7.1\\n9,16,1.55,6.9\\n14,14,2.32,1.3\\n14,15,2.25,1.5\\n14,16,2.15,2.0\\n14,17,2.02,3.1\\n14,35,2.19,2.1\\n14,53,2.44,1.5\\n15,15,2.21,1.7\\n15,16,2.10,2.4\\n15,17,2.03,3.0\\n15,35,2.21,2.0\\n15,53,2.47,1.4\\n16,16,2.052,2.50\\n16,17,2.04,2.9\\n16,35,2.24,1.9\\n16,53,2.40,1.7\\n17,17,1.99,3.5\\n35,35,2.28,2.4\\n53,53,2.67,1.6\\n')};Z3(333,1,{},Qrb.iC);_.Lb=function jC(a,b){return Erb.X5(this.a[a][b])};_.Mb=function kC(){return this.a.length};Drb.B$=B5(333);Qrb.lC=function lC(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p;k=Rrb.xD(a.a,b,Jrb.Dn(b,c,d));f=b.a[c];h=b.a[d];f>h&&(f=(o=Erb.A6(h),Erb.A6(h=f),o).a);m=Prb.UA(BX(nX(Drb.NY,1),Qsb,6,15,[1,2,0]),BX(nX(Drb.NY,1),Qsb,6,15,[f,h,k]),a);if(m>=0){return Erb.W5(a.b[m][3])}else{e=b.C[c];g=b.C[d];e>g&&(e=(n=Erb.A6(g),Erb.A6(g=e),n).a);p=Qrb.mC(a,b,c,d);j=Prb.UA(BX(nX(Drb.NY,1),Qsb,6,15,[0,1]),BX(nX(Drb.NY,1),Qsb,6,15,[e,g]),a.a.c);if(j>=0){l=$wnd.Math.pow(Qrb.hC(a.a.c,j)/p,6);return Qrb.gC(a.a.c,j)*l}else{i=Prb.UA(BX(nX(Drb.NY,1),Qsb,6,15,[0,1]),BX(nX(Drb.NY,1),Qsb,6,15,[Prb.FA(e),Prb.FA(g)]),a.a.j);return $wnd.Math.pow(10,-(p-Qrb.JC(a.a.j,i,2))/Qrb.JC(a.a.j,i,3))}}};Qrb.mC=function mC(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;k=Rrb.xD(a.a,b,Jrb.Dn(b,c,d));g=b.a[c];j=b.a[d];g>j&&(g=(q=Erb.A6(j),Erb.A6(j=g),q).a);o=Prb.UA(BX(nX(Drb.NY,1),Qsb,6,15,[1,2,0]),BX(nX(Drb.NY,1),Qsb,6,15,[g,j,k]),a);if(o>=0)return Erb.W5(a.b[o][4]);else{f=b.C[c];i=b.C[d];f>i&&(f=(p=Erb.A6(i),Erb.A6(i=f),p).a);e=Prb.TA(f,a.a.f);h=Prb.TA(i,a.a.f);r=Qrb.zC(a.a.f,e);s=Qrb.zC(a.a.f,h);m=Qrb.xC(a.a.f,e);n=Qrb.xC(a.a.f,h);l=f==1||i==1?0.05:0.085;return r+s-l*$wnd.Math.pow($wnd.Math.abs(m-n),1.4)}};Qrb.nC=function nC(a){this.b=Prb.kA('493\\nint,int,int,float,float\\n0,1,1,4.258,1.508\\n0,1,2,4.539,1.482\\n0,1,3,4.190,1.492\\n0,1,4,4.707,1.459\\n0,1,5,4.766,1.093\\n0,1,6,5.047,1.418\\n0,1,8,5.084,1.451\\n0,1,9,4.763,1.458\\n0,1,10,4.664,1.436\\n0,1,11,6.011,1.360\\n0,1,12,2.974,1.773\\n0,1,13,2.529,1.949\\n0,1,14,1.706,2.090\\n0,1,15,2.893,1.805\\n0,1,17,2.841,1.813\\n0,1,18,3.258,1.772\\n0,1,19,2.866,1.830\\n0,1,20,4.650,1.504\\n0,1,22,4.286,1.482\\n0,1,25,2.980,1.810\\n0,1,26,2.790,1.830\\n0,1,34,3.844,1.480\\n0,1,35,7.915,1.307\\n0,1,37,4.957,1.486\\n0,1,39,6.114,1.445\\n0,1,40,4.922,1.446\\n0,1,41,3.830,1.510\\n0,1,43,3.971,1.472\\n0,1,45,3.844,1.480\\n0,1,46,3.813,1.482\\n0,1,54,4.267,1.461\\n0,1,55,4.646,1.454\\n0,1,56,4.166,1.453\\n0,1,57,4.669,1.461\\n0,1,58,4.329,1.451\\n0,1,61,4.845,1.424\\n0,1,62,4.456,1.444\\n0,1,63,4.481,1.471\\n0,1,64,4.518,1.469\\n0,1,67,4.188,1.459\\n0,1,68,4.217,1.479\\n0,1,72,2.956,1.801\\n0,1,73,2.608,1.839\\n0,1,75,2.547,1.858\\n0,1,78,4.593,1.465\\n0,1,80,4.373,1.477\\n0,1,81,4.512,1.441\\n0,2,2,9.505,1.333\\n1,2,2,5.310,1.430\\n1,2,3,4.565,1.468\\n0,2,4,9.538,1.297\\n1,2,4,5.657,1.415\\n0,2,5,5.170,1.083\\n0,2,6,5.520,1.373\\n1,2,9,6.385,1.360\\n0,2,10,6.329,1.362\\n0,2,11,6.283,1.350\\n0,2,12,3.390,1.720\\n0,2,13,3.413,1.854\\n0,2,14,2.062,2.025\\n0,2,15,3.896,1.720\\n0,2,17,3.247,1.773\\n0,2,18,3.789,1.728\\n0,2,19,3.052,1.811\\n0,2,20,4.593,1.465\\n0,2,22,4.926,1.448\\n0,2,25,3.750,1.742\\n0,2,30,8.166,1.331\\n0,2,34,5.207,1.407\\n0,2,35,10.343,1.250\\n1,2,37,5.007,1.449\\n1,2,39,6.164,1.368\\n0,2,40,6.110,1.370\\n0,2,41,3.746,1.505\\n0,2,43,4.928,1.420\\n0,2,45,4.725,1.430\\n0,2,46,7.466,1.325\\n0,2,55,6.164,1.368\\n0,2,56,6.246,1.365\\n0,2,62,7.105,1.336\\n1,2,63,6.030,1.400\\n1,2,64,5.754,1.411\\n1,2,67,4.685,1.432\\n0,2,72,4.179,1.700\\n1,2,81,6.357,1.361\\n1,3,3,4.418,1.489\\n1,3,4,5.135,1.438\\n0,3,5,4.650,1.101\\n0,3,6,5.801,1.355\\n0,3,7,12.950,1.222\\n0,3,9,10.077,1.290\\n1,3,9,6.273,1.364\\n0,3,10,5.829,1.369\\n0,3,11,6.570,1.340\\n0,3,12,3.449,1.715\\n0,3,15,3.536,1.748\\n0,3,16,4.735,1.665\\n0,3,17,2.888,1.808\\n0,3,18,3.394,1.760\\n0,3,20,3.298,1.530\\n0,3,22,4.593,1.465\\n0,3,25,3.164,1.792\\n1,3,30,4.481,1.471\\n0,3,35,11.012,1.237\\n1,3,37,4.488,1.457\\n1,3,39,5.978,1.375\\n0,3,40,6.110,1.370\\n0,3,41,4.286,1.482\\n0,3,43,4.928,1.420\\n0,3,45,4.531,1.440\\n0,3,48,5.412,1.398\\n0,3,51,8.562,1.290\\n0,3,53,7.637,1.320\\n0,3,54,10.333,1.280\\n1,3,54,2.771,1.563\\n0,3,55,4.886,1.422\\n0,3,56,4.907,1.421\\n1,3,57,5.492,1.422\\n1,3,58,5.163,1.409\\n0,3,62,7.568,1.322\\n1,3,63,5.468,1.423\\n1,3,64,5.288,1.431\\n0,3,67,8.217,1.304\\n0,3,74,5.204,1.639\\n0,3,75,4.191,1.710\\n1,3,78,5.705,1.413\\n1,3,80,6.719,1.375\\n0,4,4,15.206,1.200\\n0,4,5,5.726,1.065\\n0,4,6,7.193,1.328\\n0,4,7,14.916,1.176\\n0,4,9,15.589,1.172\\n1,4,9,7.041,1.338\\n0,4,10,6.824,1.345\\n0,4,15,4.330,1.690\\n0,4,20,5.178,1.436\\n0,4,22,5.400,1.426\\n0,4,30,10.227,1.282\\n1,4,37,5.445,1.424\\n0,4,42,16.582,1.160\\n0,4,43,6.947,1.341\\n1,4,63,5.633,1.416\\n1,4,64,5.492,1.422\\n0,5,19,2.254,1.485\\n0,5,20,4.852,1.093\\n0,5,22,5.191,1.082\\n0,5,30,5.176,1.086\\n0,5,37,5.306,1.084\\n0,5,41,3.256,1.144\\n0,5,57,5.633,1.076\\n0,5,63,5.531,1.080\\n0,5,64,5.506,1.080\\n0,5,78,5.506,1.080\\n0,5,80,5.633,1.076\\n0,6,6,4.088,1.449\\n0,6,8,5.059,1.450\\n0,6,9,4.491,1.395\\n0,6,10,5.982,1.410\\n0,6,15,4.757,1.661\\n0,6,17,5.779,1.608\\n0,6,18,5.326,1.630\\n0,6,19,4.661,1.660\\n0,6,20,5.623,1.433\\n0,6,21,7.794,0.972\\n0,6,22,4.556,1.433\\n0,6,24,7.403,0.981\\n0,6,25,5.243,1.630\\n0,6,26,5.481,1.618\\n0,6,29,7.839,0.973\\n0,6,30,9.359,1.271\\n0,6,33,7.143,0.986\\n0,6,37,5.614,1.376\\n0,6,39,4.629,1.388\\n0,6,40,4.609,1.389\\n0,6,41,6.754,1.342\\n0,6,43,3.937,1.426\\n0,6,45,4.321,1.404\\n0,6,54,5.117,1.365\\n0,6,55,4.772,1.381\\n0,6,57,7.128,1.330\\n0,6,58,4.792,1.380\\n0,6,63,7.324,1.324\\n0,6,64,6.664,1.345\\n0,7,17,8.770,1.500\\n0,7,46,9.329,1.235\\n0,7,74,9.129,1.490\\n0,8,8,3.264,1.420\\n0,8,9,4.581,1.342\\n0,8,10,3.909,1.378\\n0,8,12,3.371,1.761\\n0,8,15,4.060,1.652\\n0,8,17,3.901,1.663\\n0,8,19,4.254,1.700\\n0,8,20,5.107,1.456\\n0,8,22,4.223,1.457\\n0,8,23,6.490,1.019\\n0,8,25,4.629,1.660\\n0,8,26,4.027,1.699\\n0,8,34,3.775,1.386\\n0,8,39,3.435,1.408\\n0,8,40,3.710,1.390\\n0,8,43,3.977,1.374\\n0,8,45,4.267,1.358\\n0,8,46,5.519,1.301\\n0,8,55,4.229,1.360\\n0,8,56,3.995,1.373\\n0,9,9,7.256,1.243\\n1,9,9,3.808,1.384\\n0,9,10,4.480,1.347\\n0,9,12,3.635,1.739\\n0,9,15,3.791,1.671\\n0,9,18,4.465,1.626\\n0,9,19,3.687,1.741\\n0,9,20,4.401,1.447\\n0,9,25,5.379,1.619\\n0,9,27,6.230,1.026\\n0,9,34,3.223,1.423\\n0,9,35,5.095,1.366\\n1,9,37,5.529,1.393\\n1,9,39,4.685,1.337\\n0,9,40,4.382,1.352\\n0,9,41,5.650,1.388\\n0,9,45,4.857,1.329\\n0,9,53,7.291,1.242\\n0,9,54,4.991,1.323\\n0,9,55,3.825,1.383\\n0,9,56,4.602,1.341\\n1,9,57,6.824,1.345\\n0,9,62,4.749,1.334\\n1,9,63,6.824,1.345\\n1,9,64,5.458,1.396\\n0,9,67,6.752,1.258\\n1,9,78,6.644,1.351\\n1,9,81,3.909,1.378\\n0,10,10,3.977,1.374\\n0,10,13,3.110,1.878\\n0,10,14,1.967,2.029\\n0,10,15,3.593,1.686\\n0,10,17,3.930,1.661\\n0,10,20,4.240,1.456\\n0,10,22,4.970,1.418\\n0,10,25,3.820,1.714\\n0,10,26,3.651,1.727\\n0,10,28,6.663,1.015\\n0,10,34,3.960,1.375\\n0,10,35,4.898,1.375\\n0,10,37,5.482,1.395\\n0,10,39,4.382,1.352\\n0,10,40,3.841,1.382\\n0,10,41,7.466,1.325\\n0,10,45,3.524,1.402\\n0,10,63,6.137,1.369\\n0,10,64,5.952,1.376\\n0,11,20,6.339,1.348\\n0,11,22,5.296,1.389\\n0,11,25,6.019,1.583\\n0,11,26,6.204,1.575\\n0,11,37,6.511,1.342\\n0,11,40,4.187,1.440\\n0,12,15,2.978,2.031\\n0,12,18,2.808,2.051\\n0,12,19,2.838,2.050\\n0,12,20,2.859,1.751\\n0,12,22,3.056,1.750\\n0,12,25,3.063,2.023\\n0,12,26,2.448,2.100\\n0,12,37,3.378,1.721\\n0,12,40,3.737,1.731\\n0,12,57,3.714,1.694\\n0,12,63,3.413,1.718\\n0,12,64,3.649,1.699\\n0,13,20,2.767,1.920\\n0,13,22,2.928,1.902\\n0,13,37,3.031,1.891\\n0,13,64,3.031,1.891\\n0,14,20,0.884,2.332\\n0,14,37,1.781,2.075\\n0,15,15,2.531,2.050\\n0,15,18,2.214,2.094\\n0,15,19,2.022,2.146\\n0,15,20,2.757,1.822\\n0,15,22,3.802,1.727\\n0,15,25,2.319,2.112\\n0,15,26,2.359,2.106\\n0,15,30,3.750,1.731\\n0,15,37,3.565,1.765\\n0,15,40,3.859,1.666\\n0,15,43,3.221,1.717\\n0,15,57,3.993,1.713\\n0,15,63,3.724,1.733\\n0,15,64,3.548,1.747\\n0,15,71,4.014,1.341\\n0,17,20,2.397,1.865\\n0,17,22,2.566,1.844\\n0,17,37,3.098,1.787\\n0,17,43,4.900,1.601\\n0,18,20,3.172,1.780\\n0,18,22,2.757,1.822\\n0,18,32,10.748,1.450\\n0,18,37,3.281,1.770\\n0,18,39,3.504,1.693\\n0,18,43,3.301,1.710\\n0,18,48,6.186,1.540\\n0,18,55,4.432,1.628\\n0,18,58,2.568,1.783\\n0,18,62,5.510,1.570\\n0,18,63,3.524,1.749\\n0,18,64,3.856,1.723\\n0,18,80,4.150,1.702\\n0,19,20,2.288,1.900\\n0,19,37,3.072,1.809\\n0,19,40,4.470,1.686\\n0,19,63,3.219,1.795\\n0,19,75,1.600,2.226\\n0,20,20,3.663,1.526\\n0,20,22,4.251,1.484\\n0,20,25,2.718,1.838\\n0,20,26,2.588,1.853\\n0,20,30,3.977,1.507\\n0,20,34,4.171,1.460\\n0,20,37,3.740,1.516\\n0,20,40,4.784,1.427\\n0,20,41,4.286,1.482\\n0,20,43,3.737,1.487\\n0,20,45,3.844,1.480\\n0,22,22,3.969,1.499\\n0,22,30,3.785,1.513\\n0,22,34,4.103,1.464\\n0,22,37,4.481,1.471\\n0,22,40,4.188,1.459\\n0,22,41,5.071,1.441\\n0,22,43,4.070,1.466\\n0,22,45,4.311,1.452\\n0,23,39,7.112,1.012\\n0,23,62,6.339,1.026\\n0,23,67,6.610,1.019\\n0,23,68,5.899,1.038\\n0,25,25,1.514,2.253\\n0,25,32,8.296,1.510\\n0,25,37,3.586,1.755\\n0,25,39,4.370,1.676\\n0,25,40,4.629,1.660\\n0,25,43,3.237,1.762\\n0,25,57,4.356,1.699\\n0,25,63,3.711,1.745\\n0,25,71,3.001,1.411\\n0,25,72,3.744,1.950\\n0,26,26,1.414,2.279\\n0,26,34,3.395,1.748\\n0,26,37,3.207,1.788\\n0,26,40,4.870,1.646\\n0,26,71,2.959,1.415\\n0,28,40,6.576,1.018\\n0,28,43,6.265,1.028\\n0,28,48,6.413,1.024\\n0,30,30,9.579,1.343\\n1,30,30,5.355,1.428\\n0,30,40,8.447,1.298\\n1,30,67,5.274,1.404\\n0,31,70,7.880,0.969\\n0,32,41,9.756,1.261\\n0,32,45,9.420,1.233\\n0,32,67,7.926,1.269\\n0,32,68,4.398,1.348\\n0,32,69,6.098,1.261\\n0,32,73,8.427,1.510\\n0,32,77,10.648,1.450\\n0,32,82,8.594,1.252\\n0,34,36,6.163,1.028\\n0,34,37,4.347,1.450\\n0,34,43,4.401,1.351\\n0,35,37,9.767,1.262\\n0,35,63,12.760,1.207\\n0,36,54,6.529,1.022\\n0,36,55,6.744,1.014\\n0,36,56,6.490,1.017\\n0,36,58,6.610,1.019\\n0,36,81,6.980,1.016\\n0,37,37,5.573,1.374\\n1,37,37,5.178,1.436\\n0,37,38,5.737,1.333\\n0,37,39,5.978,1.375\\n1,37,39,5.650,1.388\\n0,37,40,6.168,1.398\\n0,37,41,4.537,1.468\\n0,37,43,4.764,1.428\\n0,37,45,4.705,1.431\\n0,37,46,6.191,1.367\\n0,37,55,6.615,1.352\\n0,37,56,5.055,1.414\\n1,37,57,5.092,1.440\\n0,37,58,7.432,1.326\\n1,37,58,5.055,1.414\\n0,37,61,5.724,1.385\\n0,37,62,7.137,1.335\\n0,37,63,6.095,1.372\\n1,37,63,5.178,1.436\\n0,37,64,6.161,1.379\\n1,37,64,5.265,1.432\\n1,37,67,4.725,1.430\\n0,37,69,5.396,1.352\\n0,37,78,6.719,1.375\\n0,37,81,3.987,1.471\\n1,37,81,4.531,1.440\\n0,38,38,5.002,1.246\\n0,38,63,7.299,1.330\\n0,38,64,6.978,1.340\\n0,38,69,5.036,1.321\\n0,38,78,6.218,1.366\\n0,39,40,4.101,1.367\\n0,39,45,3.524,1.402\\n0,39,63,6.301,1.364\\n1,39,63,6.137,1.369\\n0,39,64,6.357,1.361\\n1,39,64,5.482,1.395\\n0,39,65,5.513,1.339\\n0,39,78,6.137,1.369\\n0,40,40,4.248,1.359\\n0,40,45,4.305,1.356\\n0,40,46,4.727,1.335\\n0,40,54,6.817,1.256\\n0,40,63,6.733,1.348\\n0,40,64,6.644,1.351\\n0,40,78,5.900,1.378\\n0,41,41,5.029,1.443\\n0,41,55,5.577,1.391\\n0,41,62,7.137,1.335\\n0,41,72,4.519,1.678\\n0,41,80,5.222,1.434\\n0,42,61,16.223,1.087\\n0,43,43,4.211,1.361\\n0,43,45,3.710,1.390\\n0,43,64,5.389,1.399\\n0,44,63,3.589,1.717\\n0,44,65,3.374,1.684\\n0,44,78,3.711,1.734\\n0,44,80,3.910,1.719\\n0,45,63,5.119,1.411\\n0,45,64,5.076,1.413\\n0,45,78,5.724,1.385\\n0,47,53,12.192,1.140\\n0,49,50,6.812,0.991\\n0,51,52,7.100,0.987\\n0,55,57,7.227,1.319\\n0,55,62,3.977,1.374\\n0,55,64,5.529,1.393\\n0,55,80,7.500,1.324\\n0,56,57,4.137,1.383\\n0,56,63,5.900,1.378\\n0,56,80,6.470,1.357\\n1,57,63,5.400,1.426\\n1,57,64,5.135,1.438\\n0,58,63,6.794,1.346\\n0,58,64,6.164,1.368\\n0,59,63,5.787,1.360\\n0,59,65,4.756,1.388\\n0,59,78,6.127,1.364\\n0,59,80,7.064,1.332\\n0,59,82,3.855,1.431\\n0,60,61,15.749,1.170\\n0,62,63,6.947,1.341\\n0,62,64,6.273,1.364\\n1,63,63,5.729,1.412\\n0,63,64,7.118,1.377\\n0,63,66,8.326,1.313\\n0,63,72,4.503,1.679\\n0,63,78,7.434,1.352\\n0,63,81,7.778,1.316\\n0,64,64,4.313,1.418\\n1,64,64,4.926,1.448\\n0,64,65,8.258,1.335\\n0,64,66,4.456,1.369\\n0,64,78,5.492,1.422\\n0,64,81,5.824,1.381\\n0,64,82,6.794,1.346\\n0,65,66,7.243,1.323\\n0,65,78,8.447,1.298\\n0,65,81,5.223,1.313\\n0,65,82,5.622,1.297\\n0,66,66,3.874,1.368\\n0,66,78,6.385,1.360\\n0,66,81,3.960,1.375\\n0,67,67,6.085,1.280\\n0,71,75,2.852,1.423\\n0,72,73,2.628,2.035\\n0,76,76,4.286,1.357\\n0,76,78,6.824,1.345\\n0,78,78,5.573,1.374\\n0,78,79,8.890,1.287\\n0,78,81,5.046,1.381\\n0,79,79,6.408,1.269\\n0,79,81,4.305,1.356\\n0,80,81,8.237,1.335\\n');this.a=a};Z3(329,1,{},Qrb.nC);_.Lb=function oC(a,b){return Erb.X5(this.b[a][b])};_.Mb=function pC(){return this.b.length};Drb.C$=B5(329);Qrb.qC=function qC(a,b,c,d){return Prb.SA(1,b,0,c,d,new Qrb.uC(a))};Qrb.rC=function rC(a,b){return Erb.W5(a.b[b-1][2])};Qrb.sC=function sC(a,b,c,d){var e,f,g,h,i,j,k;k=c>d?1:-1;j=c>d?d:c;i=c>d?c:d;f=Qrb.qC(a,j,a.a.length,true);e=Qrb.qC(a,j,a.a.length,false);if(f==-1||e==-1)return Erb.W5(a.b[c-1][1])-Erb.W5(a.b[d-1][1]);h=Prb.SA(2,i,f,e+1,true,new Qrb.uC(a));g=Prb.SA(2,i,f,e+1,false,new Qrb.uC(a));if(h==-1||g==-1)return Erb.W5(a.b[c-1][1])-Erb.W5(a.b[d-1][1]);if(b==0&&Erb.X5(a.a[h][0])==0)return k*Erb.W5(a.a[h][3]);else if(b==1&&Erb.X5(a.a[g][0])==1)return k*Erb.W5(a.a[g][3]);return Erb.W5(a.b[c-1][1])-Erb.W5(a.b[d-1][1])};Qrb.tC=function tC(){this.b=Prb.kA('99\\nint,float,float\\n1,0.000,0.000\\n2,-0.135,0.000\\n3,-0.095,0.000\\n4,-0.200,0.000\\n5,-0.023,0.000\\n6,-0.243,0.000\\n7,-0.687,0.000\\n8,-0.253,0.000\\n9,-0.306,0.000\\n10,-0.244,0.000\\n11,-0.317,0.000\\n12,-0.304,0.000\\n13,-0.238,0.000\\n14,-0.208,0.000\\n15,-0.236,0.000\\n16,-0.475,0.000\\n17,-0.191,0.000\\n18,-0.118,0.000\\n19,0.094,0.000\\n20,-0.019,0.000\\n21,0.157,0.000\\n22,-0.095,0.000\\n23,0.193,0.000\\n24,0.257,0.000\\n25,0.012,0.000\\n26,-0.142,0.000\\n27,0.094,0.000\\n28,0.058,0.000\\n29,0.207,0.000\\n30,-0.166,0.000\\n31,0.161,0.000\\n32,-0.732,0.500\\n33,0.257,0.000\\n34,-0.491,0.000\\n35,-0.456,0.500\\n36,-0.031,0.000\\n37,-0.127,0.000\\n38,-0.437,0.000\\n39,-0.104,0.000\\n40,-0.264,0.000\\n41,0.052,0.000\\n42,-0.757,0.000\\n43,-0.326,0.000\\n44,-0.237,0.000\\n45,-0.260,0.000\\n46,-0.429,0.000\\n47,-0.418,0.000\\n48,-0.525,0.000\\n49,-0.283,0.000\\n50,0.284,0.000\\n51,-1.046,0.000\\n52,-0.546,0.000\\n53,-0.048,0.000\\n54,-0.424,0.000\\n55,-0.476,0.000\\n56,-0.438,0.000\\n57,-0.105,0.000\\n58,-0.488,0.000\\n59,-0.337,0.000\\n60,-0.635,0.000\\n61,-0.265,0.000\\n62,-0.125,0.250\\n63,-0.180,0.000\\n64,-0.181,0.000\\n65,-0.475,0.000\\n66,-0.467,0.000\\n67,-0.099,0.000\\n68,-0.135,0.000\\n69,-0.099,0.000\\n70,-0.269,0.000\\n71,-0.071,0.000\\n72,-0.580,0.500\\n73,-0.200,0.000\\n74,-0.301,0.000\\n75,-0.255,0.000\\n76,-0.568,0.250\\n77,-0.282,0.000\\n78,-0.168,0.000\\n79,-0.471,0.000\\n80,-0.144,0.000\\n81,-0.514,0.000\\n82,-0.099,0.000\\n83,0.000,0.000\\n84,0.000,0.000\\n85,0.000,0.000\\n86,0.000,0.000\\n87,2.000,0.000\\n88,3.000,0.000\\n89,-1.000,0.000\\n90,-1.000,0.000\\n91,-1.000,0.000\\n92,1.000,0.000\\n93,1.000,0.000\\n94,1.000,0.000\\n95,2.000,0.000\\n96,2.000,0.000\\n97,1.000,0.000\\n98,2.000,0.000\\n99,2.000,0.000\\n');this.a=Prb.kA('498\\nint,int,int,float\\n0,1,1,0.0000\\n0,1,2,-0.1382\\n0,1,3,-0.0610\\n0,1,4,-0.2000\\n0,1,5,0.0000\\n0,1,6,-0.2800\\n0,1,8,-0.2700\\n0,1,9,-0.2460\\n0,1,10,-0.3001\\n0,1,11,-0.3400\\n0,1,12,-0.2900\\n0,1,13,-0.2300\\n0,1,14,-0.1900\\n0,1,15,-0.2300\\n0,1,17,-0.1935\\n0,1,18,-0.1052\\n0,1,19,0.0805\\n0,1,20,0.0000\\n0,1,22,-0.0950\\n0,1,25,0.0000\\n0,1,26,-0.1669\\n0,1,34,-0.5030\\n0,1,35,-0.4274\\n0,1,37,-0.1435\\n0,1,39,-0.2556\\n0,1,40,-0.3691\\n0,1,41,0.1060\\n0,1,43,-0.3557\\n0,1,45,-0.2402\\n0,1,46,-0.3332\\n0,1,54,-0.3461\\n0,1,55,-0.4895\\n0,1,56,-0.3276\\n0,1,57,-0.1050\\n0,1,58,-0.4880\\n0,1,61,-0.2657\\n0,1,62,-0.2000\\n0,1,63,-0.1800\\n0,1,64,-0.1810\\n0,1,67,-0.0990\\n0,1,68,-0.2560\\n0,1,72,-0.5500\\n0,1,73,-0.0877\\n0,1,75,-0.2550\\n0,1,78,-0.1680\\n0,1,80,-0.1440\\n0,1,81,-0.5140\\n0,2,2,0.0000\\n1,2,2,0.0000\\n1,2,3,-0.0144\\n0,2,4,-0.0650\\n1,2,4,-0.0650\\n0,2,5,0.1500\\n0,2,6,-0.0767\\n1,2,9,-0.1710\\n0,2,10,-0.1090\\n0,2,11,-0.1495\\n0,2,12,-0.1400\\n0,2,13,-0.1100\\n0,2,14,-0.0900\\n0,2,15,-0.1010\\n0,2,17,-0.0560\\n0,2,18,0.0170\\n0,2,19,0.2290\\n0,2,20,0.1160\\n0,2,22,0.0400\\n0,2,25,0.1470\\n0,2,30,-0.0310\\n0,2,34,-0.3560\\n0,2,35,-0.3500\\n1,2,37,0.0284\\n1,2,39,0.0310\\n0,2,40,-0.1000\\n0,2,41,0.2500\\n0,2,43,-0.1910\\n0,2,45,-0.2044\\n0,2,46,-0.2940\\n0,2,55,-0.3410\\n0,2,56,-0.3030\\n0,2,62,-0.0500\\n1,2,63,-0.0450\\n1,2,64,-0.0460\\n1,2,67,0.0360\\n0,2,72,-0.4500\\n1,2,81,-0.3790\\n1,3,3,0.0000\\n1,3,4,-0.1050\\n0,3,5,0.0600\\n0,3,6,-0.1500\\n0,3,7,-0.5700\\n0,3,9,-0.4500\\n1,3,9,-0.2110\\n0,3,10,-0.0600\\n0,3,11,-0.2220\\n0,3,12,-0.2090\\n0,3,15,-0.1410\\n0,3,16,-0.3800\\n0,3,17,-0.0960\\n0,3,18,-0.0230\\n0,3,20,0.0530\\n0,3,22,0.0000\\n0,3,25,0.1070\\n1,3,30,-0.0710\\n0,3,35,-0.3610\\n1,3,37,0.0862\\n1,3,39,-0.0090\\n0,3,40,-0.0500\\n0,3,41,0.1470\\n0,3,43,-0.2363\\n0,3,45,-0.1650\\n0,3,48,-0.4300\\n0,3,51,-0.9500\\n0,3,53,-0.0134\\n0,3,54,-0.4000\\n1,3,54,-0.3290\\n0,3,55,-0.3810\\n0,3,56,-0.3430\\n1,3,57,-0.0100\\n1,3,58,-0.3930\\n0,3,62,-0.0300\\n1,3,63,-0.0850\\n1,3,64,-0.0860\\n0,3,67,-0.0040\\n0,3,74,-0.3190\\n0,3,75,-0.2474\\n1,3,78,-0.0730\\n1,3,80,-0.0490\\n0,4,5,0.1770\\n0,4,6,-0.0430\\n0,4,7,-0.4870\\n0,4,9,-0.3000\\n1,4,9,-0.1060\\n0,4,10,-0.0440\\n0,4,15,-0.0360\\n0,4,20,0.1810\\n0,4,22,0.1050\\n0,4,30,0.0340\\n1,4,37,0.0730\\n0,4,40,-0.0640\\n0,4,42,-0.5571\\n0,4,43,-0.1260\\n1,4,63,0.0200\\n1,4,64,0.0190\\n0,5,19,0.2000\\n0,5,20,0.0000\\n0,5,22,-0.1000\\n0,5,30,-0.1500\\n0,5,37,-0.1500\\n0,5,41,0.2203\\n0,5,57,-0.1500\\n0,5,63,-0.1500\\n0,5,64,-0.1500\\n0,5,78,-0.1500\\n0,5,80,-0.1500\\n0,6,6,0.0000\\n0,6,8,-0.1000\\n0,6,9,-0.0630\\n0,6,10,0.0355\\n0,6,15,0.0070\\n0,6,17,0.0520\\n0,6,18,0.1837\\n0,6,19,0.2974\\n0,6,20,0.2579\\n0,6,21,0.4000\\n0,6,22,0.1480\\n0,6,24,0.5000\\n0,6,25,0.2712\\n0,6,26,0.1010\\n0,6,29,0.4500\\n0,6,30,0.0770\\n0,6,33,0.5000\\n0,6,37,0.0825\\n0,6,39,0.1390\\n0,6,40,-0.0210\\n0,6,41,0.2950\\n0,6,43,-0.0830\\n0,6,45,-0.0090\\n0,6,54,-0.1810\\n0,6,55,-0.2330\\n0,6,57,0.1380\\n0,6,58,-0.2450\\n0,6,63,0.0630\\n0,6,64,0.0620\\n0,7,17,0.5000\\n0,7,46,0.1618\\n0,7,74,0.5000\\n0,8,8,0.0000\\n0,8,9,-0.0530\\n0,8,10,0.0090\\n0,8,12,-0.0510\\n0,8,15,0.0170\\n0,8,17,0.0620\\n0,8,19,0.3470\\n0,8,20,0.2096\\n0,8,22,0.1580\\n0,8,23,0.3600\\n0,8,25,0.2679\\n0,8,26,0.1110\\n0,8,34,-0.2380\\n0,8,39,0.1490\\n0,8,40,-0.0110\\n0,8,43,-0.0730\\n0,8,45,-0.0070\\n0,8,46,-0.1760\\n0,8,55,-0.2230\\n0,8,56,-0.1850\\n0,9,9,0.0000\\n0,9,10,0.0620\\n0,9,12,0.0020\\n0,9,15,0.0700\\n0,9,18,0.1880\\n0,9,19,0.4000\\n0,9,20,0.2870\\n0,9,25,0.3180\\n0,9,27,0.4000\\n0,9,34,-0.1850\\n0,9,35,-0.1500\\n1,9,37,0.1790\\n1,9,39,0.2020\\n0,9,40,0.0420\\n0,9,41,0.3580\\n0,9,45,0.0460\\n0,9,53,0.3179\\n0,9,54,-0.1180\\n0,9,55,-0.1700\\n0,9,56,-0.1320\\n1,9,57,0.2010\\n0,9,62,0.1810\\n1,9,63,0.1260\\n1,9,64,0.1250\\n0,9,67,0.2070\\n1,9,78,0.1380\\n1,9,81,-0.2080\\n0,10,10,0.0000\\n0,10,13,0.0060\\n0,10,14,0.0360\\n0,10,15,0.0080\\n0,10,17,0.0530\\n0,10,20,0.2250\\n0,10,22,0.1490\\n0,10,25,0.2560\\n0,10,26,0.1020\\n0,10,28,0.3700\\n0,10,34,-0.2470\\n0,10,35,-0.2120\\n0,10,37,0.1170\\n0,10,39,0.1400\\n0,10,40,-0.0200\\n0,10,41,0.2960\\n0,10,45,-0.0160\\n0,10,63,0.0640\\n0,10,64,0.0630\\n0,11,20,0.2980\\n0,11,22,0.2317\\n0,11,25,0.3290\\n0,11,26,0.1750\\n0,11,37,0.1900\\n0,11,40,0.0530\\n0,12,15,0.0680\\n0,12,18,0.1860\\n0,12,19,0.3701\\n0,12,20,0.2900\\n0,12,22,0.2273\\n0,12,25,0.3160\\n0,12,26,0.2112\\n0,12,37,0.1770\\n0,12,40,0.0400\\n0,12,57,0.1990\\n0,12,63,0.1240\\n0,12,64,0.1230\\n0,13,20,0.2190\\n0,13,22,0.1430\\n0,13,37,0.1110\\n0,13,64,0.0570\\n0,14,20,0.1890\\n0,14,37,0.0810\\n0,15,15,0.0000\\n0,15,18,0.1180\\n0,15,19,0.3300\\n0,15,20,0.2170\\n0,15,22,0.1410\\n0,15,25,0.2480\\n0,15,26,0.0940\\n0,15,30,0.0700\\n0,15,37,0.1015\\n0,15,40,-0.0280\\n0,15,43,-0.0900\\n0,15,57,0.1310\\n0,15,63,0.0560\\n0,15,64,0.0550\\n0,15,71,0.1800\\n0,16,16,0.0000\\n0,17,17,0.0000\\n0,17,20,0.1720\\n0,17,22,0.0960\\n0,17,37,0.0640\\n0,17,43,-0.1350\\n0,18,18,0.0000\\n0,18,20,0.0990\\n0,18,22,0.0230\\n0,18,32,-0.6500\\n0,18,37,-0.0090\\n0,18,39,0.0140\\n0,18,43,-0.1380\\n0,18,48,-0.5895\\n0,18,55,-0.3580\\n0,18,58,-0.3700\\n0,18,62,0.2099\\n0,18,63,-0.0620\\n0,18,64,-0.0630\\n0,18,80,-0.0260\\n0,19,19,0.0000\\n0,19,20,-0.1130\\n0,19,37,-0.2210\\n0,19,40,-0.3580\\n0,19,63,-0.2740\\n0,19,75,-0.3490\\n0,20,20,0.0000\\n0,20,22,-0.0760\\n0,20,25,0.0310\\n0,20,26,-0.1230\\n0,20,30,-0.1380\\n0,20,34,-0.4720\\n0,20,37,-0.1080\\n0,20,40,-0.2450\\n0,20,41,0.0710\\n0,20,43,-0.3070\\n0,20,45,-0.2410\\n0,22,22,0.0000\\n0,22,30,-0.0710\\n0,22,34,-0.3960\\n0,22,37,-0.0320\\n0,22,40,-0.1690\\n0,22,41,0.1470\\n0,22,43,-0.2310\\n0,22,45,-0.1650\\n0,23,39,-0.2700\\n0,23,62,-0.4000\\n0,23,67,-0.2920\\n0,23,68,-0.3600\\n0,25,25,0.0000\\n0,25,32,-0.7000\\n0,25,37,-0.1390\\n0,25,39,-0.1160\\n0,25,40,-0.2760\\n0,25,43,-0.3380\\n0,25,57,-0.1170\\n0,25,63,-0.1920\\n0,25,71,-0.0362\\n0,25,72,-0.6773\\n0,26,26,0.0000\\n0,26,34,-0.3490\\n0,26,37,0.0150\\n0,26,40,-0.1220\\n0,26,71,0.0960\\n0,28,40,-0.4000\\n0,28,43,-0.4200\\n0,28,48,-0.4000\\n0,30,30,0.0000\\n0,30,40,-0.0980\\n1,30,67,0.0670\\n0,31,70,-0.4300\\n0,32,41,0.6500\\n0,32,45,0.5200\\n0,32,67,0.6330\\n0,32,68,0.7500\\n0,32,69,0.7500\\n0,32,73,0.3500\\n0,32,77,0.4500\\n0,32,82,0.6330\\n0,34,36,0.4500\\n0,34,37,0.3640\\n0,34,43,0.1650\\n0,35,37,0.3290\\n0,35,63,0.2760\\n0,36,54,-0.4000\\n0,36,55,-0.4500\\n0,36,56,-0.4500\\n0,36,58,-0.4570\\n4,36,58,-0.4500\\n0,36,81,-0.4500\\n0,37,37,0.0000\\n1,37,37,0.0000\\n0,37,38,-0.3100\\n0,37,39,0.0230\\n1,37,39,0.0230\\n0,37,40,-0.1000\\n0,37,41,0.1790\\n0,37,43,-0.1990\\n0,37,45,-0.1330\\n0,37,46,-0.3020\\n0,37,55,-0.3490\\n0,37,56,-0.3110\\n1,37,57,0.0220\\n0,37,58,-0.3610\\n1,37,58,-0.3610\\n4,37,58,-0.3500\\n0,37,61,-0.1380\\n0,37,62,0.0020\\n0,37,63,0.0000\\n1,37,63,-0.0530\\n0,37,64,0.0000\\n1,37,64,-0.0540\\n1,37,67,0.0280\\n0,37,69,-0.0895\\n0,37,78,-0.0410\\n0,37,81,-0.3870\\n1,37,81,-0.3870\\n0,38,38,0.0000\\n0,38,63,0.2570\\n0,38,64,0.2560\\n0,38,69,0.3380\\n0,38,78,0.2690\\n1,39,39,0.0000\\n0,39,40,-0.1600\\n0,39,45,-0.1560\\n0,39,63,-0.1516\\n1,39,63,-0.0760\\n0,39,64,-0.0770\\n1,39,64,-0.0770\\n0,39,65,-0.4180\\n0,39,78,-0.0640\\n0,40,40,0.0000\\n0,40,45,0.0040\\n0,40,46,-0.1650\\n0,40,54,-0.1600\\n0,40,63,0.0840\\n0,40,64,0.0830\\n0,40,78,0.0960\\n0,41,41,0.0000\\n0,41,55,-0.5280\\n0,41,62,-0.1770\\n0,41,72,-0.5000\\n0,41,80,-0.1960\\n0,42,61,0.4920\\n0,43,43,0.0000\\n0,43,45,0.0660\\n0,43,64,0.1450\\n0,44,63,0.0400\\n0,44,65,-0.2207\\n0,44,78,0.0690\\n0,44,80,0.0930\\n0,45,63,0.0800\\n0,45,64,0.0790\\n0,45,78,0.0920\\n0,47,53,0.3700\\n0,49,50,0.5673\\n0,51,52,0.5000\\n0,55,57,0.3544\\n0,55,62,0.3510\\n0,55,64,0.2950\\n0,55,80,0.3320\\n0,56,57,0.4000\\n0,56,63,0.2580\\n0,56,80,0.2700\\n4,57,58,-0.4000\\n1,57,63,-0.0750\\n1,57,64,-0.0760\\n0,58,63,0.3080\\n0,58,64,0.3070\\n0,59,63,0.1400\\n0,59,65,-0.1209\\n0,59,78,0.1690\\n0,59,80,0.1930\\n0,59,82,0.2380\\n0,60,61,0.3700\\n0,62,63,-0.0550\\n0,62,64,-0.0560\\n0,63,63,0.0000\\n1,63,63,0.0000\\n0,63,64,0.0000\\n0,63,66,-0.3381\\n0,63,72,-0.4000\\n0,63,78,0.0120\\n0,63,81,-0.3340\\n0,64,64,0.0000\\n0,64,65,-0.2888\\n0,64,66,-0.2272\\n0,64,78,0.0130\\n0,64,81,-0.3330\\n0,64,82,0.0820\\n0,65,66,0.0000\\n0,65,78,0.3070\\n0,65,81,-0.0390\\n0,65,82,0.3760\\n0,66,66,0.0000\\n0,66,78,0.2990\\n0,66,81,-0.0470\\n0,71,75,-0.0958\\n0,72,73,0.4500\\n0,76,76,0.0000\\n0,76,78,0.4000\\n0,78,78,0.0000\\n1,78,78,0.0000\\n0,78,79,-0.3030\\n0,78,81,-0.3500\\n0,79,81,-0.0430\\n0,80,81,-0.4000\\n')};Z3(327,1,{},Qrb.tC);Drb.E$=B5(327);Qrb.uC=function uC(a){this.a=a};Z3(166,1,{},Qrb.uC);_.Lb=function vC(a,b){return Erb.X5(this.a.a[a][b])};_.Mb=function wC(){return this.a.a.length};Drb.D$=B5(166);Qrb.xC=function xC(a,b){return Erb.W5(a.a[b][2])};Qrb.yC=function yC(a){return a.a.length};Qrb.zC=function zC(a,b){return Erb.W5(a.a[b][1])};Qrb.AC=function AC(){this.a=Prb.kA('18\\nint,float,float\\n1,0.33,2.20\\n3,1.34,0.97\\n6,0.77,2.50\\n7,0.73,3.07\\n8,0.72,3.50\\n9,0.74,4.12\\n11,1.54,1.01\\n12,1.30,1.23\\n14,1.15,1.74\\n15,1.09,2.06\\n16,1.03,2.44\\n17,1.01,2.83\\n19,1.96,0.91\\n20,1.74,1.04\\n29,1.38,1.75\\n30,1.31,1.66\\n35,1.15,2.74\\n53,1.33,2.21\\n')};Z3(334,1,{},Qrb.AC);_.Lb=function BC(a,b){return Erb.X5(this.a[a][b])};_.Mb=function CC(){return Qrb.yC(this)};Drb.F$=B5(334);Qrb.DC=function DC(){this.a=Prb.lA('99\\nint,int,int,int,int\\n1,1,1,1,0\\n2,2,2,1,0\\n3,3,3,1,0\\n4,4,4,1,0\\n5,5,5,5,0\\n6,6,6,6,0\\n7,7,7,6,0\\n8,8,8,8,0\\n9,9,9,8,0\\n10,10,10,8,0\\n11,11,11,11,0\\n12,12,12,12,0\\n13,13,13,13,0\\n14,14,14,14,0\\n15,15,15,15,0\\n16,16,16,15,0\\n17,17,17,15,0\\n18,18,18,15,0\\n19,19,19,19,0\\n20,20,1,1,0\\n21,21,21,5,0\\n22,22,22,1,0\\n23,23,23,5,0\\n24,24,24,5,0\\n25,25,25,25,0\\n26,26,26,25,0\\n27,27,28,5,0\\n28,28,28,5,0\\n29,29,29,5,0\\n30,30,2,1,0\\n31,31,31,31,0\\n32,32,7,6,0\\n33,33,21,5,0\\n34,34,8,8,0\\n35,35,6,6,0\\n36,36,36,5,0\\n37,37,2,1,0\\n38,38,9,8,0\\n39,39,10,8,0\\n40,40,10,8,0\\n41,41,3,1,0\\n42,42,42,8,0\\n43,43,10,8,0\\n44,44,16,15,0\\n45,45,10,8,0\\n46,46,9,8,0\\n47,47,42,8,0\\n48,48,9,8,0\\n49,49,6,6,0\\n50,50,21,5,0\\n51,51,7,6,0\\n52,52,21,5,0\\n53,53,42,8,0\\n54,54,9,8,0\\n55,55,10,8,0\\n56,56,10,8,0\\n57,57,2,1,0\\n58,58,10,8,0\\n59,59,6,6,0\\n60,60,4,1,0\\n61,61,42,8,0\\n62,62,10,8,0\\n63,63,2,1,0\\n64,64,2,1,0\\n65,65,9,8,0\\n66,66,9,8,0\\n67,67,9,8,0\\n68,68,8,8,0\\n69,69,9,8,0\\n70,70,70,70,70\\n71,71,5,5,0\\n72,72,16,15,0\\n73,73,18,15,0\\n74,74,17,15,0\\n75,75,26,25,0\\n76,76,9,8,0\\n77,77,12,12,0\\n78,78,2,1,0\\n79,79,9,8,0\\n80,80,2,1,0\\n81,81,10,8,0\\n82,82,9,8,0\\n83,0,0,0,0\\n84,0,0,0,0\\n85,0,0,0,0\\n86,0,0,0,0\\n87,87,87,87,87\\n88,88,88,88,88\\n89,89,89,89,89\\n90,90,90,90,90\\n91,91,91,91,91\\n92,92,92,92,92\\n93,93,93,93,93\\n94,94,94,94,94\\n95,95,95,95,95\\n96,96,96,96,96\\n97,97,97,97,97\\n98,98,98,98,98\\n99,99,99,99,99\\n')};Z3(336,1,{},Qrb.DC);Drb.G$=B5(336);Qrb.EC=function EC(a,b,c,d,e){var f,g,h,i;f=Prb.EA(b.C[c]);g=Prb.EA(b.C[d]);h=Prb.EA(b.C[e]);f>h&&(f=(i=Erb.A6(h),Erb.A6(h=f),i).a);return Prb.UA(BX(nX(Drb.NY,1),Qsb,6,15,[1,0,2]),BX(nX(Drb.NY,1),Qsb,6,15,[g,f,h]),a)};Qrb.FC=function FC(a,b,c,d,e){var f,g,h,i;f=Prb.EA(b.C[c]);g=Prb.EA(b.C[e]);h=f>g?4:3;i=Qrb.EC(a,b,c,d,e);return i>=0?Erb.W5(a.a[i][h]):0};Qrb.GC=function GC(){this.a=Prb.kA('30\\nint,int,int,float,float\\n0,1,0,0.15,0.15\\n0,1,1,0.10,0.30\\n0,1,2,0.05,0.35\\n0,1,3,0.05,0.35\\n0,1,4,0.05,0.35\\n1,1,1,0.30,0.30\\n1,1,2,0.30,0.50\\n1,1,3,0.30,0.50\\n1,1,4,0.30,0.50\\n2,1,2,0.50,0.50\\n2,1,3,0.50,0.50\\n2,1,4,0.50,0.50\\n3,1,3,0.50,0.50\\n3,1,4,0.50,0.50\\n4,1,4,0.50,0.50\\n0,2,0,0.00,0.00\\n0,2,1,0.00,0.15\\n0,2,2,0.00,0.15\\n0,2,3,0.00,0.15\\n0,2,4,0.00,0.15\\n1,2,1,0.30,0.30\\n1,2,2,0.25,0.25\\n1,2,3,0.25,0.25\\n1,2,4,0.25,0.25\\n2,2,2,0.25,0.25\\n2,2,3,0.25,0.25\\n2,2,4,0.25,0.25\\n3,2,3,0.25,0.25\\n3,2,4,0.25,0.25\\n4,2,4,0.25,0.25\\n')};Z3(335,1,{},Qrb.GC);_.Lb=function HC(a,b){return Erb.X5(this.a[a][b])};_.Mb=function IC(){return this.a.length};Drb.H$=B5(335);Qrb.JC=function JC(a,b,c){return Erb.W5(a.a[b][c])};Qrb.KC=function KC(){this.a=Prb.kA('25\\nint,int,float,float,float\\n0,0,1.26,0.025,0.025\\n0,1,1.66,0.30,0.36\\n0,2,1.84,0.38,0.58\\n0,3,1.98,0.49,0.65\\n0,4,2.03,0.51,0.80\\n0,5,2.03,0.25,0.81\\n0,30,1.85,0.15,0.53\\n0,40,1.84,0.61,0.61\\n0,50,1.78,0.97,0.62\\n1,1,1.91,0.68,0.68\\n1,2,2.28,0.74,0.92\\n1,3,2.35,0.85,1.02\\n1,4,2.33,0.68,1.12\\n1,5,2.50,0.97,1.22\\n1,30,2.08,1.14,0.97\\n1,40,2.34,1.17,1.08\\n2,2,2.41,1.18,1.18\\n2,3,2.52,1.02,1.28\\n2,4,2.61,1.28,1.40\\n2,5,2.60,0.84,1.24\\n3,3,2.58,1.41,1.35\\n3,4,2.66,0.86,1.48\\n3,5,2.75,1.14,1.55\\n4,4,2.85,1.62,1.62\\n4,5,2.76,1.25,1.51\\n')};Z3(337,1,{},Qrb.KC);_.Lb=function LC(a,b){return Erb.X5(this.a[a][b])};_.Mb=function MC(){return this.a.length};Drb.I$=B5(337);\nQrb.NC=function NC(a,b,c,d,e,f){var g,h,i,j,k,l;g=b.a[c];k=BX(nX(Drb.NY,1),Qsb,6,15,[b.a[d],b.a[e],b.a[f]]);for(h=0;h<4;h++){l=tX(Drb.NY,Qsb,6,3,15,1);for(j=0;j<3;j++)l[j]=a.a.g.a[k[j]-1][h+1];Hrb.Nmb(l,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));i=Prb.UA(BX(nX(Drb.NY,1),Qsb,6,15,[1,0,2,3]),BX(nX(Drb.NY,1),Qsb,6,15,[g,l[0],l[1],l[2]]),a);if(i>=0)return Erb.W5(a.b[i][4])}return 0};Qrb.OC=function OC(a,b){this.b=Prb.kA(b);this.a=a};Z3(328,1,{},Qrb.OC);_.Lb=function PC(a,b){return Erb.X5(this.b[a][b])};_.Mb=function QC(){return this.b.length};Drb.J$=B5(328);Qrb.RC=function RC(a,b,c,d,e){var f,g,h,i,j;f=b.a[c];g=b.a[d];h=b.a[e];i=Rrb.lD(a.a,b,c,d,e);f>h&&(f=(j=Erb.A6(h),Erb.A6(h=f),j).a);return Prb.UA(BX(nX(Drb.NY,1),Qsb,6,15,[2,1,3,0]),BX(nX(Drb.NY,1),Qsb,6,15,[g,f,h,i]),a)};Qrb.SC=function SC(a,b,c,d,e){var f,g,h,i,j,k;f=b.a[c];g=b.a[e];i=Rrb.yD(a.a,b,c,d);j=Rrb.yD(a.a,b,d,e);k=Qrb.RC(a,b,c,d,e);h=f>g||f==g&&i<j?1:0;if(k>=0)return Erb.W5(a.b[k][4+h]);return Qrb.FC(a.a.i,b,c,d,e)};Qrb.TC=function TC(a){this.b=Prb.kA('282\\nint,int,int,int,float,float\\n0,1,1,1,0.206,0.206\\n0,1,1,2,0.136,0.197\\n0,1,1,3,0.211,0.092\\n0,1,1,5,0.227,0.070\\n0,1,1,6,0.173,0.417\\n0,1,1,8,0.136,0.282\\n0,1,1,10,0.187,0.338\\n0,1,1,11,0.209,0.633\\n0,1,1,12,0.176,0.386\\n0,1,1,15,0.139,0.217\\n0,1,1,34,0.236,0.436\\n0,1,1,37,0.152,0.260\\n0,1,1,39,0.144,0.595\\n0,1,1,41,0.122,0.051\\n0,1,1,56,0.262,0.451\\n0,1,1,68,0.186,0.125\\n0,2,1,2,0.282,0.282\\n0,2,1,3,0.206,0.022\\n0,2,1,5,0.234,0.088\\n0,2,1,6,0.183,0.387\\n0,2,1,8,0.214,0.363\\n0,3,1,5,0.157,0.115\\n0,3,1,6,-0.036,0.456\\n0,3,1,10,0.038,0.195\\n0,5,1,5,0.115,0.115\\n0,5,1,6,0.013,0.436\\n0,5,1,8,0.027,0.358\\n0,5,1,9,0.040,0.418\\n0,5,1,10,0.043,0.261\\n0,5,1,11,0.003,0.452\\n0,5,1,12,-0.018,0.380\\n0,5,1,15,0.018,0.255\\n0,5,1,18,0.121,0.218\\n0,5,1,20,0.069,0.327\\n0,5,1,22,0.055,0.267\\n0,5,1,34,-0.003,0.342\\n0,5,1,37,0.074,0.287\\n0,5,1,39,0.092,0.607\\n0,5,1,40,0.023,0.335\\n0,5,1,41,0.093,0.118\\n0,5,1,54,0.016,0.343\\n0,5,1,55,0.030,0.397\\n0,5,1,56,0.031,0.384\\n0,5,1,68,0.041,0.216\\n0,6,1,6,0.320,0.320\\n0,6,1,37,0.310,0.160\\n0,11,1,11,0.586,0.586\\n0,12,1,12,0.508,0.508\\n0,1,2,1,0.250,0.250\\n0,1,2,2,0.203,0.207\\n2,1,2,2,0.222,0.269\\n2,1,2,3,0.244,0.292\\n0,1,2,5,0.215,0.128\\n2,1,2,37,0.246,0.260\\n1,2,2,2,0.250,0.219\\n2,2,2,3,0.155,0.112\\n0,2,2,5,0.207,0.157\\n1,2,2,5,0.267,0.159\\n0,2,2,6,0.118,0.576\\n2,2,2,37,0.143,0.172\\n0,2,2,40,0.289,0.390\\n0,2,2,41,0.191,-0.047\\n1,3,2,5,0.264,0.156\\n0,5,2,5,0.140,0.140\\n0,5,2,6,0.213,0.502\\n2,5,2,37,0.153,0.288\\n0,5,2,40,0.070,0.463\\n0,5,2,41,0.191,0.005\\n0,1,3,1,0.358,0.358\\n2,1,3,2,0.246,0.409\\n2,1,3,3,0.303,0.145\\n0,1,3,5,0.321,0.183\\n0,1,3,6,0.338,0.732\\n0,1,3,7,0.154,0.856\\n0,1,3,10,0.223,0.732\\n2,1,3,37,0.217,0.207\\n1,2,3,5,0.407,0.159\\n1,2,3,6,0.429,0.473\\n1,2,3,7,0.214,0.794\\n1,2,3,9,0.227,0.610\\n1,2,3,10,0.298,0.600\\n1,3,3,5,0.251,0.133\\n1,3,3,6,0.066,0.668\\n1,3,3,7,-0.093,0.866\\n0,5,3,5,0.126,0.126\\n0,5,3,6,0.174,0.734\\n0,5,3,7,0.032,0.805\\n0,5,3,9,0.037,0.669\\n0,5,3,10,0.169,0.619\\n0,5,3,40,0.087,0.685\\n0,5,3,54,0.098,0.210\\n0,6,3,7,0.494,0.578\\n4,6,3,20,1.179,0.752\\n2,6,3,37,0.350,0.175\\n0,7,3,10,0.771,0.353\\n0,7,3,20,0.865,-0.181\\n2,7,3,37,0.707,0.007\\n0,9,3,40,0.680,0.260\\n0,10,3,10,1.050,1.050\\n4,20,3,20,0.536,0.536\\n0,40,3,40,0.482,0.482\\n0,1,6,1,0.309,0.309\\n0,1,6,2,0.157,0.375\\n0,1,6,3,-0.153,0.252\\n0,1,6,21,0.256,0.143\\n0,1,6,37,0.163,0.375\\n0,2,6,3,-0.228,0.052\\n0,2,6,29,0.259,0.163\\n4,3,6,20,0.456,0.379\\n0,3,6,24,0.215,0.064\\n0,3,6,37,-0.225,-0.320\\n0,8,6,21,0.304,0.055\\n0,10,6,21,0.419,0.158\\n0,18,6,33,0.309,0.120\\n4,20,6,20,0.739,0.739\\n0,29,6,37,0.130,0.241\\n0,31,6,31,0.227,0.227\\n0,1,8,1,0.312,0.312\\n0,1,8,6,0.212,0.354\\n0,1,8,23,0.309,0.135\\n0,6,8,23,0.418,0.020\\n4,20,8,20,0.653,0.653\\n0,20,8,23,0.128,0.122\\n0,23,8,23,0.190,0.190\\n0,1,9,3,0.326,0.580\\n0,3,9,27,0.464,0.222\\n0,1,10,1,0.063,0.063\\n0,1,10,3,-0.021,0.340\\n0,1,10,6,-0.024,0.374\\n0,1,10,28,0.155,-0.051\\n0,3,10,3,-0.219,-0.219\\n0,3,10,6,0.497,0.513\\n0,3,10,28,0.137,0.066\\n0,28,10,28,0.081,0.081\\n0,1,15,1,0.125,0.125\\n0,1,15,15,0.012,0.238\\n0,1,15,37,0.048,0.229\\n0,1,15,71,0.080,-0.012\\n0,15,15,71,0.172,-0.068\\n0,37,15,71,0.187,-0.027\\n0,71,15,71,0.045,0.045\\n0,1,18,1,0.023,0.023\\n0,1,18,6,0.003,0.213\\n0,1,18,32,-0.091,0.390\\n0,1,18,43,-0.008,0.607\\n0,6,18,6,0.088,0.088\\n0,6,18,32,0.123,0.369\\n0,32,18,32,0.404,0.404\\n0,32,18,43,0.384,0.281\\n0,43,18,43,0.428,0.428\\n0,1,20,5,0.290,0.098\\n0,1,20,20,0.179,0.004\\n0,3,20,5,-0.049,0.171\\n4,3,20,20,0.607,0.437\\n0,5,20,5,0.182,0.182\\n0,5,20,6,0.051,0.312\\n0,5,20,8,0.072,0.226\\n0,5,20,12,0.014,0.597\\n0,5,20,20,0.101,0.079\\n0,5,20,30,0.108,0.123\\n4,6,20,20,0.823,0.396\\n4,8,20,20,0.701,0.369\\n0,12,20,20,0.310,0.000\\n4,20,20,20,0.283,0.283\\n4,20,20,30,0.340,0.529\\n0,1,22,5,0.067,0.174\\n0,1,22,22,0.199,0.039\\n0,5,22,5,0.254,0.254\\n0,5,22,22,0.181,0.108\\n5,22,22,22,0.000,0.000\\n0,5,26,5,-0.121,-0.121\\n0,5,30,20,0.251,0.007\\n0,5,30,30,0.267,0.054\\n4,20,30,30,0.413,0.705\\n0,1,34,1,0.202,0.202\\n0,1,34,36,0.160,-0.009\\n0,36,34,36,0.087,0.087\\n0,1,37,37,0.485,0.311\\n1,2,37,37,0.321,0.235\\n1,3,37,37,0.179,0.217\\n0,5,37,37,0.279,0.250\\n0,5,37,38,0.267,0.389\\n0,5,37,63,0.216,0.434\\n0,5,37,64,0.167,0.364\\n0,5,37,69,0.273,0.391\\n0,6,37,37,0.830,0.339\\n0,15,37,37,0.650,0.259\\n0,37,37,37,-0.411,-0.411\\n0,37,37,38,-0.424,-0.466\\n0,37,37,40,0.429,0.901\\n0,37,37,63,-0.173,-0.215\\n0,37,37,64,-0.229,-0.229\\n0,37,37,69,-0.244,-0.555\\n0,38,37,38,-0.516,-0.516\\n0,37,38,37,-0.342,-0.342\\n0,37,38,38,-0.164,-1.130\\n0,1,39,63,0.313,0.500\\n0,23,39,63,-0.131,0.422\\n0,23,39,65,-0.122,0.281\\n0,63,39,63,0.469,0.469\\n0,63,39,65,0.741,0.506\\n0,65,39,65,0.706,0.706\\n0,1,40,28,0.238,0.091\\n0,1,40,37,0.153,0.590\\n0,2,40,28,0.342,0.156\\n0,3,40,28,0.228,0.104\\n0,28,40,28,0.094,0.094\\n0,28,40,37,0.186,0.423\\n0,1,41,32,0.503,0.943\\n0,2,41,32,0.594,0.969\\n0,5,41,32,0.276,0.852\\n0,32,41,32,0.652,0.652\\n0,18,43,23,0.377,0.057\\n0,23,43,23,0.082,0.082\\n0,63,44,63,0.591,0.591\\n0,63,44,65,0.857,0.978\\n0,50,49,50,0.072,0.072\\n0,1,54,3,0.192,-0.051\\n0,1,54,36,0.240,0.079\\n0,3,54,36,0.005,0.127\\n0,36,54,36,0.148,0.148\\n0,1,55,36,0.189,0.033\\n0,1,55,57,0.166,0.211\\n0,36,55,36,0.106,0.106\\n0,36,55,57,0.093,0.080\\n0,1,56,36,0.211,-0.040\\n0,1,56,57,0.026,0.386\\n0,36,56,36,0.101,0.101\\n0,36,56,57,0.108,0.068\\n0,5,57,55,0.043,0.420\\n0,55,57,55,0.125,0.125\\n0,56,57,56,0.431,0.431\\n0,58,57,58,0.732,0.732\\n0,63,59,63,0.497,0.497\\n0,63,59,65,0.723,0.874\\n0,5,63,39,0.009,0.654\\n0,5,63,44,-0.015,0.446\\n0,5,63,59,0.067,0.588\\n0,5,63,64,0.055,0.370\\n0,5,63,66,0.110,0.464\\n0,37,63,39,0.178,0.523\\n0,37,63,64,-0.045,0.497\\n0,39,63,64,0.422,0.409\\n0,39,63,66,0.436,0.525\\n0,44,63,64,0.581,0.426\\n0,44,63,66,0.542,0.365\\n0,59,63,64,0.852,0.332\\n0,59,63,66,0.775,0.300\\n0,5,64,63,0.086,0.345\\n0,5,64,64,0.085,0.369\\n0,5,64,65,0.051,0.436\\n0,5,64,66,0.113,0.452\\n0,37,64,63,0.059,0.299\\n0,37,64,64,0.277,0.377\\n0,63,64,64,0.206,0.030\\n0,63,64,66,0.171,0.078\\n0,64,64,65,0.079,0.403\\n0,65,64,66,0.406,0.066\\n0,39,65,64,0.528,0.644\\n0,39,65,66,0.397,0.258\\n0,44,65,64,0.816,0.543\\n0,59,65,64,1.177,0.594\\n0,63,66,64,0.213,-0.173\\n0,63,66,66,0.234,0.077\\n0,64,66,65,-0.149,0.383\\n0,65,66,66,0.199,0.101\\n0,1,68,1,0.217,0.217\\n0,1,68,23,0.285,0.050\\n0,1,68,32,-0.047,0.503\\n0,23,68,23,0.145,0.145\\n0,23,68,32,-0.182,0.504\\n0,32,69,37,1.018,0.418\\n0,37,69,37,-0.169,-0.169\\n0,31,70,31,0.210,0.210\\n0,5,78,78,0.279,0.250\\n0,5,78,81,0.083,0.250\\n0,78,78,81,-0.398,0.314\\n0,5,80,81,-0.101,0.691\\n0,81,80,81,0.732,0.732\\n0,36,81,78,0.021,0.368\\n0,36,81,80,0.018,0.422\\n0,78,81,80,0.366,0.419\\n');this.a=a};Z3(330,1,{},Qrb.TC);_.Lb=function UC(a,b){return Erb.X5(this.b[a][b])};_.Mb=function VC(){return this.b.length};Drb.K$=B5(330);Qrb.WC=function WC(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L;k=b.a[c];l=b.a[d];m=b.a[e];n=b.a[f];J=Rrb.BD(a.a,b,c,d,e,f);K=J>10?J/10|0:J;L=J>10?J-K*10:0;B=-1;C=0;A=0;D=0;v=K;H=5;while(C<H&&(B==-1||H==4)||C==4&&K==5&&L>0){if(H==5&&C==4){H=4;C=0;v=L}if(C==1){A=1;D=3}else if(C==2){A=3;D=1}else{A=C;D=C}r=a.a.g.a[k-1][$wnd.Math.min(A+1,4)];s=l;t=m;u=a.a.g.a[n-1][$wnd.Math.min(D+1,4)];if(s>t){t=(G=Erb.A6(s),Erb.A6(s=t),G).a;u=(F=Erb.A6(r),Erb.A6(r=u),F).a}else s==t&&r>u&&(u=(F=Erb.A6(r),Erb.A6(r=u),F).a);B=Prb.UA(BX(nX(Drb.NY,1),Qsb,6,15,[2,3,1,4,0]),BX(nX(Drb.NY,1),Qsb,6,15,[s,t,r,u,v]),a);if(B!=-1&&H==4)break;++C}if(B>=0)return new Qrb.aD(a,B);q=Jrb.Dn(b,d,e);h=BX(nX(Drb.LY,1),Osb,6,15,[0,0]);i=BX(nX(Drb.LY,1),Osb,6,15,[0,0]);j=BX(nX(Drb.LY,1),Osb,6,15,[0,0]);o=BX(nX(Drb.NY,1),Qsb,6,15,[b.C[d],b.C[e]]);g=(Qrb.YB(a.a.b,l)-1)*(Qrb.YB(a.a.b,m)-1);for(w=0;w<2;w++){switch(o[w]){case 6:h[w]=2;i[w]=2.12;break;case 7:h[w]=2;i[w]=1.5;break;case 8:h[w]=2;i[w]=0.2;j[w]=2;break;case 14:h[w]=1.25;i[w]=1.22;break;case 15:h[w]=1.25;i[w]=2.4;break;case 16:h[w]=1.25;i[w]=0.49;j[w]=8;}}if(Qrb.$B(a.a.b,l)||Qrb.$B(a.a.b,m))return new Qrb._C(0,0);if(Qrb.XB(a.a.b,l)&&Qrb.XB(a.a.b,m)&&q<b.g&&Jrb.Gr(b.p,q)){p=Qrb.cC(a.a.b,l)==3&&Qrb.cC(a.a.b,m)==4||Qrb.cC(a.a.b,l)==4&&Qrb.cC(a.a.b,m)==3?3:6;I=Qrb.aC(a.a.b,l)==0&&Qrb.aC(a.a.b,m)==0?0.5:0.3;return new Qrb._C(p*I*$wnd.Math.sqrt(h[0]*h[1]),0)}if(Jrb.Qk(b,q)==2){I=Qrb._B(a.a.b,l)==2&&Qrb._B(a.a.b,m)==2?1:0.4;return new Qrb._C(6*I*$wnd.Math.sqrt(h[0]*h[1]),0)}if(Qrb.YB(a.a.b,l)==4&&Qrb.YB(a.a.b,m)==4)return new Qrb._C(0,$wnd.Math.sqrt(i[0]*i[1])/g);if(Qrb.YB(a.a.b,l)==4&&Qrb.YB(a.a.b,m)!=4){return Qrb.YB(a.a.b,m)==3&&(Qrb.cC(a.a.b,m)==4||Qrb.cC(a.a.b,m)==34||Qrb._B(a.a.b,m)>0)||Qrb.YB(a.a.b,m)==2&&(Qrb.cC(a.a.b,m)==3||Qrb._B(a.a.b,m)>0)?new Qrb.$C:new Qrb._C(0,$wnd.Math.sqrt(i[0]*i[1])/g)}if(Qrb.YB(a.a.b,m)==4&&Qrb.YB(a.a.b,l)!=4){return Qrb.YB(a.a.b,l)==3&&(Qrb.cC(a.a.b,l)==4||Qrb.cC(a.a.b,l)==34||Qrb._B(a.a.b,l)>0)||Qrb.YB(a.a.b,l)==2&&(Qrb.cC(a.a.b,l)==3||Qrb._B(a.a.b,l)>0)?new Qrb.$C:new Qrb._C(0,$wnd.Math.sqrt(i[0]*i[1])/g)}if(Jrb.Qk(b,q)==1&&Qrb._B(a.a.b,l)>0&&Qrb._B(a.a.b,m)>0||Qrb._B(a.a.b,l)>0&&Qrb.aC(a.a.b,m)>0||Qrb.aC(a.a.b,l)>0&&Qrb._B(a.a.b,m)>0){if(Qrb.aC(a.a.b,l)>0&&Qrb.aC(a.a.b,m)>0)return new Qrb.$C;if(Qrb.aC(a.a.b,l)>0&&Qrb._B(a.a.b,m)>0){I=0;Qrb._B(a.a.b,l)==1?(I=0.5):Prb.EA(o[0])==2&&Prb.EA(o[1])==2?(I=0.3):(Prb.EA(o[0])!=2||Prb.EA(o[1])!=2)&&(I=0.15);return new Qrb._C(6*I*$wnd.Math.sqrt(h[0]*h[1]),0)}if(Qrb.aC(a.a.b,m)>0&&Qrb._B(a.a.b,l)>0){I=0;Qrb._B(a.a.b,m)==1?(I=0.5):Prb.EA(o[0])==2&&Prb.EA(o[1])==2?(I=0.3):(Prb.EA(o[0])!=2||Prb.EA(o[1])!=2)&&(I=0.15);return new Qrb._C(6*I*$wnd.Math.sqrt(h[0]*h[1]),0)}if((Qrb._B(a.a.b,l)==1||Qrb._B(a.a.b,m)==1)&&(o[0]!=6||o[1]!=6))return new Qrb._C(2.4000000000000004*$wnd.Math.sqrt(h[0]*h[1]),0);return new Qrb._C(0.8999999999999999*$wnd.Math.sqrt(h[0]*h[1]),0)}if((o[0]==8||o[0]==16)&&(o[1]==8||o[1]==16))return new Qrb._C(-$wnd.Math.sqrt(j[0]*j[1]),0);return new Qrb._C(0,$wnd.Math.sqrt(i[0]*i[1])/g)};Qrb.XC=function XC(a,b){this.b=Prb.kA(b);this.a=a};Z3(331,1,{},Qrb.XC);_.Lb=function YC(a,b){return Erb.X5(this.b[a][b])};_.Mb=function ZC(){return this.b.length};Drb.M$=B5(331);Qrb.$C=function $C(){this.a=0;this.b=0;this.c=0};Qrb._C=function _C(a,b){this.a=0;this.b=a;this.c=b};Qrb.aD=function aD(a,b){this.a=Erb.W5(a.b[b][5]);this.b=Erb.W5(a.b[b][6]);this.c=Erb.W5(a.b[b][7])};Z3(46,1,{},Qrb.$C,Qrb._C,Qrb.aD);_.mb=function bD(){return this.a+','+this.b+','+this.c};_.a=0;_.b=0;_.c=0;Drb.L$=B5(46);Qrb.cD=function cD(a,b){return Erb.W5(a.a[Prb.SA(0,b,0,a.a.length,true,a)][1])};Qrb.dD=function dD(a,b){return a.a[Prb.SA(0,b,0,a.a.length,true,a)][5].a};Qrb.eD=function eD(a,b){return Erb.W5(a.a[Prb.SA(0,b,0,a.a.length,true,a)][4])};Qrb.fD=function fD(a){return a.a.length};Qrb.gD=function gD(a,b){return Erb.W5(a.a[Prb.SA(0,b,0,a.a.length,true,a)][2])};Qrb.hD=function hD(a,b){var c;c=Prb.SA(0,b,0,a.a.length,true,a);return Erb.W5(a.a[c][3])*$wnd.Math.pow(Erb.W5(a.a[c][1]),0.25)};Qrb.iD=function iD(){this.a=Prb.kA(\"95\\nint,float,float,float,float,char\\n1,1.050,2.490,3.890,1.282,'-'\\n2,1.350,2.490,3.890,1.282,'-'\\n3,1.100,2.490,3.890,1.282,'-'\\n4,1.300,2.490,3.890,1.282,'-'\\n5,0.250,0.800,4.200,1.209,'-'\\n6,0.700,3.150,3.890,1.282,'A'\\n7,0.650,3.150,3.890,1.282,'A'\\n8,1.150,2.820,3.890,1.282,'A'\\n9,0.900,2.820,3.890,1.282,'A'\\n10,1.000,2.820,3.890,1.282,'A'\\n11,0.350,3.480,3.890,1.282,'A'\\n12,2.300,5.100,3.320,1.345,'A'\\n13,3.400,6.000,3.190,1.359,'A'\\n14,5.500,6.950,3.080,1.404,'A'\\n15,3.000,4.800,3.320,1.345,'A'\\n16,3.900,4.800,3.320,1.345,'A'\\n17,2.700,4.800,3.320,1.345,'-'\\n18,2.100,4.800,3.320,1.345,'-'\\n19,4.500,4.200,3.320,1.345,'-'\\n20,1.050,2.490,3.890,1.282,'-'\\n21,0.150,0.800,4.200,1.209,'D'\\n22,1.100,2.490,3.890,1.282,'-'\\n23,0.150,0.800,4.200,1.209,'D'\\n24,0.150,0.800,4.200,1.209,'D'\\n25,1.600,4.500,3.320,1.345,'-'\\n26,3.600,4.500,3.320,1.345,'A'\\n27,0.150,0.800,4.200,1.209,'D'\\n28,0.150,0.800,4.200,1.209,'D'\\n29,0.150,0.800,4.200,1.209,'D'\\n30,1.350,2.490,3.890,1.282,'-'\\n31,0.150,0.800,4.200,1.209,'D'\\n32,0.750,3.150,3.890,1.282,'A'\\n33,0.150,0.800,4.200,1.209,'D'\\n34,1.000,2.820,3.890,1.282,'-'\\n35,1.500,3.150,3.890,1.282,'A'\\n36,0.150,0.800,4.200,1.209,'D'\\n37,1.350,2.490,3.890,1.282,'-'\\n38,0.850,2.820,3.890,1.282,'A'\\n39,1.100,2.820,3.890,1.282,'-'\\n40,1.000,2.820,3.890,1.282,'A'\\n41,1.100,2.490,3.890,1.282,'-'\\n42,1.000,2.820,3.890,1.282,'A'\\n43,1.000,2.820,3.890,1.282,'A'\\n44,3.000,4.800,3.320,1.345,'A'\\n45,1.150,2.820,3.890,1.282,'-'\\n46,1.300,2.820,3.890,1.282,'-'\\n47,1.000,2.820,3.890,1.282,'A'\\n48,1.200,2.820,3.890,1.282,'A'\\n49,1.000,3.150,3.890,1.282,'-'\\n50,0.150,0.800,4.200,1.209,'D'\\n51,0.400,3.150,3.890,1.282,'-'\\n52,0.150,0.800,4.200,1.209,'D'\\n53,1.000,2.820,3.890,1.282,'-'\\n54,1.300,2.820,3.890,1.282,'-'\\n55,0.800,2.820,3.890,1.282,'-'\\n56,0.800,2.820,3.890,1.282,'-'\\n57,1.000,2.490,3.890,1.282,'-'\\n58,0.800,2.820,3.890,1.282,'-'\\n59,0.650,3.150,3.890,1.282,'A'\\n60,1.800,2.490,3.890,1.282,'A'\\n61,0.800,2.820,3.890,1.282,'A'\\n62,1.300,2.820,3.890,1.282,'A'\\n63,1.350,2.490,3.890,1.282,'-'\\n64,1.350,2.490,3.890,1.282,'-'\\n65,1.000,2.820,3.890,1.282,'A'\\n66,0.750,2.820,3.890,1.282,'A'\\n67,0.950,2.820,3.890,1.282,'A'\\n68,0.900,2.820,3.890,1.282,'A'\\n69,0.950,2.820,3.890,1.282,'A'\\n70,0.870,3.150,3.890,1.282,'A'\\n71,0.150,0.800,4.200,1.209,'D'\\n72,4.000,4.800,3.320,1.345,'A'\\n73,3.000,4.800,3.320,1.345,'-'\\n74,3.000,4.800,3.320,1.345,'-'\\n75,4.000,4.500,3.320,1.345,'A'\\n76,1.200,2.820,3.890,1.282,'A'\\n77,1.500,5.100,3.320,1.345,'A'\\n78,1.350,2.490,3.890,1.282,'-'\\n79,1.000,2.820,3.890,1.282,'A'\\n80,1.000,2.490,3.890,1.282,'-'\\n81,0.800,2.820,3.890,1.282,'-'\\n82,0.950,2.820,3.890,1.282,'A'\\n87,0.450,6.000,4.000,1.400,'-'\\n88,0.550,6.000,4.000,1.400,'-'\\n89,1.400,3.480,3.890,1.282,'A'\\n90,4.500,5.100,3.320,1.345,'A'\\n91,6.000,6.000,3.190,1.359,'A'\\n92,0.150,2.000,4.000,1.300,'-'\\n93,0.400,3.500,4.000,1.300,'-'\\n94,1.000,5.000,4.000,1.300,'-'\\n95,0.430,6.000,4.000,1.400,'-'\\n96,0.900,5.000,4.000,1.400,'-'\\n97,0.350,6.000,4.000,1.400,'-'\\n98,0.400,6.000,4.000,1.400,'-'\\n99,0.350,3.500,4.000,1.300,'-'\\n\")};Z3(332,1,{},Qrb.iD);_.Lb=function jD(a,b){return Erb.X5(this.a[a][b])};_.Mb=function kD(){return Qrb.fD(this)};Drb.N$=B5(332);Rrb.lD=function lD(a,b,c,d,e){var f,g,h,i,j,k,l;f=b.a[c];g=b.a[e];j=Rrb.yD(a,b,c,d);l=Rrb.yD(a,b,d,e);i=f<=g?j:l;k=f<g?l:j;h=Rrb.mD(a,b,c,d,e);switch(h){case 1:return i>0||i==k?1:2;case 2:return 3;case 3:return 5;case 4:return 4;case 5:return i>0||i==k?6:7;case 6:return 8;case 7:return i>0||i==k?9:10;case 8:return 11;}return 0};Rrb.mD=function mD(a,b,c,d,e){var f,g;f=Rrb.yD(a,b,c,d)+Rrb.yD(a,b,d,e);g=f;Rrb.nD(b,c,d,e,3)?(g+=f>0?4:3):Rrb.nD(b,c,d,e,4)&&(g+=f>0?6:4);return g};Rrb.nD=function nD(a,b,c,d,e){var f,g,h,i,j,k,l,m;m=(Jrb.ou(a,7),a.p);j=new Krb.vhb;Krb.uhb(j,Erb.A6(b));Krb.uhb(j,Erb.A6(c));Krb.uhb(j,Erb.A6(d));if(Jrb.Dn(a,b,c)>=0&&Jrb.Dn(a,c,d)>=0)for(k=0;k<m.i.a.length;k++)if(Krb.Ji(m.j,k).length==e){l=new Krb.vhb;for(g=Krb.Ji(m.i,k),h=0,i=g.length;h<i;++h){f=g[h];Krb.uhb(l,Erb.A6(f))}if(Krb.Xh(l,j))return true}return false};Rrb.oD=function oD(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb,fb,gb,hb,ib,jb,kb,lb,mb,nb,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab,Bb,Cb,Db,Eb;if(b<a.f&&Jrb.Fr(a.p,b)){if(Rrb.vD(a,b,5)){p=new Krb.Zi(a.q);s=new Krb.Zi(a.q);o=false;D=false;F=false;if(a.C[b]==6||a.C[b]==7){for(A=0;A<a.e[b];A++){zb=a.i[b][A];if(!Rrb.vD(a,zb,5))continue;Rrb.tD(a,b,zb)&&(a.C[zb]==8||a.C[zb]==16||a.C[zb]==7&&a.e[zb]+Jrb.Wn(a,zb)==3&&!Rrb.uD(a,zb))&&Krb.Ei(p,Erb.A6(zb));for(hb=0;hb<a.e[zb];hb++){Ab=a.i[zb][hb];if(Ab==b)continue;if(!Rrb.vD(a,Ab,5))continue;Rrb.tD(a,b,Ab)&&(a.C[Ab]==8||a.C[Ab]==16||a.C[Ab]==7&&a.e[Ab]+Jrb.Wn(a,Ab)==3&&!Rrb.uD(a,Ab))&&Krb.Ei(s,Erb.A6(Ab))}}for(n=new Krb.ueb(p);n.a<n.c.a.length;){m=Krb.teb(n).a;if(a.C[m]==8||a.C[m]==16){D=true;break}}for(r=new Krb.ueb(s);r.a<r.c.a.length;){q=Krb.teb(r).a;if(a.C[q]==8||a.C[q]==16){F=true;break}}for(w=0;w<p.a.length;w++)for(gb=w;gb<s.a.length;gb++)if(Rrb.tD(a,(Hrb.fnb(w,p.a.length),p.a[w]).a,(Hrb.fnb(gb,s.a.length),s.a[gb]).a)){o=true;break}}switch(a.C[b]){case 6:if(s.a.length==0){nb=0;jb=0;lb=0;mb=0;for(w=0;w<a.e[b];w++){zb=a.i[b][w];if(a.C[zb]==7&&a.e[zb]+Jrb.Wn(a,zb)==3){++nb;a.s[zb]>0&&!Rrb.uD(a,zb)&&++jb;Rrb.vD(a,zb,5)&&++lb;Rrb.vD(a,zb,6)&&++mb}}if((nb==2&&lb>0||nb==3&&lb==2)&&jb>0&&mb==0)return 80}if(!(p.a.length==0^s.a.length==0)){Eb=true;Db=true;for(w=0;w<a.e[b];w++){zb=a.i[b][w];(a.C[zb]!=6||!Rrb.rD(a,zb))&&(Eb=false);Rrb.tD(a,b,zb)&&!(zb<a.f&&Jrb.Fr(a.p,zb))&&(Db=false)}if(p.a.length==0&&s.a.length==0&&!Eb&&Db)return 78;if(p.a.length!=0&&p.a.length!=0&&(!o||!D&&!F))return 78}if(p.a.length!=0&&(s.a.length==0||D))return 63;if(s.a.length!=0&&(p.a.length==0||F))return 64;break;case 7:if(Rrb.uD(a,b))return 82;if(p.a.length==0&&s.a.length==0){if(a.e[b]+Jrb.Wn(a,b)==3)return 39;return 76}if(a.e[b]+Jrb.Wn(a,b)==3)if(p.a.length==0^s.a.length==0)return 81;if(p.a.length!=0&&(s.a.length==0||D))return 65;if(s.a.length!=0&&(p.a.length==0||F))return 66;if(p.a.length!=0&&s.a.length!=0)return 79;break;case 8:return 59;case 16:return 44;}}if(Rrb.vD(a,b,6)){switch(a.C[b]){case 6:return 37;case 7:if(Rrb.uD(a,b))return 69;if(a.e[b]+Jrb.Wn(a,b)==3)return 58;return 38;}}}switch(a.C[b]){case 3:if(a.j[b]==0)return 92;break;case 6:if(a.e[b]+Jrb.Wn(a,b)==4){if((!!a.p&&b<a.f?Jrb.ur(a.p,b):0)==3)return 22;if((!!a.p&&b<a.f?Jrb.ur(a.p,b):0)==4)return 20;return 1}if(a.e[b]+Jrb.Wn(a,b)==3){ob=0;pb=0;rb=0;vb=0;u=0;for(A=0;A<a.e[b];A++){zb=a.i[b][A];Jrb.Qk(a,Jrb.Dn(a,b,zb))==2&&(u=a.C[zb]);if(a.e[zb]+Jrb.Wn(a,zb)==1){a.C[zb]==8&&++rb;a.C[zb]==16&&++vb}else a.C[zb]==7&&(a.e[zb]+Jrb.Wn(a,zb)==3?++pb:a.e[zb]+Jrb.Wn(a,zb)==2&&Jrb.Qk(a,Jrb.Dn(a,b,zb))==2&&++ob)}if(pb>=2&&ob==0&&u==7){return 57}if(rb==2||vb==2){return 41}if((!!a.p&&b<a.f?Jrb.ur(a.p,b):0)==4&&u==6){return 30}if(u==7||u==8||u==15||u==16){return 3}return 2}if(a.e[b]+Jrb.Wn(a,b)==2){return 4}if(a.e[b]+Jrb.Wn(a,b)==1){return 60}break;case 7:xb=0;db=false;for(B=0;B<a.e[b];B++){zb=a.i[b][B];a.C[zb]==8&&a.e[zb]+Jrb.Wn(a,zb)==1&&++xb;if(Jrb.ao(a,b)+Jrb.Wn(a,b)>=3&&(a.C[zb]==15||a.C[zb]==16)){ub=0;for(gb=0;gb<a.e[zb];gb++){Ab=a.i[zb][gb];a.C[Ab]==8&&a.e[Ab]+Jrb.Wn(a,Ab)==1&&++ub}db||(db=ub>=2)}}if(a.e[b]+Jrb.Wn(a,b)==4){if(Rrb.uD(a,b))return 68;return 34}if(a.e[b]+Jrb.Wn(a,b)==3){if(Jrb.ao(a,b)+Jrb.Wn(a,b)>=4){v=false;for(w=0;w<a.e[b];w++){zb=a.i[b][w];if(Jrb.Qk(a,Jrb.Dn(a,b,zb))==2){v=a.C[zb]==7||a.C[zb]==6;if(a.C[zb]==6){for(gb=0;v&&gb<a.e[zb];gb++){Ab=a.i[zb][gb];if(Ab==b)continue;v=!(a.C[Ab]==7&&a.e[Ab]+Jrb.Wn(a,Ab)==3)}}}}if(xb==1)return 67;if(xb>=2)return 45;if(v)return 54}if(Jrb.ao(a,b)+Jrb.Wn(a,b)>=3){N=false;M=false;O=false;P=false;U=false;T=false;c=0;d=0;e=0;f=0;h=0;k=0;for(w=0;w<a.e[b];w++){zb=a.i[b][w];if(a.C[zb]==6){U=true;zb<a.f&&Jrb.Fr(a.p,zb)&&(!!a.p&&zb<a.f?Jrb.ur(a.p,zb):0)==6&&(T=true);e=0;f=0;h=0;k=0;jb=0;C=0;for(gb=0;gb<a.e[zb];gb++){Ab=a.i[zb][gb];t=Jrb.Dn(a,zb,Ab);Jrb.Qk(a,t)==2&&(a.C[Ab]==8||a.C[Ab]==16)&&(N=true);(Jrb.Qk(a,t)==2||t<a.g&&Jrb.Gr(a.p,t)&&(a.C[Ab]==6||a.C[Ab]==7&&Rrb.sD(a,Ab)==1))&&(c=a.C[Ab]);Jrb.Qk(a,t)==3&&(d=a.C[Ab]);if(a.C[Ab]==7&&a.e[Ab]+Jrb.Wn(a,Ab)==3){a.s[Ab]==1&&++jb;Rrb.vD(a,zb,6)&&++C;j=0;for(ib=0;ib<a.e[Ab];ib++){Bb=a.i[Ab][ib];a.C[Bb]==8&&++j}j<2&&++f}a.C[Ab]==7&&a.e[Ab]+Jrb.Wn(a,Ab)==2&&(Jrb.Qk(a,t)==2||t<a.g&&Jrb.Gr(a.p,t))&&++e;if(Ab<a.f&&Jrb.Fr(a.p,Ab)){a.C[Ab]==8&&++h;a.C[Ab]==16&&++k}}if(c==7){f==2&&e==0&&jb>0&&C==0&&a.e[zb]+Jrb.Wn(a,zb)<4&&(M=true);f==3&&(O=true)}}else if(a.C[zb]==7){g=0;i=0;l=0;for(gb=0;gb<a.e[zb];gb++){Ab=a.i[zb][gb];t=Jrb.Dn(a,zb,Ab);if(Jrb.Qk(a,t)==2){if(a.C[Ab]==6){for(ib=0;ib<a.e[Ab];ib++){Bb=a.i[Ab][ib];if(Bb==b)continue;a.C[Bb]==7?++g:a.C[Bb]==8?++i:a.C[Bb]==16&&++l}g==0&&i==0&&l==0&&!T&&(P=true)}a.C[Ab]==7&&!T&&(P=true)}}}}if(U){d==7&&(db=true);if(M)return 55;if(O)return 56;if(!N&&!db&&(h==0&&k==0&&T||c==6||c==7||c==15||d==6))return 40}if(!db&&(N||P))return 10}}if(a.e[b]+Jrb.Wn(a,b)==2){if(Jrb.ao(a,b)+Jrb.Wn(a,b)==4){K=false;for(w=0;!K&&w<a.e[b];w++){zb=a.i[b][w];K=Jrb.Qk(a,Jrb.Dn(a,b,zb))==3}if(K)return 61;return 53}if(Jrb.ao(a,b)+Jrb.Wn(a,b)==3){W=false;J=false;for(w=0;w<a.e[b];w++){zb=a.i[b][w];if(Jrb.Qk(a,Jrb.Dn(a,b,zb))==2){W=a.C[zb]==8&&xb==1;J=a.C[zb]==6||a.C[zb]==7}}if(W&&!J)return 46;if(J)return 9}if(Jrb.ao(a,b)+Jrb.Wn(a,b)>=2){R=false;for(w=0;w<a.e[b];w++){zb=a.i[b][w];if(a.C[zb]==16){yb=0;for(gb=0;gb<a.e[zb];gb++){Ab=a.i[zb][gb];a.C[Ab]==8&&a.e[Ab]+Jrb.Wn(a,Ab)==1&&++yb}R=yb==1}}if(R)return 48;if(!db)return 62}}if(db)return 43;if(a.e[b]+Jrb.Wn(a,b)==1){S=false;L=false;for(w=0;!S&&!L&&w<a.e[b];w++){zb=a.i[b][w];S=Jrb.Qk(a,Jrb.Dn(a,b,zb))==3;if(a.C[zb]==7&&a.e[zb]+Jrb.Wn(a,zb)==2){for(gb=0;!L&&gb<a.e[zb];gb++){Ab=a.i[zb][gb];L=a.C[Ab]==7&&a.e[Ab]+Jrb.Wn(a,Ab)==2||a.C[Ab]==6&&a.e[Ab]+Jrb.Wn(a,Ab)==3}}}if(S)return 42;if(L)return 47}return 8;case 8:if(a.e[b]+Jrb.Wn(a,b)==3)return 49;if(a.e[b]+Jrb.Wn(a,b)==2){if(Jrb.ao(a,b)+Jrb.Wn(a,b)==3)return 51;kb=0;for(w=0;w<a.e[b];w++){zb=a.i[b][w];a.C[zb]==1&&++kb}if(kb+Jrb.Wn(a,b)==2)return 70;return 6}if(a.j[b]<=1){qb=0;tb=0;wb=0;$=a.e[b]-a.j[b]+Jrb.Wn(a,b)>0;H=false;G=false;Z=false;X=false;ab=false;Q=false;V=false;fb=false;cb=false;eb=false;bb=false;for(w=0;w<a.e[b];w++){if($)break;if(H)break;if(G)break;if(Z)break;if(X)break;if(ab)break;if(Q)break;if(V)break;if(fb)break;if(cb)break;if(eb)break;if(bb)break;zb=a.i[b][w];if(a.C[zb]==6||a.C[zb]==7||a.C[zb]==16){for(gb=0;gb<a.e[zb];gb++){Ab=a.i[zb][gb];a.C[Ab]==7&&a.e[Ab]+Jrb.Wn(a,Ab)==2&&++qb;a.C[Ab]==8&&a.e[Ab]+Jrb.Wn(a,Ab)==1&&++tb;a.C[Ab]==16&&a.e[Ab]+Jrb.Wn(a,Ab)==1&&++wb}}$=a.C[zb]==1;if(a.C[zb]==6){H=tb==2;G=Jrb.Qk(a,Jrb.Dn(a,b,zb))==2;Z=Jrb.Qk(a,Jrb.Dn(a,b,zb))==1&&tb==1}if(a.C[zb]==7){X=Jrb.Qk(a,Jrb.Dn(a,b,zb))==2;if(Jrb.Qk(a,Jrb.Dn(a,b,zb))==1&&tb==1){ab=a.e[zb]+Jrb.Wn(a,zb)==2||Jrb.ao(a,zb)+Jrb.Wn(a,zb)==3;Q=Jrb.ao(a,zb)+Jrb.Wn(a,zb)==4}V=tb>=2}if(a.C[zb]==16){fb=wb==1;cb=Jrb.Qk(a,Jrb.Dn(a,b,zb))==1||Jrb.Qk(a,Jrb.Dn(a,b,zb))==2&&tb+qb>1;eb=Jrb.Qk(a,Jrb.Dn(a,b,zb))==2&&tb+qb==1}bb=a.C[zb]==15||a.C[zb]==17}if(Z||ab||$)return 35;if(H||V||Q||fb||cb||bb)return 32;if(G||X||eb)return 7}break;case 9:if(a.j[b]==1)return 11;if(a.j[b]==0)return 89;break;case 11:if(a.j[b]==0)return 93;break;case 12:if(a.j[b]==0)return 99;break;case 14:return 19;case 15:if(a.e[b]+Jrb.Wn(a,b)==4)return 25;if(a.e[b]+Jrb.Wn(a,b)==3)return 26;if(a.e[b]+Jrb.Wn(a,b)==2)return 75;break;case 16:if(a.e[b]+Jrb.Wn(a,b)==3||a.e[b]+Jrb.Wn(a,b)==4){sb=0;wb=0;I=false;for(w=0;w<a.e[b];w++){zb=a.i[b][w];a.C[zb]==6&&Jrb.Qk(a,Jrb.Dn(a,b,zb))==2&&(I=true);(a.j[zb]==1&&a.C[zb]==8||a.e[zb]+Jrb.Wn(a,zb)==2&&a.C[zb]==7)&&++sb;a.j[zb]==1&&a.C[zb]==16&&++wb}if(a.e[b]+Jrb.Wn(a,b)==3&&sb==2&&I||a.e[b]+Jrb.Wn(a,b)==4)return 18;if(sb>0&&wb>0||sb==2&&!I)return 73;return 17}if(a.e[b]+Jrb.Wn(a,b)==2){Y=false;for(w=0;w<a.e[b];w++){zb=a.i[b][w];a.C[zb]==8&&Jrb.Qk(a,Jrb.Dn(a,b,zb))==2&&(Y=true)}if(Y)return 74;return 15}if(a.e[b]+Jrb.Wn(a,b)==1){Cb=0;I=false;for(w=0;w<a.e[b];w++){zb=a.i[b][w];for(gb=0;gb<a.e[zb];gb++){Ab=a.i[zb][gb];a.C[Ab]==16&&a.e[Ab]+Jrb.Wn(a,Ab)==1&&++Cb}a.C[zb]==6&&Jrb.Qk(a,Jrb.Dn(a,b,zb))==2&&(I=true)}if(I&&Cb!=2)return 16;return 72}break;case 17:if(a.j[b]==4){rb=0;for(w=0;w<a.e[b];w++){zb=a.i[b][w];a.C[zb]==8&&++rb}if(rb==4)return 77}if(a.j[b]==1)return 12;if(a.j[b]==0)return 90;break;case 19:if(a.j[b]==0)return 94;break;case 20:if(a.j[b]==0)return 96;break;case 26:if(a.j[b]==0){if(a.s[b]==2)return 87;if(a.s[b]==3)return 88}break;case 29:if(a.j[b]==0){if(a.s[b]==1)return 97;if(a.s[b]==2)return 98}break;case 30:if(a.j[b]==0)return 95;break;case 35:if(a.j[b]==1)return 13;if(a.j[b]==0)return 91;break;case 53:if(a.j[b]==1)return 14;}return 0};Rrb.pD=function pD(a,b){var c,d,e,f,g,h,i,j,k,l,m;for(d=0;d<a.e[b];d++){k=a.i[b][d];switch(a.C[k]){case 6:return 5;case 7:switch(Rrb.oD(a,k)){case 8:case 39:case 62:case 67:case 68:return 23;case 34:case 54:case 55:case 56:case 58:case 81:return 36;case 9:return 27;default:return 28;}case 8:switch(Rrb.oD(a,k)){case 49:return 50;case 51:return 52;case 70:return 31;case 6:e=false;f=false;g=false;h=false;for(i=0;i<a.e[k];i++){l=a.i[k][i];if(a.C[l]==6){for(j=0;j<a.e[l];j++){m=a.i[l][j];if(m==k)continue;c=Jrb.Dn(a,l,m);(a.C[m]==6||a.C[m]==7)&&(Jrb.Qk(a,c)==2||c<a.g&&Jrb.Gr(a.p,c))&&(e=true);a.C[m]==8&&Jrb.Qk(a,c)==2&&(f=true)}}a.C[l]==15&&(g=true);a.C[l]==16&&(h=true)}if(f||g)return 24;if(e)return 29;if(h)return 33;default:return 21;}case 14:return 5;case 16:case 15:return 71;}}return 0};Rrb.qD=function qD(a,b){if(a.a[b]>-1)return a.a[b];return a.C[b]==1?Rrb.pD(a,b):Rrb.oD(a,b)};Rrb.rD=function rD(a,b){var c,d;if((a.u[b]&Oub)!=0){d=(Jrb.ou(a,7),a.p);for(c=0;c<d.i.a.length;c++)if(Krb.Ji(d.j,c).length==6&&Jrb.Hr(d,c,b))return true}return false};Rrb.sD=function sD(a,b){var c,d,e;e=(Jrb.ou(a,7),a.p);d=0;for(c=0;c<e.i.a.length;c++)Jrb.tr(e,c,b)>=0&&++d;return d};Rrb.tD=function tD(a,b,c){var d,e;if((a.u[b]&Oub)==0||(a.u[c]&Oub)==0)return false;e=(Jrb.ou(a,7),a.p);for(d=0;d<e.i.a.length;d++)if(Krb.Ji(e.j,d).length==5&&Jrb.Hr(e,d,b)&&Jrb.Hr(e,d,c))return true;return false};Rrb.uD=function uD(a,b){var c,d;if(a.C[b]==7&&a.e[b]+Jrb.Wn(a,b)>=3){for(c=0;c<a.e[b];c++){d=a.i[b][c];if(a.C[d]==8&&a.e[d]+Jrb.Wn(a,d)==1)return true}}return false};Rrb.vD=function vD(a,b,c){var d,e;if(b<a.f&&Jrb.Fr(a.p,b)){e=(Jrb.ou(a,7),a.p);for(d=0;d<e.i.a.length;d++){if(Krb.Ji(e.j,d).length!=c||!Jrb.Hr(e,d,b))continue;if(a.b[d]==0)return true}}return false};Rrb.wD=function wD(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;r=(Jrb.ou(a,7),a.p);if(!r.d[b])return 1;if(Krb.Ji(r.j,b).length==6){for(d=Krb.Ji(r.i,b),e=0,f=d.length;e<f;++e){c=d[e];if(Jrb.ao(a,c)+Jrb.Wn(a,c)!=a.e[c]+Jrb.Wn(a,c)+1)return 1}for(i=Krb.Ji(r.j,b),j=0,k=i.length;j<k;++j){h=i[j];l=BX(nX(Drb.NY,1),Qsb,6,15,[-1,-1]);if(Jrb.Qk(a,h)==1){for(n=0;n<=1;n++){g=a.D[n][h];for(m=0;m<a.e[g];m++){o=a.i[g][m];if(!Jrb.Hr(r,b,o)&&Jrb.Qk(a,Jrb.Dn(a,g,o))==2){l[n]=o;break}}}if(l[0]>-1&&l[1]>-1){for(q=0;q<r.i.a.length;q++){if(Jrb.Hr(r,q,l[0])&&Jrb.Hr(r,q,l[1])&&a.b[q]==2)return 2;if(Jrb.Hr(r,q,l[0])&&Jrb.Hr(r,q,l[1])&&a.b[q]!=0)return 1}}}}}if(Krb.Ji(r.j,b).length==5){p=1;for(d=Krb.Ji(r.i,b),e=0,f=d.length;e<f;++e){c=d[e];if(Jrb.ao(a,c)+Jrb.Wn(a,c)==a.e[c]+Jrb.Wn(a,c)&&p>0){--p;continue}if(Jrb.ao(a,c)+Jrb.Wn(a,c)!=a.e[c]+Jrb.Wn(a,c)+1){return 1}}}return 0};Rrb.xD=function xD(a,b,c){return Rrb.yD(a,b,b.D[0][c],b.D[1][c])};Rrb.yD=function yD(a,b,c,d){var e,f,g,h,i,j,k,l,m,n;e=b.a[c];f=b.a[d];k=Jrb.Dn(b,c,d);l=true;n=(Jrb.ou(b,7),b.p);for(m=0;m<n.i.a.length&&l;m++){for(h=Krb.Ji(n.j,m),i=0,j=h.length;i<j;++i){g=h[i];if(g==k&&b.b[m]==0){l=false;break}}}return Jrb.Qk(b,k)==1&&l&&(Qrb.XB(a.b,e)&&Qrb.XB(a.b,f)||Qrb.bC(a.b,e)&&Qrb.bC(a.b,f))?1:0};Rrb.zD=function zD(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;h=Rrb.AD(b);g=tX(Drb.LY,Osb,6,h.length,15,1);for(d=0;d<h.length;d++){q=b.a[d];n=h[d];r=Qrb.rC(a.e,q);c=Qrb.YB(a.b,q);o=0;p=0;if($wnd.Math.abs(r)<_wb)for(j=0;j<b.e[d];j++){l=b.i[d][j];h[l]<0&&(n+=h[l]/(2*b.e[l]))}if(q==62)for(k=0;k<b.e[d];k++){l=b.i[d][k];h[l]>0&&(n-=h[l]/2)}for(i=0;i<b.e[d];i++){l=b.i[d][i];e=Jrb.Dn(b,d,l);m=b.a[l];f=Rrb.yD(a,b,b.D[0][e],b.D[1][e]);p+=Qrb.sC(a.e,f,q,m);o+=h[l]}g[d]=(1-c*r)*n+r*o+p}return g};Rrb.AD=function AD(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;g=tX(Drb.LY,Osb,6,a.q,15,1);D:for(f=0;f<g.length;f++){C=a.a[f];g[f]=0;switch(C){case 32:case 72:for(j=0;j<a.e[f];j++){r=a.i[f][j];u=a.a[r];p=0;q=0;for(l=0;l<a.e[r];l++){s=a.i[r][l];a.C[s]==7&&a.e[s]+Jrb.Wn(a,s)==2&&!(s<a.f&&Jrb.Fr(a.p,s))&&++p;(a.C[s]==8||a.C[s]==16)&&a.e[s]+Jrb.Wn(a,s)==1&&++q}a.C[r]==16&&q==2&&p==1&&(p=0);if(a.C[r]==6&&q>0){g[f]=q==1?-1:-(q-1)/q;continue D}if(u==45&&q==3){g[f]=-0.3333333333333333;continue D}if(u==25&&q>0){g[f]=q==1?0:-(q-1)/q;continue D}if(u==18&&q>0){g[f]=p+q==2?0:-(p+q-2)/q;continue D}if(u==73&&q>0){g[f]=q==1?0:-(q-1)/q;continue D}if(u==77&&q>0){g[f]=-1/q;continue D}}break;case 76:A=0;B=(Jrb.ou(a,7),a.p);for(w=0;w<B.i.a.length;w++)if(Jrb.Hr(B,w,f)){A=w;break}if(A<B.i.a.length){o=0;for(c=Krb.Ji(B.i,A),d=0,e=c.length;d<e;++d){b=c[d];b>-1&&a.a[b]==76&&++o}if(o>0){g[f]=-1/o;continue D}}break;case 55:case 56:case 81:g[f]=a.s[f];n=1;v=0;h=tX(Drb.c3,itb,6,a.q,16,1);h[f]=true;while(n>v){v=n;for(k=0;k<a.q;k++){if(!h[k])continue;for(l=0;l<a.e[k];l++){r=a.i[k][l];u=a.a[r];if(u!=57&&u!=80)continue;for(m=0;m<a.e[r];m++){s=a.i[r][m];t=a.a[s];if(t!=55&&t!=56&&t!=81)continue;if(h[s])continue;h[s]=true;g[f]+=a.s[s];++n}}}}g[f]/=n;continue D;case 61:for(i=0;i<a.e[f];i++){r=a.i[f][i];if(a.a[r]==42){g[f]=1;continue D}}continue D;case 34:case 49:case 51:case 54:case 58:case 92:case 93:case 94:case 97:g[f]=1;continue D;case 87:case 95:case 96:case 98:case 99:g[f]=2;continue D;case 88:g[f]=3;continue D;case 35:case 62:case 89:case 90:case 91:g[f]=-1;continue D;}g[f]=0}return g};Rrb.BD=function BD(a,b,c,d,e,f){var g,h,i,j,k,l;j=Jrb.Dn(b,d,e);g=Rrb.yD(a,b,c,d);h=Rrb.yD(a,b,d,e);i=Rrb.yD(a,b,e,f);l=h;h==0&&Jrb.Qk(b,j)==1&&(g==1||i==1)&&(l=2);k=Rrb.CD(b,c,d,e,f);if(k==4&&Jrb.Dn(b,c,e)==-1&&Jrb.Dn(b,d,f)==-1)return 40+l;if(k==5&&(b.a[c]==1||b.a[d]==1||b.a[e]==1||b.a[f]==1))return 50+l;return l};\nRrb.CD=function CD(a,b,c,d,e){var f,g,h,i,j,k,l,m;if(Jrb.Dn(a,b,c)==-1||Jrb.Dn(a,c,d)==-1||Jrb.Dn(a,d,e)==-1)return 0;if(Jrb.Dn(a,e,b)>=0)return 4;l=(Jrb.ou(a,7),a.p);m=new Krb.vhb;Krb.uhb(m,Erb.A6(b));Krb.uhb(m,Erb.A6(c));Krb.uhb(m,Erb.A6(d));Krb.uhb(m,Erb.A6(e));for(j=0;j<l.i.a.length;j++)if(Krb.Ji(l.j,j).length==5){k=new Krb.vhb;for(g=Krb.Ji(l.i,j),h=0,i=g.length;h<i;++h){f=g[h];Krb.uhb(k,Erb.A6(f))}if(Krb.Xh(k,m))return 5}return 0};Z3(360,1,{});Drb.O$=B5(360);Srb.DD=function DD(a){};Srb.ED=function ED(a){var b,c,d;b=0;c=0;for(d=0;d<a.g.a.length+a.f.a.length;d++){b+=Jrb.Ek(d<a.g.a.length?Krb.Ji(a.g,d):Krb.Ji(a.f,d-a.g.a.length))*(d<a.g.a.length?Krb.Ji(a.g,d):Krb.Ji(a.f,d-a.g.a.length)).r;c+=(d<a.g.a.length?Krb.Ji(a.g,d):Krb.Ji(a.f,d-a.g.a.length)).r}if(c!=0)return c/b;return 1};Srb.FD=function FD(b,c){var d,e,f,g;Srb.DD(this);e=new Urb.GF(b);try{g=new fsb.B4;Erb.H7(g.a,'$RXN\\n');Erb.H7(g.a,c!=null?c:'');Erb.H7(g.a,'\\n\\n');fsb.A4(g,uxb+Urb.QF(b,true,27));Erb.H7(g.a,rsb);fsb.A4(g,'  '+e.g.a.length+'  '+e.f.a.length+rsb);f=Srb.ED(e);for(d=0;d<e.g.a.length+e.f.a.length;d++){Erb.H7(g.a,'$MOL\\n');Jrb.Eq(new Jrb.Hq(d<e.g.a.length?Krb.Ji(e.g,d):Krb.Ji(e.f,d-e.g.a.length),f,null),g)}this.a=g.a}catch(a){a=g3(a);if(zY(a,15)){Erb.X7();String.fromCharCode(10)}else throw h3(a)}};Z3(242,1,{},Srb.FD);_.a=null;Drb.P$=B5(242);Srb.GD=function GD(a){var b,c;b=new Urb.FF;c=new fsb.v4(new fsb.z4(a));Srb.HD(b,c);return b};Srb.HD=function HD(a,b){var c,d;d=fsb.u4(b);c=false;if(d==null||!Erb.k7(Hrb.rnb(d).substr(0,4),'$RXN')){throw h3(new Erb._z(\"'$RXN' tag not found\"))}Erb.k7(d,'$RXN V3000')?(c=Srb.JD(a,b,false)):(c=Srb.ID(a,b,false));return c};Srb.ID=function ID(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;j=Erb.y7(fsb.u4(b));Hrb.rnb(j).length!=0&&(a.e=j);fsb.u4(b);d=fsb.u4(b);if(!c&&Erb.k7(Hrb.rnb(d).substr(0,13),uxb)){e=(Hrb.mnb(13,Hrb.rnb(d).length+1),Hrb.rnb(d).substr(13));if(Urb.PF(e,true,a))return true}o=fsb.u4(b);n=Erb.V5(Erb.y7((Hrb.lnb(0,3,Hrb.rnb(o).length),Hrb.rnb(o).substr(0,3))),_ub,xsb);l=Erb.V5(Erb.y7((Hrb.lnb(3,6,Hrb.rnb(o).length),Hrb.rnb(o).substr(3,3))),_ub,xsb);h=new Jrb.dr;for(g=0;g<n;g++){o=fsb.u4(b);if(o==null||!Erb.k7(Hrb.rnb(o).substr(0,4),'$MOL')){throw h3(new Erb._z(vxb))}m=new Jrb.Gu;i=new Erb.J7;do{o=fsb.u4(b);i.a+=''+o;i.a+=rsb}while(o!=null&&!Erb.k7(Hrb.rnb(o).substr(0,6),avb));if(o==null){throw h3(new Erb._z(wxb))}Jrb._q(h,m,new fsb.v4(new fsb.z4(i.a)));Krb.Ei(a.g,m);a.d=-1}for(f=0;f<l;f++){o=fsb.u4(b);if(o==null||!Erb.k7(Hrb.rnb(o).substr(0,4),'$MOL')){throw h3(new Erb._z(vxb))}k=new Jrb.Gu;i=new Erb.J7;do{o=fsb.u4(b);i.a+=''+o;i.a+=rsb}while(o!=null&&!Erb.k7(Hrb.rnb(o).substr(0,6),avb));if(o==null){throw h3(new Erb._z(wxb))}Jrb._q(h,k,new fsb.v4(new fsb.z4(i.a)));Krb.Ei(a.f,k);a.d=-1}return true};Srb.JD=function JD(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;j=Erb.y7(fsb.u4(b));Hrb.rnb(j).length!=0&&(a.e=j);fsb.u4(b);d=fsb.u4(b);if(!c&&Erb.k7(Hrb.rnb(d).substr(0,13),uxb)){e=(Hrb.mnb(13,Hrb.rnb(d).length+1),Hrb.rnb(d).substr(13));if(Urb.PF(e,true,a))return true}o=fsb.u4(b);g=new Jrb.dr;if(o!=null&&Erb.k7(Hrb.rnb(o).substr(0,13),'M  V30 COUNTS')){n=Erb.y7((Hrb.mnb(13,Hrb.rnb(o).length+1),Hrb.rnb(o).substr(13)));k=Erb.v7(n,' ');m=Erb.V5(k[0],_ub,xsb);l=Erb.V5(k[1],_ub,xsb);if(m>0){o=fsb.u4(b);if(Erb.k7('M  V30 BEGIN REACTANT',o)){for(f=0;f<m;f++){h=new Jrb.Gu;i=new Erb.J7;i.a+=xxb;do{o=fsb.u4(b);i.a+=''+o;i.a+=rsb}while(o!=null&&!Erb.k7(Hrb.rnb(o).substr(0,15),yxb));Jrb._q(g,h,new fsb.v4(new fsb.z4(i.a)));Krb.Ei(a.g,h);a.d=-1}}o=fsb.u4(b)}if(l>0){o=fsb.u4(b);if(Erb.k7('M  V30 BEGIN PRODUCT',o)){for(f=0;f<l;f++){h=new Jrb.Gu;i=new Erb.J7;i.a+=xxb;do{o=fsb.u4(b);i.a+=''+o;i.a+=rsb}while(o!=null&&!Erb.k7(Hrb.rnb(o).substr(0,15),yxb));Jrb._q(g,h,new fsb.v4(new fsb.z4(i.a)));Krb.Ei(a.f,h);a.d=-1}o=fsb.u4(b)}}return true}return false};Srb.KD=function KD(a){};Srb.LD=function LD(a){var b,c,d;b=0;c=0;for(d=0;d<a.g.a.length+a.f.a.length;d++){b+=Jrb.Ek(d<a.g.a.length?Krb.Ji(a.g,d):Krb.Ji(a.f,d-a.g.a.length))*(d<a.g.a.length?Krb.Ji(a.g,d):Krb.Ji(a.f,d-a.g.a.length)).r;c+=(d<a.g.a.length?Krb.Ji(a.g,d):Krb.Ji(a.f,d-a.g.a.length)).r}if(c!=0)return c/b;return 1};Srb.MD=function MD(b,c){var d,e,f,g,h,i;Srb.KD(this);g=new Urb.GF(b);try{i=new fsb.B4;Erb.H7(i.a,'$RXN V3000\\n');Erb.H7(i.a,c!=null?c:'');Erb.H7(i.a,'\\n\\n');fsb.A4(i,uxb+Urb.QF(b,true,11));Erb.H7(i.a,rsb);f=g.g.a.length;e=g.f.a.length;Erb.H7(i.a,dvb+f+' '+e+rsb);h=Srb.LD(g);if(f>0){Erb.H7(i.a,'M  V30 BEGIN REACTANT\\n');for(d=0;d<g.g.a.length;d++){fsb.A4(i,Jrb.nr(Krb.Ji(g.g,d),h))}Erb.H7(i.a,'M  V30 END REACTANT\\n')}if(e>0){Erb.H7(i.a,'M  V30 BEGIN PRODUCT\\n');for(d=0;d<g.f.a.length;d++){fsb.A4(i,Jrb.nr(Krb.Ji(g.f,d),h))}Erb.H7(i.a,'M  V30 END PRODUCT\\n')}Erb.H7(i.a,Zub);this.a=i.a}catch(a){a=g3(a);if(zY(a,15)){Erb.X7();String.fromCharCode(10)}else throw h3(a)}};Z3(243,1,{},Srb.MD);_.a=null;Drb.Q$=B5(243);Srb.OD=function OD(){Srb.OD=_3;Srb.ND=BX(nX(Drb.B0,1),Esb,2,6,['Idorsia No','Actelion No','ID','IDNUMBER','COMPOUND_ID','NAME','COMPND'])};Srb.PD=function PD(b){var c,d,e,f,g,h,i,j,k;if(!b.i)return false;Erb.G4(b.g,0);Erb.G4(b.b,0);b.f=null;k=false;d=-1;e=null;b.c=b.d==null?null:tX(Drb.B0,Esb,2,b.d.length,6,1);b.e=-1;do{try{j=fsb.u4(b.i);if(j==null){Erb.G4(b.g,0);return false}}catch(a){a=g3(a);if(zY(a,83)){Erb.G4(b.g,0);return false}else throw h3(a)}if(k){Erb.P7(b.b,j);Erb.L7(b.b,10)}else{if(Erb.k7(Hrb.rnb(j).substr(0,1),'>')){k=true;Erb.P7(b.g,avb);Erb.L7(b.g,10);Erb.P7(b.b,j);Erb.L7(b.b,10)}else{Erb.P7(b.g,j);Erb.L7(b.g,10);Erb.k7(Hrb.rnb(j).substr(0,6),avb)&&(k=true);continue}}if(b.d!=null){if(Hrb.rnb(j).length==0){d=-1}else if(d==-1){e=Srb.RD(j);if(e!=null){d=-1;for(c=0;c<b.d.length;c++){if(Erb.k7(e,b.d[c])){d=c;break}}if(b.e==-1){for(g=Srb.ND,h=0,i=g.length;h<i;++h){f=g[h];if(Erb.k7(e,f)){b.e=d;break}}}}}else{b.c[d]==null?(b.c[d]=j):(b.c[d]=Erb.g7(Erb.g7(b.c[d],rsb),j))}}}while(!Erb.k7(Hrb.rnb(j).substr(0,4),bvb));return true};Srb.QD=function QD(b,c){var d,e,f,g;g=0;e=new Jrb.rv;while(g<c){try{f=fsb.u4(b.i)}catch(a){a=g3(a);if(zY(a,83)){break}else throw h3(a)}if(f==null){break}Erb.k7(Hrb.rnb(f).substr(0,4),bvb)&&++g;if(Erb.k7(Hrb.rnb(f).substr(0,1),'>')){d=Srb.RD(f);d!=null&&Jrb.qv(e,d)}}b.d=Krb.Xi(e.b,tX(Drb.B0,Esb,2,0,6,1))};Srb.RD=function RD(a){var b,c,d,e;if(Hrb.rnb(a).length==0||(Hrb.mnb(0,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(0)!=62))return null;d=1;e=0;b=0;while(d<Hrb.rnb(a).length){Hrb.mnb(d,Hrb.rnb(a).length);if(Hrb.rnb(a).charCodeAt(d)==60){if(e!=0)return null;e=d}else{Hrb.mnb(d,Hrb.rnb(a).length);if(Hrb.rnb(a).charCodeAt(d)==62){if(b!=0)return null;b=d}}++d}if(e!=0&&e<b)return Hrb.lnb(e+1,b,Hrb.rnb(a).length),Hrb.rnb(a).substr(e+1,b-(e+1));d=Hrb.rnb(a).indexOf('DT',1);if(d==-1)return null;c=d+2;while(Hrb.rnb(a).length>c&&i5((Hrb.mnb(c,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(c))))++c;return c==d+2?null:(Hrb.lnb(d,c,Hrb.rnb(a).length),Hrb.rnb(a).substr(d,c-d))};Srb.SD=function SD(a,b){if(a.c==null)return null;return a.c[b]};Srb.TD=function TD(a){a.d==null&&Srb.QD(a,10240);return a.d};Srb.UD=function UD(a,b){a.d==null&&Srb.QD(a,b);return a.d};Srb.VD=function VD(a){var b,c;if(a.f)return a.f;c=new Jrb.dr;a.a&&(c.a=true);a.f=Jrb.Lq(c,(b=a.g.a,b));!!a.f&&(a.f.P==null||Hrb.rnb(a.f.P).length==0)&&Jrb.Bm(a.f,a.e!=-1&&a.c!=null?a.c[a.e]:a.f?a.f.P:null);return a.f};Srb.WD=function WD(a,b){Srb.OD();this.d=b;this.i=new fsb.v4(a);this.g=new Erb.T7;this.b=new Erb.T7};Z3(246,360,{},Srb.WD);_.a=false;_.e=0;Drb.R$=B5(246);Trb.$D=function $D(){Trb.$D=_3;Trb.XD=BX(nX(Drb.OY,1),iub,6,14,[524290,524292,589826,589827,589828,589829,589832,589833,589837,589838,598019,598020,598024,606211,688130,688131,688132,688137,688142,696324,819202,819203,819204,819205,819214,827396,1048580,1114114,1114115,1114116,1114120,1212420,1220611,1343492,1343496,1638402,1638403,17367042,17367043,17367044,17367045,17367048,17367049,17367053,17367054,17375236,17465346,17465348,17465353,17473540,1208483842,1208483848,1208483912,1208549378,1208549379,1208549380,1208549384,1208549388,1208549442,1208549443,1208549444,1208549448,1208557571,1208565763,1208565827,1409875970,1409875971,1409875972,1409875976,1409876034,1409876035,1409876036,1409876040,1409884163,1409974274,1409974280,1409974338,1678245892,1678311426,1678311427,1678311428,1678311432,1678311490,1678311491,1678311492,1678311496,1678409730,1678409731,1678409732,1678409794,1678540802,1678540808,1678540810,1678540866,2282291202,2282291203,2282291266,2282291267,2282389506,2282389507,2282389570,2282389571,2282389572,2282520578,2282520579,2282520642,2282520643,2282537027,2483617794,2483617795,2483617858,2483617859,2483617860,2483617864,2483716098,2483716099,2483716162,2483716163,2484150275,2484248579,2752675842,3356033026,3356139523,3557359618,3557457922,3557588994,34510798914,34510798915,34510798916,34510798920,34510807107,34510815299,34712125506,34712125507,34712125508,34712125512,34712223810,34712223811,34712223812,34712223816,34980560962,34980560963,34980659266,34980659267,34980659268,35568287746,35568287747,35568287748,35568287752,35568287756,35568287810,35568287811,35568287812,35568287816,35568287820,35568386050,35568386051,35568386052,35568386114,35568386120,35568517122,35568517123,35568517124,35568517128,35568517186,35568517187,35568517188,35568517192,35568812034,35568812035,35568812098,35568812099,35568910338,35568910339,35568910403,35569336322,35569434626,35585064962,35585064963,35585064964,35585064968,35585065026,35585065027,35585065028,35585065032,35769614338,35769614340,35769614402,35769712642,35770138626,35770236930,35786391554,35786391555,2475109646403,zxb,Axb,2475109711938,2475109711939,2475109720067,2475109720131,2475109728259,2475109728323,Bxb,Cxb,2887426572354,2887426572355,Dxb,Exb,2887627898946,Fxb,2887627997250,Gxb,Hxb,3437182386242,3437182386243,Ixb,3437383712771,3437383712834,Jxb,Kxb,Lxb,Mxb,4674132967490,4674132967491,4674132975619,Nxb,4674334294082,4674334294083,4674334302211,4674334302275,Oxb,4674334392386,Pxb,4674602729538,4674602827842,Qxb,4674602958914,Rxb,Sxb,5086449827906,5086449827907,5086449827912,Txb,5086651154498,5086651162627,Uxb,Vxb,5086651252802,5086651252808,5086651260931,Wxb,5086919589954,Xxb,5086919688258,5086919819330,5636205641794,Yxb,5636406968386,Zxb,5636407066690,5636675403842,$xb,5636675502146,{l:589890,m:73760,h:4},{l:589891,m:73760,h:4},{l:598083,m:73760,h:4},{l:688194,m:73760,h:4},{l:688195,m:73760,h:4},{l:696387,m:73760,h:4},{l:819266,m:73760,h:4},{l:65602,m:73764,h:4},{l:65603,m:73764,h:4},{l:589890,m:172064,h:4},{l:589891,m:172064,h:4},{l:598083,m:172064,h:4},{l:688194,m:172064,h:4},{l:688195,m:172064,h:4},{l:696387,m:172064,h:4},{l:819266,m:172064,h:4},{l:65602,m:172068,h:4},{l:65603,m:172068,h:4},{l:589890,m:172112,h:4},{l:589891,m:172112,h:4},{l:688194,m:172112,h:4},{l:819266,m:172112,h:4},{l:65602,m:172116,h:4},{l:65608,m:172116,h:4},{l:163906,m:172116,h:4},{l:589890,m:303136,h:4},{l:688194,m:303136,h:4},{l:819266,m:303136,h:4},{l:65602,m:303140,h:4},{l:589890,m:303184,h:4},{l:688194,m:303184,h:4},{l:819266,m:303184,h:4},{l:65602,m:303188,h:4},{l:65602,m:303252,h:4},_xb,ayb,{l:589890,m:590112,h:4},{l:589891,m:590112,h:4},byb,cyb,{l:589890,m:590160,h:4},{l:589891,m:590160,h:4},dyb,{l:688194,m:590160,h:4},eyb,fyb,{l:589890,m:590224,h:4},{l:589891,m:590224,h:4},{l:688131,m:590224,h:4},{l:688194,m:590224,h:4},gyb,hyb,{l:589890,m:590368,h:4},iyb,{l:688194,m:590368,h:4},{l:696323,m:590368,h:4},jyb,kyb,{l:819266,m:590368,h:4},lyb,myb,{l:589890,m:590416,h:4},{l:589891,m:590416,h:4},{l:589896,m:590416,h:4},nyb,{l:688136,m:590416,h:4},{l:688194,m:590416,h:4},{l:696323,m:590416,h:4},oyb,{l:819266,m:590416,h:4},{l:688130,m:590480,h:4},{l:688194,m:590480,h:4},{l:65602,m:598052,h:4},{l:65603,m:598052,h:4},{l:65602,m:598100,h:4},{l:65603,m:598100,h:4},{l:73795,m:598100,h:4},{l:163906,m:598100,h:4},{l:163907,m:598100,h:4},{l:65602,m:598164,h:4},{l:163906,m:598164,h:4},pyb,qyb,{l:589890,m:598304,h:4},{l:589891,m:598304,h:4},ryb,{l:688194,m:598304,h:4},syb,{l:1114178,m:598304,h:4},tyb,{l:1212424,m:598304,h:4},{l:1212482,m:598304,h:4},uyb,vyb,{l:589890,m:688416,h:4},wyb,{l:589890,m:688464,h:4},{l:589890,m:688528,h:4},xyb,yyb,{l:688130,m:688784,h:4},{l:65602,m:696356,h:4},{l:65602,m:696404,h:4},{l:163906,m:696404,h:4},{l:589826,m:696608,h:4},{l:1114178,m:696608,h:4},{l:1212418,m:696608,h:4},{l:589826,m:696612,h:4},{l:524355,m:590112,h:288},{l:589825,m:590112,h:288},zyb,{l:589890,m:590112,h:288},{l:598019,m:590112,h:288},{l:598083,m:590112,h:288},Ayb,{l:589890,m:590112,h:336},{l:598019,m:590112,h:336},{l:598083,m:590112,h:336},Byb,{l:589890,m:688416,h:336},Cyb,{l:589890,m:688464,h:336},Dyb,Eyb,{l:589827,m:590112,h:400},{l:589890,m:590112,h:400},{l:589891,m:590112,h:400},Fyb,Gyb,Hyb,Iyb,{l:589890,m:819488,h:400},Jyb,Kyb,Lyb,Myb,{l:589827,m:819488,h:544},Nyb,Oyb,Pyb,{l:688199,m:688464,h:592},Qyb,Ryb,Syb,{l:688202,m:819600,h:592},Tyb,{l:589896,m:1212704,h:592},Uyb,Vyb,{l:688200,m:1212752,h:592},Wyb,{l:688135,m:688464,h:656},{l:688135,m:819536,h:656},{l:589891,m:65936,h:8228},Xyb,{l:589890,m:590112,h:8480},{l:598019,m:590112,h:8480},Yyb,{l:589890,m:688416,h:8480},Zyb,{l:589890,m:688464,h:8480},$yb,_yb,azb,bzb,{l:589896,m:1213008,h:8480},czb,{l:688200,m:1213008,h:8480},{l:688135,m:1343824,h:8480},dzb,{l:589890,m:590112,h:8484},ezb,{l:589890,m:590160,h:8484},{l:1212424,m:590416,h:8484},{l:1212488,m:590416,h:8484},fzb,{l:688194,m:598304,h:8484},{l:589826,m:590112,h:8528},{l:589890,m:590112,h:8528}]);Trb.YD=BX(nX(Drb.MY,1),Pub,6,15,[0.6966999769210815,0,0.4885999858379364,-0.47269999980926514,-0.07490000128746033,gzb,0.273499995470047,0.5699999928474426,0.7009999752044678,0.9534000158309937,-3.6435000896453857,-2.150899887084961,0.4975000023841858,-2.19950008392334,-0.2809000015258789,-0.8259999752044678,-0.1784999966621399,-1.620300054550171,-1.0959999561309814,-0.3619999885559082,0.13950000703334808,-0.29750001430511475,-1.2907999753952026,1.0161999464035034,hzb,-2.5383999347686768,izb,0.4291999936103821,-0.5824000239372253,-0.1834000051021576,0.1306000053882599,-0.5015000104904175,gzb,-0.5257999897003174,0.4244000017642975,-0.16099999845027924,-0.2777999937534332,0.5110999941825867,-0.435699999332428,-0.10409999638795853,0.3424000144004822,-0.061500001698732376,0.6035000085830688,0.7226999998092651,0.43459999561309814,-1.6821000576019287,-0.3310000002384186,-0.49799999594688416,jzb,-0.3650999963283539,0.45969998836517334,0.3384000062942505,0.6632999777793884,0.4544000029563904,0.15970000624656677,0.633899986743927,0.35040000081062317,0.04490000009536743,0.34200000762939453,0.26109999418258667,0.40459999442100525,0.5218999981880188,-1.065000057220459,-1.2314000129699707,-1.802299976348877,-0.36320000886917114,-0.4108000099658966,0.30570000410079956,-0.14560000598430634,-0.27129998803138733,-0.5192999839782715,0.45260000228881836,0.5539000034332275,0.8374000191688538,-0.7070000171661377,-0.48809999227523804,-0.4099999964237213,0,0.14790000021457672,0.3447999954223633,0.42980000376701355,0.5579000115394592,-0.1264999955892563,-0.042500000447034836,0.07670000195503235,0.6635000109672546,-0.38119998574256897,-0.8367999792098999,1.0286999940872192,-0.10209999978542328,0.3587000072002411,-0.5945000052452087,0.16920000314712524,-0.121799997985363,0.32829999923706055,0.22390000522136688,0.20430000126361847,0.05900000035762787,-0.48350000381469727,0.6165000200271606,-0.4011000096797943,0.5577999949455261,-0.21639999747276306,-0.017500000074505806,0.29809999465942383,0.10999999940395355,0.27149999141693115,-0.2994999885559082,-0.46700000762939453,0.1565999984741211,0.046799998730421066,-0.13210000097751617,1.3686000108718872,0,-0.4115999937057495,1.0185999870300293,-0.3935000002384186,0.5223000049591064,0.3684999942779541,0.25769999623298645,1.5192999839782715,0.2705000042915344,0.3790999948978424,0.012000000104308128,-0.33970001339912415,0.14830000698566437,0.2766000032424927,0.35929998755455017,0.7714999914169312,0.3149999976158142,-1.618499994277954,0.18889999389648438,-0.2651999890804291,-0.09650000184774399,0.420199990272522,0.18709999322891235,-0.3684000074863434,-0.07779999822378159,0.8942999839782715,0.3693999946117401,0.28790000081062317,0.4489000141620636,-0.26010000705718994,0.4771000146865845,0.1923000067472458,0.43810001015663147,0.16949999332427979,0.45249998569488525,0.3352000117301941,0.1582999974489212,0.4036000072956085,-0.04800000041723251,0.5023000240325928,-0.26489999890327454,0.76910001039505,-0.35519999265670776,1.0300999879837036,-0.11410000175237656,-0.5932000279426575,0.17489999532699585,0.13130000233650208,-0.18039999902248383,0.399399995803833,0.22910000383853912,0.31690001487731934,0.35989999771118164,-0.0038999998942017555,-0.2955999970436096,0.4408999979496002,-0.16089999675750732,0.3774999976158142,-0.13459999859333038,0.2838999927043915,0.5128999948501587,0.1265999972820282,0.4293999969959259,0.28060001134872437,0.49070000648498535,kzb,0.219200000166893,0.15649999678134918,0.6934999823570251,0.3617999851703644,0.6735000014305115,0.5777999758720398,-0.5636000037193298,0.5569000244140625,0.30379998683929443,-0.32760000228881836,-0.6991999745368958,0.010300000198185444,-0.4659000039100647,lzb,izb,0.18410000205039978,0.707099974155426,0.12269999831914902,0.7949000000953674,-0.6592000126838684,-1.3148000240325928,-0.4066999852657318,-0.1316000074148178,-0.4925000071525574,-0.09290000051259995,-0.4352000057697296,-0.2206999957561493,-0.9959999918937683,-0.723800003528595,-0.5468999743461609,-1.2939000129699707,-0.01360000018030405,0.065700002014637,0.7189000248908997,0.05700000002980232,0.661899983882904,-0.6381000280380249,-0.8072999715805054,0.23549999296665192,0.30480000376701355,-0.019899999722838402,-0.07519999891519547,0.44609999656677246,0.1559000015258789,1.1167999505996704,-1.8039000034332275,0.23649999499320984,-0.22059999406337738,0.4480000138282776,-1.1339999437332153,-0.5652999877929688,-0.40529999136924744,-0.13609999418258667,0.2198999971151352,0.053599998354911804,-0.020999999716877937,0.6984999775886536,0.9642999768257141,-0.41519999504089355,-1.0369000434875488,-0.18299999833106995,0.5882999897003174,-0.29179999232292175,-0.5293999910354614,-0.6541000008583069,0.9473000168800354,-0.19059999287128448,-0.8483999967575073,-0.3456999957561493,0.9541000127792358,1.4230999946594238,-0.7924000024795532,mzb,0.07999999821186066,-0.2596000134944916,0.8381999731063843,-0.4415999948978424,-0.37040001153945923,-0.7487000226974487,-0.10790000110864639,-0.29919999837875366,-0.3276999890804291,0.025100000202655792,-0.9187999963760376,0.10939999669790268,0.8230999708175659,-3.233299970626831,0.03500000014901161,lzb,nzb,0.2791000008583069,0.3206000030040741,0.5662000179290771,-0.3783999979496002,0.4032000005245209,-1.794800043106079,-0.15539999306201935,0.3785000145435333,0.05339999869465828,-0.16529999673366547,-0.09870000183582306,-0.10050000250339508,-0.6460999846458435,0.8034999966621399,-0.24050000309944153,-0.12380000203847885,-0.35760000348091125,0.09610000252723694,-0.6401000022888184,0.2029000073671341,0.23589999973773956,0.4950999915599823,0.19210000336170197,-0.37450000643730164,0.34630000591278076,0.289900004863739,-0.15330000221729279,-0.4169999957084656,0.37700000405311584,0.6998000144958496,0.593999981880188,0.5911999940872192,-0.5570999979972839,0.023800000548362732,-0.2475000023841858,0.030700000002980232,-0.38749998807907104,-0.7437000274658203,0.5144000053405762,0.00570000009611249,0.765500009059906,0.1720000058412552,-2.5624001026153564,-0.30660000443458557,0.36469998955726624,0.17270000278949738,-0.03290000185370445,-0.18930000066757202,0.07020000368356705,-1.2453999519348145,0.14959999918937683,hzb,0.4146000146865845,-0.2667999863624573,-0.11060000211000443,0.03620000183582306,-0.3188999891281128,-0.7278000116348267,-0.08940000087022781,-0.22769999504089355,-0.2393999993801117,1.011199951171875,-0.2962000072002411,0.7775999903678894,0.2944999933242798,-0.22339999675750732,0.27639999985694885,0.8011000156402588,-0.17440000176429749,0.15809999406337738,-1.7552000284194946,-0.384799987077713,0.5993000268936157,0.5267999768257141,-0.04170000180602074,0.4733000099658966,-0.3400999903678894,-0.14499999582767487,0.7088000178337097,-0.13179999589920044,0.04259999841451645,-0.5027999877929688,0.3831999897956848,-0.011800000444054604,-0.4357999861240387,0.3749000132083893,-0.12030000239610672,-0.5648000240325928,-0.1972000002861023,-0.8769000172615051,-0.3675000071525574,-0.2003999948501587,-0.6069999933242798,-0.18569999933242798,0.3467999994754791,-0.36239999532699585,0.5357999801635742,-0.3700999915599823,0.13359999656677246,0.9545000195503235,0.11389999836683273,-0.16990000009536743,izb,0.2890999913215637,0.2612999975681305,-0.03440000116825104,-1.9498000144958496,-2.024899959564209,-0.6004999876022339,-0.6258000135421753,-1.2348999977111816,0.328000009059906,-0.54339998960495,-0.7712000012397766,-0.9057000279426575,-0.16680000722408295,-0.9904999732971191,-0.03720000013709068,-1.1638000011444092,0.12620000541210175,-0.5248000025749207,-0.15379999577999115,-0.36820000410079956,0.3249000012874603,0.06499999761581421,0.051100000739097595,-0.46070000529289246,0.22310000658035278,0.28220000863075256,0.1396999955177307,-0.49380001425743103,0.39480000734329224,-0.4074999988079071,-0.6410999894142151,-0.009100000374019146,-0.13330000638961792,-0.5192000269889832,-0.16609999537467957,izb,-0.07069999724626541,0.4805999994277954,0.38280001282691956,0.22290000319480896,0.6159999966621399,0.33709999918937683,0.188400000333786,0.13809999823570251,jzb,0.2833000123500824,-0.1225999966263771,-3.9189000129699707,-0.459199994802475,-0.3434999883174896,-0.6654000282287598,-0.5055999755859375,-0.863099992275238,0.15360000729560852,-0.6427000164985657,-0.08839999884366989,-0.0471000000834465,0.11060000211000443,0.382099986076355,-0.23919999599456787,-0.4050999879837036,0.08910000324249268,-0.6972000002861023,-0.4699000120162964,0.09220000356435776,0.08060000091791153,-0.6773999929428101,-0.062199998646974564,-0.9300000071525574,0.13369999825954437])};Trb._D=function _D(b){var c,d,e,f,g;d=0;Jrb.Ro(b);Jrb.ou(b,7);for(c=0;c<b.f;c++){try{g=Jrb.Be(b,c,6241);f=(e=Zrb.oV(Trb.ZD,Erb.P6(g)),e<0?-1:e);f!=-1&&(d+=Trb.YD[f])}catch(a){a=g3(a);if(!zY(a,15))throw h3(a)}}return d};Trb.aE=function aE(b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;f=new Trb.qE;Krb.Ei(f.a,new Trb.nE('cLogP Values are estimated applying an atom-type based increment system.',2));Krb.Ei(f.a,new Trb.nE(ozb,2));Krb.Ei(f.a,new Trb.nE(pzb,2));if(b){Jrb.Ro(b);Jrb.ou(b,7);i=0;e=new Krb.xjb;j=new isb.Nab('#0.000');for(c=0;c<b.f;c++){try{d=Jrb.Be(b,c,6241);q=Krb.kdb(e,new Erb.F6(d));!q?Krb.pjb(e,new Erb.F6(d),new Erb.o6(1)):Krb.pjb(e,new Erb.F6(d),new Erb.o6(q.a+1))}catch(a){a=g3(a);if(zY(a,15)){++i}else throw h3(a)}}i!=0&&Krb.Ei(f.a,new Trb.nE('Warning: '+i+' atom type(s) could not be determined.',2));for(p=(h=new Krb.Hjb((new Krb.Njb((new Krb.ydb(e)).a)).b),new Krb.Hdb(h));Krb.gcb(p.a.a);){o=(g=Krb.Fjb(p.a),g.mc());l=Zrb.oV(Trb.ZD,o);(l<0?-1:l)!=-1?Trb.pE(f,(n=o,Krb.bbb(Krb.kjb(e,n))+' * '+isb.Mab(j,Trb.YD[k=Zrb.oV(Trb.ZD,o),k<0?-1:k])+' AtomType: 0x'+Erb.N6(o.a)),2):Trb.pE(f,'Warning: For atom type 0x'+Erb.N6(o.a)+' ('+(m=o,Krb.bbb(Krb.kjb(e,m)))+' times found) is no increment available.',2)}}return f};Trb.bE=function bE(){Trb.$D();var a,b,c,d;if(!Trb.ZD){if(!Trb.ZD){Trb.ZD=new Zrb.qV;for(b=Trb.XD,c=0,d=b.length;c<d;++c){a=Erb.P6(b[c]);Zrb.lV(Trb.ZD,a)}}}};Z3(180,1,{},Trb.bE);Drb.S$=B5(180);Trb.cE=function cE(a,b,c,d,e){var f,g,h,i,j,k;f=1/(1+$wnd.Math.exp(a-5));k=1-1/(1+$wnd.Math.exp(b+5));j=1/(1+$wnd.Math.exp(0.012*c-6));g=1-1/(1+$wnd.Math.exp(d));h=(0.5+f/2)*(0.5+k/2)*(0.5+j/2)*(0.5+g/2);for(i=0;e!=null&&i<e.length;i++){e[i]==2?(h*=0.8):e[i]==3&&(h*=0.6)}return h};Trb.gE=function gE(a,b){var c,d,e,f,g,h,i,j,k;c=new Trb.qE;if(!Trb.fE){Krb.Ei(c.a,new Trb.nE(qzb,2));return -999}Krb.Ei(c.a,new Trb.nE('Found sub-structure fragments and their contributions:',2));Krb.Ei(c.a,new Trb.nE('(yellow atoms carry at least one more substituent)',2));j=0;i=0;f=0;k=new Jrb.ys;e=new Jrb.Gu;for(g=0;g<Trb.eE.a.a.length;g++){Jrb.xp(new Jrb.Fp(false),e,Trb.jE(Trb.eE,g));Jrb.rs(k,b);Jrb.ps(k,e);if(Jrb.ds(k,1,k.c)>0){h=Trb.kE(Trb.eE,g);if(h<-1)j+=h;else{i+=h;++f}Trb.pE(c,Trb.jE(Trb.eE,g),1);Krb.Ei(c.a,new Trb.nE(''+h,3))}}if(f==0)return -1;d=j+i/$wnd.Math.sqrt(f);d=d+0.0625*(f-40);a.a=c;return d};Trb.hE=function hE(a){var b,c,d,e,f,g;if(!Trb.fE)return qzb;f=0;d=0;g=new Jrb.ys;c=new Jrb.Gu;for(e=0;e<Trb.eE.a.a.length;e++){Jrb.xp(new Jrb.Fp(false),c,Trb.jE(Trb.eE,e));Jrb.rs(g,a);Jrb.ps(g,c);if(Jrb.ds(g,1,g.c)>0){f+=Trb.kE(Trb.eE,e);++d}}b=d==0?-1:f/$wnd.Math.sqrt(d);return b+'\\t'+d+'\\t'+a.f};Trb.iE=function iE(){if(!Trb.fE){try{Trb.eE=new Trb.lE(Trb.dE);Trb.fE=true}catch(a){a=g3(a);if(zY(a,15)){Erb.X7();String.fromCharCode(10)}else throw h3(a)}}};Z3(235,1,{},Trb.iE);\nTrb.dE='sNy@LDeVjj@XTKU|TH\\t5.89\\nKA|P@QvRRJjjj@LFaLJnyC@\\t5.86\\nHiFH@H{IIEUJjj@FGPfES]rA@\\t5.82\\nJoB@@BUJssoPvxPTA@@@FFpaUpriv\\x7FDsP\\t5.61\\nHeTH@@RV[TYZ`@@AaUMpssHP`\\t5.19\\nHmtH@@RVYWeVhH@@FCESCJ|rDx\\t5.18\\nj`qA@@IIULsj\\x7FiuoUP@`@@@CAUF\\\\DkQkN}qFB@\\t5.1\\nsOx@@eJymUT@pLVOLJp\\t4.95\\nj`a`@@@YIEEDthdg^jjj`@@@XV`cAJLxKQkN}rD`\\t4.89\\nHk]@@@yJeWmZ{Sjj`@`@XSBEPrngqLx\\t4.83\\nHkmL`LfDD@cIIBhhd]MZ`X@@FEXwKoDdp\\t4.7\\nHefD@Hz\\\\ddUTuUUP@pFDpj[ayD`\\t4.7\\nHaF@@@Ri_ijjj@FAPaUsL[`\\t4.63\\nHeV@@@RUYTYj`@@AatIS\\\\L|PL@\\t4.6\\nHif@@@RiUzzjjh@XMBXUMqND\\t4.55\\nHcuHA@E`dYrRQVYRUUUT@LEaLJfzUt\\t4.49\\nHcLD@@QIeVuWVj`@@A`q\\\\LkoDq`\\t4.49\\nsGY@LDeVj`FABuxhP\\t4.38\\nHcLL@@RlbbTLRRzuT@@@LFkae]xfD\\t4.37\\nHcNL`LaA@HrRPjIKKju@`@@pkFzUxeZ\\t4.36\\nHid@p@kFkAkDfUfn`BH@FF@p|qLx\\t4.35\\nJoBD@@IS\\\\rjzv[uP@@@@@X[EMprng[|a@\\t4.33\\nHg|H@@RYfUWd}nh@@@@@X[ATwCJz]|`@\\t4.33\\nHeT@p@kNkIkDfY[XXBH`@XXGSsLhP\\t4.33\\nJoBD@@IKLrjzv[mP@@@@@XKS\\\\Lkiv\\x7FDa@\\t4.3\\nHmtHpIBlzlVlRYeeXXBHX@FFAr|sJD\\t4.28\\nHie@@@yJeWkjjj`A`tIaTwDxP\\t4.28\\nHeU@@@yJeWZzjjj@FCPfES\\\\PY@\\t4.18\\nHidH@@RYm^Fjjh@X\\\\BES\\\\ODc@\\t4.14\\nHeV@@@RV[TYz`@@AaUMpsqDH\\t4.14\\nsNplJyDJHtQddeeUPCBqXwdX\\t4.1\\nHg|@`@bDfUueZX{`@h@@@FB`fETkiwrN@\\t4.05\\nJoB`@@]ddRRJTRU][uUU@A@@XKBXUKiv\\x7FDXP\\t4.04\\nJoBD@DIU\\\\vjzv[uPTEDP@XGFTwCJz]orB@\\t4.04\\nHg|H@@RYfUWd}nhJBbH@XFFES\\\\LkiwrH@\\t4.04\\nHg}@@@yJeWe^nNzjhHB@AaLHUCNg_DqP\\t4.04\\nHk^@@MRjY]\\\\]TzhJBH@FDieMpri|Pm@\\t4.04\\nHcn@@@Re]eRi]jj@B@AaLIa\\\\LkoDB`\\t4.04\\nHmt@`@dDfUuZZ@Bj@A`rXUCODyP\\t3.99\\nHeT@@DjUghP`h`@X]BESCODs`\\t3.99\\nsNuhLxj@cIHUEi`FDwDF\\t3.99\\nHmuL@FFnWIIEEJQfjYi`A`cCqLH\\t3.98\\nj`q`@@@IJsLjoiuoUT@@@@@CBtDXYpTeZMYwnP@\\t3.94\\nHklHpEbPRPrPrRRqIYHYj`@j@A`UMp|SS@\\t3.94\\nHo~@@HrRQVKJIJwjjj@@@FApfES\\\\ng[|`P\\t3.94\\nHkn@@@rQQEJIKSjj`@@A`lIaTLki|PF@\\t3.94\\nHeVH@DAImeQej@@@FETwCODS@\\t3.94\\nsNx@IddbmUPCBqXwdX\\t3.89\\nHmtD@@QIeyVUZh@@@XTwCJ|SB@\\t3.87\\nHeW@@@zTjU_kjjjh@X]BXULODzP\\t3.83\\nHcLD@H[IIDcLdnuT`@@CAlKae^Hf`\\t3.83\\nHg}@`AlHaIe]YVfNx@Jjh`AaHIaUJz_Dzp\\t3.82\\nHg~H@CyJieU~SvzhF`b@AaNESCJ{_DPp\\t3.82\\nHmtL@@Pdf{eYUj`@@A`qMproDS@\\t3.79\\nsNy@BDivjj@XFZodP\\t3.79\\nsGY@LDeZj`FAbMy@\\t3.79\\nsGX@@eLuT@pHVOEJ\\t3.79\\nHeT@`@dDfUuih@J`@XTfEP|Si@\\t3.78\\nJoB@@BUJssoPvxPTA@@@FApfEWCJg[|cP\\t3.76\\nHmuD`LVD@HrRRqIXYV`@`@XUS\\\\J|c@\\t3.75\\nHg}L`FM]n@cIIDhTheSCMUUSSP@pzDpjG^PX\\t3.74\\nsGYhMEPDYIBei@XS\\\\PH\\t3.7\\nj`q@A@@RGiAIe]fuzLlz@Bh@H@@XRQ`eNJtZwHR@\\t3.69\\nj`q@@@DjUggUhJw``hBB@@A`ZBBTxJRcV]{bLZ@\\t3.69\\nHg~@@@rRIIEQIUqwUUP@P@LEaLJiWSobMp\\t3.69\\nHk^@@@Ri_YVftzjh@H@FDpaTLki|SF@\\t3.69\\nHg~@@MRjY]_GUNjB`b`@XRfTwCJgqBl\\t3.69\\nHkn@@@rRJGJIKSjj`@@A`lIaTLki|a`\\t3.69\\nHmvH@DAIn[VUZh@@@XLc\\\\LkqLh\\t3.69\\nHaFH@NAIYUnZjh@XEaTwLaN@\\t3.69\\nqCaHK@Hg`dsPFDGME`\\t3.69\\nKAz@@ArUJmUT@XMBXUMrN@\\t3.68\\nsJY@LDeZhAahcqC@\\t3.68\\nHklD`HXxcIIDcLeevjd@H@FGXWCJgrD@\\t3.66\\nHmtH`NBHRYWVih@Jh@FG@fETkrA@\\t3.66\\nHiFH@BAJ]ejjh@XMFTwCrD@\\t3.66\\nKA|P@XBRlmUT@XMBES]r@@\\t3.66\\nsGT@ATiVj`FAbqxaP\\t3.66\\nHk]D@DHIRYge\\\\ftvj`PH@FE\\\\Jz_Dp`\\t3.62\\nHid@p@kFkAkDfUfn`BH@FA@cCqLx\\t3.62\\nsNx@@eRmUPCBqXwdX\\t3.62\\nsGY@DDfuj`FBMxe`\\t3.6\\nsGX`JBdruT@pHbwDZ\\t3.59\\nHknH@JCIDdhhd]Nj`h@@FDqc\\\\Lki|a@\\t3.56\\nHmv@pBBlFlVlRYfyZXHJH@FF@J|pnd\\t3.56\\nHeUL@DpFEIeYzyjfZ@FBIgDzP\\t3.56\\nJoCB@E|NRRJJIIGKYoU@uAD@AaNESRnf\\x7FDFp\\t3.55\\nHo~D@Hy|ddUTtRVNzjj@B@AalIaTwRnorC@\\t3.55\\nJoB`P@vDPdrnlktqw@AUUQ@AaHIaUJz_Dyp\\t3.55\\nHkmL`LZDh@cIHULhdmMZZjj@F@xwCJz_H@\\t3.55\\nHmvDPLa@BNbLddlTVeUhH@@FAXwCqIT\\t3.55\\nHknH@JCIDdhhd]Nj`h@@F@qc\\\\LkoDPp\\t3.55\\nHcLH@@rJJIPiKkUP@@@p{FxYW^He@\\t3.55\\nKAzY@XtIPAFRPjYZZ@LDqnHG@\\t3.55\\nKAxH@@bSKKUT@XXUMqLx\\t3.55\\nsJQdEbOBAD^u@LINYX`\\t3.55\\nJgC@PG@DISLroutgmt@P@D@@XBALLki|Sk@\\t3.54\\nHk^L`FWS`HrRQJEJZfFZjjfZ@FCPfEV|`P\\t3.52\\nJoc@PG@DISLrj}]Mz}@D@PP@A`HDprnwqC\\\\\\t3.51\\nHcNHpBtJpZqZqIf[eZXHJI@Aa`BoLKi@\\t3.51\\nHcMDPLvD@HzHrRRqQ[RjtDA@@pKFx^IN`\\t3.48\\nsOt@@tiWMjj`FEbqoDF\\t3.48\\nHaE@@@YJe~fjjh@XUBXU\\\\c`\\t3.47\\nHk]D`FuS`HrRQJEIJfFZjjfZ@FCPfEP|Sm@\\t3.47\\nHmMH`FeXBLddRJRinFjjih@XUFEW\\\\QI@\\t3.47\\nHeV@pBBlzlflRYgea``b@Aa`]OLpa@\\t3.44\\nHid@`@bDfUvf`@h@FE@fEWDxP\\t3.44\\nsNy@BDiujj@XFZobQ@\\t3.43\\nsGY@LDeVj`FAbMxa`\\t3.43\\nKAxD@@c\\\\dvlts@FAIa\\\\\\t3.42\\njdyA`@@HbdsrnlkbexKT@E@A@@CBVJLxHug^xaTP\\t3.4\\njdyA@@IIULsZny`ncU@C@D@@@pMQgAJtZsoAcrA@\\t3.4\\nj`aAb@HLyzHrRQJFYIHf]USAAD@@pE``iJt[wHV@\\t3.4\\nj`qa@@D@R[fYU_Sk^Zh@@@@@FFdLxJRmFl{wHX@\\t3.4\\nj`qa@@C\\\\RjYU_~QmVj`ZBJ`@FBlDhpTeZl{bD^@\\t3.4\\nj`qA@@@ISKMjoiuoUT@@@@@C@tDLxJRmFl{wHT@\\t3.4\\nj`q@@@DjUggUhJw``hBB@@AaZBLDipTeFl{wHZ@\\t3.4\\njhiA@@@ILrsZkf|xKUP@@@@@LCXYpTeZMYw`|``\\t3.4\\njhi@`@@HRYyWVUEKpVh@J@@@@XRqQgAFl{wDJB\\t3.4\\nHg]L`LfDD@cIIBhhd]ikTC@P@LFqnW[yD`\\t3.4\\nJoCD@A|eTrj\\x7Fr^wU@tDT@AaNESCJ{_DQp\\t3.4\\nHg}@@@yJeWe^nNzjhHB@A`lHUCJz]|c@\\t3.4\\nHcLDpITJsjsZqIfVYXXBHZ@A`P\\\\n|SA@\\t3.4\\nHknL`LaA@HrRPjIKY]VhDB@A`vMtj_Hh\\t3.4\\nHmv@@@RYvUeZj@@@F@pfMproD@`\\t3.4\\nHeV@@@RiU~njjj`AatIaTp|Si@\\t3.4\\nHef@@@rRJJIuUU@C@XSBinGdR\\t3.4\\nj`q@`@HRRjyeU\\x7FSk^j`A@@@@FFhTYpRmFl{wHD@\\t3.4\\nsFt@ATiTvjhA`Xl^HT\\t3.4\\nHiFD@J@dfWZjj`A`HPfTwCrB@\\t3.38\\nsNq`@fdvkSHCCKGdh\\t3.37\\nHcnD`FWXBLddRaRuLLuUUKP@pjDpjxgB\\t3.37\\nHevH`Ff@cIIDbmS\\\\MUUM@C@hpjxb\\\\\\t3.37\\nHeTD@@QImeQej@@@FETwCODS@\\t3.37\\nHklL@H[lddRaaRtzjX@@@XMaCJ{qNL\\t3.35\\nHcNHpBtJpZqZqIfUeZXHJI@A`PDJ|sNd\\t3.33\\nJoBfPCZio@QddbTJRVuLLuUULsP@X]BXUCoDzp\\t3.33\\nHk]D`FeS`HrRQHiIZfxZjjfZ@FCQaUt|QM@\\t3.33\\nHg}D`FeS`HrRQHiIZTwCUUTsT@LFcBkixbV\\t3.33\\nsOt@@tjWkjj`FEbqoHp\\t3.32\\nJgC@PG@DISLroutgmt@P@D@@XRALLkiwrN@\\t3.31\\nJoc@PG@DISLrj}]Mz}@D@PP@AaHDprnv\\x7FHL\\t3.31\\nHeV@@@RYyTYj`@@A`LIeMpsr@@\\t3.31\\nHeVH@NAIYWVyjjj@FEXULOLaI@\\t3.31\\nHifH@NAIYW[fjj`A`VES\\\\rDD\\t3.31\\nHieH@FxDigwJiej@FFXU\\\\qND\\t3.31\\nQO`BNZ`XL|`\\t3.31\\nsOt@@tjWkjj`FAbMxlp\\t3.31\\nsJX@@dsU@LMEnHD\\t3.3\\nHaD@@DjUZzjj`A`pPaUwDq`\\t3.28\\nHeVD`Ia@BLdabRwBl@D@CBbingd@\\t3.26\\nHmtD`NTHaIe]Vf`@jP@XTBXU\\\\PY@\\t3.24\\nHeTH@@RYe\\\\YZB@@AaVEWCqFd\\t3.24\\nHefD@JADeUeZjj@FCXS\\\\L|b@\\t3.24\\nKA|H@TBIJjmUPA`VDw\\\\RJ@\\t3.24\\nHo|L`H[gbLddRafRvNzjXHB@AavDLz[|aP\\t3.24\\nHg\\\\L`H[kbLddRaaRvgUS@A@@p{BFUv~Qp\\t3.24\\nsGX`JDdjmT@pVOEJ\\t3.23\\nsJXhMD@bOV`FDwHP\\t3.23\\njhi``@G\\\\DeTsJn~iqoUPMPTT@@pu`eFRUhuoAyAp\\t3.22\\nHkmDPLvD@HzHrRRqQ[JUV``J@AaVMp{qIL\\t3.22\\nHk^DBIAIeIgeYQe]Zjjjh@XBUMpki|SI@\\t3.22\\nHcnDBAAAeIVUexYUjjjj@F@xUMtkoD`P\\t3.22\\nHevHBFAiRYVVfxZjjj@F@pfEWCODA`\\t3.22\\nHcML@FFnwIIEEDZJuSMS@CCLX^HT`\\t3.22\\nHcLD@@QIeVuWVjjj`AaqUprn|SF@\\t3.22\\nHiV@B@BTjYnnXZjjh@X]BXUMwD@P\\t3.22\\nHmuL@DpFEIeY~nZifh@XXfSqNT\\t3.22\\nHeTD@@QImeQejjj@FCES\\\\L|QL@\\t3.22\\nHmtD@@QIeyVUZjjh@XMS\\\\LkqLH\\t3.22\\nHaE@@@yJe~fjjh@XUBES\\\\SN@\\t3.22\\nsJX@@eKU@LLH^IX\\t3.22\\nKA|P@DBSNuUT@X\\\\DHUMwHp\\t3.2\\nsNy@LDeVjj@XLKFod`\\t3.2\\nHeTD@@qI[eQej@@@FCYS\\\\L|RD@\\t3.19\\nHid@@DjU^nBBH@FEPaTwLsa@\\t3.19\\nHidH`NBHRYWZZ@B`@XTBXU\\\\`P\\t3.18\\nsGQ`@jdjmR@pfxhP\\t3.18\\nHid@`@dDfUvf`@h@FAIaUqND\\t3.18\\nHmuH@DHDf{eYUj`@@A`vMproDP`\\t3.17\\nHeVD@NADfVuFVh@@@XESCOHH\\t3.17\\nHaE@@@YJe~fjjh@XEBEWDs`\\t3.14\\nJoBb@BDByEEEMDdbSV{UTC@P@FGYpr]oqBt\\t3.13\\nHg}D@DHERYfywIcmjjA@`@XM`siwqBx\\t3.13\\nHcOLAHePPheNR[e]VyjZfd@XYWCqEt\\t3.13\\nHie@@@GIHddZzjjh@XMBXU]qFD\\t3.13\\nsGXhMD@cIHXmPCBGbE@\\t3.13\\nsOx@@eRimUT@pLQoEf\\t3.13\\nHevH`Ld@aJY[RZnjjid@XXDIsBxP\\t3.13\\nsOx@@drm\\\\@@@prkyab\\t3.1\\nHiVH`LD@cIEDhRZnjjfPAa`PgLJn@\\t3.09\\nHg}L`LGSl@cIEDhddXWTuUUTmH@phHPkx`r\\t3.08\\nHaF@@@RiUkjjj@FEPfEWD[`\\t3.08\\nHk^L`LWS@HRfVuxnijjjei@FAABGqBD\\t3.07\\nsNq`@fdskUHCBGbu@\\t3.07\\nHk]D`LES@HrQQJIKDfkjjjfY@FEABDOLz]@\\t3.07\\nHg}D`LES@HrQQJIKFDu]UUTsR@LJBDH^Ytv\\t3.07\\nHmMH`LEPBDieeRZnjjjY@FAABEsNFP\\t3.07\\nsOx@@drm\\\\@@@pqky`l\\t3.07\\nsJX@@eKU@LMEnHD\\t3.07\\nJoBaPFBivxABTrsjvWTuUUSLr@FCABDM|Rm@\\t3.04\\nHk]L`LE]L@aJYYwbzfjjjVd@XTDHQ|Ra@\\t3.04\\nHk]D`LF]@HRfV_xfkjjjYi@FEABDOLkc@\\t3.04\\nHcmD`LF]@HRfV_rZnjjifPAaPPaCsJyP\\t3.04\\nHeuH`LFPBDiegIjzjjfPA`PPa\\\\rnD\\t3.04\\nHaF@@@RiUkjjj@FCPfEW\\\\a`\\t3.04\\nsNt@A\\\\dbJjj@XFKGbk@\\t3.04\\nj`qa@@I@RYeU{TRg^jBBJjH@FE`XIQgAJtZso\\\\a@\\t3.03\\njdyP@@G^rRQRiQHjIBdFMT@ETuD@CCRLDhqVc^CD\\t3.03\\nj`q`@@@ITrjwoHsoUAP@@@@C@rLDhJRmFl{wH\\\\@\\t3.03\\nj`q@`@H\\\\RjyY]_Sk^j`ZBbH@FAhDhpTeZMYwnPp\\t3.03\\nj`qA@@HIU\\\\rj\\x7FiuoUPUAQD@CBtLDhs`eZMYwnPd\\t3.03\\nj`aP`D@VdXDyIHiTimMAJj`BIj@@XRQ`eFBT{p\\t3.03\\nHcL@HHbDbLbMbLddjbRtkUP@P@LAaL[ag^PP\\t3.03\\nHg}L`FM]n@cIIDhTheSCMUUSSP@pZDpjGbZX\\t3.03\\nHg\\\\HpEbPRPrPrRRqIYICMT@ET@CBj[aOb[X\\t3.03\\nJoBb@CCWYIHhiSDdpv}TsP@P@FEKiv\\x7FLpa@\\t3.03\\nHg~L`FWS`HrRQJEJ[TpsUUTsT@LJaLJnHM`\\t3.03\\nJoCD@B`eLjsj|ioUUAAD@AalXS\\\\Lz]orD@\\t3.03\\nHkoDPFF]N`aPcIIEJeeNFjfjU@FEIaUOHT\\t3.03\\nHk^L`FWS`HrRQJEJZfFZjjfZ@FEPfEWDGP\\t3.03\\nHk^@@@rQQIFIJftpHH@@@F@ieLLkoDHp\\t3.03\\nHo~H@EAIYeV^dvhHJJ@A`iTwCNg[|RD@\\t3.03\\nHknDB@dpgIIEJeMaVj@Hd@FGIaTpkrM@\\t3.03\\nHg}D@DHERYfywIcmjjA@`@XTLz]|sBx\\t3.03\\nHc^`@@pjYJYenkae]@bJhh@XDLkoHx\\t3.03\\nHmvHB@dIrRQRiPUj`B@@X\\\\fESBoHd\\t3.03\\nHae@PDp@bOAIfXj[fjj`AaPES]rH@\\t3.03\\nHcLH`ABPRYW[ZZ@BZ`@XLfETkrM@\\t3.03\\nHmtH`ABHRYWUih@Jh@FC@fET|Se@\\t3.03\\nHeV@B@B\\\\ddTjPsU@@@CCdpj[iy@`\\t3.03\\nHkl@@LddTjTRFZh@J`@X\\\\fESKoHL\\t3.03\\nHcN`@@pjYJYenk`Hbj@A`Prn|c`\\t3.03\\nHcL@@LddTjTPsU@AP@LNSBiewdR\\t3.03\\nHeTH@@Rf{TYj`@@A`qTwCODa@\\t3.03\\nHif@@@RiUzzjjh@X]BXUMwHD\\t3.03\\nsJPXHlPDQ}T@phbq@\\t3.03\\nHcnL`Le]@HrQQJEJEuMUURt`C@`aMxaT\\t3.02\\nHifD@FADfyWaZ@@@FAEWCrD@\\t3.02\\nHeT@@DjU_k``b`@X]BES]ODpP\\t3.01\\nsOx@@eR}]UT@plVMyF\\t3.01\\nsGP`ITjnjPFBqxh`\\t3.01\\nHie@@@{IHddZzjjh@XMBXUCrF@\\t3\\nHif@@@RYfVF@b@@XTUMp|`@\\t3\\nHmv@pIbPRPrPrRRqIPUj`B@@XESBoHd\\t2.95\\nHg^B@FACmInY]XYZZjid@XXw[sDjp\\t2.92\\nHknL@FACR[fWTYZZjiPAac]oLRe@\\t2.92\\nHmvH@JAIUYVUZjjh@X\\\\fDwCODaP\\t2.92\\nHmvD@FALbfbbQFVfji@FFMr|qJD\\t2.92\\nHeVH@JCHeEDcpluUH@prfgfPW@\\t2.92\\nHcND@JCTefWWaYjje@FFTr|rBd\\t2.92\\nHet@@DjYUX^dHbH`A`rDwCODr`\\t2.92\\nHeVH@IAJYW~F``H@FEIaMwDjP\\t2.92\\nHaF@@@RfYkjYj@FF@S\\\\sJx\\t2.92\\nsJPdE`DSpRYZ`FBAxi`\\t2.92\\nsOt`DPtfWMZi`GfVH\\t2.92\\nsJXhMD@bOV`FDOI`\\t2.92\\nHmvH@DAIVYdUZ@b@@XLc\\\\LkrH@\\t2.91\\nsNx@AddQeUPCBqXwdX\\t2.91\\nHaF@@@RfUi`HH@FAIeMqBx\\t2.9\\nsGX@@eLuT@phbqyJ\\t2.89\\nsNt@@|dbJjj@XVKF|c@\\t2.88\\nHaF@`N@HRYWih@H@FEIaUwH@\\t2.88\\nHid@@DjU^nBBH@FCPaTw\\\\SA@\\t2.88\\nqCh@BIWLAaEqS@\\t2.84\\nsGX@HeTuT@pLVOIP\\t2.84\\nHie@@@{IHddZzjjh@XUBXU\\\\Qa@\\t2.83\\nJoCbPCRzg@QddbQRRtuMpuUULuP@XMFEWSsDmp\\t2.82\\nHcLL`NWPbDfUuZf`@jX@FE@fEWDGP\\t2.82\\nHcNH@DAIgfYgVhBH@A`r\\\\LkoHp\\t2.82\\nKAxX@QSYIIiZih@pSBxd\\\\\\t2.82\\nsNq`IVeUuTpCAX|TX\\t2.82\\nsGQ@@drmT@pROEj\\t2.82\\nsOx@@eR}]UT@plQkyL\\t2.82\\nHidH`ABHRYWZZ@B`@XTBXU\\\\Sa@\\t2.81\\nHeTH`ABHRYWVf`@j@AaPIaUqNd\\t2.81\\nHif@@@Rge^Eh@@@XTUMp|RD@\\t2.81\\nsGX`BDdwMR@pbxcP\\t2.81\\nqCx@AYIf`OLE`\\t2.81\\nHaDH`NBHRYWih@H@FE@fEWHx\\t2.81\\nj`qAB@H^bDjn[U_UXsjh@@@`@AaheF\\\\EIVcN}rD@\\t2.8\\nHk]D`LFD@HrRPjJIEatujB`H@FEYWBoLgS@\\t2.8\\nHknHpEdJsjsZsHhheEEVF@bFh@FEArz_DpP\\t2.8\\nJoB@P@QBSJ{MkSV|@EP@@@FF`fETkiv\\x7FHx\\t2.8\\nHcld@dsmBPzIZYyIfVuXUvjjYj@FBToDsP\\t2.8\\nHcmD`LFD@HrRPjIKLJzmPPD@C@lxYyeKh\\t2.8\\nHg^H`MDHaIe]UZf`@jj`@XRBXURiwrN@\\t2.8\\nHkmL@FFnOIIEEDlqvjYjf@FAXSCqIT\\t2.8\\nHg^H@AAJY[Ue[jhHJ@@XJaTwRng_H`\\t2.8\\nHeVD`La@BLdaTRPrm@@@CBlinGbAH\\t2.8\\nHcNH@DAInYWWVjB@@AarTwRn|SA@\\t2.8\\nHklH@@RYeg_SZjB@@A`NTwBngqDd\\t2.8\\nHmv@@@Rf~UeZj@@@FDaFDwCJ|a@\\t2.8\\nHeUH@DpDf^UFVjjh@X\\\\aTwCOHp\\t2.8\\nHeT@`@bDfUuih@J`@XLBXUCqNd\\t2.8\\nHeVH@DAImeQej@@@FCIS\\\\L|c@\\t2.8\\nHifD@AADfyWaZjj@FAES]sDpP\\t2.8\\nHaF@`FBHRYVkh@`@FF@e\\\\sFx\\t2.8\\nHaF@@@Rie[jjj@FEPfMwDJ`\\t2.8\\nsGYiKE`D[lddju@LH^R`\\t2.8\\nsNx@AdbbMUPCBqXwbC@\\t2.8\\nsJP`@TfVhAaEqX`\\t2.79\\nsFx@@eJfuU@LCEcqB`\\t2.77\\nHeWH`LJQ@HrQQEJYULtt@LLABxcR\\t2.76\\nHieH`LHPBLdTQRrjYi`Aa`HWD[`\\t2.76\\nsOy@FDiguie`FFqoDf\\t2.76\\nQMIDBKpRVAaGFP\\t2.76\\nHaE@@@yJeVnjjh@XUBXU\\\\Qn@\\t2.75\\nsGP`@dfUj`FBuyB\\t2.74\\nHo~LpBNwBlflvlRYfVVVVBBhfP@XTASm|PU@\\t2.73\\nHknDpBtpkAkEkDfYnVZXHJI`@XD@j_DJP\\t2.73\\nHeVH@FAIfUqfhH@@FCAAUp|sFd\\t2.73\\nHidH@@RUe^Ejjh@XMaTwCqHP\\t2.73\\nsKT@Adi\\\\Vj@XYX|d@\\t2.73\\nsKQ@@eKcRpCAX|TP\\t2.72\\nsFx@@eJfuU@LKEc^P@\\t2.72\\nHmth`LKed@cIEDUMLjfYf`Aa`HWDyP\\t2.71\\nHeWH`LKi@HrQQESYULsL@LLABxgB\\t2.71\\nHaG@`LK`BLdTQVUSLp@ppDKbMp\\t2.71\\nHaEH@FxDig|jfV`AafEWDS`\\t2.71\\nHmtH`ABPRYW[ih@Ih@FEIaUOHT\\t2.71\\nHif@@@rRIIFnjjj@FCPfEW\\\\Qa@\\t2.71\\nHeeH@DhDeUeZjj@FGIaMpsrH@\\t2.71\\nKAzP@IPIJjmUPAaRXS]qHh\\t2.71\\nsOtHLPDYHhckSM@LLD^Q`\\t2.71\\nsFtHLPDISNmLpCCAGdh\\t2.71\\nsKX@@dmcUPC@qX|`@\\t2.71\\nsJXhMD@cIHUhAaMq@`\\t2.7\\nHaFH@JAIYUnX@@@XEaMwH`\\t2.69\\nJoc@@@YHhhheDbNsYoP@PPD@@XJS\\\\Lkiv\\x7FH@\\t2.67\\nHg^@pCbPRPrPrRRqIPjCMT@ET@CCjXYW[yA`\\t2.67\\nHo}D@HggrRQUSQIX{jjh@H@FBpfES\\\\iorM@\\t2.67\\nHkl@pHdDdLdLddlRTJFZh@J`@XMSCJgrM@\\t2.67\\nHmtH@@rQQJEJUjh@@@X\\\\aMproDb`\\t2.67\\nHmtH@@RY^UeVj@@@FGHS\\\\LkrL@\\t2.67\\nHedL@JZ\\\\ddTZUTuH@pILKnPH\\t2.67\\nHiDL@Hilddtjjfh@XYa]qHD\\t2.67\\nHaF@@@Ri_ijjf@FEPfEWHx\\t2.67\\nKA|@@Qddbljj`CAhSBinQp\\t2.67\\nHeTH@@RYe\\\\YjB@@AapXU\\\\L|RF@\\t2.67\\nHeULAHdDJISdfyW[fijT@XYWCrI@\\t2.64\\nHg|@@DjYU_~V]`@@B`@FDiaTwCN|P{@\\t2.64\\nsJX@@eMU@LBIcrH\\t2.62\\nJob@@BULj~jprmnDQE@@@@XJfDwCiv\\x7FHh\\t2.61\\nHcMH@LDDeYWWajjjj@FDaBES]J|cP\\t2.61\\nHeU@@@yJeWZzjjj@FGPfESSrA@\\t2.61\\nHeT@@DjU^k``b`@X]BES\\\\ODrP\\t2.61\\nsOp@DjWkjj`FEbM_DL\\t2.61\\nHk\\\\d@dsmBPzIZY{HhheLdVE]jjfZh@XIR|SC@\\t2.6\\nHeV@pBBlzlflRYgea``b@A`PYt|Pa@\\t2.6\\nHeT@p@kNkIkDfY[XXBH`@XDF]ODhP\\t2.6\\nHmtD@@EJYUgehHJ@@X\\\\fTwBoDJP\\t2.6\\nsGX@@eMuT@pHfODj\\t2.6\\nHkLN@HiiWSrRSQHqRjZfX@XMFDrf\\t2.59\\nHmwLAHePPheNR[e][fijY@FFUp|aP\\t2.58\\nHeVH@LAI[eQej@@@FCIS\\\\L|RL@\\t2.57\\nsOtHBpDIRocRs@LDIsJl\\t2.55\\nJoB@H@RCrBSJzroSG\\\\@E@A@@F@iaUJz_Hx\\t2.55\\nsNq`@jdvsUPCCKWbK@\\t2.55\\nHedJ@@RaeImmfji`AaRYSSrB@\\t2.54\\nsGX@@eRuT@ptVxcP\\t2.54\\njhi@`@JLRjYeu]TzpZijjjj`@XFQ`gARUhugAyCp\\t2.53\\njhiA@@HIU\\\\rjkz}XMT@PA@@@LKPIQgARUhuoAyAp\\t2.53\\nJoBR@RXI`h]DmJ}dTTTTvQSSiuUTsUP@XEW[_H\\\\\\t2.53\\nj`qa@@J@Re]YyTeG^jjj`@`@FAhHpQgIZMYwnPD\\t2.53\\nj`q@`@@^RYWUe^cKN`@j@B@@FB`HpRbmFm{bNB@\\t2.53\\nj`qA@@HIU\\\\rj\\x7FiuoUPA@@@@C@tBTYpRmFl{wHR@\\t2.53\\njhi@`@@HR[YfUWMypVf`@@@@@XJxJRmFl{p^HQ`\\t2.53\\njdya@@J@RVVyeU{A}Eiz@@@@@A`hTeZMYw`qyB@\\t2.53\\nj`q@`@@HR[fYU_Sk^Zh@@@@@FFlLxJRmFl{wHH@\\t2.53\\nj`qA@@@IJsLjoiuoLt@@@@@CASNBdkQkN}qDD@\\t2.53\\njhqa@@C@RYegV^tyjhHJJ@@XFqQgARUjsoAyA@\\t2.53\\nHg|d@dpSAPzIZU{Hhhhilbtz]UULuP@prnwdV\\t2.53\\nHg}DPLFD@HnHrRPjJIGLNfmPTAP@LFrnE[xdz\\t2.53\\nJoCd@DC_YIHhhdd\\\\mf}USUUT@FBxULLkiorK@\\t2.53\\nJoB`@@[ddTRRVJWKNuUUUUP@XZfES\\\\Lj]|RG@\\t2.53\\nJoC@A@ANRRIGIQIMuoUUL@D@AalIaTrz]orA@\\t2.53\\nj`q`@@@IJsLjoiuo\\\\t@@@@@CASNBdkQkN}rB@\\t2.53\\nHk]DPLFD@HNHrRPjIKYaWUjB@h@FEYpr_DiP\\t2.53\\nJoBB@EMddbbbQRrv[uSUUUP@XZfEprng[|a`\\t2.53\\nJoCFAF``{JSJroJng[UUUUT@FBeS\\\\Lj]oqLt\\t2.53\\nHk\\\\d@dpSAPzIZUyIfYoVgSjjifh@XYW[rC@\\t2.53\\nHg}@@@wIHhddlUrsmUUUUP@pULJfxYT~IE`\\t2.53\\nHo~@B@B\\\\ddTQJbRmzjj`@@A`\\\\IaTwKiv\\x7FHD\\t2.53\\nHg|`@@pmrQQIPiYTrzAAUUD@LARfxYT~QX\\t2.53\\nHo|L@@RlbbTVbbQmvjhJ@@AaITLkiv\\x7FDs`\\t2.53\\nHg^L`LaC@HrRPzIKJRju@AT@C@\\\\InF]OdV\\t2.53\\nHk\\\\`@@pmrQQIPiZfWPHJjb@FGIS\\\\LkrC@\\t2.53\\nHk]@@@wIHhddl^V]jjjjh@XRfES\\\\LkqHL\\t2.53\\nHg~H@DCHhhdeBepg[UU@A@@pdjxYWSodX\\t2.53\\nHkn@B@B\\\\dbarbRtzjh@@@XKBXUCJz_DA`\\t2.53\\nJoBD@@IS\\\\rjzv[uP@@@@@XKEMprng_DQp\\t2.53\\nHknL`LaC@HrRPzIKJUVh@J@AavDwCI|cP\\t2.53\\nHcl`@@pmrQQIPiTrzAAUQ@CCdinFUyF`\\t2.53\\nHg|H@JRjVWWd}njZjjh@XZfDwCJz]|b@\\t2.53\\nHg|H@@RYfUWd}nh@@@@@XKATwCJz_DBp\\t2.53\\nHcm@@@uJfUWyYvjjjj@FDiaTwCJ|RM@\\t2.53\\nHo~D@IADfUYUgWZjBB`@FDdwBng[|c@\\t2.53\\nHkmL@FFnOIIEEDRaVjYjV@FEXpsoHH\\t2.53\\nHeTL`HS@aLddlRPru@@@CC`SJ[ayD`\\t2.53\\nHcl@@DjYU_egZjjjh@XZBXUMprn|b@\\t2.53\\nHmvD`La@BLddNbReUj@@@FCXS\\\\L|aP\\t2.53\\nHcML@FFnwIIEEDZJuSMS@CCFF^Ia@\\t2.53\\nHcML@DpFEIeY}kfjYi`AaRYJ{rN@\\t2.53\\nHcLH@@RVYUYujBB@@X\\\\ULLkoLaN@\\t2.53\\nHmvD@EADfVUyUjjj`A`qTwCODqP\\t2.53\\nHmuL@DpFEIeY~nZifh@XXfKqNd\\t2.53\\nHeVH@BAJ]eQfjjj@FGQeMpsrD@\\t2.53\\nHeTH@@RYe\\\\YjB@@AapPUMp|SI@\\t2.53\\nHeV@@@RiUvnjjj`AatIaTw\\\\PY@\\t2.53\\nHifH@LAIVUxZjj`AatHUMp|`@\\t2.53\\nHie@@@qJYYhP`h@A`REP|Qn@\\t2.53\\nHieD@DHNRY[Rijih@XIc\\\\qBD\\t2.53\\nHaE@@@qJUwBZZh@XEBEWD[`\\t2.53\\nHaED@DHNRY[Jfjf@FDYsDI`\\t2.53\\nKAxX@@gILkmUHA`fEqJX\\t2.53\\nsOx@@eJm]UT@p\\\\VM_H@\\t2.53\\nsJX@@eSU@LDmqP`\\t2.53\\nsFq@@eLzts@LEkqH`\\t2.52\\nsJY@DDfvhAaEqX`\\t2.52\\nqCqPZHAD]XCB[d@\\t2.52\\nHidH@@RUe^Eh@@@XTUMp|RD@\\t2.52\\nHeTHPABHfHRYeUn`HJ@AaPXWSqJD\\t2.51\\nsOx@@eR}]UT@pLQoEf\\t2.51\\nHknHpBtJpZqZqIfUeffBBbX@FE@Pj_DrP\\t2.5\\nHifH@DAIVUxVjj`AarXUMp|b@\\t2.49\\nHifLAHABbTyInU[fijPA`e]rA@\\t2.49\\nHaFLAHABbTyInUnZfd@XIW\\\\a`\\t2.49\\nsFt@AdigUjhAaekrD\\t2.46\\nqCp@AIZ`LINXK@\\t2.46\\nHmv@pBBlFlVlRYfyZXHJH@FA@LkqBx\\t2.45\\nHif@`FBHRYVzz@H`@XDBTwLsa@\\t2.45\\nsOt@AdigkB@@FFU_Eb\\t2.45\\nHmtHPABHfHRYeW[hBBh@FEAa]ODiP\\t2.45\\nJoBbHFSB@DBDYIHUEDdekgZuAHTB@F@xwBng_H\\\\\\t2.44\\nHcN@@@rRHiQIKmUP@@@pfDpnFUwdT\\t2.44\\nsGYDJQDJHR[jf@XXQ\\\\e@\\t2.44\\nsGQLKHaQFbLddmU@LCEkrD\\t2.44\\nsJY@BDfZhAaaEqX`\\t2.44\\nsJP`@dfvhA`l^Q@\\t2.43\\nHg^HpBLJrZsZqIfYYye``jI`@XTASm|Se@\\t2.41\\nqCp@AIZ`LDmqB@\\t2.41\\nHaF@@@RVU[j@@@FEQaTwDC`\\t2.41\\nHaD@`@bDfUzZ@B@AaPIaUrN@\\t2.41\\nHedJ@HiagIIMEYUML@LBcFgdD\\t2.39\\nHid@@DjU^nBBH@FCPaTp|SN@\\t2.39\\nJoB`HBvDQLPdsJormuo@PUTi@AaHXWCNf\\x7FHh\\t2.37\\nHo~D@M@\\\\dTRRbNTyZBBbj@A`ZYS\\\\Lkiv\\x7FHH\\t2.37\\nHcN@@@rQQHqIKmUP@@@pTHSBxYW^QP\\t2.37\\nHo~B@D@UMInUeWzV`BJj@AaQUmorD@\\t2.37\\nHknL@D@UR[eY_iZ@Hj@A`QUi|QI@\\t2.37\\nHknL@D@]R[e[_iZ@Hj@A`QTi|QN@\\t2.37\\nHeTH@@RYe\\\\Yjjj`A`HIaUpsqHX\\t2.37\\nHmvD@D@TfyV~eh@b@AaaToLSi@\\t2.37\\nHmvD@DBTfyW^Eh@J@AaaToLQn@\\t2.37\\nHeU@@@qJYYzDHJH@FEHULODzP\\t2.37\\nHie@@@qJYWk``b@AaRES]qLD\\t2.37\\nHaE@@@qJYVnBB@@XDaUwDq`\\t2.37\\nsNx@@eLmUPCBbKGbk@\\t2.37\\nsNt`DPtfuZi@XYX|e@\\t2.37\\nsNt`DQTfuZZ@XQ|Rp\\t2.37\\nsKT@@Ti\\\\YZ@XR\\\\rq@\\t2.37\\nQMPBcdGcH\\t2.37\\nHmtD@@QIme\\\\YZ`@`@XTeMp|SE@\\t2.36\\nHiFD@FADf]Yjj`A`QUp|c@\\t2.36\\nKA|H@TBIJkMUPA`VDw\\\\b@\\t2.36\\nsGU@DPdvmT@prqyJ\\t2.36\\nsJY@LDeVdAaEqP`\\t2.36\\nHeTD@@YIfUqfhH@@FC@U\\\\L|rLX\\t2.36\\nHid@@DjU^nBBH@FCPfEP|Qn@\\t2.35\\nsJT@@TkVhA`enJD\\t2.34\\nHcML@FFnwIIEEDZJuSMS@C@lXYyA@\\t2.33\\nHmuL@DpFEIeY~nZifh@XDfRoHx\\t2.33\\nHaG@@@rdigjXHB@A`fMqDx\\t2.33\\nsO|@AjeL}XP@@pV_Db\\t2.33\\nJoCbPCRzg@QddbQRRtuMpuUULuP@X]FEWR\\x7FDRp\\t2.32\\nsNq`@fdskUHCAX|e@\\t2.32\\nsJX@@eSU@LMEnP`\\t2.32\\nHmuH@DHDf{eYUj`@@AavDwCJ|a@\\t2.3\\nsGR@@mTf]jPFFBoEb\\t2.3\\nsGX@@eLuT@pHbwDZ\\t2.3\\nqCr@PIKLAy`l\\t2.3\\nsJX@@eMU@LLL^JH\\t2.3\\nHg\\\\B@@z]RVUeWXV@Hjh@FEXRg_H`\\t2.29\\nHcLL@@yTee[]aX@bh@FAXT{qHX\\t2.29\\nHeTD@@EIYWVy`@h@FFXT|rJX\\t2.29\\nsJ\\\\@@bdjt`LLD^JX\\t2.29\\nHg^DpBtpkAkEkDfYnVvfBBbZ@A`PBi|Pk@\\t2.28\\nHklDpEtJpZpzqIfYfVf@bah@FA@NgqNd\\t2.28\\nsGX@@eLuT@pLVoDB\\t2.28\\nHo~DpBNpkIkMkDfYeeYe``jIX@FE@Tz\\x7FDyP\\t2.28\\nHeTD@@EJYU^f```@FCIc\\\\L|Pj@\\t2.28\\nsKR@AEdi\\\\Vf@^KD\\t2.28\\nsJU@DPdvu@LDmrD\\t2.28\\nHid@@DjUfaBB`@FCPfEP|Qn@\\t2.28\\nsJY@DDfvhAyeb\\t2.28\\nsKR@AEdi\\\\Vf@XS\\\\a@\\t2.27\\nqCp@AJZ`LEEqC@\\t2.27\\nHidL@@pTifvnjjj@FEPaTwLsa@\\t2.26\\nHaDD@@YJYZnjjh@XEFEWLQn@\\t2.26\\nsOx@@drm\\\\@@@pJM_DL\\t2.25\\nHaDD@@qJYnnjjh@XEBDwLrn@\\t2.23\\nsGX@AddQjhA`Xl^R`\\t2.23\\nHidH@@Rfuvz`@`@XXfUsBXP\\t2.22\\nHkmL`LNDD@cIIBhdmeuZ`PH@FCXwRi|b`\\t2.22\\nHeVH`IDHaIe]jZ@BX@FE@fEWHd\\t2.22\\nHmt@@DjU^ZxHHj@A`LIaTpsrE@\\t2.22\\nHeT@@DjU^k``b`@XCBXULL|c`\\t2.22\\nHieH@DDDfyWaZ@@@FAES]rD@\\t2.22\\nsOx@@eRimUT@plVMyF\\t2.22\\nHiDJ@@PnEInvZjX@XDaTOHp\\t2.22\\nHcNL`IaM@HrRFIKI\\\\Jp@T`@phj[ix`J\\t2.22\\nsNyA@qNRRJuU@LGEcV\\t2.22\\nsGP@DjVj`FAbMxa`\\t2.22\\nHcLL@@zTeeY]aX@bh@FAXR{qHD\\t2.22\\nHeTD@@yIYVvE`BH@FFXT|rFD\\t2.22\\nHeV@@@Rig\\\\YjB@@A`rEWCODq`\\t2.22\\nHeT@P@bIbDfYU[hBB`@XTFEt|Ra@\\t2.21\\nHeWH@DJPRY[TYZ`@@AaRTwCrB@\\t2.21\\nHmtD@@QIge\\\\YZ`@`@XUeMp|aP\\t2.21\\nsO|@AbeLmXD@@prkyB\\t2.21\\nsGX`LBdjlt@pexh`\\t2.21\\nqCr@PISRAaErX\\t2.21\\nqCqRZHAFzNlAxa`\\t2.21\\nsJY`hEiNyIej@^P`\\t2.21\\nHaEH@DxDeeVyjj`A`VES\\\\RN@\\t2.21\\nsGQ@HeUuT@ptuxdP\\t2.21\\nj`qAB@A@bDfUvVuhqwh@Jh@@@AahBLDisQkN}rB`\\t2.19\\njhiP`@DD@iIf[eW\\\\cK^Zj`XHh@AaK`iZMYw`|Q``\\t2.19\\nj`qP`@FBisIIEED[DdpSoUSMP@P@CAfMFl{wLDEH\\t2.19\\nj`aa`@H\\\\m{IIEUMDeBYuUU@DP@C@tDXIQgIJM[p\\t2.19\\nj`qA@@@ISKMjoiuoUT@@@@@CCTDLxJRmFl{bJ^@\\t2.19\\nj`aA@@OYIHhbeHhyVj``jJ@@XJQ`eFRUhwnP\\\\\\t2.19\\nHo\\x7FD`Hu~fpcIIEULeDk^jjjZX@XSBXUMpwrC@\\t2.19\\nHg]LPLfDD@bxcIIBhhd]ikTC@P@LFqnW[yD`\\t2.19\\nHg_L`L[hR`BLdaTrbRQvmMUUP@pGFFUt{y@@\\t2.19\\nJoBP@@XVyHhdhTleSKhDEUUD@FDiS\\\\Lj]|ap\\t2.19\\nHg~@pNbPRPrPrRRqQISSiwU@@@@@LBZ]obJX\\t2.19\\nHg~@pJbPRPrPrRRqISICIwU@@@@@LB[SobBh\\t2.19\\nJoBDP@aDILkmrmM[p@U@@@@XZBXU\\\\ng[|`P\\t2.19\\nHk^DB@TpgIIEECTfGijjjih@XSBXUMpsrM@\\t2.19\\nJoB`PCFDPdrmvnuvg@DUUQ@A`hIe\\\\Lkm|ap\\t2.19\\nHg~DB@TpgIIEECThp}MUUUMP@pfDpj[agdV\\t2.19\\nHo\\x7F@@JE|ddTnRbRmzjj`@@AalIaTpkiwrN@\\t2.19\\nJoBb@BDByEEEMDdbSV{UTC@P@FC\\\\Lg[|sBt\\t2.19\\nJoC@@@YIDdThdlUG]US@AP@FFpfESRnf\\x7FHx\\t2.19\\nHknLPLaA@HNHrRPjIKY]VhDB@A`vMtj_Hh\\t2.19\\nHo|D`JyxcIIEFeDecnjZ`@`@XBfEJz[|a`\\t2.19\\nHg}H@HP\\\\ddRJTrUL]uUR@D@CBXpje]N~P`\\t2.19\\nHg|LA@kTfnRfYgW[iN`jBbP@XTPsi|Q[@\\t2.19\\nHg}HADH@zIRYeYwIcnjfB@`@X]prng_Hp\\t2.19\\nHg~@`IBHRYWVUicn@B`@@@XRBXUKiwrN@\\t2.19\\nHo|H@GrRQQEJQN[j``jH@FBiaTpkiorI@\\t2.19\\nHcNL`EaLBDrRRqIYCKT@E@@pDDrfxUyF`\\t2.19\\nJoCD@A|eTrj\\x7Fr^wU@tDT@A`nESCJ{[|a@\\t2.19\\nHk]@`FLHaIe[mZ{S`BJjH@XRBYWCJ{rC@\\t2.19\\nHg}@`FLHaIe[m^ntx@bjh`AaHIe\\\\LkoHl\\t2.19\\nHo}L@EN]_IIEYEEBSnjjfZX@XMBXRgrA@\\t2.19\\nHk~@@JrRQQIFHUgYNjjjjh@XGBXUMprnf\\t2.19\\nHo}L@C^moIIEFeEEC^jZjYh@XLfDwCqC\\\\\\t2.19\\nHk]@@@YJUueRkSjj`@`@XKBXUCJz_DA`\\t2.19\\nHmNHB@TIrRQQPuazZjjj`AaLIaTwCOHT\\t2.19\\nHg]L@ItUoIIEXhiciuUSML@LFaLJ]yE@\\t2.19\\nHg}@@@UJfUW\\x7FegZ`hHj@A`jXUMpsi|bp\\t2.19\\nHkm@@@kIHbdhdmNjj@@@FBpfDprngrJ@\\t2.19\\nHmvL`EaLBDrRRqIXYZ`@`@X\\\\BYS\\\\OHT\\t2.19\\nHko@@@q\\\\dTRbqThP`hj`@XBaTpsi|c`\\t2.19\\nHk]@@@UJfUW~V]jB`b`@XRfES\\\\L{rC@\\t2.19\\nHcND@M@\\\\dTRRbOKPPTP@LASJ[ae^HV`\\t2.19\\nHk^@@@Ri_YVftzjh@H@FBpfEPrngrF@\\t2.19\\nHcm@@@UJfUWyYvhJBH@FDiaTwCN|aP\\t2.19\\nHigDPLXXP@b`cIHUDnEZfd@XIe\\\\PN@\\t2.19\\nHev@B@B\\\\ddTTKCtuUUT@LAaLJfx^QH\\t2.19\\nHg\\\\H@@RYegUvvj```@FDyS\\\\Jz]|QI@\\t2.19\\nHknH@FAIfUWaVhHHh@FFaFES\\\\Lz_HT\\t2.19\\nHg\\\\H@NrRQRqZIRmTDAT@CCdpf{SyE`\\t2.19\\nHcLL@@RlbbTLRRzuUUT@LNinFUwbXP\\t2.19\\nHkmL@FFnOIIEEDlqvjYjf@FAXpsqBT\\t2.19\\nHcM@@@gIEDdTiS@PUT@C@TrfxUwdD\\t2.19\\nHcNH@McIIEXdmJuT@D@CCdpfxYyF`\\t2.19\\nHcND@E@TfUvzf`@jh@FD`fEWCN|aP\\t2.19\\nHklH@NrRQRqZJUj``J@AarXS]i|aP\\t2.19\\nHcO@@@rTie_ZnBBJh@F@hUMpkoHp\\t2.19\\nHcOH@DKPRYYUYujAB@@XLeMpsrE@\\t2.19\\nHmtH`ABHRYWUih@Jh@FC@fEW\\\\RU@\\t2.19\\nHeW@`FFZBLddTjWCUST`C@dpjyD`\\t2.19\\nHmtL@@Pdf{eYUjjj`AaqTwCJ|QL@\\t2.19\\nHmvD@AADfyW^Ejjj`AaQTwSsDqP\\t2.19\\nHcw@@Hx\\\\ddRLTeUSU@CBXSBxYWP\\t2.19\\nHmtD@@EIe]nf`@j`@XBBXU\\\\J|bP\\t2.19\\nKAxPPUD`dadataddeRjj`CBFyA@\\t2.19\\nHeVD@AADfyWxVjjh@XDUMwLSI@\\t2.19\\nHeVH@BAIUeQfjjj@F@`fTwCOH`\\t2.19\\nHeT@`@qDfUuih@J`@XLBXUCqNd\\t2.19\\nHeU@@@yJeWzzjjj@FGPfESCqNd\\t2.19\\nHmwH@DIPRYYWeVhD@@FEISCOHx\\t2.19\\nHmvH@DAIe[VUZh@@@X]eMproHP\\t2.19\\nHie@`FF`cIIEJnFjfd@XDfEWHx\\t2.19\\nHeVH@FAIfUqfhH@@FGAFEWCqFd\\t2.19\\nHeTD@@qI[eQejjj@FGXUMpsqHP\\t2.19\\nHmTL@Fy\\\\ddUfRjijPAaTIaCrI@\\t2.19\\nHiT`@@pjRfUj[a@`h`A`gCqDX\\t2.19\\nHid`@@pjRfUjXBB`@XIp|QF@\\t2.19\\nHaDH@@RYm[jjj@FC@aTw\\\\RL@\\t2.19\\nHaEH@LXDeYVzje`A`REW\\\\PH@\\t2.19\\nHieH@BxDivWajjV@FAYSCqHP\\t2.19\\nHiF@@HrRQVJjj`AatIaTw\\\\`P\\t2.19\\nHidH@HRjuVFjjh@XMBYSCqBx\\t2.19\\nHiDD@F{IIEYjjZ@FAPfErA@\\t2.19\\nHieD@FFnRjYfFjYh@^EaLH\\t2.19\\nHaED@DHNRY[Jfjf@GaIaL\\t2.19\\nKAxH@MvRRJrjf@LBaLKd\\\\\\t2.19\\nsGPdE`DSpRYVj@XXF|d@\\t2.19\\nsNq@JeTuUPCBkFod`\\t2.19\\nqCbHHAD|DeZ@pPwI@\\t2.19\\nsFxHB@aJUqiZ@XHSbU@\\t2.19\\nQMPARVAaWDP\\t2.19\\nsJX@@eSU@LEEqX`\\t2.19\\nsOq@@eLm]UT@ptMyef\\t2.18\\nsOpHADILkW@@@LBEcqU`\\t2.18\\nqC`P@HRfhCAC\\\\TP\\t2.18\\nsFx@@eRfuU@LCD[rX\\t2.17\\nj`q@`@HRRjyeU\\x7FSk^j`B@@@@FFhTYpRmFl{wDDd\\t2.17\\nqCh@CIKTA`hnHX\\t2.16\\nsOt@AdiWqZZ`FAbMyF\\t2.15\\nsGX`LDdsmT@pVOIP\\t2.15\\nsJX`LDdru@LInP`\\t2.15\\nHieL@DpFEIeYkfjY`A`bYrN@\\t2.15\\nsGP`@dfui`FFVOIP\\t2.15\\nHeVD`La@BLddlRPrm@@@C@j[axfR\\t2.15\\nsNu@DpdjkUPC@hu|Tp\\t2.14\\nsGX@@eJuT@pLVODJ\\t2.14\\nHid@@DjU^nBBH@FGPfEWCrF@\\t2.14\\nHeT@pHdDdLdLddlRPsU@@@CCJ[nHL`\\t2.14\\nHkld`LKmePBLdTQTRbrjYffh@XDBD_Ht\\t2.13\\nHcLB@HZ]rRQJJqCMUUUP@pELJfxUyF`\\t2.13\\nHcOD`LKiT@cIEDUDeeTsMM@C@`Pmy@`\\t2.13\\nHmtL@HZ\\\\ddRblFZjjj@FGIaTwKrA@\\t2.13\\nHeWH`LKa@HrQQEIYULsT@LBABgdL\\t2.13\\nHaGDAHK`RISdfyVyjZPAaE\\\\Pf@\\t2.13\\nKA|@@@eRkUU@FCPfES\\\\c`\\t2.13\\nsGX@AddQjhA`Xm^P`\\t2.13\\nsJQhHl@bOV`FBq@\\t2.13\\nHif@@@RfU~F``@@XLfDwCq@h\\t2.13\\nQMPARZAaWDP\\t2.13\\nsJX@@eOU@LMEnHD\\t2.13\\nHieH@DxDee]nZjj@FAXUMqHD\\t2.12\\nsNxDLHaqBRjuU@LFHcWrX\\t2.12\\nsNz@@mVdssTpCCAWbs@\\t2.12\\nqCsAPKR]rSM@^Q@\\t2.12\\nsGQ@@drmJ@pRwDZ\\t2.12\\nqCp@AJZ`LHnXS@\\t2.12\\nHcnLbLe]@HwldTRaRa]SUUTmH@ppHSbEP\\t2.11\\nHk^LbLWS@HOdiem^KjZjjiZPAa`PgDHP\\t2.11\\nHcNL@ICNrQQSRjTMUUUP@pfDJfxUwdX\\t2.11\\nHmvD@ACdiewjZjjj`A`LXUMtkrD@\\t2.11\\nHif@@@RUe^Fh@@@X]BES\\\\OH@\\t2.11\\nqCh@BISLAyhl\\t2.11\\nHo~LpBtwBlFlVlrJJJZISUi``hfd@FA@JgqBl\\t2.1\\nHg\\\\LpEvpkAkCkDfYfYVf@bai@A`PCi|Si@\\t2.1\\nHg\\\\h@De]CHeDeMDcimU@PP@LFcFE[yA@\\t2.1\\nHcL`@@rirQQSRiUpPQU@@pkFx]xdj\\t2.1\\nHcLh@DxYCHdeEDcJmPDD@CBhqawdH\\t2.1\\nHeT`@@rirQQSRupPQP@LBqnGdR\\t2.1\\nsGY@BDeVj`FAbux`P\\t2.1\\nsNq@@dr{UPCCHwbs@\\t2.1\\nHaDH@@Rfu[j@@@FFIe\\\\pfx\\t2.1\\nQM`AIXFE\\\\Q@\\t2.1\\nsJQ@@dju@LEcqQ@\\t2.1\\nHcLD@@QIeVuWVj`@@AaqMprn|c@\\t2.09\\nHeTD@@EIe]jZ@Bh@FG@fEWCrI@\\t2.09\\nHeVH@DAImeQej@@@FCYS\\\\L|a@\\t2.09\\nsNx`LDdskUPCAX|UX\\t2.09\\nHg}LbFM]n@c^rRQJEJITpsUUTtt@LFaLJayA`\\t2.09\\nHk^LbFWS`HwlddRaRfiafjjif`AaTIaUrA@\\t2.09\\nQMPBchGfR\\t2.09\\nsGYALMJRmUPCBbHwdp\\t2.08\\nRF`EFCqH\\t2.08\\nHig@@@rdifznBBH@FFXw\\\\`P\\t2.07\\nHaG@@@rdifzxHH@AafMwHH\\t2.07\\nsJT@@TeZhAaaEqX`\\t2.07\\nHeTH`ABPRYWZf`@f@A`RXU\\\\bP\\t2.07\\nqCq@XIIf`LInQ@\\t2.07\\nHmtD@@QIn[VUZh@@@X\\\\fTwCOHT\\t2.06\\nHifH@DAInUxV`@@A`aUpd[a@\\t2.06\\nsJX`LDdru@LH^S@\\t2.06\\nHaF@`NBHRYWih@H@FE@fEWHx\\t2.06\\nHeL`@@JfRiUfnXVfjjjh@XMBYpr\\t2.06\\nHeU@@@{IHddUWUUUP@pZDpjGbMH\\t2.06\\nHeTH@@RfV\\\\YhH`@AaRDpsqJx\\t2.05\\nsJU@E`djt`LHnJD\\t2.05\\nsJPH@DISUPCCCGbb@\\t2.05\\nHifH@DAInUxV`@@Aaa\\\\OLRf@\\t2.04\\nHcLL@@PTfye]]ZhH@@F@yS\\\\LkoHP\\t2.04\\nHieH@FDDfUfnjjj@FGAATwCqDp\\t2.04\\nsKXHB@aJWFe`FBDxe`\\t2.04\\nHmvD@E@TfUvzZ@Bj@AapHU\\\\L|SE@\\t2.03\\nHaD@@DjWZXHB@AaTXS]rD@\\t2.03\\nsJX@@eMU@LMEnHD\\t2.03\\nHaDH@@RVU[f@@@FBXWBbfx\\t2.03\\nQMhHchFD|h\\t2.02\\nHg^``NeSlHaIe][Zf`@ii`@XRBXU]JgrK@\\t2.02\\nHkl``NeSBHRYWVvf`@ii@AaHIaUtj_Ht\\t2.02\\nHmw@`NePbDfUujZ@Bf@AapIaUt|aP\\t2.02\\nHeU@`NdHaIe]ZZ@Bd@FG@fEWSrA@\\t2.02\\nHidH@@RYm^Fh@@@XMaTwCq@`\\t2.02\\nsOpHADILkW@@@LJEc^Q`\\t2.02\\nsOx@@eJqh@P@pLQoHp\\t2.01\\nHg|@@LdbRbtJUB]aAP@@@CCXSBhYWSod\\\\\\t2.01\\nsGY@DDfUj`FDWMcP\\t2.01\\njdy``@J@BdlsOJkbezKMUPTBH@C@QJLUjsh|q@w`\\t1.99\\njhiP`@DD@iIf[eW\\\\cK^Zj`XHh@A`kGARtZsoAy@`\\t1.99\\njhi``@F@PdwLsvoIW`mMUPPB@@pEQgMFlxOLHex\\t1.99\\nj`qa@@J@RVYgm\\\\Tg^YjjB@P@F@bTXkQk^yb@g@\\t1.99\\nHg]HpBOPkAkEkLbbbfbT[SAAQM@@phAT{xaR\\t1.99\\nHg}D`LFD@HrRPjJIYLNvmPTDP@LFrnFUyfgX\\t1.99\\nHg~L`LaC@HrRPqQYI]NvmTBDP@LFXUt{yE@\\t1.99\\nj`a`P@D@ejrSKZrkbTu@DUT@@pXbcCN}rA@\\t1.99\\nHg~@@@rQQQUQIUqwSMP@P@LA@fzUv~YeF\\t1.99\\nHkmH@JXLdRRbbQtzjB`@@XCF\\\\Lki|a@\\t1.99\\nHclD@@kIEEKDeeKmUP@P@LNcNFUwbHP\\t1.99\\nHkmL@FFnOIIEEEBqvjYjf@FAXpsqBT\\t1.99\\nHknD@EADfVU}eVjjjh@X\\\\UMpsoDpp\\t1.99\\nHcLH`ABHRYWYzZ@Bj`@X\\\\BXURoD{P\\t1.99\\nHcLH@@rIQQQHkkTE@@@pxj[iW^YBB\\t1.99\\nHg^L@DB]RY[VWEVh@bh@FEISG_DIP\\t1.99\\nHg^L@DBSRY[VwEVh@bh@FEIS[_DHP\\t1.99\\nHcND@EADfVU~UZjjj@FCES\\\\L|SM@\\t1.99\\nHmtH`ABHRYWYih@Jh@FC@fET|Se@\\t1.99\\nHmLD@@qJY{WJeZj@B@A`rMproDb`\\t1.99\\nHmM@@@qJWYWBeVf@B@AaVMpssHQP\\t1.99\\nHkmH@DhDfUnYTvj@b@@X\\\\fCJz_Hh\\t1.99\\nHcML@DpFEIeY~kfjYj`A`RYJ|Sm@\\t1.99\\nHeTH`ABHRYWZf`@j@A`pIaUODxP\\t1.99\\nHmvH@AAJYUgehHJ@@XBfES]J|`P\\t1.99\\nHmvD@JADeUeYUjjj`AavDwCJ|b@\\t1.99\\nHmtH@@RYeUEZ```@F@aaTwBoDbP\\t1.99\\nHcND@DBTfVulUZ`BH@FAIS[sBEP\\t1.99\\nHcND@DATfVutYZ`@h@FAIS[sBxP\\t1.99\\nHeULBDpFGNRYV^nZif`AaB\\\\Si@\\t1.99\\nHeVH@FAIe]ZZjjj@FG@fEWCqHd\\t1.99\\nHmtH@@RVYWeVhH@@FCTwCJ|rDH\\t1.99\\nHeVD@J@TiWUJjjjh@XMBXS]rI@\\t1.99\\nHmtD@@QIee^UZjjh@XLULLkqLx\\t1.99\\nHifH@FAIe]ijjj`A`pIaUwD`P\\t1.99\\nHifD@J@TiWTjjjj@FCPfDw\\\\`P\\t1.99\\nHeTD@@QIemQejjj@FETwCODp`\\t1.99\\nHaFH@FAIe^fjjh@XTBXU\\\\RN@\\t1.99\\nHidD@@QInUxVjj`AaQTwCqDp\\t1.99\\nHaFH@FAIe^fjjh@XMBXU]r@@\\t1.99\\nHifH@NAJ[W[jjj`A`tXULOHP\\t1.99\\nHifH@NAIYW[fjj`AaVESCqHP\\t1.99\\nHiFH@LAIYVjjh@XBBXUMp|b@\\t1.99\\nHaF@@@Ri][jjj@FCPaTw\\\\c@\\t1.99\\nKA|P@TBTkuUT@XUFDw\\\\a@\\t1.99\\nKA|@@@eSKUU@FCPfDw\\\\b`\\t1.99\\nsNqdEbOBABUVmU@LMJ~P`\\t1.99\\nsOy@FDfUkjj`FEBqoEF\\t1.99\\nsNx@AdbbMUPCAbXu|b@\\t1.99\\nsNy@LDeVjj@XTXu|TP\\t1.99\\nsNq`IVeUuTpCCXod`\\t1.99\\nsGY@DDfyj`FBVxcP\\t1.99\\nHeUH@DDDf[WxVjjh@XDUMwDrP\\t1.99\\nKA|@`XDQtPdkOUU@FCABDw\\\\b`\\t1.99\\nHieH@DDDf[WaZjj@FAES]qLD\\t1.99\\nsKTHLPDIRxtl@p`xh`\\t1.99\\nqC`P@HRfhCBCfbp\\t1.98\\nsJU@DPdvu@OLlP\\t1.98\\nHieH`B[`BDiWWBiYj@FFA@|QJ@\\t1.97\\nHeTL@@pTifwkjjjh@X]BESCODs`\\t1.97\\nHidD@@[IEDiZzjjh@XMFESCqDx\\t1.97\\nsJP`@dfvdAaEqX`\\t1.97\\nsGY@DDfuj`FBQxmP\\t1.96\\nsGX@AddQjhAahcqZ`\\t1.96\\nsJQ@@dsU@LDCsQX\\t1.96\\nqCh@CIKTA``nJX\\t1.95\\nHiDB@@SaR[Ufjf@FAIeCrB@\\t1.95\\nJoc@HCADRDILkZvm]Jv|@QP@D@AaHIeSiv\\x7FHX\\t1.94\\nsFt@AdigUjXA`d^KT\\t1.94\\nsFt@@Ti_FVhAaIsKT\\t1.94\\nHg~@@@RiU~Ukcnjj`@`@X[BXUMJz]|c`\\t1.94\\nHcND@IADfyW[aZ@Bh@FCES\\\\n|a@\\t1.94\\nHeTD@@QIgeQej@@@FEYS\\\\OHd\\t1.94\\nHklL@@kldTtTRQEZBHb`@XTcCN|`p\\t1.94\\nHmtD@@iJ[eWihHH`@XDaCODYP\\t1.94\\nHidH@@Rfuvz`@`@XXeMsLHP\\t1.94\\nHeUD@NdBRYgeajjj`A`HPeMpsqLH\\t1.93\\nsGX@@eSUT@pLVOIP\\t1.93\\nHg}LbLGSl@b~rQQJIIFEuMUUUKR@LBBDKbCH\\t1.92\\nJoBaQFBivxAE|eLlzmeuMUUTsL`AaPPaCqJt\\t1.92\\nHk]LbLE]L@`~RfV]xnijjjei@FAABEqJD\\t1.92\\nj`aA@@GYIHhbeHfiVj``jJ@@XJQ`eFBdkQnP|\\t1.92\\nsNqLKIARFdLddjjj@XP|c@\\t1.92\\nsJP@DiVhAaaCqK@\\t1.92\\nqCb@AIj`LHNZK@\\t1.92\\nsGQhHl@cIIBmPCBGdh\\t1.91\\nsJP`@dfvdA`enP`\\t1.91\\nsJU@DPdvt`OLlP\\t1.9\\nHmuD`LVD@HrRRqIXYV`@`@XES\\\\ODqP\\t1.9\\nHmtD@@yIYe^UZ``@@XBaTwCJ|b@\\t1.9\\nHieH@LDDeYWajjj@FGABES]rA@\\t1.9\\nHeUH@LDDeYWxZjjh@X\\\\DHUMwHd\\t1.9\\nqCp@AJZ`LINXK@\\t1.9\\nHk]H`AdpbDfUmUiev@Bfd`AaPIe[qND\\t1.88\\nHaED@dpFChdi[dfUjzjjPA`bUqLx\\t1.88\\nsGY@LDeUj`FFQoEL\\t1.88\\nsJ\\\\@@bdks@OEb\\t1.88\\nHk^@@@rQQIFIJftpHH@@@FDieLLki|``\\t1.88\\nHieDPLZD@HhHrREQKaVii@FAYWCr@@\\t1.88\\nHcLD@@QIn[WeVj@B@AarYS\\\\L|cP\\t1.88\\nHaDH@@RVU[fjj@FEXUMwDa@\\t1.88\\nsNx@AddTMUPCBqXwdX\\t1.88\\nsGX`LDdwMT@pQoH`\\t1.88\\nHaDH@@Rfu[j@@@FFIS\\\\sBx\\t1.88\\nsJX@@eSU@LINYX`\\t1.88\\nsGY`hEiNyIgZhAaCrT\\t1.87\\nHid@@DjU^nBBH@FGPaTwCrL@\\t1.87\\nQMB@HRZAyd`\\t1.87\\nHcND@MADfVU~UZ``H@FCESCN|c`\\t1.86\\nHidD@@EIe]ih@J@A`pIaTOHx\\t1.86\\nKA|PD@pSddbljj`CAhSBknPp\\t1.86\\nsNxA@IrRQVjhAaXlWrT\\t1.86\\nsNqhHl@cIICej`FBMyF\\t1.86\\nHeTD@@iJ[e^f```@FAHPsqFx\\t1.86\\nsGX@@eLuT@pHfoDb\\t1.85\\nHmtD@@gIELeDVz`@j@A`RYr|Pa@\\t1.85\\nsJQ@IGuPCAQ\\\\VH\\t1.85\\nsOt@AdieuZf`FBQxjp\\t1.84\\nHidH@@Rfufz`@`@XXf]sBXP\\t1.84\\nsJX@IGuPCCKGd`\\t1.84\\nqCr@XISTAaEqS@\\t1.83\\nsJP`@TfVhA`d^S@\\t1.83\\nHidH@@RYm^Fh@@@XLDES]qLD\\t1.83\\nHcLL@@kdinYTUhHbH@FEHpsoHT\\t1.83\\nqCb@AIZ`LDmqB@\\t1.82\\nsJY@LDeZhAa`mqP`\\t1.82\\nsJXHLHaIVj@XXQ\\\\VH\\t1.81\\nHid@`@qDfUvf`@h@FE@fEWDxP\\t1.8\\nHeTD@@EIe]jZ@Bh@FC@aUp|SI@\\t1.8\\nJoBD@@IKLrjzv[mP@@@@@XZeMprng[|b@\\t1.8\\nHidD@@QInUxV`@@AaB\\\\hj[a@\\t1.8\\nsNq`IVeUuTpCAQ|VH\\t1.8\\nHidL@@pTifvnjjj@FCPaTp|SN@\\t1.8\\nsJQ@@dsU@LMEnHD\\t1.8\\nqCp@BOTAyhl\\t1.8\\nHmu@pBXJpZqZqIf[oi`bH`@XX@ksBZP\\t1.79\\nHcND@DBdeVyU]Zj@@@FGHU\\\\LksHsP\\t1.79\\nHmvH@LAIUYVUZX@@@XLc\\\\LkqHH\\t1.79\\nHaF@B@B\\\\ddRK]UUP@pZDrf{dD\\t1.79\\nsOxA@IRi^njj@XNKFod@\\t1.79\\nsFx@@eJfuU@LCL[qA@\\t1.79\\nsGU@E`djmL@pROEJ\\t1.79\\nHo~DPJHPbDbDf{VyVwjZj@@@FBaBUpkiwqF\\\\\\t1.79\\nHkmL`LVDL@cIIKDedaeZ@Bd@FETwBoDsP\\t1.79\\nHmuL@ATBYIf[oijjjh@XRDIe\\\\LkqBX\\t1.79\\nHmvD@EADfVuqej@B@AaUMpkrB@\\t1.79\\nsGQ`@ZdrmT@prMyL\\t1.79\\nHaD@`@bDfYVz@`@AaPXS]rJ@\\t1.78\\nsJX@@eKU@LEEsCD\\t1.78\\nsFx@@eJf`@@LCEkrD\\t1.77\\nqCp@AJZ`LDEqS@\\t1.77\\nsJT@@TeZhAahmq@`\\t1.77\\njhiQ`@FBisvRRJJJKEYBLxMTsAPI@@LIDXJRmV\\\\D\\t1.76\\njhiQ@@DT@drsJsNku`mUAQED@@ptcCIJtZsoAyB`\\t1.76\\nj`q``@ERuddbRRbnRXk`jjjYjj@AaJBLDxHug\\\\ax\\t1.76\\nj`qP@@@BRfUWyWdg^hHH`@@@FA`HpRcNBtZsnHex\\t1.76\\njhya@@J@RfV]YwIQUoAjTH@@H@@XJYrRmFl{p^PP\\t1.76\\nj`a`@@@YIEChhhdW^jjhJ@@@XV`cAJBdkQkN}rC@\\t1.76\\nj`ia@@D@RYYYU\\\\cMNmyjh@@@@@FDd\\\\EIVcV]qFO@\\t1.76\\nj`q`@@@YIEDdcDef\\\\]zjjhHB@@XN`cAJLyIVcV]x\\t1.76\\njhiQ`@DD@hJSLwJnyFV|uU@pPp@C@VNBehuo\\\\PQp\\t1.76\\njhi@`@H^RjyV}}EjsjjjB@j@@XF`cANBdkQkAyA`\\t1.76\\nj`qP@@@\\\\RiUwYVgG^jjf`@`@FFhHpRcMFl{wDBd\\t1.76\\nj`qa@@D@RYfv]TgK^ZjhHH`@FBbTxJRmFm{bLN@\\t1.76\\nj`q@`@@TRfYW{TRg^hJB@@@@FFdXIpRmFl{wHL@\\t1.76\\njdy``@G\\\\DeTsJn~j\\\\[uTCTEEP@C@vBTYIVcV|FH\\t1.76\\nj`qP@@@LRe]UYTeG^@Bj`@@@FAhHpQgAZMYwnPd\\t1.76\\nj`qP@@@\\\\RiUwYVgG^jjj`@`@FFhHpRcMFl{wDBd\\t1.76\\nj`aq@@DV\\\\CHheEDcddkSTE@UP@C@rBTYpTeFl{p\\t1.76\\nj`q@`@HNRju^uu`cVjjh@J`@FFhHqQ`iJt[wHD@\\t1.76\\njhi@`@@HR[fuvUdkpVj@B@@@@XZQagARMYw`|aP\\t1.76\\njhi@`@@HRYyWVUEKpVh@Ijh`@XJqQgAFl{p^PT\\t1.76\\nj`qQ`@DXArRSLm\\x7FJlD{sUSL@D@@pihug^ycEA@\\t1.76\\nj`aA`@HLyddbTLrRbMzjfBB`@AaKAARUhug\\\\ax\\t1.76\\nJoBfPCRio@QddbQRRtuMpuUULuP@X]FEWS_DQp\\t1.76\\nj`qA`@@HddwJzroAN|t@E@@@@LAHISQkN}qCN@\\t1.76\\nj`q@`@@HR[YWYTTg^Z`@`@@@FBdTYpVcV]{dL@\\t1.76\\nj`aQ@@DZ@dwLjsrkMTDEE@@LMHhs`iJMYwnPp\\t1.76\\nJoB`@@CddRRJTRU][uUU@A@@X[BXU\\\\ng[|Qa@\\t1.76\\nHg^BpLaCl@chcPcIIKEEeiJkPPDh@LJqnE^Qh\\t1.76\\njhq``@I@BeLljrrIUADQUT@@pT`eF\\\\tZso\\\\`D\\t1.76\\nj`aa@@C@RYegU{Ufj``b`@FFlTYpTeZl{wHH@\\t1.76\\nJoC@A@ANRQQIUQIDuoUUL@D@AalIeMrz]oq@D\\t1.76\\nHo}L`L^DL@cIIChdliiUZ`@j`@XSaMpsiwrG@\\t1.76\\nJoB`@DgddbbRRQpgmuPUAE@@XJfES\\\\J{_Dep\\t1.76\\nJob@@FRRJJEIKXRv[uP@@A@@FFyS\\\\Lkiv\\x7FHH\\t1.76\\nHg\\x7F@PBWPbAbLbbbRfaSR]pPLUQ@CBPqae]Np\\t1.76\\nJoBB@D[ddfbRbJwC[uUTBA@@X[BXWCJg[|a`\\t1.76\\nHg]L`EnDpHSIIKDeddLmP@UP@LEALinE]OdV\\t1.76\\njhqQ@@DT@drlsLjXKUAQEP@@ptc@iJtZsoA@\\t1.76\\nJoBp@@XUMNRJJIESIUunADT@@@AaqMJz]|ap\\t1.76\\nj`aa@@I@RfVUYXRjBHbj`@FBdDhsfcV]{dE@\\t1.76\\nJgCFAD`esJSOJrhrn{[UUUUT@F@eS\\\\Jz_DrP\\t1.76\\nHg}@@IOIIEDddbI{]TEPQ@@pULJfxUv~II`\\t1.76\\nJoBDPD@DIWLrjzv[mP@@@@@XZeMprng[|`@\\t1.76\\nJoCB@BsnRRIIJJyLoCUUSMU@A`LIa\\\\IwrG@\\t1.76\\nJoB`P@vDPdrnlktqw@AUUQ@A`hIaUJz[|c`\\t1.76\\nJoCd@bDpAtRdsLm{euoUTpPD@Aaprng[|a`\\t1.76\\nHcNDpLa@BJbFbLddLTJRzmT@@@LFinFUyF`\\t1.76\\nHmnDBJAZgIDeDdXPjzZjjjh@XCBXS\\\\L|Re@\\t1.76\\nHk~LBAACFTeYVUxYUSZjjjj@F@xUMtkoD`P\\t1.76\\nHo~B`LaK\\\\@cIICEBeeEuZh@I`@XUprk|Rf@\\t1.76\\nHctNPDpfFUCpkprRQRVSSUST@LFpfzUyF`\\t1.76\\nJoB`@@NeRk|kuqwUUP@T@AalIaTtkiorN@\\t1.76\\nJoB@P@QBSLjsnNv}HP@@@@FD`U\\\\Lj]|sM\\\\\\t1.76\\nJoB@P@QBRsLjnmf|t@@@@@FDaS\\\\Lki|rK\\\\\\t1.76\\nHo~L@C`YrRSIFYIRfjjfjj@FDpfTr{[|``\\t1.76\\nHknL`EaLBDrRRqIYHYZ`@j@AaHIeMpkoHL\\t1.76\\nHklDPNGX`xcIIDcEeHRjifj@FGPfDvgrE@\\t1.76\\nHg^L@MAirJIJHsIUt@QUT@CAPSFxYW[yA`\\t1.76\\nJoBd@BNBRsLjnmf{TEAQD@FBeS\\\\LkiwqH\\\\\\t1.76\\nJoB`@@ReRkkZuuoUUT@D@A`\\\\IaTwKiv\\x7FHd\\t1.76\\nJoBd@BNBSKLjnmf{TEAQD@FFhUMprng_H\\\\\\t1.76\\nHg^B`LaCl@cIIBidliJkT@Dp@LJ[af~Ie@\\t1.76\\nHg^D`La@BLddLTVRVvmTDD@@pznFUt~Hu`\\t1.76\\nHg~@@@rRJIJqIMqwUUP@P@LMaLIne]N~QP\\t1.76\\nJoC`@@QrTvnljwV|uUP@P@FDxULng[|QA@\\t1.76\\nHg]L`LnDD@cIIBhhd]ikTC@P@LFqnW[yD`\\t1.76\\nHcoL`DphWP|LddtTSeMpmUUMP@phj[ayF`\\t1.76\\nJoBD@DIU\\\\k^x{[uUTDA@@X[BXWCJz]|Qg@\\t1.76\\nHg~H@KAIfYU^Svz`hJH`A`XXUMprng_H`\\t1.76\\nJoBf@BXCBdrl\\x7FJuunuSL@D@AarXng[|c`\\t1.76\\nHg~D@Eg\\\\ddRRTUsKpuUTsU@CChSBxSyE`\\t1.76\\nHo~H`CDHaIe]gVih@Jjj@A`hIaUJ{[|c`\\t1.76\\nHk\\\\H@HrRSIFIJftzjh@H@FBpfTprngrB@\\t1.76\\nHg~H@DCHhhieBdWG[UU@A@@pDjFUt{xf\\\\\\t1.76\\nJoCD@B@dsMl{eunuUPPD@AaIUpriv\\x7FDsP\\t1.76\\nJoBf@BXCBdrl\\x7FJuunuSL@D@AaRz]osDs`\\t1.76\\nHcLDPNEXcXcIIDcDYBUULu@CChSBY]y@`\\t1.76\\nHg}@@@yJe}YVfNzjj@B@A`lHUMJz]|SN@\\t1.76\\nJoBD@@ISLk^x{[tE@@@@@XJfEpriv\\x7FD[P\\t1.76\\nHk^@@@rQQIFIJftzjh@H@FFaBYSCJz_HH\\t1.76\\nHg|@@DjYV}~T{jjjjj@FEaBXS\\\\LkiwrJ@\\t1.76\\nHknD`La@BLddJbRRTujBB@@X]S\\\\LkoDpp\\t1.76\\nHk^@@@rRIHjIHjtzjh@H@FBpaTprngrL@\\t1.76\\nHg\\x7F@@@adjuueZX{jjh@H@FDiaUJz]|RN@\\t1.76\\nHclLA@iTfnrQQQQEMt{PUAB@CBbFUwdL\\t1.76\\nHmTNPDpfFUCpkprRQRVRZjZ@FEXSRoHx\\t1.76\\nHg}@@@yJeWe^nNzjhHB@AaLIaTLz_DVp\\t1.76\\nHcL@p@bBBAbDfYVyi``hh@FGAaMpsqEt\\t1.76\\nHg|H@HRjymUV}NjB`hH@X[FTwCJz]|``\\t1.76\\nHg~H@DAIenUTfvvj``b@A`IMprnwsDpp\\t1.76\\nHg~@@@Ri_VUicnjj`@`@X[BES]Jz]|c@\\t1.76\\nHknB`LaML@cIIKDeeAeZ@BX@FETwB_Hp\\t1.76\\nHg]H@DlLbbTTRNRzuAPE@@peBinFUOdV\\t1.76\\nHknL@MAirJIJHsJn`BJj@AaHIc\\\\LkoHL\\t1.76\\nHg]L@FFnoIIEEDl\\\\NuSMTl@LFqaeSyA@\\t1.76\\nHg]H@FlDfYU^QVhHHj@AahQaTwCNgrK@\\t1.76\\nHg}@@@UJfUW\\x7FegZ`hHj@AaJXS\\\\Lz_Djp\\t1.76\\nHmOD`DphTOCIIMEDz[aZjjZ@FEES\\\\OHd\\t1.76\\nHg|H@HRju^uXSnjj`@`@XKBYSCJz_DJp\\t1.76\\nJoB@@BULjo{rsl@@@U@@FBiaTwCNwqC\\\\\\t1.76\\nHk\\\\LA@kTfnRfYgUndzBhJD@FEDLz_HT\\t1.76\\nHk]@@@yJeWmZ{Sjj`@`@XSBXUCJ{qNL\\t1.76\\nHk^D@Eg\\\\ddRRTUY^FjjfZ`A`tIa\\\\OHL\\t1.76\\nHmt@p@bBBAbDfYVvfBBb@A`pXSCODyP\\t1.76\\nHg|H@@RYWVUicn@BZjH@XRfETkiwq@x\\t1.76\\nHk\\\\H@@RYfUVSWZ`hJB@FFaaTwCJz_H`\\t1.76\\nHmL@P@BNBDigy\\\\jUiffi@F@`fUproHH\\t1.76\\nHk^H@DAIenUr[SZjB@`@X\\\\S\\\\Jz_LSI@\\t1.76\\nHo}@@@UIYeV^d~hHJJ@A`iTwCNg[|a@\\t1.76\\nHmtHPAfHVHrRQHiRDjjVh@X]BXURoHX\\t1.76\\nHcNL@MAirJIJHsUt@QU@@pDDqnFUyF`\\t1.76\\nHk^@@@Re]YTjtzjh@H@FFpfESCJz_H@\\t1.76\\nHo}H@DhDfUefWWZhHb`@FDi`rng[|b`\\t1.76\\nHk]@@@UJfUW~V]jB`b`@XBfDwCN|Rc@\\t1.76\\nHeNHBJBiReYVDJnfjjjh@X]BXS\\\\ODjP\\t1.76\\nHg|L@@RdfV^Urh{Zj``H@FGEpsiwqLT\\t1.76\\nHkn@`ECDRYWUZf`@jj@AaHIaTLz_Hx\\t1.76\\nHkn@`EBHRYWUZf`@jj@AaHIaTLz_Hx\\t1.76\\nHk\\\\@@DjU^ukmLHDjh`AaLHUCJz_Ds`\\t1.76\\nHo~B@NAK]IenWVeVijjfPA`Q\\\\I|Qg@\\t1.76\\nHcMD`LvD@HrRRqIYCJt@E@@p{J[aWP\\t1.76\\nHknD@IBdifW^EZB`b`@XRfDwBngrJ@\\t1.76\\nHcm@@@UJfUWyYvhJBH@F@iaMpsoDiP\\t1.76\\nHg^H@EAIYeUz]Z``b`@XRUMpsiwqHP\\t1.76\\nHclL@@RlbbTLRQTnmU@A@@pkae]xfD\\t1.76\\nHk\\\\L@@RdfV^uJmMjj@B@A`qCJz_Ds`\\t1.76\\nHk\\\\H@@RfYU\\\\]Tz@@@@@FGXWCJ{sJXp\\t1.76\\nHknH@DCHheEDceujB`H@F@hUMproHL\\t1.76\\nHknD@E@TfUvyih@Jj`@XJBXU\\\\LkoHL\\t1.76\\nHeWDbLihP@cNrREQICJt@@@LLxYy@@\\t1.76\\nHmt@P@bABDfUuZZ@Bj@AapIaUp|RU@\\t1.76\\nHmuD`LVD@HrRRqIXYV`@`@XUeMp|aP\\t1.76\\nHknH@FAIfYWyuhJBH@FDxU\\\\Lki|a`\\t1.76\\nHcnD@EgTjeUeexZjjYh@XMBXWCrE@\\t1.76\\nHo~H@FAIfYV}dv`hJJ@AanEWCJz]n\\t1.76\\nHcnH@DAIenuIeujh@H@FCEprn|qLX\\t1.76\\nHmtL@@Z\\\\bbRbLkh@bh@FG@fMpsrE@\\t1.76\\nHcNH@DCHheEDbnmPT@@C@TJfxYWdZ\\t1.76\\nHeWD`LihP@cIHUDdLkP@@@psNGbAH\\t1.76\\nHkmL@DpFEIeY}ZyjfZj@FEIbz_DzP\\t1.76\\nHcMH@DDDfyWWaZjjj@FGHUMtkqLt\\t1.76\\nHmt@`@bDfUujZ@Bj@A`HIaUtkrA@\\t1.76\\nHcvL@Hz]rRQQMSUUTt@LFSBimyB`\\t1.76\\nHknD@FADfy^Utvix@@@XTLki|QJ@\\t1.76\\nHcND@NALbbTtRLjuMUR@LBKawbMH\\t1.76\\nHg^L@NAKRY[eueVijje@FAEpgqFt\\t1.76\\nHcN@@@Re]eUvjh@@@XRDXWCJ{qDh\\t1.76\\nHid@PNbAbLddUTaJjZ`A`tXU\\\\OHP\\t1.76\\nHcNH@AAJYU^zZBBJ@A`NES]J{rD@\\t1.76\\nHcN@@HrRQJqIKmUP@@@pVDpjxYWP\\t1.76\\nHiWH`DphCpRjyj[aZjj`A`UMp|``\\t1.76\\nHmv@@@rRHjIJUjh@@@X]BXwCODIP\\t1.76\\nHcNH@IaJkU~XZjjj`AaLIeMpkoHH\\t1.76\\nHknH@EAJ[WUfz`@jh@F@iaTtz_HD\\t1.76\\nHmt@@LddTQVeZhH@@F@iaTwCOHT\\t1.76\\nHmuH@DDDfyW^Ejjj`A`rES]ODqP\\t1.76\\nHaeH`Dr@|DjybinZjj@FAES]r@@\\t1.76\\nHieH@DhDeVWaZjj@FCIaMp|RJ@\\t1.76\\nHmtH@@RYWUih@Jh@FG@fETkqND\\t1.76\\nHeUH@DDDfyWxVjjh@XTaTw\\\\SI@\\t1.76\\nHif@`ABHRYWZZ@B`@XLBXU]rA@\\t1.76\\nHid@`@bDeYWaf@@@FE@UMwLaA@\\t1.76\\nHeTD@@QImYQejjj@FGXUMpsrD@\\t1.76\\nHcNH@JAIY^UWVg`@@AaWCJ{qHH\\t1.76\\nHmtD@@QIevVUZjjh@X]eMproHH\\t1.76\\nHeVD@AADfyWxVjjh@XTUMt|QL@\\t1.76\\nHmt@@DjUgjDHJJ@A`LHULLkqLx\\t1.76\\nHmvD@D@dfueYUj`@@A`vMproHP\\t1.76\\nHmv@@HrRSFIJUjh@@@XSBXS\\\\Lj\\t1.76\\nHmtD@@QIn[VUZh@@@XLfMpsqJT\\t1.76\\nHie@@@EJe}ijjj`AaTHU]sLXP\\t1.76\\nHaE@@@{IHhbSUUT@LJaBinIg@\\t1.76\\nHif@@@rQQIFf@`h@FEIeMwDHP\\t1.76\\nHieH@DDDfyWaZjj@FEHUMwDpP\\t1.76\\nHefD@Hz\\\\ddTSUUUH@piLJfy@`\\t1.76\\nHaF@B@B\\\\ddRK]UUP@pZDpj[d\\\\\\t1.76\\nHeVH@DAIemQej@@@FAIPssB[`\\t1.76\\nHieH@JDDiWTjjjj@FCPfDw\\\\`P\\t1.76\\nHaf@@@RYfJfzjjh@X]BXUMwH@\\t1.76\\nHaDH`F@HRf^rjYj@FE@fTwDK`\\t1.76\\nHaE@@@yJUtjjjh@XUBXS\\\\pJx\\t1.76\\nsNqlHlOBqCbLddlZj@XEZodH\\t1.76\\nHeV@@@RUYTYy`@@AaUMpsqDp\\t1.76\\nHeTD@@iJ[e^f```@FEHS]OHD\\t1.76\\nsGPBAbJPLaYAInjhA`aNS@\\t1.76\\nKA|P@QrUSMUT@XTfES\\\\c`\\t1.76\\nKA|P@XBRlkUT@XTaTw\\\\b@\\t1.76\\nsNxA@IrRJFjhAaXl[qA`\\t1.76\\nsFuHEhOAJnMZj@XHwbF@\\t1.76\\nsNy@BDeVjj@XVKU|`@\\t1.76\\nsFq@@drfuU@LBl[qB@\\t1.76\\nsFq@@drfuU@LKEc^P@\\t1.76\\nsGPhH`DYIHUj@XKWdH\\t1.76\\nsFt@@TiTt@@A`i^IX\\t1.76\\nsFt@ADiTt@@A`c^IX\\t1.76\\nsJY@LDejhAahcqC@\\t1.76\\nsGY@DDeYj`FAVMyH\\t1.76\\nsGR@@cTe[f`GbM@\\t1.76\\nHeTD@@qI[eQej@@@FGIeMpsrH@\\t1.76\\nHifH@AAJ[W[j@B@A`VES\\\\QA@\\t1.76\\nQMhHRYAxb\\t1.76\\nsJY@BDizhA`inID\\t1.76\\nHeTD@@EJ[Uvz`@h@FAIgSqBh\\t1.75\\nHidH@@RYm^Fh@@@XMATwCq@p\\t1.75\\nsNp`@dfVZj@XJobq@\\t1.75\\nHkmHpBXpkIkMkDfYemyXHbbP@XDASoLXU@\\t1.74\\nHidL@@sdifzajjj@FCPaTw\\\\SA@\\t1.74\\nHaDD@@yJY^fjjh@XUFEW\\\\QF@\\t1.74\\nHaDD@@YJYZnjjh@XUFES\\\\QN@\\t1.74\\nsJQ@@dkU@LLL^JH\\t1.74\\nqCp@AJZ`LDmqB@\\t1.74\\nHeTH@@ReyTYj`@@AaTTwCsDrP\\t1.74\\nHaF@@@RYe[hB@@FAXS]q@h\\t1.73\\nHaDH@@Rfu[j@@@FFIg\\\\pjX\\t1.73\\nHg\\x7FD@L[`QIeyUTYNvjZ`@@A`vEr{_HL\\t1.72\\nHcm@`FtHaIe[UkiV@@@`@FC@fTJ|cP\\t1.72\\nHcoH@DJ`RUeUVy]ZZ`@@AaRTL{qHT\\t1.72\\nHk^H@IAJ[VuVzUh@JZH@XTfDq|P]@\\t1.72\\nHk^H@IAJ[VvvzUh@JZH@XTfDq|R]@\\t1.72\\nHg~H@IAJ[VvUneZ@Bfh`AaRXSWqML\\t1.72\\nHew@@@pldTTJVTLmP@P@LBqngbDH\\t1.72\\nHcnH@IAJ[Vw[iV`@ib@FEIaMoDFP\\t1.72\\nHmN@@@rRJJYDfeZ`XB@A`U\\\\L|sFT\\t1.72\\nHev@@@rQQQHyPsPLA@@pHfx^XER\\t1.72\\nHmN@@@RfYWraV`XH`@XDS\\\\OLBU@\\t1.72\\nHcn@@@RifurZ]jA`b@A`U\\\\L|sEt\\t1.72\\nHaDH`NBDRYWih@H@FAIa]q@h\\t1.72\\nsOt@@tigujj`FEbqoDF\\t1.72\\nHid@P@bAbDfY]n`HH@FEAa\\\\OHh\\t1.72\\nHeVH@LAI[eQej@@@FGIeMpsrH@\\t1.72\\nHaDH@@RVU[jjj@FG@fES]rH@\\t1.72\\nHeTH@@ReyTYj`@@A`tTwCODS@\\t1.72\\nQM`BN`^YH\\t1.72\\nHmNH@NAJ[VUnFZjjj`A`LXULLkrD@\\t1.71\\nHevH@FAIeYZ[ajjjh@XCBXU\\\\L|`@\\t1.71\\nHeTB@@pYRf[^njjj`AatHUMt|SA@\\t1.71\\nHidL@@X\\\\dTRekjjj`A`tXU\\\\ODQ`\\t1.71\\nHeVD@IADfyWxV`@`@XDUMwDRP\\t1.71\\nHieD@DDNRYWbijih@XDfEWHD\\t1.71\\nsGPYHlPDGlddJu@LIP\\t1.71\\nsGXA@IRjZj@XFKWdH\\t1.71\\nsJY@LDeZhA`Pl^R@\\t1.71\\nsGU@DPdsmR@pbxmP\\t1.7\\nJoC@@@ITskNx{[uA@@@@@XZaUprng[|c@\\t1.7\\nHg~@@@RfUYwySn``@@@@XZfDwCJz]|`@\\t1.7\\nHcLHpEbPRPrPrRRqIYCMT@E@@pJfx^Qh\\t1.7\\nHmtHpEbPRPrPrRRqIXYj`@`@XES\\\\OHT\\t1.7\\nHeVD`La@BLddlRPrm@@@CBlinGdR\\t1.7\\nsNplJyDJHtQddeeUPCAqXu`\\t1.7\\nqCr@XIJrAyhl\\t1.7\\nqCa@CIJtA`enR@\\t1.7\\nHaE@@@aJyUnh@@@XUaTw\\\\PH@\\t1.7\\nJoBBPDH@QddabbRRrv[kP@@@@@XCS\\\\Lki|Rw@\\t1.7\\nsNx`BDdw[UPCCKObM@\\t1.69\\nJob@@FRQQIIEI\\\\Lk[dDaP@@@FBiaMpz]orJ@\\t1.68\\nHcMB@NTLgTify^ajjjj@FBpaTwCJ{rL@\\t1.68\\nHmv@pBBlFlVlRYeYZXHJH@FAApksLJP\\t1.68\\nHmuL@AdFUJYY^njjjh@XSFES\\\\LkrD@\\t1.68\\nHifD@ACLdTTqkjjj`A`tHS\\\\ODr`\\t1.68\\nHeV@@@rRHqICMT@@@LNaJ[agdX\\t1.68\\nHmvD@DATf^Uqej@B@A`rYS\\\\OHT\\t1.68\\nHeTH@@RfUWihHH@AarXS\\\\L|b`\\t1.68\\nHie@@@EJeWkjjj`A`tIaTwDxP\\t1.68\\nHaFH@NCIEDcSUUT@LJ`j[nHf@\\t1.68\\nHeVH@DAIemQej@@@FFIS\\\\HnFP\\t1.68\\nHaG@@@qdig|ijj`A`RXU\\\\Qn@\\t1.68\\nsNx@@eLmUPCBbXwbS@\\t1.68\\nsNx@@eRmUPCBqFodp\\t1.68\\nsGQHLHaI[ihA`aNHt\\t1.68\\nsJX@@dkS@LMD^HX\\t1.68\\nsJX@@eSU@LDcqS@\\t1.68\\nqCp@AJv`LHnJX\\t1.68\\nqCp@AJZ`LDMqQ@\\t1.68\\nsGX@@eJuT@pHfODj\\t1.67\\nHaF@@@RVU[f@@@FEXUMwDB@\\t1.67\\nqCb@AIj`LHnXS@\\t1.67\\nsGY@DDf]j`FDWMcP\\t1.67\\nHmuL@DpFEIeY~nZifh@XHf\\\\siT\\t1.66\\nQMPBchFD\\\\Y@\\t1.66\\nHaD@`@dDfUzZ@B@A`RXU\\\\c`\\t1.66\\nqCp@BOTAaIqK@\\t1.66\\nHidH`ABPRYWZZ@BP@XDfEWHx\\t1.65\\nqCpB@ReMPFFbwH@\\t1.65\\nsJP@DiZhAaaMqH`\\t1.65\\nRFDEYFCBNT\\t1.65\\nsJY@DDfvhA`l^Q@\\t1.64\\nQMbDBDf`XUqD\\t1.64\\nsGU@EPdjmT@prqxiP\\t1.64\\nHeVH@IAIe]ZZ@Bh@FC@fEW\\\\PY@\\t1.64\\nHif@@@rRJEKaj@@@FEES\\\\ODS@\\t1.64\\nsOpH@DILkW@@@LBcWqC@\\t1.64\\nqCp@AIj`LEEqC@\\t1.64\\nHifL@ABnReYrZjjh@XMaTwCqHP\\t1.63\\nHmtD@@yIYe^UZ`P@@XLeLLkqHH\\t1.63\\nJoCFP`s[aH]L|drml\\x7FTr{@AUTp`A`RUk|SA@\\t1.62\\nHcnHaAdICigdfUmffWX@JjD@XXe[sLEP\\t1.62\\nHeUH@DhDeVYzVjjh@XLfDwSqHD\\t1.62\\nHeVD@DAdfygFV``@@XYSSsDxP\\t1.62\\nHifH@BAIfUXXHH@AaPXUMqND\\t1.62\\nHieH@JXDefWaXB@@FFEp|RF@\\t1.62\\nHaF@@@Rig[jjj@FCPfDw\\\\b`\\t1.62\\nHaE@@@qJYZfZjh@XDeMwHH\\t1.62\\nsF|HLZ@aJYuif@XP\\\\RH\\t1.62\\nsOt@AdiVMZj`FAQkyH\\t1.62\\nsGY@LDenj`FEDQoI`\\t1.62\\nsGX@@eJuT@phfMyD\\t1.62\\nqCx@AYIV`LDEqS@\\t1.62\\nHeVD@IADfyWxV`@`@XTUMt|a@\\t1.62\\nsFt@@TiTt@@AaikrH\\t1.62\\nqCr@HIJtA`enR@\\t1.62\\nsGQ`@jdvmT@pruyB\\t1.62\\nsOx@@eSI]UT@pLQ_Ej\\t1.62\\nsGY@BDfZj`FADQxmP\\t1.62\\nsJY@BDfZhAaaCqK@\\t1.62\\nsGQ@@dkMT@pVOMEP\\t1.62\\nsJQ@@drt`LHnKD\\t1.62\\nj`qP@@@\\\\RiUuyVgG^jjf`@`@FAhHpRcAZMYwnPd\\t1.61\\nJoB`@@\\\\eRk{JuuoUUL@D@A`\\\\IaTpkiv\\x7FHx\\t1.61\\nHmvDPLa@BEbLddlRVFUh@H@FETwBoHp\\t1.61\\nHcLB`HQ]@HrRFIKJ\\\\Jp@S@@phj[my@@\\t1.61\\nHmuDbLVD@HslddlRVFUh@H@FETwBoHp\\t1.61\\nHg\\\\D@@QIme]XYZ`@j`@XReMpkiwrL@\\t1.61\\nHcL@@LdbRVbM\\\\DDUP@LIaLJfF]yB`\\t1.61\\nHeVB@FCAeJYyzzjjj@FGPUMpsqDp\\t1.61\\nHcLH@ErRQRiYCMT@E@@pYLinGbEh\\t1.61\\nHie@B@xIrRQHynjjj@FCPfES\\\\`P\\t1.61\\nHeTL`HS@BLddlRPrm@@@CAlinFP\\t1.61\\nHaE@B@xIrRQHmuUU@CAhSBinQp\\t1.61\\nHmtH@@Rfuv[j@Bh@FCXUMJ|QA@\\t1.61\\nHid@`@bDfUvf`@h@FC@fEP|c`\\t1.61\\nsNyDJQDJHR[nihA`QE^Q`\\t1.61\\nsNx@@dlwUPCCZobQ@\\t1.61\\nsNp@Di]jj@XLSFodP\\t1.61\\nsGXA@IRjZj@XYZ|TH\\t1.61\\nsGP@Divj`FABMxi`\\t1.61\\nsJT@@TfZhAahmq@`\\t1.61\\nHmtL@@JTfYwfzB@j@AapXU\\\\L|aP\\t1.61\\nHedF@@PfFTf{nZjf@FCIaTt`\\t1.61\\nsJX@@eSU@LECqK@\\t1.61\\nj`q``@D@]dTTtTRVJXKUfjA`bh@AaSdeZ}qFC@\\t1.6\\njhia`@D@]yIYfU}VgEFZ`XHih@A`q`iJtGbHV@\\t1.6\\nJoCB@@a^QIQQQHkLNfuHTAT@A`r]Jf\\x7FD`P\\t1.6\\nJoCB@BA^QJJJIKEUrfu@pQT@AaSCJoqHt\\t1.6\\nJoCB@BA^QQSQQHyLNfuPLAT@AaWRnoqLD\\t1.6\\nHg~D@D@|bTTTRNU\\\\nmPLAT@CBfFUobQp\\t1.6\\nJoCB@B@zRsLk\\x7FWJ[TCADp@FELLkoL`{@\\t1.6\\nHk^H@DCHhihhdVGSZhF@`@XEtkoLpS@\\t1.6\\nHk^H@ACHdhhhdVGSZdJ@`@XTgRi|rAt\\t1.6\\nHcnH@DCHeEEDcWKkTC@P@LBXYWfQv`\\t1.6\\nHmtHPABHVHRYeY[hBBh@FCAaUr|PY@\\t1.6\\nHcLHPABHVHRYeYvz@`j`@XLFEWKqIt\\t1.6\\nHk^H@DAIYfUzySZ`XH`@XDproLcS@\\t1.6\\nHg~H@DAIfye]avvjA`b@A`WRn|sCl\\t1.6\\nHeWDAHHPRISdfygXVijd@XIW\\\\Qi@\\t1.6\\nHigDAHK`RISdfyUnZfi@FBTOHH\\t1.6\\nHigDAHHPRISdfyeaZfi@FDUqFx\\t1.6\\nsNy@LDeUjj@XTKF|TX\\t1.6\\nsOt@@Ti]qej`FBeyef\\t1.6\\nsF|@AbeLzmU@LLm^P`\\t1.6\\nsGY@DDeUj`FFQoEL\\t1.6\\nHif@@@RUe^Gh@@@XTUMp|a@\\t1.6\\nHcND@DCTeUe^UZh@H@FGHS\\\\L{qHp\\t1.6\\nsOy@DDeekZj`FFu_EB\\t1.6\\nsJP`@dfzhA`inXH`\\t1.6\\nHmuH@LDDeYW^Fjjj`A`HPaTwSrE@\\t1.59\\nsJU@DPdru@LHnKD\\t1.59\\nsJY@HDizXAyeb\\t1.59\\nqCpPXQBRu@XXQ\\\\f@\\t1.59\\nsJQ@@dsU@LLL^JH\\t1.59\\nsJX@@eSU@LLl^R@\\t1.59\\nqCb@AIV`LDmrP\\t1.59\\nqCaPQ@Hck@XS\\\\`@\\t1.59\\nsGP`@dfyj`FBMxe`\\t1.59\\nQM`AIhFE\\\\Q@\\t1.59\\nsOx@@eLm]UT@pXbu_HP\\t1.58\\nHcND@LCTeme^UZh@H@FGHS\\\\L{qHp\\t1.58\\nHaDH@@Rfu[j@@@FFYS\\\\qBx\\t1.58\\nHg\\x7FD`LFyt@aJYY\\x7FlfkjjjYjPA`pPaC_Lkc@\\t1.57\\nHmN@`FBHRYVukiV@@@@@XLBYPkrI@\\t1.57\\nHeVL@ICARf[^njjj`A`LHUMpsrL@\\t1.57\\nHifD@AAldTRekjjj`AatXUMp|a@\\t1.57\\nHid@P@qFqDfUfn`BH@FA@fMqND\\t1.57\\nHiTH@@RfU|kahDB@A`QMp|QJ@\\t1.57\\nHieD@DDFR[fVEijX@XQwDR`\\t1.57\\nHaFD@NBdefZyfi`AaC\\\\RB@\\t1.57\\nsFy@HDi[FehAaKqX`\\t1.57\\nsJT@AdizhAa`mqP`\\t1.57\\nsGQ@@djmT@pvMxh`\\t1.57\\nsF|@AjeKxmM@LEMqJ`\\t1.57\\nsGT@A\\\\dbMU@LCEcrT\\t1.57\\nsJP@DizhAa`cqS@\\t1.57\\nHifD@D@TefUnZjf@FAXS]qHh\\t1.57\\nsNpP@btf{Zj@XEXodh\\t1.57\\nsKT@Adi\\\\Vf@XS\\\\tQ@\\t1.57\\nsFx@@eRfuU@LMC^IX\\t1.57\\nqCp@AIZ`LEEqC@\\t1.57\\nsGQ@@dkUT@plVMy@\\t1.56\\nHiDJ@@PnEInvZjX@XDfDOHh\\t1.56\\nHifH@DAIVUxV`@@AaQTwCqHP\\t1.56\\nsJQ@@eMU@LEMqH`\\t1.56\\nHidL@@p\\\\dTTqkjjj`A`tHS\\\\ODr`\\t1.55\\nHidD@@EIe]ih@J@AaPHUCqLx\\t1.55\\nsBP@H|UT@ppbyL\\t1.55\\nsGXHLHaIVjhAaaEqF`\\t1.54\\nHiDJ@@PfEIn{Zjh@XLfESCrN@\\t1.54\\nKAxH@TvRRJNjZ@LLSByG@\\t1.54\\nHeTL@@JTfYw[hHB`@XLFEWSrA@\\t1.53\\nHeVH@DAIgeQej@@@FCIeMp|bP\\t1.53\\nqCj@KAIV`LHnJX\\t1.53\\nsOy@JDiWMjj`FAbqyF\\t1.53\\nj`qPB@AVAHILkkJ{QakP@UUUD@CBRLDiIVcNxcg`\\t1.52\\nJoB`P@vD`drnlktqw@AUUQ@A`JXURngqN\\\\\\t1.52\\nHg}@`AlIAIe]YVfNx@Jjh`A`JXURngqNl\\t1.52\\nsNxA@IRfZjhA`xlZ~P@\\t1.52\\nsGY@DDf]j`FBMxe`\\t1.52\\nHidH@@Rfuvz`@`@XYeMsDHP\\t1.52\\nHifH@AAIYW[f@B@AaVESCrH@\\t1.52\\nHidH@@RfU~F``@@XLfDwCrJ@\\t1.52\\nQMJHBHvAaOH@\\t1.52\\nQMB@HRZAaOD`\\t1.52\\nsGY@DDeej`FBexlP\\t1.51\\nsJY@DDeVhA`h^IX\\t1.51\\nHidH@@Rfuvz`@`@XXfMsBhP\\t1.51\\nHaF@@@Rfu[j@@@FEXUMwDA@\\t1.51\\nHaFH@LAIYfnZjh@XDaUwDa`\\t1.5\\nsOy@LDeekZj`FAQkxi`\\t1.5\\nHaDH@@Rfu[j@@@FFIc\\\\pjx\\t1.5\\nHeTD`HP@cIHXdmpk@A@@pHj[nHD`\\t1.5\\nQM`BN`XUqD\\t1.5\\nHiV@@@Rifzyajjj`AatIaTw\\\\`P\\t1.49\\nsJXA@IRij`FFVODH\\t1.49\\nsGX@@eLuT@pLVODJ\\t1.49\\nj`iP@@@PRfUUg_EIF]zZb@@@@@FBbLEIVcV]{dD@\\t1.48\\nj`qaB@MBADILklmkQcoP@UP@@@CAPDXISakN}rB`\\t1.48\\nJocDP`rDatsvQQISJJVTr{[p@UUTL@FCIVg[|SE@\\t1.48\\nj`i@B@@ABTsLjotyJvgT@P@aP@@pd@cARUhunH]x\\t1.48\\njdy``@J@BdlsOJkbezKMUPTBH@C@QJLUYwh|qCQ`\\t1.48\\nj`qA@@@YHheEdXdaR]z`bB@@@@XZPQgARtZso\\\\aP\\t1.48\\nj`aaB@HB]DYIHkECDeK^jjf@H@@XZ`cAJ\\\\Ujso@\\t1.48\\njhqa`@M@IIIf]{eYgHHBjjh@A`xFBTxJRmFl{pP\\t1.48\\nHo~HHNnIAICIAXcIIKEEhcIvjBBJ`@XLwKiwrG@\\t1.48\\nj`qP@@@XRfV]{V`g^BBb`@@@FFdDhs`mFl{wHJ@\\t1.48\\nj`qQ@@JV@eMrsooEFmPPTUTP@LEHHs`iJtYwH^@\\t1.48\\nHg]DqNm]bPRPrPz]{IIKEDheIuPPLP@LLXSyE`\\t1.48\\nj`qa@@J@RVYgm\\\\Tg^YjjB@P@F@bTXhug^yb@m@\\t1.48\\nHcMDpnd]bPRPrPZQyYwlddlRbLkUMUT@LDj^Qp\\t1.48\\nHg^HHNnIAICIAXcIIKEEhcNuPPQP@LJ[ev~PX\\t1.48\\nJobD@@ILsJr|wif}PTEPe@AaXXUMprng[|b@\\t1.48\\nJoc@@@YHhhheEcrsYoPAA@B@@XJS\\\\Lkiv\\x7FH@\\t1.48\\nHg\\\\HpMbPRPrPrRRqIPsCMT@ET@CCjXYt{yB`\\t1.48\\nJgB@P@AFRJJJIIFad}n`@`@`@C@PIne]ObCX\\t1.48\\nJoBD@@YHihdcDepv}@PP@@@FBeS\\\\Jz]orD@\\t1.48\\nJoCDPBbDPdrnwJtuo@AT@@@A`hIaUvg[|`P\\t1.48\\nj`a`P@A@P{rSKKOkJtuMUUL`@phS`iVxag`\\t1.48\\nJob@P@ABTsLjoWS^oPA@BD@@XBALLkm|Pw@\\t1.48\\nHg\\x7FH@HyVrRQJIWIUtkUSUUT@LApjxYt~IE`\\t1.48\\nHko@PITpbNbLbbbTURXXBHZP@XBFTwBi|cP\\t1.48\\nHg\\\\LpINxdDdLdLddlRTJ`kU@DS@@pJfF~QH\\t1.48\\nJoB`@@YdbbTVLRUC[aAQ@@@@XJaTpkiv\\x7FHx\\t1.48\\nHk~@@HrRQQIFHUgYNjjjjh@XJfEWCJz_HX\\t1.48\\nHg]DpBX{BlFlVlRYf{~zXHbJX@FA@JwqBX\\t1.48\\nHcl@P@BABLdTRafQTnuKLuH@pDDJae]yG@\\t1.48\\nJoBdP@sXQBSJvlkSJ\\\\@EMSD@FC@fUi|Sg@\\t1.48\\nHknHpINIAICICIIKDeMaVj@Hd@FATLkqFt\\t1.48\\nHknHpCjIAICICIIJeEDmNjhB@@FADJ{rI@\\t1.48\\nHg^HpCjIAICICIIJeEDiiuU@PP@LBHUwdV\\t1.48\\nHcN@HNbPRPrPVHrRRqQZSmTDD@@pInW^QH\\t1.48\\nHklDpMNIAICICIIKDeeAfj@BX@FATwGrA@\\t1.48\\nHg\\\\DpINIAICICIIKDeMhJuPADp@LBiaodJ\\t1.48\\nHk\\\\d@dpSAPzIZUyIfYoVgSjjifh@XEWZX\\t1.48\\nHg|H@@rJJIHqIMqw@PP@@@LEpj[iWSod@\\t1.48\\nHg~D@DClbbTTTjSB]mUL@D@C@TXYWSodX\\t1.48\\nHg^H@ACIEDdhlYrtDEEP@LMSBinFUt~QX\\t1.48\\nHk_H@HyVrRQJIWJneZjZjj@FGXU\\\\L{qHL\\t1.48\\nHo~L@M@iRYg^ufzB@jj`@XZFEWCNg[|aP\\t1.48\\nJoBd@EVBTwKN\\x7Frg]AAQUD@FDhS\\\\Lki|ap\\t1.48\\nHg~@@@rQQQUQIUqwSMP@P@LA@fz]N~YeJ\\t1.48\\nJoCD@B@drsJkkYnu@@@@@AaJUprng_DYp\\t1.48\\nHo}L@FFnoIIEEEB\\\\avjYjih@X]cCJf\\x7FHH\\t1.48\\nHedBJHSBCpzHFHfHKlddqTcUUP@pkJxY@\\t1.48\\nHc^@@HRjU^^dUGZjjjj@FBiaTwCJ{rH@\\t1.48\\nHcmH`FeXBLddRJRUMpuUUKP@pjLJnxbZ\\t1.48\\nHknH@ACIEDdhl^V``hh@FBiaTwCJgrM@\\t1.48\\nHg|@@LddTjTrPr]uP@@@@C@TpjXUOb[X\\t1.48\\nHg|@@LddTjRRPr]uP@@@@C@Tpjy]ObMX\\t1.48\\nHg}H`AfpbDfUmYZYS`@ijR@FE@fT_D{P\\t1.48\\nHcoH@HyVrRQJIWUtkUSUU@CAlJnF^IF`\\t1.48\\nHg}H@JlDinV]~T{hHJJb@FDhS\\\\Lki|bp\\t1.48\\nHg}@@@qJYWyVnNp`b@@@A`jES]Jz]|c@\\t1.48\\nHedDpJZHaHcHcIIKEiUUT@LNaLInGdR\\t1.48\\nHkmD@AvnrRQQsQKSjfje`AarXSRi|c`\\t1.48\\nHmvDPLa@BNbLddlTVeUhH@@FEXwBoHd\\t1.48\\nHg|H@@RYfUWd}mh@@@@@XRUMpriwrM@\\t1.48\\nHmOH@HyVrRQJIVneZjZj`A`vEWCODaP\\t1.48\\nHmv@pIbPRPrPrRRqIPUj`B@@XYPkqFd\\t1.48\\nHmu@PITHchcHhheEVF@bF@A`pYS\\\\OHT\\t1.48\\nHmtHpIbPRPrPrRRqIPUj`B@@XYSCqIT\\t1.48\\nHkmL@FFnOIIEEDlqvjYjf@FEXproHH\\t1.48\\nHiDDpJZHaHcHcIIKEjjj@FCPfDp|c`\\t1.48\\nHknD@AALbbTRbqWVijjd@XTWCI|Qe@\\t1.48\\nHo~L@AAGRYYY}UujZjjT@XTWCM|Qc@\\t1.48\\nHmMHADp@zIRYeuIiVjh@@@XUgCJ|b`\\t1.48\\nHg]L@DpFEIeY~^nZifjh@X\\\\fRng_Hx\\t1.48\\nHeuHADp@zIRYUTjFZj@@@FEHwCOHp\\t1.48\\nHklH@@RYWY^f`@jj@A`hIaUpki|bP\\t1.48\\nHcm@@@qJUvUpeuih@H@F@pa\\\\LkoHh\\t1.48\\nHcND@JCTeUe^UZjjj@F@iaMpsoDaP\\t1.48\\nHcLD@NwIIDcDbpuUUS@C@XSBiagdJ\\t1.48\\nHcMH@NVlddTZbR{UMTl@LFSBF]yC@\\t1.48\\nHcmH@DhDfUe]aWVjA@`@XTf]J|P]@\\t1.48\\nHcNH@IAIfUWEZ``b@A`lXUMprn|`@\\t1.48\\nHcNH`IDHaIe]mih@Ij@AapIaUJ|cP\\t1.48\\nHcMD@FFnrRQQQ]LMTsUP@pKIW^XSB\\t1.48\\nHcmH@DhDfUe]aWVjA@`@XDgRoLp]@\\t1.48\\nHmwH@Dp`RYyUeVjjj@FGIS\\\\LkrL@\\t1.48\\nHmvD@E@TfUvzZ@Bj@A`HIaUpsrE@\\t1.48\\nHmvH`IDHaIe]nf`@f`@XLBXUSrE@\\t1.48\\nHetH@@RYnWaFZjjZ@F@`aTwCODc@\\t1.48\\nHcLD@@QInYWWVjB@@A`JYS\\\\LkrM@\\t1.48\\nHmt@`@bDfUuZZ@Bj@AapIaUp|RU@\\t1.48\\nHiDLpB[`bDbJ|Dfunff`A`PI`|b`\\t1.48\\nHcND@LADf]YU]Zj@@@FGXWCJ{rJ@\\t1.48\\nHeV@PIBHzHRYeea`Ha@A`pYS\\\\OHd\\t1.48\\nHcND@EADfVU~UZjjj@FGES\\\\L{rL@\\t1.48\\nHmuH@DDDeYW^Ejjj`AarXUMt|RE@\\t1.48\\nHeVD`La@BLddlRPrm@@@C@linx`r\\t1.48\\nHct`@JF]rRQRzKUUSV@LFaLJfyD`\\t1.48\\nHcML@DpFEIeY}kfjYj`A`RXn|Si@\\t1.48\\nHmLD@@yIYe^neVdHB@A`SCJ|RB@\\t1.48\\nHmUDB@UiB\\\\ddUbtjji`AatIaUr`\\t1.48\\nHmv@@@RYvUeZj@@@FDpfDwCJ|`@\\t1.48\\nHeTH@NrRQHqLMUUT@LAaLJfF^Qp\\t1.48\\nHmv@@@RgVUeZj@@@FDaBXwCJ|``\\t1.48\\nHmvH@NAIYWUnZjjh@X\\\\fESCODaP\\t1.48\\nHmwH@DJPR[YWFVjjj@FCYS\\\\J|a@\\t1.48\\nHeVDB@ZPgIIEXdLuUUP@pzDpjxP\\t1.48\\nHmuD@DHNRY[]Jfjfj@FEXproDP`\\t1.48\\nHmuD@DHNRY[]Jfjfj@FALLksDp`\\t1.48\\nHeV@@@rRJIJmuUUT@LAaLInF^QP\\t1.48\\nHiEL`LZDh@cIHULeij@FFXp|PN@\\t1.48\\nHmvD@DCdfVyyUjB@@A`RMr|pad\\t1.48\\nHeUH@DpDeYUFVjjh@X\\\\aTwCOH`\\t1.48\\nHeUH@DHDfVuFVh@@@XLeMpsrB@\\t1.48\\nHmtH@@RYWYih@Jh@F@`fEWBoHd\\t1.48\\nHeT@`@bDfUuih@J`@X\\\\BXU\\\\OHd\\t1.48\\nHmVDB@FPgIIETijjih@X]BXULh\\t1.48\\nHef`@@SFyIeYfjZ`AapIeLL|c`\\t1.48\\nHieH@DDDeYWaZjj@FCIaTw\\\\RA@\\t1.48\\nHeUH@DDDeYWxVjjh@XLfES]qHd\\t1.48\\nHeU@@@EJYU^f```@FG@fES]qAd\\t1.48\\nHaD@P@bBbDfYvzB@@A`PDw\\\\SJ@\\t1.48\\nHieH@DDDeYWaZjj@FEXUMwLaA@\\t1.48\\nHeUH@DDDeYWxVjjh@XUaTw\\\\rDd\\t1.48\\nHeVH@FAIfUqfhH@@F@aFEWCOHX\\t1.48\\nHeVHB@XIrRQVICMUSR@LNaLKad\\t1.48\\nHeUH@DdDf^UFVjjh@XTUMp|qLd\\t1.48\\nHeUH@LDDeYWxVjjh@XLaTwSrH@\\t1.48\\nHeg@@JF\\\\ddTneUTp@pZDpj[bCH\\t1.48\\nHmW@@JE\\\\ddTnRjjfpA`tIaTwHx\\t1.48\\nHif@@@rRIHhjjjj@FGPaTwCrL@\\t1.48\\nHie@@@QIYUxVjj`AatXUMp|`@\\t1.48\\nHaEHADH@zIRYUJjij@FBMwDS@\\t1.48\\nHiFHB@DIrRQUJjjPA`tIaTwHx\\t1.48\\nHiD`@@SFRYUfjZ@FG@fTwCrB@\\t1.48\\nHif@`ABPRYWZZ@B`@XTfEW\\\\`P\\t1.48\\nHaF@`F@HRf_rjYj@FE@fEWD[`\\t1.48\\nHiE@@JGIIEKjji@FCPfES\\\\Sa@\\t1.48\\nHiE@@JGIIEKjjj@FCPfES\\\\Sa@\\t1.48\\nHeUD@FFnRjYeajfZ`AaF\\\\HfFP\\t1.48\\nHeV@@@RYyTYj`@@AaHPfTwCH\\t1.48\\nHifD@D@Tf[WaZjj@FAES]rL@\\t1.48\\nHaE@@@aJmUnjjh@XLfES]rH@\\t1.48\\nHieL@DpFEIeYkfjY`AaB\\\\SN@\\t1.48\\nHiFH@HGIIEXjji@FCPfEW\\\\a`\\t1.48\\nHeT@@DjU]k``b`@XMBESCqLd\\t1.48\\nHaF@@@ReU[jjj@FGPfES]r@@\\t1.48\\nHif@@@Ri]^Fjjh@X]BES\\\\OHp\\t1.48\\nHaEH@HSlddRmMUTp@prLKbIP\\t1.48\\nsNqBGIARFdKDYIIYUT@pQoHp\\t1.48\\nHieH@DHDeYWaZ@@@FEIS\\\\OH`\\t1.48\\nHieD@DHNRY[Rijih@XPwBSBD\\t1.48\\nHiEH@FzlddTZjfh@XTfDw\\\\`P\\t1.48\\nHaDH@@RVU[jjj@FCIaTw\\\\PH@\\t1.48\\nKA|Y@]BX@QddarVj`CCBinQp\\t1.48\\nHaE@@@yJe~fjjh@XMBXUMrN@\\t1.48\\nHid@@LdbRQk``R@AaTHUCqLX\\t1.48\\nHeT@@DjU]k``R`@XMBESSqLD\\t1.48\\nHaF@@@rRIHeUUS@CAhSBinQp\\t1.48\\nsNqBGIARFdKHYIIYUT@payF\\t1.48\\nHiFH@JAIUfZjh@XUaMp|RD@\\t1.48\\nHaFD@DAdfUjyjf`AabYWHx\\t1.48\\nKA|@@Uddbejj`CAhSBinQp\\t1.48\\nKAzP@MuYIHhzih@pILInQp\\t1.48\\nKAxH@UvRRJNjZ@LLSBxc\\\\\\t1.48\\nsNyiKE`D[lddjVj@XP|UX\\t1.48\\nsGPdE`DSpRYvj@XXF|Tp\\t1.48\\nsGQLLIAREdDfvj`FDgHP\\t1.48\\nsOpH@DISOkSK@LBEkqE`\\t1.48\\nsKXDD@b^BRvKU@LLL^R@\\t1.48\\nsOxA@IRjVnjj@XVKU|a@\\t1.48\\nsOq@@drm]UT@phQkxi`\\t1.48\\nsFxA@IRiSZj`FEbqoH@\\t1.48\\nsF|@@ldrfmU@LBl[r@\\t1.48\\nsGYHMQDIJmT`LLHnKD\\t1.48\\nsN|@@ldssUPCBaFodp\\t1.48\\nsGQhHlOAJmZhAaCqB`\\t1.48\\nsNy@LDeVjj@XTKF|TX\\t1.48\\nsGT@@deYj`FEBqoI@\\t1.48\\nsNx@JeTuUPCBqXodh\\t1.48\\nsNy@GTjfjf@XYX|c@\\t1.48\\nsJR@@lTfVhAa`mrD\\t1.48\\nsGY@DDf]j`FFQoI`\\t1.48\\nqCbHXRBdDfj@pdyL\\t1.48\\nsJ\\\\@ABeOL`LECqK@\\t1.48\\nsGX@@eMuT@phbqyJ\\t1.48\\nqCsCPKCevyIj`H\\t1.48\\nHaDD@@{IEDcSUUT@LJ`j[nHf@\\t1.48\\nQMhDRZAaGFP\\t1.48\\nHidH`ABHRYWZZ@BP@XTBXU\\\\c`\\t1.48\\nsFpH@DISNmLpC@aZ|a@\\t1.48\\nsGQ`@bdwMT@pROEj\\t1.48\\nqC`P@HRZhCBSfBp\\t1.48\\nqCr@XIKTA`hnHX\\t1.48\\nqCp@AIj`LDmqB@\\t1.48\\nqCp@AJZ`LEMqA@\\t1.48\\nJoCb@BvxTeMrkk]IwPPP@P@AaRDporC@\\t1.47\\nHcNB@JciwIIMEeKruUUU@CBXSBiae^Qh\\t1.47\\nHk_H@NtpRfumUaWZ@@@`@FAIcGqBd\\t1.47\\nHk_H@IWPRfunUatz@@H@@FAIcKqBL\\t1.47\\nHmVB@A@feIf[vjjj@FBaBXULLkrN@\\t1.47\\nHmwDAHHPRISdfyeVEjZjPAae]OHT\\t1.47\\nHmvL@JciRjyvyZjjj@F@pfESCOHT\\t1.47\\nHeWDAHHPRISdfyeXVijd@XIT|c`\\t1.47\\nHmO@@@rdigmZZUB@@@@FFYp|qIT\\t1.47\\nHeTB@HhYRjwUnjjj`A`tHS\\\\ODrP\\t1.47\\nHidL@HhTjmunjjj@FEPaLODs`\\t1.47\\nHiFL@F@nRYgZjj@F@aBXS\\\\OHh\\t1.47\\nHaE@@@sIEDceMST@LLPfxe\\\\\\t1.47\\nsNx`BJdrmUPCAbHu|f@\\t1.47\\nsOx@@eR}]UT@plqkyD\\t1.47\\nsGY@JDinj`FFbwDZ\\t1.47\\nsJY@DDeVhAaecrP\\t1.47\\nHg^L@M@iRYg^u[hHBjh@FBaaUprnwrC@\\t1.47\\nHidH`H@HRme^Eh@@@XTUMp|PD@\\t1.47\\nHid@`@bDfUvf`@h@FC@fEW\\\\`P\\t1.47\\nsFt@AdiWEihAahcrT\\t1.46\\nHaD@@DjUZxHH@AaTXU]qDX\\t1.46\\nsJ\\\\@@ldru@LDEqX`\\t1.45\\nHeTH@@rQQQHcMAP@@LFpj[axbR\\t1.45\\nHo}BAHLDUxeNR[e]m^Eh@JjP@X\\\\UMtj_Dvp\\t1.44\\nHkmLAHLDVISdfyW[xV`@j`@XLUMtkqML\\t1.44\\nJoBF@@HrS\\\\srzLv{PPD@@@FGISZ]orE@\\t1.44\\nHcLDrITJsjsZq^RYefVF@bF`@XXG[qLD\\t1.44\\nHkLNB@PfESSdf{n{Zjjj@FBxUMprnf\\t1.44\\nHclH@@rJJIPiMr{@P@@@CA`XYW^Ie@\\t1.44\\nHcMD@DHMR[nUyUj`@`@X]aMpsoHP\\t1.44\\nHeUD@BdARYgUnjjj`A`HPaTwSqLD\\t1.44\\nHif@PBBHzHRYgfFBB@@XTFMp|``\\t1.44\\nHeTL@@Z\\\\bbRbM]@DT@CA`SFz^PH\\t1.44\\nHmtL@@ZTieeqV`hH@A`rEproDi`\\t1.44\\nHmv@@@Ri^ueZj@@@F@pfMproHh\\t1.44\\nHeU@@@yJeWZzjjZ@FCPfES\\\\PY@\\t1.44\\nHeTD@NGIIDcCBUUMP@pJDpnHt`\\t1.44\\nHeVH@NAIYWVyjjj@FCIaTp|RI@\\t1.44\\nHieH@BDDfY}njjj@FGABEWCqLX\\t1.44\\nHmtH@@RfUWzZBBH@F@iaTwBoHd\\t1.44\\nHie@@@yJeWkjji`A`tIaTwDxP\\t1.44\\nHidD@NGIIDcHRjih@XEBXWDXP\\t1.44\\nHidH@@RUY^Ejjh@X\\\\fES\\\\OH`\\t1.44\\nHidD@F{IIEYhRjfh@XYFEqDD\\t1.44\\nHidD@@iJ[gxZB@@AaRDwCrJ@\\t1.44\\nHidH@@RfU~F``@@XMaTwCrD@\\t1.44\\nHaDH@NrRQHpeUS@C@hSBxeL\\t1.44\\nHaDD@F{IIEYBUTt@LLcBxb\\\\\\t1.44\\nsNyhMEPDYIBhmL@pfx`p\\t1.44\\nsOq@GddblUUL@ptqxeP\\t1.44\\nsFu@E`drfmU@LD[qK@\\t1.44\\nsKXA@IReqjhA`Xl^P@\\t1.44\\nsJY@DDeVhA`l^JH\\t1.44\\nsGX`DJdjmT@prMxi`\\t1.44\\nsFx@@eLzuU@LCEkq@`\\t1.44\\nHidH@@RYm^Fh@@@XLATwCqHp\\t1.44\\nHg]HpBXpkIkMkDfYemnVBHhf@AaPENwqFT\\t1.43\\nHknL@M@iRYg^un``Jj@AaHXU\\\\LkoHL\\t1.43\\nsGX`LDdrmT@pexlP\\t1.43\\nHeT@@DjU^k``b`@XCBXU\\\\L|a`\\t1.43\\nHeTD@@iJ[e^f```@FAHSCqNd\\t1.43\\nsFy@JDiTvjhA`Xl^R`\\t1.43\\nqCp@AIZ`LMEnP@\\t1.42\\nHaFH@JAJUtjjjh@XUBXS\\\\c`\\t1.42\\nHaDH@@RYWih@H@FFHU\\\\pLx\\t1.42\\nHcNLAHAEbTyInUvxV`@j@A`qTwRoHt\\t1.41\\nHiFDPJHPbDbDf{Vij`AaPPeCqFx\\t1.41\\nHeTH@@RYe\\\\YjB@@AatXU\\\\L|PF@\\t1.41\\nHidH`BBHRYeVFBB@@XDFTOD[`\\t1.41\\nHaDH`BBHRYg[hH@@FAAe]qBX\\t1.41\\nHeTH@@RYm_aZ@B@AaQTwSrL@\\t1.41\\nsOp@DjUMjj`FCDVMyF\\t1.41\\nsNx`DFdkKUPC@kE|Th\\t1.41\\nHif@@@RfU~F``@@XLFES]qDD\\t1.4\\nsGP`@TeYj`FFVOEJ\\t1.4\\nsNp`Jtjfjf@XYX|c@\\t1.4\\nsOq@@drm\\\\@@@prMyaf\\t1.4\\nHcNL@M@iRYg^vzB@j`@XBFEWCJ|cP\\t1.39\\nHiU@@@iJYWrnFP`H@FAESCqDx\\t1.39\\nKA|X@HC\\\\dkJuU@FEIaMwDb`\\t1.39\\nsJU@DPdju@LDmqP`\\t1.39\\nqCr@PIWTAaEqS@\\t1.39\\nqC`@ISTAxQE`\\t1.39\\nHcLHpMbPRPrPrRRqIPcMT@E@@pjfF]yB`\\t1.38\\nHk^D@IADf^UeFUujjjj`A`ITwBngrL@\\t1.38\\nHcnD@AADeYVWaeVjjjh@XCaTwRn|b@\\t1.38\\nHmtL@@Pdf{eYUj`@@AavDwCJ|a@\\t1.38\\nHmVDB@ZPgIIEXmJjjX@X]BXU\\\\h\\t1.38\\nHeTH@@RYWVf`@j@AapIaTL|c`\\t1.38\\nsGQ@@dsuT@pHVOEJ\\t1.38\\nsKX@@eKcUPCCSGbB@\\t1.38\\nqCb@AIj`LEEqC@\\t1.38\\nsFx@@eJfuU@LJIc^Q@\\t1.37\\nsGX@@eRuT@pLQoI`\\t1.37\\nHeVB@ICFEJYyzzjjj@FGPUMpsqDp\\t1.36\\nHeV@@@Re[TYj`@@AapES\\\\L|RD@\\t1.36\\nHifH@JAJUuJjjj`A`tIaMwHD\\t1.36\\nKAxD@@c\\\\dvluS@FBXWDS`\\t1.36\\nsGPa@erS\\\\uPCB[bM@\\t1.36\\nqCqPZHAD]XCqC@\\t1.36\\nsGP`@TfZj`FADMxe`\\t1.35\\nsJX@@eOU@LML^HH\\t1.35\\nsNx@IddbmUPCBqXodh\\t1.34\\nsGY@DDfyj`FBMxe`\\t1.34\\nQMB@HchFD\\\\Y@\\t1.34\\nsNq`@bdw[UPCCKGbk@\\t1.33\\nqCh@AIJtA``nJX\\t1.33\\nHif@@@RUe^Fh@@@XLaTwCq@`\\t1.33\\nHkoBAHePPcbTyInUuVyjZfe@FAUpkrM@\\t1.32\\nHmvD@NADfVyyUjB@@A`SCJ|Pn@\\t1.32\\nHeUD@DpFRUVTYZZZPA`REt|RA@\\t1.32\\nsOx@@eRimUT@plqkyD\\t1.32\\nsG]@EbDf]jPFBVyJ\\t1.32\\nqCh@AIJtA`inHH\\t1.32\\nqCh@BIWTA``nJX\\t1.32\\nHeTD@@QImeQej@@@FEIS\\\\ODrP\\t1.32\\nsJQhHl@bOV`FDOI`\\t1.32\\nHidD@@IIf][hHB@AaPXU]rA@\\t1.32\\nsOq@@drm\\\\@@@prKyaj\\t1.32\\nHmvD`Ia@BLdabRrxU`@h@FEES]ODAP\\t1.32\\nHidH@@RfU~F``@@XTfDw\\\\Ra@\\t1.32\\nqCr@XIJtAyhl\\t1.32\\nHknDrBtpkAkEkCyIf[effBBbX@FF@J|Pi@\\t1.31\\nsJ]@EbDfVhA`enP`\\t1.31\\nHif@@@RfU~F``@@XLBXS]qJD\\t1.31\\nHaD@P@bFbDfUjz@H@AaPIeMrN@\\t1.31\\nsJY@DDefhAaIqX`\\t1.31\\nHaD@@DjUZxHH@AaTHU]qLX\\t1.31\\nHg|L@@QdfygUQd{ZB@@@@FGISKiwrN@\\t1.3\\nsGX@@eSUT@ptQxmP\\t1.3\\nHeTD@@iIYe^e```@FAMpsqHH\\t1.3\\nqC`P@HRVhCBKfDp\\t1.3\\nsJU@DPdvu@LInID\\t1.3\\nqCqPZH^D]hCsAX\\t1.28\\nsNp`@df]Zj@XKWbK@\\t1.28\\nqCp@AJZ`LLHnS@\\t1.28\\n`Lg@^P\\t1.28\\nQMhDRVAaOJ@\\t1.28\\nHaFD@DCdfUriji`A`RXU\\\\a`\\t1.27\\nsGX`JBdruT@pHaoDl\\t1.27\\nsJX`LDdvu@LH^IX\\t1.27\\nHidH@@RfU~F``@@XEc\\\\OLPj@\\t1.27\\nsOt@AdigkB@@FAQkyL\\t1.27\\nsGXhMD@cIHTmPCB[fAh\\t1.27\\nRGDPDQ`|R@\\t1.27\\nqCb@AIj`LDEqS@\\t1.27\\nqC`@ISTA``nJX\\t1.27\\nHidD@@GHhdhZZ@B`@XTBTp|SN@\\t1.26\\nHg}H@DTDeUfUqT{ZjP`H@F@hWRng_Dc@\\t1.26\\nHcm@@@uJYU_rnf`Pbh@FG@aMpsqEt\\t1.26\\nHmtD@@iJ[eWihHH`@XTaLL|aP\\t1.26\\nqCr@XIKTA`enHP\\t1.26\\nHeTD@@iJ[g^F``H@FAHSCqJd\\t1.26\\nHmtD@@iJ[eWihHH`@XDaLODeP\\t1.26\\nqCr@HIJtAaIqK@\\t1.26\\nsOp@DjWkjj`FCDQkyL\\t1.26\\nsJX@@eMU@LLInID\\t1.26\\nsJXA@IczhA`hnKD\\t1.26\\nqC`@IVtA`anJH\\t1.26\\nQM`AIhFD|R@\\t1.26\\nsJY@DDfVhAaEqX`\\t1.26\\nsKPH@DIRxtl@pHfOH`\\t1.25\\nHaDD@@IIf]n``@@XTFES\\\\c`\\t1.25\\nHeT@pHdDdLdLddlRPsU@@@C@j[iy@`\\t1.25\\nsGQ@@druT@pHaoDl\\t1.25\\nQM`BN`XI\\\\d\\t1.25\\nQM`AIhFCOH@\\t1.25\\nQM`AIhGfR\\t1.24\\nsJY@LDefhAaEsSD\\t1.23\\nsJY@DDefhAyib\\t1.23\\nsOpHADILkW@@@LJDZ~S@\\t1.22\\nHaD@@DjUZxHH@A`TIa\\\\rfx\\t1.22\\nsOpHADILkW@@@LLE^[E`\\t1.22\\nHmvH@DAImYVUZh@@@XLS\\\\LkqDp\\t1.22\\nsOq@@drm\\\\@@@pQoBEf\\t1.22\\nqCr@HILtAaErX\\t1.22\\nsJXhMD@bOV`Gbq@\\t1.22\\nqCp@BOTA`hnS@\\t1.22\\nHaD@@DjUZxHH@A`THU\\\\sFx\\t1.22\\nqCr@HILtAxe`\\t1.22\\nHidH@@Rfufz`@`@XXfMsBxP\\t1.21\\nHaF@@@Ri_ijjj@FEPaTwDs`\\t1.21\\nsOx@@eJymUT@plVMx`p\\t1.21\\nqC`P@HRZhCAK\\\\P`\\t1.21\\nsJY@DDeVhAaMsQD\\t1.21\\nsOy@LDeekZj`FAVKxiP\\t1.2\\nsJXA@IRij`FAbqy@\\t1.2\\nqCa@AIMTA`inHH\\t1.2\\nHidH@@RfU~F``@@XUaMp|QJ@\\t1.2\\nsOr@AcTiek@`@GfQX\\t1.2\\nHidD@@iIYgxVB@@AaQTwCrH@\\t1.2\\nHaFH@NAIYUnX@@@XEaTwH`\\t1.2\\nsJQDBHaQBS]R@ppbyL\\t1.2\\nsGX@AddQjhAah[qK@\\t1.2\\nHmvDAHAHeNR[e]xV`@h@FAES]qIT\\t1.19\\nHmLD@@eIfUTfEV``R@A`U\\\\J|c@\\t1.19\\nHeTH@@Rfuunh@J@AaRYSCqBd\\t1.19\\nsGXA@IRijj@XFKGbE@\\t1.19\\nsJX@IGuPCCQ[dH\\t1.19\\nsOp@DjWkB@@FAfKxeP\\t1.19\\nRG@DXOD`\\t1.19\\nsJY@BDfZhAahmq@`\\t1.18\\nsGQ`@ldsmT@pQoI`\\t1.18\\nsGQ@@dsuT@pHaoDl\\t1.18\\nsJX@@eOU@LBIcrH\\t1.18\\nHmvLAHAEbTyInUwaZ@B`@XTUMr|bP\\t1.18\\nKAxUBPfEp^F\\\\WYIIbfjd@pbnPp\\t1.18\\nHif@@@Rge^Fh@@@X]BES\\\\OH@\\t1.18\\nHaF@B@BTjUZxHH@A`tIaUwHX\\t1.18\\nqCh@CISTA``nJX\\t1.18\\nsGU@E`dsmT@pROEj\\t1.18\\nsKQ@@eKcUPCCSGdP\\t1.18\\nqCr@PISRAxe`\\t1.18\\nHknL`IaM@HrRFIKISaV@Bf@A`qTwR_H@\\t1.18\\nHk^@@@RiU{Vntzjh@H@FBpfEPrngrN@\\t1.18\\nHifL@NBaReYrZjjh@XMaTwCqHP\\t1.18\\nHcLD@@kIEMDdcttDDT@CAdIae^Qh\\t1.18\\nsJY@LDejhAaaEqX`\\t1.18\\nsNp`@df]Zj@XKGbk@\\t1.18\\nqC`@ISTAaAsQX\\t1.18\\nJoba@FCBJzUSsZoSCiwUUTuMP@XTaR]|Rn@\\t1.17\\nHeTLB@QdyInYqehH@@FETwCH\\t1.17\\nHaF@`FBHRYVkh@`@FE@fUwHX\\t1.17\\nHifH@NAJ[VXZ@H@A`RXw\\\\Pa@\\t1.17\\nHaE@@@qJYVnBB@@XTfEW\\\\a`\\t1.17\\nsFtHLPDISNmLpCCAWdH\\t1.17\\nj`qaB@GBAHILkmroQegP@SUUD@CBRLDiIVcVyCp\\t1.17\\nJoCDPCbD`drnwJtuo@AMUQ@AaJXURng_H\\\\\\t1.17\\nHkoD`LDxP@cIIBhdmeuZ`PH@FGXwCJgrJ@\\t1.17\\nHg]L`LnDD@cIIBhhd]ikTC@P@LF[iW[yF@\\t1.17\\nHmvDRLa@BJbL{IIBidiUZ`@@AaUMpsrE@\\t1.17\\nHg^L@DAaRUf^uNvjj@@@FBiaTprngqHl\\t1.17\\nJoBD@@ILvnroC[m@A@@@@XRUMrz]orL@\\t1.17\\nHo\\x7FH@DVpRYYU]YujBBJ`@XJaTwCIv\\x7FHT\\t1.17\\nHo}D@ElDRYYU]YujBBJ`@XRUMpr]orE@\\t1.17\\nHcOD`LWXP@cIIKDedLkP@R@C@j[axfZ\\t1.17\\nHcND@FATfYev]jB``@FDaFEWCJ|Qm@\\t1.17\\nHcLD@NGIIDcDYBUULu@CChSBY]y@`\\t1.17\\nHeTHPBBlzlRYgea``b@AaPXWCrI@\\t1.17\\nHmtH@ArRQHiRDjjVh@X]BXURoHX\\t1.17\\nHeVH@IAIfu~Fh@H@FCAATw\\\\SI@\\t1.17\\nHidH`ABHRYWZZ@B`@XLBXUCrN@\\t1.17\\nHeV@@@RYyTYj`@@A`HIeMpsrH@\\t1.17\\nHeTD@@qIUeQej@@@FCIS\\\\L|b@\\t1.17\\nHid@@LddUTaJjZ`A`tXU\\\\OHP\\t1.17\\nHaFH@BAIf]n``@@XDFTwDK`\\t1.17\\nsNx@HeTuUPC@kU|a@\\t1.17\\nsKP@DjTZj@XDQGdp\\t1.17\\nsGX@@eSUT@pJqoI@\\t1.17\\nQO@HyjA`erP\\t1.17\\nHeTD@@QIemQej@@@FATwCqBd\\t1.17\\nQM`AIdGfR\\t1.17\\nRG@DXLJy@\\t1.17\\nj`qA@@@YHihhhdd]Nmzj@B@@@@XZ`s`iJtZso\\\\``\\t1.16\\nj`qa@@F@RYV{m^gKN`BJ@B@@FB`HqSbmFm{dI@\\t1.16\\nJgB@P@AFRJJJIIFad}n`@`@`@CBPIne]N~PH\\t1.16\\nHg]DrBX{BlFlVlodfYn\\x7FnfBHbf@Aa`BoDI`\\t1.16\\nJoBD@@YEEEEDdbmf}P@P@@@FFqS\\\\Lkiv\\x7FH@\\t1.16\\nJoBP@@XUYHhhceDdwVxEAP@@@FCEWBn|p{\\\\\\t1.16\\nHg^HpBLJrZsZqIfVYYe``jI`@XT@sm|SE@\\t1.16\\nHg|@@LdbbRLrSB]aDP@@@CATJfFUt{yF@\\t1.16\\nJoCD@C@drm|kuqw@DP@P@A`hIe]Jz[|a`\\t1.16\\nHg\\x7F@@@qdigvU|kSZj`@h@FDiaTLkm|a`\\t1.16\\nHkmD@ELDrJIQIIF]Z``b@AaqTwCI|aP\\t1.16\\nHeWD`LjXP@cIHUDdLkP@@@pSFy`\\\\H\\t1.16\\nHmtD`NTHaIe]Vf`@jP@XLBXUCrI@\\t1.16\\nHeVD`La@BLddlRPrm@@@CCLj^XwB\\t1.16\\nHcLD@@QIeeUgVhHH@AaqTwCN|aP\\t1.16\\nHeTH`BBHRYeUa``b@A`PYP|Si@\\t1.16\\nHmvH@DAIge\\\\YZ`@`@XLfTwCrE@\\t1.16\\nHeVD@DBTeYWxV`@`@XLaTwSrH@\\t1.16\\nHeUD@LdDRY[TYZjj`A`UMp|Pi@\\t1.16\\nHidH`BBHRYgVzB@`@XDFUwDHP\\t1.16\\nHeTH@@RV[TYZ`@@A`qTwCODa@\\t1.16\\nHid@@LddRL[jjj`AatIaUp|a`\\t1.16\\nHeVD@FADfygFV``@@XEWCODQ`\\t1.16\\nHeVH@IAJ[WVz`@h@FCIaTp|bP\\t1.16\\nHiT@@DjUfa[``hH@X]BXULOHx\\t1.16\\nHieD@LDDR[e^Ejjh@XDUMwDPP\\t1.16\\nHidH@@RYm^Fh@@@XLDESCqLx\\t1.16\\nHieH@DXDfyWaZ@@@FAEWCrD@\\t1.16\\nHaDH@HRjw[jjj@FCPfTw\\\\``\\t1.16\\nHaF@@@RiUkjjj@FEPaTwDs`\\t1.16\\nHaD@@DjWzZjj`A`pPaUwDq`\\t1.16\\nKAxH@@bRjsUT@XUaTw\\\\b@\\t1.16\\nsOq@@drm]UT@pXVM_I@\\t1.16\\nqChPK@HRUhCAA\\\\Tp\\t1.16\\nsJYiCE`D[h}Z@^P`\\t1.16\\nsJX`LDdvu@LEcrH\\t1.16\\nsGX@@dk]T@pvMyD\\t1.16\\nsJPa@erS[T@|VH\\t1.16\\nHaDD@@IIf]n``@@XDFEwDi`\\t1.15\\nHidD@@IIf][hHB@AafUwL@a@\\t1.15\\nHiDHPHApiprRQVRjj`A`rXS\\\\H\\t1.15\\nsJ\\\\@@ldru@LLEnP`\\t1.14\\nsJQ@@dsU@LLEnJD\\t1.14\\nQMPARVAaGFP\\t1.14\\nqCb@AIZpLDMrP\\t1.13\\nHaD@P@bNbDfUZZ@B@AaPHS]rL@\\t1.13\\nHaD@@DjUZxHH@AadIgBJfx\\t1.13\\nqCp@AIj`LMEnP@\\t1.13\\nKA|P@HBS[KUT@XDUMwDS@\\t1.12\\nsKP@Di\\\\Zj@XDQ[dH\\t1.12\\nHidH@@Rfy^F`H@@XDU\\\\ODQ`\\t1.11\\nsNu@EPdrsUPCCKWbK@\\t1.11\\nHaDH@@RYe[hB@@FAXS]q@h\\t1.11\\nHaDH@@RVU[f@@@FFTw\\\\rLH\\t1.11\\nsGP@Divj`FFBoMLP\\t1.1\\nsKT@Adi\\\\Vf@XFKD\\t1.1\\nKAxD@Ae\\\\dmvuU@FEIaUwDa`\\t1.1\\nqCx@AYIf`LHNIX\\t1.1\\nHeTH@@rQSIPmu@AP@LBSNGfDt`\\t1.09\\nHidD@@EIYW[j@B@A`PXU\\\\rFD\\t1.09\\nsGX`LJdmuT@pHboEb\\t1.09\\nsJX@@eMU@LBHmrD\\t1.09\\nsJP@DkVhAaacqQ@\\t1.09\\nHeTD@@IIf]vzB@h@FCAaUp|bP\\t1.09\\nsKT@Adi\\\\Vf@XZH|f@\\t1.09\\nHid@P@kAkDfUff`@h@FA@cCqLx\\t1.09\\nqCx@AYIf`LDErX\\t1.09\\nHifH@DAIVUxV`@@AaRES]qHD\\t1.09\\nsJX@@eKU@LCEcr@\\t1.09\\nHaF@@@RYe[hB@@FEXUMwH@\\t1.08\\nsGX@@eNuT@phfMyD\\t1.08\\nHaD@P@qFqDfUjz@H@A`PIc\\\\Rn@\\t1.07\\nsKX@@eKcUPC@qX|`@\\t1.07\\nHif@@@Rge^Fh@@@XMATwCq@P\\t1.07\\nqCa@CIJtAaEqS@\\t1.07\\nqCb@AIV`OME`\\t1.07\\nHmtB@@zURVUgXV@Hh@FEXWRoH`\\t1.06\\nqCp@AJZ`LLEnR@\\t1.06\\nHidH@@Rfuvz`@`@XDfTwDHP\\t1.06\\nHg|@@DjYV}~T{`d@@@@FBic\\\\LkiwrJ@\\t1.06\\nHidH@@RfU~F``@@XEaMwLRa@\\t1.06\\nHidH@@RYWZZ@B`@XTBXU\\\\Sa@\\t1.06\\nsJP`@TeVhA`d^JX\\t1.06\\nHcNJ@MCNeTify^ajjjj@FBpaTwCJ{rL@\\t1.05\\nHmvB@EAaeJYY^njjjh@XSFES\\\\LkrD@\\t1.05\\nHk\\\\D@@iIYgU^GSXH@@@@XLURngqHX\\t1.05\\nHmLH@@RYVuiiV@@@@@XLE\\\\LkqDp\\t1.05\\nsFq@@eLzuU@LCEkrD\\t1.05\\nHaDH@@Rfu[j@@@FFIW\\\\sBX\\t1.04\\nsGU@E`dsmT@pQoDl\\t1.04\\nHaFH@NAIe^f`@`@XDfEWDC`\\t1.04\\nsGU@EPdrmT@pRoEb\\t1.04\\n`IJpCr@\\t1.04\\nqCp@AIZ`LHnXS@\\t1.04\\nQM@HzAyd`\\t1.04\\nsNx@@eJ}UPCBqZobA@\\t1.03\\nsNq`@fdvkUHCAX|Rh\\t1.03\\nsJX@@dkU@LMEnHD\\t1.03\\nqCp@AIZ`LEMqA@\\t1.02\\nsGPXHlPDYIHUj@XP|e@\\t1.01\\nsOx@@drm\\\\@@@pQoBEf\\t1.01\\nsGT`EPTfyi`GbU@\\t1.01\\nqCpB@RduPFFbwH@\\t1.01\\nHefDB@XPgIIETiUUL@LJaLJnQH\\t1.01\\nHidD@@iJ[gxZB@@A`RDp|Rn@\\t1.01\\nsNyA@qNRRJuU@LCEcqU`\\t1.01\\nsGU@EPdvmT@pRwDZ\\t1\\nsJX@@eOU@LBHmrD\\t1\\nHeVH@DAIYmQej@@@FETwCOD``\\t1\\nHeTD@@iJ[e^f```@FEHS\\\\OHd\\t1\\nsOpHADILkW@@@LBDWqZ`\\t1\\nHaDH@@RYWih@H@FA@aUqLx\\t1\\nHidH@@RYm^Eh@@@XDUMwDpP\\t1\\nsOpHAHILkW@@@LBl[rL\\t1\\nsFy@DDfTujhAaekrD\\t0.99\\nsKX@@eKcUPCCCGbb@\\t0.99\\nqCb@AIZ`LDMqQ@\\t0.99\\nHg|@`@bLbbbRLRS\\\\]pDD@@@CAPpfzUt{yE@\\t0.98\\nHklJ@@R]MIemYqUj@Hh@FETtz_HH\\t0.98\\nHeTH`ABHRYWZf`@f@AaPIaUrI@\\t0.98\\nHcLD@@eJ[V][j@Bj@AaRYp{qBT\\t0.98\\nHie@@@QInUxV`@@A`pHUMwHD\\t0.98\\nKA|P@HBSMkUT@XDUMwHp\\t0.98\\nsNx@@eLuUPCBbKWbK@\\t0.98\\nsNx@@eJmUPCAqXu|`@\\t0.98\\nqC`@IVtA`enHP\\t0.98\\nsNyABCJSOUU@LJHj~KD\\t0.98\\nsGQ`@bdwMT@prqyJ\\t0.98\\nJoBD@DIU\\\\vjzv[uP@@@@@X[EMprng[|``\\t0.98\\nHg|H@@RYfUWd}nh@@@@@XZATwCJz]|b@\\t0.98\\nHmTFB@PfETyIn{mjjj@FGXUMpkrI@\\t0.97\\nqCbPPABUm@XI[d@\\t0.97\\nKAxDD@S]wILsuUPAaPPaMqLh\\t0.97\\nsNx`JDdrkUPCAE|Vh\\t0.97\\nHaD@@DjUZxHD@AaTXU]qDX\\t0.97\\nHidH@@RUe^Fh@@@X\\\\DES\\\\OHP\\t0.97\\nHaDH@@Rfu[j@@@FAIeMqBx\\t0.97\\nsGX`DJdjmR@pbyib\\t0.97\\nHaD@P@kNkDfUZZ@B@A`PHw\\\\SB@\\t0.96\\nHiFDB@XPgIIETjji@FEPfEWHx\\t0.96\\nJoCF@F``iLkJ|jz]mUUUUP@XJUMpriv\\x7FHp\\t0.95\\nHg^D@E@TfUvujZ@Bjj@AahHU\\\\LkiwrL@\\t0.95\\nHmtD@@eIfUTUjBB@@XBDES\\\\L|SE@\\t0.95\\nHmvD@LATenUqej@B@AarYS\\\\J|b@\\t0.95\\nHeVH`NdHaIe]ZZ@Bd@FC@fEW\\\\`P\\t0.95\\nHif@@@rRJEKajjj@FGPaTwCrL@\\t0.95\\nHmtD@@QImYVUZX@@@XTwCJ|qLH\\t0.95\\nHeTH@@RfUWihHH@AaVES]sDFP\\t0.95\\nHifH@AAIe]ih@J@A`pIaTOHx\\t0.95\\nHidD@@iIYgxVB@@A`QTw\\\\RA@\\t0.95\\nHaFD@DCdeeVyjj`A`VES\\\\b@\\t0.95\\nsOp@DiUkjj`FCDVMyF\\t0.95\\nsJPhH`DYIBm@LEcr@\\t0.95\\nHeTH@@rQSIPmu@AP@LJSFx^HT`\\t0.95\\nHeT@pHdDdLdLddlRPsU@@@CCJF^Hw@\\t0.95\\nKA|PD@pSddbljj`CAhSBinQp\\t0.95\\nHaDH@@RYe[hB@@FAAaMqJx\\t0.95\\nsJY@LDeZhAaaMqH`\\t0.95\\nHcNH@DAIevUWVj`@@AarUprn|SB@\\t0.95\\nsGP@DiUiPFADVxcP\\t0.95\\nsJT@@TizhAaaMqH`\\t0.95\\nqCr@HIJtAyhl\\t0.95\\nsOx@@drm\\\\@@@pJq_DJ\\t0.94\\nsGQ@@dsUT@ppQyij\\t0.94\\nsGU@DPdwMT@pVODj\\t0.94\\nqCp@AIZ`LInXQ@\\t0.94\\nJoB@@BUJssoPvxPTA@@@FFpaTLkiv\\x7FDs`\\t0.93\\nHidHPBBlzlRYgfFBB@@XDF\\\\ODI`\\t0.93\\nHmvH@AAIYWYnX@J`@XMaTtkrH@\\t0.93\\nHidL@@IdfYoa`b@@FE@UMwHD\\t0.93\\nsFt@ATiTvjhA`qEcP\\t0.93\\nsNy@DDeeZj@XGFod`\\t0.93\\nsOx@@drm\\\\@@@prMyaf\\t0.93\\nsGP`@dfuj`FBVxcP\\t0.93\\nHaDH@@Rfu[j@@@FAXUMqDx\\t0.93\\nsGY@LDeVj`FABqxiP\\t0.92\\nHcND`La@BLddJfRtjmP@P@LFqnF]yE@\\t0.92\\nsGU@EPdrmT@pRwDZ\\t0.92\\nsGQ@@djmT@pruxhP\\t0.92\\nqCp@AJZ`LInXQ@\\t0.92\\nqC`@IRtAaAsQX\\t0.92\\nqCbPXABRt`^XQ@\\t0.91\\nqC`HBHTPduPFFDWI`\\t0.91\\nHid@@DjU^nBBH@FCPaUp|SF@\\t0.91\\nQMPARZAaGFP\\t0.91\\n`IH`CB@\\t0.91\\nQM`BN`XQqd\\t0.91\\nKAzH@IP\\\\dvjuT`FFIe\\\\Pf@\\t0.9\\nsNqaIV~RjzjXAaIqX`\\t0.9\\nsGY@DDeUj`FBQyij\\t0.9\\nsJY@DDeVhAaEsSD\\t0.9\\nsJY@LDejhAa`cqS@\\t0.89\\nHidH@@Rfuvz`@`@XEaTwDPP\\t0.89\\nsJQ@@eMU@LEEqX`\\t0.89\\nsJQ@@dsU@LLHnKD\\t0.89\\nsJQ@@dju@LH^ZK@\\t0.89\\nHiDJB@PfENR[nvjj@FEXULOHx\\t0.88\\nHidH@@RfU~F``@@XDfDwLka@\\t0.88\\nHaD@`@dDfYVz@`@A`VDw\\\\b`\\t0.88\\nKA|H@TBILlmUPAafEwDi`\\t0.88\\nsNp`@dfUZf@XHobu@\\t0.88\\nqCp@AIj`LLEnR@\\t0.88\\nHeV@@@rRHqICMT@@@LFbfxYxbX\\t0.88\\nHmvH@LAI[YVUZh@@@X\\\\aMproDc@\\t0.88\\nsKXHB@aJWFe`FFDwH`\\t0.87\\nHidD@@iIYgxVB@@A`QMp|RJ@\\t0.87\\nsOpHADILkW@@@LBEWqX`\\t0.87\\nHmtD@@UIUe\\\\YZ`@`@XMeMpkqHP\\t0.87\\nsJX@@eKU@LLL^JH\\t0.87\\nsJQ@@dsU@LLH^IX\\t0.87\\nHkLNCHiiWS[ex~rRSQHqRjZfX@XYFD\\t0.86\\nHmn@@HRjuYX^gejjjj`A`lIaTwCJ`\\t0.86\\nHedJA@RaeNgdfvvZjf@FFYS\\\\``\\t0.86\\nHefDB@XPgIIETiUUL@LJaLJ^QP\\t0.86\\nHif@@@Rge^Fh@@@XLDES]qDD\\t0.86\\nsGPBIHJPtaXcIIKUPCBWdH\\t0.86\\nsNq@GddbmUHC@qX|e@\\t0.86\\nsGY@LDefj`FABqxiP\\t0.86\\nsNx@HeTuUPCCKGbk@\\t0.86\\nsNp`@dfvZj@XGFodP\\t0.86\\nsGX@HeTuT@prqxiP\\t0.86\\nsJPH@DILuPCAQ\\\\pq@\\t0.86\\nsJY@BDfZhAaaMqH`\\t0.86\\nsNp`@dfUZj@XHwbs@\\t0.86\\nsJQ@@dmU@LLEnJD\\t0.86\\nsJX@@dkU@LCEcr@\\t0.85\\nsJXhMD@cIHUhAyab\\t0.85\\nsJT@@TizhA`h^XK@\\t0.84\\nqCh@BIWLAaMqQ@\\t0.84\\nqCj@KAIf`LHnS@\\t0.84\\nHmN@@@RfUWrnf`Pb`@X\\\\BDwCOHT\\t0.84\\nsOq@@drm\\\\@@@pHQoEf\\t0.84\\nsGQ`@jdjmT@pVOEJ\\t0.83\\nsGQLKIARFdLddmU@LH^R`\\t0.83\\nsJXhMD@cIHUhAaCqC@\\t0.83\\nHaF@@@Rfu[j@@@FEAaTwDS`\\t0.83\\nsJQ@@dmU@LLl^HP\\t0.82\\nsJU@DPdvu@LH^IX\\t0.82\\nsJY@DDfvhAaCqK@\\t0.82\\nsJP`@TeVdAyhl\\t0.82\\nHcLJ@@PUuInUgzV`BJ@AaQTJ{rD@\\t0.81\\nsOxA@IRi^lH@@XVHu|f@\\t0.81\\nsOpHADILkW@@@LBCWqK@\\t0.81\\nsNp`@deVZj@X[U|TH\\t0.81\\nsNp`@deYZj@X[F|TX\\t0.81\\nsJX@@eKU@LML^HH\\t0.81\\nHaDH@@RYVih@H@FE@fTwHx\\t0.81\\nsFx@@eLzuU@LBIkqH`\\t0.81\\nsJQ@@dlu@LDmqP`\\t0.81\\nqCr@XIKTA``nJX\\t0.81\\nsJQ@@djs@LDmqP`\\t0.81\\nqCr@HIJtAaEqS@\\t0.81\\nHmTJ@@IaUIf[njjj@FBaBXUMpkrI@\\t0.8\\nHedJ@@IaeIf[zjj`AaHPfESCOHx\\t0.8\\nsGXhMD@cIHXmPCs@t\\t0.8\\nHeV@@@Re[TYj`@@AatIS\\\\L|PB@\\t0.8\\nqCb@AIf`ODl\\t0.8\\nHedJAHiaenglddtUeTtp@pRLyA@\\t0.79\\nsJY@DDeVhA`inID\\t0.79\\nsJX@@dku@LInID\\t0.79\\nsFp@DjTvjhAaQD[rX\\t0.79\\nsGP`@deYj`FBqxiP\\t0.79\\nHiF@@@RifZjj@FGPfES]rA@\\t0.79\\nqCa@CIJtAyhl\\t0.79\\nsFp`@dfTujXA`l^R`\\t0.78\\nsNp`@dfyZj@XEXodh\\t0.78\\nsGP`@dfyj`FFVOIP\\t0.78\\n`IHPCr@\\t0.78\\nsG\\\\@@ldsmT@pHVOIP\\t0.78\\nHaDH@@RVU[j@@@FAAaUsH[`\\t0.78\\nQMhDRVAxr\\t0.78\\nHeTHPBBlzlRYgea``b@A`PYp|Pi@\\t0.77\\nHmtD@@QIee^UZ``@@XLULLkrN@\\t0.77\\nsGQa@bnR[fj@XP|Vh\\t0.77\\nQO@HyjAaGFP\\t0.77\\nsGX@@eNuT@pLqoDD\\t0.77\\nsNq`@fdvkUPCCKObM@\\t0.77\\nsOx@@drm\\\\@@@phVMyF\\t0.77\\nsJX`DBdjt`LHnJX\\t0.77\\nKAxD@@c\\\\dvluS@FFIg\\\\``\\t0.76\\nHaDD@@IIf]n``@@XYeMs@K`\\t0.76\\nsOp@DjWkB@@FBaxUjp\\t0.76\\nHaDH@@RVU[j@@@FCAaTw\\\\b@\\t0.76\\nsJX`DBdvt`ODl\\t0.75\\nHidH@@RVUvy`@`@XUaTp|b@\\t0.75\\nqCp@AJZ`LLInQ@\\t0.75\\nsOp`Hdjekjj`FBqxjp\\t0.75\\nqCb@AIVPLHnJX\\t0.75\\nHeTB@@sirQQSRtMUUT@LNaB[agbYP\\t0.74\\nsGQ`@jdvmT@pQoDl\\t0.74\\nsNx`DJdjsUPC@hu|Tp\\t0.74\\nsOq@@drm\\\\@@@pHU_Eb\\t0.74\\nHidD@@QInUxV`@@A`QTw\\\\QA@\\t0.74\\nHaDH@@Rfu[j@@@FEXUMwHP\\t0.74\\nsOq@@drm\\\\@@@pRoBLV\\t0.74\\nHaD@@DjUZxHH@A`tIaUwHX\\t0.74\\nHeVH@AAIYWVy`@h@FEXULODbP\\t0.73\\nsNx@AddQUUPC@pu|Rp\\t0.73\\nsJP`@TeVhA`l^JH\\t0.73\\nHmt@pHdDdLdLddlRTFZh@H@FATpsrE@\\t0.73\\nsJT@@deVhAa`mqP`\\t0.73\\nsOq@@drm\\\\@@@pROBMV\\t0.73\\nqCr@XIKTA`aNIX\\t0.73\\nHidHPBBlzlRYgfFBB@@XTFEp|a`\\t0.72\\nHiDJA@PnENGdf{Yji`A`aUrL@\\t0.72\\nHeUH@DdDfyWxV`@`@XDUMwDRP\\t0.72\\nsJY@LDeZhA`QEnP`\\t0.72\\nsNqa@jnR[YjhA`m^Hl\\t0.72\\nsJY@LDeZhAaaEqX`\\t0.72\\nsOp@DjWkB@@FFbOMjp\\t0.72\\nqC`@ISTAaEsBX\\t0.72\\nsKP`Adi\\\\Zj@^ZH`\\t0.71\\nHidH@@RYWZZ@B`@XLBXU]rA@\\t0.71\\nsJQ`@bdvu@LDcrX\\t0.71\\nQM`BN`XL|`\\t0.71\\nqCb@AIZ`LDEqS@\\t0.71\\nKA|X@TB\\\\dvjuT`FFIe\\\\Pf@\\t0.7\\nsGY@DDeej`FBfxcP\\t0.7\\nsGXA@IRiZj@XVKF|`@\\t0.7\\nsJQhHl@cIHUhAaCr@\\t0.7\\nsJP`@TfZhAaacqQ@\\t0.69\\nHk\\\\H@@RfYU\\\\]Tz@@@@@F@xUMproDtp\\t0.69\\nHidD@@QInUxZ`@@AaQTwCs@a@\\t0.69\\nsOx@@eJ~MKT@ppeydV\\t0.69\\nsJY@DDfvhA`enP`\\t0.69\\nsGQ`@jdvmT@pRoEb\\t0.69\\nsGY@LDeZj`FFDWDZ\\t0.69\\nHaF@@@RVU[j@@@FEXUMwDB@\\t0.69\\nsGP`@df]j`FDwDZ\\t0.69\\nsOq@@drm\\\\@@@phVKyJ\\t0.67\\nHev@@@RfUWJzZABH@FC@aMt|`P\\t0.67\\nsJQ@@dju@LInZH`\\t0.67\\n`L@OH\\t0.67\\nqCp@AIZPLMEnP@\\t0.66\\nsJQ@@dsU@LDmsBD\\t0.66\\nsJP`@TizhA`h^IX\\t0.66\\nHaDH@@RYWih@H@FE@fEWHx\\t0.66\\nHaD@@DjUZxHH@AaTIaUqFx\\t0.66\\nqC`HBHTPduHFBByL\\t0.65\\nsJPXHlPDQzt@pfyB\\t0.65\\nsJU@DPdvu@LHnKD\\t0.65\\nqCbPXABRt`XR\\\\PP\\t0.65\\nHidH@@RfU~F``@@XTfMp|Pj@\\t0.65\\nsJP@DiVhA``nZX`\\t0.65\\nqCb@AIVPOME`\\t0.65\\nsJQ@@dkU@LEMsAD\\t0.64\\nsGP`@dfUj`FDoEb\\t0.64\\nsGY@DDfUj`FBVxcP\\t0.64\\nsGY@DDfuj`FDoLlP\\t0.64\\nsGX`BJdruT@pHboEb\\t0.63\\nHidDB@QNR[e^Eh@@@XDS\\\\OHh\\t0.63\\nsNu@DpdvkUPCCKGbk@\\t0.63\\nsJT@AdiZhA``^ZK@\\t0.63\\nsGQa@jnR[Vj@XKWdH\\t0.63\\nsGP`@dfuj`FBMxe`\\t0.63\\nsGP`@df]j`FBqyJ\\t0.62\\nHeTH@@RfU\\x7FahHB@AaRXS]qJd\\t0.62\\nHaDH@@Rfu[j@@@FAYS]qDH\\t0.62\\nRG@DTLHyP\\t0.62\\nsGQ@@druT@pHbwDZ\\t0.62\\nsJPXHlPDQzt@pVH\\t0.62\\nHid@P@bNbDfYYa`H`@FEAc\\\\OHh\\t0.61\\nsOq@@drm\\\\@@@pqky`l\\t0.61\\nqCaPQ@HRmhCB[d@\\t0.61\\nQM@HvAyd`\\t0.61\\nHifH@AAIYW[f@B@A`VES\\\\RA@\\t0.6\\nsFx@@eJxtm@LDIsHt\\t0.6\\nsOq@@drm\\\\@@@pJM_DL\\t0.6\\nHmtB`HSBCprRSFIJUZh@@@XMaMpsrE@\\t0.59\\nHeTDPAdHc`aIe]jZ@BT@FE@fEWHx\\t0.59\\nHeV@@@rRJEK\\\\MP@P@LJJfz^Hf@\\t0.59\\nHif@@@Rfuvz`@`@XUaTp|PD@\\t0.59\\nqCcPQXPd]hCAK\\\\`@\\t0.59\\nsGU@DPdwMT@pVoDb\\t0.59\\nsGY@DDfuj`FFVOIP\\t0.59\\nsJP@DizhAa`mqP`\\t0.58\\nsGP`ATeUfPFBVxhP\\t0.58\\nqCp@AJZ`LDIqK@\\t0.58\\nHaDH@@RYVih@H@FFIS\\\\pLx\\t0.57\\nQMPARVA`cr`\\t0.57\\nHidH@@Rge^Fh@@@XTUMp|RD@\\t0.57\\nsOq@@drm\\\\@@@ppSylZ\\t0.56\\nHmvH@DAIUYVUZh@@@X\\\\aMproDc@\\t0.56\\nQMPARZAyd`\\t0.56\\nHmvH@FCHhhhdYVhJ@@AaHQaUproHX\\t0.55\\nHiF@@@ReUZjj@F@pfES\\\\OH@\\t0.55\\nHid@@LdbRQk``b@AaTHUCqLX\\t0.55\\nsNxA@IrRQVjhA`Xl^Jl\\t0.55\\nHiV@@@RfU|kahDB@A`pHS\\\\OHh\\t0.54\\nsFx@@eJf`@@LCL[rH\\t0.54\\nsFx@@eJf`@@LMM^ID\\t0.54\\nHaDH@@Rfu[j@@@FAIaUqFx\\t0.54\\nHaDH@@RYWih@H@FAIaUq@x\\t0.54\\nHifH@JAIYgxVB@@A`QMp|RJ@\\t0.53\\nsGYALMJRmUPC@aF|Tp\\t0.53\\nqCp@AIj`LDEqS@\\t0.53\\nsN|@@ldskUPCBaXwdX\\t0.53\\nHid@@DjU^nBBH@FGPfES]rA@\\t0.53\\nHaF@@@RVU[j@@@FCQaTw\\\\`@\\t0.53\\nsGQ@@druT@pHboEb\\t0.52\\nHidH@@Rge^Fh@@@XDUMwLaA@\\t0.52\\nsJP@DjYdA`inID\\t0.51\\nHifH@DAInUxV`@@A`QTw\\\\QA@\\t0.51\\nsGU@E`drmT@pbylZ\\t0.51\\nsOq@@drm\\\\@@@pJqoDF\\t0.51\\nKAxD@Ae\\\\dmvuT`FAIaUqHX\\t0.5\\nsGP`@dfuj`FBUxlP\\t0.5\\nqC`P@HRfhCAB\\\\Rp\\t0.5\\nsOpH@DILkW@@@LBl[qA`\\t0.5\\nqC`@ISTA`anJH\\t0.5\\nsGY@DDfUj`FBqxeP\\t0.49\\nHiDB@@IaRYfzjj@F@aBXULOHx\\t0.49\\nKAxD@@S\\\\dsOUU@FGABXS]rJ@\\t0.49\\nsJP@DiYXAaaEqX`\\t0.49\\nsJQ@@dru@LHnKD\\t0.49\\nqCa@CIJtAaMqQ@\\t0.49\\nHidD`HP@cIHXdnEX@@@XDUMwD@P\\t0.49\\nHaDH@@RYe[hB@@FEAaMwHh\\t0.48\\nsJU@E`dru@LHnKD\\t0.48\\nsGP`@df]j`FDOEj\\t0.48\\nKAxD@@c\\\\dvluS@FBIwDp`\\t0.47\\nsGX@@dkUT@pJqoDH\\t0.47\\nqCa@CIKTA``nJX\\t0.47\\nsNu@DPdwKUPCCXwbS@\\t0.46\\nHif@@@RUe^Fh@@@X\\\\BES\\\\OH`\\t0.46\\nsGP`ATeejPFDWMLP\\t0.46\\nRFD@QFCBnP\\t0.46\\nsOq@@drm\\\\@@@phVMyF\\t0.46\\nQM@HzAaWDP\\t0.45\\nQMBBHRYAaGFP\\t0.44\\nsOq@@drm\\\\@@@prqyaV\\t0.44\\nsGQ@@djmT@pVoMDP\\t0.44\\nqCaBAKdfZ@|f@\\t0.44\\nRFD@QFCqH\\t0.44\\nsJY@DDfVhAaCqK@\\t0.43\\nQMPARVAyd`\\t0.43\\nqC`@Qz`LDIqK@\\t0.43\\nHmv@B@B\\\\ddUbReZj@@@F@pfMproHH\\t0.42\\nsNy@LDeYjj@XDQGbk@\\t0.42\\nHaD@@DjUZxHD@AaTHU]qLX\\t0.42\\nHaDH@@RVU[j@@@FEXUMwDB@\\t0.42\\nqCr@XIKTAaAsQX\\t0.42\\nqCb@AIZ`LHnXS@\\t0.42\\nqCb@AIZ`LHNZK@\\t0.42\\nsOx@@eLmXD@@pJu_HP\\t0.41\\nsGY@DDfUj`FBUxlP\\t0.41\\nsGY@LDeVj`FADQxmP\\t0.41\\nsGT`EaTf]jPFDWEb\\t0.41\\nHaDH@@RVU[j@@@FEAaTwDc`\\t0.41\\nsOp@DjWkB@@FBbx\\\\Zp\\t0.41\\nsJP`@dfVhAaMrD\\t0.41\\nqC`@ISJA`aNIX\\t0.41\\nRG@DTOD`\\t0.41\\nsOp@DjWkB@@FAbMxlp\\t0.41\\nHidH@@RUe^Eh@@@XLaTwCrH@\\t0.4\\nsOq@@drm\\\\@@@pJq_DJ\\t0.4\\nQMhDRVAaWI@\\t0.4\\nsJPa@erS[T@pfyB\\t0.4\\nHeTH@@RUYTYZ`@@A`vTwCODa@\\t0.4\\nHidH@@Rfufz`@`@XDfMwDHP\\t0.39\\nHiD@@LddUdjjh@XMBXS]rA@\\t0.39\\nsJQ@@dkU@LLEnJD\\t0.39\\nsJP`@dfvhAyeb\\t0.39\\nsGY@DDeej`FDOMMP\\t0.38\\nqCa@AIMTAaIsAX\\t0.38\\nHaDD@@IIf]n``@@XEeMwD@`\\t0.37\\nsOp@DjWkB@@FEbM_I`\\t0.37\\nRF@QP|R@\\t0.37\\nsJY@DDefhA`l^R@\\t0.36\\nqCb@AIj`LINXK@\\t0.36\\nQMHAIhFD\\\\Y@\\t0.36\\n`Ib`hFD\\t0.35\\nHg|@@DjU_eZx{BAH@@@FBpaUtkiwqLX\\t0.35\\nsNp`@df^Zj@XKGbk@\\t0.35\\nHaDH@@RVU[j@@@FAXUMs@c`\\t0.35\\nQMHAIXGcH\\t0.35\\nqCaBC[dej@p`xh`\\t0.34\\nsJY@DDfVhA`enP`\\t0.34\\nKAxP`PCaSaddbljj`CBdpf{dT\\t0.34\\nHid@@DjU^nBBH@FCPfEW\\\\Qa@\\t0.34\\nHaDH@@RVU[f@@@FAXUMqHx\\t0.34\\nqCpB@SGj@pTWDL\\t0.34\\nHk\\\\@@DjU^ukmLHH@@@A`lHU\\\\Lki|c@\\t0.34\\nqCb@AJZ`OME`\\t0.34\\n`IlQpFD\\t0.33\\nHg|@@LdbRbtJUB]aAP@@@CAXPjFUt{xf\\\\\\t0.33\\nsFp@DiTt@@AaaCsKT\\t0.33\\nRFDDQFCBNT\\t0.33\\nsJP@DizhA`Pl^R@\\t0.31\\nsJP`@dfvhAaCqK@\\t0.31\\nqCb@AIj`LDIqK@\\t0.31\\nHidD@@iJ[gxZB@@A`QMp|QJ@\\t0.3\\nKA|P@HBRjsUT@XTaTw\\\\RL@\\t0.3\\nHeVD`Ia@BLdabRwBl@D@C@binx`R\\t0.3\\nsGP`@dfUj`FDOEj\\t0.3\\nsFp@DiTt@@A`QC^IX\\t0.3\\nsJPYHlPDGh}Z@^S@\\t0.29\\nqCp@AI^`ODl\\t0.29\\nsFp@DiTt@@A`anFHt\\t0.29\\nQM`AIXGfR\\t0.29\\nQOHBNZ`^L`\\t0.28\\nHidD@@QInUxV`@@AaQTwCrD@\\t0.28\\nsKX@@eKcRpCAB\\\\rq@\\t0.28\\nKAxD@@S\\\\dsOUU@FCABDw\\\\SJ@\\t0.28\\nsJP@DiZhAaaCqK@\\t0.28\\nQMPARVAaOD`\\t0.27\\nQM@H~AaWI@\\t0.27\\nsJQ@@dlu@LEcqQ@\\t0.26\\nsJP`AdizhAyhb\\t0.26\\nHid@@DjU^nBBH@FCPfES\\\\Sa@\\t0.25\\nHeTD@@QIemQej@@@FETwCOHH\\t0.25\\nqCr@HILtAaMrH\\t0.25\\nHid@@LdbRQk``b@AaTHUMqLD\\t0.24\\nsNq`AjdmsUPC@kF|TX\\t0.24\\nsGQ`AjdmmT@pruxhP\\t0.24\\nsGU@E`drmT@pRwDZ\\t0.24\\nsFp@DiTt@@A`a^FKD\\t0.24\\nQMHAIhGfR\\t0.24\\nsJY@DDeVhA`enJD\\t0.23\\nQMHBN`XUrP\\t0.23\\nqCa@CISTAyhl\\t0.22\\nQM@HvAaGFP\\t0.22\\nsJX@IGuPCAK\\\\TH\\t0.21\\nqC`HBHtPdmPFBFxh`\\t0.21\\nsGX`DJdjmR@pRwEB\\t0.2\\nqCj@KAIf`ODl\\t0.2\\nHaDH@@Rfu[j@@@FFXU\\\\qFx\\t0.19\\nHaF@@@RYWih@H@FE@fEWHx\\t0.19\\nsJQ@@eOU@LECqK@\\t0.19\\nqCr@HIJtAaMqQ@\\t0.19\\nRF@Q`|R@\\t0.19\\nsOq@@drm\\\\@@@pjqky@\\t0.18\\nQMDa^RVAyP\\t0.18\\nqC`@IRtA`aNIX\\t0.18\\nRFPDTNJlNT\\t0.18\\nRFPDTOJ@\\t0.18\\nQM`AIhFBOJ@\\t0.17\\nHidH@@RYm^Fh@@@X\\\\DES\\\\OHp\\t0.17\\nsJY@DDefhAaMqP`\\t0.17\\nsOx@@drm\\\\@@@pjqky@\\t0.17\\nqCcPQXAD]XCB[d@\\t0.15\\nQMFI@bM`XSr@\\t0.14\\nsFp@DiTt@@AaaEsXt\\t0.13\\nRFPDXLJy@\\t0.11\\nRFQAtXOJ@\\t0.09\\nRFPDXLHyP\\t0.09\\nqCb@AIV`LInJH\\t0.08\\n`H@^P\\t0.08\\nQMDARZAyd`\\t0.05\\n`I@`Cr@\\t0.05\\nsJXA@IczhAahmrD\\t0.03\\nsJP`@deVhAaMqP`\\t0.03\\nsJP`@TizhAaCsQX\\t0.01\\nsFp@DiTt@@A`QEnHt\\t-0.02\\nQMHBN`^L`\\t-0.02\\nqCa@CIKTAaAsQX\\t-0.03\\nQM`AIhFD\\\\Y@\\t-0.04\\nsGQ`@ZdruT@pHaoDl\\t-0.05\\nRG@DXLHyP\\t-0.05\\nsFp@DiTvjhAaacsQT\\t-0.06\\nRGAALXLJy@\\t-0.06\\nsJU@E`dru@OLlP\\t-0.08\\nHo|H@NrRQRqZZR]j``bh@FDiaMvg[|bP\\t-0.09\\nRFPDXOD`\\t-0.09\\nsOp@DjWkB@@FBexUbp\\t-0.1\\nqCb@AJZ`LHnJX\\t-0.1\\n`J@OH\\t-0.1\\nsJQ@@eKU@LECqK@\\t-0.11\\nsJX`BDdvu@LHnKD\\t-0.11\\nHk\\\\@@DjU^ukmLHH@@@AaLHU\\\\LkoDpp\\t-0.11\\nsFp@DiTvjhAaQEcrT\\t-0.11\\nsJP@DjZhAaaEqX`\\t-0.11\\nsJP`@dfVhAxlP\\t-0.11\\nqCb@AIZ`LINXK@\\t-0.13\\nsJPXHlQxQ{T@prq@\\t-0.14\\nsJP`@TeZhAaaCqK@\\t-0.14\\nsNq`@VdsMUPCBbHobu@\\t-0.14\\nQMDARZAaWDP\\t-0.15\\nHidB@@saRf]ZZjjh@XUEMp|qLH\\t-0.15\\nQMHAIXFD|h\\t-0.15\\nsGT@@Tivj`FADqxeP\\t-0.16\\nsJP@DjVhAahmrD\\t-0.16\\nqCa@CIKTA`anJH\\t-0.16\\nsFp@DiTt@@AaQEcrT\\t-0.16\\nsJP`@TfZhA`QD^S@\\t-0.18\\nsJPLIDJHtQGuPCCQ[dH\\t-0.18\\nsFp@DiTt@@A`QE^KD\\t-0.18\\nsJX@@eMU@LML^HH\\t-0.19\\nKA|@D@DyIHjjjh@pZDpj[d\\\\\\t-0.19\\nqCr@XIJtAaEqS@\\t-0.19\\nHaDH@@Rfu[j@@@FEIaTwHx\\t-0.2\\nqCp@AIZ`LDEqS@\\t-0.2\\nsOx@@drm\\\\@@@pJqoDF\\t-0.2\\nRF@Q`pce@\\t-0.2\\nHcl@@DjYU_egX@@@@@XRfES\\\\LkrM@\\t-0.21\\nsGP`@dfyj`FBVxcP\\t-0.21\\nqCa@AIJtAxi`\\t-0.21\\nsJX@@dmU@LLl^HP\\t-0.22\\nQMBBHRZAaGFP\\t-0.22\\nsGP@LdbKU@LCEcrT\\t-0.23\\nHaDH@@RVU[f@@@FEXUMwH`\\t-0.23\\nsNxA@IrRQVjhAaXl[rL\\t-0.24\\nQM@HvAaOD`\\t-0.24\\nsOp@DjWkB@@FAakxe`\\t-0.24\\nsGP@DiVj`FADUxlP\\t-0.25\\nqCb@AJZ`LInJH\\t-0.25\\nHaF@@@Rfu[jjj@FGAFES]rD@\\t-0.27\\nsNyA@qNRRJuU@LKEc^Q`\\t-0.27\\nKAx@@YIDTjjh@pxHSBknPp\\t-0.28\\nsFx@@eJf`@@LCEcrT\\t-0.28\\nqC`@ISTAa`mrP\\t-0.28\\nHaDH@@RYWih@H@FF@U\\\\qLx\\t-0.28\\nqCa@CIKTAaaMrH\\t-0.28\\nqCb@AIV`LHnJX\\t-0.28\\nHaF@@@RYWih@H@FAIaUq@x\\t-0.29\\nsJQ`@ldru@OEb\\t-0.3\\nsOx@@eJyh@P@pLVOHp\\t-0.32\\nHaD@@DjWzXHB@AaTIaUrN@\\t-0.32\\nKA|@@@eSMUU@FCPaTw\\\\c@\\t-0.32\\nsJP`@TeZhA`inXH`\\t-0.32\\nHmt@pHdDdLdLddlRVFZh@H@FATwCrE@\\t-0.33\\nHg\\\\@@LddTQRdTwUAAT@@pULJfFUt~QX\\t-0.33\\nHiF@B@B\\\\ddURjjh@X]BXUMwHD\\t-0.33\\nsJP@DiVhAa`mqP`\\t-0.33\\nQMABHXaIhFBOJ@\\t-0.33\\nsJP`@TfZhAaaCqK@\\t-0.33\\nsGP@Dj}j`FFVOEJ\\t-0.34\\nsJX`BDdvu@OLlP\\t-0.34\\nHeT@pHdDdLdLddlRPsU@@@C@j[ayD`\\t-0.34\\nHedHXFbPRPrPzPFPfPrRRqRUUU@CBByC@\\t-0.34\\nqCpB@ReMPFBfx``\\t-0.34\\nsFp@DiTt@@A`aNEXt\\t-0.34\\nHaDH@@RVU[f@@@FFXw\\\\rBh\\t-0.35\\nHmtJ@@siWIEDeDZFjjj`AatEWCJ|QF@\\t-0.35\\nqCa@AIMTAaMsBH\\t-0.35\\nsJX@@eKU@LLHnKD\\t-0.35\\nsGP`ATf^j`FADMxe`\\t-0.36\\nqCp@AIj`LDIqK@\\t-0.36\\nsGP`ATfVj`FADUxlP\\t-0.37\\nqCpPXABRu@XJKbF@\\t-0.37\\nRFB@QADXOD`\\t-0.37\\nHk\\\\@@DjU^ukmLHH@@@A`LHUCJ{sLxp\\t-0.37\\nsJQ@@dju@LDmqP`\\t-0.37\\nRFTPDQP|`\\t-0.37\\nQM@HzAaGFP\\t-0.37\\nQMHAIdFE\\\\Q@\\t-0.38\\nsJX`DBdvu@LH^IX\\t-0.38\\nqCb@AIZ`LEMqA@\\t-0.38\\nsNp`@dfUZj@XHobu@\\t-0.38\\nQM``eIhFCOH@\\t-0.38\\nQMFI@bMP^P\\t-0.38\\nHaD@@DjUZxHD@AaTIaUqFx\\t-0.39\\nsNp@LdbJjj@XVKF|PX\\t-0.39\\nsJP@DjvhA`enJD\\t-0.39\\nHaD@@DjUZxHH@A`tHUMwHp\\t-0.39\\nQMHAIhFBWI@\\t-0.39\\nsJPhHaxIRuPCAX|`@\\t-0.4\\nsJPXHlQxQ{T@|rq@\\t-0.4\\nqCa@AILtAxe`\\t-0.4\\nRGPQFCBNT\\t-0.41\\nsJPH@DIRuPCCBKbq@\\t-0.42\\nsJQ`@bdvu@LH^IX\\t-0.42\\nsGX`BDdwMT@pfydZ\\t-0.42\\nsGP`@TfZj`FADQxmP\\t-0.42\\nQMJHBHvAxb\\t-0.42\\nsFp@DiTt@@AxqEcP\\t-0.42\\nsGP@DjUj`FFbwDZ\\t-0.43\\nHmvD`La@BLddlRVFUh@H@FETwBoHp\\t-0.43\\nsGQ@@dkMT@pvMxh`\\t-0.43\\nQM``fN`XL|`\\t-0.43\\nQMHAIhFD|R@\\t-0.43\\nQMDARVAaOJ@\\t-0.43\\nHif@@@RUe^Fh@@@XLBES]qHD\\t-0.44\\nsGP@Djfj`FAVMyH\\t-0.44\\nqC`@Qv`LDmrP\\t-0.44\\nqCaPQ@Hck@^HX\\t-0.44\\nqCa@AILtAaErX\\t-0.44\\nQMDARVAqUaqd\\t-0.44\\nQMDARVAxr\\t-0.44\\nHid@@DjUfaBB`@FCPaTw\\\\SA@\\t-0.45\\nqCb@AJZ`LINIX\\t-0.45\\nHif@@@Rge^Fh@@@X\\\\DES\\\\OHP\\t-0.46\\nHiD@@LdbJTjjh@XBDIaTw\\\\`P\\t-0.46\\nsJP`@dfvhA`enP`\\t-0.46\\nqCaPQCpcm@XQ\\\\Pp\\t-0.47\\n`IjqpFD\\t-0.47\\nsJQ@@dmU@LLL^JH\\t-0.47\\nHaD@@DjWzXHB@A`THU\\\\SN@\\t-0.47\\nKA|H@XGIJsuUPA`pPaMwHh\\t-0.48\\nsKP`@Ti\\\\Zj@XR\\\\Rp\\t-0.48\\nHeTJ@@qaeJYyzzjjj@FGPUMpsqDp\\t-0.49\\nsNq`AVeMmUPC@sU|RH\\t-0.49\\nsGX`DJdrmT@pRoEb\\t-0.5\\nsGQ@@drmT@pRwDZ\\t-0.5\\nsGQ`AjdmuT@pHboEb\\t-0.5\\nHaDH@@RVU[f@@@FAYS]qHH\\t-0.5\\nqC`@Qv`LHnJX\\t-0.5\\nqCb@AIZ`LDIqK@\\t-0.5\\nsGP@LdbMU@LCEcqB`\\t-0.51\\nsGP@LdbMU@LCEkq@`\\t-0.51\\nHmvD`La@BLddJfReUj@@@FAMpssLiP\\t-0.52\\nsJPH@DISuPC@bK\\\\a@\\t-0.53\\nHiD@@Dj}Yjf`A`rXU\\\\OH`\\t-0.53\\nsGY@DDeYj`FFVOEJ\\t-0.53\\nsJP@DjVhA`hnKD\\t-0.53\\nqCr@XIKTA`anJH\\t-0.53\\nHaD@@DjWjXHB@A`TIS\\\\SN@\\t-0.54\\nsJPhHaxISuPCAX|PP\\t-0.54\\nsOq@@drm\\\\@@@pHVOEV\\t-0.54\\nsGP@LdbMU@LJHl^R`\\t-0.54\\nsJXHL@aIVj@XZK\\\\PH\\t-0.55\\nsNx`LFdjmUPCAbHu|f@\\t-0.55\\nqChPK@HRYhCBCbV@\\t-0.55\\nsKP@Di\\\\Vj@XXP|Rp\\t-0.55\\nqC`@IVtA`aNIX\\t-0.55\\nsGQhHl@cIHTmPCBGbE@\\t-0.55\\nsNp@LdbJjj@XLQXwdX\\t-0.55\\nqCb@AIj`LMEnP@\\t-0.55\\nHeT@@LddTjPsU@@@CCdpj[ayD`\\t-0.55\\nsJQhHl@cIHUhAx`P\\t-0.55\\nsJP@DjZhAahmq@`\\t-0.55\\nsJXHD@aIYj@XP\\\\tq@\\t-0.56\\nsGQ@@djuT@pHVOEJ\\t-0.56\\nHaD@@DjUZxHH@A`TES\\\\qLx\\t-0.57\\nsGY@DDeUj`FFVOEJ\\t-0.57\\nqCp@AIZ`LLHnS@\\t-0.57\\nqCb@AIZ`LEEqC@\\t-0.57\\nQMHAIhFE\\\\Q@\\t-0.57\\nsJP`@TizhAaicrH\\t-0.58\\nHidB@@kaReYrZjjh@XMaTwCqHP\\t-0.58\\nqC`@IRtA`anJH\\t-0.58\\nqC`@IVtA``nJX\\t-0.58\\nRGAALXOD`\\t-0.58\\nqC`P@HRfhCCBKdp\\t-0.59\\nsNp@LddUjj@XVKE|e@\\t-0.59\\nsOq@@drm\\\\@@@prkyab\\t-0.59\\nsJQ@@eOU@LEMqH`\\t-0.59\\nHaDL@@kldRTIMUUP@pKJ[nYBD\\t-0.59\\nqC`@ISTA`enHP\\t-0.59\\nsJP`@dfvhAaEqX`\\t-0.59\\nqC`@Qz`LLHnS@\\t-0.59\\nsNp@DiWjj@XLQFodp\\t-0.6\\nqCa@CIKTAaaErX\\t-0.6\\nsNp`@dfUZj@XKGbk@\\t-0.6\\nqC`@IVtA`hnHX\\t-0.61\\nsJP@DjZhAa`cqS@\\t-0.61\\nsJY@LDejhAa`mqP`\\t-0.61\\nqCcPQX^D]hCAK\\\\`@\\t-0.61\\nsOp@DjWkB@@FEbq_IP\\t-0.62\\nsGP`@dfyj`FBQxmP\\t-0.62\\nsOq`AVeJnMUT@pvMyhf\\t-0.62\\nHef@B@B\\\\ddURUUUP@pFDpj[ayD`\\t-0.62\\nHcLF`HSFgP|LdfrbTHjuUUT@LNpjzUwb@H\\t-0.63\\nHaf@@@RiUkfzjjh@XUBDw\\\\SJ@\\t-0.63\\nHeTD@@QIgeQej@@@FATwCqLd\\t-0.63\\nsNp`@dfWZj@X[U|a@\\t-0.63\\nQM`AIhFBWI@\\t-0.63\\nqCb@AIV`LINIX\\t-0.64\\nHaF@B@BTeeVz`@@A`tXUMwH@\\t-0.64\\nsF|@AbeJf`@@OMEP\\t-0.64\\nHmtJ@@pYUJYmVnjjjh@XCBTwCJ|SB@\\t-0.64\\nQMHAIdGfR\\t-0.64\\nHiFL@BANR[gfjf@FFIa\\\\Ra@\\t-0.65\\nqC`XBHTQhaIj`LLEnR@\\t-0.65\\nHeTD@@QIemQej@@@FAUpsqBX\\t-0.66\\nHeTB@@XYRfV~njjj`AatYS\\\\L|QB@\\t-0.66\\nHmL@@DjYeVdU@@`@@FGXULLkrN@\\t-0.67\\nHifDAHAHeNR[e^Eh@@@XHP|rfx\\t-0.67\\nsGP`@dfuj`FFqoH`\\t-0.67\\nsJQhHlOAJmj@XP|Pp\\t-0.67\\nsJQ@@dju@LLl^R@\\t-0.67\\nHmtJ@@siWIEEMDZFjjj`A`LHU\\\\LkqLX\\t-0.67\\nsGQ`@ZdruT@pHbOEj\\t-0.68\\nsJX@@dkU@LBHmrD\\t-0.68\\nHidH@@RYm^Eh@@@XTUMp|c@\\t-0.68\\nsGX`BDdwMT@pRwDZ\\t-0.68\\nHaDL@@sdigZZjj`A`TYW\\\\qBX\\t-0.69\\nqCb@AJZPLINIX\\t-0.69\\nqC`HBHtPdlpFBFxh`\\t-0.69\\nsJY@DDejhA`l^HP\\t-0.69\\nsGQhHlOAJoZhA`c^HX\\t-0.69\\nHmtJ@@siUJYn~ajjjh@XSBXS\\\\LkrJ@\\t-0.7\\nsGPYHlQxGdjmj`FDwIP\\t-0.7\\nqCbPHABSS@^HX\\t-0.7\\nHifDAHAHeNR[e^Eh@@@XHU\\\\qnD\\t-0.71\\nHid@`@BDiyWaj@@@FC@UMp|RD@\\t-0.71\\nHid@@DjUfaBB`@FGPfESCrN@\\t-0.71\\nqCh@CIKTA`anJH\\t-0.71\\nHidD@@QInUxV`@@AaRDwCrJ@\\t-0.71\\nqC`P@HRVhCAB\\\\Rp\\t-0.72\\nsGY@DDfUjPFBVxcP\\t-0.72\\nHidB@@qarQQZFnjjj@FCQaMp|QJ@\\t-0.72\\nHif@@@RYm^Fh@@@X]FES\\\\OH@\\t-0.72\\nHidH@@RUe^Eh@@@XTaTw\\\\RA@\\t-0.72\\nHidD@@QInUxV`@@A`QMp|QJ@\\t-0.72\\nsGP`@dfuj`FFVOIP\\t-0.72\\n`ImAHFD\\t-0.72\\nHeTL`HS@BLddlRPrm@@@CBlinGdR\\t-0.74\\nqCb@AJZ`LEErX\\t-0.74\\nsJQ@@dju@LDcqS@\\t-0.74\\n`Ld`^P\\t-0.74\\nRFTQXQ`|R@\\t-0.75\\nQMhHRZAaGFP\\t-0.75\\nHaDH@@RYe[hB@@FF@S\\\\sJx\\t-0.75\\nsJQ@@eOU@LDmqP`\\t-0.75\\nsGP`ATeUjPFBVxhP\\t-0.75\\nHet@@DjYUX^d@@@@AarXS\\\\L|b`\\t-0.76\\nHeV@B@B\\\\dbLRPsU@@@C@XSJ[agd@\\t-0.76\\nsJP`@TizhA`l^JH\\t-0.76\\nqC`@Qz`LEEqC@\\t-0.76\\nsNqDHGBnFRRJuU@LBlWrT\\t-0.77\\nsJQ@@dlu@LLl^R@\\t-0.78\\nKA|X@DBLdvluS@FBHWDs`\\t-0.78\\nqCbPP^BRu@XI[d@\\t-0.78\\nHid@@DjU^nBAH@FGPfES]rA@\\t-0.78\\nsOpHAbILkW@@@LJEc^Q`\\t-0.78\\nqCa@CIKTA`aNIX\\t-0.78\\nQMDARZA`cr`\\t-0.79\\nHeVH@IAIe]ZZ@Bh@FG@fEWSrA@\\t-0.79\\nHidH@@Rge^Fh@@@XLaTwCrH@\\t-0.79\\nKAxP@Uddbcjf`C@dpfyG@\\t-0.79\\nRFD@QECBNT\\t-0.79\\nHeTB@@XYrQQJHuuUUT@LNcB[agbIP\\t-0.79\\nqCcPQXAD]XCqC@\\t-0.79\\nsGP`@dfUj`FDwDZ\\t-0.79\\nHeV@@@rRJEK\\\\MP@P@LFSBinyD`\\t-0.8\\nHaDL@@sdigzZjj`A`TXw\\\\qBh\\t-0.81\\nsGX@@djuT@phbqyJ\\t-0.81\\nsGP@Djfj`FAbqyJ\\t-0.81\\nHaD@@DjYvxH`@A`RDw\\\\SJ@\\t-0.81\\nHeTB@@pYRf[vnjjj`AatIc\\\\L|Pj@\\t-0.82\\nHidB@@saRf]ZZjjh@XMFTwCqDH\\t-0.82\\nqCr@PIKLAaAqK@\\t-0.82\\nKAx@@YIDTfjh@pZDpj{dL\\t-0.82\\nqCb@AIf`LHnS@\\t-0.82\\nHeTJ@@qaeJYyzzjjj@F@qaTwCOHP\\t-0.83\\nHetD@@QIemRhYZ`@`@XDwCOHH\\t-0.83\\nsJP@DkVhAahmq@`\\t-0.83\\nsNp`@dfvZj@XXu|Rp\\t-0.83\\nqCc@AYIf`ODl\\t-0.83\\nQMBBHRZA`erP\\t-0.83\\nHklF@@pUt|dTTRbQjZjjjh@XKBESCJz_Hx\\t-0.84\\nsJPXHlQxQ{T@pRwHP\\t-0.84\\nHaDH@@RVU[j@@@FEQaTwDC`\\t-0.85\\nsFp@DjfJjhAaicqJ`\\t-0.85\\nQMhHchGcH\\t-0.85\\nKA|X@QS\\\\eUkUU@FGPfES\\\\\\t-0.85\\nsGPXHlQxIU[U@LEcrT\\t-0.85\\n`IhapFD\\t-0.85\\nQMFI@bM`^H`\\t-0.85\\nHmtJ@@pYUJYmVnjjjh@XSBYS\\\\LkrB@\\t-0.86\\nHidD@@QInUxV`@@A`RDp|Rn@\\t-0.86\\nHiDH@@RUUVjj@FGIaTwCrH@\\t-0.86\\nHaF@@@RYe[hB@@FAXUMq@x\\t-0.86\\nHeTH@@RUYTYY`@@AarYS\\\\L|b@\\t-0.86\\nsOp`@tieujj`FAfkxdP\\t-0.86\\nsGQ@HeUuT@pLVOIP\\t-0.86\\nsJQ@@dmU@LBIcrH\\t-0.86\\nsJY@BDeVhA`d^JX\\t-0.86\\nHaDH@@RVU[f@@@FFYS\\\\rBx\\t-0.86\\nsNp`@dfuZj@XEXwdX\\t-0.87\\nQM@HzA`sr@\\t-0.87\\nHaDH@@RVU[j@@@FAAc]sHJ`\\t-0.88\\nsGX`LJdmuT@phfMyD\\t-0.88\\nsGX@@eJuT@pHbwDZ\\t-0.88\\nj`i@`@@HRYYUg\\\\eIF]yjB@@B@@F@fBdkQkNx`g`\\t-0.89\\nHet@@DjfehZfjjj`AarES\\\\L|c@\\t-0.89\\nHeTD@@EIYWVy`@h@FEXUMOH`\\t-0.89\\nsGPhHaxISuU@LMc^HH\\t-0.89\\nsJXHD@aIYj@XXX|d@\\t-0.89\\nsJP`@deVhAqIXPVOI@\\t-0.89\\nsJP`@deVhA`l^R@\\t-0.89\\nqCb@AJZ`LEMrH\\t-0.89\\nsFp`ATiWFjhAal[qQ@\\t-0.9\\nsGQ@@dsmT@prqyJ\\t-0.9\\nQMA@HPaIXFD\\\\Y@\\t-0.9\\nsNphHaxIRkUT@pNM_H@\\t-0.9\\nsOx@@drm]UT@p\\\\VM_H@\\t-0.9\\nHiFD@BADf{Ujj`A`rXUMwHD\\t-0.91\\nqCb@AIY`LEEqC@\\t-0.91\\nsJQHH@aJuj@XI[bA@\\t-0.91\\nHmtH@HrRQVIJUjh@@@X\\\\fDwCOHT\\t-0.92\\nsJQhHlOBOZ`FBVyB\\t-0.92\\nsJQ@IGuPCCQ[dH\\t-0.92\\nqC`P@HRVhCAQ\\\\Pp\\t-0.92\\nHidB@@qarQQZFnjjj@FEPS\\\\OLSJ@\\t-0.92\\nsJP@DjZhAa`mqP`\\t-0.92\\nHcND@BADf{YU]Zj@@@F@iaUproHt\\t-0.93\\nHaDD@@yIe^f`@`@XHe\\\\HLK`\\t-0.93\\nsGP@LdbMU@LBHcqZ`\\t-0.93\\nQM@HzA`erP\\t-0.93\\nsOx@@drm\\\\@@@ppUylV\\t-0.95\\nsJX@@dkU@LLEnJD\\t-0.95\\nHaDH@@Rfu[j@@@FEIaUwHX\\t-0.96\\nsJY@BDizhAaicrH\\t-0.96\\nQMpRRWhuAyP\\t-0.96\\nQMACD\\\\QIhFBOJ@\\t-0.96\\nsJX`LDdvu@OLlP\\t-0.96\\nsFp`ATiWFjhA`m^ZH`\\t-0.96\\nsGP`@dfui`FBqxeP\\t-0.97\\nKAxYDPf@DYvRRUIZj@LLJfyG@\\t-0.98\\nsOpHAVILkW@@@LJEc^Q`\\t-0.98\\nsFx@@eJfuU@LJHl^R`\\t-0.98\\nqCa@CIKLA`anJH\\t-0.98\\nsJP`@TizhAahmrD\\t-0.98\\nsKQ@@eKcUPCAX|TP\\t-0.98\\nJoBD@@IS\\\\rjzv[uP@@@@@XKS\\\\Lkiv\\x7FDa@\\t-0.98\\nsNy@DDf]Zj@XYZ|QX\\t-0.99\\nRFTPxQP|`\\t-0.99\\nqCp@AI^PODl\\t-0.99\\nHcLF@@siWTify^ajjjj@FBpaTwCJ{rL@\\t-0.99\\nqCpB@SGj@ptVy@\\t-0.99\\nHaD@@DjUZxHH@AaTHS]qLh\\t-1\\nKAx@@IVjmUPAapPfES\\\\c`\\t-1\\nqC`@IWtAaEqS@\\t-1\\nHaD@`@BDimVz`@@A`pXUMwHP\\t-1\\nsJPhHaxIVmPCAX|`@\\t-1\\nsOx@@drm\\\\@@@prqyaV\\t-1.01\\nqCa@AIJtAaMrP\\t-1.01\\nsJPLIHJPtaGuPCrD\\t-1.01\\nsNy`BDtfuZi@XYX|e@\\t-1.02\\nRF`dS]ECr@\\t-1.02\\nHaD@@DjUZxHD@A`tIaUwHX\\t-1.02\\nqCb@AIj`LLEnR@\\t-1.02\\nsOp@DjWkB@@FAfMxdp\\t-1.03\\nqCr@XIKTAahmr@\\t-1.03\\nKAxY@PfAxIUjmUPA`QTw\\\\`@\\t-1.03\\nsJP@DkVhAa`mqP`\\t-1.03\\nRFTQxQ`pkd@\\t-1.03\\nsNp`@deUZj@X[F|TX\\t-1.04\\nqC`@IStAxe`\\t-1.04\\nsOq`AVeJnMUT@pNM_ED\\t-1.04\\nsJQhHl@bOV`FDwHP\\t-1.04\\nHmvLAHAEbT{Hihdh^Eh@I@AaaTODzP\\t-1.05\\nHmL@@DjYUVGi@@@`@FGIaUpsrE@\\t-1.05\\nHev@@@RfUWJzZABH@FE@aMwDFP\\t-1.05\\nHiF@@@rRHiJjj`AatIaTw\\\\`P\\t-1.05\\nHaD@@DjUZzjj`AapPaTw\\\\c@\\t-1.05\\nHaFH@DAIYUnZjh@XEaTwDc`\\t-1.05\\nHaFH@NAIe^f`@`@XTfEW\\\\`@\\t-1.05\\nHiFD@BADf{Yjj`A`rYS\\\\OHH\\t-1.05\\nsJPXhlQx[ct^u@LH`\\t-1.05\\nsFp`@TivJjhAahmrT\\t-1.05\\nsGQHL@aJYihA``nHt\\t-1.05\\nsJU@DPdru@LDcrX\\t-1.05\\nsJQ@@dju@LEMqH`\\t-1.05\\nQMABlZqIhFBOJ@\\t-1.05\\nRFHEFCqH\\t-1.05\\nHaDH@@RVU[j@@@FAAeMsHK`\\t-1.05\\nKA|X@DBLdvluS@FFIa\\\\c`\\t-1.05\\nqCbPXQBRt`XP\\\\TP\\t-1.05\\nqC`@ISTA`aNIX\\t-1.05\\nJoBD@@ILrkNx{[mA@@@@@XJU\\\\Lkiv\\x7FHp\\t-1.06\\nHeTD@@QImeQej@@@FCIeMp|bP\\t-1.06\\nHeTD@@QIemQej@@@FEES\\\\OHd\\t-1.06\\nHidH@@RYm^Eh@@@XUaTw\\\\`P\\t-1.06\\nsJT@@TizhA`QL^Q@\\t-1.06\\nQMBCpRZAaOD`\\t-1.06\\nRGPQECr`\\t-1.06\\nqCbHXRBdDfj@|Tp\\t-1.06\\nHaDL@@[die|jjj`AaTYS]qDH\\t-1.06\\nqCr@XIJtAaMqQ@\\t-1.06\\nQMFIOBM`XSr@\\t-1.06\\njhi@`@@^Rfuue]Yrsj@B`@h@@XJQ`eFJtZp^PD\\t-1.07\\nJoBD@@ISZzrk][t@E@@@@XRfESKiwqA\\\\\\t-1.07\\nHiDNPhSB[aCpkpsb{nGlddqdZih@P\\t-1.07\\nHiDD`HPOAJUfjjh@XMaTwCr@@\\t-1.07\\nsOp@DjWkB@@FAbqxjp\\t-1.07\\nQM@HvAaWDP\\t-1.07\\nsJXA@IRej`FAbqy@\\t-1.07\\nsGP`@dfuj`FBQxmP\\t-1.07\\nHmuD`IVD@HrRFIKKaV@BP@XDUMwDAP\\t-1.08\\nsKP@H~Jj`FBqxh`\\t-1.08\\nsGX`DJdjmT@pRoMLP\\t-1.08\\nsKQ@@eKcUPCB[fbH\\t-1.09\\nsJY@LDefhA`enJD\\t-1.09\\nsGP`@dfuj`FBqxeP\\t-1.09\\nsJXHB@aIVj@XZH|Pp\\t-1.1\\nHeTD@@QInYQehB@@FEISCOHx\\t-1.1\\nHaE@@@yIe^f`@`@XXfEs@k`\\t-1.1\\nHid@@LdbbQxXF@@A`RTw\\\\sBD\\t-1.1\\nQMhXNiRZAxr\\t-1.1\\nsJP`@dfvhAaMqH`\\t-1.1\\nKAx@@IRzmUPAapPaTw\\\\c@\\t-1.11\\nsNx`BDdw[UPCCXobU@\\t-1.11\\nsFp`@dfTujhA`m^P`\\t-1.11\\nsJQ`@bdvu@LHnKD\\t-1.11\\nsJQ@@dkU@LMEnHD\\t-1.11\\nsJQ@@eKU@LEMqH`\\t-1.11\\nsGXA@IRiZj@XFHwbF@\\t-1.11\\n`Ic@hFD\\t-1.13\\nHmtJ@@XYUJYY^njjjh@XSFES\\\\LkrD@\\t-1.13\\nsGP`@dfUjPFDwDZ\\t-1.13\\nsJQHL@aJVf@XHKba@\\t-1.14\\nQMB@HRZAaGFP\\t-1.14\\n`Ig`hFD\\t-1.14\\nHif@@@RYWZZ@BP@XTfEW\\\\PA@\\t-1.14\\nsNp`@teUZi@XYX|Th\\t-1.14\\nsGQ`@jdvmR@pbxlP\\t-1.14\\nsGPP@cTfyi`FBU@\\t-1.14\\nHidB@@kaReYrZjjh@XUaTp|rDx\\t-1.14\\nqC`@IRtAaaErX\\t-1.15\\nsNx@@eLuUPCAqXu|`@\\t-1.15\\nsGP`@df]j`FBMyL\\t-1.15\\nHcMB@hdDWXeNf]yInU^xV`@f@A`aCqJX\\t-1.16\\nHeTH@@ReyTYj`@@A`tYS\\\\ODRP\\t-1.16\\nHaE@@@aJyUnh@@@XLFES]rH@\\t-1.16\\nHidD@@yJ[VXZ@H@A`RXp|Pn@\\t-1.16\\nHaDD@@YIeZn`B@@XXf]s@i`\\t-1.16\\nKA|@@AddQRjj`CAhSBinQp\\t-1.16\\nsNp@DkUZj@XLKFod`\\t-1.16\\nsGQ@@eJuR@ptuxdP\\t-1.16\\nsGY@JDiVj`FAbuyB\\t-1.16\\nsJQ@@dmU@LBEcrP\\t-1.16\\nsFy@LDigVfXAydZ\\t-1.16\\nQMJAhHzAxr\\t-1.16\\nsGQ@@eNuT@pLqoH`\\t-1.16\\nsGPXhlQx[crUVuPCrT\\t-1.16\\nHaDH@@Rfu[j@@@FFXw\\\\qBh\\t-1.16\\nJoBbPCCk`DISJj{nTLuUUSSP@XZDIaTwBi|bp\\t-1.17\\nHk]H`FGPBDieU]rafjjjZ`A`hPfES\\\\J|`p\\t-1.17\\nHmMH`FEPBLdTRRQrafjjih@XBDIaTp|c`\\t-1.17\\nHcmH`FGPBDieU_JFZjjih@XRDIaTwCrE@\\t-1.17\\nHeuH`FzPBDiewrnFjjf`AapPfTw\\\\``\\t-1.17\\nHiUH`JXPBDiU_B[jjih@XLDXUMrD@\\t-1.17\\nsFp@DiTujhA`Pm^JD\\t-1.17\\nsGP@DiUj`FEDVOIP\\t-1.17\\nsGQ`@jdsmT@pfxcP\\t-1.17\\nsGQ`@bdwML@|Rh\\t-1.17\\nsGX`LDdwMT@|rM@\\t-1.17\\nqC`@IVtAaaMrH\\t-1.18\\nHidD@@QInUxV`@@AaRES]rA@\\t-1.18\\nHeTD@@eIYe^E`HD@FAEWCqHX\\t-1.18\\nqCb@AIj`LLHnS@\\t-1.18\\nHidH@@RVY^E`H@@XDU\\\\ODa`\\t-1.18\\nQM@HvA`erP\\t-1.18\\nsNqDHG@nFRQFUU@LBmWq@`\\t-1.18\\nqCqAPJRnRYhCrX\\t-1.18\\nsNp@DkUZj@XLQXwdX\\t-1.19\\nqCp@AIZPLDEqS@\\t-1.19\\nsGQLKHaQFbLddmU@LCEcrT\\t-1.19\\nKAxH@@bSZkUT@XTfES\\\\c`\\t-1.19\\nsJP`@dfvdAaMqH`\\t-1.19\\nRGPp]SFCr`\\t-1.2\\nHmLH@@RYUUiiV@@@@@X\\\\BEproHp\\t-1.21\\nHiV@@@RfU|kahDB@AaPHS]qJD\\t-1.21\\nqCbPXQBRu@XHSbV@\\t-1.21\\nHcN@@@rRJIIGRmPTA@@pELJfxYyF`\\t-1.21\\nHeTD@@eIYWVy`@d@FAXUMqHD\\t-1.21\\nQMB`HIchFCOH@\\t-1.21\\nHaDH@@RVU[f@@@FAXU]qHX\\t-1.21\\nQM@H~Axr\\t-1.21\\nQMHAIhFCOH@\\t-1.21\\nQM@HvA`cr`\\t-1.22\\nqCr@XIKTAaaMrH\\t-1.22\\nHg|H@@RYfUWd}nh@@@@@XJUMprng_DB@\\t-1.22\\nHg^J@DCiV|bbtTVaTzuUUUP@pULJnE]N~Pp\\t-1.23\\nHcNB@DCiUIgf^gVjjj`AarXU\\\\J|Qm@\\t-1.23\\nHidD@@QInUxV`@@AabEwLia@\\t-1.23\\nHaDH@@RYVih@H@FFAW\\\\qLX\\t-1.23\\nsOpHAHILkW@@@LBlWrT\\t-1.23\\nsGT@ATivj`FEDqoH`\\t-1.23\\nqCaPQCpRmhCB[d@\\t-1.23\\nsOp@DjWkB@@FFbwLZp\\t-1.24\\nHiDD@@QImUZjh@XLfES]rA@\\t-1.24\\nQMJH|HvAxb\\t-1.24\\nsJP`@dfVhAaCrX\\t-1.24\\nHklNaHSBySCpsb{IILUDhYujjjj@FCTpki|bP\\t-1.25\\nHcMB@hDDWXeNF]yInUnzV`BF@AaaUOHx\\t-1.25\\nHg^L@BAAR[eVuNvji@@@FDiaUJz]|a`\\t-1.25\\nHmtD@@eJ[WUnh@J`@XTfES\\\\PU@\\t-1.25\\nHmtD@@QIn[VUZh@@@X\\\\fMproHh\\t-1.25\\nHidD@@QInUxV`@@A`RDw\\\\Ra@\\t-1.25\\nsNp`@tfUZi@XI[bM@\\t-1.25\\nQOHBNZ`XUrP\\t-1.25\\nsNp`@dfWZj@X[F|c@\\t-1.25\\nsNpXhlQx[cvRRXmU@LI^Q`\\t-1.25\\nsOx@@drm\\\\@@@pHVOEV\\t-1.25\\nHeVDAHAHeNR[e_aZ@B@A`QTw\\\\bP\\t-1.25\\nsJX@@dmU@LCEcr@\\t-1.26\\nqCbPPABUm@XQ\\\\Pp\\t-1.26\\nsJP@DiVhAaaEqX`\\t-1.26\\nsGX`DJdjmT@prqxiP\\t-1.27\\nsJP@H~j@XZK\\\\a@\\t-1.27\\nHeV@B@BTiVuFZh@@@XCBES\\\\L|`@\\t-1.28\\nHidH@@Rge^Fh@@@XTaTw\\\\RA@\\t-1.28\\nsNx`LDdvkUPCCXwbS@\\t-1.28\\nRGDQxQ`|R@\\t-1.28\\nHaF@@@Rfu[j@@@FCAaTw\\\\a@\\t-1.28\\nsJP@H~j@XJKbq@\\t-1.28\\nHmN@@@rRJIKEaxZjjj`AaLIaMproHh\\t-1.29\\nKA|I@Dw@DIJwUTpAaTIa]r@@\\t-1.29\\nsFx@@eLzuU@LJHm^P`\\t-1.29\\nqCr@PIKTA`anJH\\t-1.29\\nsJQ@@dru@LDmrD\\t-1.29\\nsNq`@jdvsTpCB[bS@\\t-1.3\\nRGAALXLHyP\\t-1.3\\nHaD@@DjWZXHB@A`TXw\\\\QB@\\t-1.3\\nsNp`@dfUZj@XXu|f@\\t-1.31\\nHeTD@@QImeQej@@@FCIS\\\\L|c@\\t-1.31\\nsJQ@@eOT`LML^Q@\\t-1.32\\nHidD@@QInUxV`@@A`REp|Rf@\\t-1.32\\nsJPYHlQxGh}j@XQ\\\\f@\\t-1.32\\nqCb@AIZPLMEnP@\\t-1.32\\nsOp@DjWkB@@FEbqoHp\\t-1.32\\nj`aAb@FBdAprRQUJYQIN}UUM@@@@peAFBTtZsnP|\\t-1.33\\nHg^DIItxdDdLdKbId~rRRqISQBmT@Pt@CCJZ~PH\\t-1.33\\njhip@@@P\\\\eKLjo}HvkM@@@EP@@pTRcARUjw`|ap\\t-1.33\\nHo}DHL^D@HVPvPNPrRRqQJQN[V``jH@FAXporI@\\t-1.33\\nHo}DHLzD@HNPnP^PrRRqQ[JRUV``Jh@FAXwCrI@\\t-1.33\\nj`qa@@H@RVYUg^Qg^f``@@@@FF`TXJRmFl{wHD@\\t-1.33\\nj`aP`@N^`sIIEYdhdmYuUMP@P@CBRLDxIVcVyCp\\t-1.33\\nHaD@D@|HBDBLBBBJ|FBNBLddqfTuSP@pJDqnHW@\\t-1.33\\njdi@H@@HMYw`qR[fYf[iZZ@hafX@A`QEoQxbV`\\t-1.33\\nj`aa`@APYsIIEYdeDd{uUML@@@C@RLDtZso\\\\aH\\t-1.33\\nJgRF@EM^RRJJHjkNHRd]gZijjfj`@pyLKae^PX\\t-1.33\\nJoB@QGTG]ddRtJbReL]a@T@D@@XKBYSRiv\\x7FHx\\t-1.33\\nJoBBQBzG`DiSJkvoS[tDDUTP@XZfES\\\\Lg[|`@\\t-1.33\\nj`a``@APYddbltrbR]zjfj@@@AaiFB\\\\EKQkN|\\t-1.33\\nJoBe@BX@j[yEEDeEeJw[[USSUT@F@xU]Iv\\x7FHt\\t-1.33\\nHknDqItxdDdLdId~rRRqISPUj`BF@AaeLoHD\\t-1.33\\nHg]HpMLhdDdLdLddjbRrTkUP@T`@pinF]yE`\\t-1.33\\nJcBB@E[ddbTQJqbxazQfjZjZj@CAdpfx^IB`\\t-1.33\\nJcBB@EMddbbbJsbDiGYvjZjjj@CCdpnFUyF`\\t-1.33\\nHo}BbFvDqpBL{IIJeDedeuZjjjh@XRU\\\\Lj]n\\t-1.33\\nJoC@QDAxAJTsMjnmf}T@@@@@FFeS\\\\Lkiv\\x7FH@\\t-1.33\\nHg|@b@|@eJYUg_eNzB@@@@A`jXS\\\\Lki|PK@\\t-1.33\\nHkmHpMLhdDdLdLddjbRreZj@B`@XTwCN|`p\\t-1.33\\nHg|DbEtO@IRfUWmzSn``bjH@XJfES\\\\Lg_H@\\t-1.33\\nKA|PPPrPFPAPGPFRRJrjf@NBQ@q@I@y@yD@\\t-1.33\\nJoBb@EFNyIHiTlhepv}USUMT@FGPfDtwrG@\\t-1.33\\nHklHHCbPRPrPvHrRRqISPUj`BI@A`ULn|`P\\t-1.33\\nHg\\\\L`HS@\\\\LddRtRRIwUTE@@@pffxYWSodX\\t-1.33\\nJoC`@@PJUrnljwV{@AP@@@FBxULJz]orH@\\t-1.33\\nHklDpMNIAICICIIKDeMAVj@HX@FATrgrA@\\t-1.33\\nHcL@HHdDdLdMqLddlRTHsU@AP@LJiiW^PH\\t-1.33\\nJoBd@AonRRJUKJICMoU@ASP`AarXUMp|bp\\t-1.33\\nHcL@HHdDdLdMbLddlRTHsU@AP@LJiiW^PH\\t-1.33\\nHklDpJZIAICICIIKLhdmNjZ@@@FACJ{rC@\\t-1.33\\nHg\\\\D`HlGCIIEUEDeiuU@PP@LISBhYWSyE`\\t-1.33\\nHo\\x7FD@Nux[IIEYdeDk^jfjeh@XBfEtg[|`P\\t-1.33\\nHg\\\\HpJbPRPrPrRRsQIYKmTp@T@CBnFUOdV\\t-1.33\\nHeT@H@\\\\HbDbLbLddlRPsU@@@CChSJ[ayD`\\t-1.33\\nHo~DANW^g^rRQRqJJJSj``Xh@FEIaV\\x7FDXp\\t-1.33\\nHmt@HHdDdLdEbLddlRVFZh@H@FFTr|Sa@\\t-1.33\\nJoB`@@Ndrnlktqvtlp@T@A`hIaUJz[|c`\\t-1.33\\nHmt@HHdDdLdIqLddlRTEZh@`@FATtkrA@\\t-1.33\\nHo~DB@XPgIIETihdk^jjX@@@XKBXUKivx\\t-1.33\\nHklD`HPGCIHdbhdmNjj@@@FDxULLki|`@\\t-1.33\\nHo|F@@RUm|bfbbTRlGV``Xf@AabJ\\x7FLkm@\\t-1.33\\nHo~D@NalddUfRbRmzjZ`@@AaJXWBng_H\\\\\\t-1.33\\nHcL@PH\\\\JqLddT\\\\RR{UT@@@LISBkae]yD@\\t-1.33\\nHe\\\\H@JrRQJHxq\\\\P}HsUMUUP@pYLInGbQH\\t-1.33\\nHmtFaHSBEP|LxnrRSFJJUZjjh@XYSCqNd\\t-1.33\\nHklHhCBPJPZPFPVPRYf{\\x7Fi`bHj@AaA|cP\\t-1.33\\nHg^HB@xIrRQRpqIG]UU@@@C@xSBine]Np\\t-1.33\\nHmTLpHZP\\\\J\\\\A\\\\LddUbtjjj`AarXU\\\\J|bP\\t-1.33\\nHiDLpJXT`L`B`LddTZjfd@\\\\XbAb@RArN@\\t-1.33\\nJoBF@@IrSJzljUV{UUP@P@FDxULng[|`P\\t-1.33\\nHedLHJ[h|DbLbBbLddTcuTuP@piLHYyG@\\t-1.33\\nHmtLbHS@|@gIIEXdiVj`@@AapDwCJ|QL@\\t-1.33\\nHmtBaHSBCpsb{IILXdiUj`@@A`S\\\\L|aP\\t-1.33\\nHmTBHJXUbPRPrPxJrRRsIJjZi@FD]rI@\\t-1.33\\nHcLL`HS@\\\\LddQbRr{UPP@@LNinFUwbI`\\t-1.33\\nHcLHpMbPRPrPrRRqIPcMT@D`@pJfe^PH\\t-1.33\\nHmTBHJXUbPRPrPytrRRsIJjZi@FD]rI@\\t-1.33\\nHg\\\\L@HSLddRtRRIwUTE@@@pffxYWSodX\\t-1.33\\nHeT@p@BJBFBLdTTRHsPT@@CC`SBxYxeL\\t-1.33\\nHklH`HAprRQUQQKSjj@`@A`JXUCNgrE@\\t-1.33\\nHg^L@NakrRQVZJIZ]UMUS@CCdpagSyB`\\t-1.33\\nsOpNAxPHPQ``aE|FDYIIcjuS@LCEgqF`\\t-1.33\\nHcLHbMCpBTieV_ehHJH@FBiaTwCJ{r@@\\t-1.33\\nJoBB@@Ndrnlktqvtlp@T@AaJXURnf\\x7FHx\\t-1.33\\nHmtHPHApIprRHjIJUjh@@@XBBXwCJ|``\\t-1.33\\nHcvJ`FaLWPBLddjRbRuUU@C@\\\\JfFUwd\\\\\\t-1.33\\nHk^@B@BTjU^ukmLHH@@@A`lHU\\\\Lki|c@\\t-1.33\\nHk^D@D@\\\\bbbbRQImMj`XB@AaU\\\\ngrI@\\t-1.33\\nHg\\\\L@NN|ddTlVVdkUA@S@@pyLInV~PH\\t-1.33\\nHmTDHJVIAICi@YCIICELZijd@XPwDJP\\t-1.33\\nHmv@pIbPRPrPrRRqIPUj`B@@XESRoHD\\t-1.33\\nHiD@XHdDdLdJdNdAdLddltjjh@XPWHX\\t-1.33\\nHmv@pEbPRPrPrRRqIXYj`@`@XES\\\\OHT\\t-1.33\\nHmt@P@\\\\HbLddqbReZj@@@FGPc\\\\LkqLH\\t-1.33\\nHk^D@D@\\\\bbbbRQImMj`XB@A`WKi|Ri@\\t-1.33\\nHmv@pIbPRPrPrRRqIPUj`B@@XESCOHT\\t-1.33\\nHmv@pIbPRPrPrRRqIPUj`B@@XEProHX\\t-1.33\\nHk^H@IOIIEJeLaWSj`BFH@XLfESCrM@\\t-1.33\\nHcLH`HAprRQUQIKmUP@@@pELJne]y@`\\t-1.33\\nHg]L@NvFOIIEYhddnuTuTt@LJSBF~QH\\t-1.33\\nHcN@bACpBTieU{ihHHh@FDiaTwRn|`@\\t-1.33\\nHmt@P@\\\\HqLddqbReZj@@@F@qaMproHP\\t-1.33\\nHo|H@KrRQRiQHpYj`@jX@FCIaKk|Rf@\\t-1.33\\nHedHHNbPRPrPYprRRiQUUU@C@bhYyC@\\t-1.33\\nHg~D@DAdfygUQd{ZB@@@@FCUrz]|QF@\\t-1.33\\nHmtBbHSB@HKlddNbReUj@@@FAMpsrE@\\t-1.33\\nHmVBcNaLHOCNKngIILTiFjjh@XUSCJ`\\t-1.33\\nHmtB`HSBCprRSFIJUZh@@@XTwCJ|SB@\\t-1.33\\nHet@b@|@gIEEDcSCMAPD@C@Tpj[agd@\\t-1.33\\nHiDDHJZHaHcH`oCIIKLjij@FEPf\\\\OHH\\t-1.33\\nHctBPHZUApGprRQVYSUTtt@LJSB{^PH\\t-1.33\\nHid@p@bH\\\\DbDfyWaj@@@FG@aTwCrH@\\t-1.33\\nHmLB@HSerRQHiJfFZjjj`A`vESBoHd\\t-1.33\\nHklD@NOIIEKEeiVjB@d@FGIaMr{rA@\\t-1.33\\nHcLL@HSLddQbRr{UPP@@LNinFUwbI`\\t-1.33\\nHo|F@@Q]mtfyfYZSZBHXX@FFIk|siL\\t-1.33\\nHo|F@@SSmtfyVV{iZ@HfX@FFH[|pjd\\t-1.33\\nHk\\\\@@DjU^ukmNeZ@B@AaLHUCJz_Ds`\\t-1.33\\nHklH@ErRQRqJJ]j`Hb@AarXSKi|PY@\\t-1.33\\nHklH@IrRQRiPhUj`BJ@AarXUMI|P]@\\t-1.33\\nHmTBHJXUbPRPrPzlrRRsIJjZi@Gb]H\\t-1.33\\nHgnD@NalddUfbreUMUT@LASBe]N~PH\\t-1.33\\nHaL@@DjYtkBqjynjjjj@FCABDw\\\\SJ@\\t-1.33\\nHklD@NwIIEKEeiVjB@h@FGIaMrgrA@\\t-1.33\\nHknBAHAEvISdfyW[xV`@f`@XDUMwHL\\t-1.33\\nHkL@bLhLyJgnYzjjj`AaXPfES\\\\Lki`\\t-1.33\\nHeTL`HS@|LdbLRPsU@@@CA`inF^Hf@\\t-1.33\\nHeTDbHPO@IrRHqICMT@@@LFrfxYx`H\\t-1.33\\nHid@p@qH|DqDfyWaj@@@FG@aTwCrH@\\t-1.33\\nHcM@@@wIHhdd]JuAPD@C@Tpj[agdZ\\t-1.33\\nHko@@@`Tke]e[f@Bj`@XCaTtki|b@\\t-1.33\\nHeTDPHP@bYCIHXdmpk@A@@pHj[nP@\\t-1.33\\nHiDLHJXXdDdLdNBlddlrjfh@XQwHD\\t-1.33\\nHctDPJEYCYCIIEFiiUMMP@pILInQH\\t-1.33\\nHmTLRHS@BN\\\\L{IIJdiEjjh@XLULLj\\t-1.33\\nHkND@NalddUfRbjijj@F@ia]Jz_HD\\t-1.33\\nHiDLHJXXdDdLdN]Lddlrjfh@XQwHD\\t-1.33\\nHeT@P@bH\\\\Df^UFZh@@@X\\\\BTwCODc@\\t-1.33\\nHklD@@qJYVu}NjhH@@FDiS\\\\Lki|b@\\t-1.33\\nHkLB@NFUrRQRqSFjifh@XMBXVgrE@\\t-1.33\\nHmtB@HRUrRQHiJfjjjh@XMaTtkqND\\t-1.33\\nHiDLpJXXbDbLbLddlrjfd@XYBYrN@\\t-1.33\\nHmt@`NqLddTlVeZhH@@FCIaMr|PY@\\t-1.33\\nHmt@`EqLddTjVFZh@H@FCIaTr|Sa@\\t-1.33\\nHmVLB@ZUB\\\\ddUfTjji`AatIaUr|a`\\t-1.33\\nHmVB`FaLT@cIIJiDUjjd@XUaMp|bP\\t-1.33\\nHiFDHNihBDdLdBdLddTgjeh@XQwHD\\t-1.33\\nHiDDpJzHaHcHcIIJeJjf@FAPfErA@\\t-1.33\\nHmv@`JVYrRQRiHYj`@`@XLfDtkrN@\\t-1.33\\nHefDpFFXdDdLdLddjfeUTp@prfgdD\\t-1.33\\nHmT@bLhLyJgnVjjj@FBaBXU\\\\LkrF@\\t-1.33\\nHedLpJFXdDdLdLddlReUTp@pSiyA@\\t-1.33\\nHk\\\\D@@iIYgU^GSXH@@@@XLSRngqHh\\t-1.33\\nHctB`HZUGprRQVYSUTtt@LJSB{^PH\\t-1.33\\nHmTH`HAprRIIPjjje@FDiaTwCJ|`@\\t-1.33\\nHcLD@NwIIEKEeJuPPD@CCdpfx]yB`\\t-1.33\\nKAxXPTwQxIDYDEDIUMUSPAabXWD[`\\t-1.33\\nHedLPH[`\\\\J|LddUbuUUP@pYLJagd\\\\\\t-1.33\\nHmTLPHeP\\\\JBDjeUjjjT@XLfDwCrJ@\\t-1.33\\nHcM@@@wIHhdd]JuAPD@CBTpj[agP\\t-1.33\\nHcLH@NrRQRqYRmTDA@@pyLInW^PH\\t-1.33\\nHkLFb@RfgRhByIgeYfjjY`A`VDi`\\t-1.33\\nHctB`HY]AprRQVYJUTwL@LLSByF`\\t-1.33\\nHid@P@BJBDie_ahH@@FCAaMp|QJ@\\t-1.33\\nHeT@`@|LdbLRPsU@@@CC`bfxYxbX\\t-1.33\\nHmtD`AdOAJYUgedHF@@XLfDwKq@d\\t-1.33\\nHeTD`HDGCIIEXituTuP@piLKiy@`\\t-1.33\\nHiDLHJXXdDdLdNkLddlrjfh@^Ip`\\t-1.33\\nHcvL@NamrRQVYQUTuR@LFSBxUyD`\\t-1.33\\nHcvB@JFUwIIEJhiUULp@pZDpjgdZ\\t-1.33\\nHeTH`HAprRSPiCMT@@@LNpj[agdP\\t-1.33\\nHmtH`HApRi[WeZhH@@F@xUMproH@\\t-1.33\\nHetL@HR\\\\ddRJULLuUUT@LBpj[b\\\\H\\t-1.33\\nHefDpFjXdDdLdLddltUTuH@p`^Qp\\t-1.33\\nHedDjAeICI@iBiAiB^rRQR^UUS@B\\t-1.33\\nHcND@JADfUyU]Zj@@@FGEWCJ{rL@\\t-1.33\\nHmTH`HAprRQIIVjji@F@iaMproHh\\t-1.33\\nHmVH`DTGCIIEHizjjd@XMaTwSrA@\\t-1.33\\nHiDLPHS@BB\\\\LdaTRVjh@XES\\\\OD@`\\t-1.33\\nHedLPHZP\\\\A|LddUfUUMH@pILKnPH\\t-1.33\\nHmw@@@`Tke]Vy`@j@A`vESRoD`P\\t-1.33\\nHiFHb@E``IrRQUJjjPA`tIaTwHx\\t-1.33\\nHedJb@RfDj@nRYyyjjX@XYaSrF@\\t-1.33\\nHcuB@NFFW\\\\ddUfReULs@CCDpnQh\\t-1.33\\nHmv@@JrRQRiHYj`@`@XLfDtkrN@\\t-1.33\\nHmtD@@qJY{VUjh@@@X\\\\eMproDc@\\t-1.33\\nHctL@NF\\\\ddTlVuUSM@CAhSBW^Pp\\t-1.33\\nHmtD@@yJUe^Uj``@@XCATwCJ|a@\\t-1.33\\nHiDDpJzIAICICIIJeJjf@FDErA@\\t-1.33\\nHcLB@@RUR[fVQuhHF@@XHb|JnGP\\t-1.33\\nHcLB@@Q]R[e[neh@a`@XHf|HjzP\\t-1.33\\nHcLB@@Q]R[e]nEh@I`@XHf|Hj[`\\t-1.33\\nKAxA`@xPD\\\\DYIHjjjh@pZDpj[d\\\\\\t-1.33\\nHidD`HRgCIIEYLJjjh@XUaMp|a@\\t-1.33\\nHiFDpFhXdDdLdLddlrjfd@XPwHx\\t-1.33\\nHmVL@JFUrRQRjJjjY@FCPfET|c`\\t-1.33\\nHmvD@LADfueYUj`@@A`vMproDP`\\t-1.33\\nHmTH`DAprRQRKrjjf@FCXUMr|bP\\t-1.33\\nHmNH@BAIfUmaeX@@@@A`pXproHx\\t-1.33\\nHmVD@Aa\\\\ddUbajjjPAarXUMp|bP\\t-1.33\\nKAxX`Ia@tQDYIIcJjh@phHinxfD\\t-1.33\\nsGQBK@aPF`C@IUMT`NLdCHAPNR@\\t-1.33\\nsGQLJhCPA`Djfj`GFRAd@hDI^R@\\t-1.33\\nHcL@@LddTjTPsU@AP@LJSBW^YSR\\t-1.33\\nHmvD@DClbbbRJIfjVj@FEYSCOHT\\t-1.33\\nKAxX`Pf@xTxYIHkJjh@pHj[nHf@\\t-1.33\\nHmLH@@RYVuiiV@@@@@XLe\\\\Lkq@p\\t-1.33\\nHmtH@ErRQRiXYj`@`@X\\\\fTwBoHH\\t-1.33\\nHiDDPNDGA`cIIEUJje@FEPfEWHX\\t-1.33\\nHiDLPJxP\\\\FBLddUTjjT@XEBXWHX\\t-1.33\\nHiDL`HS@\\\\LddQTjih@XTUMp|QL@\\t-1.33\\nKAxY`DwQDIDYDYIIUJjX@prDsd\\\\\\t-1.33\\nHiDDPHXGBoCIIETjjj@FEIa\\\\OHh\\t-1.33\\nHmtB@HPYrRQHzZfjjfh@XEaToHX\\t-1.33\\nHiDDPFxGBoCIIEYjjZ@FEPfDOHh\\t-1.33\\nHid@b@|@eJYWxZB@@AarXUMp|`@\\t-1.33\\nHeTH`LCDRVyTYi`@@A`pQS\\\\OHd\\t-1.33\\nHeU@@@eJYW~F``H@FCIaTw\\\\PI@\\t-1.33\\nHmtD@@eIfUTUZBA@@XMaUpkrF@\\t-1.33\\nHaD@P@bFbDfUjz@H@AaPIc]rJ@\\t-1.33\\nsGXCJJAPF`C@CdjfjpGFRAd@h@\\t-1.33\\nHmUL@NFFWIIEYdjjYd@XXfErI@\\t-1.33\\nKAxQ`TdQdPTPeTuUU@FEIaMwHh\\t-1.33\\nHeV@@IrRQRiCMT@@@LJSBinIp`\\t-1.33\\nHmTL`HYP\\\\LddUfRjinPAabXWHd\\t-1.33\\nHctB@HY]rRQVYJUTwL@LLSByF`\\t-1.33\\nHmTB@NFUrRQRqRjif@FAPfEqAT\\t-1.33\\nHid@`@|DiyWaj@@@FCPUMp|PD@\\t-1.33\\nHiDD`HPGCIHdcJjj@FCXUMp|`@\\t-1.33\\nHmtD@@QIee^UZ``@@XLU\\\\LkrF@\\t-1.33\\nHidD`@RJAInUxZ`@@A`pHULOHx\\t-1.33\\nHeTD@@IJUmQfj@@@FCQS\\\\L|QB@\\t-1.33\\nHmvH@AAIYWYnh@J`@X\\\\FESRoH`\\t-1.33\\nHidH`H@HRme^Eh@@@XLaTwCr@@\\t-1.33\\nHiFL`FaL@HrRRjQZj`A`VEp|a`\\t-1.33\\nHidH`HAprRQVKajij@FEIa\\\\OHX\\t-1.33\\nHedD`HDGCIIEXiUTr@LJSBz^PH\\t-1.33\\nKAxX`Pw@xUxYIHkJjX@pILJnQp\\t-1.33\\nHmVL@NaerRQVYJjfi@FEIa\\\\OHd\\t-1.33\\nHmVD@NalddUfTjij`A`rXWRoHD\\t-1.33\\nsNqBbJBRBdMHCcNRRUUU@LEWrD\\t-1.33\\nHedH`DAprRQRKuUU@CAlJfz^PH\\t-1.33\\nHmVB@NaiWIIEYeJjZX@XDfEwHT\\t-1.33\\nHiD@bLhLyJgmjjh@X\\\\DIa\\\\ODi`\\t-1.33\\nHiD@bLhLyJgyjjh@XBDHUMp|c@\\t-1.33\\nHmtL@@SDfUmYUj`@@A`S\\\\L|Re@\\t-1.33\\nHiDDPNDGA`cIIEUJke@FFIa\\\\a`\\t-1.33\\nHiDH`HAprRIIFjjPA`rYS\\\\OD@`\\t-1.33\\nHedD`HdGCIIEXmUSR@LJSB[nPH\\t-1.33\\nHiDL`HXP\\\\LddUfjjX@XDfEwDXP\\t-1.33\\nHiDL`HxP\\\\LddUTjih@XDfEWDxP\\t-1.33\\nHcvD@AalddUffeUMU@C@TpnFUt\\t-1.33\\nHeTH@@RUYTYj`@@A`HQeMpsrD@\\t-1.33\\nHmTJ@H[iWIIEYeJjZX@XXfErE@\\t-1.33\\nHid@`@\\\\Die_ahD@@FGIaTwCr@@\\t-1.33\\nHidH`DBHR[e^FX@@@XDATOD[`\\t-1.33\\nHiDLpJXXdDdLdLddlrjfd@^Qp\\t-1.33\\nHiDBb@RnJ`Kdf]Yji`A`fCrB@\\t-1.33\\nHig@@@idiUWajjj@FDaBXUMp`\\t-1.33\\nKAxHPTtRBRFRGNfRRVZjZ@OHx\\t-1.33\\nHeTL@@SDf^UFVh@@@XES\\\\ODrP\\t-1.33\\nHiDH`HAprRQURjf`AaRXWCrJ@\\t-1.33\\nHedL@NF\\\\ddTlUUSH@pJDpnHp`\\t-1.33\\nKAx@`@xQDYIIcJjh@pjDinxfD\\t-1.33\\nKAxH`MpNEAFRRJrje@LBaLKdT\\t-1.33\\nKAxH`TpND^FRRJNjZ@LBSB{dP\\t-1.33\\nHaDH`@b`RVU[j@@@FEXUMwDB@\\t-1.33\\nKAxI`UtRBRFRFRRUJji@LHKdL\\t-1.33\\nHaDH`HAprRQVMuUU@CBdpf{dT\\t-1.33\\nHiUH@HPDiUWBxZVeh@XIp|Rf@\\t-1.33\\nHiFH`DDGAJiijjh@XLfES]rA@\\t-1.33\\nHiDH`HAprRQVJjiPAaRXWCrF@\\t-1.33\\nKAxHPTtRBRFRGUfRRVZjZ@OHx\\t-1.33\\nKAx@`PD\\\\DYIHjjjh@pZDpj[d\\\\\\t-1.33\\nHefD@Nb\\\\ddUTuUUH@pYLJf{dB\\t-1.33\\nKA|I@YBAxYICDjjh@phBinxdH\\t-1.33\\nHefL@NairRQVYUTt`C@dpny@`\\t-1.33\\nHiD@`F\\\\LddUTjjh@X]BXU\\\\OHX\\t-1.33\\nHiE@`HZoCIIEUJij@FAIgCqBh\\t-1.33\\nKAx@`AxPDYIIcFjh@pjDinxfD\\t-1.33\\nsNpbJyDJHtP_CIIKJi`FFbwDV\\t-1.33\\nHiFH@HGIIEKjjj@FCIaUp|a`\\t-1.33\\nHiDD`NDGCIIEUJkf@FFIa\\\\`P\\t-1.33\\nHidD@@EIYW[f@B@AaTXUMrA@\\t-1.33\\nHidH@@RYm^Fh@@@X\\\\FES\\\\OH`\\t-1.33\\nHefL@L@YRUeVjjh@XRDHUMpr\\t-1.33\\nHid@@DjUfaBB`@FCPfMp|Pj@\\t-1.33\\nHidD@@EIYW[j@B@A`pQaTwHD\\t-1.33\\nHmTL@HY\\\\ddUfRjinPAabXWHd\\t-1.33\\nHedD@F{IIEYeUST@LJSBF^Q@\\t-1.33\\nHedB@HXYrRQVZUTs@CCDpnQH\\t-1.33\\nsNpB@DQppPPaJYjj`FEDU_Eb\\t-1.33\\nKA|A@TCaddbjjj`CAhSB[nQP\\t-1.33\\nKAzA@QsAFRRJrjf@LJaLInQp\\t-1.33\\nKAxY@Pf@DYIIUEjh@pKB[nQP\\t-1.33\\nHiFH`APGAJiijjh@XUaTw\\\\`P\\t-1.33\\nKAxI@QpNFRRJjjj@LJSBinQp\\t-1.33\\nHiFD@Jx\\\\ddT\\\\jjX@XUBXP|b`\\t-1.33\\nHiFH@AcIIEXjjj@FCIaUp|a`\\t-1.33\\nsNxBB@bRBdMHYIIUUT@ppkyB\\t-1.33\\nHaF@B@BTjWzXHB@AaTIaUrN@\\t-1.33\\nsJXLHhCPA`H~j@\\\\YHFPB`\\\\d@\\t-1.33\\nHiDH`HApRjUZjj@FCIaMp|b`\\t-1.33\\nKAxI@QpNFRRJjjf@LBSB[bUp\\t-1.33\\nKAxI@QpNFRRJjjf@LBSBkbMp\\t-1.33\\nKAxI@P`NBUNuTt@XUaTw\\\\PD@\\t-1.33\\nKAzQ@Qs@xYIHkJjX@pJDpnQp\\t-1.33\\nHedB@H[irRQVYUTt`CCDpnPH\\t-1.33\\nKA|P@QvRRJjjj@LFSBinyD@\\t-1.33\\nKAxX@AaYHhdZjh@pjDinyA@\\t-1.33\\nHaF@@@Rfu[j@@@FC@fES\\\\c`\\t-1.33\\nHidH@@RYm^Eh@@@XUaTp|c`\\t-1.33\\nHaDH@@RVU[j@@@FCAFTw\\\\``\\t-1.33\\nHiDD@J{IIETjjj@FAPfEqFD\\t-1.33\\nHiDL@JX\\\\ddTZjfd@XXfErN@\\t-1.33\\nHaf@@@RiUkfzjjh@X]BXUMp\\t-1.33\\nHiED@NFFrRQVZjfPAabXWHD\\t-1.33\\nHiDD@NGIIEJjje@FAPfEqJX\\t-1.33\\nKAxQ@\\\\CaddbjjjPCBhSBkdL\\t-1.33\\nHiDL@HX\\\\ddUfjid@XXfErN@\\t-1.33\\nKAz@@QvRRJjjj@LFaLJfyG@\\t-1.33\\nKA|I@]C@xYIHkJjX@pqLKd\\\\\\t-1.33\\nHaF@@@RnU[fjj@FCIaTw\\\\b@\\t-1.33\\nHigL@Ds`XTfUfn`BH@FF@p`\\t-1.33\\nHigL@Ds`XTfUfnZif@GfIg@\\t-1.33\\nKAxQ@PCaddblji`C@dpnyC@\\t-1.33\\nHaDD@@yIe^f`@`@XDBUwDp`\\t-1.33\\nHaDH@@RYWifjj@FEIaTwHx\\t-1.33\\nHaDH@@RVU[f@@@FEQeMwHH\\t-1.33\\nKAz@@ArTjmUT@X\\\\DIaUwHX\\t-1.33\\nKAxH@UvRRJjjj@LBaLKbMp\\t-1.33\\nHiDL@HSDjeVjj`A`QTw\\\\`P\\t-1.33\\nHiDD@H[IIEYjj[@FFIa\\\\`P\\t-1.33\\nKA|A@PC`eTsUU@FEIaTwHx\\t-1.33\\nKAxA@@xYIHjjkh@pILInQp\\t-1.33\\nsNtDHpxTHrRQVjTA`Uc^Q`\\t-1.33\\nKAxH@QvRRJjjj@LJSBknPp\\t-1.33\\nKA|P@]FRRJjjj@LJSBknPp\\t-1.33\\nHaD@@DjUZxHD@A`tHUMwHp\\t-1.33\\nsJPJaPRPTai@r@zSGuPCrP\\t-1.33\\nKA|X@XB\\\\drzuU@FFXw\\\\Pj@\\t-1.33\\nsNxLGIARFdLddjjj@XQ|Qh\\t-1.33\\nKAxP@@djkUU@FG@fES]rH@\\t-1.33\\nKAxH@ArRjmUT@XLBXU]qHX\\t-1.33\\nHaF@@@RYe[hB@@FA@UMqLx\\t-1.33\\nHiDH@@RYuVjj@FCIaTw\\\\`P\\t-1.33\\nsOpIAVBTfUk`@@FEVM_H@\\t-1.33\\nHiDB@@QnRY^vjZ@FBDOHp\\t-1.33\\nsNpY@jsPGdf^Zj@XKGbk@\\t-1.33\\nsNpDADQpRYzjhAaPcWqS@\\t-1.33\\nsNpD@xTJrRQVjhAaXl[rL\\t-1.33\\nsJQBBGBQBbMDQ}T@ptVyB\\t-1.33\\nsGPL@DQppPeKUT@pHQoEL\\t-1.33\\nsFqlAcJATEhDiTvjhAyhj\\t-1.33\\nsNpD@xPHrRQVjhAaXl[rL\\t-1.33\\nKAxA@@xYIHjjkl@pqLKd\\\\\\t-1.33\\nsNyLGYHJPtaddeeUHCqU`\\t-1.33\\nsNpdE`tRHRkzjhA`XZ~HX\\t-1.33\\nsNpyhlZqVGkszOvj`FBV@\\t-1.33\\nsNqhHlGCIHcJj`FFM_LE`\\t-1.33\\nsNqhHlOCIHcJj`FAAkxe`\\t-1.33\\nKA|@@@djkuU@FEIaTwHx\\t-1.33\\nsNxHHGCIIEZj`FEVM_I@\\t-1.33\\nsNqhHlKCIHcJj`FFM_Dl\\t-1.33\\nsOpHAbILkW@@@LBEgqF`\\t-1.33\\nsNpH@xYIDYUT@phakxe`\\t-1.33\\nsJPLADQpTPdwU@LBEcrP\\t-1.33\\nsGXDHGByBUSUPC@kF|d@\\t-1.33\\nsGPDADQpRUjj@XTKF|d@\\t-1.33\\nsNqhHjGCIHcJi`FBsx``\\t-1.33\\nsJPlLQxRHTQGtpCAQ\\\\a@\\t-1.33\\nsGQhHlGCIIKUPCAF|tV@\\t-1.33\\nsNxHHpcIIEZjPFEbq_IP\\t-1.33\\nsNyHHpxYIHkUR@pJqoI@\\t-1.33\\nsGQdEbOBQFRRFZ`FDgDZ\\t-1.33\\nsGXhMDOCIHUUPCC@wfbp\\t-1.33\\nsOxA@IRi^lH@@XVKF|c@\\t-1.33\\nsNpIEPKdkejj@XFJofFH\\t-1.33\\nsNpIMP[dj_jj@XTQE|Vh\\t-1.33\\nsGXDHGBxBUSUPC@kF|d@\\t-1.33\\nsGXDHGBzBUSUPC@kF|d@\\t-1.33\\nKAzD@XPHwIMkMLpAxb\\\\\\t-1.33\\nsNqHHGCIIEZjPFAVMyF\\t-1.33\\nsOpHAHILkW@@@LLc^KL\\t-1.33\\nsNpHADIJkUT@pXbqoHp\\t-1.33\\nsNy@iYMyJijjPFFVOHp\\t-1.33\\nsGXLKIARFdLddmU@LDZ\\t-1.33\\nsNqhAVjAJYjj`FFfOEV\\t-1.33\\nsGQi@jZ@|dsmT@pfxcP\\t-1.33\\nsNpIEPKdkejj@X\\\\QXu`\\t-1.33\\nsNpH@xIRkUT@p\\\\VM_H@\\t-1.33\\nsGPH@xYIDZi@XVKF|`@\\t-1.33\\nsGPD@xTJRjZj@XFKGdh\\t-1.33\\nsNxHGGCIIEZjpFFVOI@\\t-1.33\\nsNphIPxYIDYUL@prsy@\\t-1.33\\nsGPhH`xYIHZj@XKGfbh\\t-1.33\\npnH@BTlzemUR@X\\\\QXu`\\t-1.33\\nsGXDHGBaBUSUHCCKGdh\\t-1.33\\nsNyHEAxIWKUT@pNM_DH\\t-1.33\\nsNyHEAxIR}UT@pNM_DD\\t-1.33\\nsFxHHOAIeMjj@XEXwd@\\t-1.33\\nsGPM@xRPT`Nc}U@LMcP\\t-1.33\\nsNtHHpxYIHkUJ@prqyF\\t-1.33\\nsGQ`HmddejhA`c^ZK@\\t-1.33\\nsNq@KddbmUPC@qX|c@\\t-1.33\\nsGY@iYMyJijhAaecrP\\t-1.33\\nsGPhAUPISMU@LML^IT\\t-1.33\\nsGPhHaXISuU@LMc^HH\\t-1.33\\nqCcRAZTDyIj`LINXK@\\t-1.33\\nsGPhCQbILuS@LLI^S@\\t-1.33\\nsJQDDH`qBS\\\\t@pPOI`\\t-1.33\\nsJPIAxBTiZhA`Xl^P@\\t-1.33\\nsNq`AbeLuUPC@qU|VH\\t-1.33\\nsJPBHxJPt`YBOj`Gd`\\t-1.33\\nsNphH`xIUKUT@pvkyB\\t-1.33\\nsGQHHGAJejhAaecqB`\\t-1.33\\nsJPdE`DPHRie`FDgDB\\t-1.33\\nsNy`LDtfuZj@X[U|RH\\t-1.33\\nsGQHBLQIejXAaaMqJ`\\t-1.33\\nsJQdEbOBQD_M@LINKD\\t-1.33\\nsOp`Jtjeqje`FBqxh`\\t-1.33\\nsGPhCQbILuS@LDIqZ`\\t-1.33\\nsNt@H|ddUje@XYX|c@\\t-1.33\\nsJYHEAxIVuPCAX|pb@\\t-1.33\\nsGXHHOAIejhA`Uc^P@\\t-1.33\\nsJPIEPKdkZhA`h^XK@\\t-1.33\\nsNqhHlOAJeZj`FAAk@\\t-1.33\\nsNx@GddbmUPCBqXodh\\t-1.33\\nsNpH@xIUMUT@pjqkyH\\t-1.33\\nsGPhH`xISuU@LMc^HH\\t-1.33\\nsNq`@jdrkTpCAE|f@\\t-1.33\\nsKRAADQJTnKT`OLE`\\t-1.33\\nsNx`JDdrkUPCCFodp\\t-1.33\\nsNy@DDeeZj@XZX|UX\\t-1.33\\nsGP`@TfVj`FEDVOIP\\t-1.33\\nsJPhH`DIVmPCAX|`@\\t-1.33\\nsNp`@dfUZf@X[F|c@\\t-1.33\\nsJPH@xISuPCCSGbB@\\t-1.33\\nsNp`@df^Zj@X[U|a@\\t-1.33\\nsGPH@xIUMT`LBl[rP\\t-1.33\\nsGPhHPxISuS@LDkr@\\t-1.33\\nqC`HAps`dmPFBbxa`\\t-1.33\\nqC`HBHTPduPFFBwI@\\t-1.33\\nsNx@GddbmUXCCKGd`\\t-1.33\\nqCcRQXV@zOTAaAsQX\\t-1.33\\nsFy@LDigVfhAaEqF`\\t-1.33\\nsJPLAHJPL`dwS@OI`\\t-1.33\\nsJPDAxPHcvhAaIsKD\\t-1.33\\nsGPH@xIUMT`LCEcrT\\t-1.33\\nsNu`LPfdvkSHCqJ`\\t-1.33\\nsJPXHlPjQzt@pfyB\\t-1.33\\nsNqP@mVdssTpCqY`\\t-1.33\\nsGQ@JeTuT@pLVOIP\\t-1.33\\nsGY@LDizj`FFQoI@\\t-1.33\\nsGP`Adinj`FFQoI@\\t-1.33\\nqCpPP^BRu@XI[bD@\\t-1.33\\nqCqPZH^D^hCBCfbp\\t-1.33\\nsGY@DDeYj`FFqoED\\t-1.33\\nsJQIH@`SGmPC@aX`\\t-1.33\\nqCpRPA@eIj`LDmr@\\t-1.33\\nqCpRP^@eIj`LDmr@\\t-1.33\\nqCcPQXJd]XCB[d@\\t-1.33\\nsJQ@@eKU@LML^Q@\\t-1.33\\nsJP@DkVhA`Pl^R@\\t-1.33\\nqCbPXUbRt`XHSdP\\t-1.33\\nsGPP@mTf]jPGbq@\\t-1.33\\nqC`PBHRZhCCA[d`\\t-1.33\\nqCpHXRBdDfj@|Tp\\t-1.33\\nsBP@DiVj`FBFxh`\\t-1.33\\nsJPXHlQiQzl@|a@\\t-1.33\\nsJTILPyAdiZ|Ay@\\t-1.33\\nsJPHIxQ}T@prqyH\\t-1.33\\nqC`R@HDqz`LBHl\\t-1.33\\nsJP@DjVhAaecrP\\t-1.33\\nsJT`LPdfvdAxdP\\t-1.33\\nsGP`ATeUnPGba@\\t-1.33\\nsJPYHlQiGh}V@P\\t-1.33\\nsJPYHlPZGh}V@P\\t-1.33\\nqCr@XISRA`enR@\\t-1.33\\nQMA@HoAIXFD\\\\Y@\\t-1.33\\nQMACp_AIhFE\\\\Q@\\t-1.33\\nqC`@ISJAaaErX\\t-1.33\\nQMJd|BTf`XL|`\\t-1.33\\nQMFIDjN`XQqd\\t-1.33\\nQMFajByIhGfR\\t-1.33\\nqCh@CIRrAxe`\\t-1.33\\nQMFiK@zN`^YH\\t-1.33\\nRFQALXOD`\\t-1.33\\n`IGPCr@\\t-1.33\\nHiT`@@rnRfUjEnBB`PA`bMqLD\\t-1.33\\nsGY@DDf]j`FBVxcP\\t-1.34\\nQMdXZWde`^T\\t-1.34\\nRFDDaFCr`\\t-1.34\\nHev@@@rRIIRus]UUUP@pFDJfxYyF@\\t-1.35\\nHaE@@@aJyUnX@@@XEeMwD``\\t-1.35\\nsOpHAbILkW@@@LJEb~R`\\t-1.35\\nsKX@@eKcUPC@bX|b@\\t-1.35\\nsGP`ATf]jPFDwDb\\t-1.35\\nHcND@LCTeme^UZh@H@F@iaMpsoH`\\t-1.35\\nHiT@@LddTQQnFjjj@FGPfESCrN@\\t-1.35\\nHeT@@DjU]k``b`@XMBXUMqAd\\t-1.35\\nsKP`@Tixjj@XZK\\\\a@\\t-1.35\\nsJX@@dmU@LBEcrP\\t-1.35\\nQMA@HPaIhFE\\\\Q@\\t-1.35\\nQMBBHRZA`cr`\\t-1.35\\nsJX`BDdvu@LInID\\t-1.35\\nHeTLbHS@BL{IIKDdLkP@@@pragbMp\\t-1.35\\nsOq@@drm\\\\@@@pHM_Dl\\t-1.35\\nHidH@@RYfVF@b@@XXAMsJxP\\t-1.35\\nsGP@DiVj`FADMxe`\\t-1.35\\nsJPhH`DYIBm@LInHD\\t-1.35\\nsJQhHlOAJmj@XS\\\\PH\\t-1.36\\nqCaPQCpRfhCsAX\\t-1.36\\nQMJH|Df`^H`\\t-1.37\\nHeTB@@xYRfUVfjjj`AatES\\\\L|QL@\\t-1.38\\nsGP@DkUj`FEDVOIP\\t-1.39\\nsFt@AdiTt@@AaIsHt\\t-1.39\\nqCaPQCpRfhCBKbF@\\t-1.39\\nHg}B@DpAV|bbbRbrK]imUMMU@CAlJnN~IN`\\t-1.4\\nHcnH@LAIYe_x^fjjjj@FDhUMprn|PH@\\t-1.4\\nHeTD@@QIVUnEjjj@FCXS\\\\L|RJ@\\t-1.4\\nHidH@@rJJIEn`HH@FA@UMqLD\\t-1.4\\nKAxP@@dsjuU@FEIaTwHx\\t-1.4\\nKAxH@@bSJkTt@XEaTwHx\\t-1.4\\nsOx@@drm]UT@pXbM_I`\\t-1.4\\nsOq`Afdlm[UT@pbyhZ\\t-1.4\\nsOp`@dfUMZj`FFqoHp\\t-1.4\\nsJPHAVIJuPC@bK\\\\a@\\t-1.4\\nsGPhLQDIK]M@LDKrP\\t-1.4\\nsFy@LDi_FfhA`d^JT\\t-1.4\\nsJQHBGAJ^i@XJKbF@\\t-1.4\\nsKY@LDi\\\\ZZ@XQ\\\\TH\\t-1.4\\nqC`PCDRVhCCB[dP\\t-1.4\\nsGQ`@bdwML@pbyJ\\t-1.4\\nqC`PCDRZhCCBKdp\\t-1.4\\nQMaDbKpRZAaGFP\\t-1.4\\nqC`@IRtAa`mrP\\t-1.4\\nQMbh|BTf`XSqH\\t-1.4\\nqCr@XIKVAxa@\\t-1.4\\nRFTEPQP|h\\t-1.4\\nRFTPbQP|`\\t-1.4\\nsOq@@drm\\\\@@@ppUylV\\t-1.4\\nHidH@@RUe^Fh@@@XLATwCqHP\\t-1.4\\nHifDAHAHeNR[e^Eh@@@XHW\\\\rfD\\t-1.41\\nHidB@@kaReYrZjjh@X]FES\\\\OHP\\t-1.41\\nHeT@@DjU_k``b`@XCBXUMp|bP\\t-1.41\\nsGQhHlOAJmZhA`c^P@\\t-1.41\\nsOq@@drm\\\\@@@prsy`Z\\t-1.41\\nQMFIKBN`^YH\\t-1.41\\nsNy@DDeUZj@XEXwbc@\\t-1.41\\nHmtJ@@siUJYn~ajjjh@XCBDwCJ|SJ@\\t-1.41\\nqCaPQCpRmhCqC@\\t-1.41\\nsGX`LDdvmT@pVODj\\t-1.42\\nqC`XBPTaiAIj`OI@\\t-1.42\\nsNqiHl@c]ddeRuPCAF|c@\\t-1.43\\nQMRIOBN`^YH\\t-1.43\\nsGQ@@djmT@prqxiP\\t-1.43\\nHeT@H@bBbFbAbDfYnzXHb@@XDALODzP\\t-1.44\\nHif@`D@HRUe^EX@@@XTATw\\\\`P\\t-1.44\\nKAxH@@bSZsUT@XTaTw\\\\c@\\t-1.44\\nsNy@aAL{IILZj`FAVMyF\\t-1.44\\nsGY@aALyJkjhAaecrT\\t-1.44\\nsNp`@dfUZf@XHwbs@\\t-1.44\\nsJY@aALzOj`FBVyB\\t-1.44\\nqC`@IVtAa`mrP\\t-1.44\\nQMPBchFBWI@\\t-1.44\\nsJP`@TeZhA`QL^Q@\\t-1.45\\nsJQiHlOC\\\\eVu@ODB\\t-1.45\\nsJT@@TeZhA`QEnP`\\t-1.46\\nqC`@IWtA`hnS@\\t-1.46\\n`IoQHFD\\t-1.46\\nHidD@@QInUxV`@@A`RES\\\\Sa@\\t-1.46\\nHet@@DjYUX^d@@@@AarXUMp|bP\\t-1.46\\nqCb@AIZ`LLInQ@\\t-1.46\\nsOpH@DILkW@@@LJlZ~P@\\t-1.46\\nj`iA`@@V|eLsJnmARMiu@A@DT@@LFDYqQg\\\\pJw`\\t-1.47\\nJoBAQDIg@DYvRRVJKIIRmnmA@@@@AaS]ioqAl\\t-1.47\\nJoBAQDIc`DYvRRVIJYKCIvm@@@P@AaULJoqML\\t-1.47\\nHknJcEaLtp|LyYOdj~UvFVh@I`@XES\\\\OH@\\t-1.47\\nJobB@@VeLsJntLgkt@D@Q@@FCDwJ[|p]l\\t-1.47\\nHmL`B@aBB\\\\dRabRpiUj`@P@XTwCJ|PL@\\t-1.47\\nHk^@@@rRJFIQDYtz`@@@@F@ie\\\\Lz_HT\\t-1.47\\nHmtBbHSBCpKlddqbReVj@@@FAMpsqLT\\t-1.47\\nHcNBAHAEvISdfyW[aZ@BX@FAES]rM@\\t-1.47\\nHknJ@D@ae\\\\bbbRtJifjiZh@XYc[rC@\\t-1.47\\nHcLBbHSBCpKdjm{U]Zj@@@FA\\\\LkqFt\\t-1.47\\nHid@p@bFbAbDfUfn`BH@FE@fLOHx\\t-1.47\\nHeVD`Aa@BLdabRgRl@P@C@bkix`B\\t-1.47\\nHid@P@bH\\\\Df[Waj@@@FGAaTwCrH@\\t-1.47\\nHcNJ@LANF\\\\bbTRbILuTmT@LH[bKh\\t-1.47\\nHmMH@LhDigm\\\\jUid@H@FAMpsqDT\\t-1.47\\nHeT@`@\\\\DieUzZBA@@XBfES\\\\L|`@\\t-1.47\\nHmtH@@RYeY[hBBh@FGAaTLkrN@\\t-1.47\\nHifDAHAHeNR[e^Eh@@@XXwCqBh\\t-1.47\\nHmvJ@LANFTfVVRYjiZ`AaC\\\\RU@\\t-1.47\\nHeTH@@RYe\\\\YjB@@AapES\\\\L|RL@\\t-1.47\\nHcLH@@RYeYVz@`j`@X\\\\FEProHt\\t-1.47\\nHaD@b@|@eJ[Unh@@@XLfES]r@@\\t-1.47\\nHidH`ACDRYWZZ@BP@XTBXU\\\\c`\\t-1.47\\nHiTH@@RgeXSaj@B@A`tES\\\\OHP\\t-1.47\\nHaDH`HApRnU[j@@@FCQaTw\\\\`@\\t-1.47\\nHeTD@@YIfUqehH@@FEEWCODq`\\t-1.47\\nHid@`@qDee]nh@H@FCAFES\\\\`P\\t-1.47\\nHid@@LddRL[jjj`A`tIa\\\\ODi`\\t-1.47\\nKA|Y@]BX@QddeRVj`C@lJfyG@\\t-1.47\\nHeTD@@QIemQej@@@FAESSqND\\t-1.47\\nHifH@AAJ[W[j@B@AaRXUMrA@\\t-1.47\\nHif@@@RfU~F``@@X\\\\BXS\\\\OHh\\t-1.47\\nHif@@@RUe^Fh@@@X\\\\DHUMwHD\\t-1.47\\nHidH@@RUe^Fh@@@X\\\\DHUMwHD\\t-1.47\\nHaD@P@dNdDfUZZ@B@AabDwHp\\t-1.47\\nHif@@@RYWZZ@B`@XLBXUCrN@\\t-1.47\\nHeVB@LANEIeeRYjiZ@FDMqJd\\t-1.47\\nsJQL@hCPA`DijhAqd`Y@JArP\\t-1.47\\nHaDH@@RVU[f@@@FEQaUwHX\\t-1.47\\nHaF@@@Re]J`@h@FEPfDwHx\\t-1.47\\nHaD@@DjWzXHB@A`TYW\\\\QB@\\t-1.47\\nHaFL@LAFRYUJfjZ@FDUqLx\\t-1.47\\nKAxD@@c\\\\dwLuS@FFIg\\\\b`\\t-1.47\\nKAxH@@rTzmST@XDfEwDb`\\t-1.47\\nKA|P@HBSJsTt@XTfTw\\\\``\\t-1.47\\nqC`XBHTQhAIj`NIdBBByH\\t-1.47\\nsOpHAxILkWUU@LGEcWr@\\t-1.47\\nsGQHHGCIHcUPC@kF|`@\\t-1.47\\nsOx@@drm]UT@pXbqoHp\\t-1.47\\nsGQHHGCIHcUPCCHwbF@\\t-1.47\\nsNqHHGCIHcJi`FFV_DJ\\t-1.47\\nsGPH@DIJmU@LJHl^R`\\t-1.47\\nsNp`Jtjejj@XVXu|b@\\t-1.47\\nsJPDAbGDRUj`FADqyD\\t-1.47\\nsGXA@IrRHuR@plVMy@\\t-1.47\\nsGPhCQDILmR`LDIqK@\\t-1.47\\nsJQDDGBQD_U@LML^Q@\\t-1.47\\nsNy`LDtfuZi@XKGbU@\\t-1.47\\nsNx@@djoUPC@kF|c@\\t-1.47\\nsNp`@dfvZj@XEZodH\\t-1.47\\nqC`HBHtPdmPFFDwH`\\t-1.47\\nsGQHDHaInfhAa`[rX\\t-1.47\\nsNq@@dssUPC@hu|f@\\t-1.47\\nsJPHAXIRuPC@qX|`@\\t-1.47\\nsGPP`cUuyInZXA@\\t-1.47\\nsJQ@@eMU@LLl^R@\\t-1.47\\nsGQ@@dsMT@prMyL\\t-1.47\\nsJQ@@dmU@LBHmrD\\t-1.47\\nQMCCDoAqDf`XH|h\\t-1.47\\nsGT@ATeWfpGbV@\\t-1.47\\nQMABHWAIhFBWI@\\t-1.47\\nQMBcpIchFCOH@\\t-1.47\\nqC`@IS^Axe`\\t-1.47\\nRG@aMt\\\\OH@\\t-1.47\\nQM`PfzO`^R\\t-1.47\\nQMFIOBMP^P\\t-1.47\\nQMPARUAxb\\t-1.47\\nHaFH@BAIf]n``@@XYe]s@I`\\t-1.48\\nHg|H@@RfUYwySn``@@@@XJfDwCNg_HT\\t-1.48\\nHet@@DjYUX^d@@@@A`rDwCODr`\\t-1.48\\nsGX`BDdvmT@prqyJ\\t-1.48\\nHifDAHAHeNR[e^Eh@@@XXUMqND\\t-1.48\\nRF@Qp|R@\\t-1.48\\nsJPXhlQx[ct^u@OH`\\t-1.48\\nsJPhHaxIRuPCsCD\\t-1.48\\nQMFIOBN`^YH\\t-1.48\\n`IK@Cr@\\t-1.49\\nHaD@@DjWjXHB@A`f]phRf@\\t-1.49\\nsGQ@@eNuT@ptqxeP\\t-1.49\\nqC`XCDVIlQIj`LLEnR@\\t-1.5\\nHif@@@rRJEKaj@@@FCIaTw\\\\`P\\t-1.5\\nHaDH`H@HRnU[f@@@FEXUMwH@\\t-1.5\\nsGP`AdeUj`FBMxh`\\t-1.51\\nsGQ`@jdrmR@|VH\\t-1.51\\nsNx`DFdkKUHCCKWba@\\t-1.51\\nqCh@CIKTAaaErX\\t-1.51\\nQMBCDRYAaGFP\\t-1.51\\nHiT`@@rnRfUjEnBA``AabMwHD\\t-1.51\\nsJY@DDfvdAaMqH`\\t-1.51\\nsJQ@@dkU@LCEcr@\\t-1.51\\nRF@QPpce@\\t-1.51\\nJoBA@@YviSJwZ}C[uUTDA@@XSA\\\\LkiwsDip\\t-1.52\\nJgBD@@YHhhhddZFSvz@B@B@@LFInT{y`sh\\t-1.52\\nHcND@BADf{YU]Zj@@@F@ie\\\\LkoHH\\t-1.52\\nHid@`@BDiyWaj@@@FGAATwCrD@\\t-1.52\\nHeTD@@eJ[WVz`@h@FEIaTwDFP\\t-1.52\\nHidH@@RYWZZ@B`@XLBXUCrN@\\t-1.52\\nsOx@@drm\\\\@@@pHM_Dl\\t-1.52\\nsNp`ATfUjj@XTQF|VX\\t-1.52\\nsKP`@Ti\\\\Zj@XJ[dP\\t-1.52\\nsJQ@@dmU@LML^HH\\t-1.52\\nqCcRQX^FzNtAaEr@\\t-1.52\\nsNx`BDdw[UPCCKWbK@\\t-1.52\\nHmtL@@QTfyeQehBA@A`ULL|QN@\\t-1.53\\nHk^H@DAInUm^GSZ@@@@@XLWRngqDh\\t-1.54\\nHmNh@DkaTDfVYVzUZiYj@FFHL|aP\\t-1.54\\nHmLD@@QIe[VfeVi@B@A`U\\\\J|SI@\\t-1.54\\nHaF@@@RYe[hB@@FEAaTwHx\\t-1.54\\nKAxD@@c\\\\dr|uS@FDYqBx\\t-1.54\\nsNu@EPdrkUPCCKWbK@\\t-1.54\\nqC`HBHc`dmPFFBwI@\\t-1.54\\nsGQ`@bdwMT@pvMyD\\t-1.54\\nsGP`@dfUjPFBuyB\\t-1.54\\nsJP@Dk^hAahmrD\\t-1.54\\nqCa@BIWTAaMqQ@\\t-1.54\\nQMABHcAIhFBWI@\\t-1.54\\nqCaPSAXRVdCqA@\\t-1.54\\nsJP`@dfvlAxdP\\t-1.54\\nqCb@AIV`LEMrH\\t-1.54\\nqCp@AI^`LInQ@\\t-1.54\\nRFBFIFDXLHyP\\t-1.54\\nQMBBpRZA`sr@\\t-1.54\\n`IC`Cr@\\t-1.54\\nqCq@XIIf`ODl\\t-1.54\\nsJP@DiVhA`QD^S@\\t-1.56\\nsGP`@TfUi`FDwDj\\t-1.56\\nqCj@KAIV`LDmrP\\t-1.56\\nHev`@@rfeJY{ZxYBBFH@XXfCrI@\\t-1.58\\nHmN`@@rfeJY{^nFP`ah`AabXOHT\\t-1.58\\nsGP`ATiVj`FAbuyB\\t-1.58\\nJoBD@@ISZzrk][t@E@@@@XJfESKiv\\x7FHD\\t-1.59\\nHg|@@DjU^Uzx{BB@`@@FDpaTLki|SK@\\t-1.59\\nHeV@@@RfU\\x7FahHB@A`rXUMwDBP\\t-1.59\\nHie@@@aJVuxV`@@AaQTwCrL@\\t-1.59\\nHaE@@@aJyUnX@@@XUaTw\\\\b@\\t-1.59\\nqCb@AIVPLInJH\\t-1.59\\nHg|H@@RYfUWd}mh@@@@@XBUMprn|P{@\\t-1.59\\nj`qAB@G@bDfYeU\\x7Fd[Uj`@@B`@AahAJLxJRmV}rD@\\t-1.6\\njdyP@@@^Rfuue]f\\\\lyjVX@Jh@AaiFBTXkQkAcr@`\\t-1.6\\njhyQ@@LT@eL}klkbde^CSH@P@P@@pds`iFl{p^PP\\t-1.6\\njhia@@G@RYfUW~d[Uj`@@Bh@@XFA@eF\\\\EIVoAyBp\\t-1.6\\nj`q`@@@YIEBedhdnB]zh@J@@@@XZQ`eF\\\\tZso\\\\aH\\t-1.6\\nj`q`B@K@|DifUW~EiQj@@@J`@AakAJLxJRcN}r@@\\t-1.6\\nHgl@DLdBdJdFdAdIdCdKdLddTbdYeUUTt@LD{^Ph\\t-1.6\\nj`q`@@@YIEBedhdnB]zh@J@@@@XZQ`eF\\\\ehug\\\\ax\\t-1.6\\nj`q@`@@LRYfWg^Qg^jB`@@@@FE`PIQ`iJtZso\\\\a`\\t-1.6\\nj`qH@@@P]yJVYU_yFuYh@@@d@@XRIQgARUjwH^@\\t-1.6\\njhiP@@@NRYfUW~d[Uf`@@Bh@@XZ@RcNBdkW`|aX\\t-1.6\\njhi`@@@ISLwZkf|xMUP@@@@@LO@``cNBdkQkN|D\\t-1.6\\nj`qa@@D@RYYUg^Qg^Z``@@@@FDdTXkQkN}sAAR@\\t-1.6\\nHglLxJ[hBLdBdAdIdCdKdLddTbdYeTmUT@LHwdJ\\t-1.6\\njdyP@@@QrJJJJjIJILEYtADP@U@@CAPBTYqVoAb\\t-1.6\\nj`q@@@DjYVWWyjwhI@HA@@A`YFJLxJRmFm{dG@\\t-1.6\\njhia@@G@RYfUW~d[Uf`@@Bh@@XJIQgARUkp^Pl\\t-1.6\\nHg^BpLaIT@b`aiCIICEELb]kU@h@@LJx]N~QP\\t-1.6\\njdip@`OAbBPIHJdKRBSLwKKnpTuSMU_h@OHR@\\t-1.6\\nJoB@Q@^@SddbbaRRrv[uP@@@@@XVFES\\\\Lkivx\\t-1.6\\nJoB@P@NFRRJJEIKKYoU@@@@@AanTwCJz]orB@\\t-1.6\\nj`q@`@@^RVUvUugCVX@H@I@@F@lDhrRmFxbC`\\t-1.6\\nHkLLHDYP\\\\HbJ\\\\I\\\\LddqdQdjjjj@FGQa\\\\NgrE@\\t-1.6\\nJoB@H@^@~BULrj~mf}PA@@@@FAaaTwRng[|`P\\t-1.6\\nHctHXMRPrPjPZPFPfPrRQRFDuUUT@LLy]yA@\\t-1.6\\nJoBDH@QPIPIS\\\\rjzv[uP@@@@@XKS\\\\Lkiv\\x7FHP\\t-1.6\\nJoB@@FRQQIQKH}moAHA@@@AajYS\\\\Lz]orE@\\t-1.6\\nj`aP@`G^AHDdERAiAIf[eWvBfjYjoP@^HyH\\t-1.6\\nHkn@PHApiprRQJFIGSjhJ@@A`lXS\\\\Lki|b`\\t-1.6\\nJoC@PD@xIU\\\\vjzv[uP@@@@@XZUMprng[|b@\\t-1.6\\nHg\\\\BPHSS@HxHrRPqQISKZtD`h@CAjXYV~Qp\\t-1.6\\nJoBAPDIa`DYIIUHiEEMrzuUUMT@F@xPrnvx\\t-1.6\\nJoBDPD@xITlvjzv[uP@@@@@XZUMprng[|`@\\t-1.6\\nHgmL`JULHOCIIEIRdiMUUU@CA\\\\JfxYT{yF`\\t-1.6\\nHg\\\\@x@dBdFdAdEdCdKdDfYn\\x7FnfBHbj@AyF`\\t-1.6\\nHknBPLaFx@``cIHXhhTmMZe@@@FECJz_D@`\\t-1.6\\nHg\\\\JPHSAd@b`cIIBhhd]ikTB`P@LJ[ev~QP\\t-1.6\\nHo~L`LaC@HrRPjJIKG[VhJAH@FGYS\\\\noqAd\\t-1.6\\nHklBPHQ]@HxHrRPqIJJSV``T@A`qTpr_Hx\\t-1.6\\nHklDPDp@b@cIIDXdmevV``H@FGQS]JgrA@\\t-1.6\\nHklHPHApiprRQJFIGSjhJ@@AaNDwCJz_Hh\\t-1.6\\nHctLpHS`\\\\J\\\\F\\\\LddRLbeUUU@CClIae]yG@\\t-1.6\\nHg^L`LaM@HrRPjIIHjZuA@d@CAl[iV~IP`\\t-1.6\\nHedFIDpnFPBHBJBFBBz^rRQURRuK@CAHh\\t-1.6\\nHg}@@@aJVYU^Svz`@@@@A`HMprnwphJc@\\t-1.6\\nHkLLPDtp\\\\ABLddTbLLjjje@FGXUMtkrA@\\t-1.6\\nHmTHHDApbHipVHRjvYjjj`A`LXS\\\\LkrJ@\\t-1.6\\nHcMB@hDDWXeNF]yInUnzV`BF@AaaUwHd\\t-1.6\\nHg|H@@RYfUWd}nh@@@@@XJDES\\\\LkoDNp\\t-1.6\\nHg\\\\D@HkIIDhTeDmuTDE@@LIpfzUt{y@`\\t-1.6\\nHcLDPDp@b@cIIDYdmJrt@D@CAh[ag^QP\\t-1.6\\nHmTDpHPGBgAgCIIDcEJjjh@X]aUproHX\\t-1.6\\nHcL@P@|I|DifUl]hJB`@FDiaTwBn|PI@\\t-1.6\\nHg}@@@mIe]e^ftx@H@H@A`HHUCJwqLt\\t-1.6\\nHg~@@@RYfUWd}mh@@@@@XJUMprng_H@\\t-1.6\\nHedLhDp`BJdFdAdIdLddTgdmUP@|Pn@\\t-1.6\\nHg|H@@RVUvU[cm`@`@@@XCaTtki|RK@\\t-1.6\\nHmtDPDp@b@cIIKDeafV@B@AaUMpkrH@\\t-1.6\\nHmvD`La@BLddNbReUjjj@FCTwCJ|SB@\\t-1.6\\nHk\\\\H@@RfYU\\\\]Tz@@@@@FDxUMprn|`p\\t-1.6\\nHmV@PHApEprRQQMRjjj@F@iaTwRoHD\\t-1.6\\nHeVD`La@BLdaTRPrmUU@CAbinF^HF@\\t-1.6\\nHiD@H@\\\\HbNdAdLddqTjjh@XUBXU\\\\a`\\t-1.6\\nHmtJ@@IaUIf[oijjjh@XJDIaTwBoHd\\t-1.6\\nHmUH`Dr@|LdbTLTjjj`A`HES\\\\LkrL@\\t-1.6\\nHmtD`HP@cIICLeaeZ@B@AaUMpkrB@\\t-1.6\\nHmtD`HP@cIICDeiUZA@@A`qTproHx\\t-1.6\\nHmUD`LJD@HrRPqIIZjj@FCTwCJ|``\\t-1.6\\nHk^D@DBTfYYwimMjdDB@A`vMpkoHL\\t-1.6\\nHiDDpDXGBHbgCIILYJjj@FEQa\\\\OHX\\t-1.6\\nHmtD`HP@cIICDeiUZB@@A`qTproHx\\t-1.6\\nHmU@`HPGCIIEDTjjjh@XCaTwCJ|a@\\t-1.6\\nHedAQHSBkad@a``nglddNTbuRp@`\\t-1.6\\nHcNJ@D@ae\\\\bbbRtMLuUKT@LDqnQh\\t-1.6\\nHcL@@DjU_VnBAId@FBpfES\\\\LkrM@\\t-1.6\\nHeTL`HRPBLdabRwBl@D@CBbingd@\\t-1.6\\nHmLD@@qJY{WJeZj@B@A`tMproDR`\\t-1.6\\nHmvH@H[IIEDYNFjjj`AarXSCJ|c`\\t-1.6\\nsFpF@DSpPQ``~EBDf_EjXA`Pm^JD\\t-1.6\\nHk\\\\H@@RfYU\\\\]Tz@@@@@FBxUMprnf\\t-1.6\\nHmt@`@|DifUqV`hH@A`JXS\\\\Lkq@h\\t-1.6\\nHiDHPDApbHrRPqRjj`AatXUMp|a@\\t-1.6\\nHg_@@@jteem]YWizV[`A`S\\\\L|cP\\t-1.6\\nHiDHPHApIpRiYjjj@FG@fTwCrB@\\t-1.6\\nHcLH@@RYWeUuiX@@@XBfEprn|b`\\t-1.6\\nHiED`LJD@HrRPiIZj`A`UMp|SB@\\t-1.6\\nHaD@R@bNhNyIe^f`@`@XTBXU\\\\c`\\t-1.6\\nHeV@B@B\\\\dbaRwBuRs@CAdpj[nQH\\t-1.6\\nHmV@@@rRJJIjjjj@FDpfES]J|`P\\t-1.6\\nKAxUBPfEp^F\\\\WYIIbfjh@pRnyC@\\t-1.6\\nHeth@DkiAIeeVxYZiVh@XH`|Pi@\\t-1.6\\nHiE@`HPGCIIDbjjj@FCXUMp|RD@\\t-1.6\\nHeU@@@eJYW~F``H@FGIaTwSr@@\\t-1.6\\nHmtD@@QImYVUZh@@@X\\\\fMproHH\\t-1.6\\nHcM@@@uIVUux^ZV[`A`QTw\\\\QI@\\t-1.6\\nHiDNPHSB[a@XhXrRPzQZe`A`aB\\t-1.6\\nHeT`@@`YRnUunX@I@A`VES\\\\RI@\\t-1.6\\nKAxD`Pc\\\\@QPQddJTVYPCALKbAP\\t-1.6\\nHif@`HApRkm^Fh@@@XMaTwCq@`\\t-1.6\\nHeTL@HP\\\\ddRUQ]UUU@CBlJfgd\\\\\\t-1.6\\nKAxH`P`NENFRRJrjj@LJpj[nP`\\t-1.6\\nHif@B@B\\\\dbaRxVjV`A`rXUMwHD\\t-1.6\\nHmu@@@UJf]|YjB@`@X\\\\aTwBoHp\\t-1.6\\nHaD@P@bH|DeeVz`@@A`pXUMwH`\\t-1.6\\nHeeH@DhLbbTJcUUP@pyLinF^PP\\t-1.6\\nKAxY`Pf@DMH]HYIHUEjh@pbnPP\\t-1.6\\nHiDB`HSACprRSIEjjPAaaTwHx\\t-1.6\\nHeU@@@gIHhTmpu@A@@pyLJfzP\\t-1.6\\nHef@@@rRJJIuUU@C@XPj[agdX\\t-1.6\\nHmvJ@LANF\\\\bbTReIfjej@GbLh\\t-1.6\\nHeg@B@J`gIHhXhuUT@LFSFxY@\\t-1.6\\nKAxAPAHIHEHMH]HIMwTuPAyE@\\t-1.6\\nHidL@HP\\\\ddRNijji`AafEWD[`\\t-1.6\\nHeTD@@eIYWVy`@d@FFXU\\\\rFD\\t-1.6\\nKAxQ@PC`eWMUU@FG@fES]rH@\\t-1.6\\nHeTH@@RYyTYZ`@@A`rTwCOHp\\t-1.6\\nHifH@AAJ[W[j@B@AaVESCrD@\\t-1.6\\nHidH@@RUe^Fh@@@X]BES\\\\OH@\\t-1.6\\nHaDL@@[die\\\\jjj`AaTXUMqDx\\t-1.6\\nHiFD@LADfWYjj`A`VMp|Pj@\\t-1.6\\nHifH@DAIVUxU`@@A`QTw\\\\`P\\t-1.6\\nHiEH@DHDf{Yjj`A`vES\\\\OHP\\t-1.6\\nHiD@@LdbJTZjh@X]BXUMwHD\\t-1.6\\nHaDD@@YJ[tjjjh@XDfEwDb`\\t-1.6\\nHeVJ@LANFTfVVIfjeh@^Ht`\\t-1.6\\nKA|H@XBIMkMUPA`VTw\\\\QB@\\t-1.6\\nHaFH@FAIe^fZjh@XDfEWHx\\t-1.6\\nsGPL@xRHTQddajhA`Xl^R`\\t-1.6\\nKAzP@I`ILsUUPAaTES]r@@\\t-1.6\\nKA|X@DB\\\\dwZuT`FAIaUrF@\\t-1.6\\nHid@@Di[Waz@@@FEES\\\\OHp\\t-1.6\\nKAz@@@VRQPrjZ@LBSF{dT\\t-1.6\\nHifB@LANEIeeIfje`AxeL\\t-1.6\\nsNxhMDOCIHUJj`FAAkyhl\\t-1.6\\nHiF@@@RifZjj@F@pfES\\\\H\\t-1.6\\nsNpD@DSpRYyjhAaPcWqS@\\t-1.6\\nsGQDHGCNBTmUPCCHwbF@\\t-1.6\\nsOpH@DILkW@@@LJEc^Q`\\t-1.6\\nsNpD@xRHRjzjhAaYcWrH\\t-1.6\\nsNqhHfOAJmvjPFBqxaP\\t-1.6\\nsNpH@xIRkUJ@p\\\\VM_H@\\t-1.6\\nsNt@@|dTQjj@XTKF|TX\\t-1.6\\nsGTHHaxISuU@LMc^XQ@\\t-1.6\\nsNqHHGAJeZj`FAVkx`P\\t-1.6\\nsOq@@drm[Rt@pJqoHp\\t-1.6\\nsJPhH`xYICU@LEcsBH\\t-1.6\\nsGP`ATefj`FEDqoH`\\t-1.6\\nsJQHHGAJfj@XYX|`@\\t-1.6\\nsFx@@eJf`@@LEcsQT\\t-1.6\\nsJQHHGAJfj@XIGbF@\\t-1.6\\nsOy`LDtfUMZi`Gbu@\\t-1.6\\nsNxA@NRfZjhA`xlZp\\t-1.6\\nsJQHHGAJni@XYX|P`\\t-1.6\\nsJQHHGAJVj@XIGbF@\\t-1.6\\nqC`H@Hg`dsPFDGME`\\t-1.6\\nsJYHEAxIWMPCAX|`@\\t-1.6\\nsGQ@@dsuT@phbqyJ\\t-1.6\\nqCbPXXbRu@XHSbV@\\t-1.6\\nsJP`@dfzhA`l^XQ@\\t-1.6\\nsJQHDHaInZ@XHGdp\\t-1.6\\nsOq`@fdrikUL@|Vh\\t-1.6\\nsOq`@fdrikTl@|Vh\\t-1.6\\nsKQ@@eKcUHCAX|TP\\t-1.6\\nsGPP@cTfyi`GbU@\\t-1.6\\nqCcPQXCD]XCB[d@\\t-1.6\\nqC`PCDRZhCCA[d`\\t-1.6\\nsJP`@dfvdA`l^Q@\\t-1.6\\nqC`PApRVdCCQ[d@\\t-1.6\\nqCcRQXUfzNlAa@\\t-1.6\\nqCb@AIZPLLEnR@\\t-1.6\\nQMIDbIpRZAaGFP\\t-1.6\\nsJY`BEdfVhAxlP\\t-1.6\\nsGQ`@ZdrmJ@|Rp\\t-1.6\\nqCb@AIVPLEErX\\t-1.6\\nQMABlYAIhFD\\\\h\\t-1.6\\nsJQ@@djw@OEB\\t-1.6\\nRFBBYQDXLJy@\\t-1.6\\nRFTPeQ`|R@\\t-1.6\\n`II`Cr@\\t-1.6\\n`II@CB@\\t-1.6\\nHiFL@BAAR[mVji@FEIaTwHx\\t-1.6\\nqCaBAKdfZ@xTlMXPf@\\t-1.6\\nqCaBAKdfZ@pf@\\t-1.6\\nJoBA@@XNiSJkN}][uUTDA@@XSE\\\\LkiwsDIp\\t-1.6\\nHmLL`HS@BLddJfRiiUZ`@`@XEproHh\\t-1.6\\nHcLB@@RUR[fVQuhHF@@XEWCoDQP\\t-1.6\\nsGY@JDeUj`FFVoEB\\t-1.6\\nKA|H@DBIMvmUPAaRXUMrN@\\t-1.6\\nsGX@JeTuT@prqxiP\\t-1.61\\nRFTQxQP|`\\t-1.61\\nsJQ@@eKU@LEEqX`\\t-1.61\\nqC`@Qz`LMEnP@\\t-1.61\\nHiDD@@QIeuZjh@XUaTw\\\\`P\\t-1.62\\nHidB@@[aRfU\\\\jjjh@XMFESCqDx\\t-1.63\\nsGP`@dfuj`FFVoHP\\t-1.64\\nsGQ@@dkMT@prqxiP\\t-1.64\\nKAxH@@bSKkUT@XEaTwHx\\t-1.64\\nHeTD@@QInYQehB@@FATpsqDx\\t-1.64\\nKA|H@HGIL|mUHAabXWDi`\\t-1.65\\nsGQ`@ldsmT@paxmP\\t-1.65\\nHaD@`@bDeeVz`@@A`pXUMwH`\\t-1.65\\nsJP@DjZhA`Pl^R@\\t-1.65\\nHmtJ@@XYUJYY^njjjh@XCFEWCJ|QF@\\t-1.65\\nsJU@E`dru@LH^IX\\t-1.65\\nsJP`@TiZhA`inID\\t-1.65\\nHidH@@Rfufzjjh@XMFTwCqDH\\t-1.66\\nHaGH@Dq`RYVkffi@FFTw\\\\c@\\t-1.66\\nHaED@DpFRYVkfjY@FFIW\\\\c@\\t-1.66\\nHaDH@@RVU[f@@@FAQaUqFx\\t-1.66\\nKA|H@LEIRjuUPAaTIaMrN@\\t-1.66\\nsNx`FJeJmUPCBqXodh\\t-1.66\\nsNx`FDdvkUPCCHobu@\\t-1.66\\nsNq`@fdr{UHCAX|e@\\t-1.66\\nsJY@DDeUhAaMrD\\t-1.66\\nQMA@HmBN`XI\\\\d\\t-1.66\\n`IM`Cr@\\t-1.66\\nHev`@@rfeJY{ZxYBBJD@XDfLH\\t-1.66\\nHidH@@RVUvy`@`@XEaTwD`P\\t-1.66\\nsGY@LDemj`FFVOEJ\\t-1.66\\nsGQ@@eJuT@ptVxcP\\t-1.67\\nHeTH@@RYe\\\\YZB@@A`vEWCOHX\\t-1.68\\nKA|H@DBIMwMUPAaRXS]rJ@\\t-1.68\\nqCrAPCiJSU@XI[d`\\t-1.68\\nRFTQxQ`|R@\\t-1.68\\nsJP@DkVhA`QEnP`\\t-1.69\\nqCp@AIZ`LDMqQ@\\t-1.69\\nRF`EFCBNT\\t-1.69\\nHmv@B@B\\\\ddUbReZj@@@FDpfDwCJ`\\t-1.69\\nsNq@@djkUPC@kF|TX\\t-1.69\\nHifDAHAHeNR[e^Eh@@@XXS]qJD\\t-1.7\\nsOpHAbILkW@@@LJDZ~S@\\t-1.7\\nJoBD@@ILrkNx{[uA@@@@@XFDEWCJz]orL@\\t-1.7\\nHmtD@@QImYVUZh@@@X\\\\aMproHp\\t-1.7\\nsJQ`@bdvt`LHnS@\\t-1.7\\nHaD@@DjfZzjj`AaVES]qHP\\t-1.7\\nqCcPQX^D]hCBKbF@\\t-1.7\\nQMABPYAIhGe@\\t-1.7\\nsGP`@dfUjPFDoEb\\t-1.71\\nHmt@HHdDdLdEbLddlRVFZh@H@FATwKrA@\\t-1.72\\nHo}L@J[SoIIEKEELQfjjjYh@XMBXPkrG@\\t-1.72\\nHg]L@J[SoIIEKEELLuUUSL@LFaLHUyA`\\t-1.72\\nHcl@@DjYU_egX@@@@@XRfDwCJ{rJ@\\t-1.72\\nHedLpJFXdDdLdLddlreTtp@panQH\\t-1.72\\nHcLL@@STfue^UZh@H@FCDwCN|QL@\\t-1.72\\nHmTB`HZUAprRQVYRjff@FAIa]rE@\\t-1.72\\nKA|Q`MTQBQFQFRRVJjf@LBaL[d\\\\\\t-1.72\\nHefDB@FPgIIETiUUL@LFaLIiyE@\\t-1.72\\nHeTH`ACpRfUWidHD@A`rXS]ODB`\\t-1.72\\nHmtH@ErRQRiHYj`@`@XLfETkqFx\\t-1.72\\nHmtH@IrRQRiPUj`B@@XLfESSqAT\\t-1.72\\nHmtH@NrRQRqZUj``@@X\\\\fDwRoHD\\t-1.72\\nHeVD@DClbbbRILuRu@C@liayD`\\t-1.72\\nHedL`HZP\\\\LddUfUUMH@pILKnPH\\t-1.72\\nHeV@@@Re[TYj`@@A`HPUMpsrD@\\t-1.72\\nsNplJu@Z@L@eTuTpCcI@r@TCdX\\t-1.72\\nHiDD`HX\\\\SIIEYjjZ@FAIaCrN@\\t-1.72\\nKAxI`MtRBRFRFRRURjf@LH{dD\\t-1.72\\nKAxP`PCaSaddbjjjPCBdpf{dT\\t-1.72\\nHeTD@@yJ[VvF`BH@FEIaCOHX\\t-1.72\\nHaE@@@aJyUnh@@@XLDXUMrN@\\t-1.72\\nHefD@NalddUfeUMP@pILH^QH\\t-1.72\\nsNyLGYDJHtQddeeUHC@qY|e@\\t-1.72\\nHiDD`HXGCIIEYjj[@FFIa\\\\`P\\t-1.72\\nHiFD@Jx\\\\ddUTjjX@XDfEWD`P\\t-1.72\\nHidH@@RUe^Fh@@@X\\\\BES\\\\OH`\\t-1.72\\nKAxI@MpNFRRJrjf@LBaLKd\\\\\\t-1.72\\nKAxI@P`NBUKmUT@XUaTw\\\\`@\\t-1.72\\nHiFD@NalddUfjih@XDfDOHx\\t-1.72\\nsGPJHBJPt`YBubUSUPCBWd`\\t-1.72\\nHiFL@AanrRQVZjf`AabXWHD\\t-1.72\\nsNpBHxJPt`YCIIEZj`FBkyH\\t-1.72\\nKA|Q@QpNFRRJVji@LBSB[dT\\t-1.72\\nsNqLKHaQFbLddljf@XZK\\\\c@\\t-1.72\\nKAxI@PpNFRRJrji@LLSBxc\\\\\\t-1.72\\nsNplByDJHtQddeUUHCCQ[dh\\t-1.72\\nKAxQ@\\\\CaddbjjnPCCDpnPp\\t-1.72\\nHaD@@DjWjXHB@AaTIc]rJ@\\t-1.72\\nsGXLKHaQFbLddmT`LCEkrD\\t-1.72\\nHif@@@RVUv{`@`@XEaTwHD\\t-1.72\\nHaDH@@RYe[hB@@FA@UMqLx\\t-1.72\\nKAxD@@c\\\\dvlts@FBXWDS`\\t-1.72\\nKAxH@MvRRJrjf@LLSBxd\\\\\\t-1.72\\nKA|@D@DiUJuUPAatIaTw@\\t-1.72\\nsNpD@xTHrRQVjhAaXl[rL\\t-1.72\\nsGPdE`DRHrRRrt@pTOIP\\t-1.72\\nsJQLCHaQFbH~j@XZK\\\\a@\\t-1.72\\nsO|HEfHaIeZx@@AaAqF`\\t-1.72\\nKAxX@PfIUJuUPAaeMwHH\\t-1.72\\nsNqHFGCIIEZj`FEbqoHp\\t-1.72\\nsNqhHl@cIIJej`FFqoHp\\t-1.72\\nsOpH@bILkW@@@LJlZ~P@\\t-1.72\\nsNyHHpxYIHkUL@prqxjp\\t-1.72\\nsNyHG@xYIHkUR@prqxjp\\t-1.72\\nsJXBB@bRBdMHQ}T@p`yB\\t-1.72\\nsOpHAxILkW@@@LBl[qA`\\t-1.72\\nsFxIHO@RdrfuU@LBl[r@\\t-1.72\\nsGPhH`xYIDZj@X[F|PP\\t-1.72\\nsGQDHGBtBUSUPCCKGdh\\t-1.72\\nsGPD@xPHRjZj@XFKGdh\\t-1.72\\nsGQhHlOCIIJuPCCKWdH\\t-1.72\\nsOy@FDfUkZj`FAVMyF\\t-1.72\\nqC`XBlTaiAIj`LHNR@\\t-1.72\\nsJPIEPKdkZhA`QL^Q@\\t-1.72\\nsGXHJGAJijhA`Xl^R`\\t-1.72\\nsGQHJGAJijhA`Xl^R`\\t-1.72\\nsGQ`AbeLuT@ptUxlP\\t-1.72\\nsJPH@DIJuPC@bK\\\\a@\\t-1.72\\nsJPhLQDIKTpCA@|d@\\t-1.72\\nqC`D@Hd`iCRD^hCr@\\t-1.72\\nsJPH@xIKUPC@qX|`@\\t-1.72\\nsGT@A\\\\dbMU@LMC^IX\\t-1.72\\nsNqA@IRiVjhA`xlZp\\t-1.72\\nsGQHI[AJijhAaecrT\\t-1.72\\nsJPH@xITuHC@qX|`@\\t-1.72\\nsGP`ATeejPFBQxi`\\t-1.72\\nsGP`ITjfj`FFVOIP\\t-1.72\\nqC`DBPe@iCRBSU@P\\t-1.72\\nsJQIHGB]GuPCCKD\\t-1.72\\nsGX@HeTuR@prqyJ\\t-1.72\\nQMCAxhabHzAad`\\t-1.72\\nsGT@ATegipGdH\\t-1.72\\nRFTE@Q`xi@y@\\t-1.72\\nQMBCpchFCOH@\\t-1.72\\nQMHAIdFD|R@\\t-1.72\\nQMbDBDfp^P\\t-1.72\\n`IDhCr@\\t-1.72\\nsNq`@VdsMUPCBbKGbk@\\t-1.72\\nsGQ`@ZdruT@pHboEb\\t-1.72\\nsGQ@@dsMT@pQoDl\\t-1.72\\nsNq`AVdlmUPCAbXu|b@\\t-1.72\\nQMFIOBN`XUqD\\t-1.72\\nqC`HBPT`duPGbf@\\t-1.72\\nHeTD`HP@cIHXdmpk@A@@phj[iy@@\\t-1.73\\nsOx@@drm\\\\@@@phVKyJ\\t-1.74\\nsNx`DFdskUHCAK\\\\Qh\\t-1.74\\nHaDD@@yIe^f`@`@XHa\\\\HLk`\\t-1.74\\nHet@@DjYUX^d@@@@A`rXS\\\\ODjP\\t-1.74\\nsGPYHlQxGdjmj`Gbu@\\t-1.74\\nHifDAHAHeNR[e^Eh@@@XXUCqFx\\t-1.75\\nHaF@@@Rfu[i@@@FAXUMqDx\\t-1.75\\nsGQ`@bdwMT@pVODj\\t-1.75\\nHeTJ@@qaeJYyzzjjj@FCPUMt|qLD\\t-1.76\\nsJX`BDdvu@LDmrD\\t-1.76\\nHmVBaNaLHO@nz\\\\ddqRdZjj`AaULLkrL@\\t-1.76\\nHidD@@QInUxV`@@AaRESCrN@\\t-1.77\\nHaDH@@RYVijjj@FCPaTw\\\\PL@\\t-1.77\\nsJPhLQbIKTpCBCba@\\t-1.77\\nsJPhI`xIKTpCBGd@\\t-1.77\\nsGY@DDfUjPFFVoHP\\t-1.77\\nsGQ`@jdvmT@prqyJ\\t-1.77\\nsGP`ATf]jPFBVyB\\t-1.77\\nsGX@@dj}T@prqyJ\\t-1.77\\nqC`PBlRVhCCBKdp\\t-1.77\\nqCaPS@pRVdCqA@\\t-1.77\\nQMhDRYAaOD`\\t-1.77\\nsOx@@drm\\\\@@@pHU_Eb\\t-1.77\\nsOp@DjWkB@@FAfkxdP\\t-1.77\\nHidH`H@HRnUvy`@`@XUaTp|`@\\t-1.77\\nHiDD@@QIeWZjh@XUaTw\\\\`P\\t-1.78\\nRFDBIFCqH\\t-1.78\\nHidD`HP@cIHXdnEX@@@XTUMp|`@\\t-1.78\\nHaD@`@BDfUzZ@B@AaRXU]r@@\\t-1.78\\nHeTH@@rJJJJlLADP@LL@fye]H\\t-1.79\\nHidH@@rJJIEn`HH@FF@S\\\\sJD\\t-1.79\\nRFDFIFCbkBD\\\\h\\t-1.79\\nRFDFIFCBNT\\t-1.79\\nHmtL`HS@BLddlRVFUh@H@FCYS\\\\J`\\t-1.8\\nHeVH@DAInU~Eh@H@FAES]qDd\\t-1.8\\nsGP`Adifj`FFboEb\\t-1.81\\nqCb@AIZ`LLHnS@\\t-1.81\\nKA|@@@djkUU@FGABXUMrN@\\t-1.82\\nKA|H@XGIKZmUHA`RXU\\\\RF@\\t-1.82\\nsGQhHjOCIHTuHCB[fBH\\t-1.82\\nsGP@Di]j`FADQxmP\\t-1.82\\nHg]L`FvDp@cIIJeDednkUUUT@LApjxYT~QX\\t-1.83\\nHkmL`FvDp@cIIJeDeeuZjjj@FGXU\\\\LkrC@\\t-1.83\\nHcML`FvDp@cIIJeDdnkUUU@CClJnFUyF`\\t-1.83\\nHg}@@@mJYeU|]Tz@@@H@A`hXUMpri|bp\\t-1.83\\nHmL@`EhLddTQaQnFjjjh@XSBXUMpsrE@\\t-1.83\\nHknHBFAiRYfUnSjB`h@AahQaUprngrF@\\t-1.83\\nHg^B@D@agHhhdmBeSMURuT@LJqet~QX\\t-1.83\\nHmL`B@aBBTiWe\\\\JUZh@D@FEMproDA@\\t-1.83\\nHknBAHAIvISdfyWVxV`@i`@XDUMwHL\\t-1.83\\nHmwDAHePRISdfyW^Eh@I@A`QTw\\\\aP\\t-1.83\\nHid@P@bDbDfyWaj@@@FG@aTwCrH@\\t-1.83\\nHeT@b@|@eJYU^f```@FGIaMpsq@h\\t-1.83\\nHiDLbHS@BL{IIJdejj@FAES]rA@\\t-1.83\\nKAx@PQHIHUHMHYIHXjjh@p`nIg@\\t-1.83\\nHmvJ@D@aeTfYWjYjjV`A`fMrE@\\t-1.83\\nHmtH@@RYvUeVf@@@FGHS\\\\LkrL@\\t-1.83\\nHidH`HApRem^Fh@@@XMaTwCr@@\\t-1.83\\nHid@`@|Die_ahH@@FCXUMp|PD@\\t-1.83\\nHidD@@QInUxZ`@@AaTES]s@PP\\t-1.83\\nHeTH@@RYWZf`@j@A`pIaTODzP\\t-1.83\\nHid@@DjUfaBB`@FEQc\\\\OLPj@\\t-1.83\\nHaD@`@bDeeVz`@@A`pQaTwHx\\t-1.83\\nHie@@@EJ[W[j@B@AaVESCq@P\\t-1.83\\nHmt@@DjYnvDHbJ@AaVUtkrA@\\t-1.83\\nKA|A@PCaddTJjj`CAdpj[nP@\\t-1.83\\nsNqdHjG@nFRQFUU@LBLWqJ`\\t-1.83\\nKAxX@@gILjmUHAafDwHh\\t-1.83\\nsNpXHlpDYIBdmT@pQoDF\\t-1.83\\nqCbPXXbRt`\\\\JVBlHHSdP\\t-1.83\\nsNyHHpxYIECUR@prux`P\\t-1.83\\nsGXHHGCIHcUPC@kF|P`\\t-1.83\\nsOq@@drm[UT@pJqoHp\\t-1.83\\nsGPHADIJmU@LJHl^R`\\t-1.83\\nsJQDBIARBS]T@pVOI@\\t-1.83\\nsNxHHGAJijj`FAVkyB\\t-1.83\\nsOu@E`drm[SR@pU_Eb\\t-1.83\\nsJPdEaDSpR[f`FDGEB\\t-1.83\\nsGP@LdbMU@LJHm^P`\\t-1.83\\nsNq`@fdr{UHCBGbu@\\t-1.83\\nsJPhHaIIRuPCAX|`@\\t-1.83\\nsJPHAXIKUPC@qX|`@\\t-1.83\\nsJPYHlPLGh}Z@^S@\\t-1.83\\nsJT@@TizhAaicqA@\\t-1.83\\nsJQA@IRej`FAbqy@\\t-1.83\\nsJTHH`xQ}T@pVOED\\t-1.83\\nqCbPXXbRt`XHSdP\\t-1.83\\nsJPXhlPL[ct^m@H\\t-1.83\\nsJQ@@dsU@LBHcrX\\t-1.83\\nsKQ@@eKcUPC@qX`\\t-1.83\\nqCp@AIZ`LLInQ@\\t-1.83\\nRFB@QZDXLJy@\\t-1.83\\nRFBDQFDXLHyP\\t-1.83\\nRFaDSGCr@\\t-1.83\\n`InqHFD\\t-1.83\\n`IoApGd\\t-1.83\\nsGQiHl@c]ddeVhAaCrT\\t-1.83\\n`IO@Cr@\\t-1.84\\nsNx`BDdw[UPC@kF|c@\\t-1.85\\nHefLa@XY{pBY{IIETiUUL@LJaLJnQp\\t-1.86\\nsGQiHlOC\\\\eWmT@paxaP\\t-1.86\\nsNp`@dfuZj@X[F|RX\\t-1.86\\nsJX`LDdru@OEb\\t-1.86\\nsNp@LdbLjj@XTQU|VH\\t-1.87\\nQMFIOBM`^H`\\t-1.87\\nHiDH`DBHR[UYjj@FCAaTw\\\\`P\\t-1.88\\nqCb@AIVpOEL\\t-1.88\\nRFDGaFCBnP\\t-1.88\\n`IE`CB@\\t-1.88\\nHet@@DjYUX^d@@@@A`rXwCODJ`\\t-1.88\\nsJP`@dfvdAaCqK@\\t-1.88\\nsJP@DiZhAaaEqX`\\t-1.88\\nHmv@@@rRJIIFUjB`@@XBfES\\\\L|aP\\t-1.89\\nsNx`LDdr{UPCAZ|QX\\t-1.89\\nsJQ@@djs@LDcqS@\\t-1.89\\nsJX`BDdvu@LDcrX\\t-1.89\\nsNx`JDdrsUPCAZ|QX\\t-1.9\\nqCb@AIZPLDmqB@\\t-1.9\\n`IDPCr@\\t-1.9\\nHmvLAHAIbTyInUwaZ@B`@XDUMwHT\\t-1.9\\nsNq@JeTuTpCCKGdX\\t-1.9\\nsGX`BDdwMT@prqyJ\\t-1.9\\nqCcPQX^D]hCsAX\\t-1.9\\nHcLFbHSFgP|L{IIlheBJmUUU@CAbkiW^H@`\\t-1.91\\nqCb@AIi`LInHH\\t-1.91\\nQMB@HRZA`erP\\t-1.91\\nJgB@@FRQQIIEIixSl@@@@@@CBTpnE]N~QP\\t-1.92\\nJgBD@@YHhhhddZFSvzdI`R`@LFInT{y`sh\\t-1.92\\nHk\\\\L@@PtfUe]ieujP`J@AaV\\\\L{rC@\\t-1.92\\nHefHA@`IclddqRUUUP@pyLJfx^QH\\t-1.92\\nHmt@@DjU_ZxHDf@AaLIaTwCOHT\\t-1.92\\nHeT@@DjU_k``RP@XCBXUMp|bP\\t-1.92\\nHidD@@QInUxV`@@A`RMp|Pj@\\t-1.92\\nHaD@`@qDeeVz`@@A`pQaTwHx\\t-1.92\\nHidD@@QInUxV`@@Aaa\\\\OLRf@\\t-1.92\\nHifD@DCdfYTfZiZ@FFYS\\\\`P\\t-1.92\\nHidH@@RVUvy`@`@XUFES\\\\`P\\t-1.92\\nHiFD@LADfuYjj`AaVTwCqDH\\t-1.92\\nHaD@@DkeV{`@@AaVES]rH@\\t-1.92\\nKAx@@YIDTjjh@pxHSBinQp\\t-1.92\\nsJQBDHbNF\\\\CDIJuPCA@|Tp\\t-1.92\\nsNpD@xRHrRSFjhAaXl[rL\\t-1.92\\nsOpH@fILkW@@@LJlZ~P@\\t-1.92\\nsOpHMPIToVD@@LKDZ~S@\\t-1.92\\nsGPhH`xITmU@LMc^P@\\t-1.92\\nsNpP@jtfvZf@XIOdp\\t-1.92\\nsNpP@jtfvZf@XS\\\\RX\\t-1.92\\nsJPHAbIJuPCCA[ba@\\t-1.92\\nsGT`EaTeUfPGba@\\t-1.92\\nsJY@DDfvdA`l^Q@\\t-1.92\\nsJP`ADkjhA`l^JH\\t-1.92\\nqCaHK@H`QGe@|P`\\t-1.92\\nqC`PApRfdCCQ[d@\\t-1.92\\nQMFICBN`XQqd\\t-1.92\\nRFTPXQ`|R@\\t-1.92\\nqCa@CIJrAxh`\\t-1.92\\nHcL@h@dBdFdAdEdDfYn\\x7Fi`bHh@GdZ\\t-1.94\\nHaD@`@BDeeVz`@@A`tXUMwH@\\t-1.94\\nKAxH@@bSJkUT@XEaTwHx\\t-1.94\\nsNpXHlQxIUZuT@paxjp\\t-1.94\\nsNx`BDdw[UPC@kE|e@\\t-1.94\\nsGP`Adinj`FFboHP\\t-1.94\\nQMBBlRZA`erP\\t-1.94\\nsGP@DjZj`FADQxmP\\t-1.94\\nsGP`@dfUj`FBqyJ\\t-1.95\\nQM`AIxGd`\\t-1.95\\nqCcRQX^FzNtAx``\\t-1.95\\nsGP@LdbMU@LBEcqR`\\t-1.96\\nsNx`BDdvsUPCAK\\\\UX\\t-1.96\\nHifDAHAHeNR[e^Eh@@@XDUMwHD\\t-1.96\\nqC`@ISTAaaErX\\t-1.96\\nHefB@LANEImfVjf`A`VDL|QF@\\t-1.97\\nsNx`JDdrsUPCCXwdX\\t-1.97\\nsJPH@xISuHCCSGbB@\\t-1.97\\nqCj@KAIVPOEL\\t-1.97\\nRFTPlQ`|R@\\t-1.97\\nHifDAHAHeNR[e^Eh@@@XDS\\\\OHh\\t-1.97\\nsNq`@fdr{UHCB[bM@\\t-1.97\\nHaFHAH@NbTeeVz`@@A`VES\\\\RN@\\t-1.97\\nQMFiOAzM`^P\\t-1.97\\nHeTD@@eIYe^E`HD@FFEW\\\\rFD\\t-1.98\\nqC`H@HpPdmPFBbxa`\\t-1.98\\nqC`PBHRVhCCBKdp\\t-2\\nsGQhHl@cIIJmPCAX|e@\\t-2\\nHaFH@FAIeZn`B@@XXe]s@q`\\t-2.01\\nsGX`BDdvmT@pRwDZ\\t-2.01\\nsJQiHl@c]GkPCrD\\t-2.01\\njhyQ@@LT@eLw\\\\jobaoNCSL@@@P@@pEpTeZMYwD^B\\t-2.02\\nj`a``@NPYddblrRbR]zjfjjj@AaiFB\\\\dkQkN}r@`\\t-2.02\\nHmt@hL`J`N`I`E`DjYnvDHbJ@AqVHEHGHDhBhGHD\\t-2.02\\nj`qQ@@G^@dsLjolcZmT@@@T@@LM@IQgARUiwnP`\\t-2.02\\nj`q@`@@^RYWYm^cKN`@j@B@@FF`HpRdeZM[wH\\\\@\\t-2.02\\nHo|LHJXXdDdLdNkLddlrfbRmzij`@@A`wKiv\\x7FHD\\t-2.02\\nHgnHxCuICI@iAiCi@YBYCIIEIYGMUUUM@CBKyA`\\t-2.02\\nKAxQPTdAd@T@tAtAddbejj`CbdPLPBPFPNPNQ@\\t-2.02\\nHg]DHNff`HRPrPJPrRQR]QIG]Tm@@@C@et{yG@\\t-2.02\\nJoB@I@Xb^BRdlsJkkYoU@@@@@A`XQS\\\\Lkiv\\x7FHP\\t-2.02\\nJoB@I@QB^BRdlsJkkYoU@@@@@A`XQS\\\\Lkiv\\x7FHP\\t-2.02\\nJoB@H@AEABTrj}ktv}AA@@@@FAaaTwRng[|a@\\t-2.02\\nHg|@R@kH|HeIfYU^Svz`@@@@AahES\\\\LkiwrH@\\t-2.02\\nHg\\\\DHJZIAICICjsIIKLeDd]uST@@@LJe]N~Qp\\t-2.02\\nj`aaP@NPXkSlddUfbbaVcUTuMSP@LJHpRWnPl\\t-2.02\\nJoC@QDAxAJUKMjnmf}T@@@@@FFeS\\\\Lkiv\\x7FDB@\\t-2.02\\nHgnHhFjIAICi@YBWCIICEMCIUMUU@C@et{yA@\\t-2.02\\nJoB@Q@^@ReSLjokYoT@H@@@A`^ES\\\\Lkiv\\x7FH@\\t-2.02\\nHo\\\\DHJvIAICi@YCIICELXiJijij@FAL]orB@\\t-2.02\\nHg\\\\DpIVIAICICIIKEEDb]uU@p@@LFxUt{yA@\\t-2.02\\nHklLPHS@\\\\J\\\\LddQbbQtzjB`@@XCS\\\\Lki|QL@\\t-2.02\\nJoC@HGAbObILkkJ}L]p@T@D@@XJBXURnf\\x7FHx\\t-2.02\\nJoB@X@^ErCrBTsJkzNj]@@@E@@F@xUMproH@\\t-2.02\\nJoB@P@^BTkLjnmf}T@@@@@FApeMprng[|`@\\t-2.02\\nHg|@P@BH\\\\DfYeUyO[j@@@@@FF`UMprng_H`\\t-2.02\\nHcm@RDpLROBIRYfUQe]jjjj`AaHES\\\\LkoH`\\t-2.02\\nHcm@RDpHbOBIRYfUQe]jjjj`AaHES\\\\LkoH`\\t-2.02\\nJoBDPD@xIU\\\\vjzv[uP@@@@@XZUMprng[|b@\\t-2.02\\nHkLJHJ[mN@aICI@iCIIEIuEJiZi`A``krC@\\t-2.02\\nHg|@P@SHbDjyeUyO[j@@@@@FFpUMprng_H@\\t-2.02\\nHg|@b@|@eJYUg_eNzB@@@@AajXS\\\\Lkiwr@@\\t-2.02\\nHg|@P@QH|DfYeUyO[Z@@@@@FF`UMprng_H`\\t-2.02\\nHg|@P@BH|DfYeUyO[Z@@@@@FF`UMprng_H`\\t-2.02\\nHg}@A@LINTjWvUz[SB@`@`@F@paTLkoDrp\\t-2.02\\nHg|H`HALRkfUWd}nh@@@@@XJUMprng_DB@\\t-2.02\\nJoCD@D@e\\\\sJkkYoU@@@@@AalTwCJz]orD@\\t-2.02\\nHklHPHipZHrRQVZIKSjj`@@AaJXSCJz_Hh\\t-2.02\\nHklHpJbPRPrPrRRqJYKSjj`@@A`wCJz_HH\\t-2.02\\nHcLDPHhG@gCIHcMDdnuU@@@C@PSNFUwbEP\\t-2.02\\nHg~@`HApRkfUWd}nh@@@@@X[ATwCJz]|`@\\t-2.02\\nHcmHbDr@|@eJnYUFUvjjjj@F@eS\\\\LkoDB@\\t-2.02\\nJoB@P@^BTsJkzNj]@@@E@@FBxUMprmor@@\\t-2.02\\nHg|@`@bDfYeUyO[j@@@@@FB`UMprngqHl\\t-2.02\\nJoBD@@IS\\\\rjzv[uP@@@@@XZeMprng[|b@\\t-2.02\\nHg|@`@BDfYeUyO[j@@@@@FF`UMprng_H`\\t-2.02\\nHg|@`@qDfYeUyO[j@@@@@FF`UMprng_H`\\t-2.02\\nHklD`HPGCIHdhdd]Nj`h@@FDeS\\\\Lki|`@\\t-2.02\\nHcNHpMJIAICICIIJhdmJuT@D@C@fxYyF`\\t-2.02\\nHg|H`@b`RYfUWd}nh@@@@@XJUMprng_H@\\t-2.02\\nHed@H@BH\\\\LBBBLdTTUeUUP@pdHSJ[agdD\\t-2.02\\nHklHpJbPRPrPrRRsQIY]jf@B@A`WCJ|`p\\t-2.02\\nHmTLpHS@\\\\J\\\\F\\\\LddRLTjjj`AaqTwCJ|c@\\t-2.02\\nHco@`HS@|DjyeTYWVjjjh@XBUMprn|PH@\\t-2.02\\nHctBHJ[m`HRPrPJPrRQR]QURuR@LDE^QH\\t-2.02\\nHcL@PH\\\\JbLddT\\\\RR{UT@@@LISBkae]yD@\\t-2.02\\nHg|H`HBDRkfUWd}mh@@@@@XJUMprng_H@\\t-2.02\\nHcLHpMbPRPrPrRRqIPcMT@D`@pJfF^Ph\\t-2.02\\nHg~@@@RYfUWd}nh@@@@@XZATwCJz]|b@\\t-2.02\\nHk\\\\@b@k@eJYeUquSh@@@@@XZFES\\\\Lki`\\t-2.02\\nHk\\\\@`@sDifUWGUN`@@@@A`nES\\\\Lki|`@\\t-2.02\\nHeT@pHbDbLbLddlRPsU@@@CChSJ[ayD`\\t-2.02\\nHk\\\\@`@rdifUWGUN`@@@@A`nES\\\\Lki|`@\\t-2.02\\nHctLhAgTdLdBdJdFdLddTgfUUTt`CrE@\\t-2.02\\nHg}@@@aJnYU^Svz`@@@@A`iTwCJz]|b@\\t-2.02\\nHkn@`NaprRQRjYKSjjp@@A`JXPrngrH@\\t-2.02\\nHcvHPDDGBWCIIEHniUUUP@pELJfy]yD`\\t-2.02\\nHcvHPAPGBWCIIEHniUUUP@pGBinE]yD`\\t-2.02\\nHcmH`Dr@|DjyeTYWVjjjh@XBUMprn|`@\\t-2.02\\nHg|H@@RYfUWd}mh@@@@@XRUMprngrK@\\t-2.02\\nHmv@PHApIpRi[WeZhH@@F@qeMproD@`\\t-2.02\\nHed@hH\\\\DdLdAdIdLddTaeUUP@prf{dD\\t-2.02\\nHiFDhNihBDdLdBdApLddTgjeh@XPOHx\\t-2.02\\nHg}@@@mIe]e^ftx@H@H@A`JXUCJ{q@l\\t-2.02\\nHglF@HXUN|ddUfffeUMUL@LNSBxYWdV\\t-2.02\\nHmtD`HPGCIHdhTiVj`@@AaqTwCJ|`@\\t-2.02\\nHiD@p@BH\\\\LBLdRbLjjh@XBBXUMp|b@\\t-2.02\\nHg}@@@mIe]e^ftx@H@H@A`hIaTLkm`\\t-2.02\\nHkmD@J[SrRQRqQXYjjje`A`tIaBoHx\\t-2.02\\nHknB@D@agHhhdmBjYjjVj@FAXr{rC@\\t-2.02\\nHknD@NalddUfbRtzjZjh@X\\\\fDLkoHL\\t-2.02\\nHmTLPDp`ZHbDjmyjjjh@XBDTwCJ|``\\t-2.02\\nHcvD`Naj|LddUfbUUUU@C@TpjFUwdL\\t-2.02\\nHmtHPHApIpRi[WeZhH@@FGYS\\\\Lkq@H\\t-2.02\\nHk^@@@RYWYVftx@H@@@F@iaTLkoD@p\\t-2.02\\nHedLHJ[hBDdLdBdLddTgUTmP@pb^PH\\t-2.02\\nHkLJ@HXUOIIEYiijjZjPAarXWCJ|cP\\t-2.02\\nHmTLPDeP\\\\ABLddTb|jjiPAaVES]rA@\\t-2.02\\nHcL@@LdbRbceBDEEP@LIaL[ae]yE@\\t-2.02\\nHmtD`HPGAJge^Uj``@@X\\\\UMproDA@\\t-2.02\\nHcND@NalddUfbR{USUT@LFSBE]yD`\\t-2.02\\nHedDhAeICI@iBiAiCIIEIyUUL@OHd\\t-2.02\\nHmT@P@\\\\HbDjmyjjjh@XSBYS\\\\LkrB@\\t-2.02\\nHcNH@JGIIEJeipuUMU@CChSBY]yD`\\t-2.02\\nHkLDbMLG@~rRQRVPrjjjX@X\\\\fDwRh\\t-2.02\\nHmT@P@|HBDjmyfjjh@XSBYS\\\\LkrB@\\t-2.02\\nHctL`HS@\\\\DjevZjij`A`ITwCJ{rL@\\t-2.02\\nHmvLAHAEbTyInUwaZ@BP@XDUMwHd\\t-2.02\\nHcvD@AklddUTReUUU@CChSBY]yD`\\t-2.02\\nsJPKAPR@TAh@p@zOj`GAb@dCHAP@\\t-2.02\\nHcvD@NalddUfReUMU@CCdpne]y@`\\t-2.02\\nHeT@`@\\\\LddTjPsU@@@CCdpj[ayD`\\t-2.02\\nHeTL@HSLddlRPsU@@@CBj[agfPf@\\t-2.02\\nHed@P@bH\\\\DfUfjjj@FD`fES\\\\L|b@\\t-2.02\\nHmvDAHAHeNR[e]xV`@h@FEES]OHT\\t-2.02\\nHmuH@JY\\\\ddTlRzZjjf@FCPfDL|a`\\t-2.02\\nHedDPDpFbHaJmYjjj`AatES\\\\L|`@\\t-2.02\\nHefD`Naj|LddUfUUUP@pYLJagbMp\\t-2.02\\nHmVH`FboCIIEUDjjjh@X\\\\fEproHh\\t-2.02\\nHeTB@@HYRYgUnjjj`A`HPaMpsqLh\\t-2.02\\nHclH@@RVUmVy]X@@@@A`vLLkoD``\\t-2.02\\nHeTL`HS@|Dj~UFVh@@@XUS\\\\L|PL@\\t-2.02\\nHmVD@AklddUTtjjj`AatIaMJ|c`\\t-2.02\\nHeTH`HApRee\\\\YjB@@AavES\\\\L|`@\\t-2.02\\nHedL`@idhLdTTNeUUP@pZLKagdL\\t-2.02\\nHiDBPHSB@HiprRPzQZj`Aac\\\\OHH\\t-2.02\\nHmtH@NrRQRqZUj``@@X\\\\fDwBoHd\\t-2.02\\nHmtD@@yJUe^Uj``@@XCBTwCJ|``\\t-2.02\\nHcl@@DjYU_egX@@@@@XJfES\\\\Lkh\\t-2.02\\nKAxQ`HCaDQSaddfLjj`CBhpf{dT\\t-2.02\\nKAx@PQHIHYHLxYIITjjh@ppj{dL\\t-2.02\\nHmTD`HPGAJeVZjfj@F@xUMproH@\\t-2.02\\nHedL`HS@\\\\DjWfjjj@FCES\\\\L|PL@\\t-2.02\\nHmTB@HXUrRQVZZjfj@FCIa\\\\J|bP\\t-2.02\\nHedL`HS@|DjWfjjj@FG@UMpsrL@\\t-2.02\\nHeTD@@gHeDeBwL@D`@psB{fPp`\\t-2.02\\nHiDD`@iJCIEDUJjj@FCQaMp|a@\\t-2.02\\nHedL`HS@lDjWfjjj@FCES\\\\L|c@\\t-2.02\\nHed@`@\\\\DjWfjjj@FDaBES\\\\L|c@\\t-2.02\\nHmTB@HZUrRQVYRjff@FAIa]rE@\\t-2.02\\nKAx@`@xTxYIDUJjh@pZDpf{bAP\\t-2.02\\nKAxH`PpNENFRRJrjj@LJSBknPp\\t-2.02\\nHeT@@LddTjPsUUU@C@XSBinGdR\\t-2.02\\nHedL@@pldTTUeUUP@pzDinF^PP\\t-2.02\\nKAz@dI`Xd^DRdsMUU@FE@UMwH`\\t-2.02\\nHmVD@NalddUfbjij`A`RXT|PU@\\t-2.02\\nHiFH`FboCIIETjjj@FEIa\\\\ODi`\\t-2.02\\nHeVH@JGIIEJepuUMP@pjDpfyD`\\t-2.02\\nHefH`D`OAJVyjjj`AavES\\\\L|`@\\t-2.02\\nHef@`HkprRQJrUSU@CAdpnF^QP\\t-2.02\\nHed@`@\\\\LddTeeUUP@pyLInF^QP\\t-2.02\\nHefH@NkIIETiUUT@LFaLHYyC@\\t-2.02\\nKAxHPTtRBRFRGAVRRVZjZ@OHx\\t-2.02\\nHedF@@PfFTf{nZjf@FAXUMqDd\\t-2.02\\nHiDD`HPKAJUfjjh@XMaTwCr@@\\t-2.02\\nHeTH@@RYWZf`@j@AapIaTL|c`\\t-2.02\\nsNpJIHJPtaZqrFRRVUU@LI^P`\\t-2.02\\nHefD@NalddUfeUUP@pYLJagdL\\t-2.02\\nKA|I@]CUxYIHkJjh@pILJnHw@\\t-2.02\\nsJPBHDJ@t@XBOj`GFRAd@hGI@\\t-2.02\\nKA|Q`MTRBRFRFRRVZjZ@LH{dL\\t-2.02\\nHiDD`HPGAJUfjjh@XMaTwCr@@\\t-2.02\\nKAzQDIdAxAJU\\\\uUT@XDUMwDB@\\t-2.02\\nKA|A@PCaddbljj`CAdpj[nQ@\\t-2.02\\nHiD@`H\\\\DjfZjj`AarXUMp|b@\\t-2.02\\nHiD@b@|@eJiUjjh@XRDIaTwB\\t-2.02\\nKAzA`TtRBRFRFRRUJjY@ODK`\\t-2.02\\nHaD@`@|DimVzP@@AaVES]q@P\\t-2.02\\nHiD@`@\\\\DjVZkj`AarXUMp|`@\\t-2.02\\nHiDD@JGIIEFjii@FAIaMrN@\\t-2.02\\nsJPK@ERlUYjpu`ZOj`FEDVH\\t-2.02\\nKAxA@@xYIHkJjX@pjDpfyG@\\t-2.02\\nsJPKAVRHTQh`q@zOj`FEDVH\\t-2.02\\nHiFH@DAIYfZjh@XMaTwCrH@\\t-2.02\\nsJPKA\\\\SDVIlPx`ZOj`FEDVH\\t-2.02\\nsJPK@\\\\SDVIlPx`ZOj`FEDVH\\t-2.02\\nsJPKA\\\\RHTQh`q@ZOj`FEDVH\\t-2.02\\nsNpLAbWD^HdlmUPCAbXu|b@\\t-2.02\\nKA|P@UvRRJjji@LBSBkbPp\\t-2.02\\nHiD`bJ[aArAdjeVj\\x7FpAa@@\\t-2.02\\nKA|P@UvRRJNji@LJaLJnPp\\t-2.02\\nsNtDHpxTHrRQVjhA`Uc^JL\\t-2.02\\nKAxX`EWAHIHIMvuMHAxdL\\t-2.02\\nsNtLJyHJPtaddeUTpCqE`\\t-2.02\\nsJQBbJBRBdMHCcL_U@OHP\\t-2.02\\nKAz@@AVRQERjj@LFaLIn@\\t-2.02\\nsNyhGE`DYIITmT@pvMyF\\t-2.02\\nsNpIAxBTjUjj@XNKFod@\\t-2.02\\nsGYhKEaxYIIVj@XYX|e@\\t-2.02\\nsNyHHpxYIHkUR@pLVOIP\\t-2.02\\nsNyHGKxYIHkUT@prqxjp\\t-2.02\\nsNphH{xYIHkUT@prqxjp\\t-2.02\\nsGXDHGBaBUSUPCCKGbe@\\t-2.02\\nsNphHpxYIHkUT@prqxjp\\t-2.02\\nsNqHFGCIIEZjPFAbqyJ\\t-2.02\\nsOpAMJUKua@@CBqFodp\\t-2.02\\nsNpH@xYIHkUT@plVMyF\\t-2.02\\nsNpHAxISMUT@p\\\\VM_H@\\t-2.02\\nsGPD@xTHRjZj@XFKGdh\\t-2.02\\nsNpHHDYIHkUT@plVMyF\\t-2.02\\nsNyA@qNRRJuT`LCEcrT\\t-2.02\\nsNtA@QNRQFMU@LBmWrP\\t-2.02\\nsNpHAXYIDYUT@pLM_Dl\\t-2.02\\nsGPH@xISuU@LCL[qA@\\t-2.02\\nsGPHAXISuU@LCL[qA@\\t-2.02\\nsJPhLQbIKTpCA@|d@\\t-2.02\\nsNq`@fdvkSHCAX|Rh\\t-2.02\\nsNp`Adimjj@XYF|TX\\t-2.02\\nqCaHKBHg`dtpFDGEL\\t-2.02\\nsGQHI_AJijhAaecrT\\t-2.02\\nsN|ICVGHLeRmWxCr@\\t-2.02\\nsJPIAxBX~j@XTQX`\\t-2.02\\nsGP@DjZj`FEBqoI@\\t-2.02\\nqCcPQXND^hCBCfbp\\t-2.02\\nsJQ@@dkU@LBHcrX\\t-2.02\\nsJPXHlPDQzt@|VH\\t-2.02\\nqC`PBpcu@^ZK@\\t-2.02\\nsBQ@@eLUT@pTWI`\\t-2.02\\nsGY@LDemj`FFVoEB\\t-2.02\\nHiDL`HS@|Djmujj`A`UMp|``\\t-2.05\\nHeTD@@QInU~Eh@H@FEHUMwHd\\t-2.05\\nsNqhHlOCIILVj`FBkxlP\\t-2.05\\nsGPhHaxIU{U@LD[qC@\\t-2.05\\nsGQLKIARFdLddmU@ODZ\\t-2.05\\nHifDAHAHeNR[e^Eh@@@XXSCqJx\\t-2.06\\nHiDJ@@PfEIn{Zjd@XEaTwDS`\\t-2.06\\nKAxH@@bSKKTt@XXUMrN@\\t-2.06\\nsJY@LDejhA`QEnP`\\t-2.06\\nqCbPPNBUu@XI[bD@\\t-2.06\\nHcN@B@B\\\\dbRTJR{UT@@@LEaLinFUwd@\\t-2.06\\nKA|@D@DiUJuUPA`tIeMwHH\\t-2.06\\nqCcRQXAFzNlAy@\\t-2.06\\nQMFi@azM`^P\\t-2.06\\nHefB@BAAeImgfji`A`RYT|a`\\t-2.07\\nHiFB@BANEImVZjX@XDfTOHH\\t-2.07\\nsNx@AddQeUPC@pu|Rp\\t-2.07\\nsGX@@eOUT@pLqoDD\\t-2.07\\nQMBCDRZAaGFP\\t-2.07\\nsGX`JDdrmT@pexlP\\t-2.08\\nsJQ@@dmU@LLInID\\t-2.08\\nRF`EECqH\\t-2.1\\nHkmLAHdDvISdfyWVxV`@i`@XTUMt|`p\\t-2.11\\nHcMLAHdDvISdfyWWaZ@Bd@FEES]OHT\\t-2.11\\nHklD@@QIVYYQujjjj@FBxUMprngrH@\\t-2.11\\nHeTLbHS@|LyJoeQej@@@FATwCq@d\\t-2.11\\nHcL@@DjU_VnBBJh@FBpfES\\\\LkrM@\\t-2.11\\nHiFHA@`IclddqRjjh@XLfES]rA@\\t-2.11\\nHidL@HP\\\\ddRNijjj`A`VEP|Qn@\\t-2.11\\nHidD`HPOAJvUxV`@@AaQTwCr@@\\t-2.11\\nHidH`DBHR[e^FX@@@XTATw\\\\`P\\t-2.11\\nKA|PBA@SGYIIbjjh@piLJfyG@\\t-2.11\\nKAxQ@HDPdvkMU@FEAaTwHx\\t-2.11\\nsNyDJQHJPR[nihAaGqR`\\t-2.11\\nsJPL@xRHTQGuPCCQ[dH\\t-2.11\\nqCbXXQD|EDIMRA``nR@\\t-2.11\\nsOx@@drm\\\\@@@pHV_DZ\\t-2.11\\nsJPDADIpRVj`FADqyD\\t-2.11\\nsGPH@DISMU@LBEcqR`\\t-2.11\\nsNp`ATiujj@XYY|TH\\t-2.11\\nsJQHHGAJ^j@XYX|`@\\t-2.11\\nsGX`JDdrmT@pQoI`\\t-2.11\\nsGP`@deUjPFFqoI@\\t-2.11\\nqCaPQApcu@XH[bb@\\t-2.11\\nqCaPAR`RZhCAA\\\\f@\\t-2.11\\nsJPdE`DRPcyXAyB\\t-2.11\\nsGP`@dfUj`FBMyL\\t-2.11\\nqC`PApcu@XXQ\\\\f@\\t-2.11\\nqCx@AYIf`LLE`\\t-2.11\\n`IE`Cr@\\t-2.11\\nsJQ`@bdvt`ODl\\t-2.11\\nHaD@`@bDeeVz`@@AaPXUMqHx\\t-2.11\\nsOp@DjWkiV`FAbMxlp\\t-2.11\\nsGX@@djuT@pHVOEJ\\t-2.11\\nsNxA@IRiVjhA`xlZ~P@\\t-2.11\\nHcLF@@siWTify^ajjjj@FDpaTwBn|SI@\\t-2.13\\nHmtLbHS@BL{IIKDeaeZ@B@AaUMpj\\t-2.14\\nHeUDAHdDbTyInU~Eh@H@FAES]rI@\\t-2.14\\nqCcQQX^B{]GZ@|`@\\t-2.14\\nHaF@@@RYWih@H@FA@aUqLx\\t-2.15\\nsJPhEaDIMsPCBCdH\\t-2.15\\nRGDQxQP|R@\\t-2.15\\nsOx@@drm\\\\@@@phQkyL\\t-2.15\\nsOp@DjWkjj`FEDVOEV\\t-2.15\\nQMBCpRZAaWDP\\t-2.15\\nsJP`@TfVdAxe`\\t-2.15\\nQMHAIXFE\\\\d\\t-2.15\\nqC`@IRtA`enHP\\t-2.16\\nHevH@DAIemRhYZ`@`@XDwCODP`\\t-2.18\\nJoC`@@PzTlrj\\x7FI{[P@@A@@FDeS\\\\Lkm|ap\\t-2.19\\nHk\\\\D`HP@cIHXheDQgSV@@@@@XMWCNgq@T\\t-2.19\\nHk]@A@LINTjWvUimLHB@@@A`LHUCJ{qLL\\t-2.19\\nHclL@@STfUmVfeVi@B`@XEgBoDkP\\t-2.19\\nHmt@`@\\\\DjYuQVhHD@A`JES\\\\Lkq@p\\t-2.19\\nHmtD`HPOAJUyVUjh@@@XMc\\\\Lkq@H\\t-2.19\\nHcnD@D@TfYg\\\\fWVjA@`@XEtkoHh\\t-2.19\\nKAxPP]D`daT`taddabjj`CAB{dX\\t-2.19\\nHidH`HCpRUe^Fh@@@XLaTwCr@@\\t-2.19\\nKAxX`Pf@DDxYIBeEjh@prf{b@P\\t-2.19\\nHiFD@L@TeYVjj`AapPaTp|c`\\t-2.19\\nHid@@DjUfaBB`@FGPfES]rA@\\t-2.19\\nsNqLKIARCdLddJjj@XKWdH\\t-2.19\\nsNqDHG@nFRQFUU@LJEj~P`\\t-2.19\\nsNpdIPxEprRHrjhA`Pl~Ht\\t-2.19\\nsNpXHlqxYIITuR@payej\\t-2.19\\nsNt@A\\\\dbJjj@XVKE|e@\\t-2.19\\nsNqhHlOAJkVj`FBkyB\\t-2.19\\nsJPDADQpRVj`FABqyH\\t-2.19\\nsNp`@dfvZj@XEFodp\\t-2.19\\nsJPhHaxIUmPCBGbF@\\t-2.19\\nqC`HCDvHdmPFBFxh`\\t-2.19\\nsJPhHQLiJuPCCA[dH\\t-2.19\\nsJXHHOAIZj@XYX|P`\\t-2.19\\nsJPYHlQxGh}j@XIX\\t-2.19\\nsFx@@eJf`@@LKEcP\\t-2.19\\nsGP`@Tizj`FAfMyD\\t-2.19\\nsGP`ADiVj`FBMxe`\\t-2.19\\nsJPhH`xQ}T@pfyhb\\t-2.19\\nqCaPKBHRZXCBCdp\\t-2.19\\nQMCALhabHzA`sr@\\t-2.19\\nqCaHK@HdaGe@|`@\\t-2.19\\nqCbPPNBTu@XI[d@\\t-2.19\\nsJPH@xQ}T@pTWEb\\t-2.19\\nRFDEaFCqH\\t-2.19\\n`IlaHFD\\t-2.19\\nsNx@@djmUPCAbKF|c@\\t-2.21\\nqCpPHABRk@XP\\\\f@\\t-2.21\\nsJQ@@dsU@LBHmrD\\t-2.21\\nsJX@@dmU@LLL^JH\\t-2.21\\nsJXaBDnR[Z`FDwHP\\t-2.21\\nsFp@DiTt@@AaacsQT\\t-2.21\\nHeVD`La@BLddlRPrm@@@CBj[agdX\\t-2.22\\nHif@@@RfU~F``@@XLfES]q@D\\t-2.22\\nsJX`LDdvu@LInID\\t-2.22\\nsJP@DiZhA`QEnP`\\t-2.22\\nsJP`@TfZhA`QEnP`\\t-2.23\\nsNp`@dfVZf@XJodH\\t-2.23\\n`IK`Cr@\\t-2.23\\n`IG`Cr@\\t-2.23\\nHmVD@NalddUfRjij`A`rXWCOHT\\t-2.25\\nsGP`@dfui`FBuxdP\\t-2.26\\nsFp@DiTujdA`QC^IX\\t-2.26\\nHed@H@\\\\HbDbLbLddjRUUUP@pFDpj[ayD`\\t-2.27\\nHmtF`HSBEP|LddqbbeVjjj@FEXULODzP\\t-2.27\\nHeT@pHdDdLdLddlRPsU@@@C@jxYyC@\\t-2.27\\nHiDHHNbPRPrPYprRRiJjj`AaaTOHX\\t-2.27\\nHcND@LADfuYU]Zj@@@FGYWCJ{qDH\\t-2.27\\nHeTHbACpBTieUzZBA@@XLfDwSq@h\\t-2.27\\nHeTD@@YIfUqfhH@@FG@UMpsqHp\\t-2.27\\nHefD@NalddUfUUMP@piLKiy@`\\t-2.27\\nHifH@JGIIEJnFjih@XUBXS\\\\c`\\t-2.27\\nHiFL@BAAR[eVji@FAIa]qJX\\t-2.27\\nsNplJyDJHtQddeeTpCCQ[dX\\t-2.27\\nKAxQ@PCaddblji`C@dpfyG@\\t-2.27\\nKAxQ@PC`eUkUU@FCIaTw\\\\b@\\t-2.27\\nsNpBIHJPt`wCIIJjj`FBMyF\\t-2.27\\nHid@@DjWffB@h@FEPf\\\\OHX\\t-2.27\\nKA|P@XBRvsUT@XLfES]rH@\\t-2.27\\nsNqLKIARFdLddjjj@XQ|a@\\t-2.27\\nKAxH@MvRRJrjf@LBSB{dP\\t-2.27\\nsGPLIHJPtaddejhAaCrT\\t-2.27\\nsNqHHGCIIEZj`FAVKyJ\\t-2.27\\nsGPD@xRHRjzj@XFKGdh\\t-2.27\\nsNpH@xYIHkUR@plVKyJ\\t-2.27\\nqC`DAhdPhcQD^hC@bK@\\t-2.27\\nsJQdHl@`nFRPkPCq@`\\t-2.27\\nsJQHHGAJzj@XYX|P`\\t-2.27\\nsGXHI_AJijdAaecrT\\t-2.27\\nsGPH@xIUMU@LBl[rP\\t-2.27\\nsGX@JeTuT@pJqoI@\\t-2.27\\nqC`PApcu@XP\\\\tV@\\t-2.27\\nsJPYHlQLGh}V@P\\t-2.27\\nsJQa@bnR[ZPGdp\\t-2.27\\nsJPYHlQVGh}V@P\\t-2.27\\nRFBCQQDXLJy@\\t-2.27\\nQMBBpchGfR\\t-2.27\\nRFDAaFCqH\\t-2.27\\nKAxP@@djkUU@FGABXUMrN@\\t-2.27\\nQMbDBDePXQrP\\t-2.27\\nsJP`@deVhAaCqS@\\t-2.27\\nRFD@QFCBNT\\t-2.28\\nsJP`@TizhA`inID\\t-2.28\\nsGP`@Tivj`FBfxeP\\t-2.29\\nsNx`BDdw[UPCCXwbS@\\t-2.31\\nsGP`@dfyi`FBMyD\\t-2.31\\nsJPD@DDHRgj`FFDwDb\\t-2.31\\nqCaPQCpcm@^XK@\\t-2.31\\nqCa@CIKTA`hnHX\\t-2.31\\nqCb@AIj`LDmqB@\\t-2.32\\nsGP`@TeYf`FBUxhP\\t-2.33\\nHeVLAHAIbTyInU~Eh@H@FAES]rI@\\t-2.33\\nsNpYHlQxGlddqZj@XR|VX\\t-2.33\\nHeTLbHS@BL{IIKDdLkP@@@pJfx^QH\\t-2.33\\nRG@D\\\\OJ@\\t-2.33\\nsGP@DiVj`FADVxcP\\t-2.33\\nj`q@@@DjU_VUiqw``RX@@@A`ZBBTYpVcV]{bLR@\\t-2.34\\nHkLLxJ[hBLdBdAdIdMdCdBbHaHaHbXjejj@Gb\\\\h\\t-2.34\\nJoBDH@QPIPIRlrjzv[uP@@@@@XKS\\\\Lkiv\\x7FDa@\\t-2.34\\nJoB@H@^E^BTrj}ktv}AA@@@@FFiaMtkiv\\x7FDB`\\t-2.34\\nHg\\\\BPHP{@HTHrRPqIIZSjtBDJ@CCbinF]yB`\\t-2.34\\nJoBF@DHNRRIGSQITuoUUT@D@AaNEPkiv\\x7FD[`\\t-2.34\\nHctDHDXGBHbgBWCIILYDYUUUP@pzLKaW^QH\\t-2.34\\nHmTHHDBHapIpzHrJIQRrjjj@F@aeMproD``\\t-2.34\\nJoB@P@NBULrj~mf}P@`@@@FAxUMprng[|`@\\t-2.34\\nJoBDPDAxIU\\\\vjzv[mP@@@@@XKS\\\\Lkiv\\x7FHH\\t-2.34\\nHk\\\\@b@B@eJYeUquSh@@@@@XKaTwCJz_H@\\t-2.34\\nJoBD@@ISJlzoJ[tD@@P@@XJfDwCNf\\x7FHl\\t-2.34\\nHknD`La@BLddJbRvWUjB@`@XMc]JgqJD\\t-2.34\\nHcNBAHAIvISdfyWWaZ@Bd@FAES]rE@\\t-2.34\\nHedLPHFP\\\\JBLddRaeUTh@pKB[nHe@\\t-2.34\\nHefD`La@|LdabbeUUP@pxBinF^IB@\\t-2.34\\nHcLD`HP@cIHXhhjJk@QD@CBfxYwd@\\t-2.34\\nHmUH`Dr@|DjUyjjjh@XBATwCJ|QL@\\t-2.34\\nHcNB@D@agHhhdmCSMURu@CCLY^Qh\\t-2.34\\nHed@P@BH|DfUfZjj@FD`fES\\\\L|b@\\t-2.34\\nHmv@@@rRJEKKaj@BP@X\\\\fES]OHT\\t-2.34\\nHcLD@@QIe^UWVj`@@AavEprn|b`\\t-2.34\\nHiDHHJbPRPzPFPrRPqRjZ`AxaL\\t-2.34\\nHidH`HApRkm^Fh@@@XMaTwCq@`\\t-2.34\\nHmt@@DjU_ZxHHj@AaLIaTwCOHT\\t-2.34\\nsNpJIVJPtaYArFRRVUU@LINP`\\t-2.34\\nHiE@`HPOAJ[fjjh@XMaTwCq@P\\t-2.34\\nHiDD@@kIEDUJjj@FCQaMp|a@\\t-2.34\\nHiF@`HApRjYjjj@FCXUMp|a@\\t-2.34\\nHaDH`HCpRVU[j@@@FEXUMwH@\\t-2.34\\nHaE@@@yIe^f`@`@XTBXU\\\\c`\\t-2.34\\nKAz@@AVRQERij@LBSF{bPP\\t-2.34\\nKA|H@DFIS[UUPAadMwDR`\\t-2.34\\nsGPdH`xEprRHuT@ppuxdP\\t-2.34\\nsNqTHmV@`aFRPjKR`ODB\\t-2.34\\nsNx`BMdbaeUPCCRobV@\\t-2.34\\nsNqHDHaImYj`FAFMyF\\t-2.34\\nsJQHBLQIfi@XHSbV@\\t-2.34\\nQMIDbKpRYAaGJ@\\t-2.34\\nsJT@@Te^lAyD\\t-2.34\\nQMBCDRZA`cr`\\t-2.34\\nQMBApRYA`sr@\\t-2.34\\nsJPYHlQxGh}j@^IX\\t-2.34\\nsGP@Djyj`FFbwDZ\\t-2.35\\nHaE@@@yIe^f`@`@XDfEWDC`\\t-2.35\\nsNx`DJdrkUPCCHwbs@\\t-2.38\\n`IaphFD\\t-2.38\\n`IiApD\\t-2.38\\nsGPXHlQxIU[U@LInHt\\t-2.4\\nHet@@LddTQbMpuUUT@LAaLJfz^PH\\t-2.41\\nHcLH@@RfyY^Vjjjh@XKFES\\\\LkoHP\\t-2.41\\nHet@@DjYUZ^D@@@@A`rDwCODr`\\t-2.41\\nHidD@@QInUxV`@@A`REP|Qn@\\t-2.41\\nHiDB`HRnApReYjif@FBLOH@\\t-2.41\\nHaDH@@Rfu[j@@@FAIa]qJX\\t-2.41\\nHaF@@@RVU[n@@@FAXUMrN@\\t-2.41\\nsGQHHGAJmjhA`Uc^HP\\t-2.41\\nsJQDHG@nBUMT@ppVyB\\t-2.41\\nsJXHHOAIYj@XKGbB@\\t-2.41\\nqC`P@HRVhCCBKdp\\t-2.41\\nqCbPPND^hCCA[d`\\t-2.41\\nsJQ@@dls@LEcrP\\t-2.41\\nQMJDbDf`XQqd\\t-2.41\\n`Ld`\\\\WaB@\\t-2.42\\n`Ld`XP\\t-2.42\\nHeT@@LdbbQwCUUU@CBPaBinF^Q`\\t-2.44\\nsGP`ATf]jPFDWEb\\t-2.44\\nHclD@@QIeYWieujP`H@FEYpsoHT\\t-2.45\\nKAxA@AbIJjuUPAapPfES\\\\c`\\t-2.45\\nqC`PCDRVhCAA\\\\Tp\\t-2.45\\nsJX@@dku@LDmrD\\t-2.45\\nQMPBcXGcH\\t-2.45\\nsGQ`@jdvmR@pfxdP\\t-2.46\\nj`aA@@NYIHiXihYIFj``hj@@XRQ`gIFl{wHJ@\\t-2.48\\nHg\\\\@xHdDdLdNdIdMdKdLddlTTtrgUADQ@@|`p\\t-2.48\\nj`aaP@NPXkSlddUfbbaVcUTuMSP@LJHpRUnP|\\t-2.48\\nh`\\x7FC@@B`qVRRJsSQZRjfjjh@LEHpS`iZl{p\\t-2.48\\nHmTLhJ[hBDdLdBdA\\\\LddTgRjej`A`dkrA@\\t-2.48\\nHcLHPHApiprRQUQIKmUP@@@pELKae]yE@\\t-2.48\\nHo|H@NrRQRqZZR]j``bh@FDiaMtg[|cP\\t-2.48\\nsNpJE@Z@LAXApBUSUU@NJdCHAPJ`M@yH\\t-2.48\\nHg}@@@aJVYU^Svv`@@@@AaITwCJz_Hl\\t-2.48\\nHiD@H@\\\\HbDbLbLddjRjjh@X]BXUMwHD\\t-2.48\\nHo^L@AaerRQVZYJRjfjj`AaJXWCIvx\\t-2.48\\nHmu@`HZoCIIEUDiVjZj`AarXWCJ|b`\\t-2.48\\nHiD@HH\\\\DdLdBdLddTjjjh@XES\\\\OH`\\t-2.48\\nHkND@NalddUfRdjijj@FGIa\\\\ngrA@\\t-2.48\\nHedLPHS@\\\\J\\\\LddQTeUMP@phfxYxbX\\t-2.48\\nHcvL@NamrRQVYQUTuT@LNSBxYwdJ\\t-2.48\\nHiDLPHS@\\\\J\\\\LddUdjjh@XDS\\\\ODS@\\t-2.48\\nHiDDPHXGBgCIIEYjji@FEIa\\\\ODi`\\t-2.48\\nHeTD`HPOAJ]eQfj@@@FCYS\\\\L|PD@\\t-2.48\\nHmLH@ARjZYjZVjjZh@XMaTwKrI@\\t-2.48\\nKAxI`UtQBQFQFRRUJji@LBaLKdL\\t-2.48\\nKAxX`Pw@xTxYIHkJjh@pILJnHw@\\t-2.48\\nHiFL`FaL@HrRRiQZj`AafEWDxP\\t-2.48\\nHeV@@JrRQRiCMT@@@LJSBZ^Ip`\\t-2.48\\nKAxX`Pw@xUPYIHkJjh@pqLKbMp\\t-2.48\\nHmVD@AalddUffjij`A`rXWBoHd\\t-2.48\\nHefL@H[aRjUVjjh@XCBXUMp|bP\\t-2.48\\nKA|Y@MBX@QddeRVj`CCLJnHw@\\t-2.48\\nHiFL@H[aRjUZjj@FGPfDwCrJ@\\t-2.48\\nqC`FB`d@hCP@zOTAqh`I@rAr@\\t-2.48\\nKA|AP\\\\dad`TaT`t`eTuUU@Gd\\\\\\t-2.48\\nsGQLJhCPA`DjfjPGFRAd@hGI@\\t-2.48\\nHiE@`HZoCIIEUJij@FEIa\\\\OHh\\t-2.48\\nHid@@DjUfaBB`@FEPfMwLJa@\\t-2.48\\nKAxY@PwUXYIHkJjh@pqLKbMp\\t-2.48\\nHiF@`DApRjZZjj@FCXUMp|a@\\t-2.48\\nKA|H@XCIKJuUPA`pQaTwDS`\\t-2.48\\nKAxH@AfRJIFjj@LJaJ[nPP\\t-2.48\\nsNpdHpxV`rRQVjhAaecqU`\\t-2.48\\nKAxX@PwYIHkJjX@pqLKd\\\\\\t-2.48\\nHaD@@DiUVyjjPA`HPfES\\\\\\t-2.48\\nsNplJyHJPtaddeeTpCBL\\t-2.48\\nsNphH{XYIHkUT@prqxjp\\t-2.48\\nsGQDHG@nFRQFj`FABuyB\\t-2.48\\nsNx`LFdlmUPCBbXobU@\\t-2.48\\nsNqHHGCIIEZjPFAVKyJ\\t-2.48\\nsGXLKIARFdLddmT`ODZ\\t-2.48\\nsGYHEAxIVuU@LMc^XQ@\\t-2.48\\nsJPiLQxBTiZhA`Xl^P@\\t-2.48\\nsGPD@xVHRjZj@XEXwd`\\t-2.48\\nsGXHHGAJijhA`Xl^R`\\t-2.48\\nsGQII[B|eTuT@prqyJ\\t-2.48\\nsGX`LDdwUT@ptMx``\\t-2.48\\nsJQhHlGBOj`FDOME`\\t-2.48\\nsJQLCIARFdH~j@^P`\\t-2.48\\nsJPD@xPHczhAaecrP\\t-2.48\\nsJQHHGAJnj@XI[fDH\\t-2.48\\nsNp@Djfjj@XUXu|d@\\t-2.48\\nsGX@@dkUT@phVMyH\\t-2.48\\nsFp@DiTt@@A`qEcP\\t-2.48\\nqCcPQXVD^hCsQX\\t-2.48\\nsJQAINczhAaeb\\t-2.48\\nqCcPQXZT]TCr@\\t-2.48\\n`IB`Cr@\\t-2.48\\n`IDpCr@\\t-2.48\\nKAxX@ASIRjuUPAaTIaMrN@\\t-2.48\\nqCc@AYIj`OBHl\\t-2.48\\nsNq@@djmUPCAbKF|c@\\t-2.49\\nHg~@@@RYfUWd}nh@@@@@XJUMprng_DB@\\t-2.49\\nsJPHADIJuPC@bK\\\\a@\\t-2.51\\nsNp`ATf^ZZ@XYY|e@\\t-2.51\\nQMIDbKpRZAaGFP\\t-2.51\\nsNq`AVeJmUPCBqXwdX\\t-2.51\\nsGQDHGBnBUSUPCCKGdh\\t-2.52\\nHeTH@@Re[TYj`@@AatIS\\\\L|``\\t-2.53\\nsJP@DjvhA`inID\\t-2.53\\nQMH`yIhFD|h\\t-2.54\\nsGP@DiVj`FEDVOIP\\t-2.54\\nHmtH@@RYeeZZjjj@FBpfES\\\\Lkr@@\\t-2.55\\nHmND@DCdfVUrjUZ`PH@FALLkrD@\\t-2.55\\nHaDH`HCpRnU[f@@@FEXUMwH@\\t-2.55\\nHaDH@@RVU[j@@@FCAFES\\\\c`\\t-2.55\\nsJPhLQDIKTpCBCba@\\t-2.55\\nsJXHHGAJZj@XYX|`@\\t-2.55\\n`Jg@XP\\t-2.55\\nKA|X@DB\\\\dwNuT`FFIa\\\\Rf@\\t-2.55\\nHmtD@@QIgYVUZh@@@XLS\\\\LkrL@\\t-2.56\\nHeTLbHS@BL{IIKDdLkP@@@prf{bCH\\t-2.57\\nHidH@@Rge^Fh@@@XMATwCrD@\\t-2.57\\nsGQhHbGAJ^jXAaKqA@\\t-2.58\\nsGX`BDdwMT@pVODj\\t-2.59\\nsNy`BDtfuZi@XIGbu@\\t-2.59\\nqCbPXXbRt`XP\\\\TP\\t-2.6\\nj`q@`@@LRYfWg^Qg^jB`@@@@FA`DhpTeZMYwnHa`\\t-2.61\\njhip@@@P\\\\eKLjo}HvkM@@@EP@@pTRcNBdkW`|aX\\t-2.61\\nj`q`@@@IToLjoiuoUT@@@@@C@tDLxJRmFl{wHX@\\t-2.61\\nJoB@P@^BULrj~mf}PA@@@@FA`UMprng[|c@\\t-2.61\\nHg|@b@|@eJf[U^Svz`@@@@AanES\\\\Lkiwr@@\\t-2.61\\nJoC@@@IRlrjzv[uP@@@@@XGBTwCJz]or@@\\t-2.61\\nHg|H`HApRkfUWd}nh@@@@@X[ATwCJz]|`@\\t-2.61\\nHg\\\\B`HSM@HrRPjIIHjZuAAD@CCj[ae[yF`\\t-2.61\\nHmT@XDdLdJdFdAdIdLddTaajjj`AaG\\\\Pe@\\t-2.61\\nHkmLbFvDp@cNrRRiQIY]Vjjj`A`qUproHL\\t-2.61\\nJoB`@@Ndrnlktqw@AP@P@A`hIaUJz[|c`\\t-2.61\\nHcm@A@tIvTiWYTjWP@`@@@XCBXWCJ|PM@\\t-2.61\\nHcMLbFvDp@cNrRRiQIKjuUUP@pXjxYWdZ\\t-2.61\\nHk\\\\@`@|DifUWGUNjjjj`A`\\\\IaTwCJz_H@\\t-2.61\\nHedDpHhG@gCgCIHcEiUUT@LNAL[agdD\\t-2.61\\nHcLD`HP@cIHXhdhLk@PT@CBfxUwfAT`\\t-2.61\\nHcLD`HP@cIHXdlipk@AT@CBfzUwf@U@\\t-2.61\\nHcL@@LdbRbUeBDEEP@LAcFxYW^Ha@\\t-2.61\\nHcL@@LdbRbceBDEEP@LAaL[iW^IP`\\t-2.61\\nHid@`@\\\\LdbaRxZ`@@AarXUMp|`@\\t-2.61\\nKA|P`E@NENFRQERjj@LJSB[nHE@\\t-2.61\\nHiDNQHSB[a@XhXKa{IICiEjV@D\\t-2.61\\nHmw@@@`Tke]fy`@j@A`vESRoH`\\t-2.61\\nHidH`HCpRkm^Eh@@@XTUMp|PL@\\t-2.61\\nHidD`HPOAJ^UxZ`@@AaQTwCq@P\\t-2.61\\nHeT@@DjYoIjjjh@XJDIaTwCH\\t-2.61\\nKAzQ@IdAxIUsMUPA`QTw\\\\`@\\t-2.61\\nsNxTMEV@`aFRPjKR`OLLP\\t-2.61\\nsGXHHGAJfjhA`Uc^P@\\t-2.61\\nsGQHDHaImfhAaacrT\\t-2.61\\nsJPDAHJPR[j`FDwEB\\t-2.61\\nqCbB@\\\\duPFBVyH\\t-2.61\\nQMFAjAIhFBOJ@\\t-2.61\\nHifDAHAHeNR[e^Eh@@@XXWCqJX\\t-2.61\\nsGQ@@eKuT@ptqxeP\\t-2.62\\nHaDH@@RVU[f@@@FFXW\\\\rJX\\t-2.64\\nKAxX@@gILjmUHA`aMqLh\\t-2.64\\nsJQ@@dkU@LBHmrD\\t-2.66\\nJoBBXBwD`dadaddebbTRtj[uTaPI@@XDpz_H\\\\\\t-2.67\\nHmtLbHS@BL{IIKEDiUZ@`@A`S]J|`P\\t-2.67\\nKAx@P@xQDIDYDYIITjjh@pZDpj[d\\\\\\t-2.67\\nHcLH@NrRQRqYRmTDA@@pYLInWbCh\\t-2.67\\nHkLF`HSNgP\\\\DjUYfjjYf@FFBi|`@\\t-2.67\\nHmVL@NaerRQVYJjfj@FCIa]J|`P\\t-2.67\\nHedL@@pdie]jjj@FCIS\\\\L|b@\\t-2.67\\nHedL@HZ\\\\ddUfUUMH@pILKnPH\\t-2.67\\nKAxX@AaYHhdZjh@pIJ[nIA@\\t-2.67\\nKA|X@QS\\\\eUkUU@FCIaTw\\\\b@\\t-2.67\\nsNpDHDTHrRQVjhAaXl[rL\\t-2.67\\nsGPDHDTHRjZj@XFKGdh\\t-2.67\\nsGQHHGCIHcUPCCKWbA@\\t-2.67\\nsNx`LDdvkUPCAY|rM@\\t-2.67\\nsGXHHGAJijhA`Uc^R@\\t-2.67\\nsGQ`AbeLuT@pRoMLP\\t-2.67\\nsGX`LJdmuT@pHaoDl\\t-2.67\\nsGXHHGAJijdAaecrT\\t-2.67\\nsGPHHDIUMU@LCEcrT\\t-2.67\\nsGP`Adinj`FBUxhP\\t-2.67\\nqC`PALcu@XZK\\\\`@\\t-2.67\\nsGQ@@dsmL@pruyB\\t-2.67\\nQMIBhF`chGcH\\t-2.67\\nqCp@BOTAahl\\t-2.67\\nRFTQVQP|`\\t-2.67\\nsNp`@dfUZj@X[E|e@\\t-2.68\\nHaDH@@RVU[j@@@FCQaTw\\\\`@\\t-2.68\\nsNpHAbIJkUT@pXbqoHp\\t-2.69\\nqCb@AIVPLDmrP\\t-2.69\\nsGQ`@jdvmR@|rq@\\t-2.69\\nsGQ@@djuT@phbqyJ\\t-2.7\\nJoC`@@PzTlrj\\x7FI{[P@@A@@F@eS\\\\LkoDmp\\t-2.72\\nHeTDPDp@bHcIIKDdLrp@@@pjJ[ayD`\\t-2.72\\nHiDDHJZIAICi@YCIICEJij@GbDp\\t-2.72\\nKA|Y@UBXGaddeTZj`CCDpnHw@\\t-2.72\\nHid@@DjUfaBB`@FGPaTwCrL@\\t-2.72\\nsNyhKEaxYIITuT@prqxjp\\t-2.72\\nqC`XBHc`haIj`LLEnR@\\t-2.72\\nqCcRQXCFzNlAy@\\t-2.72\\nRFTEPQ`|R@\\t-2.73\\nsGP`ATiVj`FFbwDZ\\t-2.74\\nHaE@@@aJyUnX@@@XEaTwDc`\\t-2.75\\nsJPXHlQxQ{T@pbxlP\\t-2.76\\nsJX`BDdvu@LH^IX\\t-2.77\\nHid@`@\\\\LdbaRxZ`@@A`rES\\\\ODC@\\t-2.78\\nHmLD@@QIe[VfeVi@B@A`V\\\\J|Ri@\\t-2.78\\nHedJ`HSFDGAJeyjjY`A`gSq@p\\t-2.78\\nsJPD@DPHRnj`FFFOED\\t-2.78\\nsNp@Dj{Zj@XFKGbk@\\t-2.78\\nqCa@CISTAaEqS@\\t-2.78\\nHefD@NalddUfUUMP@piLKayD`\\t-2.79\\nHiFL@BAAR[eVji@FAIaUqFx\\t-2.79\\nsNpP@btf{Zj@X[E|Rh\\t-2.8\\nHiD@XHdDdLdFdNdAdLddjdjjh@^PP\\t-2.8\\nsNp@DiUjj@XLQXwdX\\t-2.81\\nHo|DpHhG@gCgCIHcDhhd[^jjB`@@XZBYprng[|``\\t-2.83\\nj`q@`@HRRjyeU\\x7FSk^j`B@@@@FAhTYpTeZMYwnPH\\t-2.83\\nHglLXDp`BJdFdA\\\\IdEdLddTaLTdmUUT@LLt{yG@\\t-2.83\\nj`q@@@LddTjVTRPiN}U@A@@@@LMHpRcNBtZsnP|\\t-2.83\\nHo\\\\LxAgTdLdBdJdFdKdGdLddTgfTtjjffh@^PX\\t-2.83\\nJoB@Y@RGTCrG\\\\drnlktqw@AP@P@A`JXURngrN@\\t-2.83\\nHg^DHNihBDdLdBdLddTgTRQwUKP@@@pjUt{yG@\\t-2.83\\nHcvBXNiev@aICI@i@Pb\\\\CIIEIxiUKTh@pb^PH\\t-2.83\\nJoB@Q@^@ReSLjokYoT@P@@@A`^ES\\\\Lkiv\\x7FH@\\t-2.83\\nHkLLpHS`\\\\J\\\\F\\\\LddRLbdjjjj@FGXPrngrN@\\t-2.83\\nHmTHXERPrPjPZPFPfPrRQRFFjjj@FB\\\\oHH\\t-2.83\\nHcvFPJaLe]CpGprRRjKRMUTt@LFSBY]yG@\\t-2.83\\nHmVBhNiiV@aICI@i@PcIIEIuJiZT@XQwHD\\t-2.83\\nHcLHpMbPRPrPrRRjIKRmU@A@@pinF]yA@\\t-2.83\\nHmVFPJaLFUCp{prRRiJQjjZ@FCIaMJ|b`\\t-2.83\\nHo~D@NalddUfRbRmzjZ`@@AaJXWKiv\\x7FHD\\t-2.83\\nHk\\\\@b@a@eJYeUquSh@@@@@XKaTwCJz_H@\\t-2.83\\nHk\\\\@`LhDjU^ukmLHH@@@A`lHU\\\\Lki|c@\\t-2.83\\nHmTDHNFIAICIAgCIIJeDjjjh@XDURoHX\\t-2.83\\nHmTJhJ[iV@aICI@i@PcIIEIuJiZT@^PH\\t-2.83\\nHmVHHFjIAICICgCIIKMEJijh@XXLkrN@\\t-2.83\\nHedLjDp`BJdFdAdIdB{IIEIyKUT@OHx\\t-2.83\\nHedDpHXGBg@WCIIEXmUUT@LFSBkiy@`\\t-2.83\\nHmM@`HPOAJYeWaeZjjj`A`NES\\\\Lkr@@\\t-2.83\\nHeTL`HS@\\\\LddlRPsU@@@CBj[agfPf@\\t-2.83\\nHmVD`Naj|LddUfTjjj`AarXUCJ|Qn@\\t-2.83\\nHmVHpHxGBYAYCIIEKCJjfh@XDfDwHD\\t-2.83\\nHcw@`H[j|LddUbbeTuU@CAdpYW^HU@\\t-2.83\\nHkLL`HS@\\\\DjUYfjjjj@FDeS\\\\Lki|`@\\t-2.83\\nHmW@RDp`|Hq@eJkfZjjj@F@aEMprh\\t-2.83\\nHmWHbDphCpBTjnYjjjh@X\\\\EMproH`\\t-2.83\\nsJPKAXR@TAh@p@zOj`GAb@dCHAP@\\t-2.83\\nKAxX`Pw@xUxYIHkJjh@pILJnHw@\\t-2.83\\nHefH`FboCIIETiUUT@LFSBxYxeL\\t-2.83\\nHmTH`HApRjyfjjj`AaJXUMproH`\\t-2.83\\nHeT@@LddTjPsU@@@CAdpjZ^Ip`\\t-2.83\\nHaD@P@bH\\\\DeeVz`@@A`pXUMwH`\\t-2.83\\nHiD@`@\\\\DiVZjj`A`LIaTwCr@@\\t-2.83\\nHiD@`@lDiVZjj`A`LIaTwCr@@\\t-2.83\\nHed@`@lDjWfjjj@F@paTwCOHp\\t-2.83\\nHig@PBhPdDdDfyWaj@@@GfPw@\\t-2.83\\nsGPBIDJHtQXcIIKUPC@qZ|a@\\t-2.83\\nsJPKAyRHTQh`q@zOj`FEDVH\\t-2.83\\nHiFH@FcIIEUJjj@FEIa\\\\OHh\\t-2.83\\nKAzA@P`^BTlsUT@XDUMwDC@\\t-2.83\\nHed@@Djffjjj@FGXUMpsrD@\\t-2.83\\nsNxBLIAREdGHIMmUT@|tq@\\t-2.83\\nKA|A@HC`eTuUU@FEXUMwHP\\t-2.83\\nsOpIMP[djWkB@@FEbM_I`\\t-2.83\\nsNpL@xVP\\\\`eTuUPCCKGd`\\t-2.83\\nsNtIH`DBTifjj@XGFod@\\t-2.83\\nsNtIHaxBTifjj@XGFod@\\t-2.83\\nsNp`H|ddUjj@XYX|UX\\t-2.83\\nsNq`AbeMmUPCCJod`\\t-2.83\\nsJPD@xRHczhAahmrD\\t-2.83\\nsJPXHlQDQzl@pa@\\t-2.83\\nsJPYHlQDCh}U@P\\t-2.83\\nqCcPQXAD]TB\\t-2.83\\nsNqThmVO@~Fy|eWsTpCq@`\\t-2.83\\nsGP@Dj}j`FFfODj\\t-2.86\\nsJQ@@drt`LDmrD\\t-2.86\\nqCr@HIJlAyL\\t-2.86\\nsJP`@TeVdAaEqS@\\t-2.86\\nKAx@@IRjuUPAapPfES\\\\c`\\t-2.87\\nHeTLbHS@BL{IIKDdLkP@@@pJnF^Pp\\t-2.88\\nHeTLbHS@BL{IIKDdLkP@@@pJfz^PH\\t-2.88\\nsGPD@DDHRgZj@XDSGbU@\\t-2.88\\nsNpXHjpTIRkUJ@p`xlP\\t-2.88\\nsJQhHbBaJ^i@XP\\\\Rp\\t-2.88\\nsJPYHlPDGh}Z@XS@\\t-2.88\\nKAx@@YIDTjjh@pXDpj{bPp\\t-2.88\\nqCaPS@hRVdCqA@\\t-2.91\\nsJQhHlOBOZ`GfVH\\t-2.91\\nHk^@@@RfYU\\\\]Tz@@@@@FBaaTwCJ{rC@\\t-2.93\\nHeU@@@gIHhTmpu@A@@pYLJf{dR\\t-2.93\\nHiFD@DBlbbTLZjh@XTfUp|Pf@\\t-2.93\\nHefD@DBdfV^Zjj@FCIaTL|Qn@\\t-2.93\\nKA|H@HAIMwMUPA`VDw\\\\QJ@\\t-2.93\\nsGPHAbIJmU@LJHl^R`\\t-2.93\\nsOx@@drm]UT@pxbqk@\\t-2.93\\nsJQHDHaInZ@XH[dH\\t-2.93\\nqCcAAY]nRYhCbRp@\\t-2.93\\nqCcAAY]nRYhB\\t-2.93\\nQMBApRZA`sr@\\t-2.93\\nHmt@h@dBdFdAdEdDfYn~fBHb@AyD`\\t-2.94\\nQMFAjAIhGfR\\t-2.94\\nQMhDRUAyH\\t-2.96\\nRFDUAFCqH\\t-2.96\\nqCp@AI^`LHnS@\\t-2.96\\nHgnB@NamOIIEYeEEUSUM@CCdpnD{yB`\\t-2.98\\nHmtD`HHIeIUYVUjh@@@X\\\\BXwCOHT\\t-2.98\\nsGPBE@Z@LAXAJijhApT`Y@JATCd`\\t-2.98\\nHiDDpJFIAICICIIKLjii@FDMrN@\\t-2.98\\nHaDH@@RVU[f@@@FEQaTwHx\\t-2.98\\nHaFD@DCdfYRYje`A`fMrJ@\\t-2.98\\nsNpdHpxWprRQVjdAaecrT\\t-2.98\\nsNpXHmPxYIDYUL@pcy`l\\t-2.98\\nsNqHHGCIIEZj`FAVMyF\\t-2.98\\nsNqHHGCIIEZjPFFVOEV\\t-2.98\\nsJPD@xRHczhAaIsKD\\t-2.98\\nsJPD@xQpczhAaecrP\\t-2.98\\nqCc@AYIj`LINXK@\\t-2.98\\nqCpB@SGZ@pRwI@\\t-2.98\\nQMFIJrMP^P\\t-2.98\\nqC`@Qv`LEErX\\t-2.98\\nqCbPPSJRu@XHKdp\\t-3\\nQMJHfTf`XQrP\\t-3\\nRFTQLq`pce@\\t-3\\n`IC@Cr@\\t-3\\nsJQ@@dkU@LLInID\\t-3.01\\nsGX`LDdrmT@pfxcP\\t-3.01\\nHed@xDkLdBdJdFdAdIdLddTgeUUP@paNQp\\t-3.02\\nHg|@`@bDfYeUyO[j@@@@@FF`UMprng_H`\\t-3.02\\nHidD`HP@cIHXdnEX@@@XHw\\\\HBhP\\t-3.02\\nKAx@`ADPxILsUUPAapIaTw\\\\b@\\t-3.02\\nKAxQ@PC`eWMUU@FCIaTw\\\\PH@\\t-3.02\\nKA|A@PG`dsMUU@FCIaTw\\\\`@\\t-3.02\\nHaDD@HSIIDcSUUT@LBpj[d\\\\\\t-3.02\\nsNxTMEV@`aFRPjKR`LInHD\\t-3.02\\nsGPdIPxEprRHuT@ppVxcP\\t-3.02\\nsOp`Hdjekjj`FFqoHp\\t-3.02\\nQMFIBbN`XQqd\\t-3.02\\nRFTPTQ`|R@\\t-3.05\\nRFDGaFCqH\\t-3.05\\nHk\\\\@@DjU^ukmNeZ@B@A`LHUCJ{sLxp\\t-3.06\\nHeTD@@QIUeQej@@@FEYS\\\\ODbP\\t-3.07\\nHig@@@`Tke]nX@H@FAXUMqHD\\t-3.07\\nsOx`DFdrikTl@pVoH`\\t-3.07\\nsNp`AdenZj@XEZoba@\\t-3.07\\nqCbPPNBUt`XI[bD@\\t-3.07\\nqC`PApRZhCCQ[d@\\t-3.07\\nsJQDHGCNBT}T@pRODL\\t-3.07\\nRFTPLQP|`\\t-3.09\\nHcMLbEvDp@cNrRRqIYCJt@D`@pJfx^Qh\\t-3.11\\nHg^@B@B\\\\ddRRTjQwUUP@@@pNDpfxYWSl\\t-3.11\\nHo~J@Naeu|ddUfbbatzjZfi`A`RXT|bp\\t-3.11\\nHmtHpBbPRPrPrRRjIJUjh@@@XDwCOHT\\t-3.11\\nHmt@`H\\\\LddUbReZj@@@F@iaMproH`\\t-3.11\\nHkND@NalddUfRTjijj@F@ia]Jz_HD\\t-3.11\\nHiDHhARPrPJPjPZPrRQR^jjPAyG@\\t-3.11\\nHiDDPHPGBgCIIEYJjj@FEXS\\\\OHP\\t-3.11\\nHmTB@@SarJIIPijij@FADtkrL@\\t-3.11\\nHeV@B@B\\\\ddTjPsU@@@C@Tpj[ad\\t-3.11\\nHefD@AalddUfeUMP@piLKayD`\\t-3.11\\nKAxH`EpRBRBS]mSR@XQWDa`\\t-3.11\\nHiDL@HX\\\\ddUfjih@XDfDOHx\\t-3.11\\nsNpLHxVH\\\\PeTuUPCBkFod`\\t-3.11\\nsNyLGYHJPtaddeeTpCrL\\t-3.11\\nsNqhHlIIJeZj`FFM_H@\\t-3.11\\nsNx@@eRmUPCAqXu`\\t-3.11\\nQM@HvA`sr@\\t-3.11\\nHiDB@@SaRYUfjf@FBDwDpP\\t-3.13\\nHo~B@LAEwHhddhhd[]jjA`@@XCaCNg[|b`\\t-3.15\\nsJPIAxBTeZhA`Xl^P@\\t-3.15\\nsJP`AdizhA`d^R@\\t-3.16\\nRFBDQADXLHyP\\t-3.17\\nj`q`@@@YIEBedhdnB]zh@IiX`@XJQ`eF\\\\tZsnHex\\t-3.19\\nHglHHDApbHipVHrRSJJJ^UUUUP@pvLInFUt{yE@\\t-3.19\\nJoBD@@ILrkNx{[uA@@@@@XZAUprng[|RL@\\t-3.19\\nHg|@`@\\\\DjYmUyO[j@@@@@FFxUMprng_H@\\t-3.19\\nHctHPHApIprRIQQNUUUT@LEALinFUwdD\\t-3.19\\nHgmH`Dr@|DjV^Yjjjjh@XZATwCJz]|c@\\t-3.19\\nHiDHPHApqprQJHrjj`A`rES\\\\ODC@\\t-3.19\\nHmW@@@H\\\\dbabLjfj`A`rXwRoHh\\t-3.19\\nHiE@`HPOAJUfjjh@XMaTwCs@a@\\t-3.19\\nqCq@XIIV`OEL\\t-3.19\\nHiF@B@BTjeVjj`A`LIaTwB\\t-3.19\\nsJPHAbIJuPC@bK\\\\a@\\t-3.21\\nHg^J@Naev|ddUfbbNgUSTtp@pqLKdR\\t-3.23\\nHiFD@AalddUfjih@XDfDOHx\\t-3.23\\nKAx@@YIHkJjh@pZDpj[d\\\\\\t-3.23\\nsGPDHxVHRjZj@XEXwd`\\t-3.23\\nsNq@GddbmUHCCKGbe@\\t-3.23\\nsNpH@xYIHkU\\\\@prqyF\\t-3.23\\nqCcPAZTBSU@^XK@\\t-3.23\\nsOx@@drm\\\\@@@pHQoEf\\t-3.25\\nRFBDQ^DXLHyP\\t-3.25\\nHiDDHJZIAICi@YCIICEJij@FDMrB@\\t-3.27\\nsGPdCQHJPR[jf@XR|d@\\t-3.27\\n`IJ@Cr@\\t-3.27\\nHg|@@DjU_eZx{BBH@@@FBpaUtkiwqLX\\t-3.31\\nHo\\\\DxM]ICI@iAiCi@YBYCIIEIYGLjjjii@FDGrK@\\t-3.35\\nj`a``@NPYddblrRbR]zjfj@@@A`iFB\\\\ehug^y@P\\t-3.35\\nHo\\\\BxJX]bPRPrPzlNPnP^PrRRsIJJRjZjZ`AyG@\\t-3.35\\njhqA@@EYIHiXeDkIKUTADUT@@pTcAFJtYw`|`H\\t-3.35\\nHiD@g@hHdDdLdBdJhFdNdAd@zIklddUdjjh@P\\t-3.35\\nHkLLhJ[hBDdLdBdA\\\\LddTgTRjejj@FARngrA@\\t-3.35\\nHkLDxMMICI@iAiCi@YBYCIIEIYGJjji`AyA`\\t-3.35\\nHg\\\\LPHS@\\\\J\\\\LddQbdRiwUPU@@@pEnFUt{xbX\\t-3.35\\nHg|@P@bH\\\\DfYeUyO[j@@@@@FF`UMprng_H`\\t-3.35\\nHklDPHXGBgCIIEYhdmNjj@@@F@iaCJz_Di`\\t-3.35\\nHko@hAdtdLdBdJdFdLddTgbRtzjh@@@^Hn`\\t-3.35\\nHmV@XEbPRPrPzPFPfPrRRqRJjjj@FBDoHX\\t-3.35\\nHo|@`NqLddTlVVdeZhHBj@AaJXS\\\\iv\\x7FHD\\t-3.35\\nHo|@`NqLddTlVfdgZhHHj@AaJXS]iv\\x7FHd\\t-3.35\\nHg|H`HCpRkfUWd}mh@@@@@XJUMprng_H@\\t-3.35\\nHkLLPHZP\\\\A\\\\LddUbRdjjZj@FGIa\\\\ngrI@\\t-3.35\\nHkLLPHXP\\\\I\\\\LddUfRdjjZj@FGIa\\\\ngrF@\\t-3.35\\nHmVHHFjIAICICgCIIKLiJjZh@XXLkrJ@\\t-3.35\\nHmVHHFjIAICICgCIIKEiJjZh@XXLkrF@\\t-3.35\\nHcLHpJbPRPrPrRRsQIKmTp@@@pKae^Qh\\t-3.35\\nHmM@bHPO@IRfYUxYVjjjh@XCaTwCJ|`@\\t-3.35\\nHk^@@@RfYU\\\\]Tz@@@@@FBxUMprngr@@\\t-3.35\\nHkM@`HzoCIIDbiEJijj`A`JXPrngrJ@\\t-3.35\\nHctDPHxG@WCIIETeIUSUP@pyLJiW^Pp\\t-3.35\\nHg^@@JrRQRiKRCMT@ET@C@TpfgSod\\\\\\t-3.35\\nHef@HJbPRPrPYprRRiRUSU@CCNF^PP\\t-3.35\\nHct@PHBNBLddURTeUUU@CAXSBine]@\\t-3.35\\nHmTDPHXGCgCIIETiJjjh@XLfDLkrJ@\\t-3.35\\nHctDPHXG@WCIIEXmIUTuP@pYLJUwd\\\\\\t-3.35\\nHkLD@J{IIETdiJjjj`A`LIaBngrF@\\t-3.35\\nHeTD`HP@cIICLdLkP@@@pjfxYyA@\\t-3.35\\nHiDBPHSBCpiprRSFQjj`Aac\\\\ODp`\\t-3.35\\nHidD`HP@cIHXdnEX@@@XDULODC`\\t-3.35\\nHiDBbJ[aCpBTjeVjj`AaHPfES\\\\H\\t-3.35\\nHmVD@NalddUfRjij`AaRXWKqAd\\t-3.35\\nHmTD@H[IIETiJjjh@XLfDLkrJ@\\t-3.35\\nKAxYDPwUXUvRRJrjj@LBSBkbMp\\t-3.35\\nHiFH`D`OAJyfjjh@XMaTwCq@`\\t-3.35\\nsJPK@zRHTQh`q@ZOj`FEDVH\\t-3.35\\nsJPK@yRHTQh`q@ZOj`FEDVH\\t-3.35\\nsNqdIVG@nFRQFUU@LLEnXu`\\t-3.35\\nsNqiCVO@ReRmUPCAqXu|`@\\t-3.35\\nsJPJ@tRHTQh`qD_U@LJHlP\\t-3.35\\nsNpiH{XWlddUjj@XYX|UX\\t-3.35\\nsJXHHGAJfj@XYX|P`\\t-3.35\\nqCcPQX^D^hCBCfbp\\t-3.35\\nsJPXHlPYQzj@`\\t-3.35\\n`IoAHGd\\t-3.35\\nHeT@H@dBdAdIdDfYu[hHB`@^Ie@\\t-3.39\\n`L@LH\\t-3.4\\nsJXDHGCNBT}T@ptQxa`\\t-3.42\\nsJTHHaxIWMPCAX|P`\\t-3.42\\nsJPhLQHIKTpCqP`\\t-3.43\\nKAxX`Pw@xUxYIHkJjX@pqLKbUp\\t-3.45\\nsGQLKHaQFbLddmT`LMEnP`\\t-3.45\\nqC`DBHg`hcQBSU@XXK\\\\d@\\t-3.45\\nsGQDHGB~BUSUPCCKGdh\\t-3.45\\nsGPH@xYIDZj@XFKGbE@\\t-3.45\\nHo|D`HP@cIHXhheMAUXBHj`@XBwCNg[|PE@\\t-3.48\\nHo|D`HP@cIHXhdicAeXBBj`@XBwBng[|PJ@\\t-3.48\\nJoBBPDHG`eJsJkkYoU@@@@@A`mMprng[|`@\\t-3.48\\nHo|@@LdbRbblThP`hjj@AalIc]Jz]orA@\\t-3.48\\nHg}@@@aJVYU^Svv`@@@@A`ITwCJ{qCl\\t-3.48\\nHk^@@@RfYU\\\\]Tz@@@@@FDaaTwCJ|SS@\\t-3.48\\nHmTLPHS@BB\\\\LdaTTTVjj`A`uMproD@`\\t-3.48\\nHiDDhJZ@aICICi@YCIIECJiZ@GbPP\\t-3.48\\nHee@@@[IEDTiUUT@LAALJfF^IG@\\t-3.48\\nHid@`@|Die_ahH@@FCIaMp|PJ@\\t-3.48\\nKAx@`@DPDIRsUUPA`pPUMwDS@\\t-3.48\\nKAxH@ABTluUT@XDUMwDS@\\t-3.48\\nqC`HBHc`duPFFBwI@\\t-3.48\\nqC`HBHc`duPFDGME`\\t-3.48\\nHmvB@D@aeIfUzfZjeh@XIc\\\\aP\\t-3.52\\nQMCBHoAbDf`XH|h\\t-3.52\\n`IlAHFD\\t-3.52\\nHiDHhJbPRPrPzPFPrRRsRjZ`AyC@\\t-3.55\\nsNpB@xRHTQhcIIJjj`FEbqoHp\\t-3.55\\nKAxX`Pw@xTDYIHkJjT@pqLKdT\\t-3.55\\nHaD@`@\\\\DimVz`@@A`rXUMwH@\\t-3.55\\nKAxQ@HC`eTuUU@FEXUMwHP\\t-3.55\\nsNpmJyHJPt`~rRRrjXA@\\t-3.55\\nsNpH@xITkUT@p\\\\VM_H@\\t-3.55\\nsJPH@xIRuPC@qX|`@\\t-3.55\\nsGQHHGAJWjhAaecqB`\\t-3.56\\nHcND@LADfUyU]Zj@@@FGXWCJ{rJ@\\t-3.57\\nsGPeCQHJPoIMuS@OI@\\t-3.58\\nsJPdE`DRHcyXAaIrD\\t-3.58\\nsNp`@Ti]jj@XFZodP\\t-3.58\\n`IjApGd\\t-3.59\\nj`q`@@@YIEBedhdnB]zh@J@@@@XJQ`eF\\\\tZsnHex\\t-3.61\\nKAxLbPfDwAxUxEw]ddfLZi`CqLh\\t-3.61\\nsNqHHGAJkjj`FAqkxh`\\t-3.61\\nsNt@@\\\\dbLjj@XEZod`\\t-3.61\\nsNpP@jtfvZf@^YY`\\t-3.61\\nqC`PCDRVhCCBKdp\\t-3.62\\nKAxI@PpNFRRJrjf@LLSByG@\\t-3.64\\nsGQhHlGCIIKUHCAF|tV@\\t-3.64\\nsNq@IddbmUPC@kE|e@\\t-3.64\\nsNqdHl@`nFRPjKU@LEWq@`\\t-3.67\\nsJPhH`xQ}T@pVOED\\t-3.67\\nqCbPPND^hCBKfDp\\t-3.67\\nsJQHHGAJVj@XI[bA@\\t-3.7\\nHkLLzJ[hBLdBdAdIdMdCdNxhbHRHRHfJiZj`AyB`\\t-3.73\\nJoB@Y@QGTCqG\\\\drnlktqw@AP@P@A`hIaUJz[|c`\\t-3.73\\nJoBBPDHCaddabbRRrv[uP@@@@@XKS\\\\Lkiv\\x7FDa@\\t-3.73\\nHknBPLaAd@b`cIIBhhd]MZ`T@@FCXwKi|b`\\t-3.73\\nJoB@P@ABTwLjnmf}T@@@@@FFaS\\\\Lkiv\\x7FDa@\\t-3.73\\nHg|@`@|DjYmUyO[i@@@@@FBeS\\\\Lkiwq@p\\t-3.73\\nHgnD`Naj|LddUfbbeUUUT@LESBhYWSodL\\t-3.73\\nHcO@HBhPdDdEdMdLbfbRagCT@EP@OLci@\\t-3.73\\nHg|@`@BDfYeUyO[j@@@@@FBeS\\\\Lkiwq@`\\t-3.73\\nHglLPHNp\\\\JBDjefYjjjjT@XRfDwCJ{rJ@\\t-3.73\\nHk\\\\@`@SDifUWGUN`@@@@A`nES\\\\Lki|`@\\t-3.73\\nHmTLHHS@BJ\\\\FdNdLddJbdVjj`Aa`roHH\\t-3.73\\nHk\\\\@BLeJeWmZ{SBB@@@@XKBEWCJz_Hp\\t-3.73\\nHkNH`FboCIIEUEEJjjj`AaJXWCJz_Hh\\t-3.73\\nHo\\\\``HSBCpRjVYffjjjj@F@mprng_H\\\\\\t-3.73\\nHk^@@@RfYU\\\\]Tzjjjj@FEaBXUMprnf\\t-3.73\\nHef@XLBPRPZPzPFPfPR[fZjjh@^YAT\\t-3.73\\nHiDLPHQ`\\\\J\\\\LddUdjjh@XEa\\\\ODQ`\\t-3.73\\nHmTLHBk`dDdIdEdDf{[jffh@^I@`\\t-3.73\\nHkL@@LddTbdLjjjj@FDxS\\\\Lki|b`\\t-3.73\\nHeg@bHS@|@eJfYjjj`A`qTwCOH@\\t-3.73\\nKAxH`PpNENFRRJrjj@LBSB{bTp\\t-3.73\\nHeg@bHS@B@eJfYjjj`AapES\\\\L`\\t-3.73\\nsGPH@xIUMU`LLl^R`\\t-3.73\\nHcl@@DjYU_egX@@@@@XBaMprn|SJ@\\t-3.75\\nHmvD@LADf]eYUj`@@A`qMproHp\\t-3.77\\nHklL`HS@BLddJbRvWUjB@`@XMS]JgrA@\\t-3.78\\nsJPhH`xYICT`LEcsBH\\t-3.78\\nsJPXhlPD[ct^m@H\\t-3.8\\nHeVB@D@aeIfUzYjjV@FBXwHx\\t-3.81\\nHaFL@D@nRYgifjf@FBXwHH\\t-3.81\\nsGQLKIARFdLddmU@LI^P`\\t-3.81\\nsJPHHDQ}T@prqyH\\t-3.81\\nQMBcpIRZAaWDP\\t-3.81\\nsJQHHGBOj`FFVOI@\\t-3.81\\nHmvLbEaL@HslddlRVFUh@H@FATwCrE@\\t-3.83\\nHcLL`HS@BLddJfRtjmP@P@LJ[ag^QP\\t-3.83\\nHiDDpHhG@gAgCIHbeJjj@FC@fMp|``\\t-3.83\\nHidD`HPGCIHXdnFh@@@XTUMp|pHP\\t-3.83\\nHef@@@Ri^Zjjh@XCBES\\\\L|c@\\t-3.83\\nHiF@@@ReYjjj@F@pfES\\\\OH@\\t-3.83\\nqCaHKBH`PdthFDGI@\\t-3.83\\nQMBCDRZA`erP\\t-3.85\\nHeTD@@QIUeQej@@@FCYS\\\\L|b@\\t-3.85\\nqCbPPNBRu@XI[d@\\t-3.86\\nQMIDbHHRYAaGJ@\\t-3.87\\nHo|H@IrRQRiQFPUj`BJh@FDiaTtg[|aP\\t-3.88\\nHedHHJbPRPrPYprRRiRUUU@CCNF^PP\\t-3.88\\nHmVHPF`GCgCIIETiJjZh@XLfDLkrJ@\\t-3.88\\nHiDLhJ[hBDdLdBdA\\\\LddTgjeh@^PH\\t-3.88\\nHiDLHJ[hBDdLdBdLddTgjeh@^PH\\t-3.88\\nsNplJyHJPtaddeeTpCrL\\t-3.88\\nsNphHpxYIHkUR@prqyJ\\t-3.88\\nsOx`DFdrikUL@pVoH`\\t-3.91\\nqCbPPNBTu@XS\\\\PP\\t-3.91\\nHctDXAeICIBiAiAYCYCIIEHXYUUMP@pb^Qp\\t-3.93\\nqCpPP^BSU@XI[d@\\t-3.93\\nQMABHgAIhFBOJ@\\t-3.94\\nsNxaBDnR[YjhAaMqU`\\t-3.96\\nqC`PApRVhCAQ\\\\Pp\\t-3.96\\nsGXaBDnR[Vj@XS\\\\Qh\\t-3.97\\nsGQHHGAJijhAaecrT\\t-3.97\\nHaDH`HApRnU[j@@@FEXUMwDB@\\t-3.98\\nHkLHxMRPrPJPZPzPFPfPrRQRVQrjjjX@^PX\\t-4.02\\nHmTLhJ[hBDdLdBdA\\\\LddTgTjej`A`dkrA@\\t-4.02\\nKA|PtMpFdQBQFQAQEQ@MdddgjjPCA`aLJ`\\t-4.02\\nHmt@pHdDdLdLddjbReZj@@@FEMproHH\\t-4.02\\nHcl@@DjYU_egX@@@@@XBfES\\\\L|Q]@\\t-4.02\\nHmtL`HS@BLddlRVFUh@H@FETwBoHp\\t-4.02\\nHiDB`HSBBRRjUZjj@FATwCr@@\\t-4.02\\nsNxDHG@nFRQFUU@LKEj~HD\\t-4.02\\nsGP@DjZj`FAVMxa@\\t-4.02\\n`Jd`^P\\t-4.02\\nQMJH\\\\Df`XSr@\\t-4.04\\nHk|@@LdbbbRQKauS`@`@`@F@ySCJz_Hx\\t-4.04\\nsGPB@xRHTQhcIIKUPC@qX|e@\\t-4.09\\nJoB@P@NFRRJJEIKKYoU@@@@@A`mMprng[|SB@\\t-4.11\\nHcu@`HPOAJYYfjjjh@XSaTwCJ{q@P\\t-4.11\\nHiD@@DjfZjj`A`vES\\\\ODa@\\t-4.11\\nsGPdCQHJPR[jf@^JT\\t-4.11\\nqCbPPND^hCAK\\\\P`\\t-4.12\\nsGQ@HeTuT@prqyJ\\t-4.12\\nKAxH@PvRRJrjf@LLSByG@\\t-4.14\\nHet@@DjYUX^d@@@@A`rXULODzP\\t-4.18\\nHcLBHHQaApIpipUprRIZJJbmUUUP@pKNg^DATh\\t-4.2\\nsNpdHpxWprRQVjhAaecqU`\\t-4.22\\nsJPYhlQxKmqzOZ`D\\t-4.22\\nsGX`LDdsmT@pexlP\\t-4.23\\nRFPaMt\\\\H\\t-4.25\\nQMIH\\\\EpRZAxb\\t-4.25\\nHiFB@LANEImfZjX@XYaCqDX\\t-4.26\\nHmV@xNRPrPJPjPZPfPVPrRQR]Rjjj@Gb\\\\H\\t-4.27\\nHcu@XFVIAICICi@YBYCIIKEHkUSUH@|cP\\t-4.27\\nHgnD`Naj|LddUbRdUUUUT@LISBjUt{yG@\\t-4.27\\nHmU@XFVIAICICi@YBYCIIKEHjjZh@^Ph\\t-4.27\\nHedLpHi`\\\\B\\\\N\\\\LdbLVeUUP@pXDsagbDp\\t-4.27\\nHmU@pHTGBgA`cIIEKHjjjh@X\\\\fDwCOHT\\t-4.27\\nHef@XFbPRPrPzPFPfPrRRqRUTu@CrF@\\t-4.27\\nHcvD`Naj|LddUbteUUU@CCdpje]yG@\\t-4.27\\nHcw@`H[j|LddUbbeTuU@CCdpae]yE@\\t-4.27\\nHef@pHApipXHrRQRrUUU@CAdpnF^Pp\\t-4.27\\nHmTD`HZoCIIETiJjjh@XLfDLkrJ@\\t-4.27\\nHed@`@\\\\DjYfjjj@FDpfES\\\\L|`@\\t-4.27\\nKA|HP]SPDIHYHEHIUMURpAyG@\\t-4.27\\nsGPH@xIUMU@LCEcrT\\t-4.27\\nsJQ@IGuPCCKGd`\\t-4.28\\nHid@b@|@eJYWxZB@@A`rXS\\\\ODB`\\t-4.31\\nHiFB@LANEIevZjX@XI`|Pj@\\t-4.32\\nKA|D@XBMrSZsUL@XIg\\\\QB@\\t-4.32\\nqCbPHQBSS@XP\\\\f@\\t-4.32\\nHedL`HS@\\\\LddRRmUUP@phj[ayD`\\t-4.33\\nHk^@@@RfYU\\\\]Tzjjjj@FApfES\\\\Lki|`@\\t-4.35\\nqCaPQApcu@XS\\\\pb@\\t-4.38\\nsJPHHxQ}T@prqyH\\t-4.38\\nKAxI@P`NFRQIFjj@LBpj[bAp\\t-4.4\\nqCsCPKRUvyIf`NIO@\\t-4.41\\nqCsCPKRUvyIf`H\\t-4.41\\nHctDxAe@cI@iBiAiAYCYCIIEHhyUUKP@|QN@\\t-4.42\\nJoB@P@^BULrj~mf}PA@@@@FAaaTwRng[|`P\\t-4.42\\nsNpH@xISMUT@p\\\\VM_H@\\t-4.42\\nsNq`@jdssTpCqY`\\t-4.42\\nqC`XR@TAhBOTAqh`I@rAr@\\t-4.43\\nsJPB@xRHTQhbOj`FFbwHP\\t-4.43\\nsNqLKIARFdLddljf@^Q`\\t-4.43\\nQMJH\\\\HzAaOD`\\t-4.44\\nKAxPPUD`d`tataddaTjf`CqLH\\t-4.45\\nQMBCpchGfR\\t-4.45\\nQMJH\\\\Df`^H`\\t-4.48\\nHctLhJ[hBDdLdBdA\\\\LddTgReTmU@CCIW^PH\\t-4.49\\nHiDL`HS@\\\\DjeVjj`A`QTw\\\\`P\\t-4.49\\nqC`PApRfhCAQ\\\\Pp\\t-4.5\\nKAxH`P`NENFRRJrjj@LBpf{bIP\\t-4.52\\nHg|H`HApRkfUWd}nh@@@@@XJUMprng_DB@\\t-4.55\\nsNphH`xITkUT@pvMx`p\\t-4.55\\nsGQDBIARBS]TpCqR`\\t-4.55\\nRFDTAFCbdCd@\\t-4.56\\nsGQ`@jdsmR@|VH\\t-4.57\\nHedL`HS@\\\\DjUUjjj@FCES\\\\L|`@\\t-4.58\\nKAxY@Pf@xITnuUPA`QTw\\\\PL@\\t-4.58\\nKAxY@Pf@xIUJuUPAaeMwHH\\t-4.58\\nsGQhHlGCIHcUPCAF|pV@\\t-4.58\\nsNpHHxIUMUT@pjqkyH\\t-4.58\\nQMJDbDfPXQr`\\t-4.63\\nQMBApRZAaWDP\\t-4.64\\nsNphH`xIRkUT@pNM_H@\\t-4.66\\nsJPhH`xISuPCAX|PP\\t-4.66\\nHglLhJ[hBDdLdBdA\\\\LddTgTbeTmUT@LBWSodR\\t-4.67\\nHo\\x7F@XBhPdDdMdCdKdGdDfyV^[aj@Bjh@GfQJ`\\t-4.67\\nh`~@@@YIHiEHYCJjjjj`@pu`cNRUhug^y@P\\t-4.67\\nHctDpHPGBgAgCIIDcHiUUUP@p{BxYW^Pp\\t-4.67\\nHmVBhNiiV@aICI@i@PcIIEIuJiZT@^Ip`\\t-4.67\\nHmW@`HS@|DjVYfjjh@XMS\\\\Lkq@H\\t-4.67\\nsOpH@xILkW@@@LJlZ~P@\\t-4.67\\nQMABHgAIhFD\\\\Y@\\t-4.69\\nsGPhH`xITmU@LD[qC@\\t-4.7\\nqC`PCpcu@XP\\\\tV@\\t-4.72\\nQMbH\\\\HzAaOD`\\t-4.75\\nsGPH@xITuU@LBl[qB@\\t-4.75\\nsGPBIHJPtaYCIIKUPCrD\\t-4.76\\nQMAJ@XBN`\\\\L`JAr@\\t-4.77\\nRFBDQNDXLHyP\\t-4.77\\nsNqhHlGAJeZj`FFM_H@\\t-4.79\\nsJQ`@bdjt`OEL\\t-4.79\\nj`aA@@NYIHiXmDiIZj``bj@@XRQ`cNZl{wHF@\\t-4.83\\nHed@DHADdLdBdFkNdAdIdLddTleUUP@panQ@\\t-4.83\\nHkLLpHS@\\\\J\\\\F\\\\LddRLbdjjjj@FGEprngrL@\\t-4.83\\nHkLDpHXGBg@WCIIEXdiJjjZ`A`JXWRngrJ@\\t-4.83\\nHctLpH[`\\\\J|A\\\\LddUbteUUU@CCdpje]yG@\\t-4.83\\nHctLpH[`\\\\J\\\\A\\\\LddUbteUUU@CCdpje]yG@\\t-4.83\\nHglLpHS@\\\\J\\\\F\\\\Djevfjjfjh@XBWCJz]|c@\\t-4.83\\nHctLpH[`\\\\J|A\\\\LddUfTeUMU@CAdpiW^QP\\t-4.83\\nHkLBpHSBCpipYpRjwiijjjh@XMprngrB@\\t-4.83\\nHctLpH[`\\\\JhA\\\\LddUbteUUU@CAdpiW^Qp\\t-4.83\\nHedHXFbPRPrPzPFPfPrRRqRUUU@CBFyA@\\t-4.83\\nHmTDpHXGBjCgCIIETiJjjh@XLfDLkrJ@\\t-4.83\\nHg\\\\@@LddTjTt`kU@DU@@peLJfWSodB\\t-4.83\\nHg^@@JrRQRiSRBmT@QT@C@TpfWSodB\\t-4.83\\nHctL`H[jlLddUbteUUU@CAdpiW^Qp\\t-4.83\\nHmTD`HZkCIIETiJjjh@XLfDLkrJ@\\t-4.83\\nKAxX`Pw@xTxYIHkJjh@pqLKfTw@\\t-4.83\\nqC`DBHc`hcQBSU@XXK\\\\d@\\t-4.83\\nsJPH@xITuPCCQ[bA@\\t-4.85\\nsJPhH`xIRuPCAX|`@\\t-4.86\\nHid@`@\\\\LdbaRxZ`@@AaQTwCs@S@\\t-4.88\\nHct@@LddTbaeUUU@C@\\\\InFUwbIP\\t-4.88\\nqCbPXRBRt`^JH\\t-5.01\\nsOpIAxBTfUk`@@FEVM_H@\\t-5.03\\nHaD@`@\\\\DimVz`@@AaVES]q@P\\t-5.04\\nRFEG`SFCqH\\t-5.04\\nsGX`LDdvmT@pfydZ\\t-5.06\\nHo]@`HPOAJYfYfjjjjh@XGaTwCJz]or@@\\t-5.07\\njhy@`@@HRUYfUWyHwgAZj@@@H@@XJpPRmFl{p^P`\\t-5.08\\nqC`PApcu@XZK\\\\`@\\t-5.08\\nJobD@@IKLrj}\\\\mf}T@@@P@A`lHprng[|`@\\t-5.09\\nQMCBHgAbDf`XH|h\\t-5.09\\nHctHxMRPrPJPZPzPFPfPrRQRVQuUUR@OHT\\t-5.11\\nHiFD@NalddUfjih@XDfEwHD\\t-5.12\\nJgB@@BULrjy\\\\Nk\\\\@D@Q@@FDyS\\\\Lkm|`p\\t-5.16\\nsJXHHGBOj`FFVOI@\\t-5.21\\nh`\\x7F`D@PxJgaddbQbdTTjfjjj@CARLDdkQkN}rE@\\t-5.24\\nHkLLHHi`\\\\B\\\\N\\\\A\\\\LdbLRTTjjjj@FD`f\\\\Lki|``\\t-5.24\\nHcu@XJZIAICIBYAYCYCIIJdeIULuP@|Pn@\\t-5.24\\nHo^D`Naj|LddUbRdTjjjjh@XJfETkiv\\x7FHx\\t-5.24\\nHk\\\\@bLhLyJeWmZ{SBB@@@@XKBEWCJz_Hp\\t-5.24\\nHmU@pHXGB`cgCIIETiJjjh@X\\\\fEProDa`\\t-5.24\\nHiD@P@\\\\J\\\\LddUdjjh@XLfDwCrH@\\t-5.24\\nKA~A@PfAxIUsMUPA`QTw\\\\PH@\\t-5.27\\nsNp`H|ddUji@XYX|e@\\t-5.3\\nHg|@`@\\\\DjYmUyO[j@@@@@FBeS\\\\Lkiwq@p\\t-5.31\\nQMBApchFCOH@\\t-5.31\\nsNpdHpxUprRQVjhAaecqU`\\t-5.32\\nRFDCaFCBnP\\t-5.38\\nRFTPxQ`|R@\\t-5.39\\n`IG@Cr@\\t-5.39\\nsJPYHlQDGh}V@P\\t-5.4\\nqCpPPND^hCAK\\\\P`\\t-5.44\\nKAxXPTwPDIHYHEHIUMURpAyG@\\t-5.45\\nKA|H@]CYIHkJjX@pqLKd\\\\\\t-5.48\\nsNqlHl@brCdLddlVj@^KD\\t-5.49\\nHctDpHXGBg@WCIIEXmIUUUP@pyLKiW^QP\\t-5.55\\nsKP@Di\\\\Zj@XTQX`\\t-5.55\\nHeT@pHdDdLdLddlRPsU@@@CCJZ^Ip`\\t-5.6\\nqCcPQXQD]TCr@\\t-5.62\\nQMBApchGfR\\t-5.62\\nHgl``HSBCpRjVYfZjjj`A`K\\\\LkiwrJ@\\t-5.64\\nHk\\\\@`@\\\\DifUWGUN`@@@@A`nES\\\\Lki|`@\\t-5.7\\nsNtHHaxISMUT@pNM_H@\\t-5.73\\nsJPLAHJPL`dwU@OEL\\t-5.77\\nHctLbH[jlJ{IIEXmIUUUP@pyLJiW^Qp\\t-5.81\\nHmTDbHZkBnrRQUJRjjj@FCIaCJ|b`\\t-5.81\\nHkNB@NamOIIEYeEJjZi`A`rXWB_HT\\t-5.83\\nHcvB@NaewIIEYdiUSTp@piLKmy@`\\t-5.88\\nsGQLKIARFdLddmT`OHP\\t-5.94\\nHo\\\\LhJ[hBDdLdBdA\\\\LddTgTTTjejjh@XMJz]orA@\\t-5.96\\nHmTDpHXGBoCgCIIETiJjjh@XLfDLkrJ@\\t-6.03\\nsOpHAxILkW@@@LJlZ~P@\\t-6.07\\nQMBApchFE\\\\Q@\\t-6.07\\nRFDCaFCqH\\t-6.09\\nsJQDBIARBS]R@|Tp\\t-6.14\\nsJPH@xQ}T@ptVyB\\t-6.14\\nJoB@Q@^@ReSLjokYoT@P@@@AanES]Jz]oq@D\\t-6.22\\nHmT``HSBCpRjyfZjj`A`uMproH`\\t-6.22\\nsJXA@IczhA`XlP\\t-6.33\\nHiD@p@\\\\H\\\\J\\\\LddUdjjh@XLfDwCrH@\\t-6.38\\nKAxXTTwPDIHYHEH]rUSUTl@P\\t-6.38\\nsNqmHl@brCdMvRRVKU@OHP\\t-6.44\\nqCcPQXND^hCpbK@\\t-6.5\\nHaD@b@|@eJ[Unh@@@XUaTw\\\\PD@\\t-6.53\\nqC`PApcu@XJKbF@\\t-6.53\\nsNpO@YRHTQh`qEbGDAh\\x7Fjj@X\\\\QXu`\\t-6.53\\nsNpO@ZRHTQh`qEbGDAh\\x7Fjj@X\\\\QXu`\\t-6.53\\nsNpOAYRHTQh`qEbGDBh\\x7Fjj@X\\\\QXu`\\t-6.53\\nHiF@PHApiprRQVRjj`A`rXS\\\\OH`\\t-6.53\\nsNpO@\\\\RPTai@rEdGHAh\\x7Fjj@XP@\\t-6.53\\nsNpO@JRPTai@rEdGHAh\\x7Fjj@XP@\\t-6.53\\nHeg@`HS@|DjYfjjj@FCES\\\\L|`@\\t-6.53\\nsNpOAXRPTai@rEdGHBh\\x7Fjj@P\\t-6.53\\nsNpOABRPTai@rEdGHCh\\x7Fjj@P\\t-6.53\\nsNpyHlZqfCh\\x7Fjj@X\\\\QXu`\\t-6.53\\nQMFIGBN`^YH\\t-6.58\\nsGPG@ZRHTQh`qEb@t_jhAaXl[r@\\t-6.75\\nsNpJIHJPtaYArFRRVUU@OHP\\t-6.89\\nHaD@`@|DimVz`@@AaVES]q@P\\t-6.95\\nHk\\\\@b@|@eJYeUquSh@@@@@XKaTwCJz_H@\\t-7.06\\nHg\\\\@XHdDdLdMdCdKdLddlRTt`kU@DU@@prfWdB\\t-7.11\\nsNpbJxDJPt`YAJijiPGd`\\t-7.19\\nsGPBAHJPLaYAInjhAxi`\\t-7.19\\nHefD@NalddUfUUMP@pILKnHL`\\t-7.2\\nsGPlH`DFPladdLVhAxa`\\t-7.25\\nsJPKAPRPTai@r@zOj`D\\t-7.29\\nqC`FBPe@iCRDyIj`OI@\\t-7.34\\nHctLpH[`\\\\J\\\\A\\\\LddUbteUUU@CAdpiW^IW@\\t-7.38\\nHg|@`@|DjYmUyO[j@@@@@FF`UMprng_Hp\\t-7.38\\nsNpOAfRHTQh`qEbGDCh\\x7Fjj@X\\\\QXu`\\t-7.53\\nsNpOAYRHTQh`qEbGDAh\\x7Fjj@X\\\\QXu`\\t-7.53\\nsNpOAZRHTQh`qEbGDBh\\x7Fjj@X\\\\QXu`\\t-7.53\\nsNpO@zRHTQh`qEbGDAh\\x7Fjj@X\\\\QXu`\\t-7.53\\nsNpO@tRPTai@rEdGHAh\\x7Fjj@XP@\\t-7.53\\nHed@xDdLdBdJdFdAdIdLddTgeUUP@|c`\\t-7.62\\nHk\\\\@`@|DifUWGUN`@@@@A`nES\\\\Lki|`@\\t-7.7\\nHmTDpHXGBgCgCIIETiJjjh@XLfDLkrJ@\\t-7.73\\nHo]@HHTGBgA`cWCIIEKHjiJjjjj@FBiaMpr]orE@\\t-7.79\\nHgl@dDdLdBdFdNdIdEdMdCdLddTedLeUUUT@OHl\\t-7.79\\nHg|@b@|@eJf[U^Svz`@@@@A`iTwCJz]|PL@\\t-7.99\\nHkL@dDdLdBdFdNdAdIdMdCdLddTed\\\\jjjj@GdJ\\t-8.08\\nsNpOAfRPTai@rEdGHCh\\x7Fjj@XP@\\t-8.11\\nh`~CDHPYreaSlddUbRdTeUUUUP@XJQ`eEZMYw`\\t-8.37\\nsNpBIHJPl`yCIICJj`Gbq@\\t-8.5\\nsNpO@yRHTQh`qEbGDAh\\x7Fjj@X\\\\QXu`\\t-8.52\\nsNpO@xRPTai@rEdGHAh\\x7Fjj@P\\t-8.84\\nHed@XDdLdJdFdAdIdLddTaeUUP@|Pn@\\t-9.1\\nHkL@H@\\\\H\\\\J\\\\F\\\\LddTlbdjjjj@FDia\\\\Lki|b@\\t-9.37\\nHkL@DLdBdJdFdAdIdMdCdLddTbd\\\\jjjj@Gb\\\\h\\t-9.57\\nHiD@XHdDdJdFdNdAdLddLTjjh@^Ia@\\t-9.59\\nHct@DDdLdJdFdAdIdEdMdLddTaaeUUU@CqBx\\t-10.1\\nsNpOAxRPTai@rEdGHCh\\x7Fjj@P\\t-10.77';\nTrb.fE=false;Drb.T$=B5(235);Trb.jE=function jE(a,b){return Krb.Ji(a.a,b).a};Trb.kE=function kE(a,b){return Krb.Ji(a.a,b).b};Trb.lE=function lE(a){var b,c,d,e,f;f=new fsb.v4(new fsb.z4(a));this.a=new Krb.Yi;while(true){e=fsb.u4(f);if(e==null)break;d=Erb.o7(e,A7(9));if(d==-1)throw h3(new Erb._z('line without TAB'));b=(Hrb.lnb(0,d,Hrb.rnb(e).length),Hrb.rnb(e).substr(0,d));c=Erb.$5(Hrb.rnb(Erb.U5((Hrb.mnb(d+1,Hrb.rnb(e).length+1),Hrb.rnb(e).substr(d+1)))));Krb.Ei(this.a,new Trb.mE(b,c))}};Z3(237,1,{},Trb.lE);Drb.V$=B5(237);Trb.mE=function mE(a,b){this.a=a;this.b=b};Z3(200,1,{200:1},Trb.mE);_.b=0;Drb.U$=B5(200);Trb.nE=function nE(a,b){this.a=a;this.b=b};Z3(38,1,{38:1},Trb.nE);_.b=0;Drb.X$=B5(38);Trb.oE=function oE(a){a.a=new Krb.Yi};Trb.pE=function pE(a,b,c){Krb.Ei(a.a,new Trb.nE(b,c))};Trb.qE=function qE(){Trb.oE(this)};Z3(114,1,{},Trb.qE);Drb.W$=B5(114);Trb.tE=function tE(){Trb.tE=_3;Trb.rE=BX(nX(Drb.B0,1),Esb,2,6,['[N](-*)(-*)-*','[N](-*)=*','[N]#*','[N](-*)(=*)=* as in nitro','[N](=*)#* middle atom of azide','[N]1(-*)-*-*-1 3-membered ring','[NH](-*)-*','[NH]1-*-*-1 3-membered ring','[NH]=*','[NH2]-*','[N+](-*)(-*)(-*)-*','[N+](-*)(-*)=*','[N+](-*)#* N in isocyano','[NH+](-*)(-*)-*','[NH+](-*)=*','[NH2+](-*)-*','[NH2+]=*','[NH3+]-*','[n](:*):*','[n](:*)(:*):*','[n](-*)(:*):*','[n](=*)(:*):* as in pyridine-N-oxid','[nH](:*):*','[n+](:*)(:*):*','[n+](-*)(:*):*','[nH+](:*):*','[O](-*)-*','[O]1-*-*-1 3-membered ring','[O]=*','[OH]-*','[O-]-*','[o](:*):*','[S](-*)-*','[S]=*','[S](-*)(-*)=*','[S](-*)(-*)(=*)=*','[SH]-*','[s](:*):*','[s](=*)(:*):*','[P](-*)(-*)-*','[P](-*)=*','[P](-*)(-*)(-*)=*','[PH](-*)(-*)=*']);Trb.sE=BX(nX(Drb.MY,1),Pub,6,15,[3.240000009536743,12.359999656677246,23.790000915527344,11.680000305175781,13.600000381469727,rzb,12.029999732971191,21.940000534057617,23.850000381469727,26.020000457763672,0,rzb,4.360000133514404,4.440000057220459,13.970000267028809,16.610000610351562,25.59000015258789,27.639999389648438,12.890000343322754,4.409999847412109,4.929999828338623,8.390000343322754,15.789999961853027,4.099999904632568,3.880000114440918,14.140000343322754,9.229999542236328,12.529999732971191,17.06999969482422,20.229999542236328,23.059999465942383,13.140000343322754,25.299999237060547,32.09000015258789,19.209999084472656,8.380000114440918,38.79999923706055,28.239999771118164,21.700000762939453,13.59000015258789,34.13999938964844,9.8100004196167,23.469999313354492])};Trb.uE=function uE(a,b){var c,d;c=Trb.yE(a);for(d=0;d<Trb.sE.length;d++)c[d]!=0&&Trb.pE(b,''+c[d]+' * '+Trb.sE[d]+'   AtomType: '+Trb.rE[d],2)};Trb.vE=function vE(a){var b,c,d;b=Trb.yE(a);d=0;for(c=0;c<Trb.sE.length;c++)d+=b[c]*Trb.sE[c];return d};Trb.wE=function wE(a){var b;b=new Trb.qE;Krb.Ei(b.a,new Trb.nE('The polar surface area prediction is based on an atom-type based',2));Krb.Ei(b.a,new Trb.nE('increment system, published by P. Ertl, B. Rohde, P. Selzer',2));Krb.Ei(b.a,new Trb.nE('in J. Med. Chem. 2000, 43, 3714-3717',2));Krb.Ei(b.a,new Trb.nE(pzb,2));Trb.uE(a,b);return b};Trb.xE=function xE(a,b){var c;switch(a.C[b]){case 7:if(b<a.f&&Jrb.Fr(a.p,b)){if(a.s[b]==0){if(a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)==0){if(Jrb._n(a,b)==2)return 18;else{for(c=0;c<Jrb._n(a,b);c++)if(!Jrb.zo(a,a.k[b][c]))return 20;return 19}}else return 22}else if(a.s[b]==1){if(a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)==0){for(c=0;c<Jrb._n(a,b);c++)if(!Jrb.zo(a,a.k[b][c]))return Jrb.mk(a,a.i[b][c])<0?21:24;return 23}else return 25}}else{if(a.s[b]==0){switch(a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)){case 0:switch(a.o[b]){case 0:return (!!a.p&&b<a.f?Jrb.ur(a.p,b):0)==3?5:0;case 1:return 1;case 2:return 2;}break;case 1:switch(a.o[b]){case 0:return (!!a.p&&b<a.f?Jrb.ur(a.p,b):0)==3?7:6;case 1:return 8;}break;case 2:return 9;}}else if(a.s[b]==1){switch(a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)){case 0:switch(a.o[b]){case 0:return 10;case 1:return Trb.zE(a,b)?3:11;case 2:return a.n[b][0]==2?Trb.zE(a,b)?4:Trb.sE.length+1:12;}break;case 1:switch(a.o[b]){case 0:return 13;case 1:return 14;}break;case 2:return a.o[b]==0?15:16;case 3:return 17;}}}return Trb.sE.length+1;case 8:if(b<a.f&&Jrb.Fr(a.p,b)){if(a.s[b]==0)return 31}else{if(a.s[b]==0){if(a.o[b]>0)return 28;if(Jrb._n(a,b)==1)return 29;if((!!a.p&&b<a.f?Jrb.ur(a.p,b):0)==3)return 27;return 26}else if(a.s[b]==-1){if(Jrb._n(a,b)==1&&Jrb.mk(a,a.i[b][0])>0)return 28;return 30}}return Trb.sE.length+1;case 15:if(a.s[b]==0){if(a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)==0){if(Jrb._n(a,b)==3&&a.o[b]==0)return 39;if(Jrb._n(a,b)==2&&a.o[b]==1)return 40;if(Jrb._n(a,b)==4&&a.o[b]==1)return 41}else if(a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)==1){if(Jrb._n(a,b)==3&&a.o[b]==1)return 42}}return Trb.sE.length+1;case 16:if(a.s[b]==0){if(b<a.f&&Jrb.Fr(a.p,b)){return Jrb._n(a,b)==2?37:38}else{if(a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)==0){if(Jrb._n(a,b)==2&&a.o[b]==0)return 32;if(Jrb._n(a,b)==1&&a.o[b]==1)return 33;if(Jrb._n(a,b)==3&&a.o[b]==1)return 34;if(Jrb._n(a,b)==4&&a.o[b]==2)return 35}else if(a.e[b]-Jrb._n(a,b)+Jrb.Wn(a,b)==1){if(Jrb._n(a,b)==1)return 36}}}return Trb.sE.length+1;}return Trb.sE.length};Trb.yE=function yE(a){var b,c;c=tX(Drb.NY,Qsb,6,Trb.sE.length+2,15,1);Jrb.ou(a,7);for(b=0;b<a.f;b++)++c[Trb.xE(a,b)];return c};Trb.zE=function zE(a,b){var c;for(c=0;c<a.j[b];c++)if(Jrb.mk(a,a.i[b][c])<0)return true;return false};Trb.AE=function AE(a){var b,c;c=0;for(b=0;b<a.a.q;b++)(Jrb.Dk(a.a,b)==7||Jrb.Dk(a.a,b)==8)&&++c;return c};Trb.BE=function BE(a){var b,c;c=0;for(b=0;b<a.a.q;b++)(Jrb.Dk(a.a,b)==7||Jrb.Dk(a.a,b)==8)&&Jrb.tn(a.a,b)>0&&++c;return c};Trb.CE=function CE(b){var c;try{return Trb._D((new Trb.bE,b.a))}catch(a){a=g3(a);if(zY(a,15)){c=a;Erb.Jz(c,(Erb.X7(),Erb.W7),'');return -999}else throw h3(a)}};Trb.DE=function DE(a){this.a=a;Jrb.Ro(a)};Z3(241,1,{});Drb.Y$=B5(241);Trb.GE=function GE(){Trb.GE=_3;Trb.EE=BX(nX(Drb.OY,1),iub,6,14,[524290,524292,524297,524301,589826,589827,589828,589829,589832,589833,589837,589838,688130,688131,688132,688137,688141,819202,819203,819204,819205,819208,819209,1114114,1114115,1114116,1114120,1212420,1343492,1343496,1638402,1638403,17367042,17367043,17367044,17367045,17367048,17367049,17367053,17367054,17465346,1074266116,1208483842,1208483844,1208549378,1208549379,1208549380,1208549384,1208549388,1409810434,1409875970,1409875971,1409875972,1409875976,1409974274,1409974280,1409974284,1678311426,1678311427,1678311428,1678311432,1678311436,1678409730,1678409731,1678409732,1678540802,1678540803,1678540804,1678540808,2282291202,2282291203,2282389506,2282389507,2282520578,2282520579,2483617794,2483617795,2483716098,2483716099,2752675842,3356033026,3557359618,3557457922,3557588994,34510798850,34510798851,34510798852,34510798856,34712125442,34712125443,34712125444,34712125448,34712223746,34712223747,34712223748,34980560898,34980560899,34980659202,35568287746,35568287747,35568287748,35568287752,35568386050,35568386051,35568386052,35568517122,35568517123,35568517124,35568517128,35568812034,35568812035,35568910338,35568910339,35568910350,35569336322,35585064962,35585064963,35585064964,35585064968,35769548802,35769614338,35769712642,35769843714,35786391554,zxb,Axb,Bxb,Cxb,Dxb,Exb,Fxb,Gxb,Hxb,Ixb,Jxb,Kxb,Lxb,3437652377603,Mxb,Nxb,4674334294019,Oxb,Pxb,4674602827778,Qxb,Rxb,Sxb,Txb,5086651154435,Uxb,5086651252739,Vxb,5086651252744,Wxb,5086919589896,Xxb,5086919819266,Yxb,Zxb,$xb,5636675633154,{l:589826,m:73760,h:4},{l:589827,m:73760,h:4},{l:688130,m:73760,h:4},{l:819202,m:73760,h:4},{l:65538,m:73764,h:4},{l:65539,m:73764,h:4},{l:589826,m:172064,h:4},{l:589827,m:172064,h:4},{l:688130,m:172064,h:4},{l:819202,m:172064,h:4},{l:819203,m:172064,h:4},{l:65538,m:172068,h:4},{l:65539,m:172068,h:4},{l:589826,m:172112,h:4},{l:589827,m:172112,h:4},{l:688130,m:172112,h:4},{l:819202,m:172112,h:4},{l:65538,m:172116,h:4},{l:163842,m:172116,h:4},{l:589826,m:303136,h:4},{l:688130,m:303136,h:4},{l:819202,m:303136,h:4},{l:65538,m:303140,h:4},{l:589826,m:303184,h:4},{l:688130,m:303184,h:4},{l:819202,m:303184,h:4},{l:65538,m:303188,h:4},_xb,ayb,byb,cyb,dyb,eyb,fyb,{l:688130,m:590224,h:4},{l:819202,m:590224,h:4},gyb,hyb,iyb,jyb,kyb,lyb,myb,nyb,{l:688135,m:590416,h:4},oyb,{l:1212430,m:590416,h:4},{l:65538,m:598052,h:4},{l:65538,m:598100,h:4},{l:65539,m:598100,h:4},{l:163842,m:598100,h:4},{l:163843,m:598100,h:4},pyb,qyb,ryb,{l:688131,m:598304,h:4},syb,tyb,uyb,vyb,wyb,{l:589826,m:688672,h:4},xyb,yyb,zyb,Ayb,{l:589827,m:590112,h:336},Byb,Cyb,Dyb,Eyb,Fyb,Gyb,Hyb,Iyb,Jyb,{l:688130,m:819536,h:400},Kyb,Lyb,Myb,{l:589831,m:590112,h:592},Nyb,Oyb,Pyb,Qyb,Ryb,Syb,{l:819207,m:819600,h:592},Tyb,Uyb,Vyb,{l:589832,m:1212816,h:592},{l:688136,m:1212816,h:592},Wyb,Xyb,Yyb,Zyb,$yb,{l:589826,m:819488,h:8480},_yb,azb,bzb,czb,{l:819208,m:1213008,h:8480},dzb,ezb,{l:688130,m:590160,h:8484},{l:589826,m:598304,h:8484},fzb,{l:819202,m:598304,h:8484}]);Trb.FE=BX(nX(Drb.MY,1),Pub,6,15,[-0.1899999976158142,1.2699999809265137,-0.7009999752044678,2.690999984741211,-0.22699999809265137,Evb,0.10599999874830246,-0.47600001096725464,-0.44699999690055847,-0.19099999964237213,-0.3330000042915344,0.0860000029206276,0.24699999392032623,-0.06199999898672104,0.01600000075995922,0.3869999945163727,0.23499999940395355,-0.4320000112056732,-0.902999997138977,0.38999998569488525,0.5809999704360962,4.52400016784668,-0.6349999904632568,-0.2800000011920929,0.7699999809265137,-0.05000000074505806,1.0870000123977661,0.19200000166893005,0.19599999487400055,-0.5199999809265137,0.5419999957084656,0.3630000054836273,0.7919999957084656,0.5920000076293945,0.9639999866485596,kzb,-0.6850000023841858,-0.3149999976158142,-0.4129999876022339,-0.5950000286102295,0.2199999988079071,-1.4320000410079956,-2.253999948501587,0.4399999976158142,-0.27000001072883606,-0.13300000131130219,-0.26899999380111694,0.2669999897480011,0.5720000267028809,-0.5680000185966492,0.17399999499320984,-0.1850000023841858,-0.23499999940395355,szb,tzb,-0.34200000762939453,-0.3479999899864197,-0.43700000643730164,-0.8040000200271606,-0.41200000047683716,-0.2150000035762787,-0.625,-0.8309999704360962,0.4970000088214874,-0.4309999942779541,-1.3309999704360962,0.5070000290870667,-0.6320000290870667,-0.5989999771118164,-0.15600000321865082,-0.3529999852180481,-0.164000004529953,-0.4410000145435333,-0.4970000088214874,-1.059999942779541,0.11500000208616257,-0.22499999403953552,-0.15399999916553497,-0.03099999949336052,-1.5740000009536743,-1.093000054359436,nzb,-0.44999998807907104,-0.5559999942779541,tzb,2.384000062942505,1.75,-1.6660000085830688,-1.065999984741211,1.3270000219345093,0.8029999732971191,-1.5049999952316284,-2.5369999408721924,szb,0.14900000393390656,0.5210000276565552,2.9049999713897705,-0.25200000405311584,0.8600000143051147,0.3610000014305115,0.40299999713897705,0.004999999888241291,1.1460000276565552,0.9359999895095825,-0.30000001192092896,0.20900000631809235,-0.5830000042915344,-0.024000000208616257,-0.009999999776482582,0.6110000014305115,0.4860000014305115,0.8619999885559082,-0.03500000014901161,-0.5960000157356262,1.1610000133514404,1.6469999551773071,0.843999981880188,0.125,0.1420000046491623,-0.17100000381469727,0.44200000166893005,0.08799999952316284,3.065999984741211,1.6519999504089355,uzb,-0.017999999225139618,0.023000000044703484,0.0729999989271164,0.2540000081062317,0.5540000200271606,0.5950000286102295,-0.4059999883174896,-0.6370000243186951,-0.17399999499320984,-0.10100000351667404,-0.5429999828338623,-2.4059998989105225,-3.2920000553131104,-0.05299999937415123,-0.19300000369548798,Dwb,-1.2610000371932983,-0.656000018119812,-0.7300000190734863,-0.9380000233650208,0.12800000607967377,1.1540000438690186,0.24199999868869781,-0.5289999842643738,-0.27799999713897705,-0.8019999861717224,0.9120000004768372,-1.38100004196167,0.46299999952316284,1.0740000009536743,-0.628000020980835,-0.9620000123977661,-1.8320000171661377,-1.4989999532699585,-2.115999937057495,-2.2070000171661377,-1.3170000314712524,2.500999927520752,-0.8489999771118164,mzb,-0.621999979019165,2.121999979019165,-2.2260000705718994,0.9129999876022339,-2.259000062942505,-1.25,1.3940000534057617,-1.4019999504089355,2.072999954223633,-2.9570000171661377,0.29100000858306885,-3.4760000705718994,-2.7269999980926514,-3.131999969482422,-2.119999885559082,-0.7250000238418579,-0.296999990940094,0.08299999684095383,0.34700000286102295,-1.4249999523162842,-1.659999966621399,-1.281999945640564,-1.2649999856948853,0.718999981880188,0.1379999965429306,1.3020000457763672,0.859000027179718,1.3589999675750732,0.6589999794960022,-0.9399999976158142,0.8999999761581421,0.3190000057220459,-2.571000099182129,1.1089999675750732,0.972000002861023,1.652999997138977,2.6019999980926514,0.7289999723434448,1.065999984741211,1.0670000314712524,-0.3109999895095825,0.03099999949336052,uzb,-0.6809999942779541,-1.2580000162124634,vwb,-3.0959999561309814,-0.2280000001192093,1.9329999685287476,0.11900000274181366,2.1080000400543213,0.11299999803304672,1.628000020980835,1.3079999685287476,3.3359999656677246,0.7540000081062317,-0.4650000035762787,-0.3970000147819519,0.07699999958276749,-0.4790000021457672,-0.15299999713897705,0.14100000262260437,2.134999990463257,0.23399999737739563,0.460999995470047,0.6700000166893005,-0.3610000014305115,-1.0390000343322754,-0.4830000102519989,0.13699999451637268,-0.7680000066757202,-0.5109999775886536,3.4240000247955322,-0.8550000190734863,-0.5849999785423279,-1.5670000314712524,3.3429999351501465,1.840000033378601,0.3889999985694885,1.121999979019165,Ewb,1.3350000381469727,0.3659999966621399,-0.5569999814033508,0.4320000112056732,0.20399999618530273,0.8820000290870667,0.4659999907016754,-0.4580000042915344,0.40400001406669617,0.6570000052452087,1.1150000095367432,1.9759999513626099,1.7860000133514404,-0.035999998450279236,-1.0499999523162842,1.0449999570846558,0.04399999976158142,1.0329999923706055,-1.0800000429153442,2.5390000343322754,2.234999895095825,dwb,3.121000051498413,3.931999921798706,2.75])};Trb.HE=function HE(b){var c,d,e,f;e=-0.5299999713897705;Jrb.Ro(b);Jrb.ou(b,7);for(c=0;c<b.f;c++){f=-1;try{f=Jrb.Be(b,c,2144)}catch(a){a=g3(a);if(!zY(a,15))throw h3(a)}for(d=0;d<Trb.FE.length;d++){if(t3(Trb.EE[d],f)){e+=Trb.FE[d];break}}}return e};Trb.IE=function IE(b){var c,d,e,f,g,h,i;e=new Trb.qE;Krb.Ei(e.a,new Trb.nE('Solubility values are estimated applying an atom-type based increment system.',2));Krb.Ei(e.a,new Trb.nE(ozb,2));Krb.Ei(e.a,new Trb.nE(pzb,2));Krb.Ei(e.a,new Trb.nE('Base value = -0.530',2));d=tX(Drb.NY,Qsb,6,Trb.FE.length,15,1);if(b){Jrb.Ro(b);Jrb.ou(b,7);for(c=0;c<b.f;c++){i=-1;try{i=Jrb.Be(b,c,2144)}catch(a){a=g3(a);if(!zY(a,15))throw h3(a)}for(h=0;h<Trb.FE.length;h++){if(t3(Trb.EE[h],i)){++d[h];break}}}}f=new isb.Nab('#0.000');for(g=0;g<Trb.FE.length;g++)d[g]!=0&&Trb.pE(e,''+d[g]+' * '+isb.Mab(f,Trb.FE[g])+'   AtomType: 0x'+Erb.N6(Trb.EE[g]),2);return e};Trb._E=function _E(){Trb._E=_3;Trb.JE=BX(nX(Drb.B0,1),Esb,2,6,['mutagenic','tumorigenic','irritant','reproductive effective']);Trb.KE=BX(nX(Drb.B0,1),Esb,2,6,['Mutagenicity','Tumorigenicity','Irritating effects','Reproductive effects'])};Trb.aF=function aF(a,b){var c,d,e,f;if(!Trb.VE)return 0;if(Trb.XE[b].Cb(Jrb.Kf(new Jrb.eg(a)))!=-1)return 3;f=new Jrb.ys;c=new Jrb.Gu;for(e=0;e<Trb.UE[b].a.length;e++){Jrb.xp(new Jrb.Fp(false),c,Krb.Ji(Trb.UE[b],e));Jrb.rs(f,a);Jrb.ps(f,c);if(Jrb.ds(f,1,f.c)>0)return 3}for(d=0;d<Trb.WE[b].a.length;d++){Jrb.xp(new Jrb.Fp(false),c,Krb.Ji(Trb.WE[b],d));Jrb.rs(f,a);Jrb.ps(f,c);if(Jrb.ds(f,1,f.c)>0)return 2}return 1};Trb.bF=function bF(a,b){var c,d,e,f,g,h,i;i=new Trb.qE;if(!Trb.VE){Krb.Ei(i.a,new Trb.nE('Toxicity predictor not properly initialized.',2));return i}g=Jrb.Kf(new Jrb.eg(a));if(Trb.XE[b].Cb(g)!=-1){Trb.pE(i,'This molecule is known to be '+Trb.JE[b]+':',2);Krb.Ei(i.a,new Trb.nE(g,1));return i}h=new Jrb.ys;c=false;d=new Jrb.Gu;for(f=0;f<Trb.UE[b].a.length;f++){Jrb.xp(new Jrb.Fp(false),d,Krb.Ji(Trb.UE[b],f));Jrb.rs(h,a);Jrb.ps(h,d);if(Jrb.ds(h,1,h.c)>0){c||Trb.pE(i,'High-risk fragments indicating '+Trb.KE[b]+':',2);c=true;Trb.pE(i,Krb.Ji(Trb.UE[b],f),1)}}c=false;for(e=0;e<Trb.WE[b].a.length;e++){Jrb.xp(new Jrb.Fp(false),d,Krb.Ji(Trb.WE[b],e));Jrb.rs(h,a);Jrb.ps(h,d);if(Jrb.ds(h,1,h.c)>0){c||Trb.pE(i,'Medium-risk fragments indicating '+Trb.KE[b]+':',2);c=true;Trb.pE(i,Krb.Ji(Trb.WE[b],e),1)}}i.a.a.length==0&&Trb.pE(i,'No indication for '+Trb.KE[b]+' found.',2);return i};Trb.cF=function cF(b){var c,d,e;e=new fsb.v4(new fsb.z4(b));d=new Jrb.ku;while(true){try{c=fsb.u4(e);if(c!=null)Jrb.iu(d,c);else break}catch(a){a=g3(a);if(zY(a,83)){break}else throw h3(a)}}return d};Trb.dF=function dF(b){var c,d,e;e=new fsb.v4(new fsb.z4(b));c=new Krb.Yi;while(true){try{d=fsb.u4(e);if(d!=null)Hrb.Kmb(c.a,d);else break}catch(a){a=g3(a);if(zY(a,83)){break}else throw h3(a)}}return c};Trb.eF=function eF(){Trb._E();if(!Trb.VE){try{Trb.XE=tX(Drb.IZ,ssb,87,4,0,1);Trb.UE=tX(Drb.h1,ssb,18,4,0,1);Trb.WE=tX(Drb.h1,ssb,18,4,0,1);Trb.UE[0]=Trb.dF(Trb.OE);Trb.UE[1]=Trb.dF(Trb.YE);Trb.UE[2]=Trb.dF(Trb.LE);Trb.UE[3]=Trb.dF(Trb.RE);Trb.WE[0]=Trb.dF(Trb.PE);Trb.WE[1]=Trb.dF(Trb.ZE);Trb.WE[2]=Trb.dF(Trb.ME);Trb.WE[3]=Trb.dF(Trb.SE);Trb.XE[0]=Trb.cF(Trb.QE);Trb.XE[1]=Trb.cF(Trb.$E);Trb.XE[2]=Trb.cF(Trb.NE);Trb.XE[3]=Trb.cF(Trb.TE);Trb.VE=true}catch(a){a=g3(a);if(zY(a,15)){Erb.X7();String.fromCharCode(10)}else throw h3(a)}}};Z3(244,1,{},Trb.eF);Trb.LE='eOHBNZ`pge@\\ngCa@@dmHFFbwH@\\ngFp@DiTujhCBbKWdH\\ngJPXHlQxQ{TAaeb\\ngCi`HEdfZ@pRp\\nfJ@FD\\ngJPHAbIJuPFADVyB\\ngC`@Die@ppfyD\\ngJQ@@dkU@XFKGd@\\ngJP@DizhC@qX|`@\\ngJQ@@dru@XI[dH\\ngGQ@@eMuTA`Xl^R`\\ngJQ@@eKU@XYX|d@\\ngGQ@@djuTAaQEcrT\\neMABHXaIhH\\ngCa@@dkPFBbyL\\ngGQ@@drmTAaekrD\\ngJQ@@eKS@XZK\\\\a@\\ngCh@@dmPFFDwH`\\neMACD\\\\QIhH\\ngJU@DPdju`P\\ngGX`HDdwMLA@\\ngGY@JDivjpH\\ngCi@LDek@`\\ndeTH@@RYWVf`@j@CC`pjxYyB@\\ndid@p@bBbFbDfYoa`b@@LJ@fx^QP\\ndeTH@@RYe]aZZj`cJ\\ngFq@@drfmU@X[F|b@\\ndeTH@@rJJIHdsSUL@P\\ndeTL@@QdfygFV``@@pjfxYyB@\\ndaDH@@RVU[f@@@LBcB[bUp\\ndifD@HADfyWaZjj@H\\ngGQ@@dkLtAad[rP\\ngGQ@@dlltHkCXwd`\\ndifH@JAJ[gxZB@@CBdJf{dB\\ndidHPBBHFHRYgVzB@`@phLKayE@\\ndeVD`FFPbDfUnkh@a`@`\\ndiD@@LdbJTZjh@pzDpjX^Qp\\neFDBcA`d\\ndidL@@KdiuVDjjj@H\\ndaDH@@RYe[hB@@LJpj[nP@\\ndiT@@DiYXfifjjh@`\\ngF|@ABeKZsU@P\\ngNq`@fdvkSHf\\\\EcqJ`\\ndiDL@@PTfU]jZP`f\\ngJP`@TeZhCCKGbD@\\ngNp`@dfujj@plVMx`p\\ngGQ`@jdjmTA`l^JT\\ngNp`@dfUZi@pVOEV\\ngNq@@djkUPFEVM_I@\\ngNq@@djmUPFCbqky@\\ndiDD@@QIeuZfhHJpkBiny@`\\ndaxD@@QIgUjj@LLpfxe\\\\\\ndaxD@@QImeijBLlBSJ[d\\\\\\ngNp`@deVZj@pNM_I@\\ngNp`@dfvZj@pNM_H`\\ndaxD@@QIeejj@LBpj[d\\\\\\ngNq@@djmSPf\\\\GEcWr@\\ngJPdE`DRPcyXCrD\\ngGQ@@dsmLIkCKGdh\\ngNq@@dsmUPFEDVOEV\\ndaxH@@RYuji`bgA`SBknIC@\\ngGQLJIARAdDfzj`LInJT\\ngGQLLIAREdDfvj`LINP`\\ndiDHhLBPRPjPzPFPR[[jjj@H\\ngNq`@jdjsUPFAqkyH\\ngGP`ATiVj`LMEnHt\\ndaxH@@RYWjj`CC`aLInyE@\\nfHc`A@\\ndiF@@@rRHiJjj`CChSBiny@`\\nday@@@{IEHkUU@FC@fES\\\\c`\\ngGXDL@aABS\\\\uPFFAoH`\\ngNxLL@aAABDfVZj@`\\ngGPB@DHHpQPaIUZdB\\ngGPD@DXHRfZf@ppUxlP\\ngGX@@dsuTAaQEcrT\\ngJY@BDeZlCBSbB@\\ngGY@LDeVj`LCD[qC@\\ngNx@@eRmUPFEbu_HP\\ngNx`HDdvkSPfX\\neMhDRZCAKd`\\ngGQ`@ZdruTA`qEcP\\ndiDDpLH@bOA@aIkUZjh@`\\ndaDH@@RVU[f@@@LJcBinQp\\ngFp`@dfTujXCAZ|a@\\ngOx`FDdrikTtA@\\ngJP@DkfhC@bH|f@\\ngC`D@DSpRnhB\\ngNq`@bdvkUPFFV_IP\\ngGPP@cTfyi`ODj\\ngJP`@TeZhC@qX|`@\\ngCaHL@aIZPLDIrH\\ngNp`@dfUZj@pvMyF\\ndaxH@@RUVZj`CAdpj[nQ@\\ngJQHLHaIVj@`\\ngNphMQDIK[UTA@\\ngJQ@@dkSBJpHbwHP\\ngNqBLIAREdGHIMmUTA@\\ndaxL@@RdfuVjh@pILInQp\\ngGQ`@jdvmTA`l^IT\\ngNp`@|dTQjj@plVMyF\\ngJQ@@eOU@XZH|f@\\ngGT@ATiVj`LJHm^P`\\ngGT@Ade[j`LHnHt\\ngCe@H`dkPGbV@\\ngGUHLZHaIUjdB\\ndazH@LAIV^jj@LFBDInyE@\\ngJP@DiVhPVFbwDB\\neMDARVCAd\\ngNphBqDILsTrA@\\nfHghA@\\ndeTD@@EIYe^efjZ@H\\ndeTD@@QIgeQej@@@LJrfF^Qp\\ndcLD@@UIUe]FVX@J@aKCdrfx]yD@\\ndmtD@@QImYVUZX@@Hrp{B[ae^P`\\ngGP`@deUjPLEcqR`\\ndeTH@@RUYTYi`@@aK@XSJ[agd@\\ndmtD@@QIee^UZ``@@pXjXYWd\\\\\\ngOp@DjWkjj`LJEc^JL\\ndmtHPBBHfHRYeUXXHHh@H\\ngOp@DjWkZj`LCD[qY`\\ngJQHBJqIVz@`\\ngCa`@ldkPD\\ndmtL@@RTeYW^Eh@J@CBbinWdP\\ndid@@DjU^nBBD@LFaLiaxa\\\\\\ndeTD@@qI[eQej@@@LNSJ[agdP\\ndcLD@@QInUuxV`@j@CCdJfzUyF`\\ndmwD@HePQInUwaZ@B`@`\\ndaE@@@YIeZn`B@@pILinHG@\\ndmvL@HAFR[f^FV``H@H\\ndeVD`NFPbDfUvih@I`@`\\ndmvD@DATfYUQUjjj`CAlJfx^QH\\ndeVD`BxPbDfYYZXHF@@`\\ndmt@H@bAdIdEdDfUvjZ@Bj@C@`pjyB@\\ndcNH@DAIee^eVhHB@CCbine]yB@\\ndmvH@JAJUuTjjjjh@pFDpfxYyB`\\ndmvH`HX@cIEDdTljjVj`B\\ngJQ@@dkU@XDSGdP\\ndiDB@@SaRUYVjj@LJrfx^IA@\\ngGQ@@dkUTA`Xm^HD\\ngGP@H\\x7FUPD\\ngGP@DkYj`LJEc^R@\\ndaxD@@QIgUjfBJlLpfxe\\\\\\ngGQ@@eNuLIkCKWba@\\ndctH@@RgYujfjZBLX\\ndiDD@@QImiZjh@piLiny@`\\ngJP`@dfvdCBGbV@\\ngNq`@fdrkThD\\ngJT@@defhCCSGd@\\ndeTL`HS@BLddlRPrm@@@FEYSCOHx\\ndmLD@@QIee\\\\jeVhHB@CBbXYWd\\\\\\ndet@@Dje^ifzjjj`B\\ngOp@DiUMZj`LFHlWrT\\ngC`H@DIMTAa`mrP\\ngNq`@fdr{UHFBqyJ\\ngJPXHlPDQztAxlP\\ngJQ@@dmS@XZX|`@\\ngJQ@@eMU@XYX|d@\\ngNphBpDISkURA`QEnR`\\ngGPhLQDIKUU@P\\ngJP@DkVhC@bK\\\\a@\\ngJQ@@djsBJpTwDb\\ngNq@@drmUPFCDVMyF\\ngGP`@TfVj`LJHl^R`\\ngNq`@fdrkUHD\\ngGY@LDenj`LJHl^R`\\ngGPhCQbILmU@P\\ngOx@@drm]UTA`plZ~R@\\ngGP@DjZj`LCEkq@`\\ngNq@@dkMMPb\\\\CD[qA`\\ngJQ@@dju@XJGbV@\\ngNq@@ds]UPFCDVMyF\\ngNx@@eLsUP`lLb~KT\\nfHdXA@\\ndidH@@RUe^Ejjh@pyLJfx^Q@\\ndidH@@Rf~hRjjh@`\\ndmv@`EBHrJJIHin`HFpHy`\\ndeVD@HADfyeFV`H@@piJ[iy@`\\ngOp@DjWkB@@LBmWqP`\\ndeVD@HADfyUxV`@`@piJXYyA@\\ndeVD@HADfyWxV`@`@piJ[iyA@\\ndmv@@@rQQJEJUjh@@@pdHPfxYWdT\\ngNqhHl@cIIJeiaCP\\ngNpP@jtfvZf@pfxdp\\ngGP`@dfUjpLH^R`\\ngNp@DkUzj@pjqkyH\\ngJQHHOAJuj@prqy@\\ngJQHHOBOZ`H\\ngJQ@@dlu@XJGbV@\\ngNq@@eJuUPFEbu_HP\\ndeU@@@aJyenF`HH@H\\ngGY`HEdf]j`LEkrD\\ngJX@@dksBIpROI`\\ndedD@@QImUVjj`C@Tpj[ad\\neO`BNZ`pYy@\\ndaDH@@RYe[jfj@LFBLJnyC@\\ngJQ@@dsT`XDQ[dH\\ndid@@DjU^nBBD@LNaLJfGd\\\\\\ndidL@@RdeVWaZjj@LJpfx^Q@\\ndaF@@@Rfu[j@@@LFABinyF@\\ndedD@@QImiVji`B\\ngGP@DjZj`LCL[qA@\\ndiDL@@RdeVyjf`B\\ndmtH@@ReY}Jjjjj@H\\ndcLL@@Sdf^YV]Z```@LJqae^Qh\\ngGT@@dfuj`LBEcrT\\ndif@PACDJHRYgvzB@`@`\\ndcMH@DTLbbbRRHjuUUT@X]aTwCoHd\\ndkmD`LND@HrRPjZIE]VhBB@B\\ndidHPBBHFHRYgVzB@`@pHLx^HU@\\ndmvH@DCHhhhTiUjjj`CAl[ae^HU@\\ndknH@DAIfYuUMjjjj@H\\ndcND@DCdf^YV]Z```@LFQae]yF@\\ngF|@AbeJf`@@P\\ndifD@HADfyWaZ@@@LBRnGbDp\\nfHapA@\\nf`i@`@@VRYfYU]`eNMyh@`AB@@H\\ndk\\x7F@@@cLdRfbTQragSfhJ@T@H\\ndmLH@@rJJIQEneX@@@@C@`xYxVTr`\\ndk]H@BDLbbbbRQZ]NB@P@@B\\nfoA@R@HHqH@QddebRbrPeV\\\\m@D@@@A@\\ndaFH`JHHaIf]n``@@`\\ndmv@HBBHFPfPVPRYUzih@Jh@H\\ndeTHPIBPzPRYeea`Ha@CCLX^QP\\ndeVHPIHHchaIf^VFBBH@LBCNGbEH\\nek`PJ@@@GNimlbbRfbbebrTRLrThXTlBbrjZVjjjjjfijh@CAICBc`RQSPrqspIHjhX{dFP\\ndmvL`EaL@HrRRqIXYV`@`@`\\nfewAP@@LtT^QQQRUJQYSQZXpgCNCeNVfjjijjjZj@B\\nfoQ`@@@YIEDeDTdqWAF]UUAAE@@XB`cENRUkaFFlx\\nfde``@C@heMrklk|dYpXtDDUUTT@D\\ndk^H@EAJ[UVVySh@JjH@pyBhYT~If`\\nfoA@@@LdbRdVeRiJs``j@@@@LEPPRgAJtZwDR\\\\\\nf`qA@@@YEDeeHhTjL]z@Bj@@@@`\\ndcnH@EAIfV^XYv@@B@@H\\ndmtL`HS@BLddlRTFUh@H@H\\ndeT@H@bBbAbIbDfYu[hHB`@`\\ndcLHpJBPRPrPrJPsQIKmTp@@A`WBn|bP\\ngGP@Di]ja@xTQF|f@\\ndcLB@@Q]R[e[neh@a`@piBj]yG@\\ndeU@@@eJYW~F``H@LFCBinxbR\\ndeUD@HdDR[eWaZ@B@C@diaxaR\\ndeVH@DAIgeQej@@@LJSJX^It`\\ndcNL@HAFR[fUqUhHH`@`\\ndg^L`EaC@HrRPsIYJCJt@EL@FCTwBm|``\\ndaFHpBxHa@bhcHheBSTuL@P\\ndg^L@D@mRY^UueVj@Bh@H\\ngOp@DjWkB@@LMc^ZI`\\ndidD@@yIfVXXBH@C@`[axfT\\ndaDH@@RYWih@H@LJSBknP@\\ndeTD@@YIfUqehD@@LJJnF^Q`\\ngFtHHPDIRnMKPFBEyD\\ndcnDPJa@BBBLdabRRS\\\\nkSP@@A@\\ngNxhMD@cIHUEj`LCcWr@\\ndclL@@pTign_JWZjB@`@`\\ndcnD`HI`BDfYoVnWZfX@@@`\\ndidH@@RVY^Ejjh@pyLJfx^Q@\\ndedB@@PiRUi]jjT@`\\ndmTD@@QIeUyjZZBBh\\neMFINbMP|`\\ndo}H`BMPbLbbbRfebXXHHfj@B\\ndo}H@DhDfUfUWWZhJB`@H\\ngGT`EaTf]j`LDkqX`\\ndayL@DpFyIeUjj@H\\ngKP@H~Jj`LEcqQ@\\ndid@@LdbLTifjj`B\\ndaDD@@QInXjZjh@`\\neMJDBDfPpce@\\ndaEH@FxDiebjiV`CCDJnHw@\\ndk^H@FAJY}e\\\\kSie`@`HipyLhYW^HQ`\\ndaFH@LAIVUnZjh@pHj[nIB@\\ndieH@DHDfvWaZjj@H\\ndg~H@LCHeEEDdcJg[UPTA@A@\\ndifD@HADfyWaZ@@@LLPjyc\\\\H\\ndg^L@HAER[e[[xV`@jh@H\\ndeVH@LAIVYQejjj@LNPj[agdP\\ndeVH@BAIV[Qejjj@H\\ndmtHPEBHzHrJJISEa`HbP@`\\ngGQHLHaI[ihCCBWdH\\ndmuD@HXDR[fUEV```@LBRiWfMp`\\ndg}@@@mJYeU|]Tz@@@H@B\\nfhy`B@N@BLdTTTRRVqirUmNh@`BBh@@pt@cARUhugAyCp\\ngKP@LdabjhC@bH|f@\\ndmtH`ABHRYW[ih@Jh@LNALJaWb]H\\ndg|@@DjWmijXYB@jjb@H\\ndmtD@@gHhhhdVEjjj`C@TpfxYWdT\\ndeT@@DjU_k``RPHjpFDpj[ayD`\\ndeTJ@@qaeJYyzzjjj@LIaLJfxY@\\ndev`@@rfeJY{ZxYBBJD@`\\ndefH@LAIVYfjj`B\\nf`aQB@BFTBHrJJIJZUJLEAADuT@A@\\nfHdHA@\\ndidHPFBHJHRYf~FBH@@`\\ngCe@H`dkPFDwH`\\ndcND@DCTfVutYZ`@d@LJJfx^Hb`\\ngGT`IPdfuj`LDmqF`\\nda{D@Hi`QImejj@H\\ndkm@`DDHaIe]YZZ@Bjh@H\\ndcL@@LdbRbjeBDEEP@XCBES\\\\n|SI@\\ndmvHPBTH`XaIfUmi``hP@pXLIagd\\\\\\ngGYHCaDIK]M@XHSbM@\\ndcND@DCdefV]]Z`b@@H\\ndmtD@@QIVYdUZ@b@@`\\neFPBca@\\ndiDJ`HSJDOCIIJdfjj@LJSBx^Pp\\nf`aqR@AF}AFJZAxYIITdhhmkNZjjfV`@pxcANJm{dF@\\ndid@p@bFbAbDfUfn`BH@LLAaybYp\\ndeVL@HAFR[f\\\\YZB@@C@diixgB\\ndif@`ABHRYevz@``@phLJny@`\\ndcNH`BdHaIfUyXXHHZ@B\\ndo}H`FMPbLbbRfRaRkh@bfj@B\\ndayH@DhDfWVjh@pKB[nHe@\\ngNx`BDdvkUPFFu_Db\\ndigD@Dq`yIeUifff`B\\ndk^D@D@\\\\bbbbRQImMj`XB@C@jWSxgR\\nfgA@@@DjYU_VByHu`@@@@@@H\\nfoA`@@@ILkjrmFV]@AL@@@ar`\\ndcLD@@SHhmEDcJmPDD@FA\\\\L{qLX\\ndeUD@BdDR[YTYZjj`B\\nfoA@b@HHAxIRlrjzkF]U@@@@@A@\\ndif@@@RifvFjjh@pzDJfx^Q`\\ndaD@`@bDfUZZ@B@C@`qnxbD\\ndcLD`BTHaIfUVXXHHf@B\\ndidH@@rJJIEn`HH@LJ@jX^Q`\\nfbu@`@@NrJJJIPjFKQLDFLADUA@T@@P\\ndidH`ACDRYWZZ@B`@pXDpjGd\\\\\\ndg}@@@mIe]e^ftx@H@H@B\\ndmvH`FdHaIe[zn`BI`@pXDrf{dJ\\ndcNH@EAJYYeGZBHh@B\\ndeTL`HRPBLdabRwBl@D@FEES]OH@\\ngOp`Adigujj`LCEWrD\\ndmtH@@RYeUEV`P`BJlNpjxYWdL\\ndeTL`HS@BLddlRPrm@@@FETwCOHp\\ndeV@@@rQQQHcMAP@@XBBXUMp|bP\\ndmvD@H@de[eYVZ`@@bJ\\ndaE@@@yIe^f`@`@pKBknHB@\\ndcLH@@RfUW~f``b`@pEBinE]xfR\\ndo|H@@rJJIQPrEn`HJjh@H\\ndg^D@MADfVU}iUjB@j@B\\ngGY@LDenjPLBHcqZ`\\nf`qh@@@XIQfRJJKZJEJgG^ejj`@`@H\\ndcnH@LAIYe_x^fjjjj@H\\ndg^B`LaAl@cIIBheEeikTBPH@XUgSi|Re@\\ndg^B`LaEt@cIIKEDhcIkPPLP@P\\ndo}B`LfDEpBLddJbbbJNujAbA@B\\ndieH`LE`BDiU_Bjij@LBAJ{bPH\\ndk~@@@RfYU_JGUN`@@B@@pDB[aeSyF`\\ndmtB`HSE@HrRRqIXYV`@`@pKFy^IP`\\ndmtL@@jTef_^E``J@C@biexd\\\\\\ndcl@@DjYU_egX@@@@@pxjxYW^XfL\\nf`q@`@@HRYyV{TRg^Z`B@@@@H\\nf`qA@@@ILk\\\\joSagPA@PP`@D\\ndmt@H@bAdIdEdDfU^jZ@Bj@C@`pfyB@\\ndcLHHBBHfPVPvPRYg^fzB@j`@`\\ndcn@@@Re]eRi]jj@B@CBXPjxYW^HF@\\nfbuQB@BFTBHrJJIJZUIQILDgLDDSU@@@@P\\ndcMH@DhDfufU]Zjjj@H\\ndmtD@@[HhhhdYUhJ@@CAlJae^Hw@\\ndmtD@@qIYyVUZh@@@pYFxYWbPP\\ndeT@@LdbRTm\\\\DDT@FGIeMpsrH@\\ndmtHpEBHJPFHRYgW[hHBd@H\\ndid@@DiUWajjj@LAaLJfx^P@\\nfde@P@@BLEIfYfY\\x7FyiWgQZ@HJ@b@@H\\ndieH@JxLbTTQkfej`CAFGbPP\\ndaD@P@bNbDfUzZ@B@C@`pnxbT\\ndmMH@DhDfUmZZU`@@@@H\\ngNqdEb@b^FQRHmU@P\\nfoAab@GPQ`@QddebbTVLmFlm@@@P@A@\\nfH`pA@\\ndg\\\\B@@SSrJISISPbkT@Pt@D\\ndeV@@@RiU\\\\Yjjj`C@XSBkagdL\\ndmLD@@IJ]YVDeZj@B@B\\ndmLH@@RgYVaAfj@B`@`\\ndid@@DjWxjZjZ@H\\ndaxD@@QIUijj@LLqnxdT\\ndmtD@@QIee^UZ``@@pZfxYWdD\\ngC`dE`DSpRZXCsBX\\ndeV@@@RfV\\\\YhH`@CCdJfxYy@@\\ndcMH@FxLdTReRQUTkUT@P\\ndcNL@HAErJZJIECKPDE@A@\\ndefD`BpPbDemgijj@H\\ndo~H@DCHeEEEEBmmjBbH`@`\\ndo~D@D@|bTTTTRqvvhJHb@B\\ndknH@ICHhhhdUFF@bJh@H\\ndeT@@LdbRbmBDED@FGPfTwSrB@\\nfoAab@NPQ`@QddebbrRTeV\\\\mA@@@@A@\\ndeVD`Aa@BLdabRgRl@P@D\\nfoAPB@NJ@DYHhhheEcJqgT@PP@@@P\\neMAALhbN``\\ndidH@@RYWZZ@B`@pXDpjGd\\\\\\nfde`B@N@BLdTTTRRVqeNRmiu@D@PUP@A@\\ndk^L@IANRY[f~]tvjjjj@LApjXUt~It`\\nf`iPB@N^@DISLro\\x7FSdcZmPA@@W@@D\\ndcLD@@QIVYVFV`HJ@CAfxYW^IE@\\ndklD@@QIgfUiUj@`h@H\\ndk\\\\D@@QIVZVVfSZjjjh@`\\ndk\\\\D@@sIEDdXdj[Sjj`@`@`\\ndeL`@@JfRiUfnXVfjjjh@`\\ndif@PBBPFPRYgvzB@`@psJ[dD\\ndmvHPBdIAYAIfUua``a`@`\\ndieHPJD`bFbDfYoaiZi@H\\ngJX`LDdvu@XI[dH\\ndcnH@BAJ]fuaEvjh@H@H\\nfHcxA@\\neFAADdRLD\\nfHdxA@\\neMJD|Df`pYy@\\ngJPhHaxIRuPFBqy@\\ngJ]@EbDfVhCAH|f@';\nTrb.ME='fHe`A@\\ngFq`@ldrfmU@XR|a@\\ngCl@@ldsPFFBp\\ngC`HADIKTAaaMrH\\ngNxHLHaIYjj`H\\ngNxHLHaIVjj`H\\neFDBcAaWH@\\neMDARVCBnR\\ngGP`@TfYi`LI^S@\\ngJQ@@dkT`XDKGd`\\ngGQ@@dkUTAaXl[r@\\ngJQ@@djsBJprqyH\\neMHAIdLF^P\\ngJQ@@dls@XKGd`\\ngGP`ATiVj`LCEkrD\\ngJP`AdejhC@qX|`@\\ngGP`ATiVj`LCEcrT\\ngJQ@@dsU@XDKGd`\\neMJDbDfP`\\ngC`DADZHRVhB\\ngC`DAb[DRVhB\\ngCa@@dkHFBbyL\\ngCa@@dkPFBfyD\\neMABHYAIhH\\ngJPH@DIRuPFABqyH\\ngCa@@dkHFBVyH\\ngGQ`@jdjmTAal[rP\\ngGY@LDeVj`LJHm^P`\\ngJXHLHaIVj@pHbOI`\\ngOx@@drm\\\\@@A`plZp\\ngGXHLHaIUjhCBbHwdp\\ngCh@@doHFDwH`\\ngJY@BDeZlCAQ\\\\`@\\nfHgdA@\\ngJQ@@dsT`XDKGd`\\ngOp`@dfUMZj`LMc^Q`\\ndaD@@DjUZxHD@CAhSBinQp\\ngOp`@dfUkZj`LMj~P`\\ndeTH@@RVYWahBA@CC``j[ayD`\\ndid@p@bBbFbDfYoa`b@@H\\ndaDH@@RYg[ffj@LBrf{dD\\ngFq@@drfmM@X[F|b@\\ngGQhHj@cIHTmPFFqoH@\\ngJQhHl@cIHUhCBGd@\\ndaE@@@yIe^f`@`@piLJny@@\\neMhDRUB\\ndie@@@aJvUxZ`@@CChPj[ay@@\\ndifH@DAIf_Ifjj`CBlJf{dB\\ndifD@BADfyWaZ@@@LBQnGdT\\ndeVD@FADfygFV``@@pjfxYyB@\\ndeVD@AADfyVzV`B@@piBkayD`\\ngF|@AbeJfuU@P\\ndetD@@QInYvDYZjjh@`\\ndedH@@RUUUfjhHRpELJfxYyD@\\ngJQ@@dkU@XZX|PP\\ngNp@DiWjj@p\\\\VM_H@\\ngNq@@djmUPFEfM_DD\\ngJQ@@dkT`XZK\\\\PH\\ngJQ@@dkU@XDQGdp\\neFA@HoBJD\\ngJP@DjvhCCKGd`\\ngGQLLIAREdDfvj`H\\ndiDHhABPRPjPZPzPRZyjjj@H\\ndiDB@@SaRY]fifBBX\\ngNxHF@aJUzZqDxXH|Tp\\ndmv@@@Rf~UeZj@@@LEBDpfxYT\\ndaxD@@QIUYjj@LBrf{bPP\\ngNq@AdTbMUPFEBq_IP\\ngGP@DiUjaAXFKGbE@\\ndaE@@@YIeZn`B@@piLiny@@\\ngCa@@dsPFBV@\\ngOp@DjWkfZ`LKEc^Q`\\ngOp@DjWkZjPLKEc^Q`\\ndaD@`@bDeeVz`@@CA`cBinQp\\neMABHPaIhLDnR\\ndaDH@@RVU[f@@@LJ`j[nQ`\\ngC``AdeZ@pTWI`\\ngFp`AdiTvjhCCQWdH\\neMbDBDfp`\\ndaEH@JXDiWRjjj`CBhSB[d\\\\\\ndaFH@NAIe^f`@`@piLJny@@\\ndaF@@@RYe[hB@@LJCBknPp\\ndaF@`NBHRYUih@H@LJCB[nP`\\ngC`@Die@ptVy@\\neFA@HoBLD\\ngGQ`@jdvmTAaecrT\\ndaxB@@RfRYYZf`B\\ngJQ@@eKS@XJKbq@\\ngCaHLLQIZ`LDEqS@\\ndaxD@@QIeUjj@LBpj{dL\\ndaxD@@QIUUjj@LJpj[nQ@\\ngNp`@df]Zj@pvMyF\\ngJP`@dfzhCCA[ba@\\ngGQ@@eKuTA`Uc^R@\\ngCaHLHaIZ`LLHnS@\\ngGPhMQDIK]U@XTQX|e@\\ngNp@DiUZjDC`qEc^Q`\\ngNpH@DIRoUTA`qEj~P`\\ngNp`AdiWjj@pJM_I@\\ngGP`@TeZj`LKEc^P@\\ngGQ@@eJuTA`Xm^P`\\neFJBhHp^I@\\ngCah@mJAIj`H\\ngCahHlOBOTAaAsQX\\ngJT`H`TeVdB\\ngNx@@eJmThFCbqky@\\ndif@@@RUe^Fh@@@pDHPj[a@\\ngNy`LDtfuZj@pNM_H`\\ngNx`LFdjmUPFCDQkyL\\ngOx@@drm]UTAaqEcV\\ngGT@ATivj`LKEc^P@\\ndiDDHJXIAICi@YAIkfjfh@`\\ndcLL@@STfVyVUZ`HD@H\\ndaDH@@RVU[fZj@LBJf{bQ`\\ndmtD@@QIUYVUZh@@@p{B[ae^Q@\\ndeTD@@QIgeQejjj@LFpj[ayD`\\ndmtD@@QIgeTYZjjh@p{B[ae^QP\\ngOp@DjWkZj`LCL[qI`\\ngNp`@df^Zj@pvkyB\\ndeT@@DjWvifjjh@pFDpjXYyG@\\ndidD@@qJY~rjjZ`B\\ngGQ@@dmltA`h^KT\\ndcL@@DjU_ZnZjij@H\\ndcL@@LdbRbjUBDEEP@XSBXUMt{rE@\\ndid@@DjWZfZjj@LFcB[ayB@\\ndid@p@bBbAbDfYun``H@H\\ndcMB@HDDWTfyV{iZ@HX@H\\ngC`dEaDPHRZTB\\ndmtD`NDHcHhheDVfBAb@CB`rfWdR\\ngNxhGD@cIHTefqMP\\ndaFH`HX@aJYWJjeh@pHDJnQp\\ndax@@DkUfjh@pZDpf{bAP\\ngNp`@df^Zj@pV_DZ\\ndedD@@qJ[^ZjZ`bf\\ndaxD@@QImUjj@LJSBknPp\\ndiD@@LdRbJZjhHBpxHpj[nH``\\ndaxD@@QInejj@LBRf{dD\\nfH`TA@\\ngJQ`@bdjt`P\\ndaD@`@bDfUjZ@B@CB`SJ{dL\\ndkm@`ATHaIe[ujZ@BfhBAh\\ndif@`BBHRYgfzB@`@`\\ndetD@@eIYe~DYZjjh@`\\ndaFH@DAIYUnZjX@pkBinyD@\\ngC`HAVIMTAaaMrH\\ngNq@@djuUPFCDqkyD\\ngJQ@@dju@XZX|b@\\ngCa@@dmHFFDwH`\\ngJQ@@dsMBRppVyB\\ngCahHlOBNtA`anQ@\\ngGQDJH`qBSKMHdX\\neMIDbKpRYB\\ngNx@@eJ}UPFCDVkyB\\ngJXhEbLQIZf@`\\ndnD@@DiYrbYjj`CA`aLinPP\\ngF}@EbDfTuiXB\\ngJP`@TfZhCCQ[bA@\\ngJPhLQDIKUPD\\ndiDB@@RnRYufjf@LDp^PP\\ndmTD@@SHheHjfjjh@pXj[agdJ\\ngNpTHjpDDHrREQZTB\\ngGP@LdbMU@XTQZ|a@\\ndiDH@@rJJQUjj`CBlJf{dB\\ngJQDDH`qBS]LHj\\ngNplJqHJPtadTaeTpGdX\\ngJYHLPDIStpblDEqP`\\ndiFDpJXPdDdLdLbdJRjfdHI`\\ngGX@@eKMTHGCKWba@\\neFHBJFE@\\nfHfpAa@\\nfH`XA@\\ngOu@DPdrykURA`l~Q@\\nfHgHA@\\ngCa@@dmHFBVxa@\\ndmtD@@QIgYVUZh@@@p[FxYWdD\\ndmtH@@RgfueZj@@@LASJ[ae^Q@\\ndid@p@bFbAbDfUfn`BH@H\\ndidH@@RYUZZ@B`@phLKayB@\\ndmuL@DpIUIfVTfZjjX@`\\ndeVD@HADfyVxV`@`@piBkiy@`\\ndeVL@HAIR[e_aZ@B@CBdJngdL\\ndmvL`NaL@HrRRqQZUV``@@`\\ndco@`LK`BLdTTRRITntpTA@Pe@\\ngGP@Djuj`LLm^JD\\ngKP@Di\\\\Vj@pHfOH`\\ngNp`@dfVZf@pQ_IP\\ndaxD`Fx@aJUzjf@LJBDsnPP\\ngGQ@@djuTAaQL[rH\\ndaxH@@RUUjj`CC`cBinyB@\\ndiDH@@RYujjj@LAALJfx^Q@\\ngJX@@dku@XIGdp\\ngJX`DBdju@XI[ba@\\ndazH@LAIUjjj@LFBDinyF@\\ngNq`@fdjkUHFBqxiP\\ndaDD@@aJyUnh@@@`\\ndid@@LdbbQxXF@@CAdrfx^PP\\ndid@@Dj{WaZjf@LNaLJf{dB\\ndaDH@@RYUifjj@LJpj[nP`\\ndaDD@@YIeZn`B@@piLiny@@\\ndidD@@iJ[gxZB@@CBdJnGdL\\ndaFD@FADfyVyjj`CBdpj[d\\\\\\ndewH@HP`RY[TjFZd@H@H\\ndiD@@DiuejjP`GChSB[ax`T\\ndmtDPNDHaXaIfVUi``X`@`\\ndmt@@DjU_jxHHj@CBXPj[ae^Q`\\ndmt@@DjU_ZxHDj@bg@XSBkagbLh\\ndkl@@LdbRdSRjP`jJ`@pfDJfxUOdZ\\ngOp@DiWMZj`LKEb~HT\\ndmtH@@RYfWXXBHh@LF@fFUxe\\\\\\ndax@@LddUeUT@XMBXS]rJ@\\ngOq@@eJqmUTA`Xl~Ht\\ndaD@P@qBbDfYvzB@@CB`pj[d\\\\\\ndmuL@HDDWHihdh^eh@b@B\\ndcNL@HALRYymUujh@@@`\\ngNyhMDpDYIBdmTA`\\\\Z~P@\\ngNx@@dlmUPFEbq_DJ\\ndknL@CAErJIQIIF]Z``b@B\\ndeVD@DCdeeY[fjjh@`\\ndid@@DjUfaBB`@LNaLinGdD\\ndifL@DCaRY]bijih@`\\ndifH@DAIf_Ifjj`C@lJnxcB\\ndcMB@HXDeTfyed]ZBA`@H\\nfHcdAa@\\nfHchA@\\neF`BNFE@\\ndeTD`HP@cIHXdepk@A@A`ULL|PB@\\ndeTL`HS@BLddlRPrm@@@FAXwSqJD\\ndcnH@NCHhheEBtkl@D@@@P\\nfoA@R@HHqX@QddebRfR`iF\\\\m@@A@@A@\\ndieH@BxDfYUa``P@LBCJ[b\\\\H\\ndeTB@@pYRf[^njjj`CBXSBinFP\\ndaE@@@aJyUnX@@@pkBinyD@\\nfduA@@@ILsLjm{AJ\\\\XOhm@@@@A@@A@\\nfhy`@@@ISLjm{btjw`t@@@@@@@P\\ndmvH@DAIf{VUZh@@@p[J[agdJ\\nfnkA`@@N[dTRTtTTlVRbUFJlFNZmKUUUUUUT@F@TXipTeZMYw`iKWbLm@\\nfig@P@@NZOHhdihhiXleDbjLUXL\\\\uZVjjjjjij`@`\\ndeTL`HS@BLddlRPrm@@@FAXwCqJd\\ndet@@DjYUX^dHbH`CAdJfx^Id`\\nffsA`@@LudTTTeRdVTtLIps`ySeijjjZjjj@B\\nf`ia@@E@RfuUe]gEF]z`@jjhh@LAHIPTmFmsFG^@\\nf`ia@@M@RfuU[UgEZ]z`@jjhh@LAHIPTeFmsFG^@\\ndmLH@@RYegXYV@@@@@pXJXYWbYp\\ndmtD@@QIee^UZ``@@pXfxYWdT\\ndmtL@@QTfyeQehBA@C@jXYxb\\\\\\ndcLB@@RUR[fVQuhHF@@`\\ndklH@@rJIJQQNfZjji`B\\ndmt@@DjU_ZxHHj@CBXSBine^PH\\ndaDH@@RYWih@H@LB@j{bI`\\ngNq@@dsKSPFFu_HP\\ndeTL@@QdfygFV``@@piJXYyG@\\ndmv@@@RfYWEZB``@LIALJfxYyB`\\ndmuL@HTDYInYtYZB@`@`\\ndeVH@IAJYW~F``H@LJPj[nId`\\ngFuHC\\\\@aJYMif@`\\ndifH@HAIYexV@`@C@biny@`\\ndmvD@D@dfWeYUj`@@CCdpfxYyB`\\nfoA``@H@PdwJ{J|EYsP@P@@@D\\ndif@pDBHjHFHrJIQEn`HH@H\\ndclL@@{TivY~DeZhHB`@`\\ngFp`ATiTvjhCAH|Tp\\nfgA`B@N@BDifYWz\\\\d[Uj@H@B@@LI@Hs`eZM[dI@\\ngC`HAxIKTAahmr@\\ndg|@`@|DjYmUyO[j@@@@@LM@j[ae]N~Q`\\ndeTD@@YIfUqehH@@LFJfxYyF@\\ndeTL@@jTef_xVB@`@phj[iyD@\\ndeTL@@RdfVUFVjZd@pHfF^Qp\\ndeT`@@biRnY\\x7FaXHB@B\\ndif@PJ@H`HRnY~F``@@pXBinGdP\\ndk^@@@RfYU\\\\]Tz@@@@@LECBinFUOdZ\\ndieDPJZD@HHHrRFIYnVfi@H\\ndmND@DCdfVUrjUZjZi@LFrfFUyB@\\ngOp@DjWkjj`LFEcWrP\\ngOx@@eJqmUTA`xlZ~P@\\ngOx@@eLm]UTA`xlZ~P@\\ndcnH@DAIYegzUujBHH@LNInFUwdP\\nday@@@aJVYjjB@h\\ndedB@@PYR[UYjjX@pILZ^HU@\\ndkLF@@RUttfyenZjif@LFSBiSyG@\\ndmTL@@QdfUivijdHJ`\\ngGY@LDeej`LBl[rP\\ngGY@BDeUj`LBl[rP\\ngGY@LDeUj`LBl[rP\\ndkmH`NMPbLbbbTNfXXBHf`@`\\ngGY@LDeUj`LLc^JX\\ndmv@@@rRJIIFUjB`@@pELJfzUy@`\\ngOx@@drm]KTA`Pl^Jl\\ndaF@@@RYUijVj@H\\ndif@@@RYWZZejh@`\\nfoAa@@D@RUfV]qZlyhH@@@@CBRJ\\\\DkQkNxbD`\\nfoAa@@D@RYYeUuVLyj@@@@@CARJLEIVcV]rG@\\nfj}a@@D@rJIQQIQKQEYSkQrUj@@`@@@@@`\\ndie@@@iJYWxYB@@bK@lInybTH\\ndifH@NAIe]ih@I@C@dpjx`B\\ndcn@@@rRIHqIER{UT@D@FDpaUprn|c@\\ndig@@@aDiyWaV@@@LJPj[nPH\\ndg~DPFvpbEBLbbRfbRM\\\\JpAESI@D\\ndeVD@JADeUeFVjjh@p[B[agdP\\ndmuD@LXDRYueeVjjj@H\\ndmtD`BTHaIfUma``bP@`\\ndaE@@@{IHdbUUUT@XMBXUMrN@\\ndifH@LAIVUxVjj`CAdJfx^Q@\\ndeVH@IAJYW~F``H@LFSBinyD`\\ndifD@HADfyWaZ@@@LLRayaMp\\ndeTD@@QIgeQej@@@LLsayeMH\\ndeT@@DjUghP`h`@pYL[agfPU@\\ndeVH@LAIUeQejjj@LASBinF^Q@\\ndmuH@DHDfvYYUjjj`B\\ngOx@@eLvmUTA`xlZ~P@\\ngOx@@eRimUTAaXcWrX\\nfle``@C@Pdrrj\\x7FLlmQRuAAEUTP@P\\ndiFH`JpHaI[kijh@`\\ndeVL@BAIR[YTYZjj`B\\ndg|H`ABHRYW[ficn@BjjH@`\\nfoAqB@EZ\\\\HDPdrnvrtYYt@EURd@FD`HpR`iFmrG@\\ndk_H@FdprJJISPkatzjjiZ@H\\nfoAab@GPQ`@QddebRfRpiFlm@@@P@A@\\ngNy@LDeVZj@pJM_EL\\nf`aQ@@DT@drllsNoMTDQT@@P\\ngJX@@eKU@XYX|P`\\ndid@@LddRL[jjj`CChSBkayC@\\ndk]H@DdDefueFUujjjj`B\\ndg|@@DjU_eZx{BAH@@BJlARne]N~EFDp\\ndmvD@HADfyeQehBA@C@dXYye\\\\h\\ngBX@@eLUTAahmr@\\ndmLH@@RYiYKnVjjjh@pFLinFUy@@\\ndg_@`DGPbDfUueZZ@Bjj@B\\ndeVH`BdHaIfUvFBBD@H\\ndaFH@LAIVUnZjh@piBinyD@\\ndg^H@LAJUyfUSjhBH`@`\\ngGPHAbIKUU@P\\ndmtH@@rIQQQWiXBH`@pjfxUyD@\\ndcOD@Ds`wHheELUPmMUT`FCTwBn|bP\\ndeTH@@rJJIHmtAAP@XTALL|sJx\\ngOu@E`drm[SRAalWrT\\ndo}H`AMPbDfUo[Vf`@jZh@H\\ndg]H`AMPbDfY_[Vz@`ij@B\\ndkmH`NMPbLbbRrbaih@Jf`@pxDpjg^PX\\nf`q@@@BbHRDRHQHaIXkf`bJbjb@CARB\\\\EKQkN}rB`\\ndcLL@@G\\\\dTRRbOKPPTP@XRfES\\\\LkrM@\\ndklL@@Ptfym]eVj@BP@pyLinF^Qh\\ndg}B@HTDf|bfbbTThfnmA@tI@D\\nfoAP@@@HR[ieUuVLyjhJBH@B\\nfoAab@KPQ`@QddebRfR`iF\\\\m@@A@@A@\\ndg~H@FCIEDhcLdLg]AP@@@A@\\ndmvH@DCHhhhdYUjjj`CClJfxYyB`\\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\\ndk~@@@RfYU_JGUN`XJJH@pDB[aeSyF`\\nf`i``@E@PdwJvvoAJt{sP@TuQP@P\\ndcNL@FAMRUUeUujjjh@`\\ndidH@@rJJIEn`HH@LBJfGbA`\\nfhyA`@@BMdTTTTTTVoMJ|xKPAAPA@@F@aRTZsoAyCP\\nflu@P@@BLgHhhhhhhml^ZUytV`BB`HX@@`\\ndeTL`HS@|LddlRPru@@@FETwCODS@\\ndk^LPLaC@HTHrRPqQYKiWUjfYj@LJXUt~QP\\ndcNH@BAIUfYgVjjj`B\\ndmt@@DjU^jxHHj@CChPjFUxf\\\\\\ndg\\\\D@@QInUukaZ@Bj`@`\\ndknJ@HAIT|bfbbTUGV``X`@`\\ndidH@@Rge^Fh@@@pZDJf{dB\\nf`qAA@A@bOQBSJ{\\\\ktYYt@EP@P@A@\\ndmtD`ATHaIe]nf`@jP@pXDpjGb]H\\ndcND@NADfUyU]Zj@@@H\\ndcn@@@RigVRX]fBBb@CClkae]yB@\\ngCa@@duPFADV@\\ndidL@@cDkkWajjj@H\\ndg|H@@RVYYwySn``@@@@pTHIne]N~PH\\ndmtLPNePbABDfUujZ@Be@B\\ndaDh@DqnAIeZfZZd@`\\ndmM@PBx@c@aJYg\\\\jeZdHB@B\\neFAAx`bLD\\ndmv@@@rQQJEJUjh@@@pdHJfxYWdH\\ndmLH@@rJJIQEneX@@@@CA`rnF^Hr`\\nfoAa@@D@rJJJJHqYQkNZj`bB@@`\\ndklH@@RUYffSYjZj`aJ\\ndeTH@@rJIJFTt@EP@XLFTpsqDx\\ndo|H@@rJJIQRFIn`HJjh@H\\ndmvH@DAIgfVUZ`H@@pYFxYWdX\\ndeTD`HP@cIHXhdLk@P@A`UMp|PI@\\ndcLD@@QIeeUgVhHH@CAbinF^Hn`\\ndknD@FADfye_EV``bP@pyJ[aW^II`\\ndo~D@FADfye_TUZBBIhBMX\\ndg^H@LAIYVUW[jiBB@Hi`\\ndkmD@NLJrQSQQITUhHbI@B\\ndiW@@@cDi[WBxYjeX@`\\ndev@@@rRIIHus]UUUPA`JXUMpsrH@\\ndifD@B@TfYun``H@LJCJx^PP\\ndo~@@@RV^UviUj`@j`@`\\ndaDH`BBHRYg[hH@@LJCJ[nPP\\ndif@`ABHrJJIEn`HH@LJCBinPH\\ngJXLBIARFdDfjhB\\ndcLHPBBHzHrJJKQFLLDDU@A@\\ndcLHPBCD{DrJJKQFLLDDU@A@\\ndklJ`HSNL@cIIKEDdYuZBBH@H\\nfhiAb@B^BBHRYe^unXHshHH@HX@@`\\ndg\\\\L`AWPbDfUv{ZZ@Bij@B\\ndcn@@@Re[mRY]jj@B@CBXSBxYW^HC@\\nfde`@@@IRmrkNyFZ\\\\FMUPP@@P@A@\\ndk_@`LI`BDigvUrmNfV@B@bj\\nfoApA@EZ\\\\BHeDILrk|kNV]@PMTi@ar`\\ndaE@@@yJeVnjjh@pZDpj{dL\\ndmvH@LAIUYVUZh@@@pELInFUyD@\\ndmL@@DjYUVGi@@@`@LNpjxYWdH\\ngJX@@djsBIptQxa`\\ndmV@@@RUgVYjf`aJ\\ndeTD@@qI[eQfj@@@LNSJ[agbA@\\ndazD@J@dfWjjh@pjLInx`H\\ndg^D@EAdfYewiuhJBJ@B\\ndidD@@QIVUxV`@@CCFx^YAT\\ngJX@@eST`XZK\\\\a@\\ndmvD@HALbfbbQFV`HH@H\\ndk]H@BxLbbbRaRX]NBA@@@B\\ndeu@@@gIHhikWLMUTu@D\\ndid@P@bNbDfYYa`H`@LJBfx^Q`\\ndmtHPIBHVHRYfUXXBHX@H\\ndeUD@FxJRVYmnYjZ`B\\nf`q@`@@LrQQJIQKHbL{uAPA@@@A`iANBdkUg^y@p\\ndk\\\\@@DjWmkiadHBjh`B\\ndk]H@DXDfYYwz]MjhHB@CClhYWSyC@\\ndg~HpFlI@i@YCHhhihdUtz\\\\DQEJPA@\\ndcLL@@S\\\\bbTrTHru@AH@XDUMODEP\\ndg\\\\`@@SFRYueUNvjjjj@H\\ndk\\\\@`LhDjU^ukmLHH@@@CAXPjxYWSyF@\\ndk]H`AdpqDfUmUiev@Bfd`B\\ngFp@DjTujhCCKWba@\\ndkLD@@SHdiDbeFjff`B\\ngGP`Ademj`LBl[rP\\nfhyH@@@X\\\\EJYnUWoEEVMyj@@@b`@B\\nfhyH@@@X|EJYnUWwEEVLyj@@@J`@B\\ndk^H@FAJY}e\\\\kSie`@`Hj`\\ndieH@FxLdTReJjeZ`B\\ndeVD@HADfyeFV`H@@pqNgfTp`\\ndeU@@@qJYejxBHh@LJJfF^Qp\\ndmuH@DXDfUgjZ@Bj@B\\ndmvH@ACHhhdcFz@`j@CA`Jfe^Ig@\\ndmvH@AAIe]Zf`@j`@pXBkiWbI`\\ndcn@@@RfumVy]d@@@@CClIae]yB@\\nfoAP@@@TRfUVu~RlzP```@ABC@\\ndknDpItpdDdLdLbdLRTtEZh@a`@`\\nf`qa`@H@PqInYWmQJ]yhHH@@@@`\\nfbuac@HjSdD`bPqHYEHXdleDeeAR|Fj@B`@f@@H\\ndeTD`HP@cIHXhdLk@P@A`UMt|PA@\\nfdy`b@LPP@HrRPjJJIIDf|xJu@A@A@@D\\nf`qa@@M@rQSIYQIPlxZu@AUUQ@A@\\ndig@@@`Tke]nX@H@LBpfGbQP\\ndaF@`B@HRYg[hH@@LBpj[bAp\\ndid@@Ldbbq[`bB@C@lJaxbL\\ndidD`HPOAJvUxVjj`CAlJfx^P@\\ndmtB`HSBCprRSFIJUZh@@@pinFUxfD\\nfHbXA@\\ndaFH@BAIf]n``@@pKBknHC@\\nfjsQ@@DB@dsLsKjvldIUhaJgKU@p@@@D@@D\\ndnD@@DiYrbYjj`CB`aLkbDp\\ndmLD@@eIYfUayVjjZPB\\ndaDH@@RVU[f@@@LJcB[nQP\\ngFp`AdiTvjhCAF|TP\\neMBBHRYCAKd`\\ndieH@HPDeYWaZ@@@H\\ngOu@E`dsu[UTA`TZ~S@\\ngOx`DFdrikTlA`e^S@\\ndaD@@DjWZXHB@CBdpf{dP\\ndmL@@DjYeVdUBHhb@LNpjXYWd\\\\\\ndiTH@@RVYV{ajjf`B\\ndmN@@@RYVuiiV@@@@@pxLkae^P`\\ndml@@LdfbTJifzUZjjj`B\\nfHcDA@\\nfHgPAa@\\nfHe@Aa@\\neMBBHRYCAGe@\\ngC`DAbZHRVhB\\nfHbxA@\\ngCa@@dtpFBVy@\\ngC`HADIMTAa`mrP\\ngJQHDHaIjj@`\\ngC`HADIKRAaaMrH\\ngJP@DivhPNAbqy@\\ngJQ@@dkSBJpHVOI@\\neMJAhHzB\\ngJPhLQxIRuPD';\nTrb.NE='daD@@DiUVyjjPPGd\\ndaD@@DjUZxHD@@\\ndaD@@DjUZxHH@@\\ndaD@@DjWjXHB@@\\ndaD@@DjWzXHB@@\\ndaD@D@BHBDBLBBBJBFBNBDiUVzjj`@\\ndaD@P@bBbDfYvzB@@@\\ndaD@P@bNBDfUzZ@B@@\\ndaD@P@bNbDfUzZ@B@@\\ndaD@P@qBdDfYvzB@@@\\ndaD@P@qFdDfUjz@H@@\\ndaD@`@BDeeVz`@@@\\ndaD@`@bDfYVz@`@@\\ndaDD@@IJVVfijh@@\\ndaDD@@QIe\\\\jZjh@@\\ndaDD@@YIeZn`B@@@\\ndaDD@@YJZUnjjh@@\\ndaDD@@qIYUnZjX@@\\ndaDD@@qJYoJjjX@@\\ndaDD@@qJZ_Fjjh@@\\ndaDD@@yIe^f`@`@@\\ndaDD@@yJYVfjjh@@\\ndaDD@@yJYfnjjh@@\\ndaDH@@RVU[f@@@@\\ndaDH@@RVU[j@@@@\\ndaDH@@RYVih@H@@\\ndaDH@@RYWih@H@@\\ndaDH@@RYe[hB@@@\\ndaDH@@Rfu[j@@@@\\ndaDH`L@HRf][jZj@@\\ndaDL@@SDfUrijj`@\\ndaE@@@IIf]njjh@@\\ndaE@@@YIeZn`B@@@\\ndaE@@@yIe^f`@`@@\\ndaE@@@yIe^fjjh@@\\ndaEH@DpDfYbYjj`@\\ndaF@@@RVU[n@@@@\\ndaF@@@RYVih@H@@\\ndaF@@@RYWih@H@@\\ndaF@@@RYe[hB@@@\\ndaF@`NBHRYWih@H@@\\ndaF@`NBPRYWih@H@@\\ndaFD@DCdeeVyjj`@\\ndaFH@BAIf]n``@@@\\ndaFH@DAIYUnZjh@@\\ndaFH@DAIeUnZjh@@\\ndaFH@DAIfVfZjX@@\\ndaFH@DAIf\\\\fZjh@@\\ndaFH@FAIeZn`B@@@\\ndaFH@NAIe^f`@`@@\\ndaFH@NAJYfnjjh@@\\ndae@@@yJeVn[jjj`@\\ndaf@@@RiUkfzjjh@@\\ndax@@Djuvjh@@\\ndaxB@@QnR[VZY`cD\\ndaxB@@QnR[VZY`cH\\ndaxB@@QnR[VZi`@\\ndaxB@@RnRUUZjP@\\ndaxD@@KHhhbtu@@\\ndaxD@@KHhhcUT`@\\ndaxD@@QIUUjj@@\\ndaxD@@QIUYjj@@\\ndaxD@@QIeUjVBB`\\ndaxD@@QIeUjZBB`\\ndaxD@@QIeUjf@@\\ndaxD@@QIeUjj@@\\ndaxD@@QIeejj@@\\ndaxD@@QIgijj@@\\ndaxD@@QImUifALj`\\ndaxD@@[HiDYUU@@\\ndaxD@@iIijjj@@\\ndaxD@@iJUfjj@@\\ndaxD@@iJUvjj@@\\ndaxD@@yIi^jj@@\\ndaxDPDxHahaImZYiBL`\\ndaxDPFxH`haIf^jj@@\\ndaxDPFxLPlQIf^jj@@\\ndaxDpBhHa@chaIffeZBDP\\ndaxH@@RUUYf`QHh\\ndaxH@@RV[jj`@\\ndaxH@@RYUZj`@\\ndaxH@@ReWii`QJh\\ndaxH@@rJJHmUP@@\\ndaxH`HALRkUZj`@\\ndaxH`HALRkfZj`@\\ndaxJ`HSFx@cIIJhmS@@\\ndaxL@@SdfUvih@@\\ndaxL@@SdfvVjh@@\\ndax`@@PjRUnzZ`@\\nday@@@[HiDYUU@@\\nday@@@kIHbiUU@@\\ndayL`BzDp@cIICdmU@@\\ndaz@@@RfVjj`@\\ndaz@PLBHzHRUgjj`@\\ndaz@`JBHRV^jj`@\\ndazD@DAdfUvih@@\\ndazD@LCdeYzjh@@\\ndazD@NADf{Vfl@@\\ndazH@DAIeYjZ@@\\ndazH@LAIUjjj@@\\ndazH`BpJqI[Vfj@@\\ndazH`LPHaInVZj@@\\ndcL@@DiUUU]ZjejC@^QP\\ndcL@@DjYYYiBHhh@@\\ndcL@H@qBqEqMqDfYn]a``bh@@\\ndcLB@@Q]R[e[neh@a`@@\\ndcLB@@Q]R[e]nEh@I`@@\\ndcLD@@EJY[WWZjB@@@\\ndcLD@@GIEDTiMBUUUS@@\\ndcLD@@IIf]z[hHBj@@\\ndcLD@@QIUVUWVj`@@@\\ndcLD@@QIe]UJfjjj`@\\ndcLD@@QIgVUWVj`@@@\\ndcLD@@QIge]FVh@I@@\\ndcLD@@SHhdhTeSMUUU@@\\ndcLD@@YJYYwEZB`b@@\\ndcLD@@iJ[g]xZB@f@bX\\ndcLD@@uIUfUeVXBB@aH\\ndcLDPDtHaXaInUnzY`BI@@\\ndcLH@@RYWZZYjjjh@@\\ndcLH@@RYeZvz@`j`@@\\ndcLH@@RYguRYijjh@@\\ndcLL@@G\\\\dTRRbOKPPTP@@\\ndcLL@@QTfVUV]Zjjj@@\\ndcLL@@QTfVutYZ`@h@@\\ndcLL@@QTfvUtYZ`@h@@\\ndcLL`HQPBLddLRRTzmAA@@@\\ndcLL`HS@BLddJfRtjmP@P@@\\ndcM@@@eIi_Z[jjjj`@\\ndcM@@@wIHhdd]JuAPD@@\\ndcM@pItIAICICHiCDeDJuPAD@@\\ndcMB@hDDWXeNF]yInUnzV`BF@@\\ndcMD@DdMRUe]^EX@IP@@\\ndcMD@LDMRUe]^Fjjjh@@\\ndcMD@LtARem[~fl@bp@@\\ndcMDBLHDSdf{YU]Zj@@@@\\ndcMH@DdDfY}XfZjjj@@\\ndcMLAHtDVISdfyW[aZ@BX@@\\ndcNB@BAEuInVVFV`HF@@\\ndcNBAHAEvISdfyW[aZ@BX@@\\ndcND@AALbbTRbJzuAP@@@\\ndcND@MADfVU~UZ``H@@\\ndcNDaFePBFe^RfV^Qv`hF@@@\\ndcNH@DAIf_UIfjjj`@\\ndcNLAHAEbTyInUnzV`BF@@\\ndcNL`NaL@HrRRqQ[RjtDA@@@\\ndcO@@@JldbRTQU]UUUT@@\\ndcO@@@xTjU]Znjjjj@@\\ndcOLpHkb[PbAbEbDfYn\\x7FijYjf@@\\ndcl@@DjUg^aWP`hjH@@\\ndcl@@DjYU_egX@@@@@@\\ndclD@@QIe[UiiUjP@h@@\\ndclD@@QIe[WiiUjP@h@@\\ndclD@@SHheDhbJkkUUUT@@\\ndclD@@aJVfnKfFjjjf@@\\ndclD@@iJYW]rnF``IhBI`\\ndclD@@iJYW]rnF``Jh@@\\ndcm@@@UJfUWyYvhJBH@@\\ndcmH@DHDfUyTjWVi`@`@@\\ndcn@@@rJJJJJlJ{@A@@@@\\ndcnD`EGPqDfUn^neX@aiH@@\\ndcnH@AAJYYwhUvj``H@@\\ndcnH@DCHhheBeSKkUUUT@@\\ndctB@@PYRYU{Vjij@@\\ndctD@@QIeWUZjjh@@\\ndctD@@QIgUUZjjh@@\\ndctD@@QImUUZjjh@@\\ndctD@@QImUVZjjh@@\\ndctD@@wHiDThmUUUP@@\\ndctH@@RUgVVZijADn`\\ndctH@@RV]UVjjj@@\\ndctH@@RgUUZjjj@@\\ndctH`HALRkUUVjjj@@\\ndctH`HALRkUYfjjj@@\\ndctL@@Pdf{e]jjj`@\\ndctL@@X\\\\dTQfReUUU@@\\ndctL@@jTiV[Vjjj`@\\ndcvD@MADfuUUjjjp@\\ndcvH@LAIVUUjjjh@@\\ndeL@@Di[ernDYZjij@@\\ndeL@@DjUYkfEijjjj@@\\ndeT@@DjUghP`h`@@\\ndeT@@DjWvifjih@@\\ndeT@@DjWviifjh@@\\ndeT@@DjYUXPbH`@@\\ndeT@@Dj[[[ifjd@@\\ndeT@@DjeUZZjjh@@\\ndeT@@LdbRTm\\\\DBR@@\\ndeT@@LdbRTm\\\\DBT@@\\ndeT@@LdbRbmBDED@@\\ndeT@@LdbTRoBuUM@@\\ndeT@@LdbTRoBuUT`@\\ndeT@@LdbbQwBuSU@@\\ndeT@@LdbbQwCUUU@@\\ndeT@P@bIbDee][j@B`@@\\ndeT@p@bNBIbDfUuih@J`@@\\ndeTD@@EJYU^f```@@\\ndeTD@@IJVWZZfjj@@\\ndeTD@@QIe]Rijjj@@\\ndeTD@@QIgeQej@@@@\\ndeTD@@QIgeQejjj@@\\ndeTD@@QImeQej@@@@\\ndeTD@@SHhdhUSMUUP@@\\ndeTD@@eJ[WVz`@h@@\\ndeTD@@iIYe^e```@@\\ndeTD@@qIUeQej@@@@\\ndeTD`AdHaIe]jZ@BX@@\\ndeTD`DpHaImeQfZ@@@@\\ndeTD`NDHaIfVVfBA`@@\\ndeTH@@RUYTYY`@@aH\\ndeTH@@RUYTYj`@@@\\ndeTH@@RYVZfZZj`@\\ndeTH@@RYVZfZij`@\\ndeTH@@RYVffjjj`@\\ndeTH@@RYWZfjjj`@\\ndeTH@@RYe\\\\YZB@@@\\ndeTH@@RYm_aZ@B@@\\ndeTH@@RYm_ajjj`@\\ndeTH@@RgYTYj`@@@\\ndeTH@@rJJIHmtAAH@@\\ndeTH@@rJQPiCMT@@@@\\ndeTHPABHxHRYWZf`@f@@\\ndeTH`DBHRZ{TYf`@@@\\ndeTH`IBHrJJJJlLADP@@\\ndeTHpACDKD[DRYf{i`bH@@\\ndeTL@@QdfygFV``@@@\\ndeTL`HS@BLddlRPrm@@@@\\ndeTL`HS@|LddlRPru@@@@\\ndeU@@@eIYVvG`BL@@\\ndeU@@@eIYWVz`@h@@\\ndeU@@@eIYWVzjjj@@\\ndeU@@@eIYWV{`@l@@\\ndeU@@@gHeDeBwT@E@@@\\ndeU@@@qJYVjXBBh@@\\ndeU@`Ld@aJVu~Fl@H@@\\ndeUB@DpFFTfUgkfjYX@@\\ndeUH@JXDiWUJjjjh@@\\ndeV@@@RUYTYy`@@aH\\ndeV@@@RVUenh@J@@\\ndeV@@@rQQIHtpDCP@@\\ndeV@@@rQQQHcMAP@@@\\ndeV@@@rQQRItMMUR@@\\ndeV@@@rRHqICMT@@@@\\ndeV@PABPRPR[e[ij@H@@\\ndeV@pABPJPZPRYf{i`bH@@\\ndeVD@DAdfygFV``@@@\\ndeVH@AAIfuneh@`@@\\ndeVH@IAJYW~F``H@@\\ndeVH@JAJUuRjjjj@@\\ndeVH@LAIUeQfj@@@@\\ndeVH@LAIVUVzjjj@@\\ndeVH@NCIELeBpt@Q@@@\\ndeVHAH@NbTfY_[hBB`@@\\ndeVH`IHHaIfUVFBBH@@\\ndeVH`NdHaIe]ZZ@BT@@\\ndeVL@D@YrJJHjDsUTt@@\\ndeVLAHAAbTyInUneh@`@@\\ndeWH@DJPRY[TYZ`@@@\\nded@@Dj_VfZZ@@\\nded@@LdbQRdsSPQD@\\nded@P@SHBDjuUZjj@@\\ndedB@@PYRYWYjZX@@\\ndedB@@PYR[UYjjX@@\\ndedBpJxYCDKD[pRY]jjih@@\\ndedD@@QIUUVjj`@\\ndedD@@QIkWZjj`@\\ndedD@@QInUvjj`@\\ndedD@@aJVfjjj`@\\ndedD@@eIffZjj`@\\ndedD@@qJY]zjj`@\\ndedH@@RUUUfihDRY@\\ndedH@@RUUUfjhHR@\\ndedH@@RUgVZjhHb@\\ndedH@@RV]Ujjh@@\\ndedH@@RYVYjjh@@\\ndedH@@RZW^jkh@@\\ndedH@@RZWvjjh@@\\ndedH@@rJQEJUUU@@\\ndedH`HALRkUUjjh@@\\ndedH`HALRkVYjjh@@\\ndedL@@PTfUvZfj@@\\ndedL@@pdie]jjj@@\\ndedL`@JdhDi[Ujjj@@\\ndedL`HS@|DjUUjjj@@\\ndee@@@eIUUZjj`@\\ndee@@@{IHh\\\\iUUT@@\\ndee@PJdLQlSHiDdUU]V@@\\ndef@@@RiUVjiT@@\\ndef@@@Ri]Vjjh@@\\ndef@pLBHFHfHRUeVjjh@@\\ndefB@LAAeIeUVjj`@\\ndefB`HKad@aIf^Zff`@\\ndefD@AADfUfZfjBBP\\ndefH@LAIVYjjj`@\\ndefL@L@YRUeVjjh@@\\ndeg@@@FTjWUjjj@@\\ndeg@@@JTeV]zjk@@\\ndet@@DjYUX^d@@@@@\\ndet@@DjYUX^dHbH`@\\ndet@@DjYUZ^D`dJ@@\\ndet@@DjyZkfyjjj`@\\ndetH@@RYVvfFX@Jb@@\\ndeu@`Dp@aIeURhYfh@@@@\\ndev@@@Re[TjFP@@@@@\\ndev@@@rQQJHtpr@@@@@@\\ndev@`JADrQQQHyPsPLA@@@\\ndevH@JCIEEDceCM@pD@@\\ndevH`HX@aJVU|HYjA@`@@\\ndg\\\\B@@Q]rJISQJHr[TDCD@@\\ndg\\\\B@@SSRY[W[FVh@Ih@@\\ndg\\\\B@@pSRf^Y]vzjB``@@\\ndg\\\\D@@QIeUyT{Zjh@@@@\\ndg\\\\D@@QIe]UTjZjjjh@@\\ndg\\\\D@@QIgUYT{Zjh@@@@\\ndg\\\\D@@QIge]hYZjjjh@@\\ndg\\\\D@@QIgfVVSZjjjh@@\\ndg\\\\D@@QIgfWzUZjZih@@\\ndg\\\\D@@SHhdhTdeSMUUUT@@\\ndg\\\\D@@SHhmHcDd]mUT@@@@\\ndg\\\\D@@SHhmHhTmimUUTt@@\\ndg\\\\D@@SHhmHhTmimUUUT@@\\ndg\\\\D@@eIfU_Un`HJj`@@\\ndg\\\\H@@RV^UveVj@Bh@@\\ndg\\\\H@@rQIIQQHg]UPT@@@\\ndg\\\\LPLi`bBBLbRTabRvgUK@A@@@\\ndg]D@DdMRYe_[FVjZif@@\\ndg]D@DtKrIIQIPiCJt@EJ@@\\ndg]D`NV]CDRYWVyih@JZh@@\\ndg]H@LlDeYeUuNj``c@@\\ndg^D@L@teYee]nj`bH@@\\ndg^DPKFPbNBLbbRrdJUM@AKM`Pl@\\ndg^D`Ca@BLddLRRVTzm@aG@Pt@\\ndg^H@DAIfVU^]Zjjjh@@\\ndg^H@DAIf_UTfZjjjh@@\\ndg^H@DCHhhhdhb]mTED@@@\\ndg^`@@SAgHhihhhb]mTCD@@@\\ndgl@P@BH|DfeUUVjjjh@@\\ndglB@@RUrJIIIPiMUTuP@@\\ndglD@@QIeWUUjjjj@@\\ndglD@@QIeuUUjjjfBM`\\ndglD@@QImUUUjjjj@@\\ndglD@@SHhmHbeDuUUR`@\\ndglD@@SHhmHdThuUMM@@\\ndglD@@qJ[]UVjjjj@@\\ndglDB@QNrJZQEIIMUMUPPt@\\ndglDPDlH`xaImUUZZjji@@\\ndgm@@@mIUUUVjjjj@@\\ndgnB@DBcoHheEiDbuUUU@@\\ndg|@P@bFBDfUoeZx{`BH@@@@\\ndg|B@@Q[RYvUmgSmj`BJH@@\\ndg|D@@SHieEDhcJg[T@@@@@@\\ndg|DB@QNrJYQQJHrivuUUUT@@\\ndg|D`BTHaIfUm]aNxHHD@@@\\ndg|H@@RVYYwySn``@@@@@\\ndg|H@@RYe[W[cn@`jjH@@\\ndg|H`BBHRYg^U[cnB@`@@@@\\ndg}@pBl@c@aPaJYgU|jgZdHHn@@\\ndg~D`NTpbDfUvYj[[`@jYa@@\\ndg~H@NAIe]YVfNx@J@@@@\\ndg\\x7F@PBWPbAbLbbbRfaSR]pPTMQ@@\\ndiD@@DiUVjj`@\\ndiD@`@BDiUVjj`@\\ndiD@`@bDee^jj`@\\ndiD@`@kDf]Vjj`@\\ndiDD@@QIgUZjh@@\\ndiDDB@QNR[UfjZ@@\\ndiDDPBhLQlQIf_jZh@@\\ndiDH@@RVUvjj@@\\ndiDH@@RVvjZj@@\\ndiDH@@RYuYjjBH`\\ndiDH@@rIRHrjj`@\\ndiDJ@@PnEInvZjX@@\\ndiDJ`HSNDOAJoVZjX@@\\ndiDL@@IdfY~jjP@\\ndiDL@@kdiVZjj`@\\ndiDLPBhPbFbLbbbeiZdHQ@\\ndiDLPDp`bH|DfmVZj`@\\ndiE@`ND@aJUUjj|@@\\ndiEH@BxDeUZjj`@\\ndiF@@@RUUZjj@@\\ndiF@@@RVUzjj@@\\ndiF@@@ReUZjj@@\\ndiFD@AADfuUjj`@\\ndiFD@BCdf]Zjj`@\\ndiFD@FBdiUzjj`@\\ndiFD@LCldTatjjh@@\\ndiFJAHALXXgNRYvvjj@@\\ndiG@@@HTeUWjjp@\\ndiG@@@xTiUVjj`@\\ndiT@@LdRbQrbYjjZ@@\\ndiTH@@RVYz{ajjj`@\\ndiTH@@ReUxRfjjf`@\\ndiV@@@RVYz{ajjj`@\\ndiV@@@RfU|kahDB@@\\ndiV@`J@HRfU|kahDB@@\\ndiVH@AAJUWaJZjjz@@\\ndid@@DjUfaBB`@@\\ndid@@DjWffB@h@@\\ndid@@DjYUaBHP@@\\ndid@@LdbRQk``b@@\\ndid@@LdbbQxXF@@@\\ndid@P@bNBDfUvf`@h@@\\ndid@`@bDf[Waj@@@@\\ndid@p@bBbAbDfYun``H@@\\ndid@p@bBbFbDfYoa`b@@@\\ndidD@@EIe]ih@J@@\\ndidD@@EIfU[hBB@@\\ndidD@@GHhdhZZ@B`@@\\ndidD@@KIDhdZZfjh@@\\ndidD@@QIe]Jfjj`@\\ndidD@@QInUxV`@@@\\ndidD@@iIYgxVB@@@\\ndidD@@iJ[gxZB@@@\\ndidD`BDHaIf_[hHB@@\\ndidDpNDH`ha`cHhhcJZjiX@@\\ndidH@@RUe^Fh@@@@\\ndidH@@RVUvz`@`@@\\ndidH@@RYVZZ@B`@@\\ndidH@@RYWZZ@BP@@\\ndidH@@RYm^Eh@@@@\\ndidH@@RYm^Fh@@@@\\ndidH@@RYm^Fjjh@@\\ndidH@@RZU~Fjzh@@\\ndidHPBBHFHRYgVzB@`@@\\ndidHPBBHzHRYgfFBB@@@\\ndidH`ACDrJIJFf`@d@@\\ndidL@@HTfYun``H@@\\ndidL@@IdfYoa`b@@@\\ndidL@@KdfYynZej@@\\ndidL@@RdfVwaZii@@\\ndidL@@rldTTUkjjj`@\\ndidlAHJfAAbTyInW[fiY`@\\ndie@@@EIYW[n@B@@\\ndie@@@EIfW[hBB@@\\ndie@@@GHhhdVz@``@@\\ndie@PLx@a@cHheDZyjjh@@\\ndie@`BDHaIf][hHB@@\\ndieD`JXaBPRYgvzejX@@\\ndieH@JDDiWTjjjj@@\\ndieH@LDDeYWajjj@@\\ndif@@@RUe^Gh@@@@\\ndif@@@RVUf{`@`@@\\ndif@@@RVUv{`@`@@\\ndif@@@RfU~Fjjh@@\\ndif@@@RfWzXBBP@@\\ndif@@@RfWzXBB`@@\\ndif@@@rRJEKaj@@@@\\ndif@PABHJHRYgVzB@`@@\\ndif@`ABHRYWZZ@Bp@@\\ndif@`BBHRYgVzB@`@@\\ndif@`NBHRYeVFBC@@@\\ndifD@D@TfY|fZjj@@\\ndifD@J@TiWTjjjj@@\\ndifDAHAHeNR[e^Eh@@@@\\ndifFAHALkab\\\\yIgnxVij`@\\ndifH@AAJYYhZjj`@\\ndifH@DAIfVifjj`@\\ndifH@DAInUxVjj`@\\ndig@@@xTjU^njjj@@\\ndkLB@@SSR[UUYjjjX@@\\ndkLB`HSBCprRSEQIYjjjh@@\\ndkLD@@QIeUoVjjj`@\\ndkLD@@QIeWUVjjj`@\\ndkLD@@QIe]Ufijj`@\\ndkLD@@QIe^Uvijj`@\\ndkLD@@QImUUVjjj`@\\ndkLD@@qJ[]UZjzj`@\\ndkLFPHSaTpBJBLddJTbNVjVj@@\\ndkLH@@RUUUUfjjhHR@\\ndkLH@@RVUU^jjjh@@\\ndkLH@@rJIJJJrjjjh@@\\ndkLH@@rJJQUIIjjjh@@\\ndkLLHBi`bL|MbCbDeZuUjZjj@@\\ndkLLHLi`bB|MbCbDeVUUjjjj@@\\ndkLLXJXPdDdLdEdMdCdLbdLrfdjffj@@\\ndkLL`@JdhDiYWUjjjj@@\\ndkLL`@idhLdTTJTTjjjj@@\\ndkLN@@PiWSR[kVYjjfX@@\\ndkM@@@UJeUUZjjj`@\\ndkMDHLve@HZPzPFPrQSJQVZfjihHR@\\ndkN@@@RUUUVjjjh@@\\ndkN@@@ReUUVjjjh@@\\ndkND@CALbbRbJRZjjj@@\\ndkNH@JAIgeUzjjj`@\\ndkNL@BB]RYyVZjjjh@@\\ndkO@@@Y\\\\dbJRRTjjjj@@\\ndk\\\\@`@BDifUWGUN`@@@@@\\ndk\\\\D@@QIenf^WSZjjjh@@\\ndk\\\\D@@SHihheDQgSZjjjh@@\\ndk\\\\H@@RYeg]itvi``D@@\\ndk\\\\H@@RYeg]itxH@@@@@\\ndk\\\\H@@RYm[Watv`@@@@@\\ndk\\\\H@@RfU{WatzB@@@@@\\ndk\\\\H@@rJJZIQDYtv`@@@@@\\ndk\\\\H`ABHRYVvvftx@Jjb@@\\ndk]@pLh@a@c`aIegmRkSZj`@P@@\\ndk]H@DHDfYyWImMjhHA@@\\ndk]LbLjDd@birRPqSIYntuj`PH@@\\ndk^@@@RfYU\\\\]Tzjjjj@@\\ndk^D@DBTfYYwimMjdDB@@\\ndk^D@DBTfY[W[mNfhHB@@\\ndk^HPNHJrXaIf^UvGS``B@@@@\\ndk^LpB[a@HpHkprQPjSIILPjjZjj@@\\ndkl@`@SLddTlTUgZhBH`@@\\ndklB@@Q]RY[WoaZjjZ`@\\ndklD@@QIeUY]Mjjjj@@\\ndklD@@QIe]URijjjj@@\\ndklD@@QIgfU}MjhD@@@\\ndklD@@QIgge]Mjj@@@@\\ndklD@@QInUvnEh@Jh@@\\ndklD@@SHhdhTdjYjjjj@@\\ndklD@@eJ[Vvfz`@jh@@\\ndklD@@qJ[[m]Njj@@@@\\ndklDB@QNR[V[WSZj`@@@\\ndklDpLHHbOA@aIkVuVzZjjj@@\\ndklH@@RYeZUn`HJj@@\\ndklH@@RZWyWSjj`@@@\\ndklH@@ReYUfSj``h@@\\ndklL@@STf^UvFVh@J`@@\\ndklL`AtpbDfUoVih@Ji`@@\\ndklLpDppbHBMbLbdLRTtEYX@bP@@\\ndkmB@hTDtxeNVS{HihhdUAehBBX@@\\ndkmD@DTCRUfWtYV@`e@@\\ndkmD@DdCrIJJIPxUV@bE@@\\ndknB`NaLt@cIIKEEeiUZB@h@@\\ndknD@LCTeYeUTzjBB@@@\\ndknD`Ca@BLddLRRVgUhDHpHZ@\\ndknD`LIPBDiZuYdzzjfh@@\\ndknLPASBBH`HrJPjJKI]ehHB@@\\ndknL`LaA@HrRPjIKY]VdDB@@\\ndmL@@DjYYVgeBHhb@@\\ndmL@@DjYeVdUjjjj@@\\ndmLD@@QIe[VfeVj@B@@\\ndmLD@@yJY~WJeZYijP@\\ndmLH@@RYVuiiV@@@@@@\\ndmLH@@RYVuiiVjjjh@@\\ndmLH@@RYegXYVhH``@@\\ndmLH@@RYiYKnUjjjh@@\\ndmLH@@RYiYKnVjjjh@@\\ndmLH@@RfYUxYVjifh@@\\ndmLH@@RfYUxYVjjjh@@\\ndmLH@@rJJIQEneX@@@@@\\ndmN@@@RYVuiiVj`@`@@\\ndmN@@@ReZ}IiVjjZh@@\\ndmN@@@rQQJKFnFP@@H@@\\ndmN@@@rQQQQVneP@`@@@\\ndmN@`J@HrQQQH{JFZA`J@@\\ndmN@`JADrQQQH{JFZA`J@@\\ndmNH@BAIfUmiEX@@@@@\\ndmN``DkaT@aIefUneVjVjP@\\ndmO@@@SdfVUrjUZ`PH@@\\ndmT@D@dDdLdJdFdAdIdEdLbdLadjjj`@\\ndmT@D@kDdLdJdFdAdIdEdLbdLadjjj`@\\ndmT@p@bBBEbDeYyzjjh@@\\ndmTB@@RiRYyVZje`@\\ndmTB@@SiRYyvZji`@\\ndmTB`HSBCpRjuUZjj`@\\ndmTB`NFU@HReUfjjY`@\\ndmTD@@QIUUUjjj@@\\ndmTD@@QIeUyjjj@@\\ndmTD@@QIgUUjjj@@\\ndmTD@@QImUUjjj@@\\ndmTD@@iJU]Vjjj@@\\ndmTH@@RUUUYjj`aH\\ndmTH@@RUgVYjf`aD\\ndmTH@@RUgVijf`aD\\ndmTH@@RUgVijf`aH\\ndmTH@@RVUWjjj`@\\ndmTH@@RZWvjjj`@\\ndmTH@@rJQEJJjje@@\\ndmUH@JXDiUYjjjh@@\\ndmV@@@RUUUjjj`@\\ndmV@@@ReUUjjj`@\\ndmV@@@RfWYjjj`@\\ndmVD@DAdfUufijh@@\\ndmVD@LA\\\\bRbdUjjj`@\\ndmVL@IAARYW[Zff`@\\ndmWH`DphCpRjyfZjj`@\\ndmt@@LdbRdSjP`jH@@\\ndmt@H@qAdIdEdDfYVfz@`j@@\\ndmt@H@qAdIdEdLbbRadih@Jh@@\\ndmtB@@RUR[e^[fjjZ@@\\ndmtD@@IIf]yn``J`@@\\ndmtD@@QIe]TjZjjh@@\\ndmtD@@QIem\\\\YZ`@`@@\\ndmtD@@QIgYVUZh@@@@\\ndmtD@@QImYVUZX@@Hr@\\ndmtD@@UIfuwaZ@B`@@\\ndmtD@@aJye[ahBB`@@\\ndmtD@@qJ[[VUjh@@@@\\ndmtD@@yJUe^Uj``@@@\\ndmtDPAdHc`aIe]jf`@e`@@\\ndmtD`JTHaIYe_ihHHP@@\\ndmtD`LTHaI[e\\\\Yi`@`@@\\ndmtD`LxLQI[f^Ui``@@@\\ndmtD`NTHaIe]Vf`@j`@@\\ndmtDpDpHb@aXcHiCDeafV@B@@\\ndmtH@@RUfueVZ@@BD`\\ndmtH@@RVUv[j@Bh@@\\ndmtH@@RYYf[ffjj@@\\ndmtH@@RYeZ[hBBh@@\\ndmtH@@RYeeZVfjj@@\\ndmtH@@RYeeZVjjj@@\\ndmtH@@RYeeZZjjj@@\\ndmtH@@RYe~[ffjZ@@\\ndmtH@@Rfuu[j@BXBAP\\ndmtH@@rJJIHhfZZjh@@\\ndmtH@@rJJIJEn`HJ`@@\\ndmtH@@rJQPiXYjjjh@@\\ndmtH@@rJQQHxYjjih@@\\ndmtHpEBHZHfHrJIJHrn`BJP@@\\ndmtL@@PdfueYUj`@@@\\ndmtL@@YTf[gqehHB@@\\ndmtL@@hTef^~e``b@@\\ndmu@`ATIAIe[^n`BNp@@\\ndmuDPHhfBHFHRYf~kjfZj@@\\ndmuDPHhfCDFHRYf~kjfZj@@\\ndmuH@DTDf^Uqej@B@@\\ndmuH@DdDf^UaUj@H@@\\ndmuLAHTDZISdfygQehHB@@\\ndmv@@@RVUv[n@Bh@@\\ndmv@@@RfUWzZjjj@@\\ndmv@@@rQQJEJUjh@@@@\\ndmvD@BADfueYUjjj`@\\ndmvD@DCdf^YyUjB@@@\\ndmvD@NADfVyyUjB@@@\\ndmvD`La@BLddlTReUhB@@@\\ndmvH@BAIVUwaj@B`@@\\ndmvH@EAIeYfnZZjx@@\\ndmvH@HAIffgejjjh@@\\ndmvH@JAJUuTjjjjh@@\\ndmvH@LAIUfVUj`H@@@\\ndmvL@EAFR[f_FV``H@@\\ndmvL@FAIR[ev[fjjZ@@\\ndmwLPHkbYPbAbLbbbfezZfZf@@\\ndndD`LH@aJZ\\\\hjijjj`@\\ndo\\\\B`HRUALrRQIIIHjjjej`@\\ndo\\\\D@@QIe]UUZfjjh@@\\ndo\\\\D@@QIe]UVZfjjh@@\\ndo\\\\D@@SHhdddhbfjjjj@@\\ndo\\\\F@@Savtf^UVYjjjY`@\\ndo\\\\J@@PYWHheDhbdfjYjj@@\\ndo\\\\J@@QiuIe[YoZfifT@@\\ndo\\\\L@@ptimyujjjjj`@\\ndo\\\\L@@rTie]mVjjjj`@\\ndo^@`L@HReuUUZzjjj@@\\ndo^J@JAIW\\\\bbTRTtqZjifh@@\\ndo|B@@RgrJYIQQIGSZZ@`hBL`\\ndo|BHDrwBH`HzHNHrJPqQYIRUe``JX@@\\ndo|D@@QIeUyemvij@`@`h\\ndo|D@@QIe[e~WVjijf`@\\ndo|D@@QIgfUYuvj``h@@\\ndo|D@@QImYeeVvjjjj`@\\ndo|D@@SHhmHbhdk]jjh@@@@\\ndo|D@@qJY]YWmzjjB@@@\\ndo|DpElH`hbXcHhhidbeFFBBJj`@@\\ndo|H@@RV^UviUj`@j`@@\\ndo|H@@RYfV{vF@bJj`@@\\ndo|H`EBHRYWUnjZ@Bij`@@\\ndo}@DDhJs``YBYAY@yByAyCHheEiEYBjfjjjd@@\\ndo~@@@RfUYw~V``hj`@@\\ndo~@@@RfUYw~Vjjjjh@@\\ndo~B@GAEoHheDdhbiMjBBb`@@\\ndo~BpIx[\\\\H``cXcHhheHe]FVBAXi`@@\\ndo~D@AADfUvUwSZf`@h@@\\ndo~D@LALbbTTJTLWVj`@j@@\\ndo~H@DAIVYenEU`Hbj@@\\ndo~L@DA]rJJKIJHhfZjjZj@@\\neFA@HoBJ@\\neFABHiBL@\\neFABPiBL@\\neFACDlRL@\\neFBBHc@@\\neFBBlc@@\\neFHBJ@\\neFHBL@\\neFJBhHh@\\neFJHbHh@\\neF`BL@\\neF`BN@\\neMB@HRZ@\\neMB@Hch@\\neMCAD`aBHu@\\neMFI@bMP@\\neMHAIX@\\neMHAIh@\\neMLRRWhv@\\neM`AId@\\neM`AIh@\\neM`AIx@\\neM`BN`@\\neMhDRV@\\neOB@Hcfh@\\neOHBNZ`@\\neO`BNZ`@\\nfHbd@@\\nfHcp@@\\nfHdP@@\\nfHd`@@\\nfHdp@@\\nf`a@`@@FrJIJQQNKTXuUUTu@@@\\nf`a@`@@HrJIJQJqIN|uUU@@@@@\\nf`a@`D@HQvQSRIIFIIwfjjh@@@@\\nf`aA@@@ILjjjj{sUUUUT@@\\nf`aA@@@ILsKWRpTADUUP@@\\nf`aA@@@YEEDcEEHc^ZZjZj`Pq@\\nf`aA@@@YEEDdTddf\\\\`HJjj@@@\\nf`aA@@@YEEEETddfB`Hbjj@@@\\nf`aA`@@HqdTRTTbUrMYj`j@d@@\\nf`i@A@@AG@cIEEEDedkSdcZ]PA@AE@@@\\nf`i@a@FRAD^bDfUm[WirRkN`BJ@BH@@\\nf`iA@@@ILrmtvQcAV|uUUUUT@@\\nf`iA@@@YEEEEDhdYFTzwf`@``H@@@\\nf`iA@@@YHhedhh]HHUhujjjZjj`@@\\nf`iA@@@YHhhdXdhhHehujjjZjj`@@\\nf`iPB@N^@DYHhhhdldZ\\\\d[Sj@H@Hx@@@\\nf`iQA@B\\\\|@HpDISLzsnRdcN}TaAQUD@@\\nf`q@B@@^BULrjkj\\\\[uPA@D@@@@\\nf`q@`@@^RVYYywbkNXH@BA@@@\\nf`qA`@@B|dsLrozkF\\\\t@P@D@@@\\nf`qA`@@H\\\\drsJkrkF|u@@@P@@@\\nf`qA`@@HidTRbRQbREIwfjZh@D@@\\nf`qPA@AZ@DPBLdRbbbTVJgV}T@PP@@@@\\nf`qPHAHV@cGIF]zDxzt~{HhmEDdThJRmMUUUST@@\\nf`qPQ@INxJw`QA@cHhheHeUDqQgPPKELd@@\\nf`qPaABLEh@Q@HIKIEvnrQJJJIQXj][uPAA@@@@@\\nf`qPb@EZ]xDQdRTRTraTxIVj`@iib@@\\nf`qa@@D@rJJJJIZHjl{sUTEDD@@@\\nf`qa@@D@rJJJJJFHjl{sULEDD@@@\\nf`qp@@@Hpds\\\\rj~gV|uP@@@@@@\\nf`y@@@LdbbbbbfkEBMIuo@@@@@@@@@\\nf`~@@@DiUUUUjjjjj@@\\nf`~@H@@Hdhug^rJZJIQJFMUTts@@@\\nf`~@P@@Ht[HhdhbeLhuUUMT@@\\nf`~@P@@HuYIe]UVvijjfP@@\\nf`~@`@@BrQQIIQSVUUUUU@@@\\nf`~@`@@HRYuUUUjjjjh@@\\nf`~@`@@HR[UUUUjjjjh@@\\nf`~A@@@YEDeEDcEJjjjj`@@\\nf`~Ab@@Dhb`rQJJIEJJUUUUU@@@\\nf`~Ab@@TXb`RfYwf^jjjjh@@\\nf`~aK@JPQaVcV]xG`KpexYIIUDeHiFjjff`@@\\nf`~a`BH@QbDxyIgUUUVjjjj`@@\\nf`~ab@IPQ`G`eUnoLsUUUUP@@\\nfbe@B@@QBSLjojjheUAAEUUP@@\\nfbeAP@@Hu[rSKJkK~lcMPPTUUP@@\\nfbea`@D@XgHhhdddcDedFKUUUP@T@@@\\nfbm@A@@IdIAJkfYUU|tWICfj@@@@@@@@\\nfbmAB@H@SDjnYeUWsQ\\\\dNZh@@@@@@@@\\nfbmAB@H@SDjnYeUWsQ\\\\dNZhJhJhhh@@\\nfbmAB@H@SDjnYeUWsQ\\\\dNZjjjjjjh@@\\nfbmA`@@HsdTRfbTbtjRejshiZjjj`@j@@@\\nfbmPa@LN``@QhHrRPqPiSISIJL{r\\\\kU@DT@A@@@\\nfbmp@@@XXeL\\x7FLjsobe`iruUPP@@P@@@\\nfbu@AP@QAHadPJHeDZbGQ@XaLQfHrJJJ[PrZJ[TyzMLuUULuP@@\\nfbu`q@OPQbJ\\\\`B@aFRRVIJYJYZPTcVV`@@Je`@@\\nfbua@@M@rJQEJKJJIKNBgMUUSTBA@HR`\\nfby@`@@HRYuUUUUZjjjjj`@@\\nfby@`@@HR[UUUUUZjjffj`HTv`\\nfby@`@@HR[UUUUUZjjfjj`PT`\\nfby@`@@HR[UUUUUZjjjjj`@@\\nfbyAb@HHpCpRkUYeU}Zjjjjj`@@\\nfbyP`@LR@aIemUUUujjjjjj@@\\nfbya@@D@rJJIIIHiIIMUUUUUP@@\\nfbya`@D@UkHhhdddbddduUUUUU@@@\\nfb}@P@@H]gHheDheEeD\\\\jugQRgKUUUUUUU@@@\\nfb}AA@K@qLxbSLl|}z{ARtYtTp@@QL@P@@@\\nfde@@`@QAHa`QhHrJJJZIKPi\\\\EjpXpQAU@@P@@\\nfde@`@@HrIJQQZQXiRljw`mUUUUUT@@\\nfde@``ARADDb@qDXaIf]UUUYqVg^``Jh@h@@@\\nfdeP`@DNA[HhhhlmMCDRbc^BuPPPuTP@@\\nfdea@@H`rQQQIRIZHbmHq`tEAUETT@@\\nfdi@`@@BrQQIJHyII\\\\UPPTUUP@@\\nfdi@`@@HRYUUUUPqZjjjjj@@\\nfdi@`D@HQrS\\\\jjrnFKUTuA@@H\\\\`\\nfdiA@@@ILjjjjhXmUUUUT`aE@\\nfdiA`@@BCdbbRTTbWTxjjjjjjh@@\\nfdiA`@@HLdrjjjjabuUUUUT@@\\nfdiA`@@H\\\\drjjjjabuUUUUT@@\\nfdiP`@DVAGHdiEBeCHbkRuP@UR`@@\\nfdiXpCHLDXLPHUiwhRcfRJ]]{lbfbbbbbblkMADMCT@@@\\nfdi``DF@Pcdfye_UTRf``ajj@PU@\\nfdia@@D@RYguUURLZjjjjj@@\\nfdiaB@JDAbYEEEIkHhT`qjZjj@@@@\\nfdiaPBH@QYwhRclbfbbRLTTpiM@PKLt@@@\\nfdq@P@@H]yIeWUUmZjjjfh@@\\nfdq@`@@HRYWUUUVijjjj@@\\nfdq@`@@HR[UUUUVjjjjj@@\\nfdqAa@HRTALhDYIHddiDeTjjjVjj@@\\nfdq`@@@ITnjjjmUUUUU@@@\\nfduA@@@ILsLjm{AJ\\\\XOhm@@@@A@@@@\\nfdy@`@@XrQQSPzIKJXiYuUUP@UP@@\\nfdyA@@@IKLjoSWAF|pDEUUQ@@@\\nfdyA@`I@bBQGhbLQdTTVVfbRaYqpXHBh@b@@@\\nfdyAB`M@qBXcLPVHkDRYf{}e^RCFBHbh@@@@\\nfdyAP@@BUhNQQQQQQDqIdgAZYjZZj`@@\\nfdyAP@@BtFNQQQQQJKGISk^Z@HH@h@@@\\nfdyA`@@BudbbRTQrbRxhLZBBb`@@@@\\nfdyAb@FAb@HrQQJVIKJJDihuRl@ESP@@\\nfdyPPBHZ@aShRcdfyVyuwdmFZ@HZfh`@@\\nfdyP`@KN@cHihdliEDcpPXm@AUMTP@@\\nfdy`R@KPQcp@cIIKDeLeBdJQgKP@@QT@@@\\nfdy``@A@Pdrrr\\x7FZjLFKTEA@@@@@\\nfdya@@D@rJJIIHiQIBTFKUUUP@P@@\\nfdya@@D@rJJJIGIQIRTFKUUUP@P@@\\nfgA@B@@XbSLrjyFRMjuP@@A@@@\\nfgAP@B@BAHirRJIJHkLUpQkAPP@A@@@\\nfha@B@@IbURjjjmUUUUT@@\\nfha@P@@HiKHhmDeDTdfjjZjh@@\\nfha@R@HHehBYddbRRbbSUUULuT@@\\nfha@R@HHpPG`eUjjsLuUUUU@@@\\nfha@`@@HrJYQZQHiQjjjZZ@@\\nfha@p@@HhkQdfV^yuVijVjhDAP\\nfhaAP@@HEirSJwkO[TuUTr@@\\nfhaAp@@HYqV`iLkWl{mSUSSP@@\\nfhaAr@HHpSQk@|DjmUUUVjjjjh@@\\nfha`@@@IRlrj~uUUUUP@@\\nfha`B@B@bDeUUUUYjjjjhDHP\\nfhah@@@\\\\ExJTjjjjmUUUUT@@\\nfhi@R@NJmx@QdbbbbTVadgFCPAAAD@@@\\nfhi@a@AFADAbDfUmygZL]z@BhHB@@@\\nfhi@a@OAADBBLbTTRbfQtyiUj@B@bX@@@\\nfhi@b@HH@DYIHXhhddSiuoKP@P@P@@@\\nfhi@c@BFADRb@qFQQQIIPq[LD{tDDPPD@@@\\nfhiA@@@ISLwZkf|xMUP@@@@@@\\nfhiA@@@YEEDhdcLeKW`m@dP@@@aR@\\nfhiAP@@PIqRTmMJ{yoNCUUUUUT@@\\nfhiA`@@HBdwLl|zKSoMA@@PP@@@\\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\\nfhiP@@@ArJJIEJIJYgKN`HJ@B`@@\\nfhiPA@B\\\\@DXBDif]YybTdZiBBbj`@@\\nfhiPC@IF@|PBDAFRIJJJIQXz|xMT@PP@@@@\\nfhiQ`BHL@`LIQrS\\\\roZxeN|tDD@A@@@\\nfhiQaBOAQbpHb@QzP}dTabbTVeTmF]K@QBrd@@\\nfhi`@@@ISLwZkf|xMUP@@@@@@\\nfhia@BH@AtIRYeV]WEjwjP`@BH@PP`\\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\\nfhqA@@@ILkKjj~BuUUUUP@@\\nfhqA@@@YEEDhbdddsdAAUUT@@@\\nfhqP`@DD@YIeYU_UQfjjjjj@@\\nfhqh`@NFmxHJYHihhdkLhIUADQML@@@\\nfhyA@@@YHiMEiEbdHtcN}UUUUUU@@@\\nfhyA`@@BMdTTTTTTVoMJ|xKPAAPA@@@\\nfhyq@@B\\\\DAIfV]UudeZ|FBBaZeJ@@\\nfle@`@@LRfVVW]|QgAhJ@HBF@D@p\\nfleA@@@ILwJkttJU`m@PUUUD@@\\nfleA`@@HbdssLjoyoNBuT@@@T@@@\\nfleP`@DA@eIVUue]^B]yX@J@BT@@@\\nfleP`@DA@eIVUue]^B]yZjjjjV`@@\\nflea@@D@RYeUmU|RgAZjjBBJ`@@\\nfleac@FV|DD`RPEHYEEEMDbeierVcPQDTluD@@\\nfleiR@AZlFLDXhdGaddeRRbbRtQk^BuUURmSP@@\\nfli@@@LdbVRRbbjTjjjjjj@@\\nfli@RBKN|DBX{`|eTjjkLmUUUSMP@@\\nfli@`@@HrJIJHiIIIIjjjjjh@@\\nfli@`@@HrJKRIEJKIQjjZZihDEH\\nfliAb@@Dhb`ReeUU]Vjjjjjh@@\\nfli`@@@IJjjjjkUUUUUT@@\\nfli`@@@IJjjjjkuUUUUT@@\\nflmA@@@YEEEEDeDTbrRgF}EKPLQTKTR@@\\nflmAB@K@qDfYYy{uXJVcNbf@@BI`@@@@\\nflu@B@@^BULsJjozCZOdu@@@@@@@@@\\nflu@B@LTBUJssZktDzHTaAP@@@@@@@\\nflu@`@@HrJKRJKRKEISmNCEjjjjjjh@@\\nfluP@@@ArQQQQII[ERdmNmxH@@@Bh@@@\\nfluh`@DXUipAYEEEELTdedrVcN|uUMSURt@@\\nfluqB@AJMDFHdrmrlzmNZ\\\\EL@PuA@a@@@\\nfly@PB@HbeGI{HiiBddddeBTZjjjjf`@@\\nfly@`@@XrQQISHqIYQwjjjh@J`@@\\nflyAP@@DExNQQQPkIIJYTXtuMUSU@@@\\nflyPa@L^bdDQjHrIJJIIHiSQQjjBBJi`@@\\nfly`P`LHEIpH`LaFPSHYEMEEDlbeIjtu@pQUP@@\\nflya@@D@rJJIIIHiIIVfjjjjjh@@\\nflya@@H@RV[WUUTTih@Jjj`DHH\\nflyaR@IBlzJPUfQQIYSJJHjTY@AMTuL@@@\\nfoA@@@LdbbQbRbDkQfjijjh@@\\nfoA@@@LdfbTrbUipufjjjfhDCH\\nfoA@P@@Ht[HheMEEEQJeYjjjZi@@\\nfoA@R@HHqp@QddebbfRtmV\\\\mA@@@@@@\\nfoA@`@@NrQQQIISDVeVh@@BH@@@\\nfoA@`@@VRfUYu^JLz``@B@@@\\nfoA@`@@\\\\RVUoeVBly`BH@@@@\\nfoA@b@KN@DISLjohmJMP@@AP@@@\\nfoAA@@@IRlrjzkF]U@@@@@@@\\nfoAI@BDDXhCIUNQQQSQIHdyYsURE@P@@\\nfoAP@@@NRYWVUzLMZ@B`@`@@\\nfoAP@@@NRYWVUzLMZjjjjj@@\\nfoAPPBHZ@aShRcdfyVywdmFZ@HZd`@@\\nfoAQC@DL\\\\BHiDVbLbbTTJRtYqVhB@@i@@@\\nfoA`P@L@IrRRllrkhugLuSMThHHP\\nfoA``@D@ydTRbTLRIFFluR`PT@@@\\nfoA``@L@QdTVbbbblmV\\\\u@A@@@@@\\nfoA`b@LTX@HRe{VYSVlznZjjZ@@\\nfoAa@@A@RfuueV\\\\lz`@jjb@@\\nfoAab@KPQ`@QddebRfR`iF\\\\m@@A@@@@\\nfoAab@NPQ`@QddebbfRtmV\\\\mA@@@@@@\\nfoAqB@JLDPDQdTTTtlRWAV]RuT@B@@@\\nfoQ@@@LdbTrdrLYs`cVZjjjjh@@\\nfoQ@`@@HRYVvvQRuXsfiZjjY@@\\nfoQ@`@@HrJIQJKPjReFlyjjjij`@@\\nfoQ`@@@YHhhheDbKTkF]P@PPD@@@\\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@@\\ngC`D@DPHRfh@\\ngC`DADZHRVXRP\\ngC`DADZHRVh@\\ngC`H@DIKT@@\\ngC`HADIKLIH\\ngC`HADIKR@@\\ngC``@dfZ@@\\ngC``AdeY@@\\ngC``Adej@@\\ngCa@@dkH@\\ngCa@@dkP@\\ngCa@@dmH@\\ngCa@@dmP@\\ngCa@@dsP@\\ngCa@@duP@\\ngCaHH@bNt@@\\ngCaHL@aIZ`@\\ngCaHLHaIZ`@\\ngCah@mJAIj`@\\ngCd@Adej@@\\ngCe@E`dsP@\\ngCh@@dmH@\\ngCh@@dmP@\\ngCh@@doH@\\ngCh@@doP@\\ngCh@@duP@\\ngChHD@aIU`@\\ngChHLHaIZp@\\ngCh`LDdsP@\\ngCi@DDeV@@\\ngCi@DDeZ@@\\ngCi@LDej@@\\ngFp@DiTt@@@\\ngFp@DiTvjh@\\ngFpHADILimSP@\\ngFpL@DXHHPeJfuU@@\\ngFp`@dfTujh@\\ngFp`@df_Ejh@\\ngFp`AdigVjh@\\ngFq@@drfmU@@\\ngFq@@drftm@@\\ngFq@@drfuM@@\\ngFq@@eLzts@@\\ngFq@@eLzuU@@\\ngFqHJ@aJUMjj@@\\ngFt@ATiTvjh@\\ngFtHE`DILikUP@\\ngFx@@eJf`@@@\\ngFx@@eJfuU@@\\ngFy@JDiTvjh@\\ngFy@LDiWFjh@\\ngGP@DiVV`iJ@\\ngGP@DiVj`@\\ngGPBADJPtaXcHiCUP@\\ngGPD@DPHReZj@@\\ngGPDADFHRYjY@@\\ngGPLADFHlPdrsTID\\ngGPLADFHlPdruT@@\\ngGPLAbGDlPdruT@@\\ngGPP@cTfyi`@\\ngGP`@TfYi`@\\ngGP`@TfYj`@\\ngGP`@dfUjP@\\ngGP`@dfUj`@\\ngGP`@df]jP@\\ngGP`@dfuiaM@\\ngGP`@dfuj`@\\ngGP`@dfyj`@\\ngGP`ADkjj`@\\ngGP`ATeVj`@\\ngGP`ATeej`@\\ngGP`ATf^j`@\\ngGP`ATiVj`@\\ngGPhH`DYIHUi@@\\ngGPhMQDIK]U@@\\ngGPlEaDPHlQdTaeh@\\ngGQ@@djuT@@\\ngGQ@@dkUT@@\\ngGQ@@dlmT@@\\ngGQ@@drmT@@\\ngGQ@@druT@@\\ngGQ@@dsML@@\\ngGQ@@dsMT@@\\ngGQ@@dtuR@@\\ngGQ@@eJttHh\\ngGQDBHbqBSKTp@\\ngGQDJH`qBSKUP@\\ngGQDJLPxbSKUP@\\ngGQDLHbqBRwSP@\\ngGQDLHbqBRwUP@\\ngGQHDHaInfh@\\ngGQHJ@aJUjh@\\ngGQHJHaIUjh@\\ngGQLJIARFdLbdMU@@\\ngGQ`@bdwMT@@\\ngGQ`@jdsmR@@\\ngGQdEb@bRFRRVV`@\\ngGQh@ZjAJVjh@\\ngGT@Ade[j`@\\ngGT`EPTfyi`@\\ngGX@@dj|tHd\\ngGX@@dkUT@@\\ngGX@@dk]L@@\\ngGX@@dtuV@@\\ngGX@@eNuT@@\\ngGXHD@aIUVd@\\ngGX`hEIWIMkU@@\\ngGXhhZ@bS^Rmjf@@\\ngGY@BDeVj`@\\ngGY@DDeUZP@\\ngGY@DDfYj`@\\ngGY@HDefZaH`\\ngJP@DknX@\\ngJPDADFHRYj`@\\ngJPDADFHR[f`@\\ngJPH@DIJuP@\\ngJPH@DIKUP@\\ngJPH@DIRuP@\\ngJPHADILth@\\ngJPXHlPDQzt@@\\ngJPXHlPiQzt@@\\ngJP`@TeZh@\\ngJP`@TfVd@\\ngJP`@TfZh@\\ngJP`@deVd@\\ngJP`@deVh@\\ngJP`@dfVh@\\ngJP`@dfvd@\\ngJP`@dfvh@\\ngJP`Adizh@\\ngJPdEaDPHRZe`@\\ngJQ@@djsBJ@\\ngJQ@@dkU@@\\ngJQ@@dls@@\\ngJQ@@dlu@@\\ngJQ@@dmS@@\\ngJQ@@drt`@\\ngJQ@@dru@@\\ngJQ@@dsT`@\\ngJQ@@duU@@\\ngJQ@@eKS@@\\ngJQ@@eKU@@\\ngJQHBHaIfj@@\\ngJQHBHaInZ@@\\ngJQ`@bdvu@@\\ngJQhHlOAJmj@@\\ngJT@@TeZh@\\ngJT@@Te^l@\\ngJT`E`TfVh@\\ngJU@HPdkU@@\\ngJX@@dkU@@\\ngJX@@dkt`@\\ngJX@@dku@@\\ngJX@@dms@@\\ngJX@@dmu@@\\ngJX@@eKU@@\\ngJX`LDdru@@\\ngJY@BDeZh@\\ngJY@BDeZl@\\ngJY@BDizh@\\ngJY@DDefh@\\ngJY@DDfvd@\\ngJY@LDeZh@\\ngJYHCabIKTp@\\ngJYhCE`DQzt@@\\ngKP`Adi\\\\Zj@@\\ngKX@@eKcUP@\\ngK\\\\@ABeKcMH@\\ngNpB@DSppPPaJ[Zj`@\\ngNpJAbJHLaYArBS]UU@@\\ngNpLADXH\\\\PdjmUP@\\ngNpP@jtfvZf@@\\ngNp`@TfYZZ@@\\ngNp`@dfUZe@@\\ngNp`@dfUZf@@\\ngNp`@dfUZi@@\\ngNp`@dfUZj@@\\ngNp`@dfWZfDL@\\ngNp`@dfWZj@@\\ngNp`@df]Zj@@\\ngNp`@df^Zf@@\\ngNp`@df^Zj@@\\ngNp`@dfvZj@@\\ngNp`@tf]jj@@\\ngNp`@|bdQjj@@\\ngNp`ATf^jj@@\\ngNp`ATiUjj@@\\ngNp`ATiVjj@@\\ngNphDqDYEHcUR@@\\ngNphH`DYIHTmJ@@\\ngNphJpDIRkUT@@\\ngNphJqDIKMTl@@\\ngNq@@dlkUP@\\ngNq@@dl}MPb`\\ngNq@@dr{Vpa`\\ngNq@@dr}Vpa`\\ngNq@@dsKSP@\\ngNq@@eLuUP@\\ngNq@AdTbMTpa`\\ngNq`@fdskUP@\\ngNq`@jdrkUP@\\ngNq`@jdssTp@\\ngNq`AVeJmUP@\\ngNq`AbeMmUP@\\ngNqhAbjAJyZj`@\\ngNr`ijpiJyImfi`@\\ngNt@@TeVzj@@\\ngNt@@|dbJjj@@\\ngNx@@djmUP@\\ngNx@@dsuUP@\\ngNx@@eJmTh@\\ngNx@@eJmUP@\\ngNx@@eRmUP@\\ngNx@AddQUUP@\\ngNxDHHaQBS]UU@@\\ngNx`DFdskUP@\\ngNx`LFdjmUP@\\ngNy@BDf^jj@@\\ngNy@DDfYZi@@\\ngNy@FDeYjg@@\\ngNyHJPDIJwTt@@\\ngOp@DjWkB@@@\\ngOp@DjWkjj`@\\ngOpH@DILkW@@@@\\ngOp`@dfUMZj`@\\ngOp`@tiguif`@\\ngOp`@tigujj`@\\ngOp`ATeekZj`@\\ngOq@@drm[ST@@\\ngOq@@drm[UT@@\\ngOq@@drm\\\\@@@@\\ngOq@@drm]UT@@\\ngOq@@eLnmLt@@\\ngOq@@eMN]UT@@\\ngOq`@ldrikUT@@\\ngOqhHl@cIIBjujh@\\ngOt@@tjWkjj`@\\ngOt@ATiUkjj`@\\ngOtLHPDXHhPeLq]UL@@\\ngOx@@drm\\\\@@@@\\ngOx@@drm]UT@@\\ngOx@@eJqh@P@@\\ngOx@@eJyh@P@@\\ngOx@@eLmXD@@@\\ngOy@DDfYKZj`@\\ngOy@JDiWMjj`@\\ngOyDEQDDHRYXnZZ@@\\ngOyDLpDHHRY\\\\ujf@@\\ngO|HDVHaIeZx@@@';\nTrb.OE='fHfXAa@\\nfJ@FD\\neOHBNZ`pge@\\neFhHba@\\ngFy@DDfXujhB\\neFHBJFE@\\ngFt@ATiTvjhCAbKF`\\ngChHLHaIZ`H\\neMhHchLJyH\\neFB@JcAaGJ@\\ngGPH@EIJmU@P\\ngGPHAbIJmU@XTQX|e@\\neMBBlRZCAKd`\\neMABHXaIhH\\ngJPDADXHRUj`LBHmrD\\ngJQhHl@bOV`LH^S@\\neMHAIdLF^P\\ngCa@@dkHFBVyH\\ngC`HABQz`H\\ngCaDL@b^BTt`P\\neMJDbDfP`\\ngC`D@DXHRUdB\\ngGQhHl@cIHTmPFBMy@\\ngJXHD@aIUj@pHVOI@\\ngGX@@eMUTA`Uc^P@\\ngChDL@aABSM@XHKdp\\ngOx@@drm\\\\@@A`plZp\\ngJX`BDdru@P\\neMC@thabHzB\\ndaDD@@QInXjZjh@`\\ndid@@LdbLTifjj`B\\ndeTH@@RUYTYY`@@aKChSFxYyE@\\ndaD@P@bNbDfUzZ@B@C@`pnxbT\\ndeTHPBBHfHrJJIHlLDDP@P\\ndaD@`@bDeeVz`@@B\\ngFp`@TizJjhCCSGbU@\\ndidD@@yIYVXV@H@CBhpf{dB\\neFJHbHpP\\ngO|@AFeVm]UTAaUcWrP\\ngOy@FDiguie`LMj~ID\\ndaD@`@bDfUjZ@B@CB`SJ{dL\\ndifH@DAInUxV`@@CBdinGdD\\ndaEH@HpDeeVz`@@B\\ndeVD@AADfVuFVijh@phj[iy@`\\ndifH@HAIYexZ@`@B\\ndifH@JAJ[gxZB@@CBdJf{dB\\ndifH@HAIYW[j@B@B\\ngOx@@drm\\\\@@A`Qj~ID\\ngOr@Ajti]qZY`H\\ngF|@AbeJfuU@P\\ndmN@@@rJJIQEneX@@@@B\\ngJX`DBdru@XKGdP\\ndid@`@qDeYWaf@@BH\\\\NABinGdP\\ndifD@H@Tee]nh@H@H\\ndeVD@LBTeegXV@HP@`\\ndaF@@@RYWih@H@LJCBknP`\\ndie@@@aJyV[f@B@B\\ngGY@JDeUjpLDmrP\\ngFt@AdigUjXCAF|Rp\\neMBBHRZCAGe@\\ngC`HADIKTAa`mrP\\nfHcdA@\\ngJX`HLdmU@P\\ndaz`@@SFyIeYjf@LJAL[nQP\\ngNtDLpDHHR[UjhB\\ndiTH@@RgeXSaj@B@CAhJfx^P`\\ndew@@@pldTTJVTLmP@P@XUaMt|`P\\ndiUH@HPDiUWBxZVeh@`\\ngNq`AVdlmUPFEfM_DD\\ndaxL@@[deiZjh@pXHpf{dT\\ngCaHLLQIZ`LLInQ@\\ndedBPLinCDKpRUZvjZh@`\\ngNplLPDSpPPdukUPFFE_H`\\ngJPL@DSpPPdju@XXK\\\\TH\\ndiDDpLH@bOA@aIiUZjh@`\\neMIDBKpRYCqH\\neMXIDf``\\ngG]@DZDfuiPLEkrH\\ngGY@JDf]j`LLl^R`\\ngJX@@dlu@XZX|PP\\ngNxHF@aJZzjPH\\ndazD@LADeUffhHr`\\ngGQHJLQIUjdCCBKbq@\\ndaxD@@QIgUjj@LBrf{dD\\ngNy@BDf]jj@phbuxbp\\neMXIDfP`\\ndiGL@DK`hTfV^ii`B\\ndmvD@E@dfYwVzB@j@C@PpjxYT\\ndmvL`BaL@HrRRjIJUVjjh@`\\ndaFH@NAIeVf`@`@phLInyB@\\ndiGD@JxPQIeUZfX@`\\ngCi@DDej@ppfyD\\ngCa@@dsPFBV@\\ngCd@Adej@ppVyH\\ndiFD`Li`BDenvjZ`CA`aLxP\\neMC@HoABDe`pQyP\\ndiDDpLH@bOA@aIkUZjh@`\\nfHdpAa@\\nfHa@A@\\ngFy@JDigVjhCCSGbU@\\ndaF@`L@HRe]pjjj@LFBDJfyG@\\ngChHL@aJZ`LLHnS@\\ndaFD@DCdfVRiji`CCDinQ`\\ndaGH@DK`R[e[fii@LLPfyE@\\ngOtHLPDYHhckSM@XXI|a@\\ngNqhHl@cIICej`H\\ngNphJqDIJmSLHf\\ngJQ@@dju@XZK\\\\a@\\neMABHYAIhH\\ngJP`@TeVhCAQ\\\\VH\\ngCahHlOBNtAaAqK@\\ngGQDLHbqBRwUPFEDQoI`\\ngJT@ADjzhCAQ\\\\VH\\ndazL@BANR[UZj`CBdrf{dD\\ngJX`LHe[U@P\\ngNx`LDdssUPFFq_IP\\ndaz@@@ReUjj`CC`aLJnyC@\\ngNx`LFdjmUPFCDQkyL\\ngChHHOAIj`H\\ndeUH@JdDin]xZB@`@`\\ndieH@BDDfY}n``H@LJpjX^P@\\ndaE@@@yIe^f`@`@pHLKnHe@\\ngOq@@dlvKUTAaeWqP`\\ndid@p@bBbAbDfYun``H@H\\ngOy@FDiguie`LMc^IL\\ndaDh@DInAIf]nZiX@p`nIe@\\ndigH`LH^@HRf_ljfYh@`\\ndie@@@EJ[W[j@B@CBlJfGb@`\\ndaFH@NAIe^f`@`@pILknHA@\\ndieH@BDDfY}n``H@LBpj[b@H\\ndeUD`JXiCDrJJJXlMKUL@P\\ndaED`LJDCpRjw[fjj@LLinxfD\\ndaDH@@RYUih@H@LBCB{bHp\\ndaDH@@RVU[f@@@LB`j[bYp\\ndmuD@FDDR[f[eV`b@@H\\ndaDD@@yIe^fZVX@pSJxbD\\ndcN@`LCDRUgeUvjh@@@`\\ndk^@@@RYWYVftx@H@@@H\\ngO|HEfHaIeZx@@B\\ndeT`@@pjrQQIFTpDEP@P\\ndif`@@pj[IEEEZxBH`@pPfy@`\\ndid@p@bFbAbDfUfn`BH@H\\ndaF@@@RYUih@H@LBCB{bHp\\ndmuD@JDBRY^YEZjif@H\\ndifH@AAJY}rjY[`bf\\ndaE@@@yIe^f`@`@pKBknHB@\\ndaxD@@QIeejZ@LLJfyG@\\ngC`HAbIMLA``nS@\\ngJQHH@aJmj@ppQyL\\ndaxL`HS@|Dj}fjX@`\\nded@@DiUWeiZCHTZ\\\\IBDpjXYyG@\\ngGU@CPdsmJA`e^S@\\ndeU@@@aJWeQfZ@@BHlNSJ[agdP\\ndmu@pFTH`h`XaIf[oi`bH`@`\\neMPBchLF^P\\ngGU@DPdrmTAaecrT\\ngN}@DZDfVZj@prqxjp\\ngGUHEhOAJmZhCAF|pV@\\ndmND@DBdfV]RZUZf@@@LBSagdJ\\ndev@@@RfV^nFP@@@@LFPj[ayD`\\ndcnH@HCHhheEbprl@@A@@P\\ngFu@LPeLftu@XYF|f@\\ndiT`@@rnRfUjEnBA``B\\ndmLD@@IJ]YVDeZj@B@B\\ndcnH@DAIYegzUujAHH@H\\ndmL@@DjYUVGi@@@`@LNpjxYWdH\\ndcn@`N@HRYeevz]`@@`@B\\ndcn`@@rfeJY{]kadHHZR@H\\ndevH`LX@aJWY\\\\HYiZZd@`\\ngC`HADIKTAaaMrH\\ngNpDADXHRV^jhB\\ngJPXHlPDQztAxlP\\ngNqHLHaIYzj`H\\ngGQDJH`qBSKMPdX\\ngNq`@jdvsTpFBsyD\\ngGQHJHaIYfdRL\\ndaFH@NAIe^f`@`@pXDpjx\\neMaDBKpRVB\\ngOx@@eJqmUTA`xlZ~P@\\neFA@H`bLFE\\\\`\\ngKP@Di\\\\YZ@phbq@\\ngJPhIaxIVmPFDODD\\ndcLL`NWPbDfUuZf`@jX@LNALJat\\ngN|HEb@aIevj`H\\ndaE@@@aJyUnx@@@`\\ngJQ`@bdru@XS\\\\a@\\ndayL@DhByIeuji@LBSBkdL\\ngJY@DDfzhCCSGbB@\\ndmVD@JADf^Uvjjh@`\\ngJXdIbHaABRuJA@\\ndiDDPNDHc@aIUVfjXHb`\\ndefHPFDHc@aIUUiji`bJ\\ndiEL@DpByIf^ZjX@`\\ngNy`LETeUZZDs@\\ngNx`BFdskUHFBVxcP\\ndmLH@@Rge]aNFh@J`@`\\ndeT@@DjU_k``b`@pFDpjXYyG@\\ndmNH`Jd@aJYW_JxZA@j@CB`IaWdH\\ndmM@@@[IEDhhZXU@@B@@H\\nfHdxA@\\neM`AIxLI@\\ndeVD@DCDenUFVh@@@pZLinGdR\\ndeVD@D@dfVuFVh@@@`\\ndif@@@RfU~F``@@pYLJf{b@H\\ngOx`FDdrikUTA@\\ndeVH@IAJYW~F``H@LFSBinyD`\\ndig@@@aDiyWaZ@@B@h\\ndco@`LK`BLdTTRRITntpTA@Pe@\\ngOx@@drm\\\\@@A`Pl~Ht\\ndaE@`LH@aIYZfijd@`\\ngOu@LPeLimMTHf\\ngJP`@dfvhCCKD\\ngKP@Di\\\\Vi@pLVOH@\\ndiVH@BAIfUInFjjZ@H\\ngOpH@EILkW@@@P\\ngJPDADFHRYj`LBHcrX\\ngJPHAbIKUPFBDyeb\\ngNthLXaxYIHTuTA@\\ngNxdMVLP~BRkUS@P\\ngCd@AH}PFBVyH\\ngCd@ADkV@pdxe`\\ngGU@MPdllrA@\\ngJPLADHHLPdwSBJ`\\ndeVH@IAIe]ZZ@Bh@LAALJnFP\\ndidD@@iJ[gxZB@@CBdJnGdL\\ndaFD@FCdig|jfV`bf\\ndaE@@@YIeZn`B@@piLiny@@\\ndaEH`Dq`BDfUjyjfPC@`SNyE@\\ndieH`Dq`BDfUfnZii@H\\ndaFH@BAIf]n``@@phLJfyG@\\ngFxhMD@cIHXZmTA`c^P@\\ndaFH@BAIf]n``@@phLInyE@\\ndifD@N@TfUvfZVZ@H\\ndeTL`HS@BLddlRPrm@@@FEYS\\\\OHd\\ndmtLPHS@BEBLddlRVFUh@H@H\\neMPBchLD^T\\ngJPDADFHRYfaIXXH|f@\\ndkOL@Dhpg\\\\bbTTLVZjjj@H\\ndcLL@@gTfYe]aZYjf@H\\ngNp`@df]Zi@pvMyF\\ndmtHPBBHfHRYeUXXHHh@LFCJxYyB`\\ndaE@`LX@aIYZfjZd@`\\ngGTHE`DILkU@XDKWdH\\ndeWD@Li`QImenEjZi@H\\ndcOH@DWPRYyWQej@BP@`\\ndg}@@@mJYeU|]Tz@@@H@B\\ndcND@LADf^YZUZ`HH@H\\ndcnH`FDHaIe[gkev@@`@@H\\neMbDBDfp|`\\ndcMD@DpBRYgmUujh@@@`\\ndmuh@DJaePRUeYxZ`@h@H\\ndcNd@DJadMrIJIJE\\\\MP@U@A@\\ngChHH@aJz`LDEqS@\\ndeVH`BDHaIf]vzB@h@H\\ndeU@@@eIYVvG`BL@H\\ndcM@pEtIAICICHiCDedLuP@R@D\\ndkmH@JTDeVVutvjh@@@`\\ndmw@`Ds`BDf^YyUjB@@B\\ngGYHMQHIJmT`XJKbq@\\neFhHcA`d\\nfoA@R@HHqH@QddebRbrPeV\\\\m@D@@@A@\\nfoA@R@HHqp@QddebbrRTeV\\\\mA@@@@A@\\nfoA@R@HHpx@QddebRfRpiFlm@@@P@A`sEFBT{bMF@\\ndaE@@@yIe^f`@`@pILJnHG@\\ndmuD`LVD@HrREQIXYV`@`@`\\nf`i@@@LdbbbTRVHeZ][uHAD@D@@P\\nf`i@@@LdbbRRlRSI\\\\D{qAHT@D@@XJpRgIZMYwnHPH\\neMCBthabHzB\\ndk\\\\H@@RfU}WJxZA@fXBIh\\nf`iQ@@AR@drnrjmFJt{t@Du@@@@XR@cAJRM[wHN@\\ndmM@@@qJY{WJeVj@B@CCdrfzUy@`\\nffc@H@@\\\\eYtRurJJIQPpjYQYLxkR\\\\m@qAUUUQ@A@\\nfmo@H@@B}GKYkrJJJJJIY[EQJKIbmNlGhv`BH@Rjjj``@`\\ndk|@@LdbbbRQKauS`@`@`@H\\ndcND`La@BLddJTrRzmT@@@XMaMpkqIt\\nfc\\x7F@H@@\\\\ddoU{rJJIQQXsIYJIQYLxhpXcftCDP@EUUUA@A@\\nfewAP@@Fbt^QQJJJIRI[RKYr`mA}eMVfjjjjjjjj@B\\nfheP`@BJ@GHhhdhlhiVRxHuc^ZejjjYh@LNXIsQk^yAp\\ndcmH@EtDie_[JxZA@f`@`\\nfhy`a@APP@HtDYICDeLeLerVc^Bl@QP@D@A@\\nfoQP@@@VRfYe]Z\\\\d[S`@@@H@@CCaFBUhsnHyX\\ndco@@@PTfyVwiWV`BJD@`\\ndig@@@aDkYWaZ@@@LJPj[nI@`\\nfbmA``BLbCDubNqLxfQQQQJYRqZGdeVBfZfi``bX@B\\ndg|L`HS@BLddlTRbLj]kP@@@@FGXpsiwrE@\\nflm`@@@ITssJjnsdk^RFHP@@@@@@@D\\nf`i@`@@DRYfyU]`mNmyi`@@B@@LN\\\\dhug^yCP\\ndk\\\\B@@zSrJJIQPenWV`X`h@LLFUyfLX\\nedZPK@@@FAEG@dnaec`X\\\\bbbbbbIbRbTrbJffW@fefUUssPSDQUUUUUUTT@A@\\ndmvL`NaL@HrRRqQZUV``@@`\\nfa{@a@K]@DNdLdTtbRLRbLfVuAJtFMVuUUUUURsU@AaxAJLxJRcVBgIZ|QA@\\nfew@c@OS@DXB@rFRJQZQYFIQFSK[bcVSghzjjjjjjefj@B\\nffsA`@@VkdTRTtRabrTRhqQoARUijjijjjj@CArLTxJRcN}GIZ|`d\\nfa{@P@@VkwHhdiheCEdheKQbc^BdkSUUSUUTuP@P\\ndmL@@DjYeVdU@@`@@LFpjFUxc\\\\\\ndie@@@aJyexV@`@C@binxdB\\ndk^D@IAdfYYwz]MjTHB@CBjE]ObYH\\nf`ih`@LRt{pAISK[NzRbmV]UUPHEP@FCHDipWnHPX\\nfnki`@DTxIPOMrJIQQKYQQIIEgIJSWIVjVZ`hJJb@B\\nf`iQP@DX@IQoYEEDeEeBf\\\\uYwfjffjj`@`\\ndetB@@kirQQIRyS]UUUPAaTXPsqDX\\ndieH@BDDfYun``H@LLrny`DH\\nfoAP@@@XRf^uu\\\\Tdij`@fXACU@\\ndeUH@JDDinUzZBA@@pIBZ^Ip`\\ndeUH@AdDimW[j@BP@pIBknId`\\ndig@@@pldTRaifij`B\\ndmN@@@rRJKQEneP`@@@CCdrfFUyG@\\nfb}@B@@AFQQQJQIHqZIgEV\\\\FNZjjjjjjj@B\\nflu`P@@`T[vQQQQQQQIR|EjKdm@DQ@pP@A@\\nf`ip@@@V}dbbbbRrQirQmN@@@@a@@B\\nfc\\x7F``@D@wdTRrbfdRQfRdrvtxLRufmjjjjjjjjjj@CCjLTYpRmFl{pXiKUoQsWodB@\\ndmtL@@x\\\\bbbTUZViVf@H\\nfoA@`@@NRYWVUzLMYiY`@hAAcasAJRTYwLHyh\\nffcA`@@EjdrnsLjomF^SGKRsP@@AT@@P\\nfdy@P@@^CEIe]YVvhpufef@Bf`@H\\ndmtL@@QTfyeQehBA@C@jXYxb\\\\\\ndg\\\\B@@SSRYYYyVvhJA`@H\\ndeUD@DpFRUVTYZZZPcJ\\ndeVH@IAJYW~F``H@LJPj[nId`\\ndk^@@@RfYU\\\\]Tzjjjj@LKBDpj[ae]L\\ngJQHBLQIVi@`\\ndieD`Dqa@HRYVZyjfX@`\\ndaDH@@RYWih@H@LLrny`HP\\ndg^D@LADf^YVyUj@`j@B\\ndifH`FDHaIe[kh@b@B\\ngGT@Adekj`LD[rX\\ndaD`@@pjRfUi`HH@LH{fHS@\\ndeTh@DiiAIYmQfj@@@H\\ndeVD@NBTfUuifefX@`\\ngGYHL`DIMlu@XHwbF@\\ndaxD@@QIeYjZ@LBpf{dT\\ndcNL@D@mRY^UyUj`@`@`\\ndeVh@LKadDimY[j@B`@`\\ndmuD@ITDR[e]xV`@d@LBJf{bHh\\ndmuH@DpDf[mYUj`@@CAj[ae^Q`\\ngOp@DjWkB@@LMc^ZI`\\ndcNH@DCHheEDbnmPT@@F@hUMproHt\\ndmuL@DHJUIeeTYZijT@`\\ndeVH@IAIfu~Eh@H@LJpj[nQH\\ndmuD@DpERYyWFVjjj@H\\nfgAp@@@XEdbbTTrLiI`mFBBhea`@pYSdmFmrB@\\ndiW@@@pdieZfxPHJH@`\\ndiW@@@rdiefa[``hH@ppf{bHH\\ndev`@@pjYJYejxY@bJH@pPYxc\\\\\\nfgA@@@LdbbbTRoIBMjp@@@@@@FDlTYpTeZmrA`\\ndk|H@@RfU{WJx]N`PJjH@`\\ndew@@@rdifYj^DHJ``B\\nfgAP@@@BrQQJESITXJQk@PT@A@@X\\\\IPRmFmrB@\\ndg|L@@ildTRbrJQTJtEAEL@D\\nfoQH@@@XhiJYmg^YpRcVBHJiXX@H\\ngOy@LDeYMjj`H\\ndet@@DjYUX^d@@@@CAbinF^Hf@\\ndie@@@EIe[ih@J@CBdrnGd@\\ndmNH@HCHhheDVzU`@@@@LFCJXYxgJ\\ndeVD@LBTeegijfjd@`\\ndk^HPNHHbXaIf^UvGS``B@@@`\\ndclL@@GTf[VwiWV`BJH@pHjy^Q`\\ndaEH@DHDfURijZ`CAF{bI`\\ndg}H`LHPBDigUm\\\\h{ifd@H@LAABe]N~Pp\\ndaED@LhDRY[Ifjf@H\\ndev@PF@HdHrQQJEEPsTlmPA@\\ngJPhLQDIKTpD\\ngJPhHPDIUmHFDGDl\\ngJXhCL@aJyf@`\\ndo~L@M@iRYg^ufzB@jj`@pLLJnFUt{\\\\\\neMACDXaIhH\\nfjs`@@@ISLjmvj~JBtjp\\\\iKP@@@@@D@@A@\\ndmtB`HSBCprRSFIJUZh@@@pinFUxfD\\nfbm@P@@BBeIfYfUWybm^mEh@b@aF`@B\\ndclL@@HTfYm]aWViB@`@ppiWfUv`\\nf`qAP@@LDivQQQQQRk[`mFZBX`j`@H\\nfoQPB@F\\\\@DYHheBeLdRdeV]Th@@D@@X\\\\@RfcV]qBI@\\nfhypB@F\\\\T@HrQQJEJIIXeIZ|FiPBB@`@B\\ndg\\x7FH@LiPRUYYWESnj@@@@@`\\nfdeIb@LLDhwh`BLdTrbRJbTOARTxM@PMUUE@AaHBJRu[pX|`x\\nfdeP`@E^@{HhhhhhdeBpV`vbt@Q@LD@@XLyhu`qxaW`\\ngOx`FJdlm[MLAyib\\ndk^D@NBdef^ukmMfi@B@B\\nfb}@P@@HM{HihheDeEdbIVk^BgKP@@PT@D@A@\\ndidL@@RdfVwaZii@LHKfMp`\\nf`i`@@@ISLrj\\x7FSdkZ\\\\@@@DD@@D\\nfhyP@@@VrQQQQIYHrgIFtx@@@BJ@@B\\ndg}H@DxDfVyVyO[Z`@@@@H\\ndcl@@DjYU_egX@@@@@p[J[agaHRz\\ndcl@@DjYU_egX@@@@@pYLJngaLJz\\nfdyH@@@P]yJVYU_Ud[Uf`@@Bj@D@T\\ndeVH@DAIgeQej@@@LJSFx^IT`\\nfnsPR@FJtZw`AFRJQQEJIVYQIXYrUVuUUSLt@E@@XN@cAJ\\\\TXJ\\\\ejt\\ndg}@@@aJVYU^Svv`@@@@`KCj[ae]yaGX\\ndazJ`JaLK`BLddNRuR@P\\ndmvh@HJfTLbbbdSZZfji@H\\ndaDH@@RVU[f@@@LL`fyfUp\\nfhyA`@@HBdrrkN~RdcN|uA@@AP@A@\\nfdu@@@DjYee]}faRlGtP@@@@@@@@puS`eZMYw`qyC@\\nflm@@@LdbbbbbVNVxhUc^bd@@H@@@@@CCUNRUhsoAbgdF@\\nfjcA@@@YDhhhhdeElcqVgVcdm@@@@D@@@@P\\nflm@@@DjYeeo\\x7FyHQm^bd@@@B@@@@CCUNRUjsoAbgdL@\\nfduA`@@TCdbbTVbfbLIPQmN}F``@@BH@@H\\ndeT`@@aIRge_aV@B@B\\ndif@@@RfU~F``@@pxDpj[nPH\\ndmND@BA\\\\bbbTUZ^EjVih@pSayfTp\\ngCaHLHaIYaIXHSbV@\\ndcLD@@uIfYoXVfZi`CANWbUH\\ndmtD@@eIfUTUjBB@@pDHJfxYxfJ\\ngNy@LDeVjj@phQkxi`\\ndg^F@D@nt{RUefuFVjjjj@LMSJ[ae]N~Q@\\ndae@`LH@aJYTj[jZjPCC@RnHw@\\nf`ipB@L\\\\D@HrQQPsISIDXkSoUL`@@P@A@\\ndk]D@BXDR[ee]ntvf``H@H\\ndk^D@M@dfYmUXUMjP`R@B\\nfgA@`@@VRfU{WqS`mFhD@@h@@`\\nfoQA@@@ISJkZ~J\\\\eYu@aA@P@A@\\nfhyh@@@XIQVRJJIIZEKLyISo@TEP@P`@P\\nfdeI`@LZCDDeYHhhhlhblbTM[pZjjhDBh@B\\nf`iH`@LR]x@diemg]IQVkNjjhDBh@CCdBTxHwnHQh\\nfHahAa@\\nf`q@`@@^RYWUe^cKN`@f@B@DNVB`HpRbmFm{bNB@\\ngGP@DiVV`hipJqoDH\\ndeTH@@RYWVf`@j@CC`SBhYyG@\\ndmu@@@QInUwaZ@BP@pxDJfz^Ph\\nda{@`Dp`BDfUvjXHj`\\nfoApP@DXxBQgYEDhihUCPVkMMUUTp@X\\\\hpRcV]qGM@\\ndmM@@@{IEEEEZzU@B@@@LBHYWbTp\\ndcmH@LXDee[UnWZ@@@@@`\\nfoAQ@@NB@drnkJtYYt@Dp@@BGJ\\nf`qQ`@DXAKrSLj}klyYsUUH@T@A@\\ndclL@@YTfYetngV`hD`@pJag^Ic@\\ngNx`LDdvkUHFAqkyD\\ndif@@@RYWZZ@BP@piLJnx`B\\nfhi`C@I@dDRFICHiCDeMhdaJ|Fj@H`@@@H\\nfhia@@I@RfuuYWYqwj@BX@H@PEP\\nf`qh@@@XIQfRJJKZJEJgG^ejj`@`@LADYIVcV]rG`\\ngC``AdeZ@pdxe`\\ndg|d@BE[CDeenUyT{Zj`PH@H\\ndk^h@DX]LDf[e]xUvj`PJ@CB`riOdP\\nfoAh`@BBUYpLIKW\\\\kleFluU@`T@A@\\ndmu@@@EIYWYnX@J`@pxLJfe^Q@\\ndaE@@@aJyUnX@@@pHj[nIF@\\ndaDH`NCDRYWih@H@LBALkbEp\\nfdyqP@DXxBUoQrJIQSQYQPtDYsSUUUML@D\\ndg~H`NX@aJU{YWBNzVZ@B@B\\ndaE@@@aJyUnX@@@pPjxTXw@\\ndeVD@J@TinUzZBB@@`\\ndcMD@JDErQSQIE]MA@e@A@\\nfhipb@LBCA@@cIIBhhddmmNmyZ`@@B@@H\\ngOx@@eLmXD@AaUcV\\nfoQ@@@LdbbbRQrYHRkN@@`@@@@LIXIPRmFl{dN@\\nfoI`@@@IRlrj|DTxjqgUP@@AP@A`jBFBdkQkNy@@\\nfdu@@@DjYee]}faRlGtP@@@@@@@@pubgEZMYw`qy@P\\nfmoA`@@HWdTrTTtbRLrTfVrk^CdhymUUUUUUUUU@AauFBTYrRmFl{pXyKUoQsV\\ndifH@AAIfU[hBA@CB`Jf{bXH\\nfoAP@@@TRfyWm^RlzP``@@@CBQJLdkQkNxaG@\\ndmuD`IVD@HrRFIKKaV@BP@`\\ndeVH@DAIgeQej@@@LBSF{fTL`\\nfde@`@@DRYg[VU~BLxLViZjB@X@CCfBTyiwnDeXLP\\nffsA`@@HjdkJvmk\\\\oAZMxJRm@AUUUUEP@XNISdeZMYwhirWbHU@\\nfa{A`@@HzdrmkZvmrrUYtTeZuP@UUUUQT@D\\nfoAQ@@KN@eLrj\\x7Fbthu@@@D`@D\\nfhy@b@K^@DISLsJntyIq`t@PPID@@XR@rRmF]xOHB@\\nf`ia@@A@RYV{UVgEZ]z@Hf`@@@H\\nf`yp@@@PudbTRbRbQqRVeNmzZ`@`@`@B\\ndknD`La@BLddJTRVtuj``@@`\\ndmuL@DpFEIeY~nZifh@pILe^Qp\\nf`i@`@@VRYfYU]`eNMyh@`AB@@LNTyKQg^yAP\\ndcnD`La@BLddLTJULnkU@A@A@\\nfoQ`@@@ISLrkiJRMiu@A@DP@A@\\nfoQP@@@LRfV]uZ\\\\djsjjfh@`@CAPHHIQfcV]r@`\\nfoQPB@HH@DYHddheBe``iV]RuJ@E@@P\\ndknD@FBTieenGZB`h`@`\\ndieD`JXaCDRYgvzejX@pHLi`\\ndcND`La@BLddJbRrzmPP@@XMS\\\\LkqLt\\nfoAQ`@EZ@JVQQQQQIWLTZsT`tAP@D\\ndcN@@@Rfye~f`Hb`@pzfxYW^HB@\\ndg^D@DCdefVUUMjBHb@B\\ndg^H@LAJUyfUSjhBH`@`\\ndif@pDBHjHFHrJIQEn`HH@H\\ndid`@@pjrQQIFf@`h@LDx^XaL\\ndcN`@@pjYJYe}k`Hbj@B\\ndid@p@qBqAqDfYun``H@H\\ndeTL@@jTef_xVB@`@phj[iyD@\\nfoAp@@@P\\\\eKLjorMjsP@@A@B@KBQJLxJRmNyBp\\ndeT`@@pjrQQQUMpEAP@XDUCOHX\\ndmLh@DkeAIYe]neZhDB@CCBF^HD@\\ndk\\\\d@Dki@|bbTRQR[aejeZf`B\\ndeu@PLX@bPaJWY\\\\HYiZVh@`\\ngJ]@EbDfVdCqX`\\ndg}@@@aJnYU^Svz`@@@@CARinFUt{yD@\\ndcML@DpFEIeY{kfjYj`B\\nfoAQ@@KN@eLrj~bthu@@@E@@D\\nfoA`@@@ILkjrmFV]@AL@@@ar`\\ndaFD@JCdefZyiZ`B\\ndclD@@EJY}erevfVfiBJlFpje]xbL\\nfoA@`@@VRfum[V\\\\Uj`@@JP@B\\nfoA@@@DjU][VgKNBAJ@@@PiXZ`cAJLdkQk\\\\`x\\ndaFH@HAIYUnh@@@phHJfxf\\\\\\ndeV@@@rRJFICMPD@@XLfTwCrI@\\ndk]@`FD@aJY}e\\\\kSif`@`@`\\nf`qQ@@DX@drlrj~gV|uUUUUP@P\\ndg}@@@aJVYU^Svv`@@@@`K@Z[ae]obDX\\ndmwD@LxPQIeVvUZjZd@`\\ndg\\x7FH`NW[@HRfum]XYV`BFiH@pXLIewbHX\\ndk^H`Lt@aJWYW\\\\JUiX@J`@pxD[ad~Q@\\ndieH@JxLbTTQkfej`CAFGbPP\\ndifH@AAJY}rjYY`bj\\nfhiA`@@Hddjrm|jIW`mPAD@@@A`kEFBTZsoAyB@\\nfgA`@@@ISLrotyHvk@@@@@@@XLYIVcVy`gA@\\nf`q@`@@HRUfYU_Sk^Zh@@@@@LELxJRmFl{wDPp\\nfoQAB@E@BDiegUteARlz`RB@H@@`\\ngGX`JDdjmVA@\\ndmtL@@RTeVUaUj@H@C@jXUydYH\\ngJX`LDdju@P\\nfjs@@@LdbbbbbbfIQxhSiFmGIP@@@@H@@@@LM\\\\dkQk^bgI^PB\\nffkA@@@YDhhhhdeEmE^JuztPiKV`@@@@@@@@@`\\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@QE@D@D\\nffsA`@@VkdTRTtRabrTRhqQoArUijjjjjfj@B\\ndmM@@@iJYewJEYB`R@CBbinWbCH\\nfb}H@@@TMYJYewyUWEAJ]yNYB`RZ`B@A@U@\\ndiTH@@RfU|kahDB@C@biaxb\\\\\\nf`iQ@@L\\\\@dmKZzhiJt{sUTu@D@@P\\ndg\\x7FH@DWPRUe[mzSmh@ajH@`\\ndiW@@@rdiefa[``hH@pQnybDH\\ndcm@@@sIEDeBeSKhD@@@@XYpkrdiit\\ndieH`HHPBLdRbQrjYi`B\\ndklF@@pUttiinwZZjjjh@`\\nfbu`R@@zM[pHcHhheDeDeNdpTcPDQSTuQ@A`HFJRlxJ^Hcd\\nfde@P@@BUYIfYfVwXKWgQZ@H``b@@H\\nflu@P@@BBeIfYfWgvJtztV`BH@dh@@pypVcVbgdO@\\ndk\\\\B@@HSRYfu}aWViB@h@LJKiT~QP\\nf`iA@@@IKLl~krRmN|p@@@@@@D\\ndmM@@@eJYYvfEP@@`@B\\ndeUH@LXDeYgXZjYX@`\\ndefJ`JaLFP|LddjRcUTpA`rXUMH\\nfbc@@@LdbbbbbbejwMB]Hu`ir@@@@@@@@@FFnBehuoAbgOHJ@\\nfdm@@@LdbbbbbfjSCBUIuoAb@@@@AP@`A@\\ndo|D@@eIfUwU[hBAif@siXz\\ndklD@@SHihdhYNEh@Jh@LFPjWSxgB\\nfb}A@@@YDhhhhhdhb^ZMyrXyh@@@@@@@@H\\nflmA@@@ILroJ}jQ`iV]EKPPA@@D@@D\\ndk~H@NAJUmmRkatzVd@J@B\\nfgAa@@N@Re[UUIPTcVijeif`@`\\ndcNL@M@iRYg^vzB@j`@pdLJnFUt\\ndmtL@@SdfVUyUjA@@B\\ngFp@DiTvVhC@qX|Ph\\ndif@@@rRJEKaj@@@LBSF{fEP`\\nfoAp@@@P\\\\eKLjorMjsP@@A@B@K@QJLyIVg\\\\PJp\\ndk]D@HDMrJJJJHiaTx@HB@@H\\ndeTH`NBHRYWVf`@j@CB`SJgbDH\\ngGY@DDfUj`LLc^S@\\ndknJ@CCNgTieY_hZjjjx@`\\nfhiAP@@XyKRTrlovmA^CUUUP@P@FAhDipTmFl{p^HPp\\ndeVH@BAIemQfk@@@LFbfxYy@@\\nfhyp@@@NBeSMrnjpRkF|D@@@Q@@A`kENBejsoA@\\nfleq@@JBBAIYe_e]nR]z``R@Bh@PyP\\ndclD@@{HhheEBtkl@D@@@XTGCJ|sFt\\ngFx@@eRqUU@P\\ngFx@@eSQUU@P\\nfoAQ`@DX@pRSJs|kSegMTs@A@@X\\\\QaVcV]rG@\\ndk^L@DBmRYVuvfeVj@Bh@H\\ngNs@IcPdmmMHD\\nfoAqb@BTYIS`RBSLnmnsakTmTuUP@P\\ndaEH@DHDfYVyje`CAJ{bXp\\ndieD@DHFRYf^EjiX@`\\nf`q@R@HHpP@QddarbbTQtYwej`@@@@B\\ndeTL@@J\\\\bbbRKBuKS@FBUwDq`\\ndcLDPBtHbXcHhhddbppPQR@D\\ndid@@DjUZnBBH@LBinGfPf@\\ngOp`@tiguif`LEksHl\\ndaD@P@qBbDfYvzB@@B\\ndk\\\\H@@rIJJIQDYtz`@@@@H\\nfgA@@@LdbbbTVKIBMjp@@@@@@FDlTYrRmFmr@`\\ndmNH@BAJ]YVDeZj@B@B\\ndk~H@LAJYWmRkatzA@@H@B\\nfoQh@@@\\\\UYvRJJJJsITyKQk@A@PtD@D\\ndcmD@DpFRYUmRi]Zijj`CAlxYW^P`\\ndg}D@DpNrJJIIPiDqvuTuUT@P\\nfgAP@@@\\\\RfYe_irQmV@@@@@@@pxQ`eZM[dI@\\ndctDXJXIAICi@YAYCYCHiMEHyUMUPA@\\nfjc@`@@VrJIJZIPqYIJcEF|ENVfjjjjjj`@p|cENBdkQkN}EN^HBT\\ndieH@BxDfYUa``P@LBCJGbMp\\ndg|H`BBHRYe^uXSnBB@@@@pxLhYT~Xvv\\ndaE@@@yIeVf`@`@pHLKnHc@\\nffk@`@@LrJJJJHsIIPi\\\\dkWhaRVmPTP@@@B@@A@\\nffk@@@DjYee\\x7F^uyHQmNCDmP@@@@@@@@@B\\nf`q`@@@YIEBedhdnB]zh@J@@@@`\\nfhy@`@@\\\\RYee~uYrVoAZA``@H@@pyPTmFm{fLNB\\ndid@@DkYWaz@@@LF`j[ayB@\\nfduP@@@^RiggmUvBdjwgAjjfABJh@B\\ndcLDpITJsjsZqIfVYXXBHZ@C@`y]xfB\\nfhiA@@@ILkkLktYxL@DtD@@H\\\\lM@Q`eEZMYwnHxD\\nfleA@@@ILklrsoQdTp@SUA@@BGJ\\ndaF@@@RYWih@H@LBALkbEp\\nfdyQ@@@qAdTTRQTRVTYrshBA`@f@DNT\\ndaF@@@RYWih@H@LBCBkbIp\\nfbmP@@@IrRJJIQJIHdjmhKhu@DPQAT@@X^qS`iJtZsoAbgH\\nfhya@@K@rQQQQIYHrgIFtziAhEJh@B\\ndmvD@DCDeUeYUj`@@B\\ndmL@@DjUgZFUBBbb@LISBinFUyD@\\ndmvH`Nd@aIe]Zf`@i`@piLJex`\\\\\\ndeTDPDpHb@cHiCDdLrp@@A@\\ndmvD@JBTin_^F``J@C@dIexe\\\\\\ndaE@@@aJmUnjjh@pYLJf{dP\\nfl}A@@@IRlrjkoAENJl[tTuP@@@@T@@D\\ndknL@LACRYVuvUZh@J@B\\nfhyA`@@B|dsLro~pRkF\\\\t@P@EP@A@\\ndk\\\\B@@z]rJJIQPqnTv`XbH@H\\nflu@P@@\\\\e{HhheEEcDef\\\\TZJV`Xb@`H@@pebRkN|FJ^PD\\ndaGH@LJ`rQQRyULs@D\\ndcnD@B@TfYm]aWViB@`@`\\ndcn`@@rawIEDhiUTkhPUCD@XDc\\\\oHt\\nfdei`@LJLzHIZrQQQQIJJkDiYpXuUUTBAP@D\\nfhypB@M^B@HRfYU[wDYUg^h@@HF``@`\\ndmtL`HS@BLddlRRFUh@H@LJqne^QP\\nf`qAP@@\\\\dYvQQQJJDiQgEZZAbBf`@H\\nfj}@P@@\\\\]eIfVWyU^YrV`iZA``HHZ@@H\\nfc\\x7F@P@@H]oHidhiiDhjdeIemjpXekM[UUUUUUUUUT@F@tXIQgIJtZsoAbdmV}GM^p\\nfj}@p@@BMGI\\\\bbbbbbbtQqxkWgIZ@Hb@dj@@H\\nfdeP`@E^@{HhhhhhdeBpV`vbt@Q@LD@@XLxhu`qxcW`\\nf`i`@@@ITrlnzpRkN|DA@@@@@F@lTyKQk^yaBg@\\ndmtDpFTH`h`XaIf[oi`bH`@phBXYyB`\\nfhiP@@@ARYe_YWYqwhBBh@H@@`\\ndifH@DAIVUxU`@@C@biny@`\\ndifH`Lx@cIEDcBjiYh@phLJayB@\\nfoAaB@LJ@DYHhhmMDbQegULpLA@@P\\nfhiQP@DX@IW`yEEDeDdbdsakMUMMUU@AaKAJRMYw`|ah\\nfhiPP@DX@IWdfYVU_V\\\\MYjiijZhDKT\\ndk\\\\D@@[HhhiDjbY]ZBhB`@`\\ndeu@@@[IEDhcSCH@@@@FB]OBPjD\\ndeVD@FADfygFV``@@pjfxYyB@\\ndeT@@LdbRTm\\\\DDT@FCIc\\\\L|RJ@\\ndidD@@iIYmxVfZPB\\ndidD@@iIUexVZZPaF\\nf`qA@@@ISZzljscoT@Dp@@B@kCRLDhpTmFl{dO@\\ndk]H@NTDimYuX]N`B@@@B\\nfhip@@@LCdbbTTrLvUIBt@DAEU@@FAdTYpTeFl{p^Pt\\ndmuD@DTArJJJFHUZijX@`\\ndaE@`LH@aJ[Unh@@@pHD[nQP\\ndie@@@aJVuxZ`@@CAlJfx^HD@\\ngG]@DZDfUj`LDkqX`\\ndet`@@raRfVZi[``jB@H\\nfhy@P@@BTGHhhhhhebfBtzwf`BH@J@@H\\ndiU@@@aJVupnFZiV@H\\nf`ia`@N@LyIfV]UV\\\\eiwf`XHjh`@`\\nfhyaP@E@EIwlbbbbbRjRXhuoAZdF`Jh`@`\\ndiDB`HSBCpRjuVji@H\\ngGX`BJdsmLIgAZ|b@\\nda{D@DJ`yIeUjZBBh\\ngGT`EaTf]j`LD[qK@\\ndknL`LaM@HrRRqQHjUV`HJ@B\\ndcNH@DCHheEBdnmU@@@FGIeMpkqIt\\ngChHLLQIZ`LDEqS@\\ndmu`@@pjY\\\\dTTRak`Hbh@H\\ndmt@@DjUiZdHJb@CAd[ae^IA@\\nfdyhP@DTxIPCAcdTRbbURTRYrRfjVZjjh@LIHEKUg^CD\\ndeUH@JXDeVVxVYjdHQ`\\nffsA@@@YEDeMDhTihdZLUiwhyZjjjjjjj`@pbcAJ\\\\EIVcV\\\\FJ\\\\uy@h\\nfoQP@@@\\\\rQQQQQKFdeVLx@B@@@@@`\\nfj}P@@@LRfVVWV}qF]GIYB`B@@@@ABE@\\ngGPP@cTfyj`LInYF`\\ndk]D`LFD@HrRPjJIEatujB`H@LJrnE^YNf\\ndg|D@@WIEEEDYcPsmAQDT`A@\\ndif@@@Rfufz`@`@piLIax`\\\\\\nflepr@M^SAFB\\\\\\\\CprRSEQIZJKZR`qZjjjfVh@LIDhpTeVBgdL@\\nfjc@`@@LrJJJJHpiQKKdeZ]{IZ`h`@H@P@@`\\nfhe@@@LdbbbbbbcxhQiNlD@@@@H@@@pepTeZMYp^P|\\nfHbXAy@\\nfoAA@@@ILkjrmFV]@AL@@@arpTAFBTUhug\\\\QpP\\nfj}@p@@\\\\dYI\\\\bbbTTVaaRaYIUhyZAbJ@BJ@@H\\ndcnH@EAIfV][iuhFAH@LJiag^Ib`\\nffs`@@@YIDmeEEEDhlZL]DI\\\\ujjZ@HH@d@@p}AFBTuYw`qSdmP\\nfhyH@@@\\\\EKIEEEEEMUfRU[pYBb`@B@@H\\nfjsA`@@TdeJsZvoZpPsfk^CdmA@P@@@@@@D\\nfbc@@@DjYU_eUfByKQ`icd@@B`@@@@@H\\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@DT`D@D\\nfdyp`@FRbABS\\\\rornIW`mA@d@D@HBh\\ndmLd@Dqe@TfUeZzUZjUj@LLrUyB@\\ndmM@PBx@c@aJYg\\\\jeZdHB@B\\ndaDHPH@HHHRme[fii@H\\ndk^@@@RYeg]ntxB@`@@H\\ndcmD@DHERYYUZz]Z``R@CBdHYwdL\\ndigH@DJ`RYYrYjfh@`\\ndigH@LHPRfU~F``@@`\\ngC`HAbIMTA@\\ngC`DAbZHRVhCCB[dP\\ngCahHlNbNlA`a`\\ngChHL@aIZ`LBHl\\neMFIDRM``';Trb.PE='fHbTA@\\nfH`pA@\\nfHfXA@\\neO`BNZ``\\ngKXHL@aJWFj`LBEcrP\\ngBP`Adibj`H\\ngCh`LDdsPFDWI`\\neMBBHRZCAKd`\\neFhHcAaWH@\\ngC`DADZHRVhB\\neMBCDRZCAKd`\\ngGP`@dfuiaMX[F|b@\\ngCa@@dkHFBbyL\\neFABH`bLD\\neMDARZCAgd@\\ngJQhHl@cIHUhCBGd@\\ngJXDB@bABUmTA`Pl^R@\\ngJXHD@aIYj@ppqyH\\ngGX`DJdsmRA`enP`\\neMhDRZCAKd`\\neFDBcAaWH@\\ngCh`LHe]PD\\ngOx@@drm]UTAaqEcV\\ngJPH@DISUPFABqyH\\ngJX`DBdru@XI[dH\\nfHapA@\\ngC`DAb[DRVhB\\ndaDD@@yIe^fZVX@psBkdH\\ndidH@@RUe^Fh@@@pxHPj[nPH\\ndig@@@x\\\\dTRQi`HF@akBdpj[dB\\ndaE@@@yIe^f`@`@piLJny@@\\ndaEH@HxDeeVz`@@B\\ndeUL@DpFGHhdhYWMTuPA@\\ngOx@@drm\\\\@@A`Qb~IT\\ngOx@@drm\\\\@@A`Qc^IL\\ngOx@@drm\\\\@@A`Pm^Hl\\ndaD`@@pjRfUi`HH@LDKnHc@\\ndaGH@DK`R[e[fiZ@LLQnyE@\\ndmN@@@RYVuiiV@@@@@`\\ngOq@@eL~mLlAal[qI`\\ndid@p@bBbFbDfYoa`b@@H\\neMBCDRZCAGe@\\ndifH@NAIYVXZ@H@CA`cBX^Qp\\ngFt@AdiWEihCAJ|TH\\ngCd@ADkj@ppbyL\\ngCaHLLQIZ`LDEqS@\\ndetH@@RgYVDFZh@H@H\\ndiTH@@RgeXSaj@B@B\\ngGQ@@eJuRA`Xm^P`\\ndiDB@@[aRVeZjj@H\\ngGPdMQbGpRUZi@`\\neFA@HoBJD\\ndaxBPHQn@HhHrRPzKThA@\\ngNqhHl@cIHUEj`LLZ~P@\\ngGT@ATiVj`LJHl^R`\\neMPBcTH\\ngJY@BDfVhCAK\\\\a@\\ngGX`JDdsmTA`l^R`\\ngGY@BDf^j`LBHmqF`\\ngGT`EaTf]jPLDmrD\\ngGQHJLQIUjdB\\ndefD@FADf]ZZjj@LJJnF^Q`\\ngCi@LDeZ@pTwH`\\ndaF`@@pjYJYfn@b@@pPfyG@\\ngNt`E`tf]Zi@pVODj\\ndiFB@BAFEInuZjd@pILJnQp\\ngCiHEAxIVtAaMqA@\\ngGU@DPdjmTAaekqP`\\ngNt`E`tf]Zj@pJM_I`\\ngNxhMV@aI[ji`LBHmrL\\ngChhMDOBNtA`enP@\\ngC``AdeY@pbyH\\ndaDH@@RVU[f@@@LJcB[nQP\\ndaE@@@aJyUnh@@@pXHpj[d\\\\\\ndaFH@NAIe^f`@`@piLJny@@\\ngFxHL@aJYujj@pHboEb\\ndaF@@@RYe[hB@@LJ@j[nQ`\\ndaFH@HAIYUnh@@@pXHpj[d\\\\\\neFPBca@\\ndaE@@@aJyUnX@@@`\\ngCe@E`dkPFBbyL\\nfH`XA@\\ngGPBADZPLaYAIZjhB\\ngJPDADFHRUj`H\\ngCd@ADiZDE@\\ngJY@DDeZhCCSGbB@\\ngGX`LDdsmTA`m^P`\\neMBBHRYCAKd`\\ndkNF@BAIWSR[YVYjjfX@`\\neF`BJFE\\\\`\\nda{@`Dq`BLbbbKUR@P\\ndaDD@@yIe^fZVX@pSBxbT\\ndaD@@DjWZXHB@C@dpnxdL\\ndmNH@HCHhheDVzU`@@@@H\\ngFy@LDidviXB\\ndmv@`LCDRUVUeZj@@@H\\ngNxDLLQxbRjuU@P\\ndaDH@@RYVih@H@LBrf{b@`\\ndaG@`LK`BDimVz`@@B\\ndeUD@DhBRY[TYZ`@@B\\ndeUD@DdBRY[TYZ`@@B\\ndaEH@LXDeYVzje`C@`RnxdD\\neMBCDRYCAGe@\\ngGPXHlQxIU[U@XR|VH\\nfH`TA@\\neFJHqHpP\\ndaxD@@QIeyjZBBlLpnyC@\\ngGP@Di^VaHxTQF|f@\\ndctH@@RgUUZYfY@dRVQX\\neFBBDcA@\\neMBBHRYCAGe@\\ngJQHBHaInZ@`\\ngGUHEhOAJmZhB\\ndmLH@@RgVUaIVj`@`@`\\ngOx@@eR}XP@AaXl[rL\\ndcnH@JAIYe[yYu`@@@@H\\ndev@@@RfV^nFP@@@@LFPj[iy@`\\ndmM@@@WIEDhlZxY@@@`@H\\ngOx`DBdwQkUTA@\\ndclD@@UIfV][iuhFAH@LJiag^Q`\\ngJPDADXHRVj`H\\ngJPDAbGDRUj`H\\ngJQHBLQIVj@`\\ngNt`Bpdf{Zj@pJqoHp\\neMdDhzB\\nfHehA@\\nfHfpAa@\\nfHchA@\\ngOq@@drm[RtA`Uc^Q`\\ngFx`LDdrfmU@XHwdp\\neMhDRUB\\neFbHbHpP\\neMJDBDf`pQyP\\ndcLL`NWPbDfUuZf`@jX@H\\ngNx`JDdskUPFDwLZp\\ngJX`DBdru@XS\\\\RH\\ndiDDPNDHc@aIUVjjX@`\\ngChHL@aIVPH\\ngJXhEBOAJuj@`\\neMJDbDf`pQyP\\ndaFD@DAdegfyjj`B\\ndmNh@DkaTDfVYVzUZiZi@H\\ndaDD@@IIf]nfih@`\\ndaG@@@kdiVrX@a@C@hPfyG@\\ndcnL`LaA@HrRPjIKTrzmPHD@FEYtkh\\neOHBNZP`\\ndiVH@BAIfUInFjZi@H\\ngJPDADFHRUfaIP\\ngNqDLHaqBRjuU@P\\ngNpDAbODRUVjhB\\ngGX`BDdjmTA`m^JD\\ndidHPBBHFHRYgvzB@`@`\\ngJXHD@aIUZ@`\\ndifH`NDIAIe]ih@J@B\\ndaE@@@IIf]n``@@pHLJnHw@\\ngJPDADFHRYfaIP\\ndiFL@JANRY]fjf@LLJayF@\\ndie@@@YJYYhP`X@CBdJnGdL\\ngGTHE`DIJkSBZppUxhP\\neMbDBDfp`\\ndeVH@DAIgeQej@@@LJrfx^Hd`\\ndcN`@@pjYJYenk`Hbj@B\\ndidh@DJaAIVUxZ`@@B\\ndcNL@BA]RYe]VEjVih@`\\ngNxhIV@aJUji`H\\ndcNL@LANRYygiUjB@`@`\\ndid`@@pjrQQIFf@`h@LLKaxbL\\ndmvH@NAIfUTUZBB@@p[BiaWdR\\ndmuH@DpDfWeYUj`@@CAlInF^Hb`\\nfH`PAa@\\nfHd`Aa@\\neFJHaHhP\\nfoA@R@HHpx@QddebRfRpiFlm@@@P@A@\\ndmLH@@rJJIQEneX@@@@CB`kaWfXt`\\ndmLH@@RYVuiiV@@@@@phJxYybXh\\nfgA`@@@ISLrotyHvk@@@@@@@P\\ndaFH@HAIYUnh@@@pKBinXD\\\\\\nfduH@@@X]GIEEMDdehUbbkF|FKT@@ACPP@P\\nf`iH@@@TdyJYW^U|TxJsiB@jjh`@`\\ndmM@@@qJY{WJeVj@B@CCdrfxYyB`\\ndcmH@AdDfUvVfWX@IjH@`\\ndiV@@@RfU|kahDB@CB`JfGbIp\\nffsa@@G@RfYU_yUTVeFCDmZ@@@JZ@@@@H\\neMJDBDe`pQyP\\nflua@`IJAHFdKRCi@hRDQHQDaHaHFJLuzJX@Jfjja`@`\\nfhyA`@@B|dsLsKnqVgVBt@Q@BP@A`s`mFlGbIN@\\nfbmAP@@BBgJSLsLoOkEZ]ZKPAD@RU@@D\\ndaE@@@yJe~fB@`@`\\nfoAa@@D@RYYeUuVLyj@@@@@CBRJLxJRmFxbs`\\nfdyQ@@DA@drsJkzjlYsT@@@T`@D\\nfhiq@@D^BAIefUWuUcNZ`@@B`@B\\ndcNL`LaI@HrREQISBjt@Q@AaVTp{q@T\\ndg^L`LaM@HrRPiSISJZuPAD@D\\nfgA@@@LdbbbTVKIBMjp@@@@@@D\\nf`iA`@@F\\\\eLsJmmARmku@A@QD@@P\\nfnk@P@@FbuIefYZWz^`mA|gMVfjjjjjjj@B\\ndmLH@@RfY]raV`XD`@phj[axdj\\nfoAA@@@ISLjoxmJMP@@AH@AaKAJLxJRk\\\\PYp\\nfnsAH@@LDjwdu[dTTTTTiRbTVWAZMdkPSDEUUUD@D\\nfoIQ@@BJ@dsJsllepQkF\\\\uKUUTt@D\\nfoAaB@G\\\\ADILkkJ}FFm@AP@P@A@\\ndk\\\\H@@RfY]\\x7FJEZA`RXBAh\\nf`qQ@@G^@eLrj\\x7FpmJMP@@AL@@XJpRcNBdiwnPL\\nfdyQ@@OA@eLrj~lbthu@@@EL`@D\\nfhyi@@DTxIPLbbTTRqbRYrRoAZiYh@J@@`\\nf`i@`@@DRYfyU]`mNmyi`@@B@@H\\ndaF@@@RYWifef@H\\ndaF@@@RYe[hB@@LB@j[bYp\\nfhe@@@LdbbbbbqQXXUiJ|DB@H@@B@@`\\nfnk@a@CM@DVdLbbdRQbTQdrvIrRoAKVjjjjjiYj`@p]`eF\\\\EKQoQSdoD@`\\nfa{@c@K]@DHBGRFQRZQIFIQFSKZ`eZCFkZjjjjjiYj`@`\\ndet@@DjYUX^d@@@@CAlJnF^Hc@\\ndeth@DkiAIeeVxYZiZd@pQAxaT\\ndcNL`LaE@HrRPzIJSju@D@AaVDwSqEt\\ndk]@@@qJY{W\\\\jUZh@I`@`\\ndmN@@@rRJKQEneP`@@@B\\nfew@`@@HrJYJJZQIFYJSKJmxNRcfuUUUUUUUUP@XUQ`eF\\\\dkQkN|FNRu[t_HS@\\ndeVH@DAIgeQej@@@LJSJX^It`\\ndaFH@NAJY\\x7FJifx@`\\neMdHTf`|rP\\ngJY`DLTefhB\\ndiFH`Bp@cIECDjZj@H\\ndeTB@@RirJIPqTsUUT@P\\ndmtL@@slbTtTLpfjjj@H\\ndmNH@BAIfUmiEX@@@@CC`qnFU@\\ndg\\\\D@@eIVUuWaZ@Bj`@peBinWSodP\\nfgA@@@DjYU_VByHu`@@@@@@H\\ndclH@@rIQQJH|J{P@@@@D\\ndk\\x7F@@@p\\\\dTRbfQjVGSBBheF@H\\ndk}@@@iJUmUR[atzjZ@H@C@PPje]OdP\\ndk}@@@yJUmmRkatp@h@B@B\\nfgAp@@@XheLvnjs`iFlDPT@@@A@\\nfgAP@@@LrQQJEIITxJQk@QE@@@@P\\ndcm@@@EJYYwietB@P@@H\\ndif@@@RYWZZ@BP@pXDpj{dB\\ndg}B@DpAV|bbbRbrK]imUMMU@FGXU]IwrM@\\ndg|H`FBHRYV~Ukcn@H`@@@pdDrne]OdV\\ndg|@@DjU_eZx{BAH@@BJlMaLJfe]N~Qp\\ngGQhHjOAJmZhCBGfFh\\ngGT`EaTf]j`LDkqX`\\nfgA`@@@YHheEhTj\\\\EHu`@@@@@@H\\nf`i@`@@VRYfYU]`eNMyh@`AB@@LFRUhso\\\\QS`\\nffc@p@@DEkM\\\\bbbfbTtRrLKAF|dkTaQ@DDT@@P\\nfoQPB@F\\\\@DYHheBeLdRdeV]Th@@D@@P\\ndcoH@NWPRVUmVFUX@ah`B\\nf`i@`@@VRYfYU]`eNMyh@`AB@@LF\\\\Uhso\\\\QRP\\nfhy``@A@|dsLsKnqVgVBt@Q@BP@A@\\nfde@P@@J]{HhhhhhdeBpV`vbt@Q@LD@@XLUjw`qxca`\\ndaFL@NAFR[e[fff@H\\nf`i@`@@VRYfYU]`eNMyh@`AB@@LN\\\\dkQg^yB`\\ndk\\\\D@@qIY[mZ{SZZ`@P@`\\ndk]L@LxDMIe]eRkSZjjjh@`\\ndclD@@IIf]U[evjj@@@H\\nfgA`@@@ISKJntXKQk@@@@@@@P\\nfduP@@@FRe[Y]mRTDhu`q@@BJ@@H@B\\ngGPdMQDGpRUYiDe@\\ndeT@@DjUghP`h`@pYL[agfPU@\\ndg]D@LlMrIJJIIHj]UAAD@D\\nf`iA`@@BUdTTTTTRqXKSk^Z@H`@`@B\\nfgAP@@@\\\\RfYe_irQmV@@@@@@@`\\ndmw@`Dq`BDeUeYUi`@@cJ\\ndiV@`J@HRfU|kahDB@CB`PfGd\\\\\\nfgAPB@LD@DISJ\\x7FJdhsakTuT@D`@P\\ngGThEXQxIVsS@P\\ndk^@@@RfYU\\\\]Tz@@@@@LECBinFUOdZ\\nfgA@`@@\\\\RfYe_irQmVh@`@H@@`\\ndiT`@@rnRfUjEnejfPB\\nf`ih@@@XIQVRJJIIZEIgIJ]xB`j@@P@H\\ndcn`@@xYUIYeg[ewiBHH@H\\ndmtH@@RYWUih@IhBN\\\\NALJiWb\\\\H\\nf`qAA@A@bOQBSJ{\\\\ktYYt@EP@P@A@\\nfdy@P@@BtGHhhhheEcliuoM@DD@T@@P\\ndeu@@@[IEDhcSCH@@@@FAEpsqDh\\ndcm@@@{IEEEDcWSh@PD@@P\\nfoAP`@DXAIIfU^uYrsfjjP@`@H\\ndet@@DjYUX^d@@@@CBlJngfHp`\\ndclh@LX]AIVYWxUuj`PH@H\\ngJP`@TeVhCCSGdP\\ndaxL@@RdfVVjh@ppj[bYp\\ndg~@@@RYfUWd}mh@@@@@pdBinFUwbGX\\ndifH@HAIfuxZ`@@B\\ndmtD`NTLQIe]Vf`@jP@`\\ngOqHF@aJW\\\\ZVXCCA[be@\\ndk^@@@RfYU\\\\]Tz@@@@@LICBinFUxff\\ndk}@@@iJUmUR[atpBJ@@@CChPiWSyE@\\ndk^@@@RfYU\\\\]Tz@@@@@LI@j[aeSxfZ\\ndeUH@JdDin_xZB@`@pqB[fUt`\\ndetH@@RfUWJzZABH@LBInGbIH\\nfoQAB@C@BDifYU^gIVtz`B@DH@@`\\ngBQHDHaIejhB\\ndaG@`D[`bDfUjZ@B@CA@sbUp\\ndidHPACDZHrJIJFn`BH@H\\ndknDPLa@BABLddJbTVtujAH@@`\\ndayDPLZD@HhHrRESKSPAafTwDC`\\ngNxHD@aIUVj`LFEcWrP\\ndiEDPLZD@HhHrRESIZZ`B\\ndayH@DpDf]Vjh@piBinyF@\\ndeV@@@RfyWahBB@CBj[agf@a@\\ndmtB`HSBCprRSFIJUZh@@@pInF^YaJ\\ndif@`D@HRVU^Ejjh@`\\ndmL`@@siRfUmhVxHFJH@`\\ngO}@EfDfUkZZPH\\ngCe@E`dmHD\\ndeUL@DpFgHhdhUWMTuHA@\\ndclD@@EJY}erevfVfiBJh\\ndk\\\\H@@RYeg]ntxB@P@@H\\ndk\\\\D@@MJ[Vuvy]h@@B@@`\\nfoAaB@KN@DISLjoxmJMP@@AP@A@\\ndaFH@HAIYUnh@@@phHpfxe\\\\\\ngF|@AbeLzmS@XKWbQ@\\ndcoH@DJ`RUeUVy]ZZ`@@CBdhYwbPh\\ndmOH@FePRYVukaf@HZH@`\\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\\ndmL`@@[aRfV[hYVPb``@`\\ndeVD@LADfvUFVjjh@p{BinF^P`\\nfhi``@L@PdssLjn[s`mU@@@@@A@\\ndk|@`@BDie^urnGShD@@`@H\\ndeVH@BAIemQfk@@@H\\nf`qa@@O@rQQQIISGBtju@@@QX@A@\\nfbc@@@LdbbbbbRJvcEBMIpTqrAD@@@@@@@D\\ndcl@`@BLbTTRbOBnt@@@@A`LDwCJ{r@@\\nfdu@P@@JMGIEEDhhhhgPPkR\\\\kUUSUUUUP@P\\ngFxHH@aJUqiZ@ppMyD\\nflu@P@@B\\\\EIfYfWgvJuztV`BHBDh@@`\\nfHbhA@\\ndcl@@DjYeeiGP@HH@@`\\nf`i@`@@VRYfYU]`eNMyh@`AB@@LF\\\\ehso\\\\QQP\\nfhy@@@LdbbbRQaREiQoA`@`@@@@@`\\nfhyQ@@CA@dsLjm{Jvg^Bt@@DCA@A@\\nf`q@Q@HH]x@QXHrRFIJYIZ\\\\Ehrp@@Dh@A@\\ndet@@DjYUX^d@@@@C@binxRXL`\\ndg|@P@bCbDfUnuj{[`B@B@@H\\ndidHPBBHFHRYgVzB@`@pHLh^HW@\\nfoAaB@GDADILroZ{AFmAA@@P@A@\\nfoAaB@GLADILk_J}NFm@DP@P@A@\\ndc\\\\@@DjYVYayYt@@H`PB\\ndiDB@@SaR[eVfjBLh\\nfoAP@@@NRYWVUzLMZ@B`@`@B\\ngOq@@drm]SRA@\\ndidh@DqaAIe[kffjPB\\ndeV@@@rIQIPmw@AH@XUaMp|bP\\ndeVB@LAaeJYyzzjjj@LAaBinF^Q`\\ndk\\\\H@@RYm[Watz`@@@@H\\nfoAh@@@XIQRTsNj~sdm@P@QT@@P\\ndklB@@F]RYe]ynZYif`B\\ndaF@@@RYVih@H@LLBnybXp\\ndknD@LADf^YWeVhBB`@`\\ndcNH`IDLQIe[^ih@Jj@B\\ndmO@@@bTieulhUfhB@@H\\nfoQh@@@\\\\eYvRJJJJUKTxkQk@AA@tD@D\\nflmAP@@LUyNQQQQEJQJI|Eish~BtuUUUUU@A@\\ndkm@@@QInUu^Eh@IdBIh\\ndifH@JAJ[gxZB@@C@dJfxgB\\nfoA@@@DkfYU]UcNz`@@@@@`\\ndk~@@@rRJIJJEi{UNhJHb`@`\\ndeT@@DjY]zXFB@@pYLinGbEH\\nfoAA@@@ILkjrmFV]@AL@@@arpdAFBTUhunXxIp\\ndcMH@EtLbbbRQc]@PLp@P\\ndiTH@@RfU|kahDB@CCBknXcB\\ndifH@DAInUxZ`@@CAhJfx^HB@\\ndeVD@HCDi^UFZh@@@`\\ngNx`DJdssTpFBsyD\\nf`a``@M@EdbbRTQrdxj``hjh@C@rBTYpTeZl{wHX@\\ndeT@@DjUghP`h`@pFDpj[iy@`\\ndcl@@DjYU_egX@@@@@pyLJag^XwJ\\ndmtL`HS@BLdaRbReUj@@@H\\ndaxD@@QIUUjj@LJpj[nQ@\\ndcl@@DjYU_egX@@@@@p{J[ag^XaJ\\ndaE@@@aJmUnjjh@`\\ngOr@ABtiYufjPH\\nfgApB@LLx@HRevUUpPTcViYj@H@@`\\ndeth@DkiAIeeVxYZiZd@pqJGdD\\nfoA@P@@\\\\e[HhheEBcF\\\\UihFHIh@B\\nfj}@P@@\\\\ceIfVW{WVYrVoAZA``@JZ@@H\\nfbm@p@@BLEN\\\\bbbbbbbrNwEZ|zKPADPBU@@D\\ndg|D@@iJYYytYvzB@@`@B\\ndmMH@HxLbbbTQ[iV@@@@@`\\ngNt@@\\\\dbLjj@pJu_I@\\ndk\\\\H@@Rf_YWJtzYX@HBJX\\ndg|@@DjU_eZx{BAH@@BJ\\\\EaLine]ObEX\\ndg|@@DjU_eZx{BAH@@BJ\\\\EaLJfe]Ob]X\\nf`q`@@@IKJzljsco\\\\@Dp@@B@j\\ndevH@IAJYW\\\\kahDB`@`\\ndif@@@RYWZZ@B`@pYLJnGd@\\ndk_@@@Y\\\\dTRbJtiad@@Bh@B\\ndk\\\\D`HP@cIHXheDQgSV@@@@@pZnE]ObAH\\ndg\\x7FL@Ds`f|bbTTtJuCimMUUS@FCTwJ]|P]@\\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@LATYpRmFmrC`\\ndcnH@IAJ[Vu[ev`@@@@LFSBE]yC@\\ndmM@@@[IEDhhZdU@B@@@LJRnF^Hr`\\nf`iP`@B\\\\@aInVUuQRUiwfjij@H@@`\\ndc\\\\@@DjYVYayYt@@H``B\\nfgAa`@N@t[HhheDTdsdeFltC@UQ@A@\\ndeTD`HP@cIHXhdLk@P@A`UMp|PI@\\ndie@@@GHhhdVz@``@pKBinH@`\\ndmN@`E@HRfUwrnF`PI`@`\\ndk\\\\L@@R\\\\bbTTTU[mMjBhB@B\\nfbmAR@HHqhH@cIIKDeMEhdlIUgIrm@DM@`D@A@\\nfoAP@@@NrJJIHqIYgCV`HH@H@@`\\ndcLL@@ETfYUUnZYjZ@H\\ndcn@@@rIQQJH|J{p@@@@D\\ndaF@@@RZW[jii@H\\ndiVL@DBnRYYbZfZjj`B\\nfHgPAa@\\ngC`DAbZHRVhB\\ngCaHLHaIZPLDErP\\neMPBcXLJyH\\ngCahHlHROTA@';\nTrb.QE='daD@@DjUZxHD@@\\ndaD@@DjUZxHH@@\\ndaD@@DjWzXHB@@\\ndaD@P@bBbDfYvzB@@@\\ndaD@P@bFbDfUjz@H@@\\ndaD@P@bNbDfUzZ@B@@\\ndaD@P@qFbDfUjz@H@@\\ndaD@P@qNbDfUzZ@B@@\\ndaD@P@qNqDfUzZ@B@@\\ndaD@`@bDfUzZ@B@@\\ndaD@`@qDeeVz`@@@\\ndaDB`HSJCprRRsTsUU@@\\ndaDD@@IIf]nZYX@@\\ndaDD@@IIf]nZZh@@\\ndaDD@@IIf]n``@@@\\ndaDD@@IIf^fZfh@@\\ndaDD@@IIfunZfd@@\\ndaDD@@QIeUnZjh@@\\ndaDD@@YIeZn`B@@@\\ndaDD@@qJYfnjjh@@\\ndaDD@@yIe^fZVX@@\\ndaDD@@yIe^f`@`@@\\ndaDH@@RVU[f@@@@\\ndaDH@@RVU[j@@@@\\ndaDH@@RYVih@H@@\\ndaDH@@RYWih@H@@\\ndaDH@@RYe[hB@@@\\ndaDH@@Rfu[j@@@@\\ndaDH`BBHRYg[jfj@@\\ndaDL@@PdfyVyjZP@\\ndaD``DJnBHrJIPeUMV`@\\ndaE@@@IIf]n``@@@\\ndaE@@@YIeZn`B@@@\\ndaE@@@YJYVf@``@@\\ndaE@@@YJY^f@``@@\\ndaE@@@aJyUnh@@@@\\ndaE@@@yIe^f`@`@@\\ndaE@@@yJYfn@b@@@\\ndaED@DHNRYWifif@@\\ndaED@DXNRYUifej@@\\ndaED@DpFRYVkfjY@@\\ndaEH@DpDfYbijj`@\\ndaEH`Bk`bDfUzZZY`@\\ndaF@@@RVU[n@@@@\\ndaF@@@RYWih@H@@\\ndaF@@@RYe[hB@@@\\ndaF@@@RfYk`H`@@\\ndaF@@@Rfu[j@@@@\\ndaF@@@rQQHtpDD@@\\ndaF@`BBHRYg[hH@@@\\ndaF@`FBHRYVkh@`@@\\ndaF@`JBHRVU[j@@@@\\ndaF@`L@HRf^rjjj@@\\ndaF@`L@HRf_rjjj@@\\ndaF@`N@HRYWih@H@@\\ndaF@`NBHRYWih@H@@\\ndaF@`NBPRYWih@H@@\\ndaF@`NBlRYWih@H@@\\ndaF@`NCDRYWih@H@@\\ndaFD@BADfyVyjj`@\\ndaFD@F@dfYvzB@@@\\ndaFD@LADfVZYjj`@\\ndaFH@BAIf]n``@@@\\ndaFH@BAIfunZfd@@\\ndaFH@DAIeUnZjh@@\\ndaFH@FAIeZn`B@@@\\ndaFH@HAIYUnfjh@@\\ndaFH@HAIYUnh@@@@\\ndaFH@HAIYUnjjh@@\\ndaFH@JAIYVfiih@@\\ndaFH@JAJUtjjjh@@\\ndaFH@LAIYfnjZd@@\\ndaFH@NAJYfnjjh@@\\ndaFHPBxHa@aIeTjijX@@\\ndaG@@@kdig|jVj`@\\ndaG@@@rdifvxH`@@\\ndaG@`Bk`bDfUzZ@B@@\\ndaG@`Dq`BDfUjyijP@\\ndaGD@Dp`yIeVfZiX@@\\ndaGH@Dq`RYVkffi@@\\ndaTD@@iJUfDifzjjj@@\\ndaTH@@ReYaBinjjj`@\\ndadH`DBHRZuSFzjjh@@\\ndag@@@adie\\\\infjf@@\\ndax@@Dj~fjh@@\\ndax@@DkU^jh@@\\ndax@@LddUeUT@@\\ndaxB@@QnR[VZY`cD\\ndaxB@@QnR[VZY`cH\\ndaxB@@QnR[VZi`@\\ndaxBPLinBHKpRUZjf`@\\ndaxB`HSBCpRjuZj`@\\ndaxD@@QIeejZ@@\\ndaxD@@QImUifALj`\\ndaxD@@QImUjj@@\\ndaxD@@YIgYjf@@\\ndaxD@@iIUmfjBD`\\ndaxD@@iJU^jj@@\\ndaxD@@yIUUfYADb`\\ndaxD@@yIUUfZADb`\\ndaxDPFxLPlQIf^ZjBH`\\ndaxDPLHHb@aI[Vfj@@\\ndaxDPLh@c`aI[njj@@\\ndaxD`LhLQIUnjZ@@\\ndaxH@@RUUYj`aH\\ndaxH@@RUUjj`@\\ndaxH@@RV]Zj`@\\ndaxJ`HSBxOCIILTuT`@\\ndaxL@@cdiZZjh@@\\ndaxLRJ[`bBBNyIUjjV@@\\ndaxL`HS@BLddJruT@@\\ndaxd@DpnAdf]ffXHr@\\nday@@@aJnZjj@@\\nday@@@yIYwjk@@\\nday@PFx@b@aJUVjj@@\\nday@`Dp@aIfYjj@@\\ndayD@DpFRYVZi`@\\ndayD@DxFR[VZy`@\\ndayD@HhNRV[ff`RDh\\ndayH@DpDfUVjh@@\\ndayH@DpDfYfjh@@\\ndayH@DpDf]Vjh@@\\ndayL@DpFyIeUjj@@\\ndazD@BADf{fjh@@\\ndazD@LADf]Vjh@@\\ndazD@LADf^VihHJ@\\ndazD@LADf^fjh@@\\ndazD@NADf{Vfl@@\\ndazD`B[`BDe[jjX@@\\ndazL@BAFR[nZj`@\\ndazL@LANRYuZj`@\\ndazL`BaL@HrRPzKUP@@\\nda{DAJ[`Qi{dfuVjT@@\\ndcL@D@dDdJdFdAdIdEdMdLbdtbaa]UUUT@@\\ndcL@X@bBbFbAbEbMbDfYn\\x7Fijjjj@@\\ndcL@X@bBdFdAdEdMdDfYn\\x7Fi`bHh@@\\ndcLB@@ImrJJJIH}KTsTp@@\\ndcLB@@P]R[e[^eh@b`@@\\ndcLB@@Q]R[e]nEh@I`@@\\ndcLB@@RUR[fVQuhHF@@@\\ndcLB@@R]rJYQIPbkT@Q@@@\\ndcLB@@RiRYyVQejjjh@@\\ndcLB@@SmR[YgYUjB@`@@\\ndcLB@@reRf[ujzjjjh@@\\ndcLB@@riRfY~Qfjjjh@@\\ndcLD@@IIf]z[hHBj@@\\ndcLD@@QIgVUWVj`@@@\\ndcLD@@QInUvxVfjf`@\\ndcLD@@cIMHhTmJuUUU@@\\ndcLD@@eJ[W[[j@Bk@@\\ndcLD@@iJ[g]xZB@f@bX\\ndcLD@@iJ[g]xZB@i@@\\ndcLD@@kIEMDdcttDDT@@\\ndcLD@@uIfUe[ffZi`@\\ndcLD@@uIfUk[ffZi`@\\ndcLD@@uIfUk[hBBj@@\\ndcLD@@uIfYoXVfZi`@\\ndcLD@@uJ[WU[j@BZ@`X\\ndcLDHFDH`haXcXaIf[ozYjYjP@\\ndcLF@@Rag\\\\bbTVTILuSUT@@\\ndcLF@@RiWTfV[UnZjjj@@\\ndcLH@@RYeZvz@`j`@@\\ndcLH`ECDRUYWQff@B`HR@\\ndcLJ@@PUuInUgzV`BJ@@\\ndcLJB@PUuNR[eY~eijjh@@\\ndcLL@@GTf[VwiZ@Hh@@\\ndcLL@@STfyWWaZ@Bh@@\\ndcLL@@yTee[UaX@bh@@\\ndcLL`HS@BLddJfRtjmP@P@@\\ndcLLpLK`bEbMbDeeYunjjjj@@\\ndcL``Dpn@HRYueUujX@@HJ@\\ndcMB@DpIWTfeyYaZjeZ@@\\ndcMD@DhARYVUuujP`@HJ@\\ndcMD`LE]@HRV[]nEjiih@@\\ndcMH@DdLbbtRTHju@DP@@\\ndcMH@DpLbbbLRRzuT@@@@\\ndcMH`BuPBDf[U{aj@BX@@\\ndcML@DpByIf]vifjfj`@\\ndcM`@@pjY\\\\dTTRrM\\\\ADUP@@\\ndcN@`IBHRYWVjZ@Bj`@@\\ndcND@BADf{YU]Zj@@@@\\ndcND@FCTfUiffZjjj@@\\ndcND@HC\\\\bbdTb\\x7FKUUUT@@\\ndcND@N@dfY{UnZejj@@\\ndcNDPBePbMbDfYmoa`bAh@@\\ndcND`MIPbLbbbbQcSAAPp@@\\ndcNH@FAIe[mkh@bj@@\\ndcNH@IAIeYUifejZ`@\\ndcNH`Bp@aJY{UWZZjj`@\\ndcNH`BpLQI[VUWZZ`@@@\\ndcNJ@NCIWTify^ajjjj@@\\ndcNL@LAERYyeiuj@b@@@\\ndcNL@LAJRY{eUujh@@@@\\ndcNL@LAMrJYQIPcKT@E@@@\\ndcNL@M@aRYgWVzB@j`@@\\ndcNL@NB]RfyUZziZjh@@\\ndcO@@@rTie_ZnBBJh@@\\ndcOB@DrPY]RYV]jyjfid@@\\ndcOD@Ds`wHheELUPmMTra@p\\ndc\\\\D@@iJYeUqavUhJBbD@@\\ndc^H@AAJU[VaJZUijZjT@@\\ndcl@@DjYU_egX@@@@@@\\ndcl@@LdbbbRkRJ`@PD@@@\\ndclD@@QIe[WiiUjP@h@@\\ndclD@@UIfVW[iv@@B@@@\\ndclD@@UIfV][iv@@B@@@\\ndclD@@UIfV^XYv@@B@@@\\ndclD@@aJyegzUvjBHH@@\\ndclD@@iJYW]rnF``IhBI`\\ndclD@@iJYW]rnF``JX@@\\ndclD@@iJYW]rnF``Jh@@\\ndclD@@uIfV_XYV@@@`@@\\ndclD@@wHhheEbprl@@A@@@\\ndclD`AtLQIe]miaf@Bjb@@\\ndclH@@rQSQJH|J{P@@@@@\\ndclL@@STfUmVfeVi@B`@@\\ndcl`@@`nReeWZY]@``@@@\\ndcl`@@i]RfYyvxU@hJhP@\\ndcl`@@jURfYwVxY@hFh`@\\ndcl`@@j]RfYuVxY@hJhP@\\ndcl`@@seRfUeZEnBAbh`@\\ndcll@DpYAmRYV]zzUZije`@\\ndcm@@@UJfUWyYvhJBH@@\\ndcm@@@YJYYwhUtH@@@@@\\ndcm@@@iJYeyravPhJH@@\\ndcm@@@qJY~Ureujh@H@@\\ndcm@@@uIe[UiiV@@@`@@\\ndcm@@@uJYU_rnf`Pbh@@\\ndcm@@@{IDeCDdUKh@UUB@@\\ndcm@@@{IDeCEDUSh@UUD@@\\ndcm@`LH@cIEDUDeeKmLp@P@@\\ndcmB@DpNE\\\\bbbTRMBtmULmP@@\\ndcmD@hxEChgiWdfYYungX@@H@@@\\ndcmH`LJPBLdTTJTvTJtpAE@@@\\ndcmh@HqagPRVVY^E]fjVjPbH\\ndcn@@@RVUmVy]x@@@@@\\ndcn@@@Re]eRi]@B@@@@\\ndcn@@@RfV]zE]B@@@@@\\ndcn@@@RfYW\\\\hUhFBJ@@\\ndcn@@@rIQQJH|J{p@@@@@\\ndcn@@@rQQQIXyPkPLDT@@\\ndcn@PABPJPRYgUVy]``@@@@\\ndcn@PBBPZPrJJJIP}J{@D@@@@\\ndcn@PBBPvPRYe[VFU`@@H@@\\ndcn@PIBPJPRYfuvE]``@@@@\\ndcn@PNBHvHrJJIQGMtk@@@P@@\\ndcn@PNBPVPRYeeVF]`@@`@@\\ndcnD@D@TfUe^fWX@B@@@@\\ndcnDABCbgnrJJIQPll{@A@@@@\\ndcnH@AAIVYWXUvjP`H@@\\ndcnH@BAIfUnZQV@@@`@@\\ndcnH@HAIYVu[ev`@@@@@\\ndcnH@NAIYeUkiviBBH@@\\ndcnHAH@NbTfYYungX@@H@@@\\ndcnH`DDHaIe[gkev@@`@@@\\ndcnH`NtHaIfV]XYV@@@`@@\\ndcnH`NtLQIfV]XYV@@@`@@\\ndcnL@LAMRYUUrhYZh@h@@\\ndcnL`LaA@HrRPjIKTrzmPHD@@\\ndcnh@DkaTLbbTTRK\\\\nmHTA@@@\\ndcnh@DkatDfVYengVjVjd@@\\ndco@@@JdeYUUnW^fh@@@@\\ndco@@@pdif]wJeVhHB`@@\\ndco@`FePbDfUmVnFX@ajH@@\\ndct@D@dBdFdNdAdIdEdMdDfYkjZjj`bH\\ndctB@@I]rJJJIVMRuLDE@\\ndctB@@PYRYU{ViijBBP\\ndctB@@PYRYU{ViijBB`\\ndctB@@PnR[kfVjjj@@\\ndctD@@QIeUUZijhHj@\\ndctD@@QImUUZjjh@@\\ndctF@@IaWTfYn~jjj`@\\ndctF@@rngTen{mjjj`@\\ndctH@@RUUUZjjj@@\\ndctHxJBPRPrPFPfPVPvPrJPqJQUUUT@@\\ndctd@BE]ADf{UYjji`@\\ndctl@BE]ANR[mUfjjf@@\\ndcu@HLd@a@```PcHheDYhuUMP@@\\ndcuD@LTIrQPiIQTuUL@@\\ndcuDPBwaBPRPrJZSQEUUMT@@\\ndcvDBAAAeIeUzZjjh@@\\ndcvJ@BAIWTfuiUjjj`@\\ndcvJ@LBngTen{mjjj`@\\ndcwLaNWXS@|Eg^rRSIIHmUUJ@@\\ndc~D@JCldRTTRLHp|J{PA@@P@@\\ndeL@@Di[ernDYZjij@@\\ndeL@@DjYeIjGijjjj@@\\ndeLD@@eJUUXSaFZjjj`@\\ndeT@@DjUYk``R`@@\\ndeT@@DjWvifjih@@\\ndeT@@DjYUXPbDP@@\\ndeT@h@bBbFbAbIbDfYokjYjh@@\\ndeTB@@IaRYf{aZfj`@\\ndeTB@@KiRYg]nZej`@\\ndeTD@@EIYWVy`@h@@\\ndeTD@@EIfUVz@`h@@\\ndeTD@@EIfUvz@`h@@\\ndeTD@@EJYU^f```@@\\ndeTD@@QIUeQej@@@@\\ndeTD@@YIfUqehD@@@\\ndeTD@@eIfWVyiff@@\\ndeTD@@gHhhhjpmLtp@@\\ndeTD@@iIYe^e```@@\\ndeTD@@yIYVvE`BH@@\\ndeTDPAdH`haIf]VzB@h@@\\ndeTDPBDHbXaIf]VzeiZ@@\\ndeTD`AdHaIe[jz@HX@@\\ndeTD`AdHaIe]jZ@BX@@\\ndeTD`NDHaIfVVfBA`@@\\ndeTH@@RUYTYY`@@aH\\ndeTH@@RUYTYi`@@aH\\ndeTH@@RYVZfZZj`@\\ndeTH@@rJJIHmtA@pD]@\\ndeTH`IBHrJJJJlLADP@@\\ndeTHpIBHJHZHrJJJX|LDPP@@\\ndeTL@@FTfYW[ffZX@@\\ndeTL@@FTf[eXVjjh@@\\ndeTL@@KlbbbtK\\\\uKU@@\\ndeTL@@Qdf]eFVjfd@@\\ndeTL@@QdfygFV``@@@\\ndeTL@@RTfyWxV`@`@@\\ndeTLB@QdyInYqehH@@@\\ndeTL`BjPkDf[W[jjjh@@\\ndeU@@@[IHhXlLuA@@@@\\ndeU@@@aJnUqfhH@@@\\ndeU@@@aJueQfj@@@@\\ndeU@@@gIHhTmpu@A@@@\\ndeU@PBdHchaIf^VFBBH@@\\ndeU@`Dp@aIgeQej@@@@\\ndeUB@DpFFTfUgkfjYX@@\\ndeUD@DdBRY[TYZ`@@@\\ndeUD@DhBRY[TYZ`@@@\\ndeUD@DxBRY[TYZ`@@@\\ndeUD@FdDR[VTYZZV`cH\\ndeUD@HDIRVUunfef`RKh\\ndeUDAHDIFY{HeEDcptAA@@@\\ndeUD`DpY@HRYf|fZjj`@\\ndeUH@AdDee][j@B`@@\\ndeUH@AdLbbRaUM@AT@@\\ndeUH@DDDfyVzV`B@@@\\ndeUH@HpDenUFYh@@Ha@\\ndeUH@JdDie_xZB@`@@\\ndeUHBDxNeIgeQej@@@@\\ndeUL@DpFgHhdhUWMTuH@@\\ndeV@@@RVUenh@J@@\\ndeV@@@RYfUa`Hb@@\\ndeV@@@RYyTYj`@@@\\ndeV@@@rRJEK\\\\MP@P@@\\ndeV@PNBHFHRYeYi``x@@\\ndeV@`ABHRYVvf`@j@@\\ndeV@`ABHRYWVf`@j@@\\ndeV@`D@HRUYTYV`@@@\\ndeV@`LADReyTYk`@@@\\ndeVD@DCDenUFVh@@@@\\ndeVD@FADfygFV``@@@\\ndeVD@I@dfYw[hHB`@@\\ndeVD@IADfyWxV`@`@@\\ndeVD@LB\\\\bTTQU]TuT`@\\ndeVD@N@dfY{[fiZh@@\\ndeVD@NADfyUxVfjh@@\\ndeVH@AAIfuneh@`@@\\ndeVH@AAJYWnf```@@\\ndeVH@BAIemQfk@@@@\\ndeVH@DAIgeQej@@@@\\ndeVH@FAIe[jz@Hh@@\\ndeVH@FAIe[zz@Hh@@\\ndeVH@HAIYVVz`@h@@\\ndeVH@HAJUmQfj@@@@\\ndeVH@IAIeYZYiZf@@\\ndeVH@IAIe]ZZ@Bl@@\\ndeVH@IAJYW~F``H@@\\ndeVH@NAIe]jZ@Bh@@\\ndeVH@NCIELeBpt@Q@@@\\ndeVHPNHHbXaIf^VFBBH@@\\ndeV``Dqad@aIeYzyiji@@\\ndeVh@DkadDfV[[ffZh@@\\ndeW@@@kdigvriZjh@@\\ndeW@PH[`bDbDfueFZjZd@@\\ndeWH@DJPRY[TYZ`@@@\\ndeWH@DZPR[e_aZ@B@@\\nded@@DiUUjjj@@\\nded@H@RnbAbIbDjUUjjj@@\\ndedB@@PYR[UYifXDrj@\\ndedB@@PYR[UYjjX@@\\ndedD@@QIeVVjjP@\\ndedD@@QImUVjj`@\\ndedD@@QInUvjj`@\\ndedD@@iIUmVZj`aH\\ndedH@@RUUUfihDRY@\\ndedH@@RUUUfjhHR@\\ndedHXDBHjPZPzPFPfPRYZZjjh@@\\ndedJ@@IaeIf[zjj`@\\ndedJ@@rneI[nvjj`@\\nded`@@iiReUvjjh@@\\nded`PDqi@HDHRYuYjjX@@\\ndeddABxYAAf^R[kujjT@@\\ndeddABxYAAf^R[mUjjT@@\\ndee@HHxHaH`XbXaImUjjj`@\\ndeeD@BdDR[mUjjh@@\\ndeeD@BhIRUUUjZdHJ@\\ndeeL@BdDEInufji`@\\ndefB@BAAeInufji`@\\ndefB@BANeInvvjf`@\\ndefD`FFPBDiWnjjf@@\\ndefD`FFPBDi]nijf@@\\ndefJ@BAFFTfy^Zjf@@\\ndefL@LAIRYuUjjh@@\\ndeg@@@zTiUWjjj@@\\ndet@@DjYUX^d@@@@@\\ndet@@DjzYKaejjj`@\\ndet`@@siRfUna[``ha@@\\ndet`@@siRfUnnFP`bb@@\\ndet``Dki@HRYYUnFVjVi@@\\ndeu@@@[IEDhcSCH@@@@@\\ndeu@@@kIEEDceCLaPD@@\\ndeu@`Dp@aIeURhYfh@@@@\\ndeu@`LH@cIEEBeeCML@D@@\\ndeu`@@rfFTigmkadHHhP@\\ndev@@@RYyULFZh@H@@\\ndev@@@Re[TjFP@@@@@\\ndev@@@RfUWJzZABH@@\\ndev@@@rQQJHtpr@@@@@@\\ndev@PL@HPHRYUTjFVj@@@@\\ndev`@@raeJY{ZXYB@iH@@\\ndevh@DJndDfVU[af@`hP@\\ndevhADIadFf^R[fUnxVijY@@\\ndew@@@pldTTJVTLmP@P@@\\ndg\\\\B@@ESrJJIIIFMsSMSM@@\\ndg\\\\B@@Q[R[VUmgVf@HhBL`\\ndg\\\\B@@RSR[YVwEVh@bh@@\\ndg\\\\B@@SSRY[W[FVh@Ih@@\\ndg\\\\B@@i]RVYUuzVBBJh@@\\ndg\\\\B@@kcrIQQQIGBkADQT@@\\ndg\\\\B@@x{RYeewgV`hHh@@\\ndg\\\\D@@cIMHhThYJuT@EP@@\\ndg\\\\D@@eIfU_Un`HJj`@@\\ndg\\\\D`ILIAIme[\\\\Uf`BJ`@@\\ndg\\\\H@@RYvYiVvfijjBL`\\ndg\\\\HpL@HcpPHRZUYwNvjhH@@@\\ndg\\\\J@@PUMInUeWiZ@Hj`@@\\ndg\\\\L@@H|bbbftbkBtsMUP@@\\ndg\\\\L@@PdfVUZYmjBBh@@\\ndg\\\\L@@k\\\\dTtRRLwSPPQT`@@\\ndg\\\\L@@yTimYvfF`BJj@@\\ndg\\\\L`HS@BLddJrTRQvmUP@@@@\\ndg\\\\L`NNpbDfUuijZ@Bjf@@\\ndg\\\\``Dpi@HrJJJIRiG[UT`@@@\\ndg\\\\dPHP{YPlmlldabbrV`suKRwP@@\\ndg\\\\d`LF[a@BLddJbbQvfmPLA@@@\\ndg]B@HxEv|bTTRRTlgM@aQ@IBt@\\ndg]B@NTBNtfY}[fyjVjf`@\\ndg]BbInDp`BB{IICiEDUikUUMR@@\\ndg]DPCmaBHJHRYf{uzYjYj}@@\\ndg]HPAuPbBbDfYw[fzB@ij@@\\ndg]H`AuPbDfY_[fz@`ij@@\\ndg]L@DDBmIeye]SZjjjX@@\\ndg]L`FM]l@cIEEideCeTsUKT@@\\ndg]L`LVDL@cIIKDedhLkP@Tp@@\\ndg]L`LnDD@cIIBhhd]ikTC@P@@\\ndg^@pLCDDHWDRUeYWtzjjZi@@\\ndg^B@BAMoHiieDeBimU@DP@@\\ndg^D`EppbDenUuaff@Bf@@\\ndg^D`NEPbDfUv{jZ@Bij@@\\ndg^H@DCHhhhddYimTE@P@@\\ndg^L@NAarJJZJUQ]KSUMU@@\\ndg^h@BzSlDf^[WUvjiif`cT\\ndg_B@DhpK[RY[U{FVh@Ih@@\\ndglB@@Q]RYUumZjjZ`@\\ndglD@@QImUUUjjjj@@\\ndglD@@uIUUUmfYfj@dRVQP\\ndglFPHkivpqLqDen{nzjjjh@@\\ndglLpDp`BH|MBLbdRRRQSUUUT@@\\ndgl`@@`fRefUWejjj`RIH\\ndgl`@@z[ReU]Ujjjj`@\\ndgm@hNdHR@a@a``PaJeynzjfZj@@\\ndgmBPFE]NpQHQDiUf{jjjfX@@\\ndgmL@DdAuInUg]jjZj@@\\ndgmL`DVCl@cIICDmihmUUS@@\\ndgm`PFy]NpBHBDiUUYjjjfX@@\\ndgnD@KADfuUUVjjjh@@\\ndgnD`H[`BLdTRbJRUUMUT@@\\ndgnDpKXpbBBJBDfzUUijjjX@@\\ndgnLPFe]CDpHRUVV[jjif`@\\ndgnL`Fe]@HRevV[ijif`@\\ndg|@@DjU_eZx{BAH@@BJ`\\ndg|@@Dke]eVx{x@H@@@@\\ndg|@P@bBbDfYweVx{``H@@@@\\ndg|@P@bKbDfUvUz[S`@`@`@@\\ndg|A@@cJz]mJ{n{nDpjjjjj`@\\ndg|A@@rae]oIEEDieFpr]UUUUP@@\\ndg|A@@rfE]oIEEhYiCBJ]UUUUP@@\\ndg|B@@KSRYfuVXUmjP`X`@@\\ndg|D@@MIfV]UivviP`R@@\\ndg|D@@MIfV]UivxH@@`@@\\ndg|D@@SHhmEDhcJg[T@@@@@@\\ndg|D@@WHhheEhbtg\\\\D@D@@@@\\ndg|D@@mIe]e^ftvefef`@\\ndg|D@@mIe]e^ftx@H@H@@\\ndg|F@@RaW\\\\bbTbfbi]WMUUMU@@\\ndg|H@@RVUvU[cn`@`@@@@\\ndg|H@@RVYYwySn``@@@@@\\ndg|H@@RYfUWd}mh@@@@@@\\ndg|H@@RfYU[GUn`@@H@@@\\ndg|J@@RiWHheHmDTWUsUUMUP@@\\ndg|L@@HtfYnUvG[ZdJAH@@\\ndg|L@@Pdf{UeRh{Zjh@H@@\\ndg|L@@t|bbbbbJcBmm@tCD@@\\ndg|d@Dq]@\\\\bbbbfJSSimUSTs@@\\ndg|h@DqnAIe[UTYNvjZ`@@@\\ndg}@@@OIEEEDTmWSh@PDT@@@\\ndg}@@@aJVYU^Svv`@@@@`H\\ndg}@@@aJVYU^Svz`@@@@@\\ndg}@@@aJnYU^Svz`@@@@@\\ndg}@A@LINTjWvUz[SB@`@`@@\\ndg}D@DTBrJISQJHrivu@@@@@@\\ndg}D@DhBRY[VuFSmj@@@@@@\\ndg}D@LHNRfueWXSn`BB@@@@\\ndg}DPDp{@H`HRefUWd}njjjjh@@\\ndg}DPFES@H`HRenUVrnFijifX@@\\ndg}H@DdDfvUmQT{Z`@@@@@\\ndg}H@DlDfyVu~GSZ@@@`@@\\ndg}H@DxDf^YVyO[Z`@@@@@\\ndg}H@IlLdTrTraS]Jt@EMQ@@\\ndg}L`JXiTIAIf]VunNzVjZj`@\\ndg}L`JXiTIAIf^vunNzVjZj`@\\ndg~@`K@HRfYU_GUN`@@B@@@\\ndg~D@DCDenUmQd{Z`@@@@@\\ndg~D@EADfufUqT{ZZP`HBL`\\ndg~H@DAIge[TYNvh@@@@@\\ndg~J@DBaW\\\\bbTbfbi]WMUUMU@@\\ndg~L@B@SRYfU]Z]mjPhD`@@\\ndg\\x7FD@L[`QIeyUTYNvjZ`@@@\\ndg\\x7FH@DpprJJJJKJmJfuUUUT@@\\ndiD@`@RdjeVjj`@\\ndiD@x@bLBBdJdFdNdAdDeZjjj`@\\ndiDB@@PaR[UVjj@@\\ndiDB@@QaR[VvjY@@\\ndiDBB@QaSdfumjj`@\\ndiDD@@IIUZYjhHR@\\ndiDD@@qJYWjjX@@\\ndiDH@@RUUVZjBD`\\ndiDH@@RUUZjj@@\\ndiDH@@RYWZjj@@\\ndiDJHDpnDAbHbaahcIIJiIZe@@\\ndiDL@@HTeUUffPQJh\\ndiDL@@IdfWUij`@\\ndiDL@@PTfuUifPSJh\\ndiDL@@idiUVjj`@\\ndiDL@@idiU^jj`@\\ndiDNPHSB[a@XhXrRPzQZe`@\\ndiDdAB[aANd^R[gVje@@\\ndiDdAB[aANd^R[mVje@@\\ndiED@BDDR[mVjj@@\\ndiED@BXDR[mfjj@@\\ndiED`Dka@HRU[fjf@@\\ndiFB@BANEInvZjX@@\\ndiFD@BADf{Ujj`@\\ndiFD@BADf{Yjj`@\\ndiFD@BADf{ejj`@\\ndiFD@D@dfWUjj`@\\ndiFD@LADf]Yjj`@\\ndiFD`JxPBDivzji`@\\ndiFD`JxPBLbdTljjX@@\\ndiFD`JxPQDivzji`@\\ndiFL@DBarJIQEjj`@\\ndiFL@LAJRY{fjj@@\\ndiF`@@SNGHhhcFjf@@\\ndiFd@DpjDNrJJHqji`@\\ndiGDAFxPSiGdf]UjiP@\\ndiT@@DiUTjxVjih@@\\ndiTH@@ReUxRfjef`@\\ndiTH@@RfUXQajiV`@\\ndiTH@@RfU|kahDB@@\\ndiTL@@idfV^nxVfjh@@\\ndiU@@@iJYWrnFP`H@@\\ndiV@@@RfU|kadHB@@\\ndiVH@BAIfUInFjZi@@\\ndiVH@FAIfU[fFjjj@@\\ndid@@DjUZnBAH@@\\ndid@@DjU^nBAHBJ`\\ndid@@DjUfaBB`@@\\ndid@@DjWffB@h@@\\ndid@@DjYUaBHP@@\\ndid@@DjYmaBH`@@\\ndid@@DjY}nBHH@@\\ndid@@LdbRQk``R@@\\ndid@@LdbRQk``b@@\\ndid@@LdbbQxXF@@@\\ndid@H@bBbFbAbDfYnnifj@@\\ndid@p@bBbFbDfYoa`b@@@\\ndidD@@EIYW[f@B@@\\ndidD@@EIe]ih@J@@\\ndidD@@EIfU[ffiP@\\ndidD@@EIfU[hBB@@\\ndidD@@GHhhdVyifX@@\\ndidD@@IIf][hHB@@\\ndidD@@QInUxV`@@@\\ndidD@@iIYgxVB@@@\\ndidD@@yIYVXV@H@@\\ndidD`BDHaIf_[hHB@@\\ndidD`BxHaIf^XZVfP@\\ndidD`FDHcHhdhZzZVX@@\\ndidH@@RUe^Fh@@@@\\ndidH@@RYm^Eh@@@@\\ndidH@@RYm^Fh@@@@\\ndidH@@Rfu^FfiX@@\\ndidHPBBHFHRYgVzB@`@@\\ndidHPBBHFHRYgvzB@`@@\\ndidH`ABHrJJIEn`HH@@\\ndidH`NADRYWZZ@B`@@\\ndidL@@HTfYun``H@@\\ndidL@@IdfYnfZfj@@\\ndidL@@IdfYoaZYf@@\\ndidL@@IdfYoa`b@@@\\ndidL@@KdfYynZej@@\\ndidL@@QdfumnZZjBL`\\ndidL@@XTfUfn`BH@@\\ndidL@@`TiYeLjjj@@\\ndidL@@rldTTqkjjj`@\\ndidh@DKaAInV[fiZ`@\\ndidh@DqaAIe[kffjP@\\ndidh`DJaxHcHheCBjfid@@\\ndie@@@EIYW[n@B@@\\ndie@@@EIfW[hBB@@\\ndie@@@GHhhdVz@``@@\\ndie@@@aJvUxZ`@@@\\ndie@@@aJyW[j@B@@\\ndie@@@iJ[gxZB@@@\\ndie@@@yIYVX^@H@@\\ndie@`BDHaIf_[hHB@@\\ndie@`FDHcHhdhZz@H`@@\\ndieD@DpFrJIJFnZii@@\\ndieD@JXDR[Y^EjZd@@\\ndieDAHxAzQyIYW[j@B@@\\ndieD`JXaBPRYgvzejX@@\\ndieD`LIN@HRZufFZid@@\\ndieH@DDDfyWaZ@@@@\\ndieH@DXDfyWaZ@@@@\\ndieH@HHDeYWaf@@BH`\\ndie`@@pjX\\\\dTTUk`Hb@@\\ndif@@@RUe^Fh@@@@\\ndif@@@RUe^Gh@@@@\\ndif@@@RYVzZ@B`@@\\ndif@@@RYevz@``@@\\ndif@@@RYfVF@b@@@\\ndif@@@RfU~F``@@@\\ndif@@@RfWzXBB`@@\\ndif@@@rRJEKaj@@@@\\ndif@PABHJHRYgVzB@`@@\\ndif@PBBHFHRYgVzB@`@@\\ndif@PBBPFPRYgVzB@`@@\\ndif@`ABHRYevz@``@@\\ndif@`ABPRYVzZ@B`@@\\ndif@`ACDRYVzZ@B`@@\\ndif@`BBHRYgfzB@`@@\\ndif@`D@HRUe^EX@@@@\\ndif@`FBHrJIJFn`BH@@\\ndif@`L@HRf_\\\\jjjh@@\\ndif@`L@HRf_ljjjh@@\\ndifD@BADfyWaZ@@@@\\ndifD@BADfyWaZjj@@\\ndifD@BADfzwaZjj@@\\ndifD@DCdfYTfZiZ@@\\ndifD@FADfW[aZjj@@\\ndifD@J@TiWTjjjj@@\\ndifH@AAIfuxV`@@@\\ndifH@AAJ[W[j@B@@\\ndifH@BAIfuxV`@@@\\ndifH@DAIVUxU`@@@\\ndifH@DAIVUxUjj`@\\ndifH@DAInUxV`@@@\\ndifH@FAIfuxV`@@@\\ndifH@HAIYV[j@B@@\\ndifH@JAIYekjZf`@\\ndifH@JAIYgxZB@@@\\ndifH@JAJ[gxZB@@@\\ndifH@NAIYVXZ@H@@\\ndifH@NAIe]ih@J@@\\ndifH@NAJ[VXZ@H@@\\ndifL@BANR[efEjjh@@\\ndig@@@HTfYun``H@@\\ndig@@@h\\\\dTRQriZj`@\\ndig@@@idiggJejj@@\\ndig@@@kdigwJejj@@\\ndig@@@xTjU^njjj@@\\ndig@`D[`bDfUff`@h@@\\ndig@`Hi`bDeVWajfi@@\\ndigD@DpP[HhdhZyjfd@@\\ndigH@DK`R[e^Eh@@@@\\ndigH@LxPRVUfz`@`@@\\ndigH`BiaBPrJJIEniZf@@\\ndkL@`@BDeUUUjjjj@@\\ndkLB`HSBCprRSEQIYjjjh@@\\ndkLD@@iIUmUVZjj`aH\\ndkLF`DkaTpBLbdtVafjjji@@\\ndkLH@@ReUUVjjjh@@\\ndkLJ@@imMJUUUZjjj`@\\ndkLLHLi`bB|MbCbDeVUUjjjj@@\\ndkLL`HS@|DjUYfjjjj@@\\ndkLP@@anF]OIDhhjeIjYi`RKh\\ndkLd@BgSADf{UVZjjf@@\\ndkLdABWSAMd~rJZYRHijjjT@@\\ndkML@DdAuInUgVjij`@\\ndkND@D@dfWUUZjjj@@\\ndkNF@BAIWSR[YVYjjfX@@\\ndkNH@DAIeuUVjjj`@\\ndkNJ`EaLdp|LddrQTrZjij@@\\ndkN`@@imMJUUUZjjj`@\\ndk\\\\@@LdbbbRuZQT@B@d@@\\ndk\\\\@`@bDfUvUimN@B@@@@\\ndk\\\\@`@bDfYYwZ]NB@@@@@\\ndk\\\\@`@dDfUnukmN@H@@@@\\ndk\\\\@`@dDfUvUimN@B@@@@\\ndk\\\\@`@dDfYYwZ]NB@@@@@\\ndk\\\\@`@qDfYYwZ]NB@@@@@\\ndk\\\\B@@P]RYVyznTviBBH@@\\ndk\\\\D@@wHhhhhbfESZAhD`@@\\ndk\\\\D`ALHaIe[UzZU`@iiH@@\\ndk\\\\H@@RYeg]itxH@@@@@\\ndk\\\\H@@RZYZ\\\\SgZifjf@@\\ndk\\\\L@@KTfYmUXUMjP`R@@\\ndk\\\\L@@X|bbbbTa[nEijjf`@\\ndk\\\\L@@htie]urnF``Ij@bX\\ndk\\\\L@@htie]urnF``JZ@aX\\ndk\\\\L@@iTie]{rnF``Jf@@\\ndk\\\\LPDp`BH|LbdRRaRX]Mjj@B@@\\ndk\\\\`@@iSRfYyUnEPJBja@@\\ndk\\\\`@@j]RfYuUnFPJAjb@@\\ndk\\\\`@@kSrQQQSQEngPJBja@@\\ndk\\\\`@@p]rQQJJIFiXP`jJa@@\\ndk\\\\`@@y]RVUmUae^@HZb@@\\ndk\\\\`@@{SRVUnUag^@Hja@@\\ndk\\\\d@Dq]@\\\\bbbbfJZ]MjjZe`@\\ndk\\\\d@DrUCdfY[uXUujijY`@\\ndk\\\\d@DsmB\\\\bbbTrQXUujjUj`@\\ndk\\\\d@LHYCdimY^X]N`BJh`@\\ndk\\\\h@DrfAIgeU^GSZfh@@@@\\ndk]@@@iJYez\\\\hSdJBh`@@\\ndk]@@@qJYweZ[SB@`@@@@\\ndk]@pAt@a@``aIeoeRkSZf`@`@@\\ndk]D@DhBRY[UWatvjZ@@@@\\ndk]H@ALLbbRfTJiaf@Bfh`@\\ndk]H@BtDfYmUXUMjP`R@@\\ndk]H@DHDfYyWImMjhHA@@\\ndk]H@DTLbTTRaR[mMjj@B@@\\ndk]`PLJnTpBIBDiguermNfZijP@\\ndk]h@HKiTpRYmfTYtz`HIb@@\\ndk]h@HKiTpRgefTYtzZiZiBD`\\ndk^@@@RYV{Vntx@`@@@@\\ndk^@@@RYeg]itxH@@@@@\\ndk^@@@ReUVZ]TziZ@@ABZP\\ndk^@@@RfYU\\\\]Tz@@@@@@\\ndk^@@@Ri_YVftzjX@H@@\\ndk^@pFBPJPFPrJJJZIGitxHB@@@@\\ndk^@pIBPJPvPRYfuUaTxH@B@@@\\ndk^D@BADfyVux]Mh@@@@@\\ndk^D@BCTfYmUXUMjP`R@@\\ndk^D@E@dfYuY[eNB@jh`@\\ndk^D@IADfvYWz]MjdHB@@\\ndk^D@MBdie]vrnF``Jj@@\\ndk^H@DAIVUm^GSV@@@@@@\\ndk^HPJHJqjqIf[u^GS`b@@@@@\\ndk^HPNHJrXaIf^UvGS``B@@@@\\ndk^HPNHLR\\\\QIf^UvGS``B@@@@\\ndk^H`BPHaInUm^GSj@@@@@@\\ndk^d@DkaTCrJIQQHynWVjVZZ@@\\ndk^d@LzULDRZUnTYtvjiZi@@\\ndk^h@DkatLbbTTTU[iujejjP@\\ndk_@@@Y\\\\daRRRTaMNjjjj`@\\ndk_@@@pdif]uriUjB@j@@\\ndk_@@@pldTTtRJrmMjfjU`@\\ndk_@@@x|dTTTRJkit@HBH@@\\ndk_H@NWPRfumUaeZ@HZb@@\\ndklB@@F]RYe]ynZYif`@\\ndklB@@P]R[e[_iZ@Hj@@\\ndklB@@QSrJYJIJF]ZX@b@cH\\ndklB@@QmR[fUxUZBBF@@\\ndklB@@RURYYV|jZfij`@\\ndklB@@SSR[VUVUZZfjPcH\\ndklD@@QIe]URijjjj@@\\ndklD@@QIe]e]Mjz@@@@\\ndklD@@QIgfU}MjhD@@@\\ndklD@@[Hhdhbdjz@Hjh@@\\ndklD@@eJ[Vvfz`@jh@@\\ndklD@@kIEMDdbnf``bd@@\\ndklD`AtIAIVUm~fh@bh@@\\ndklF@@PittfzugEVjjjh@@\\ndklL@@PtfyWUxV`@j`@@\\ndkl`@@kaRe[vTf@HZj@ah\\ndkm@`MLHcHhhdcDfz@`Z|@@\\ndkmD@DHCRYvUvUZh@J@@\\ndkmD@DTCRUfWtYV@`e@@\\ndkmD@DdCrIJJIPxUV@bE@@\\ndkmH`FVPbDfUonkh@bZ`@@\\ndkmH`NVPbDfUunih@JZ`@@\\ndkmL@DpAuIfYeVejjZZ@@\\ndkmL@DpIOHhhdddVyjiVfBN`\\ndkn@@@RYfVya`Hbj@@\\ndkn@pLCDDHWDRUeYWSjjijP@\\ndknD@BADfyWUxV`@j`@@\\ndknD@D@tf^UeFVh@J`@@\\ndknD@D@|bbtTTUgVhBH`@@\\ndknD@LALbbRbaRtvjh@@@@\\ndknDPAWPbFbLbbRbJfkh@bf`@@\\ndknD`ItpdDfUunih@Ji`@@\\ndknD`ItpdLbbRaTtih@Ji`@@\\ndknD`ItpdLbbbRLt[hBBi`@@\\ndknH`It@aJYWunF``JX@@\\ndknL@BACR[me]]Zj@B@@\\ndknL@D@SRUVYu]ZXHB@cH\\ndknL@D@]R[e[_iZ@Hj@@\\ndknL@FASrJJIIJT]ZBBb@@\\ndknL@M@iRYg^un``Jj@@\\ndkoD@DJPwHheLeCAej@BX@@\\ndkoH@DHpRYYUfSZ``h@@\\ndk|@`@BLdTRbtQJagShD@@`@@\\ndk|D@@QIeeUrYngVjijjP@\\ndk|H@@RYegYngUN@@BHH@@\\ndk|H@@RfYU_JGUN`@@B@@@\\ndk}@@@iJUmUR[atpBJ@@@@\\ndk~@@@RYkUdUgYNjjjjh@@\\ndk~@@@RfYU_JGUN`@@B@@@\\ndk\\x7F@@@p\\\\dTRbfQjVGSBBheF@@\\ndmL@@DjYUVGi@@@`@@\\ndmL@@DjYeVdU@@`@@@\\ndmL@`@bLbbbTQ[iV@@@@@@\\ndmLB@@IerJJJZEnxVijf`@\\ndmLB@@RURYUVJaejVjh@@\\ndmLD@@QIe[VfeVi@B@@\\ndmLD@@UJYWwJxZA@j@@\\ndmLH@@RYVuiiV@@@@@@\\ndmLH@@RYiYKnUjjjh@@\\ndmLH@@RYiYKnVjjjh@@\\ndmLH@@RffeZVVjjjh@@\\ndmLH@@Rge[aNFh@JP@@\\ndmLH@@rJJIQEneX@@@@@\\ndmLL@@yTee[VFUX@bb@@\\ndmL`@@pURfV[jVDHJbD@@\\ndmL`@@siRfUmhVxHFJH@@\\ndmL``Dke@HRYYeXYUjfVh@@\\ndmLd@Dqe@TfUeZzUZZeZ@@\\ndmLh@DkeAIefUaeVjYZ`@\\ndmM@@@UJYY~nFP@@H@@\\ndmM@@@eJYY^fEP@@`@@\\ndmM@@@iJYewJEYB`b@@\\ndmM@@@qJYm^neP`@@@@\\ndmM@@@{IDeCDbjU@Bjb@@\\ndmM@@@{IEEEEZzU@B@@@@\\ndmMB@DpNETfYYZEiZjYZ@@\\ndmMH@DHDfVUzzUZ`PH@@\\ndmMHAHx@zIrJJIQEneX@@@@@\\ndmMh@DkaePRYYe[iUifjd@@\\ndmN@@@RYVuiiV@@@@@@\\ndmN@@@RfVWiaT@@H@@@\\ndmN@@@RfV]iaT@@H@@@\\ndmN@@@RfV^kad@@B@@@\\ndmN@@@RfV_kad@@B@@@\\ndmN@@@RfWUiiTB@@@@@\\ndmN@@@RfYWraV`XH`@@\\ndmN@@@rQQJJFfEP@@`@@\\ndmN@@@rQQQQVneP@`@@@\\ndmN@`BBHRYe[ZQV@@@@@@\\ndmN@`BBPRYUUiiV@@@@@@\\ndmN@`BBPRYe[ZQV@@@@@@\\ndmN@`DBHRYVuiiV@@@@@@\\ndmN@`FBPRYVukiV@@@@@@\\ndmN@`NBPRYegXYV@@@@@@\\ndmN@`NBPrJJIQEneX@@@@@\\ndmN@pN@H`HPHrRPqIZneUhDB@@\\ndmND@BA\\\\bbbReInFjZjd@@\\ndmNH@BAIfUmiEX@@@@@\\ndmNH@DAIe[VfeX@@@@@\\ndmNH@FAIe[VneX@@@@@\\ndmNH@NAIYe^neZdHB@@\\ndmNH@NAIfV]aeX@@@@@\\ndmNH@NCHhheDVzU`@@@@@\\ndmNHAH@Nb\\\\bbbTQ[iV@@@@@@\\ndmN``DkaT@aIefUneVjVjP@\\ndmNd@DqiTARYVUkiUijUh@@\\ndmNh@DkaTDfVYVzUZiZi@@\\ndmO@@@pdif]|jUZ``H@@\\ndmT@p@AHbDbLddJRRjjj`@\\ndmT@p@bBBEbDeYyzjjh@@\\ndmTB`HSBCpRjuUZjj`@\\ndmTD@@QIeU]jjZ@@\\ndmTD@@iIUmUfjjBD`\\ndmTDPDpOBICIHUHiIjjh@@\\ndmTD`HdDiJiUZjjf@@\\ndmTH@@RUgVYjf`aD\\ndmTH@@rJQHiRjZZ@@\\ndmU@HLT@a@c`bPaIggYjjf@@\\ndmU@pLD@a@c`cHheEKFjfh@@\\ndmUL`LZiT@aI[mZjZf@@\\ndmVD@D@dfWUVjjh@@\\ndmVDbNp`qNeI[Ujfjj@@\\ndmVL@LAERYuUZjj`@\\ndmWLaNeXS@|Ie^Rju_ZjiP@\\ndmlH@@RfVvaFGajjjj`@\\ndmn@@@RZUYX^gejjjj`@\\ndmnH@JAJUe^D[iV`@@@@@\\ndmt@H@bAdIdEdDfUvjZ@Bj@@\\ndmt@h@bJbNbIbEbDfV[vFZjj`@\\ndmtB@@PUrJZIJGiZ@H`@@\\ndmtB@@QeR[f]FV``H@@\\ndmtD@@QIe]TjZjjh@@\\ndmtD@@QIgYVUZh@@@@\\ndmtD@@UIfuwaZ@B`@@\\ndmtD@@WHhidh^Eh@J@@\\ndmtD@@aJye[ahBB`@@\\ndmtD@@iJ[g_ahHBP@@\\ndmtDPAdH`haIf]Un``J`@@\\ndmtDPBTHbXaIf^un``JP@@\\ndmtDPITICiAIfVYa`Ha`@@\\ndmtDPNDHaXcHhheEVfBAb@@\\ndmtH@@RVUv[fZjZ@@\\ndmtH@@RVUv[jZjZ@@\\ndmtH@@RYWZih@Jh@@\\ndmtH@@RYeY[hBBh@@\\ndmtH@@RYe[[hBBh@@\\ndmtH@@RYeeZVjjj@@\\ndmtH@@RYeeZZjjj@@\\ndmtH@@RYe~[ffjZ@@\\ndmtH@@RYvUeVf@@BL`\\ndmtH@@RZWv[jjjZ@@\\ndmtH@@Rfuu[j@BXBA`\\ndmtH@@Rfuu[j@Bd@@\\ndmtH@@Rfuu[j@Bh@@\\ndmtH@@rIQQQWiXBH`@@\\ndmtHPNBHHHRUUeeZjii@@\\ndmtH`IBHRUe]xY`@hBH`\\ndmtH`JBHRYVueYi@@BHP\\ndmtL@@ETfYUVyifi`@\\ndmtL@@F\\\\bbfbQXVjjj@@\\ndmtL@@QTfyW^Eh@I@@\\ndmtL@@QTfyW^Eh@J@@\\ndmtL@@QdfygQehHB@@\\ndmtL@@SdfVyyUjB@@@\\ndmtL@@yTee[VE`BJ@@\\ndmu@@@GHhhhhvf@bb@@\\ndmu@@@aJyyVUjh@@@@\\ndmuB@DpAeTfUejyjiV`@\\ndmuB@DpFFTfUgjyjfj`@\\ndmuB@DpFe\\\\bbRaRkfjZi@@\\ndmuD@ITDR[e]xV`@h@@\\ndmuDAHDEFU{HeEDh^F`HJ@@\\ndmuDPHhfBHFHRYf~kjfZj@@\\ndmuD`LVD@HrRRqIXYV`@`@@\\ndmuD`NEeCDRUf_FYiZfBH`\\ndmuH@DHDf]eYUj`@@@\\ndmuH@DTDf^Uqej@B@@\\ndmuH@DpDfUmYUj`@@@\\ndmuH`BhPbDfUmzZZZ[`@\\ndmuH`BhPdDfUmzZZZ[`@\\ndmuH`BhPkDfUmzZZZ[`@\\ndmuH`BhPqDfUmzZZZ[`@\\ndmuH`NVPbDfUujZ@Bf@@\\ndmuL@DpByIf]zfZjZh@@\\ndmuL`DxiTHaIevxjfjih@@\\ndmv@@@RYfVXXBHh@@\\ndmv@@@RYfWXXBHh@@\\ndmv@@@rJQFIJUjh@@@@\\ndmv@@@rRJIIFUjB`@@@\\ndmv@HDBHFPfPVPRYWZih@Jh@@\\ndmv@`D@HRUVUeUj@@@@\\ndmv@pEBPRPrPrJPqIXYj`@`@@\\ndmvD@DATf^Uqej@B@@\\ndmvD@DATfvUqej@B@@\\ndmvD@DCdf^YyUjB@@@\\ndmvD@EADfvUqej@B@@\\ndmvDPBS@BHBLddjbReUjjj@@\\ndmvD`La@BLddlRVFUh@H@@\\ndmvD`La@BLddlTReUhB@@@\\ndmvD`NePBDig{ljfZf`@\\ndmvH@DAIgfVUZ`H@@@\\ndmvH@FAIe[Vn`BJ`@@\\ndmvH@FCHhhhdYUhJ@@@\\ndmvH@IAIeYVfZVih@@\\ndmvH`NdHaIe]Zf`@i`@@\\ndmvL`IaL@HrRRqIPUV`B@@@\\ndmw@`Dp`BDf]eYUj`@@@\\ndmwD@ByPQInvVUZjeh@@\\ndmwH@Dp`RYvUeVj@@@@\\ndnDH@@ReVDijiZ@@\\ndnDH@@ReVDijij@@\\ndnDH@@ReVDijji@@\\ndnDH@@ReVDijjj@@\\ndndD@@iJUhPfijjj`@\\ndo\\\\BPHP{@HtHrRPzIKJQZjje`@\\ndo\\\\F@@Savtf^UVYjjjY`@\\ndo\\\\NPHQevw@DHDrRYJKJHqjfii`@\\ndo]B@L\\\\Dv|bbtTTUTZjjjX@@\\ndo]LpN_JXH`o@xaIUkUWjfjjh@@\\ndo^B@NAK]ImgV^ZjjjX@@\\ndo^D@D@dfWUUUjjjj`@\\ndo^J`CaLKP|LddqbbTlZijfhHi@\\ndo^LpGZ[BHHHhHrJZQIIHrZjji`@\\ndo^LpNWSCDpHJPRV]efyjjfZBH`\\ndo|D@@QIgfUYuvj``h@@\\ndo|D@@QIn[WVeVj@Bj@@\\ndo|J@@S[_HheDdeDYMjBBb`@@\\ndo|L@@RtfUVuwSZjp@h@@\\ndo|L@@RtfvYWwSZjA@h@@\\ndo|L@@iTinU]_ihHHjXBCP\\ndo|L@@iTinU]_ihHHjXBC`\\ndo|L@@kldTtTRQrEZBHbi@@\\ndo|LPDp`BH|LbdRRbRQmvjhJ@@@\\ndo}D@DTIrJZQQQIVwZjAh@@@\\ndo}DPAuSBHJHRYg]nVzB@ij`@@\\ndo}D`ILmBHrJJIIESQa``bfh@@\\ndo}H@DHLbbTbjbRmvjj`@@@\\ndo}H@DpLbbbLRVTWVj`@j@@\\ndo}L`LvDl@cIIBidleIUZ`@i`@@\\ndo~B@BAC_HiiMhdh]mjj@H`@@\\ndo~B@BAK]InVuf[fjjif`@\\ndo~B@I@moHhhdddcFEjVjYh@@\\ndo~B@JAC_HheBhdh]mjj@H`@@\\ndo~D@DAlbbbRQbRmvjj`@@@\\ndo~D`MNpqLbbbRLRa[hBAkZ@cd\\ndo~J`IaLNpaLddlRTrTEVh@bf@@\\ndo~J`LXUMpBLdTVafffrjjjjj`@\\ndo~L@LANRYye[iujBBJ`@@\\ndo\\x7FD@Lk`QIgff{yVjZjjP@\\ndo\\x7FH@DxPRYYe}ZyiZjjh@@\\neFA@lhbL@\\neFAAD`bJ@\\neFAADhbL@\\neFABDhbL@\\neFABHhbL@\\neFACDlRL@\\neFB@Hc@@\\neFB@Jc@@\\neFBBHc@@\\neFBBlc@@\\neFBCDc@@\\neFDBb`@\\neFDBc@@\\neFHBL@\\neFJHaHh@\\neFJHbHh@\\neFJhUKhh@\\neFPBc@@\\neF`BL@\\neFbHbHp@\\neM@H~@\\neM@ghz@\\neMA@HPaIT@\\neMABD`bM`@\\neMABlZqIh@\\neMACD\\\\QIh@\\neMB@Jch@\\neMBBHRZ@\\neMBBPRY@\\neMBBlRZ@\\neMDARV@\\neMFI@bMP@\\neMHAIX@\\neMHAIh@\\neMJHaHv@\\neMLRRWhv@\\neMPBch@\\neM`BN`@\\neMhDRV@\\neMhHRY@\\neMhHRZ@\\neMhHch@\\neMpBXv@\\neO@Hyj@\\neOBBHcfh@\\neOBCDcfh@\\neOHBNZ`@\\neOPBcfX@\\neO`BNZ`@\\nfH`T@@\\nfH`X@@\\nfH`p@@\\nfHap@@\\nfHbT@@\\nfHbh@@\\nfHc`@@\\nfHcp@@\\nfHdH@@\\nfHdP@@\\nfHdT@@\\nfHd`@@\\nfHe@@@\\nfHf@@@\\nfHfp@@\\nfHg`@@\\nfHgp@@\\nfHpXT@\\nfHppT@\\nfHpp\\\\@\\nfHppt@\\nfHrpT@\\nfHtHh@\\nfHt`x@\\nfI@@\\nf`a@`@@FrJJIJQJrLxtsUSU@@@\\nf`a@`@@ZrJJJQIPfJltEPTT@@@\\nf`aA@@@YEEEEETdfB`Hbjj@@@\\nf`aAb@NFlBHrJIKIRJUTY@AUST@@@\\nf`aAc@DXH@HaxNBLbdRRaRfvcMUP@U@@@\\nf`aIB@DXHYp@aIgVUueZZf@Bf@PI@\\nf`aPP@B\\\\@bwlbfdRLRTIgMUT@Q@@@\\nf`aQB@NJdBHRYWVyncH@JZjp@@\\nf`aQC@IVLBPQHXdLbdLRTvf`eUPADu@@@\\nf`a`R@NBT{pHaIe]nujL`@jZf@@@\\nf`a`b@KRTCDRVUvuYgJ@BZj`@@\\nf`a`b@KRTCDrIQISPiJLEPACUT@@@\\nf`a`r@MPQ`ag@|LddqTTRbNkMU@QC@@@\\nf`aaB@NRADYEDediiDZL`@ijj@@@\\nf`aaP@I@QPQlbbTabaaeNMUSUUP@@\\nf`aa`@D@IqInvuURTZjZff`HUV`\\nf`axB@DXIhso@BDf]e]VdijZVZZ@`dj@\\nf`i@@@DjYeW_YHRg^@@`B@@@@\\nf`i@@@DjYeeoyHQm^@@@@h@@@\\nf`i@@@LdbbbRVQSEBd{p@DA@@@@@\\nf`i@@@LdbbbTRISIBt{p@DD@@@@@\\nf`i@@@LdbbbbbRkEB\\\\[p@@PD@@@@\\nf`i@@@LdbbbbbSwEBlYp@@P@P@@@\\nf`i@@@LdbbbbbT_EBl[p@@PA@@@@\\nf`i@@@LdbbbbbrKEBl[p@@PA@@@@\\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@@\\nf`i@P@@HTYIe[VUZLeiwfi@HjhP@@\\nf`i@`@@BrJJJJJIXlUiuoP@D@@@@@@\\nf`i@`@@DRYfyU]`mNmyi`@@B@@@\\nf`i@`@@DRYfyU]`mNmzB@@@@@@@\\nf`i@`@@LRYfYuw`eV]zhJ`@@@@@\\nf`i@`@@VRYfYU]`eNMyh@`AB@@@\\nf`iA@@@YHhhheLUfBdYwjBb@@H@@@\\nf`iH@@@RM[IEDhmBdeS`eZL@@DMTD@@\\nf`iH@@@RM[IEDhmBdmS`eZL@@DMTD@@\\nf`iH@@@RlyJYY{WZ\\\\Dhu`@@bZ``@@\\nf`iH@@@Rl{IEDhmCDcS`eZl@@DUTB@@\\nf`iH@@@TUkIEEEhdd\\\\s`eV\\\\APUTlL@@\\nf`iH@@@XDiJYYe_jRXHs``jJYa`@@\\nf`iH@@@XDkIEDhhdmcRSAF\\\\DEQSLL@@\\nf`iH@@@\\\\myJYfUuZ\\\\d[S`@@@H`@@@\\nf`iH@@@\\\\myJYfUuz\\\\d[S`@@@H`@@@\\nf`iH@@@\\\\m{IEEEDedkSdcZ\\\\@@@AD@@@\\nf`iI@@DJlxBSJvmjtYKQkMR@PuQ@@@\\nf`iI@@HXIXBRsKkZtxkSoSUP@@@@aA@\\nf`iI@@H\\\\EhFQJJIPiIKdeZ]z`HajTh@@\\nf`iP@@@NRifyWU`eVMzjPZBbP@@\\nf`iP@@@VRifyWm`eNMzjPZBbP@@\\nf`iP@@@^RifyW}`eVLzjPZBJP@@\\nf`iPB@LD@DYHhbhheD\\\\TtYwjY`@@H@@@\\nf`iPBDK^@D@eJYfUuZ\\\\d[S`@@@H`@@@\\nf`iP`@BJ@aInUUm^BUiwfjjh@F@@@\\nf`iP`@BR@IIf]UUV\\\\UiwfiZZ@H@@@\\nf`iP`@B\\\\@aInVUuQRUiwfjij@H@@@\\nf`iP`@FB@QIf[eU~Rtzwff@@@H@@@\\nf`iQ@DK^@BTifYWUirQmN@@@@b@@@\\nf`i`@@@IKLlj{pRkN}p@@@@@@@\\nf`i``@M@YdTTTTQaRyIQg^jBb@@P@@\\nf`ih@@@LDYvRJIQPiIJcIJtX@@`ZhH@@\\nf`ih@@@\\\\UYvRJJJJsIJgIZMX@HBJhH@@\\nf`ih@@@\\\\eYvRJJJJUKJgEZMX@HHFhH@@\\nf`ip@@@N}dbbbbRQrhJQmV@@@@J@@@\\nf`ip@@@V|eLsJzmNRMip@@@DP@@@\\nf`ip@@@XTeLwOvmNJt{pPQT@A@@@\\nf`ip@@@XUdbbRRRaRiqVg^BBJ`@H@@\\nf`ip@@@XdeLv{ZmNRUYpPQP@Q@@@\\nf`ip@@@XdeLv{Z}NRUYpPQP@Q@@@\\nf`ip@@@XheLwKkkNRT{pQAU@@@@@\\nf`ip@@@XmdbbbTTqVXJQg^@H@@@@@@\\nf`ipB@BBdBHRYeY_Y`nRlzBAJiXh@@\\nf`iq@@BBdAIf]UUV\\\\UiwhH@@@@@@@\\nf`iqB@HLEpBHeJkOrnBBd{uKSL@E@@@\\nf`q@@`@QBhbtQzHRYegeudcN``@`b@@@\\nf`q@A@@QGhaIe]fuzLlz@Bh@H@@@\\nf`q@P@@HMyIgUe[]V]yjZ@Hh`PI@\\nf`q@P@@HMyIgfU{]V]yjhDHh`@@\\nf`q@P@@HTyIgUfUc^lyjZBB``PI@\\nf`q@P@@HU{HhlhheEbhvkMULttr@@\\nf`q@`@@LRYfWg^Qg^ZB`@@@@@\\nf`q@`@@LrJIJHiQITx{t@QL@@@`J@\\nf`q@`@@^rJIJEJIKTYYt@Dp@P@ar@\\nf`q@`@@^rJJJJHpkTXkSPTPUT@@@\\nf`q@a@JZADFbLbTTTtRROIN}TmPLA@@@\\nf`qA@@@ILrj}jISoM@a@@@BEH\\nf`qA@@@YDhhdmECJ\\\\UYfiVjZP@@\\nf`qA@@@YDhhdmECJ\\\\UZfiVjZP@@\\nf`qAB@C@bLbRbbbebpmV]TAECTP@@\\nf`qAP@@De[vQQQSJJFTVcNZdJHbP@@\\nf`qA`@@FmdbbdTUrRiIVjBh`jd@@\\nf`qA`@@N|dsLjolcZlt@@@T@@@\\nf`qAp@@HiIUgYEDhdeDUBLEIjfjjZ`@@\\nf`qHB@DXIp@PdskKJzcN|uL@@@@HD`\\nf`qHP@DXxHDg^rJIQSPiITyhsSUUUS@@@\\nf`qH`@DLeXELbbTVRTQfcN|uMUUUP@@\\nf`qH`@DXEXFdfYfWVYHufjjYZj@@\\nf`qH`@DXUXAlbbbJRRfaJN|uUUSUP@@\\nf`qH`@DXtX@lbbbbbQRSIF\\\\uUMULp@@\\nf`qIB@DXIHP@aIgYfuyJ]yjZXHB@PI@\\nf`qI`@DXEXBmYEEEEDldVRMYjjfVj`@@\\nf`qP@@@PRkfUWvQmVj@@@J@@@\\nf`qP@@@^RYWUe^cKN`@j@B@@@\\nf`qP@@@^Rfuue]gKNh@J@B@@@\\nf`qPA@NBAD^bDfUuYWhrsh@I`@`ACd@\\nf`qPB@DX@DILwLjoiuoMUUUUT@@\\nf`qP`@DBAKHheHdhbmPSoMUTa@P@@\\nf`qP`@DXAqIfWnUrL]yjihHB@@@\\nf`qQ@@FRAdTRTbdTLMYwfjjjjj@@\\nf`qQB@G^`@HRkfUWvQmVZ@@@J@@@\\nf`qQP@DX@ISoILrl{jsfcMUMMUT@@\\nf`qQb@LD``P@cIICDhhlUrSoKUST@@@@\\nf`q`P@L@PHrSJwJwJmhsUAAQQ@@@\\nf`q`P@L@PZvQQISQIPiVg^ZhBBjH@@\\nf`q``@D@EdTRdTTqVYIwfji``H@@\\nf`q``@D@HdsOZvjmN|uT@@@@@@\\nf`q`b@ILD@HrQQJJMQITX{uMTt@D@@@\\nf`qa@@D@RYyeg^Qg^Z``@@@@@\\nf`qa@@E@rQQIZYQF\\\\EjuA@TuQ@@@\\nf`qaA@ODADRbLbbbRRaRsAV]AAD@D@@@\\nf`qaP@D@hIVdfVfy{IrgFjjfjj@@\\nf`qa`@L@PKHhdheEhchsoMTD@@@@@\\nf`qa`@L@QqIgfUnyZTYjBBJh`@@\\nf`qi`@DTxIPC^rJIQQJiILyISUKMUU@@@\\nf`qi`@FRt{pDDR[mfUuVkNZjhDB`@@\\nf`qp@@@Hpds\\\\rj~gV|uP@@@@@@\\nf`qpP@DXxBQoYEDhihUDZBuYijjji`@@\\nf`qpP@DXxBSoYEDhihTdjBtYijjji`@@\\nf`qpa@LR}A@@`PQddaTTRRUtxuejBPha@@\\nf`qq@@BBdAIf]ueV\\\\]zB@f@@@PE@\\nf`qqa@FRUAE`AE@cIICDedeDJQgKTuMMR@@\\nf`y@@@DjYeU\\x7FYHRmF]x@B@D@H@@\\nf`y@@@DjYegvYHQmNmx@@@BHA@@\\nf`y@@@LdbbbbbfkEBMIuo@@@@@@@@@\\nf`y@@@LdbbbbbfkEB]Jqo@@A@PA@@@\\nf`y`@@@ISKJmmQ`cZ][p@@@@@@@@\\nf`y`@@@ISKONwS`iZl{p@@@@@@@@\\nf`y`@@@YHdhddhTbTeiQg^@@@@@@@@@\\nf`~@`@@HR[UUUUjjjjh@@\\nf`~@`@@TReWUUVjjjjh@@\\nf`~@`@@XRfUv}ZjijihDFP\\nf`~A@@@IJskNmSUMTtABGb@\\nf`~A@@@ISjjjkSLsMTBbDbqDjP\\nf`~AJ@HHpSdmV|CprRSESSSSMUUUT`@@\\nf`~P@`LZ@DHBBAB`cHheDdiXduUTuT@@\\nf`~PQ@FBUhu`AD@aJUYn{zjjfZ`@@\\nf`~X@@@TYhwdiUUU]jjjjj@@\\nf`~`J@NPQafcN|CprRRjYQQFMTuSS@@@\\nf`~`b`KLLBHHDTBNA@`aIneUYYjjjZ`@@\\nfbc@@@DjYeUU]VJEKQ`ybd@B@D@@B@@@\\nfbc@@@DjYeUoUvRDkQoIcd@B@@@@B@@@\\nfbc@@@DjYeU\\x7FUVRDkQg^Sd@B@D@@B@@@\\nfbc@@@DjYeeU_VZEJt_ICd@@@@`D@`@@\\nfbc@@@DjYeeou~RD[W`qSd@@@B@P@`@@\\nfbc@@@LdbbbTRrTroIBMks`ir@@@@Q@@H@@\\nfbc@@@LdbbbTVraVSIBMkugIr@@@AP@@@@@\\nfbc@@@LdbbbTVtRqSEBMjsoIr@@@@T@@H@@\\nfbc@@@LdbbbbbVVrOEBlXKoIr@@D@B@@P@@\\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@@@@@@@\\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@QC@D@@\\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@@@@@@@\\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@DS@D@@\\nfbc@@@LdbbbbbbcJwEB]Jq`ir@@DA@@A@@@\\nfbcA@@@ILk\\\\l|{txhug^BgKRtBPBAQ@@@\\nfbcA@@@ILsLjmwLDkqhnRGKP@@@@@@@@@\\nfbcA@@@IRlrrk{pQSbgVBgM@@A@@@@@@@\\nfbcP@@@JrQQJJZYIEITxKQkN|gH@@TUP@D@@@\\nfbc`@@@IRlrrk{pQSbgVBgMT@A@@AP@@@\\nfbc`@@@YHheDdihhTZLD[P[^Sd@@@@@@@@@@\\nfbc`@@@YHheEMDXlijREhuoQSd@@@@@@@@@@\\nfbeA`@@^rdrjljmkXKSUAAQT@ab@\\nfbe`P@J@QjNQQJZZJJJYWrVjjAbJH@@\\nfbe`a@KDtBlEVYEEDeDh]ddfR``hfzj`@@\\nfbeaS@Lfl{rPPd@a@QddRTRRTTWTtFj`hFXf@@@\\nfbepP@LZbAC`iLjmmnvjtuUMUTuP@@\\nfbepb@BZ}IPHaIf]V_VUgHHBfjjh@@\\nfbm@P@@BMGHhhhhhhm\\\\esRoNBt@PT@UP@@@\\nfbm@P@@HD[HhdihdiddYSbk^BuHPTUMP`@@\\nfbm@Q@NV\\\\DDPfHrJJIQPqIJFLUKT\\\\pPM@LQA@@@\\nfbm@`@@HRYvYfUWTYrPyZh@@@H@@@@\\nfbm@`@@YRYVvW[WhpThi`@ij`@b@@@\\nfbm@a`FZADDbAQ@XaLQfHrJJJZIFYJK\\\\ehwhpQDT@QQ@@@\\nfbm@a`FZADDbAQChbLQfHrJJJZIFZKP|ejpTpQDTDDQ@@@\\nfbm@p@@JMxJ\\\\bbbbbbbRegAZb{KPADPLQ@@@\\nfbm@p@@JmxJ\\\\bbbbbbTRacAZb{KPADDLQ@@@\\nfbmAP@@BLENQQQQQQQYG[bm^]Eh@bHAJ`@@\\nfbmAP@@BLGNQQQQQQQYGGbm^]Eh@bHAJ`@@\\nfbmAP@@BUGNQQQQQQPeIG`mNBehIb@@b`@@\\nfbmAP@@HCGNQQJIYJJKSDeEZBejjjjjjj@@\\nfbmAP@@HeENQQJJJIKZIUgMNmyj@H@Bj`@@\\nfbmAP@@JMxNQQQQQQQIRw`mQ\\\\eh@bHFB`@@\\nfbmAP@@\\\\e{NQQQJJKFIKYgEFbehFH`HB`@@\\nfbmAP@@\\\\e{NQQQJJKFIKYgEFbehJH`HB`@@\\nfbmH@@@\\\\myJYfUu^zgIFtx@@@BJj@@@\\nfbmH`@EVBdGlbbbbbbTRacAZb{KPADDLQ@@@\\nfbmH`@JRUDBTin]UUU~Bt[pZB@@@Bh@@@\\nfbmHp@J\\\\DhBC^SgHheEDjheEdsdeNBuRsUUUU@@@\\nfbmIR@LLDiAoIr@HrJSJIHjIQY\\\\EIS`uUJuUUUP@@\\nfbmPB@NA@DYHhhhddmcEJ\\\\e[Sj@H@`jj@@@\\nfbmPB@NQ@DYHhhhddmbeJ\\\\e[Sj@H@`jj@@@\\nfbmPBDK^@D@eJYfUu^zgIFtx@@@BJj@@@\\nfbmPP@KA@kr\\\\bbbbbbTRacAZb{KPADDLQ@@@\\nfbmPQ@ARMyNPQAHaIf]UyYugIJ\\\\FB@ijjjJ@@\\nfbmPa@NVtx@PHHrQQQJIPjXiTD[r\\\\uK]S[@D@@@\\nfbmPb@AJ|dDPdrmrljoSfgQs@DMPTBD@@@\\nfbmQB@AJRBHRYVyV[WisShy`BFhJAB@@@\\nfbmQB@EZBBHrJIJZIQQYHtxhr\\\\pACUAHA@@@\\nfbmQ`@DX@sJSJmsJkyJNbEKUM@@@E@@@\\nfbm`P@A@BgJSLsLoOsEZ}ZKPADABM@@@\\nfbm``@A@BdsLsJk|qVoVbt@Q@PeP@@@\\nfbmh@@@XIQRTsNj~rkNRtgHD@DU@@@@@\\nfbmhR@DXyJroIrBPrJIQQJIYPyTDZs`sUMUUURp@@\\nfbmi@@DTxIPLbbTTRqbRfSNRUxKUKM@AUP@@\\nfbmiP@DTxIPC^SgHheEDjheEdsdeNBuRsUUUU@@@\\nfbmiP@DTxIPMVSgHheEDbmDddsde^BuRsUUUU@@@\\nfbmiP@DXXKPC^SgHhdheDYeEeSdmNBtuUUUUK@@@\\nfbmiP@LF]EHIJugIEEEDdhjllRegAcUUUPHET@@@\\nfbu@AP@QAHadPJHeDZbGQ@XaLQfHrJJJ[PrZJ[TyzMLuUULuP@@\\nfbu@S@FZCDDPRH\\\\DILs\\\\}|r|dgLDQDuKTH@@\\nfbu@`@@IRYV{eg^irNX@aj```@Py@\\nfbu@`@@YRYWYeg_hrJVeffjef`@@\\nfbu@b@AVADYEDeCMHiXdjLSf@Bji`@@@@\\nfbu@b@AVADYEDeeMHiXdjLSf@Bji`@@@@\\nfbu@b@AVADYEEDeKHiXdf\\\\Sf@`ji`@@@@\\nfbuAP@@BtFNQQQQQJKGIISk^Z@HH@j`@@\\nfbuAb`BJ\\\\BHxDRbHqFXcHhhmDiXhmDpPTpPQLDDP@@@\\nfbuHP@DTtdCHyrJIJHqSSIQTxEKUMUUTsP@@\\nfbuI`@DXtX@dyEEEEDbddUFRLyjjZjZfX@@\\nfbuIp@DXyHBcV|gNQQJJIQYJGJ`gAZZjjjjj@@\\nfbuPJ@CA`cANJ}dGaddfJbTQbbvejJVjjjjYf`@@\\nfbuPb@GQxDDPdrnlkk]QakP@T@EMP@@@\\nfbuPr@FVQSaoIAHIM\\\\w[KntDxMUUULuMP@@\\nfbuPr@NBYhwdyAbIJsNk[NbdxLtmTuUUPHP`\\nfbu`P@D`EGNQQQQQUJYJIb`iZjjjjfZ@@\\nfbu`a@HLx@JpDYHheHiXddmgQBfje`@@B@@@\\nfbuaP@L`pIUdifV^}}ZR|FjjjB@k`@@\\nfbua`@D@uYIge]nyTTdyZ`@jh@@@@\\nfbupb@IZCrpHaIe]YfWjcOA`@jjYZb@@\\nfbupr@DDhJRgIrBHRYYymY_IRwiiijjjj`@@\\nfby@`@@HR[UUUUUZjjfjj`PT`\\nfby@`@@HR[UUUUUZjjjjj`@@\\nfby@`@@YRUUUUUUjknknj`@@\\nfbyA`@@LdeJl{jjkSUMLsU@haxjSKd\\nfbyPH@BZ@bR`qSgHieDeDXdhhuUSUTs@@@\\nfb}@@@DjYeeou~RD[Wdy@@@@`H@@@@\\nfb}@@@DjYee\\x7F]^RD[S`q@@@@@B`@@@\\nfb}@@@LdbbbTRrJROEBMipT`@@@@DP@@@\\nfb}@@@LdbbbbbRJvcCBTzHT`@A@@@P@@@\\nfb}@@@LdbbbbbRVNSCBTzJ\\\\`@QDTB@P@@\\nfb}@@@LdbbbbbRVNSCBTzJ\\\\`@QDTD@P@@\\nfb}@@@LdbbbbbT^VgEBl[tT`@A@DTpD@@\\nfb}@@@LdbbbbbT^VgEBl[tT`@A@DUPD@@\\nfb}@@@LdbbbbbTqrOEBlXLT`@A@EEPB@@\\nfb}@@@LdbbbbbqfvSMBlYr\\\\`@A@A@@@@@\\nfb}@B@@RBSJwKON}NJMYr\\\\p@@@@P@@@@\\nfb}@B@@RBSLl|{vkART{r\\\\p@@A@@@@@@\\nfb}@B@@RBSLl}kvkART{r\\\\p@@A@@@@@@\\nfb}@B@@RBSLsKoN{AJlxJ\\\\p@P@@@@@@@\\nfb}@B@@RFQQISQJJZUJgEFmyNX@@@B@@@@@\\nfb}@B@@RFQQQJIIQIKEgIF|ENX@@@H@@@@@\\nfb}@B@@RFQQQJIIZJYEgIFmyNX@@@@H@@@@\\nfb}@B@@RFQQQJJIJIIEgIVCfJX@@@B@@@@@\\nfb}@B@@RFQQQJKPiIII`iJlzJX@@@@@H@@@\\nfb}@B@@RFQQQJKPjJEI`iJmyNX@@@B@@@@@\\nfb}@B@@XfQJJJJIIPy[bmNlENZ@@@@@@@@@\\nfb}@B@@XfQJJJJJIJHgfc^\\\\fNZ@@@@@@@@@\\nfb}@P@@HuYIeYUWUVcEF]yNViBBJ`B@@@\\nfb}@P@@HuYIeYUWUVcEF]yNViBBJjjF@@\\nfb}@`@@DRYfu{VuXIVg^Sei`P@@@`@@@\\nfb}@`@@DrJJJZIQIIHlEksdqsA@@@@@@@@@\\nfb}@`@@IRYe^um]HpTcVCEhH@@@J`@@@\\nfb}@`@@LrJJJJHpiII\\\\dkSoIsTED@@@H@@@\\nfb}@`@@LrJJJJHpiSI\\\\dkSoIsTED@@@H@@@\\nfb}@`@@LrJJJJHpqJH|dhw`isTED@@@H@@@\\nfb}@`@@LrJJJJHyISI\\\\dkSoIsTED@@@H@@@\\nfb}@`@@LrJJJJHyJIK\\\\dkS`isTED@@@H@@@\\nfb}@`@@LrJJJJJFHpi\\\\UjsoIrtCA@@@H@@@\\nfb}@`@@LrJJJJJFHpi\\\\UjsoIs@D@@@@@@@@\\nfb}@`@@LrJJJJKIIIH|Djw`isTEP@@@@@@@\\nfb}@`@@QrJJJJIIQ[Rldiq`~Rt@@@@QP@@@\\nfb}@`@@YRYVumUehrVkNBeijZfjjj`@@\\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@@\\nfb}@`@@YrJJQIFYIIKDyKUgQRuUTuPAT@@@\\nfb}@`@@YrJJQIFYJYKDyIUgQRuUUU@AU@@@\\nfb}A@@@IKLlrjk|Dip\\\\qSP@@PEAA@@@\\nfb}A@@@ILrrkszlyHuoIs@@@@P@@@@@\\nfb}A@@@ILrsvoZlEISoIrtDPD@@P@@@\\nfb}A@@@ISZvmkZlxkSoQSP@@@AU@H@@\\nfb}A@@@ISZvmkZlxkSoQSP@@@AU@P@@\\nfb}A@@@IS\\\\lrr}|UjwlacP@@DAL@P@@\\nfb}A@@@YDhhhhdeCenJtzpTyX@@@@@@@@@\\nfb}A@@@YDhhhhdeCenJtzpTyh@@@@@@@@@\\nfb}AP@@HeGNQQJJIQKIIVgIJlGrVi``@BJ`@@\\nfb}A`@@^sdTTTTRRRTqXIScQBeh@`@HB@@@@\\nfb}Ab@HHp@HrRRqQJKQYSRtZwhirm@@@@@@@@@\\nfb}P`@FJ@yIfY^]oTcIFmyNV`hJI`B@@@\\nfb}QB@I^DBHrJIKJSQQIHtYjw`is@AUTC@E@@@\\nfb}Q`@EV@`rSJvlkjmFRt{r\\\\mR@A@@D@@@\\nfb}`@@@ISLsJr{tdjqh~r@@@@AD@@@@\\nfb}`@@@YHhhhhdddbj\\\\dxtPy@@@@`B@@@@\\nfb}`@@@YHhhhhdhebZRUXt_I@@@@@``@@@\\nfb}`@@@YHhhhhdhehZRUXt_Y@@@@@b@@@@\\nfb}`@@@YHhhhheEDmZRTxrPy@@@@`H@@@@\\nfb}`@@@YHhhhhecLej\\\\eXsdy@@@`@`@@@@\\nfb}`B@I@qDefYe^}~RtzpTyh@@@@@@@@@\\nfb}a@@A@RYVvWVuhrVg^Sf@@B@@@@@@@\\nfb}a@@B@rJJIJZKQZHldKW`is@@@D@@@@@@\\nfb}a@@I@RVYfU{wyKSkASe`@@@@@@@@@\\nfb}a@@I@RVYfU{wyKSkASf`@@@@@@@@@\\nfb}i@@DTxIPLbbTTRqbRfSNRUxJ\\\\mTlt@EUD@@\\nfb}pB@ARlBHRYWYee}hpsk^Sf@Bjih@B@@@\\nfde@@@DjYeew]daZCD@BBBH@@@@\\nfde@P@@BLGHhhhhhhlcqVoNbt@QD@d@@@\\nfde@P@@B\\\\EIfYfWgXkWkQZ@H`HR@@@\\nfde@P@@B|EIfYfW^XkSkQZ@H`Ab@@@\\nfde@P@@B}EIfYfW_XkSkAZ@H`AJ@@@\\nfde@P@@HmEIeYVuuhqQkNZdHHfjH@@\\nfde@P@@HuyIe[UWZhrRcVZd@JjjH@@\\nfde@P@@J]{HhhhhhdeBpV`vbt@Q@LD@@@\\nfde@P@@J]{HhhhhhdeBpV`vc@@A@T@@@@\\nfde@P@@V}GHhhhhdddfpRgFBt@P@dT@@@\\nfde@``ARADDb@qDXaIf]UUUYqVg^``Jh@h@@@\\nfde@b@AZAHILkmmrmFBdFL@ETp@D@@@\\nfdeAB`A@bBQCH`LQFHrJJJZEIII\\\\dkSoPQDT@T@@@\\nfdeAB`E@bBQCH`LQFHrJJJZESII\\\\DkSoPQAP@TP@@\\nfdeAC@A@bKQDXaIe]ke_hpRoA`@j``H`@@\\nfdeA`@@BBdsLsJklUkuhm@DPDI@@@\\nfdeA`@@DMdTTTtRRVLXKSk^ZXFBbjH@@\\nfdeA`@@ZcdbbTRVTJVipRoAhHbH@J@@@\\nfdeA`@@\\\\udTTRbVfaRYrQ`qZA`h@B@@@\\nfdeH@@@\\\\mEJYfUuWirQmN@@@@bh@@@\\nfdeH`@JZ|DBDfV]VUugEF]yjeifZj`@@\\nfdeI@@DRUXFQQZJIPiIJVcVCEj@bFiR`@@\\nfdeI@@DTYxBSOKKropQgAbuMT@@@@@@\\nfdeI@@D\\\\tXBSOLkK{KRcAbuA@eTiP@@\\nfdeI@@HXHHBRrr{lkQbmAcSU@D@@@@@\\nfdeI@@HXIHBRsKj|kSbmAcMU@D@@@HPP\\nfdeI@@JRUDBTwNjjkpVc^CPP@@@P@@@\\nfdeI`@LZCDDeYHhhidhblbTM[pZjjhDBh@@\\nfdeI`BLTEhDGZewIWNlkJ|DZLFMUMUUUU@aR@\\nfdeP`@AN@EIfYfWgXkWkQZ@H`HR@@@\\nfdeP`@E^@{HhhhhhdeBpV`vbt@Q@LD@@@\\nfdeP`@E^@{HhhhhhdeBpV`vbuHSPME@@@\\nfdeQ@@DXAdTTtTTRbqUXp_QZh@``A@@@\\nfde``@A@BdsLsKslUiuhm@DPAI@@@\\nfde`a@AZlBHYDYEDeDXhiij\\\\Lywh@bifjJ@@\\nfde`b@H\\\\d@HRfYfWwQJMxLZjfZ``H@@\\nfdea@@D@RYyVuUQRMXLVh@@@@@@@\\nfdea`@D@DGHhhhieeLbrVkN|uPL@AP@@@\\nfdea`@O@T{HhhhhhdeBpV`vbt@Q@LD@@@\\nfdei@@JJMYpLbTTRbbQVwMBUxMAATDAB@@@\\nfdei`@LZlFHIJrQQQQYQEYDhZw`uUUPHEP@@\\nfdei`@LZlFHIJrQQQSIQEYDhZw`uUUPHEP@@\\nfdep@@@NCdbbbbRVTqhJQm^@@@@hh@@@\\nfdep@@@XMdbbTRRReRhHu`qBBbj@@`@@\\nfdepA@BLBBlmVYEEEDhXXmNJd[tX@`@HH@@@\\nfdepB@DXb@HrJIQIIHqIDhkPXsUAA@@@@@\\nfdi@P@@Hl{HhehiheDT[sTuUSMPHD`\\nfdi@S@HRMX@PkptDIUvnmZoAM@ASUT@@@\\nfdiAP@@HtxJSOLkkMISTAATs@@@\\nfdiPa@LR``@PHHrRPjJJKHyF\\\\mPLQEP@@\\nfdiQ@@DT@drsMsJvbuTEDU@@@\\nfdiQQ@LJ``ug@BM^FRRVIKIRIHTeh@Ijj@@@\\nfdiQb@LR``P@cIIBhheedmjru@pQU@@@\\nfdiQb@LR``P@cIIBhhhlcdYru@qDU@@@\\nfdiY`@D\\\\Eiw`TbdloJskjuUT@EUP@@\\nfdi`a@OJtCDMbIKJrwzsAT@QMUT@@@\\nfdiqb@JLtRR`RFQQQYIPiIIgJVjVjj`@@\\nfdiqc@DXipu`QBoCPQdTRbtQdrRIRZjjZjd@@\\nfdm@@@LdbbRbaRRsA\\\\UKU`~b@@@@@@P@@@\\nfdm@@@LdbbbbbfjSCBUIuoAb@@@@APA@@@\\nfdq@P@@HMYIeUU{UZjjijh@@\\nfdqPP@JV@bT\\\\bbTrTQRRSUUMUL``z@\\nfdqPQ@FBUhu`AD@aJUYn{ujjjYjh@@\\nfdu@@@DjYUUUU`nR\\\\GtP@@@@@@@@@\\nfdu@@@DjYee]}daVuxLP`I@H@H@@@\\nfdu@@@DjYee]}daZlGtP@@@@@@@@@\\nfdu@@@DjYee]}faRlGtP@@@@@@@@@\\nfdu@@@DjYee\\x7F_daFtxLP@@@@@@@@@\\nfdu@@@LdbbbTRerwIBMiw``@@@QT@`@@\\nfdu@@@LdbbbTRerwIBMiw``@@@QTA@@@\\nfdu@@@LdbbbTRrJwEBMipXp@PP@A@@@@\\nfdu@@@LdbbbTVtjSEBMjpXa@RA@@P@@@\\nfdu@@@LdbbbbbTUHeRlXOh`@@@@@@@@@\\nfdu@@@LdbbbbbVVOEBlXOh`@A@EBA@@@\\nfdu@A@@Q@XaIfV^]nXJRc^]F@@@@B@@@@\\nfdu@A@@Q@XaIfV^^^XJVcN}F@@@@B@@@@\\nfdu@A@@QBhcHhheDeDULpTmV|FL@@D@@@@@@\\nfdu@B@@ABTsJk^wb`mJmzM@@@@DP@@@\\nfdu@B@@ABTsJk^\\x7Fb`mJmxM@@@@AP@@@\\nfdu@B@@AFRJJJIIEYHeIFuXLZ@B@@@`@@@\\nfdu@B@@AFRJJJIIQIDeIFtEtZ@@@@``@@@\\nfdu@B@@AFRJJJIIQSDeIFtEtZ@@@@``@@@\\nfdu@P@@HLGHheDdhidYJqk^bFKUUUUUUP@@\\nfdu@`@@ARYegg[fBdhwgQZA@@hZA@@\\nfdu@`@@ARYegggfBehsoQZA@@bZA@@\\nfduA@@@IKJrkN{NJMipXt@A@@@P@@@\\nfduA@@@IKLl{[oAJmhpXt@@E@@@@@@\\nfduA@@@ILroZviFBdZpXmA@@@A@@@@\\nfduA@@@YDhdhddhTf\\\\uXs`qh@@@@@@@@\\nfduA@@@YEEDhmEhTjLehu`qZB@@@B@@@\\nfduP@@@ARige[uVBeip_Qjjj`Pbh@@\\nfduQ@@FRAdbbTJbRrRIQVcVCFiPHJ@H@@@\\nfdu`@@@IRmjjviJBdZpX`@@@@@@@@@\\nfdu`@@@IRmkZviJBdZpX`@@@@@@@@@\\nfdu`@@@IRmrsziFRtZpX`@@@@@@@@@\\nfdu`@@@YHheEMDXTjREhu`q@@@@@@@@@\\nfdu`@@@YHheEMD\\\\djREhu`q@@@@@@@@@\\nfdu`@@@YHheEhTddj\\\\EHu`q@@@@@@@@@\\nfdu`@@@YHheEhTidj\\\\EHu`q@@@@@@@@@\\nfdu`@@@YHhhhhdhbZRUXp_Q@@@@@@@@@\\nfdu`@@@YHhhhhdhcjRTxp_QB@@`H@`@@\\nfdu``@C@PdrmljmtYKUoAbuHAEUTT@@\\nfdua@@E@RfVU]uZLEhu`qhJ@@@@@@@\\nfdua`@E@QyIefUW]iqUcNCEj@@@JhD@@\\nfduh@@@XUkrTs\\\\zsoSbcZ\\\\FHPQTa@E@@@\\nfdy@P@@BtGHhhhheEcliuoM@DD@T@@@\\nfdy@P@@HHkHheDdhcLeHpXmPPL@@@@@\\nfdy@a@CVADQbLbbRrbbbQuF^C@ATC@P@@@\\nfdy@c@OAAD\\\\BAABSJzlrsQchp@UA@p@@@\\nfdyA`@@FcdTTTbbveVhsUf`jHbj`@@\\nfdyAa@OAbBPUHYEEDhddYeFRMZB@B@i`@@\\nfdyH@@@PL{IDhhddih]JvoM@@ADT@H@`\\nfdyHQ@DDiIU`qADBBLbbTVbaTVQJF]MMMUUU@@@\\nfdyIP@DXTx@cAbdsJslolyjsUSSUUTBDh\\nfdyIP@DXxHDkAbdrs]k^txYsSUUUUL@@\\nfdyIR@DDiHRkAbBHrJIQZJEQYDhYtttuUUT@@\\nfdyP@@@HrJSQQUQIQ\\\\d{uTuT@EH@@\\nfdyP@`ARADDbOQDXcHhhlleDeBsc`pPDpAD@HB`\\nfdyPA@FN@DRBDiee\\x7Ff\\\\R`qhJBHH@@@@\\nfdyPP@LQ@bSdfUYiUmSkQZjBhJb@@@\\nfdyPQ@LN``u`AF`cIICDmdiCEQg`kUUTmUP@@\\nfdyP`@AR@EJ[WUe]Yqwj@Bh@J@@@\\nfdyP`@NJ@aIeeU~UehLVhHD`@@DIP\\nfdyPp@DX@IU`qrJJIJIIPyLxYsUSSUUT@@\\nfdyPr@JLIIU`qAHILsjvskNF]RuSUUU@@@\\nfdy``@F@PdwLk{JbTFKPPQP@@@@\\nfdya@@D@RYyWUeQRCEj@Bh@@@@\\nfdya@@D@rJJJFJIIKVCzKUT@@@@@@\\nfdya`@I@UyIfUVyUEhLV``hjjH@@\\nfdyaa@AZMXDPrHrJIJHqQRqTxYt@QTsTd@@\\nfdyhP@AZlFHDDXdw]lrnfmxKUUTBAP@@\\nfdyhR@AZlFLDXhCprRRiIQQIYFmxKUUTBAP@@\\nfdypB@FR\\\\@HrQQHqQIIZXi[uLuAAEP@@\\nfdypP@DT|@chyEDidhdeDQRlEj@@`X`@@\\nfdypQ@FVcSao@dDRFQRZJZYQKF`gAjjjifZ`@@\\nfdyp`@BRb@RSLzkrnsg`mRtt@E@HB`\\nfdyp`@LLxABSKrjszJQgMTu@QT@@@\\nfdypp@DXT@QgAbdsJslolyjsUSSUUTBDh\\nfdypp@DXxBVkAbdrs]k^tDYsSUUUUL@@\\nfdyppBDDDCbkAbR^]dTtRaTRbrXHsfiZjjjh@@\\nfdyq`@LLxA@TfWe^UtTg^Zij`@i@@@\\nfdyq`@LLxACdfWeUWTTcVZij@Jh@@@\\nfdyqb@IFmcpPABT{JvnvIVcUPACTtP@@\\nfdyqb@LFcA@`AFRREQQIJH{WcVVhIBhhP@@\\nfd}@`@@AReYU[WhHirQmV}DLZ@`P@HBB@@\\nfgA@@@DjYU_VByHu`@@@@@@@\\nfgA@@@LdbbbTVKIBMjp@@@@@@@\\nfgA@`@@\\\\RfYe_irQmVh@`@H@@@\\nfgAAB@F@bDfUmUZ\\\\EHuh@b`@@@@\\nfgAA`@@HLdrmlkQdmFluHADq@@@\\nfgAA`@@HtdrmjkQdeFluH@UP`@@\\nfgAH@@@RM[IEDhmBeS`eZL@@DMA@@@\\nfgAH@@@XDYJYYmvdfBuXHJbYF@@\\nfgAH@@@XDkIEDhhdkRSAFlDEQRc@@@\\nfgAH@@@XhiJYmg]gAJMXH`jeF@@\\nfgAP@@@LrQQJEIITxJQk@QE@@@@@\\nfgAP@@@LrQQJJYPtdKQk@@@@@@@@\\nfgAP@@@\\\\RfYe_irQmV@@@@@@@@\\nfgAP@B@BAHirRJIJHkLUpQkAPP@A@@@\\nfgAPB@LD@DISJ\\x7FJdhsakTuT@E@@@\\nfgAQ@@D\\\\@drjjkQ`iFm@AT@@@@@\\nfgAQ@@F\\\\AdbbTJRRIPTcVjUj@H@@@\\nfgA`@@@ISKJntXKQk@@@@@@@@\\nfgA`@@@ISLrotyHvk@@@@@@@@\\nfgA`@@@ITsZkdYHvkU@@@D@@@\\nfgA`@@@YHheEMEZRDhu`@@@@@@@\\nfgA`@@@YHheEhTj\\\\EHu`@@@@@@@\\nfgA`B@N@BDifYWz\\\\d[Uj@H@B@@@\\nfgAa@@K@RfYU_qPVeFh@@@h@@@\\nfgAp@@@RMdbbTVaVipRmF@@BF``@@\\nfgAp@@@XDeLzmkQ`iFlDAP@D@@@\\nfgAp@@@XIdbbaRRRqPTcVZ`@@H@@@\\nfgAp@@@XheLvnjs`iFlDPT@@@@@\\nfgAp@@@XxeLzjkQ`iFlDAT@@@@@\\nfgApB@LLx@HRevUUpPTcViYj@H@@@\\nfha@P`BLxHDQSp}DAbDeUkUUZjZjjh@@\\nfha@P`BLxHFISp}bAqDeUkUUZjZjjh@@\\nfha@R@HHpPG`eUjjjjuUUUU@@@\\nfha@s@DXHJR`ADOBgadTbRTbVQSUTuUT@@\\nfhaA`@@HhdvvjjjuUUUU@@@\\nfhaP`@DFAkHhdddeDTfjjijh@@\\nfhaPq@BA`cAg^@DVBLddNRRRRdVjjje`@@\\nfhaYA@DXHKPY@BOABSNrrzsTtuULAAKd@\\nfhe@@@DjYfYuvJEXpW^@@B@I@H@@\\nfhe@@@DjYfYuvJEXpW^@@B@J@H@@\\nfhe@@@LdbbRbbvJYKfaJ|D@@bH@@@@@\\nfhe@@@LdbbbTReryHQmN|D@@@BI@`@@\\nfhe@@@LdbbbVTJrYHQeZ|D@`B`@@@@@\\nfhe@@@LdbbbbbbcxhQiNlD@@@@H@@@@\\nfhe@B@@ABTrnjjnJ\\\\Ehw`tB@@@D@@@\\nfhe@B@@ABTrnkJ~J\\\\Ejw`tB@@@D@@@\\nfhe@B@@ABTroZjnJ\\\\Ehw`tB@@@D@@@\\nfhe@B@@ABTroZvnJ\\\\Ehw`tB@@@D@@@\\nfhe@B@@ABTrssziJBUhw`tB@@@D@@@\\nfhe@B@@AFRJIKSQJHxirQk^CPH@@@P@@@\\nfhe@B@@AFRJIQZKPiDhIVc^CPH@@@P@@@\\nfhe@B@@QBSLl|{[ARTYw`p@@@@@@@@\\nfheA@@@IRlk\\\\~pQSdm^CUAAD@T@@@\\nfheA`@@B|eJkjrmAEFNCxMUUUUUU@@@\\nfheA`@@TdeJsZvoACNZmxMA@P@@@@@@\\nfhe`@@@ILkJl{tYKRk^C@@P@@D@@@\\nfhe`@@@ILrsZklxJQoNC@P@@@D@@@\\nfhe`@@@YEDeDdeBeQbcZmxL@@@@@@@@@\\nfhea@@D@RYYU[WirVcV|F@@@@@@@@@\\nfhea@@D@rJIJIIJEJcEFu[pX@@@@@@@@\\nfhea`@E@iIJUfv]nBFBL{pZB@`@@@@@\\nfhep`@BLT@NQQQQQQRq\\\\tJQkN|uLuUTuP@@\\nfhi@B`@QAHadPzHCDYEEELUDeCpUoPQA@DP@@@\\nfhi@R@HHpPG`eUoLjn[s`mU@@@@@@@\\nfhi@`@@ArJIKJQPiZcG^`@j`@`@@\\nfhi@a@AFADAbDfUmygZL]z@BhHB@@@\\nfhi@c@BFADRb@qFQQQIIPqYLD{tDDPPD@@@\\nfhi@c@BFADRb@qFQQQIIPq[LD{tDDPPD@@@\\nfhiAA@C@b@qBSJ{Lk}FN}@ATDA@@@\\nfhiAP@@Lt[vQQQRJKYE\\\\d{sSUTruP@@\\nfhiA`@@B|dsLro~jqgM@D@AP@@@\\nfhiA`@@HBdrszroScoMSLp@T@`J@\\nfhiA`@@H|dwMkZ{IUgMT@@AP@@@\\nfhiA`@@LCdTRTQRbRuNN}@DS@A@B@h\\nfhiE@BBTYIQoA@rY\\\\drkKN{hsoUTt``T@@@\\nfhiHA@MFlDDPRHrJJKKQQQUgK^``HBH`@@\\nfhiHP@DXyhDoARYYn]uhHuffjjji`@@\\nfhiHR@DDhJQoAADILl{[NdijttuuUUP@@\\nfhiH`@DXtX@lbbbbbQRRYHsfjijii`@@\\nfhiH`@LTEhBDfWVUm]F|Ejf@@@@DJP\\nfhiHa@LTdFB@A@`cIIBhhddmmNMYZ`hJJD@@\\nfhiIB@DXHI`@aIg[ee_UoAZi`@@@@@\\nfhiIP@DDhpDc^BdwJ|lzsfkMMMUUU@@@\\nfhiIP@DXxHDc^CdTRbbeTVSNZltuUUUT@@\\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\\nfhiI`@DXYH@`yEDeDbhdmScoMUJp@T@`J@\\nfhiP@@@^Rfuue]Yrsj@B`@h@@@\\nfhiPA@FV@DTBDiee~yqJ|F`hHB@@@@\\nfhiPP@DB@SblbfdtQfbRHspVjff@B@@@\\nfhiPR@AFIsPPRBSL{sNiFV]UUULtt@@\\nfhiPR@JLIIpPRBSLzmj{NFmRuSUUT@@\\nfhiP`@DZAyIgVYW^VkNZjdHBh@@\\nfhiPb@OA``@QddabbRRvRkF\\\\m@@@E@@@\\nfhiPp@DX@IQoARYeYv}YsUfjffjj`@@\\nfhiQ@@DX@drlrloks`mTEATQ@@@\\nfhiQ@@INAdTTTbRarrk^BtEP@@@@@\\nfhiQP@DN@Qg@iLoJjnbdZsUUPAR@@@\\nfhiQP@DX@IW`yEEDeDdbdsakMUMMUU@@@\\nfhiQR@IV`Sa``dLbRbTQbbvXIwjjjjYf`@@\\nfhiQR@JLIIW``BDfYu[UV\\\\MZejfjjh@@\\nfhiQR@JLIIW``kDfYu[UV\\\\MZejfjjh@@\\nfhiQR@LVXhw``BLdTVbRbbqqRVjYjjZj`@@\\nfhiQR@LVXhw``QLdTVbRbbqqRVjYjjZj`@@\\nfhiX@@@PHJpTiZUWYz\\\\MyjjbAb@DCH\\nfhi`P@L@yHrTrlm{}AN}UUTDAP@@\\nfhi`P@O@YivQQQRIV[SDXhsPUADu@@@\\nfhi``@A@|eMkkJzsegT@E@AP@@@\\nfhi`p@D@Dhw`iLrl{^lyjsUKUUUP@@\\nfhia@@E@rQQQHyJIHToAhJ@h@@@@\\nfhia@@F@rJJIIJZIDRoAjBBB`@@@\\nfhiaB@ARADILk[OZtYxL@EM@@@@@\\nfhiaB@K^@DISLjo{Bthu@@@EL@@@\\nfhih@@@XIQRTsNj\\x7FKNRtA@AEU@@@\\nfhii`@DTxIPGArJIQQJiJYgIJZiYjjj@@\\nfhii`@DTxIPK^rJIQQHpsQgEZZPhBjh@@\\nfhipP@DXx@w`yEDhihUEePVkMMUSUS@@@\\nfhipP@DXxBW`iLlwZztDZsSUUUTp@@\\nfhipR@BTYIW``qDfY][UV\\\\MZejfjjh@@\\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXiVH@@\\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXjVH@@\\nfhipb@AZL{pLQIe]e]ncEZ`@iZfb@@\\nfhipp@DXH@Rc^BdsJsmzsfkMUMMUU@@@\\nfhiq@@DZBCHheEDeDceNmyj@@`B@@@\\nfhiqB@IF]hDadTTTbfLVWE^CMUTmRt@@\\nfhiqP@DXH@RoArJJIJIIEIgCVZjZZjj@@\\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\\nfhiqP@DXxBVoARYYnuuhHuffjjji`@@\\nfhiq`@DXX@SdfUgyVj\\\\lyjiZjjh@@\\nfhq@`@@AJDaHRDRHrHPVB`Hbjj`@@\\nfhq@`@@JRVUeZZYq`@jjj@@@\\nfhq@p@@HdkQlbbTLTTvRHqjZfZj`@@\\nfhq@p@@LdkUlbbbbVRLrxIijjif`P]@\\nfhqA``BZLBHyxRbEAFQQQIIRUILEAADuU@@@\\nfhqH`@L\\\\MXBLbbTTJbbLTYjh@bj@@@\\nfhqP@@@XRe]UUUpQijjjj`@@\\nfhqQ@@DT@drlsLjXKUAQEP@@@\\nfhqQa@EVEHpHc`QdTRVTaTrUFP@RtuP@@\\nfhqXB@J\\\\dZpPAFRIJIJJqIBeUSMMUpHJ`\\nfhuA@@@IRlrjwPQSbgFC[u@@@@@@@@@\\nfhy@@@LdbbbTRrNYHVoA@@```@@@@\\nfhy@B@@XbRsLrj\\x7FIZ}XM@@@A@@@@\\nfhy@`@@TrQQRJKSE[deV|F`jH@@`@@\\nfhy@`@@\\\\RYee~uYrVoAZA``@H@@@\\nfhyA@`A@bBQGh`LPdsNjjjsdeV]A@U@E@@@@\\nfhyA@`F@bMQCh`LQdTTTTQbVSN\\\\U[tDPAAE@@@\\nfhyA@`G@bEQEh`LPdsKOKrrQoN}A@qSUE@@@\\nfhyA`@@BMdTTTTTTVoEZ|xL@A@P@@@@\\nfhyA`@@BMdTTTTTTVoMJ|xKPAAPA@@@\\nfhyA`@@B|dsLsKnqVgVBt@Q@BP@@@\\nfhyA`@@DtdsMksjpRc^CA@@P@@@@@\\nfhyA`@@Hldrlk[oQbcN|uHPQUP`@@\\nfhyH@@@RM[IEDhmBdeJ\\\\DkQ`@@ajhH@@\\nfhyH@@@RlyJYY{W^gAJMX@@HfjB@@\\nfhyH@@@Rl{IEDhmCDcJ\\\\DkU`@@bjhD@@\\nfhyH@@@XEkIEDhheYdjRXKpP`jJ@@P@@\\nfhyH@@@XxkIEDeDehTjBYspP`Xj@@`@@\\nfhyHB@FR|DDPdrmkZkSdeV]@@@@E@@@@\\nfhyI@@DTeXBSOJwJxeZmxKT@QUJL@@\\nfhyI@@H\\\\EhFQJJIPiIQ\\\\dkS`tADMSIP@@\\nfhyI@@LDmxFRJIHqQJKTXYuoTuPDPtP@@\\nfhyI`@LJMxD`yHhhhUEedRfcN}UUTBAT@@@\\nfhyP@@@VRe]VYWISUoAjjjP`J@@@\\nfhyP`@BZ@aInUe{W`mF|Ejjj`@X@@\\nfhy`@@@ISLjm{btjw`t@@@@@@@@\\nfhya@@O@RYVyY\\x7FiqQkN`@@@B`@@@\\nfhyh@@@\\\\eYvRJJJJUKKTxkQk@AA@uPP@@\\nfhyh@@@\\\\e[vRJJJJUIITxkQk@AA@uPP@@\\nfhyh`@LJMxHIYHhhhUEedRfcN}UUTBAT@@@\\nfhyi@@HXIipDefWVuj\\\\TYwijh@@H@DHH\\nfhyp@@@XheLwKjjsde^BDPUPP@@@@\\nfhyp@@@^CdbbbbRRqUNRmip@@@PT@@@\\nfhyq@@DTTAIgeUUTTmF|Ej@Bh@@@@\\nfkAA`@@TTeJwsLDDXkVcUUUUUP@@\\nfle@P@@HlgHhdeECDhl[^\\\\EjjifffP@@\\nfle@`@@IrJJIERJEJYgOA`HJh@J@@@\\nfleA@@@YEEMDleHiJJQoM@PUUUD@@\\nfleA`@@HhdskLl{~cNBuT@@DR@@@\\nfleA`@@QSdTTTRRTqfdcZ\\\\t@@AEL@@@\\nfleHP@DTuDC@irJIJHqZIJJgOQZijjjYh@@\\nfleH`@G^BdELdTtRRJbbQyHLZBBJ@``@@\\nfleIP@DXxHDgQSdTRbffbTNUNV|tuUUUTp@@\\nfleIb@LB\\\\fBK@BLddJbbRTVVuypUj@@HB`@@\\nfleP@@@DrRJPqQPiIYtPijjh@@@@@@\\nflePR@MA`cA@^FRRXqQJJMJJMjsU@QCUQ@@@\\nflePq@JLIIShiAVVdLbbbrRfTbJYpwjVjZjjj@@\\nflePr@FVQSaoIAHIM\\\\w[KoPS`uUUTsTt@@\\nfleQP@EQ@RsoYEEEleDhiXRcNMUUULuT@@\\nfleQa@AVQ``@bGadTbRTRRLrUgQRuUAP@@@@@\\nfleQp@DXArVcQSdTTRbbtRjSAN|uUUMUUP@@\\nfle`Q@LPQxH@bpQddebbTVVdleF\\\\m@@ABt@@@\\nfle``@G@edbbTRbbNv`mV}PPE@QT@@@\\nfle``@O@bdsJl{zpmV\\\\tD@@EL@@@\\nflea@@E@RfVYUV\\\\tWIjh@`B`@@@\\nflea`@I@U{HhhddihddQZbehHJJjh`@@\\nflehPBDX}EHAJCFT}dTTRTRRJRsNFluTtuUKP@@\\nflep@@@XleLl{rkMA^RDEEAAP@@@\\nflepR@F\\\\EhtT`qDeYeumUEIwiiZijjjABD@\\nflep`@IJR@bSLj~rnlExKTmS@AT@aJ@\\nflepr@DDhJRgQRBHRYYym[teK^fffjjjh@@\\nflepr@M^SAFB\\\\\\\\CprRSEQIZJKZR`qZjjjfVh@@\\nfleqQ@BTYIShiAVVdLbbbVRfTbJYpwjVjZjjj@@\\nfli@`@@HRYUoV]YjZfZjhFBPiT@\\nfliAP`BJt{p@bG``HpDYEHdeCEeEluUTuMT@@\\nflm@@@DjYee]{YhTkA|d@@@@@`@@@\\nflm@@@DjYee]\\x7FYhTkA}D@@@@@H@@@\\nflm@@@DjYeeo\\x7FyHQm^bd@@@B@@@@@\\nflm@@@DjYee\\x7F[yHQmNBd@@@@@`@@@\\nflm@@@DjYee\\x7F]yHQmNCD@@@@@H@@@\\nflm@@@DjYee\\x7F^yHQmNCD@@@@@H@@@\\nflm@@@DjYee\\x7F_yHQmNCD@@@@@H@@@\\nflm@@@LdbbbTRRJrYHVkAbd@@B@@@@@@\\nflm@@@LdbbbTRfvQyHQm^CD@@@BbhA@@\\nflm@@@LdbbbTRrJRxhQmNBd@@@@@`@@@\\nflm@@@LdbbbTRrVQyHQm^bd@@@@`@@@@\\nflm@@@LdbbbTRraQxhQmNbd@@@@H@@@@\\nflm@@@LdbbbTRvRQyHQmNbd@@@@H@@@@\\nflm@@@LdbbbTVRcRXhQmNbd@@@B@@@@@\\nflm@@@LdbbbbbT^VxhUc^CD@@H@bhA@@\\nflm@@@LdbbbbbT^VxhUc^CD@@H@bhB@@\\nflm@@@LdbbbbbVNVxhUc^bd@@H@@@@@@\\nflm@@@LdbbbbbqeRYhUcNbd@@H@@@@@@\\nflm@@@LdbbbbbqvRYhUcNbd@@H@@@@@@\\nflm@B@@AFRJJJIISKHdiHvoQSP@P@PA@@@@\\nflm@B@@QFQQQQQIJGKLdjqoQS@@@@@@@@@@\\nflm@`@@QRYfYUgydeNLGrV`@@@BH@@@\\nflmA@@@ILkZvmkQdeV]EL@@@@@@@@@\\nflmA@@@ILroZrnQ`iFmEKPP@@PD@@@\\nflmA@@@ILroZvjQ`iFlFKPP@@@T@@@\\nflmA@@@ILroZvlQ`iFlFKPP@@@T@@@\\nflmA@@@ILroZvnQ`iFlFKPP@@@T@@@\\nflmA@@@ILrrknjsdcV]EL@@@@@@@@@\\nflmA@@@ILrsssoQdmFmEKPP@@PD@@@\\nflmA@@@ILrszmkQdeV]EKPQ@@@D@@@\\nflmA@@@YEDeMDhmBeSbcV]EL@@@@@@@@@\\nflmA@@@YEEDeieEBdQ`iF]EKPP@D@D@@@\\nflmA@@@YEEDhihcBdqTcV]EL@@@@@@@@@\\nflmA@@@YEEDhmBeLdpTeV]EKPQ@@@D@@@\\nflmA@@@YEEDhmBeLdpTeV]EL@@@@@@@@@\\nflmA@@@YEELeDdeBepQgV}EMP@@@@@@@@\\nflmPB@JQAbIKJr|jlsfk^RFMUUTDCED@@\\nflmQb@LA`bp@cIICMDeMDUARd[S`qVjZjZfi`@@\\nflm`@@@ILkZvmkQdeV]EL@@@@@@@@@\\nflm`@@@YHhhhhdddkSdgFbEH@@DDTHD@@\\nflm`@@@YHhhhhdhb]RRkFCzH@@@@@P@@@\\nflm`@@@YHhhhhdhbmRRkFCyH@@@@A@@@@\\nflm`@@@YHhhhhdhecRRkFcyH@@@@D@@@@\\nflm`@@@YHhhhhdhecRRkFcyH@A@ALPD@@\\nflm`@@@YHhhhhdhecRRkFcyH@PAHE@P@@\\nflm`@@@YHhhhhdhecRRkFcyH@PAPD`P@@\\nflm`@@@YHhhhheED[RRgFbEH@@@D@@@@@\\nflm``@J@SdbbbbLTtQqJRl[pXtC@@@AP@@@\\nflm``@K@PdrlkZk]FJLxLTmRDDUUQP@@\\nflma@@@`rJIJZIQPiZgEZmxLX@@@BI`H@@\\nflma@@E@RfVU^_VcAZLzJZB`@H@@@@@\\nflmaA@KQ@DPdLdtTRbtJfRyIVkNbfifZiZej@@\\nflma`@E@PGHheEDdhlbj\\\\TxwhiZ`@@`j`P@@\\nflmp@@@VbeJvsOviJBUYtT`@AEP@A@@@\\nflmq@@DVbAIee^WmZ\\\\djshiZ`PJ`@b@@@\\nflu@B@@YbULsJjozCZOdu@@@@@@@@@\\nflu@P@@BBgHhhhhhehlVJtztV`BH@dh@@@\\nflu@P@@BLGHhhhhhhlcnJuytV`BH`Dh@@@\\nflu@P@@B|gHheIhcEDiRLu[pVfjjjjZ`@@\\nflu@P@@HL{HheEhhdhh~BlGtVijjijj`@@\\nflu@P@@\\\\\\\\eIfVWyWv\\\\ehLV`hHB@h@@@\\nflu@P@@\\\\uyIfVWnuv\\\\dZJV`XJ@`H@@@\\nflu@`@@IRYfUV}~QmNCEh@@@@H@@@\\nfluAA@A@bDqFQQIYRZJIGTYYpXp@UPTAD@@@\\nfluAA`A@bBQCHatQFHSDYEEEMBdeEerRm^CADQPPT@@@\\nfluAP@@B\\\\ENQQQQQQKQXlUkuhm@DPDIP@@@\\nfluAP@@B\\\\FJSLsLoJlUkudm@DPDLP@@@\\nfluAP@@HdkrSKLvzjlxYtTmT`pQUP`@@\\nfluA`@@FmdbfbTTRbawEZ|EM@@@TA@@@@\\nfluA`@@LbdsLn}kkNRuxKPTD@AT@@@\\nfluH@D@\\\\|DDiSLrno}SdcZ\\\\@@@AET@@@\\nfluHP@CNbdDeZrQQQQIJJkHeKNCFjjj`PJ`@@\\nfluHP@DLtdGGArJJIQRzJJY`iJbejijjYjh@@\\nfluHP@DTuDC@irJIJHqZIJJgIJ}Ejfjjifh@@\\nfluH`@DXYh@lbbRbTVaRRisQoAZZfd@Jh@@\\nfluH`@DXlDGlbbbLTRvTtISQhiZj@`ijb@@\\nfluHb@BJtFW`QFQQQIZKQFZLDZtTpPPuTuE@@@\\nfluHb@LLxxLPABTnrjkmxHJQkTlu@EMP@@@\\nfluI@@DRUXFQQZJIPiIIRtZpXmPDPuKE@@@\\nfluI@@DTXDFQQZIQKQQH|DYtTmSU@A@@@@@\\nfluI@@D\\\\tXBSOLkKzrthpXmPPIUKE@@@\\nfluIP@DTxHFgQSdTRbRJbTVSNBe[sSMUUUTp@@\\nfluIP@LF]DDeZSdbbbbRTUVQJV\\\\FMUUU@`U@@@\\nfluI`@FNbdAMILs[[N}SagAcUUUPHEP@@\\nfluPB@AJADYEDeMDeELcSfgQS@DMPT@P@@\\nfluPP@B\\\\@bslbfbTTRTrJDkQhiZjfjX@`@@\\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfX@`@@\\nfluPR@JLHkU`RBSL|kMjlyxLTtmUMUUU@@@\\nfluP`@DIAEIeUYU}jLehufiZYfij`@@\\nfluP`@DX@qIeVyeUrT]DJVjZ@@@H@@@\\nfluQB@AJbBHRYVyV]VgMNBf@HZ``P`@@\\nfluXP@L\\\\MZJPRUkIEEEDdeFdbTLxLZjjjP@j@@@\\nflu``@C@PdwLl|{XmNbEKPP@@@@@@@\\nflu`a@BJ|CDebYEEEheDXdlpQkQSAADtB@P@@\\nflua`@A@\\\\EIfYfWgvJuztV`BHBDh@@@\\nflua`@O@TyIfYfUYvBtFrV`BHAbH@@@\\nfluab@FF|D@QdbbTVbtjfQJBUjuRsUMMTh@@\\nfluhP@DTxIPCQSdTRbbUTRRSNRT{sUKMUUUP@@\\nfluhP@LF]EHIJudbbbbRTUVQJV\\\\FMUUU@`U@@@\\nfluhP@NFmEHIJudbbbbRRcRQJF\\\\FMUSUP@U@@@\\nfluib@DTxIQhi@DYEDhheUDddsdeN|uRsUUUT@@\\nfluqB@AJMDFHdrmrlzmNZ\\\\EL@PuA@a@@@\\nfluq`@LLxAGdfWeUWnEHuhiZij@IjB@@\\nflux@@@XIRRmYHhhldiUDdsdcQRA@AQ@@@@@\\nflyAP@@HLxJSJkZrkzluT`DUT@@@\\nflyP`@EN@cHheDdehbdiZZ``bjj@@@\\nflyPa@LR``@PHHrRPjJJKHiXsejAbHj`@@\\nflyQ`@D^@jrSOJzmkBdu@AUUT@@@\\nflyQ`@D^@jrS[JzmkBdu@AUUT@@@\\nflyQa@ANQ``@bGadTbRTRRLVegMUPTAU@@@\\nflyQa@LR`cp@`PQddaTTRrrRVkKTCAEU@@@\\nflyQb@LR``P@cIIBhhhlbecNVhFHbj@@@\\nfly`R@IB]zH@aJYYY]gcAjhJ`fF@@@\\nfly`R@JRU[p@cIDeDeEECEXijji`Z@@@@\\nfly`R@LPQEH@cIICEDddeUC^VjB`hf@@@\\nflyqa@AFlcA@ADOCHiDdhThmLmFZj`@jj@@@\\nfl}@@@LdbbbTVtQVXhQmV]zJZPZHPPJH@@\\nfl}@B@@AFRJJIIJISXxhKRoF]EM@@@@@@@@@@\\nfl}A@@@ILrjvjvQ`mJLxLTmA@@@@@@@@\\nfl}A@@@IRlkjmkAENRUYtTuPH@@@T@@@\\nfl}A@@@IRlkvjkAENRUYtTuPP@@@T@@@\\nfl}A@@@IRlkvmkAENRUYtTuPP@@@T@@@\\nfl}A@@@IRlrjkoAENJl[tTt@@@@@@@@@\\nfl}A@@@YHdhdmMDhcAENRt{tTt@@@@@@@@@\\nfl}A@@@YHdhheDddcAENJ]ZHTt@@@@@@@@@\\nfl}A@@@YHhhhddjdeAGERuYtTuUAL@@U@@@\\nfl}`@@@IRlrjkoAENJl[tTuP@@@@T@@@\\nfl}a@@A@rQIQJKJZEJBF\\\\UXshij``@@@h@@@\\nfl}a@@E@ReYWm[VBJ\\\\ejshij``@@@h@@@\\nfl}a@@M@ReYYy}VBF\\\\TZshij``@@@h@@@\\nfl}aA@HF@DIdLdRbbRRtJR``cIFuXLZjjZjeif@@\\nfoA@@@DjYeUlVeN`@`B`@@@\\nfoA@C@@QAHadQdTTTqTRWAV]ADD@@@@@\\nfoA@C@@QBhatQdTTRbRQsIFmA@A@P@@@\\nfoA@P@@HTYIe[VWhrVfi@Hj`@@\\nfoAA@@@ILkjrmFV]@AL@@@ar@\\nfoAAB@A@bDfUmyVcKN`@j@@@@@\\nfoAAP@@HiIRSKSrvSeNMUTuUP@@\\nfoAA`@@HXdrl{ZlyYsUUP@P@@\\nfoAAa@JJtBHxDYDhhmEDcpUgUKPJA@@@\\nfoAHB@MFlx@QdbdRjbbcNZmUUTmU@@@\\nfoAH`@D\\\\DXDdfVYe_ScVZ`ZBP`@@\\nfoAH`BDRLx@cR{dfYeW\\\\cMVZhFAF@@@\\nfoAHb@DXx[U`QFQQJIZJHdiHtuUTsL@@\\nfoAI@@MFlxFRJQJjJJLyjuUURuT@@\\nfoAP@@@NRYWVUzLMZ@B`@`@@\\nfoAPB@KN@DISLjohmJMP@@AP@@@\\nfoAPB`ARADDbCREiAt`dsNkmLyITDASUD@@\\nfoAPR@JLIIU`RBSLzmlsagTmTuUP@@\\nfoAP`@BZ@aInvYWejsfjiB@`@@\\nfoAP`@CNAQJYW]YqS`jB@jj`@@\\nfoAPa@LDlx@P`HRYYeUuVLyjjjjj@@\\nfoAQA@BLD@HpDISOmrnJV]TuL@D@@@\\nfoAX@`LTXKU`AB@aPPxHRYWUeRTMYjjjZV@@\\nfoA`@@@ILkjrmFV]@AT@@@@@\\nfoA`@@@IML|{wEFmUSA@R@@@\\nfoA`R@EPQap@cIIKEDhliZMYZ@@@`@@\\nfoA``@M@PdvkLkruYsUTa@P@@\\nfoAaB@GDADILroZ{AFmAA@@P@@@\\nfoAaB@GLADILk_J}NFm@DP@P@@@\\nfoAaB@G\\\\ADILkkJ}FFm@AP@P@@@\\nfoAaB@KN@DISLjoxmJMP@@AP@@@\\nfoAaP@D@hIVlbbTbfbjIrgFjjfjh@@\\nfoAa`@M@PQInvYWejsffiB@`@@\\nfoAh`@JBUYpBILoLkleFmUU@`T@@@\\nfoAp@@@P\\\\eKLjorMjsP@@A@B@H\\nfoAp`@BZLABS]lroKUgMURDA@@@\\nfoApb@HDihp@cIDhideDRLUZi``Xh@@\\nfoAqB@JLtPFHdsM|klEYuKTa@P@@\\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@@\\nfoI@@@LdbbRbaQXKbiZlx@@@`@`@@\\nfoIA@@@IRlkZ|DTyKUgUSUUJs@@@\\nfoIA@@@IRlkjlDTyIUgUPP@AP@@@\\nfoIA@@@IRlkvlDTyIUgT@@@@@@@@\\nfoIA@@@IRlrj|DTxjqgUP@@AP@@@\\nfoI`@@@IRlrj|DTxjqgUP@@AP@@@\\nfoQ@@@DjYUU}`nRlx@@@`@@@@\\nfoQ@@@LdbbbRQrYHRkN@@`@@@@@\\nfoQ@@@LdbbbTRQYHUmN@@@B@@@@\\nfoQ@@@LdbbbTReyHQmN@@@@`@@@\\nfoQ@B@@QBSJvjkQdeV]@@@@@@@@\\nfoQ@B@@QBSLljzsdcV]@@@@@@@@\\nfoQ@B@@QBSLsJ~pRkF]@@@@@@@@\\nfoQ@B@@RBSLljzsdcV]@@@@@@@@\\nfoQ@B@@XbSLljzsdcV]@@@@@@@@\\nfoQ@`@@VRfYeUzBd[Sj@B@H`@@\\nfoQA@@@ILrrkkNRMYt@@@@@@@@\\nfoQA@@@YEEEEDdbrRkF\\\\t@D@D@@@\\nfoQA`@@HldrlkZtXhugMRDDSD@@\\nfoQA`@@HldrmlrtYKUgMR@QSD@@\\nfoQH@@@BMYJUme]IRRmF@@HFhH@@\\nfoQH@@@BMYJYYo]irRmF@@HFhH@@\\nfoQH@@@RMYJUm[UIPRmF@@BFhH@@\\nfoQH@@@RM[IEDhmBdj\\\\DkQ`@@ajB@@\\nfoQH@@@Rl{IEDhmCDj\\\\DkU`@@bjA@@\\nfoQH@@@TUkIEEEhddV\\\\Djs`JBjeF@@\\nfoQH@@@TuYJYfU}YrQeZ@H@XhH@@\\nfoQH@@@XD[IEDhiedZRXKU``jIfF@@\\nfoQH@@@XDiJYYe_iI`cNBBhidX@@\\nfoQH@@@XhiJYmg]YpRcVBHJiXX@@\\nfoQH@@@XhiJYmg_YpRcVBHJiXX@@\\nfoQH@@@XhiJYmggYrRkNBHJfhT@@\\nfoQH@@@XhkIEELhddV\\\\Djs`bBjeF@@\\nfoQH@@@XikIEEMEDUf\\\\ejs`bBjeF@@\\nfoQI@@HTEHBRrjjjsdeV]P@TtiP@@\\nfoQP@@@FRfYeUz\\\\e[SjdF`hd@@\\nfoQP@@@NrQQJIIYFcAZMX@@@@`@@@\\nfoQP@@@NrQQQQIHz`iFuX@@@@`@@@\\nfoQP@@@RrQQJIJUJgAJlx@@H@@@@@\\nfoQP@@@TRfY^]|TEjsiB`hjb@@\\nfoQP@@@TrQQQQPqUdeZlx@`@@@@@@\\nfoQP@@@VRfYe]Z\\\\d[S`@@@H@@@\\nfoQP@@@XRf[WmZ\\\\djs``@@@@@@\\nfoQP@@@XRf[eUz\\\\UXs``@@@@@@\\nfoQQ@BHB@ChRdsLrolDjqgP@@@@@@@\\nfoQ`@@@ILkZjmFRUYt@@@@@@@@\\nfoQ`@@@IRlrj|DJlYuT@@@P@@@\\nfoQ`@@@ISKON}NBeYp@@A@@@@@\\nfoQ`@@@ISLro}NRMjp@@@A@@@@\\nfoQ`@@@ITsJkyFJlYuPA@@P@@@\\nfoQ`@@@ITs\\\\k{AJlYuT`tDR@@@\\nfoQ`@@@YHheEMDcPTeF\\\\@@@A@@@@\\nfoQ`A@F@bIABSJvmkSdeV]@DT@A@@@\\nfoQ``@B@mdTTTTRQSEBdYsTmUSU@@@\\nfoQ``@M@HdsMjoLDhugMLBDUD@@\\nfoQa@@A@RYfYWvBUXsf`B@@`@@\\nfoQh@@@LDZvRJIQPiYTYIVc@@DCTD@@\\nfoQh@@@TejrTsLkzsdcJt@P@qPP@@\\nfoQh@@@TtZvRJJJIIELEHrm@D@LTD@@\\nfoQh@@@TyjvRJJJIIELEHrm@D@LTD@@\\nfoQh@@@XijvRJJIQIELEHrm@D@LTD@@\\nfoQp@@@XDeLvzjtyIUgAAEP@@@@\\nfoQp@@@XDeLzmjtXJQkA@T@DP@@\\nfoQp@@@XDeLzmktXJQkA@T@DP@@\\nfoQp@@@XHeLsnjxiIUgMPP@A@@@\\nfoQp@@@XdeL|oZtYIUgA@U@@P@@\\nfoQp@@@XidbbfbQRSNRUYpQAT@@@@@\\ngBQ@@eJuT@@\\ngBX@@eLUT@@\\ngBXHHHaIejh@\\ngC`@Die@@\\ngC`@Dkz@@\\ngC`DADHHRVh@\\ngC`DADZHRVXRH\\ngC`DADZHRVXRP\\ngC`DADZHRVh@\\ngC`DADZHRVx@\\ngC`DAHJPRZd@\\ngC`DAHJPRZh@\\ngC`DAHZPRVh@\\ngC`DAVRDRZh@\\ngC`DAbKDRZh@\\ngC`DAbZHRVh@\\ngC`DAb[DRVx@\\ngC`HADIKLIH\\ngC`HADIKR@@\\ngC`HAbIKJ@@\\ngC`HAbIKLIH\\ngC`HAbIML@@\\ngC`LAHJPt`duP@\\ngC`LAVJluXduP@\\ngC`LAbKDvHduP@\\ngC``@dfZ@@\\ngC``AdeY@@\\ngC``AdeZ@@\\ngC``Adej@@\\ngC``Adij@@\\ngCa@@dkH@\\ngCa@@dkP@\\ngCa@@dkX@\\ngCa@@dmH@\\ngCa@@dmP@\\ngCa@@dmX@\\ngCa@@duP@\\ngCaHDHaIZ`@\\ngCaHH@bNt@@\\ngCaHL@aIZ`@\\ngCaHLHaIZP@\\ngCaHLHaIZ`@\\ngCaHLLQIZP@\\ngCaHLLQIZ`@\\ngCah@mJAIj`@\\ngCahHl@bNt@@\\ngCahHlGBNt@@\\ngCahHlHRNj@@\\ngCahhlAa]ncm@@\\ngCd@Adej@@\\ngCdDI`BHDRZh@\\ngCe@E`dmH@\\ngCe@E`dsP@\\ngCe@I`dlpd`\\ngCh@@dmH@\\ngCh@@doH@\\ngCh@@doP@\\ngChHD@aIU`@\\ngChHLHaIZp@\\ngChHLLQIZ`@\\ngChHLLQIZp@\\ngCh`LDdsP@\\ngChhMDHbNl@@\\ngCi@DDeV@@\\ngCi@DDeZ@@\\ngCi@DDfZ@@\\ngCi@HDefDd@\\ngCi@LDej@@\\ngCiHEAxIVt@@\\ngFp@DiTt@@@\\ngFp@DiTvjh@\\ngFpD@DTHReSZj`@\\ngFpD@DXHReSZj`@\\ngFp`@dfTujX@\\ngFp`@dfTujh@\\ngFp`@df_Ejh@\\ngFp`ATiTvjh@\\ngFp`AdiTvjh@\\ngFq@@drfmM@@\\ngFq@@eLqUU@@\\ngFq@@eLzts@@\\ngFqDDHbqBSZmUT@@\\ngFqDLLRqBRwcUT@@\\ngFq`AbeJfuU@@\\ngFr@ACTiTt@@@\\ngFr@ACTi[FZd@\\ngFt@ATiTt@@@\\ngFt@AdiTt@@@\\ngFtHCQbILimKP@\\ngFtHE`DILikUP@\\ngFtHLPDISNmLp@\\ngFu@E`drfmT`@\\ngFx@@eJf`@@@\\ngFx@@eJfuU@@\\ngFx@@eRfuK@@\\ngFxHJ@aJ]bjn@@\\ngFxHL@aJYujj@@\\ngFx`HJeJxtm@@\\ngFy@DDfTujh@\\ngFy@JDiTvjh@\\ngFy@LDeXvjh@\\ngF|@AbeJf`@@@\\ngF|HLZ@aJYuif@@\\ngGP@DiVj`@\\ngGP@Di]jQ@`\\ngGPBABRHTQXcIHUTpf`\\ngGPDADVHRUZZDT@\\ngGPDAbWDRUZj@@\\ngGPP@cTfyi`@\\ngGPPACTiVj`@\\ngGPXHlQxIU[U@@\\ngGP`@TfYi`@\\ngGP`@df]j`@\\ngGP`@dfuiaM@\\ngGP`@dfuj`@\\ngGP`@dfyi`@\\ngGP`ADkjj`@\\ngGP`ATeUfQD`\\ngGP`ATeUfaE@\\ngGP`ATeVj`@\\ngGP`ATfVi`@\\ngGP`ATiVj`@\\ngGPhCQDIJuS@@\\ngGPhH`DYIHUi@@\\ngGPhMPDIK]U@@\\ngGPhMQDIK]U@@\\ngGQ@@djltHh\\ngGQ@@djuT@@\\ngGQ@@dlmT@@\\ngGQ@@drmT@@\\ngGQ@@dsMT@@\\ngGQ@@dsmT@@\\ngGQ@@eMUT@@\\ngGQDB@jQBUkUP@\\ngGQDL@aAFQRFj`@\\ngGQDLHbqBRwSP@\\ngGQDLHbqBRwUP@\\ngGQHBHaIeiXQH\\ngGQHBLQIeiXQH\\ngGQHJ@aJ]jd@\\ngGQHJHaIUjh@\\ngGQLJIARFdLbdMU@@\\ngGQXHlZHROjj@@\\ngGQ`@ZdrmJ@@\\ngGQ`@ZdrmT@@\\ngGQ`@ZdruT@@\\ngGQ`@bdvmT@@\\ngGQ`@bdwMT@@\\ngGQ`AjdmmR@@\\ngGQ`AjdmmT@@\\ngGQdEb@bRFRRVV`@\\ngGQhHlLSIHTmP@\\ngGR@aEQJyJ]Vh@\\ngGT@ADiVj`@\\ngGT@ATeVj`@\\ngGT@ATeWfqE@\\ngGT`E`TfUj`@\\ngGT`E`TfYj`@\\ngGT`HQTeVY`iZ@\\ngGU@E`drmT@@\\ngGU@E`dsmT@@\\ngGU`E`ZdrmT@@\\ngGXHD@aIUVd@\\ngGXXKEb@cIIBmP@\\ngGX`BDdvmT@@\\ngGX`BDdwMT@@\\ngGX`LDdsmT@@\\ngGXhKB@aJvZX@\\ngGY@DDfYj`@\\ngGY@HDeVZaI@\\ngGY@HDefZaH`\\ngGY@HDfVj`@\\ngGYDIQDJHR[Zj@@\\ngGYHEAxIVkU@@\\ngGYHEAxIVsU@@\\ngGY`BETfuj`@\\ngG\\\\DEj@`aBSJuP@\\ngG]HHjPDIJuS@@\\ngGp`AldTLRuUT@@\\ngGq@@eJqFuUP@\\ngJP@DjYd@\\ngJPBAVJPt`YAIjj@@\\ngJPDADFHRUfaH`\\ngJPDADFHRUfaI@\\ngJPDADFHRUj`@\\ngJPDADFHR[f`@\\ngJPDADQpRZj`@\\ngJPDAbGDRUj`@\\ngJPD`DHHGKdfzd@\\ngJPH@EIRuP@\\ngJPHADIJsHd`\\ngJPHADIJsPd`\\ngJPHADIJtpb`\\ngJPHADIJuP@\\ngJPHADIKSP@\\ngJPHADILth@\\ngJPHAVILuP@\\ngJPHAVIMUP@\\ngJPHAbIJuP@\\ngJPHAbIKUP@\\ngJPLADZPL`dmM@@\\ngJPLAHJPt`duU@@\\ngJPXHlPDQzt@@\\ngJPXHlQBQ{T@@\\ngJPXHlQxQ{T@@\\ngJP`@TeVd@\\ngJP`@TeVh@\\ngJP`@TeZh@\\ngJP`@TfVd@\\ngJP`@TfZh@\\ngJP`@dfVh@\\ngJPdEaDPHRZe`@\\ngJQ@@djsBJ@\\ngJQ@@dju@@\\ngJQ@@dkSBJ@\\ngJQ@@dkU@@\\ngJQ@@dls@@\\ngJQ@@dmU@@\\ngJQ@@dru@@\\ngJQ@@dsT`@\\ngJQ@@duU@@\\ngJQ@@eKU@@\\ngJQDDH`qBRmT@@\\ngJQDHG@nBUMT@@\\ngJQHBHaIVYDd@\\ngJQHBHaIVj@@\\ngJQHBHaIfe@@\\ngJQHBHaInZ@@\\ngJQHBLQIVj@@\\ngJQHBOAJfj@@\\ngJQ`@bdvt`@\\ngJQhHl@bOV`@\\ngJQhHlHROZ`@\\ngJT@@Te^h@\\ngJT`E`TfVh@\\ngJU@DPdru@@\\ngJU@E`dru@@\\ngJU@LPdkU@@\\ngJUHLT@aIjZ@@\\ngJX@@dkU@@\\ngJX@@eKU@@\\ngJXDBLQXbS]V@@\\ngJXHD@aIUZ@@\\ngJX`BDdvu@@\\ngJX`DBdjt`@\\ngJX`DBdru@@\\ngJX`LDdru@@\\ngJY@BDfZl@\\ngJY@DDeUh@\\ngJY@DDeVh@\\ngJY@DDefh@\\ngJY@DDfVh@\\ngJY@LDijX@\\ngJYHC`DIKTp@\\ngJYHCaHIKTp@\\ngJYHEAxIVmP@\\ngJ\\\\@@ldru@@\\ngJ]@EbDfVh@\\ngJ]HEcAxQ{T@@\\ngKP`@df\\\\Vj@@\\ngKP`Adi\\\\Zj@@\\ngKQ@@eKEUP@\\ngKQ@@eKcRp@\\ngKQ@@eKcUP@\\ngKQHDHaImZj`@\\ngKQHH@aJoEj`@\\ngKT@Adi\\\\Vf@@\\ngKX@@eKcRp@\\ngKX@@eKcUP@\\ngKX@@eMEUP@\\ngKXHL@aJWFe`@\\ngKXHL@aJWFj`@\\ngNpH@DIRkUJ@@\\ngNpJAHJPtaYArFQRFUU@@\\ngNpN@iRHTQh`qEbGDQ\\x7FUT@@\\ngNpOAYRHTQh`qEbGDAh\\x7Fjj@@\\ngNpP@jtfvZf@@\\ngNp`@TfWZZ@@\\ngNp`@dfVZf@@\\ngNp`ATeVYjDT@\\ngNp`ATf^Zf@@\\ngNphJqDIKMTl@@\\ngNphMQLISMSL@@\\ngNpiJqbOdeVjf@@\\ngNplJqHJPtadTaeTp@\\ngNplLQDSpPPduluP@\\ngNq@@djkLpRb`\\ngNq@@djkLpRc@\\ngNq@@djkMPb`\\ngNq@@dl{UP@\\ngNq@@dskUP@\\ngNq@@eJmTh@\\ngNqDLHaqBRjuU@@\\ngNqHFHaIfYjP@\\ngNqhHl@cIIBej`@\\ngNqhHlOAJkVj`@\\ngNqhMV@aI[jY`@\\ngNt@@teUjj@@\\ngNtHAePIKMuT@@\\ngNtHE`DILruT@@\\ngNtHE`DILzuR@@\\ngNt`E`TfWZj@@\\ngNt`E`TfYZj@@\\ngNu@E`dl{Tpa`\\ngNu@E`dskUH@\\ngNu@LpdjmUP@\\ngNx@@eLuUP@\\ngNx@@eRmUP@\\ngNxHD@aIUUj`@\\ngNxHD@aIUej`@\\ngNx`LDdskUH@\\ngNx`LDdskUP@\\ngNx`LDdssUP@\\ngNxhMV@aI[ji`@\\ngNyHEAxIVjuT@@\\ngNy`BDtf{Zj@@\\ngNy`LDtf]Zj@@\\ngNyhGE`DYIITmT@@\\ngN|@ADeJkUP``\\ngOp@DiUkZV`@\\ngOp@DjWkB@@@\\ngOpHADILkW@@@@\\ngOpHADILkWTu@@\\ngOpHAbILkW@@@@\\ngOp`@dfUMZj`@\\ngOp`@dfVqZj`@\\ngOp`@tiguif`@\\ngOp`ATiekjj`@\\ngOp`A\\\\dTQbjj`@\\ngOphH`DYIHUVmT`@\\ngOq@@drm[ST@@\\ngOq@@drm[UT@@\\ngOq@@drm\\\\@@@@\\ngOq@@drm]UT@@\\ngOq@@eLvmLt@@\\ngOq`@VdsNkTl@@\\ngOq`@fdrikTl@@\\ngOq`@fdrikUL@@\\ngOt@@TeVkzj`@\\ngOt@@tiek@`@@\\ngOt@@|daRbjj`@\\ngOtHE`DILl[MT`@\\ngOt`EPTfVKZj`@\\ngOu@Dpdrm[Rt@@\\ngOx@@drm]UT@@\\ngOx@@eSRuUT@@\\ngOx@AddJTUUT@@\\ngOxHBHaIeZx@@@\\ngOxHDHaIeZx@@@\\ngOxHDIAIeZx@@@\\ngOxHHHaIeZzjh@\\ngOxHL@aJY}Zjh@\\ngOy@DDfYKZj`@\\ngOy@LDiisjj`@\\ngOy@hAteIeZx@@@\\ngOz@ACVeKNLuR@@';\nTrb.RE='fHe`A@\\neO`BNZ``\\ngF|HLZ@aJYuif@pPWHP\\nfHgdAy@\\neMBBHRZCAKd`\\ngNxDLHaqBRjuU@P\\neMABHXaIhH\\ngCaHLHaIZ`H\\ngJQ@@dls@XKGd`\\ngJP`AdejhC@qX|`@\\ngGP`ATiVj`LCEcrT\\ngGP`ATeVj`LJEc^R@\\ngGQ`@jdjmTAal[rP\\ngGQhHl@cIIJmPFBMyL\\neFBCPcA@\\ndid@p@bBbFbDfYoa`b@@LJ@fx^QP\\ndaDD@@IIf]n``@@pkBiny@@\\ngChDL@aABSM@XHKdp\\ndazD`N``|DjwVjh@`\\nfHbTAa@\\ndaxB@@InRYgZj`CBdpf{dT\\ngNxLL@aAABDfVZj@`\\ngGPB@DHHpQPaIUZdB\\neMC@HoABDe`pccH\\ngC`L@DSpPPdkPD\\ngJU@LPdjr`XIGd`\\ndaG@@@kdig|jVj`CAdpj[`\\ndaD@@DjUZxHH@CAdpj[nQ@\\ngKP`@Tixjj@ptVyB\\neMhDRZCAKd`\\ngJQ@@dkU@XDQGdp\\ngC`D@DXHRVhCAC\\\\TP\\ngGQ@@djmTA`Xl^R`\\ngGXXKEb@cIIBmPD\\neF`BNFE@\\ndidHPBBHFHRYgVzB@`@`\\ngCe@E`dsPFBV@\\ndaFL@HABR[e[fii@H\\ndaE@@@yIe^f`@`@piLJny@@\\ngO|HEfHaIeZx@@B\\ndcN`@@pjYJYe}k`Hbj@B\\ngN|HEb@cHhhVj`H\\ngNp`@deUZj@pvkxhP\\ndax`@@bnRn[ff`RHj\\ngJT@@deVhCCKGbD@\\ndigDPLXXP@b`cIIKDnEZfd@`\\neFBBDcAaWH@\\ndeVL@HAIR[e_aZ@B@B\\ndaDH@@RVU[f@@@LJ`j[nQ`\\ndcoH@DJ`RUeUVy]ZZ`@@B\\ndmO@@@pldTTJRraej@B`@`\\ngNp`@dfUZf@pvMyF\\neMBCDRZCAKd`\\ngJPDAbGDRUj`H\\neMBBHRYCAKd`\\ngCe@H`dtpD\\ngCi@LDek@`\\neMaDBKpRVB\\nfHbXAa@\\nfHfpAa@\\neMIDBKpRYB\\ngJ\\\\HEb@aIej@pPWEb\\ndcNL@M@aRYgWVzB@j`@`\\ngNpXHmQxYIIXuTA`Uj~P`\\ndeT@P@bNBDfUuih@J`@pxDpjx^QH\\ndidHPABHJHRYgVzB@`@`\\ndcl`@@`nReeWZY]@``@@B\\ngOr@Ajti]qZY`H\\ndeV@@@ReWTj@Bj@CCdrfxYyD@\\ndeV@`IBHRYWVf`@j@CC`SBkiy@`\\ngChHLIAIZ`LEMrH\\ngNxhMVIAI[ji`H\\ndeWH@DJPRY[TYZ`@@B\\ngGPhCPDILuS@XXR|f@\\ngGP`ATivj`LMc^JH\\ngNp`ATiUjj@pLQoEf\\ngJQ@@djsBJptQyL\\ngNu@H`dlkUPFBqxjp\\ndeV@@@RYyTYj`@@CBPaLinFP\\ngCah@mJAIj`LLE`\\neMFIHRM`pgd@\\ndaD@P@bNbDfUzZ@B@B\\ndifL@LAARYYRijjX@`\\ndaxD@@QIUYjj@LJpj[nQ@\\ndcN@@@rQQHqIKmUP@@A`hPfEprn|b`\\ndmtH@@RYWUih@Jh@LAALJnF^Ph\\ndmv@@@rRJIIFUjB`@@pyLJnF^Hr`\\ngF|@AbeJfuU@P\\ndiFB@LANEIn^ZjX@`\\ndeTL@@Z\\\\bbRbM]@DT@FC@fMt|`P\\ndcNL@MAirJIJHsUt@QU@A@\\ndeT`@@pjrQQIFTpDEP@P\\nfHd`Aa@\\neFJHbHpP\\nfdu@@@LdbbTRrLtSI\\\\TZwhaDTUUTU@A`YFBTYpRmF\\\\GfI^b\\ndiT@@DjYVnXPbD`@pIBinYgB\\nf`iA@@@YHheDdYdj\\\\DiwjBH`@H@@`\\nf`iA@@@YHheEdXdj\\\\EIwjBHH@H@@`\\ndmLH`I@HRfUwrnF`PJ`@phBXUxbT\\ndedF@@PfFTf{nZjf@LFSBii@\\nfoQPP@DLAhulbbbTRTLYpTmNZjjjZh@H\\nf`i@@@DjUg^uhIVg^BBb`@H@B\\nflmA@@@ILkZvmsQdeV\\\\EL@EUUUQT@FEdXipTeZM[tT|P@H\\ndet@@DjYUX^dHbH`CAdJfF^Ig@\\ngGY@JDeejpH\\nfb}`@@@YEDeMDhTihjLUiwhyZjjjjjjh@LOHpRgARUhugASgb@Q@\\ndclH@@rQQRJItJ{PUPB@FEDwSoLhU@\\ndg|D@@OIEEHhfmPkmAU@T`A@\\ndcMB@HDDWTfyV{iZ@HX@H\\nfak`A@H`dDrBSJ{LjnmkQc`m{@ATDDUUPP@P\\neghP@@@LdbbdRdRQbLf|VRcEdbgfPRSUUUUUUUUMUP@D\\ndidD@@iJ[gxZB@@C@dkaxaL\\ndeTD@@QImYQejjj@LNpj[agdH\\nfdu@@@LdbTRTjTtSA\\\\dZwhmUUUUUU@A@\\nfoQ@B@@AFRJJJIQX|UJqgT@PP@`@D\\nflmA@@@ILk[J}sQdmV\\\\EL@EUUUQT@D\\nfgA`B@N@BDifYWz\\\\d[Uj@H@B@@H\\ngGUHEj@aIUZdB\\ngGX`LDdjmLIkBWba@\\nfnk@`@@MrJJZQIFYJSKYdmF|DmVjjjjjjjf@B\\nfoQA@@@YHhhheEcqTkF]PAA@B@@P\\ndiFD@HCDemVZj`bJ\\ndcMH@LDDeYWWajjjj@LIBDJfzUyF`\\neFDBcAaWH@\\nfewAP@@Vkv^QQISQJFKIQJVZcEF|EIVejjjjjijj@CBJLTxJRmFl{t\\\\ejOdI`\\ndmTJ@@PYUIeUYjjV@LBpjWdL\\ndmLH@@RYVuiiV@BiH@`\\ndk\\\\D@@OIEEHhkje]hJbB`@`\\nffsA`@@VkdTRTtRabrTRhqQoARUiZjijjjj@B\\ndg|@@DjYV}~T{`d@@@@H\\ndeTH@@Rfuunh@I@C@lJfybCH\\nfoA@P@@HuYIe[UvhrRfi@Bf`@H\\ndeTD@@QIgeQej@@@LJrfx^QH\\ndif@`D@HRUe^Eh@@@pXDinGbPP\\ndg~@pIBPRPrPrJPqISIBiwU@@@@@P\\ndmL@@DjYe^TYHI`h@H\\nfb}A@@@YEEHdcLeIeb\\\\djsdyZjjjjjjh@LOXIQgARUjsoAbgdL`\\nfc\\x7FAR@CQ[OXICHhhdiDimCEDYmBrPk^SfmSUUMUUUSTt@D\\ndmLH@@Re^UpiVe`@`@`\\ngNp`@deYZj@pNM_I@\\ndmtH`NBHRYWVih@Jh@LNALJiWdB\\ngJQHBLQIVi@`\\ndmtD`NTHaIe]Vf`@jP@`\\ndmtD`NTHaIe]Vf`@j`@`\\ndklLPDp`BH|LbdRRaRtvjh@@@`\\ndeU@@@aJWeQej@@B@h\\ndg|`@@pjrQQQGQIMqvAPP@@@P\\ndeT`@@pjrQQQUMpEAP@P\\ndaED@DXNRYUifjf@H\\ndmND@DCdfVUrjUZjZi@H\\ndg}@@@aJVYU^Svv`@@@@`J\\ndg\\\\@@LdbbbTicRDQIS@Qs@\\ndk\\\\d@DsmB\\\\bbbTrQXUujjUj`C@liS@\\ndazH@DAImeiiBL\\\\Lrfxb\\\\\\ndkNH@DAImgVVffZPsEhV\\ndefH@HAIUVYfZPrKJj\\ndaF`@@pjYJYfn@b@@pPfyG@\\nfhi@@@LdbbQfTbdxKShF@jjh`@`\\ndmt@`@bDfUuZZ@Bj@CC`SBkaxdj\\ngOt`DPtfWMZi`OLlP\\ndaED@DHNRY[Jfjf@H\\nfluP`@DD@iIfUeeurL]DJVjhD@@H@@`\\ngNy@BDeUZj@pJu_EB\\ndcNDpBWPbNBIdDfYUYa``bT@H\\ndmvDPIxPbBBDfYZVVBAX@CB`rfgdJ\\nfoA@@@DjYW{WdkN`XH@@@Ppp\\nfluA`@@HddrsJoN}NF}EKTpT@@D@@XJEKQkN|FJ^PX\\nfhi@P@@HeyIefU]zgCNZfB`ah@B\\ndcML`EvDp@cIIKDedLkP@R@D\\ndieD@DpARYevyjiX@pRnxfD\\nfhyA`@@HBdrrkN~RdcN|uA@@AP@A@\\nfbmQA@AJRBH}HILk\\\\kOKtyit\\\\pACTE@a@@P\\ndg^B@HAEmInUvwaZ@Bj`@`\\ndg^L@DAaRUf^uNvjj@@@H\\ndcNH@DAIgfYgVhBH@CBnFUwbI`\\nfle`a@BAbBHeDYEEEDhXXeDqWdpPU@PL@@D\\ndefL`BpYBHRVvZfjX@`\\nfoAa@@F@rJJJIJINUeFZBPjHP@pDRgARtYwHJ@\\ngOtHDpDILrWST`XHwbF@\\ndigD@HK`QInW[fiZ`CCDX^QP\\ndeWD`D[ad@cHhhhXWTuSHA@\\ndg}@@@mJYeU|]Tz@@@H@CAPpj[aeSyE`\\ndiU@@@aJUUpnFZ@@@LBinGbP`\\nfoQP@@@XRfYV}|LEjsfjYA@h@B\\nfhe@@@LdbbTbTurXkfaF|DHbhh@B@@`\\ndaFD@DAdfUjyjf`CCDsnQP\\ndax@@DjWzjh@pxHPj[nQ`\\ndmO@@@`diWe\\\\JUfh@D@LFanFUyB@\\nfdep@@@PHeKOLjoxH[s`sU@@@D`@D\\ngGP@DiVj`LBl[qB@\\nfdy@`@@QRYWYVuzL|F@Bj`@`@B\\ndeTH@@RYWZf`@f@CA`SBj^PH\\ndmtH@@RYWYih@IhBNh\\ndg\\\\HpMBPRPrPrJPqIPsCMT@ET@D\\ndmv@`EBHRYWYih@Jl@H\\nfoApB@EZ\\\\BHRYWYyZLlz@BjiR@B\\ndaG@@@rdifzxHH@CAB[bYp\\ndev@`NBHRYUVfFX@Ja@LJCBz^H``\\ndcnH`IHHaIfU]XUvBBJa@H\\nfoAQB@FF\\\\BHRYVwUZ\\\\EJ@HjjQ@B\\ndg]L`LfDD@cIIBhhd]ikTC@P@XMc\\\\nwrI@\\ndaGH@DJ`rJIPdsTt`D\\ngNq@@dsUUPFEDM_I`\\ndklHPABHvHrJJIJQEn`HJj@B\\ndeTH@@RfUWihHH@CCdpfxYyE@\\nfduA@@@ILroZviFBdZpXmUUU@AT@A@\\nfhya@@O@rJIJYRIKFcIF]z@BjjjJ@CCPDXhJRmFl{d@`\\ndk\\x7F@@@bdie^urnGSfj`@X@H\\ndg|@@DjU^yZx{BAJjbBJX\\ndid@@DjU^nBAHBJ\\\\FaLJaxc\\\\\\ndeUD`LjD@HrREQICJt@@@XUc\\\\L|`@\\nf`qPb@LB``@QddaTTRRVtzwej@@@@@B\\nfdu@@@DjUe_[e`nRM[tYfjjjjj`@`\\nfb}@@@LdtTbRLrTrUAJt{r\\\\}UUUTuUT@D\\nflmA@@@ILkZvmsQdeV\\\\EMUMUUUUT@D\\nfnk@`@@MrJJQJJYERKH{`iJ|dmZjjjjjjjj@C@hHXIQgARUYw`qSdmV|ah\\ngJPhLQbIKTpD\\nf`i@@@DjYU[wxjQg^`@@@@@@CBRLDirVkNy`Qo@\\ngGUHEj@aIgZdCAA\\\\VH\\ndcn@@@RieU~V]jjjj`CATpj[ae]yD@\\ndmO@@@`diYuZZU@`@@@LJsae^PP\\ndieD`JXaCDRYgvzejX@`\\ndeVH@ACHhhdbwPDE@AaPXUMsNFP\\ndknH@FAIfUWaVhHHh@LMBLJfxYt~Ph\\ndg]H@FlDfYU^QVhHHj@B\\ndknH`Bp@aJYvU}NfhH@@H\\ngNqdEb@b^FQRHmU@XXU|VH\\ndg|@P@bEbLbbbTRRKR]pP@P@@D\\ndmtL@@QTfyeQehBB@B\\neMdHTf`pQyP\\ngN|@@ldssUPFEBM_I`\\ndef`@@SFyIeYfjZ`B\\ndidHPBCDGDRYgVzB@`@`\\ndigD@HHPQInYXVijPCCDknPp\\ndmvD@EADfzUQUjjj`B\\ndifH`JD@cIEDd\\\\jfZh@`\\ngOq@@dlvKUTAaeWqP`\\ndaDD@@QInXjZjh@`\\ndmMH@LhDeemZZUYh@H@H\\ndeVH@ICHhdhUSP@U`A`RYS\\\\PN@\\ndclL@@STfUmVfeVi@B`@pKaW^Ie@\\nfheA`@@JLeLrsLsPPkR\\\\kUUSUUUU@A@\\nflui@@DXYYHDfYewvUHrVhiZjifjjZ@CCUNBdkQg^CGdD`\\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@pxQ`iZM[bEN@\\ndifH@BAIfuxZ`@@CB`inGbQ`\\nfoAP@@@NrQQQUQIZgCVifh@J@@`\\nfdy``@N@PdrwL}kjtFKTuUA@H@FDbLxHug^CqBh`\\ndig@@@`Tke]nX@H@H\\ngOq@AdbbLUUTA`Uc^Q`\\ndk\\\\L@@jTie]urnF``Jf@B\\nf`i`B@F@bDfUmYWiqQg^`BJB@H@B\\ndeVD`NFPBDfUvih@I`@pKBj^HB@\\nfde@@@LdbbTRtQRSIJuzHQEDDDD@A@\\ndidHPABHZHRYVZz@H`@`\\ndidH@@RfU~F``@@pYLJnGdL\\ndmMH@NTDee[VFUX@ab@LBpfWbQH\\ndcmH@DhDfUe]aWVjA@`@piLzUx`z\\nfluQB@NNbBHRYeg[Y]dkNBfBAbB`P`@H\\ndid@@Ldbbq[`bB@CBdJfGdX\\ndefJ`JaLFP|LddjRcUTpA@\\ndifD@DCdfVZaZjZ@LLRaxfL\\ndeT@@DjU_k``b`@pzDJfz^I``\\ndeWH@DJ`RYYTfZij`CCNF^He@\\ndmwH@DJ`RYYYIfjZj@H\\nfb}@`@@YRYUUm[ehrRkNBf@BjjjjJ`@p|CANBdkQk^CEN^PP\\ndcnH@BAIf^u[evB@@@@H\\ndcLB`HSFCpRj}mUujh@@@`\\ndidH`HApRkm^Fh@@@`\\ngJPhH`xQ}TA@\\ndmL@@DjYUVgaHIBh@H\\ndidD@@GIEEE\\\\jfZh@`\\ngFp@DiTvVhC@qX|Ph\\nfj}P@@@IrRJJIQJIHdqUmA]Fh@bBHJh@@p}bgARUhug^CGIP\\ndknD@BADfyvUtvjh@@@pELXYWSxaT\\ndeTH@@RYWVf`@j@CC`SBkiy@`\\ndg|@@DjU_eZx{BAH@@BJlAaBjUt~Ec]X\\nfj}a@@O@rJIJYRIKEIRcIF]z@Bjjjfb`@`\\ngNy@LDegjj@plVKxaP\\ndo~D@AA|dTRRbqbyZBBbj@B\\ndidD@@yJ[VXZ@H@CBdpf{dB\\ndmLD@@iJYW_JxZB@f@CBdIagdJ\\ndaF@@@RYe[hB@@LJCBinQp\\ndieH@FxDigwJiejBJlLpjyb\\\\H\\ndg^L@LAER[eYWNvjhD@@LAPjF]N~Qp\\ngNr@Ab|dTQeiDe@\\ndaF@`H@HRVU[jjj@LNaLJf{d@\\nfnk@`@@ErQSISISISQJUgEZ]zNZ@Bjjjjlj@B\\nfb}A@@@YHiiDdYdidjBUiwdyjjjjh@J`@H\\ndmLD@@eIfUTfEV``R@B\\ngJQ@@dru@XS\\\\RH\\ndeVD`NFPbDfU^ih@I`@phLIiyB@\\ndmuD`BFUBHRYg^[hHBX@H\\ndid@`@qDf[Wai@@@H\\ndcmH@DhDfUe]aWVjA@`@pKNe^X`z\\ndmvD@HADfueYUi`@@cF\\ndeT@@LdbRQU\\\\DBT@FCPaTL|SF@\\nf`q@@@DjU]YWiqw``R``@ABe@\\nflmA@@@YEDeMDhTieQbmN}EKUUUUUUT@D\\nfduA@@@ILkZvmmFRUYpXmMUUUUU@A@\\nfoAA@@@ISZzrkNV]P@T@@@AaIFBTXkQk\\\\PIp\\nfhi@`@@^Rfuue]Yrsj@B`@h@@`\\nfdyA@@@ISZvnsKNJuP@@EUP@A@\\ndo\\x7FD@DgP]IefU\\x7FTvhJBI@B\\ndkm@@@kIHbdhdmNjj@@@LIaLIae]xeF\\nf`qa`@D@EyIfYUwrLuYj`XHf@@pYrRmFmqEG@\\ndk]H@FDLbbbbbey]N@H`@@B\\ndeT@@DjU_k``b`@pFDpj[iy@`\\ndg^L`LaC@HrRPzIKJRju@AL@FCXS\\\\L|bp\\nfoAa@@I@RYeU{QJlyhHHjb@B\\nfoA@B@@RFQQIPiQITYYt@Dp@@BGF\\ndid@P@qAqDfY]n`HH@H\\ndidHPFBHJHRYf~FBH@@`\\nfdei`@LJLzHIZrQQQQIJJkDiYpXuUUTBAP@D\\ndeTH@@RYWZf`@f@CB`SBkbCH\\ndeTH@@RYWVf`@f@ckA`SBknHL`\\ndmMH@HxLbbbTQ[iV@@@@@`\\ndk\\\\@`@BDifUWGUN`@@@@CBPpj[ae^Ii`\\ndeVD`LFPBDieWrjfiXHr`\\ndg|L@@Z|dTRbfQuCNtEDQR@D\\ndg]H@IlDfYU^QUhHHj@B\\ndcLD`BtHaIfUuXXHHj@B\\ndk_H@DhpRYVU}aWVjA@h@H\\nf`a@@@DjU_gVipHDffXAbbItp\\ndo}L@HdDuInUunxV`@ij@B\\ndcvB@LANGHieEDXuTuPA@\\ndkn@@@rQIJJIGSjhJ@@CATrfxYWSx`P\\ndaxD@@QIeUjZBB\\\\Bpf{dT\\ngCh`DLdlpd\\\\InHP\\nfoAA@@@ILkjrmFV]@AL@@@ar`\\ndk\\\\D@@WIEEEDYjF]hJHbP@`\\ndmtH@@Rfuu[j@BXBAlJSBinXLj\\ndklH@@Rfuuenh@Ij@`V\\ndidB@@[aRfU\\\\jjjh@p[BinGbP`\\nfhi@H@@XyIQgArQQIQJ[JV`k^jjjjjj@CCTBTxJVcN|GfDLl\\nfhiA@@@ILrsZkf|xKUP@@@@@XFps`iJtZsoAyA@\\nfdyA@@@YEEHeEBdekA}Ejj@@@@@B\\ndmVH@NAIe^Yjjj@LNpjXYWdH\\nfhqa@@C@RYegV^tyjhHJJ@@`\\nfoAQ@@DJ@drrkNrMYsTDEED@FDdDYpVcV]sEIJ@\\nfjc@`@@YRYVum[ezLdjs`i`@jjjjhj@B\\ndeTH@@RfUWihHH@CCdpjxYyC@\\nfbmA@@@YEEMHdcLeHVRt[pVjjjjjjh@H\\nfbmA@@@YEEeHhmEhXmV]zNVjjjjjjh@H\\ndk^L@IANRY[f~]tvjjjj@LApjXUt~It`\\ndo|H@@rJJIPjHqaZZijZBAh\\nfgAP@@@LrQQJJYPtdKQk@@@@@@@XBQPTeZMX\\nfH`pA@\\neMJH|Df`pgd@\\neOB@HcfhH';\nTrb.SE='gFq`@ldrfmU@XR|a@\\ngKXHL@aJWFj`LBHmrD\\ngFyHL`DILikUPD\\ngKTHLPDIRxtlA``nR@\\nfHgdA@\\ngNp`@dfzZj@pJMX\\neFA@H`bLFE\\\\`\\ngCh`LDdsPFDWI`\\neMHAIdLF^P\\ngCa@@dkHFBVyH\\ngJXLL@aAABDfVhB\\ngJXHD@aIUZ@`\\ngJXHD@aIYj@ppqyH\\neMXIDe``\\ngOx@@drm\\\\@@A`plZp\\ngOx@@drm]UTAaqEcV\\nfHapA@\\ndid@@DjUfaBB`@LNaLinGdD\\ndidD@@IIf]xViZPCBlJfGd\\\\\\ndidH`DBHR[e^FX@@@`\\ndid@p@bBbFbDfYoa`b@@H\\ndidH@@RUe^Fh@@@pxHPj[nPH\\ngCd@ADkj@ppbyL\\ndifD@BADfyWaZ@@@LBQnGdT\\ndeV@@@RgYTYj`@@C@PaLinGdR\\ndiDD@@QIn]Zjh@pYLInGdT\\ngNp`@dfuZi@pJM_I`\\ngC`hIaxIVtA`enP@\\ngGYHKAxIVkU@XYZ|PH\\ndiFL`JcaCpRm[fjf@H\\nfHbTA@\\ngNtDLpDHHR[UjhB\\ngGYHEAxIVsU@XEXwd@\\ngNq`@jdvkSPf\\\\Ll~P`\\ndaxB`HSN@HrRPyKUPAaaTwHx\\ngCaHDIAIZ`LINS@\\ngJXDBIARBS]TA`h^S@\\ndiE@PBDIAIAInujjh@`\\ndiED@BDDR[mVjj@LFPj[ayF@\\nday@`Lx@aIUVjj@LNaLJf{d@\\ndmv@@@Rf~UeZj@@@LEBDpfxYT\\ndmvD@E@dfYwVzB@j@C@PpjxYT\\ndmvL`BaL@HrRRjIJUVjjh@`\\ndmvL@EAFR[f_FV``H@LFRfxU@\\neFA@HoBJD\\ndiGD@JxPQIeUZfX@`\\ndiFB@BAFEInuZjd@pILJnQp\\ngCd@ADij@ppfyD\\ndaFD@DCdfVRiji`CCDinQ`\\ndaGH`LJn@HRf_rjYj@H\\ngC`@Die@ptVy@\\ngNq`AVeJmUPFEbq_IP\\ngC`DAb[DRVhB\\ngCaHLLQIZ`LDEqS@\\ngJP`@dfzhCCA[ba@\\ngNp`@dfuZZDu`TZ~S@\\ndaxD@@QInuij@LBRf{dD\\ngGPBADZPLaYAIZjhB\\neMABHYAIhH\\ngNqBLIAREdGHIMmUTAaCrP\\ngNt`BpdfyZZDu@\\ngJX@@dmu@XKGdP\\ngGX`LDdsmTA`m^P`\\ngNx@@eZoUHD\\ngJY@HDeVhCAK\\\\a@\\ngJXDB@bABUmTA`Pl^R@\\nfHbxA@\\ngGU@DPdrmRAaecrT\\ndedd@DHYCdfW[ZfZBBX\\ndcLL@@STfVyVUZ`HD@H\\ngNp@DkVzZ@`\\ndaD@`@bDfUjZ@B@CB`SJ{dL\\ndcLL@@QTfVUV]Z```@LNJfFUwd\\\\\\ndaxh@LInAIUYffBDh\\ndaDh@DInAIf]nZiX@`\\ndmu@`LTHaIUe\\\\Yj`@`@`\\ndaFD@N@dfYvyjV`C@lJfyG@\\ndeVDPL[`bB|DeYgFZjZh@`\\ndk^@@@Ri_YVftzjX@H@LEaLJae]L\\ngC`HADIMTAa`mrP\\ndeT@`@bLbdTJPsU@@@D\\ndcND`La@BLddJbRrzmPP@@X]S\\\\LkoHp\\ngNphJpDIKMULA`QD^Q`\\ndiDL`JXPBLbTTJjfd@`\\ndaG@`LK`BDimVz`@@B\\ndeU@PAdH`haIf]vzB@h@H\\ndmuD@FdBRgmeeZjjV@LNaLJaWd\\\\\\ngNp`ATeejj@pXfM_H`\\ngNqhHjOAJmVj`LLZ~HX\\nfH`TA@\\ndaxL`HS@BLddNRuT@XXUMrN@\\ngGR@ACTkVY`iZ`\\ngN|@ABeJ|mPTdxJofVH\\ndax`@@`fRegej`RIJ\\ndayD@LXJRVUYk`aJ\\ndigH`LJn@HRf_ljfYh@ppBGdH\\ndaFH@BAIeZf`@`@piLiny@@\\ngNuHDx@cIHTej`H\\ndknH@EAJYYfQN`bJ`@LIRfxYWS@\\ndifH`BDHaIe]ih@I@B\\ndmOH`LJQ@HRf^yriVfZZh@`\\ndmNH@HCHhheDVzU`@@@@LNCJXYWd\\\\\\ndcnH@AAIVYWXUvjP`H@LABDkag^Ph\\ndew@@@pldTTJVTLmP@P@XUaMt|`P\\ndaEH@DhDfVVyje`C@dJfyG@\\ngNp`@deVZf@pvkyH\\ngGQ@@dluTAaQEkrD\\ngNq@@djuUPFCDqkyD\\ngNq`@fdskUPFFq_IP\\ngJU@HPdkU`P\\neMhHRVCBP\\ngCi@HDfZ@`\\ngCh@@dmHFFBwI@\\ngGYHLQDIJuU@P\\nfH`XA@\\nfHbXA@\\ngNpHAxITkUTAaqEcV\\ngKP@Di\\\\YZ@phbq@\\ngJQHH@aJmj@ppQyL\\neMJDBDf`pQyP\\ngJT@@TfVdCAK\\\\PH\\ndiG@`Dp`BDfWejjPB\\nfHcdAa@\\ngCh`LDdkPFDwI@\\ndcNL@M@iRYg^vzB@j`@pdLJnFUt\\ndigD@Dq`EIeYkfje`CCDqnQp\\ndiT`@@rnRfUjEnBA``B\\ndmNH@DAIe[VfeVj@B@CAdkae^Q`\\ndedHXJBPRPrPzPFPfPrJPsRUSU@D\\nfHcDA@\\nfHdXA@\\nfHdxA@\\nfHgHA@\\ndeTH@@RYeYn`HJ@CC`JfxYyF@\\ngGQHJ@aIUjhCBqXwd@\\ndaG@@@kdiVrX@a@C@hPfyG@\\ndcll@DpYAmRYV]zzUZije`B\\ngNtPHPjtfvZf@`\\ndeVD@HADfvUFVh@@@`\\ngGT`EaTf]jPLDmrD\\ndaGH@DK`R[e[fiZ@LLQnyE@\\ndmvD@BADfyW^Eh@J@CBdingdJ\\ngGY@LDeVj`LJEc^R@\\ndcnL`LaA@HrRPjIKTrzmPHD@FEYtkh\\ndaE@@@aJyUnX@@@pkBinyD@\\ndie@`NDHaIe]ih@J@CA`SBknPH\\ndeU@@@aJueQfj@@@LAaLinF^P@\\ngN}@EbDf]Zj@pJqoHp\\ndeU@@@aJueQfj@@@LAALinF^Q@\\ngJT@@Te^hCCKD\\ndcwD@BWPQInuVZjjX@`\\ndiVH@BAIfUInFjZi@H\\ndaz@pL@HPHxHRYyZj`B\\ndaz@pL@HPHXHRYvZj`B\\ngGYHE@DYIHUj@prqyJ\\ndayH`Dr@|Djyfjh@`\\ngNp`@dfuZi@pJq_IP\\nfHdpAa@\\ngNv@ALZtkefj@`\\ndieH`Dq`BDfUfnZii@H\\ndaF@PDBHzHRYWih@H@H\\ndaF@`N@HRf_rjYj@LFALJnyC@\\ndaFH@BAIf]n``@@phLInyE@\\ngGQDB@baBSKTpD\\ngJPhLPDIKTpFDGEB\\ndeV@@@RiU\\\\Yjjj`C@XSBkagdL\\ndg\\\\`@@SFRYueUNvjjjj@H\\ndg]@@@IIUYyT{zjh@@@`\\ndaxH@@RV^jj`CAhPj[nHF@\\ngGX`JDdjmTA`c^JX\\ndg^D@IADfvYW}MjhHB@B\\ngNq@@dl{MPblLZ~JX\\ndctJ`HSBtOCIILXhduSUHQS@\\ndkl@@LdbRdSRjP`jJ`@pfDJfxUOdZ\\ndidH@@RYeVz@``@pXLJf{dB\\ndigH`LJa@HRf^|jfZX@`\\ngJQhHb@cIHUhCB[bA@\\ndaD@P@qBbDfYvzB@@B\\ndkm@@@IIUfU}OjhH@@H\\ndid`@@pjRfUjXBB`@pSaxbL\\ndcND@E@dfYwYn``Jh@LACBkaW^QH\\ndaF@@@RevpjjZ@LJAB[nIF@\\ndmvD@BADfy]fyjjf`B\\ndifD@NADfvWaZjj@LJSBx^IS@\\ndcND@IADfvYXYZjjZ@H\\ndcND@BADfuYU]Zj@@@LASJxYW^PP\\ndeTH@@RYe\\\\YjB@@C@Ppj[agdP\\ndmvH@FCHhhhdYVhJ@@C@PcJ[aWbEH\\ndcNL@LANRYygiUjB@`@`\\ndifH@HCIDhYLJejh@`\\ndaED@DHFRUe[fff@LDRnIG@\\nfH`PAa@\\nfHdHA@\\nfHchA@\\neFHBJFE@\\nffs@`@@HRYyVWm[W`cVCDmVjjjjh@J`@H\\ndcLD@@UIUe]FVX@J@aKCdrfx]yD@\\nfewI@@DXldBSLjj\\x7FJzriFJMEHymUDDUUT@@P@D\\ndeVD@HADfyeFV`H@@piJ[ayD`\\ndet@@DjYUZ^D`dJ@CBlJngfHp`\\ndaFH@LAIVUnjjh@pZDJf{d@\\ndg~H@AAJYU^wiNzBBJh`B\\ndet@@DjYUZ^D`dJ@CCdpjxYyC@\\nf`qa@@D@RYeU{TRg^Zij`@`DJVBbTxIVcV]{bLL@\\ndmLH@@Rfum[iV`@jD@`\\ndclD@@WIEDhbmSCMAPEH@XTa]N|Rf@\\ndclD@@UJYY\\x7Fkaf`bBh@LJPfg^IW@\\nfgAA@@@ISLrotyHvk@@@@@@@P\\ndeUD@DhFrJIJHusUMT@XYgCqDd\\ndaE@@@iJUdf@H`@pRnydHp\\nflu@P@@\\\\u{HhheEEMGEfJdzJV`hJ``H@@pecdeZMzJ^PB\\ndet@@DjYUX^dHbH`CAdJfx^Id`\\nfbmAP@@BU{NQQQQQQFVKYbmNbehJbHHB`@B\\ndeTB@@pYRf[^njjj`CBXSBinFP\\nfc\\x7FAR@AU[OXICHiEHhhhblXdicBkvkNbdmUUULuUMSUT@FD\\\\DYpTeZMYp\\\\eFo_HM@\\ne`\\\\PM@@@AHdbjnikgolbbbbbbTtRQTNTtrSBfgefRvsPADADqUUUUA@@P\\ngNpP@btf{Zi@prqyJ\\nffsA@@@YEHeHlcDeidfRtXLRujnjjj`@j@@`\\nfb}`@@@YEDeMDhTihjLUiwhyZjjjjjjh@H\\nfjcP@@@FrQQQQII[FIJgIVt{IP@@@``@@@@`\\ndknL`LaE@HrRPzIJZ]Vh@b@CAlInd~Qh\\ndeUH@JdDin]xZB@`@pIBX^IT`\\ndg]L`LnDT@cIIChdieNkT@QP@P\\ndclH@@rQQRJJuJ{PUDD@FEDwCoLjU@\\nfbmq@@DX|CHhhdhddlTdQfgV|uTTEEUA@Aa[ENBdkQkNCEOHY@\\nffs@@@LdbbdRdRQbLcKRU{HTmUUUUUUUP@XNqQgARtZwhiKWb@y@\\nfewAa@AMfBPSHYEHiEEEDUeheme^uYt\\\\ujjjifjjZZh@L@xHs`iJtZs`yKT_H]@\\neghPJD@AFimk`IAJPrJQRJJJHkKQK[PiJ^ZVNQYUUUUTsUUMMSU@@P\\ndedL@@PTfUUZjf@LJpjz^Pp\\nfnkA`@@N[dTRTtTTlVRbUFJlFNZmKUUUUUUT@F@TXipTeZMYw`iKWbLm@\\nfig@P@@NZOHhdihhiXleDbjLUXL\\\\uZVjjjjjij`@`\\nechX@@@@LdbbbRRQbvfRdrqC@bfadRUSRvuUUUUUUUUUTp@D\\ndg|L@@v|dTTbbluRitEQDR@FCTwSm|Pc@\\ndeTL@@zTfY[XXBH`@pHJz^I``\\nf`q@P@@Ty{HeEEDhYDIVcLDQEUB@D\\nfi{@p@@Zldh|dTTbblvrbbfaiIQjmhJbHjBHJP@B\\ndk]D@BXCrJJJIPkiWV`d`X@H\\nfhiP`@CAAQJ[gnyodgAhHHBB@@B\\ndidHPBBlFlRYgVzB@`@phLKayE@\\ndmvH`NTHaIeU^f`@jP@phLKaxbR\\ndeV@`ABHRYeun`HJ@C@`pixeB\\ndmv@`EBHRYe][hBBl@H\\nf`q@A@@QGhaIfUvuv\\\\lz@`h@H@@pdCAIJtZwnHhp\\ndeV@`IBHRYWVf`@k@CB`SBkd\\\\\\nfbu`c@MDTBleVYbLbbbtReTTRsAQSAADtAA@@D\\nfhi`A@I@b@qFQQQIIJEKLx{tAAT@D@@P\\nfns`P@H`EYvQQQQQVZEIQILDhuVm@tDMUUTP@XZiqQoASdmV|`p\\nflmA@@@ILkZjmsSdeV\\\\ELuMUUUUT@D\\ndmtD@@QImYVUZh@@@p{B[ae^P`\\nf`i`B@A@bDfUmvUhpTg^`@i`@H@B\\ngOx@@eJimUTA`plZ~R@\\ndeVH@LAIVYqejfj@H\\nfb}A@@@ISZvmk\\\\lxkSoQsP@UUUUEP@P\\nfig@p@@HdFJ\\\\bbTTRRtVbarRipwlezMjXJBQj`B@@B\\nfoA@P@@HeYIefU]ipsfi`hD`@H\\ndcLL@@G\\\\dTRRbOKPPTP@XRfES\\\\L{rE@\\nfdu@@@LdbbTRrLtSI\\\\TZwhaDTUUTU@A`[AJLxIVcNCGfDR|\\nflmA@@@YEEDhhTmMDsdmV\\\\ELAAUUUQT@D\\nfdu@@@LdbbTRrLtSI\\\\TZwhaDTUUTU@A`YFBTxIVcNCGfFR|\\nfnkAb@AUZBPrJQRJJJHkFIIWmV]EIZjjjYjjZj@CCvBLxJRmFlxNRmyAH\\ndid@`@qDeYWaf@@BHlJ@j[nYBB\\ndid@`@qDeYWaf@@BH\\\\F@j[axdH\\ndeTH`ICDRUe_af@B@bJ\\ndmu@PNTHbPaIe]Zf`@i`@pxDpjz^Ph\\ndmN@@@RfV_Jaf`RB`@phFzUxbT\\ngOy@HDfUkjj`LJlZ~P@\\nfhy@@@LdbbTRtjVYHRg^BHh`@b@@`\\ngNy`LETeVZZDs@\\ndazD@BADfUvjXHj`\\nfb}A@@@ILk[Kk\\\\tyKSoQsUSUUUUUP@X^AAFJLEIVcV\\\\EODQr\\ndmMH`LVPBDiiu\\\\XUjjij@H\\nfc\\x7F@R@AUFlDadTbdTTTQVLRVtJU{UgQRVjjjfZjffjj@CBNBLxJRmFlxNR}godD`\\nfnk@`@@UrJIJYQKISQHrgIZ]zNZjZjjjjjj@B\\ndmtD@@QImYVUZjjh@pGBinFUyB@\\ndk\\\\L@@STfUmWiiUjP@j@C@nESxfT\\nfhy@@@DjUg^UzBu[pP`hhH@`@H\\nfb}a@@L`rJJQIFYJYKDyIUgQSUUUUUTuP@P\\ngNqhHf@cIICejPLH^KT\\nf`aab@APQp@QddafaRbR]yZij@@@B\\ndid@`@dDfYUn`HD@LJpj[nPH\\nfoA@B@@RFQQQIEQILyYtA@p@@BGJ\\ndmvH`Dd@aIVUwaZ@B`@pxDJfy^Q@\\nfj}P`@GEAKIEDheED]idaZm{IZB@hBJjB@CCrBTxJRmFmxLTyy@h\\nfigp`@DZBAJSJvnrnwJtYIW`}FuP@UUS@AD@A@\\nfoQ`@@@ISLk^~FBuYuAH@@P@AaHANBdkQk\\\\Pqp\\nfc\\x7F@Q@AMzlD`fPrJQRJJJHkKQK[ZJ}jshykUUUSMUTuMU@A`GAF\\\\EIVcV\\\\DmQ{yCH\\nfc\\x7F@Q@AMglD`fPrJQRJJJHkKQK[Pj}jshykUUUSMUTtuU@A`GAF\\\\EIVcV\\\\DmQkxcNp\\ngF|LHjOC^A|DiTt@@B\\nf`qPa@LV``@QzPrRPqQIIXjlYruPTDT@A@\\nfluQ@@A^AdRbRrTTRbKNN}EK@AP@@@@@P\\nfa{A`@@E[dTTbRLrTfVrTIrRkNSejjjjjjijh@H\\nfhiP@@@\\\\RiU{WZisQjjh@Jj@@`\\nfj}PB@AVADILkkJzrmFFmdl@EUUP@D@A@\\nfbmP@@@\\\\RiUyU^uipsdyjj```@H@@p]AAJBdkQg^CEODXr\\nfdyAp@@XyHwhiSJrwoMANCUUTDDT@AajAJ\\\\EKQoAcqBE@\\nfbu@H@@TyjwdyrIQQQHqISYBTFKADQUUTP@P\\ndg~HPItHciCHhheEJlpz\\\\ADMLPAaPXpwrE@\\nf`q`a@IZ|BHyHYEEDhiULfBtZ@bFfd`@`\\ndmLH@@Rfum[iV`@jH@piLIaxdj\\nffsA@@@ILklsJwoQbk^RVl@EPT@@A@@D\\nfnkA@@@ISZvjsJklyIRZe[P@UT@@@D@@P\\nfdeA@@@ISJ~sJ\\x7FAF\\\\FMA@UA@D@A@\\ndetH@@rQQJHtpsPT@`AaQMpsqDh\\nfdeIB@LZmzH@cIEEEEeEDnRfkF}TmULsMP@XLAQbcNxbPP\\nflm@@@LddTTVbvebyjUcNBfjjjjjjj@C@LDXIQgARUhuoQSr@P\\ngJU@H`dkSBI`\\ndmtD@@QIee^UZ``@@phfFUxe\\\\\\ndmtD@@QIee^UZ``@@pinFUxaT\\ndmtL@@QTfyeQehBA@C@jXYxb\\\\\\ndcLH@@RYeZvz@`j`@pxBXYW^Q`\\neMhDRUB\\ndmuD@HTDrJZIJGaZ@B`@piBkix`j\\ndmv@`LBHRUVUeZj@@@H\\ndmv@`LCDRUVUeZj@@@H\\ndaDH@@RYU[fei@LJpj[nP`\\ndiFB@LAFEIg[Zjh@pkBiny@`\\ndknD@MADfym]eVj@B`@pELinF]yA`\\ndmvD@D@dfWeYUj`@@CCdpfxYyB`\\ndifD@LADfyWaZjj@LBinGbHP\\ndifH@BAIVUxZjj`C@PaLinGdD\\neMPBcXLIyP\\ndcNH@DCHheEDbnmPT@@F@hUMproHt\\ndcMH@ITDee]UnX@Jh@H\\ndaG@`LK`BLdTRIUSUpPea`IWHH\\ndaDh@DqnAIeZfZZd@`\\ndaF@`BBHRYg[hH@@LJCBknPp\\ndaEL@LhDYIe\\\\jZjd@pcnQ`\\ndk^@@@RfYU\\\\]Tz@@@@@LECBinFUOdZ\\ndidHPBBHzHRYgfFBB@@phL[ayA@\\ngOt@AdiguZj`LBmWrD\\ndk]H@HdDeVYWz]NjdHB@B\\ndcnH`Jd@aJYW]rnF`PJh@H\\ndcnD`HI`BDfYoVnWZfX@@@`\\ndk^@PIBHDHRYWY^fWX@JZa@H\\ndg~H@ACHhdieDYSSl@EMTPA@\\ndg~D@DClbbbTlRUL]mUL@D@FGYSRngrK@\\ndmM@PAdI@iAIf]UneXHBd`B\\ndieDPLZD@HhHrREQKaVii@LBrnGd@\\ngNq@@dsmUPFEbq_DJ\\ndctB`HSE@HrRPzKJKUUT@P\\ngCi@DDfj@pPwED\\ndmvH`IDHaIfUin`HJ`@`\\ndo~L@M@iRYg^ufzB@jj`@pLLJnFUt{\\\\\\ndo~L@CB]RfyV~^F`HJj`@`\\ndg\\x7F@`LIPBLdTTJRrVUJtsUUM@FD`S\\\\Lz]`\\ndaxD@@QIgUjfBJlBpj{dL\\ndmt@@DjYefdHbR@CBlinWbCH\\ndklH@@rQSQJYGahBBi@B\\ndkNH@DAIeV}VijY`pdYZ\\ngJY@HDeYdRVFBwHP\\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@FALT]{bEZ@\\ndaxL@@rdenjjh@pZDrf{d@\\nf`qpB@MF|BHRYWUVVcG^`@jjeH@H\\ndclD@@[HhheBeSKkTp@P@XEpkoLri@\\ndclD@@kHheCDdUKkSP@P@P\\ndaFH@FAIe^fZVh@ppj{bI`\\nfdyaC@OVAHHdLRFQRFIJZZKHRoAj`BIZX`@`\\nfbma@@E@rJJJJISIIH|TyL\\\\mSHPA@D@@P\\ngFp@DiTujdCBqXwd@\\ndeVH@LAI[eQejZi@H\\ndk]H`FTpbDfUmYkiV@Hjd`B\\nfj}qB@BVBxDadTTRbRRTVasIFCzLDEETuUD`A`kENBtZJ\\\\eyCp\\ndid@@LdbbQxXF@@CBdrf{bDH\\ndklD@@QIge]aej@BX@H\\ndg\\\\D`EtICHhdhXhUSP@UMP@P\\ndmtH@@rJJJJia`HbP@phBinxdj\\ndeeL`LZDh@cIHULhmMT@XUc\\\\L|`@\\nfbuqb@LRuA@`AFRREQJKKSISUhiVhFB@@`@B\\ndmtHPBBHfPRYeUXXHHh@H\\ndk^@@@rQQHjIKJtzjX@HBJX\\ndg^L@FAMrJZJIKPbkPPPr@FGIS\\\\JgrK@\\nff}`P@F@QkNQSQQIZEJIJXRdeZBBFX@b@DCT\\nff}`P@F@QhnQSQQIZEJIKHRdyZBBFX@J@DCT\\ngK\\\\@ABeKcMHFDgDl\\ndmO@@@`diWe\\\\JUfh@D@H\\ndmO@@@`ldRabRpiVZ`@P@`\\ndg~DPFvpbEBLbbRfbRM\\\\JpAESI@D\\ngC`@Dio@pfyD\\neMBBHR[B\\nfjc@`@@ERYYefUez\\\\UyvPiZZjjjjjj@CCrLTXJVcV]zJ\\\\ey@H\\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@p\\\\AFJ\\\\EIQk^bgODZB\\ngGU@EPdvmVAaErX\\nfb}A@@@YEDeMDhTihjLUiwhyZVjjjjjh@LGHqS`iJtZs`isrDP\\ndk}@@@aJVyY|hUtyjBHJ@B\\ngGY@DDfvZPLLC^IX\\ngNx`HLdmluHdX\\ndkl@@LdbbTbsyYfjihDaV`\\ngNp@DjWZeDCaXl[rL\\ndet@@DjYWkafefiPCBdKagfYS@\\nfhiAb@HHp@HrRRqQIYPsdcVVfiVji@B\\nfoA@@@LdbRbbJvDkQfijZjT@H\\ndknDpNWPdDdLdLbdLTRbdzhHF@@`\\nfhq`c@IF\\\\BPQHXdLbdLRTvfdDjj@Hfj@@`\\ndif@@@Rfy^F`H@@pYBinGd@\\ndmvL@HAER[e]xV`@h@LFPj[eyD`\\ndkmL@HLDUInUv~Eh@Jh@H\\ndknH@LAIYyfUMj`H`@H\\ndiFL@JAARY[vji@LLpfxe\\\\\\ndiFL@BAAR[fvji@LLSJxc\\\\\\ndeVD@JADfvYzVjZd@piLXYyG@\\nflea`@F@bgHhhhdhebmIVTYhIBhjXP@`\\ndeU@`Dp@aIUeQej@@@H\\ndg|@@DjU_eZx{BAH@@BJ\\\\MaBine]N~Q`\\nfhy@`@@BrJJJJIQ[DQeNmyh@`HB`@B\\nfdeIb@LLDhwh`BLdTrbRJbTOARTxM@PMUUE@AaHBJRu[pX|`x\\ndg}@@@yJeWe^nNzjhHB@CAXPjFUt{yF@\\ndk]@@@yJeWmZ{Sjj`@`@pVDJnFUt~Q`\\ndcmH@DxLbbTTRM\\\\nmPLA@AaSCJ{rD@\\nfhyPB@ARADILkkKZtYhw`p@UR@A@@P\\nfhyPB@ARADYEEDdXeLdsfc^C@PUH@D@A@\\ndk]H`AdpqDfUmUiev@Bfd`B\\nf`y@@@LdbbTRfNSI\\\\TKSoADTT@A@@XZPRcARtZso\\\\a`\\ndg|H@@RfuvU[cn`@`@@@peBiiWSodX\\ndg|H`ABHRYW[ficn@BjjH@`\\ndk_H@FdprJJISPkatzjjiZ@H\\ndid@p@qBqFqDfYoa`b@@H\\ngGP@DiUja@xEXwbD@\\ngGP@DiVV`iJpJqoDH\\ndeTH@@RYWVf`@j@CC`SBhYyG@\\ndmtH@@RYWUih@Jh@LNALJiWb\\\\H\\ndcLD@@SHihheJLmUTu@D\\ndg\\x7F@`IVpbDfUuYZX{`@jiR@LAALJat~Qp\\ndigDPLXXP@b`cIHUDnEZfd@`\\ndk]@`AdHaIe[VZYS`@ijH@pxDret~Qp\\nfoAaB@G\\\\ADILkkJ}FFm@AP@P@A@\\ngOxhMDOAJmZvjhCCXobE@\\ndk^D`La@|Dju^UimMjj@B@B\\nfdyQR@NBYhwh`qLbRbbrRfTHiNCMKUMUU@aB`\\nfluQ@@DJAdTTTTTRTQsEVbEKU@C@PD@@P\\nfoA`P@D@DZrSLrkrQfgMTC@q@@P\\nf`q@`@@HR[fYU_Sk^Zh@@@@@LMHYpTeZMYwnPp\\ndg]LPElYLHc`cHhdliBiSP@Rtp@XLBXUKrK@\\ndcNL@JAMRYYYyUjijX@`\\ndcnH`LD@aJY{grevj``H@LABDxYW^Ie@\\ndg~D`LePBLdTRTrbNT]uU@pD@D\\nfoAab@LRMX@PeL|lmxiiuUAPLP@D\\ndeVHPLX@bPaJU{\\\\Jjfj@LJANF^IA@\\ndaFH`Dx@aIYUnZjh@`\\ndeTH`N@HRVUmaX@b@B\\ndknH@CAIe]eZZ@Bjl@H\\ndk^@@@RfYU\\\\]Tz@@@@@LI@j[aWSxfR\\nfhi`C@I@dDRFICHiCDeMhdaJ|Fj@H`@@@H\\ndif@@@RYevz@``@pkBkay@@\\ndew@@@pldTTJVTLmP@P@XEc]ODHP\\ndaGH@LK`RUe[fjV@H\\ndaGH@LK`RUe[jjV@LLBfxdH\\ndeWH@BZPRYVtYjje`CB`SNGbQP\\ndmtH`EBHRYWUih@Jh@LNALJnWbCH\\ndo|H`EBHRYWUnjZ@Bjj`@`\\ndcMH@AtDieV_ehHJH@H\\ndk}@@@qJYVu|kitvi`PJ@B\\nfgAP@@@XRf^~UqQgCVZjh@J@@`\\ndk^H@LAJYeUquSh@@@@@pzfxUt~HT`\\nfjcY`@LJCENPBedbbTRTQRRTqJZLxLTuUU@aDuQ@AaJAJ\\\\EJvR|``\\nfmoYr@CA[t\\\\xHpSbk@|LddqTRbrfbRRRfejJRmzMjjjjhDHfjH@H\\ngGPhMQHIJmT`XR\\\\RH\\nfewh`@DRMdXHyEDhhhddmiUDenRuzp^cZ`B@HFjjhH@H\\nf`qPC@MNADBBEQFQQQIQGQIgG^`HJjeH@H\\nfdy@@`@Q@`bTQFHRYeWvUv\\\\|F@`j`@`@B\\nf`qPA@MNADBBDfUuUehqwh@JjiR@B\\nfdu@@@LdbbbRRltSIBTZwhmUUUUUU@A@\\nfigA`@@U{dTRTtTTjTtRJeFJMxJRmKUUUUUSUP@P\\nffcP@@@\\\\RiUyU_YVgCNKVjjBBF@B@DGVDXHIPTeZMYwhirVoHX@\\ndg}@@@yJeWmZntzjh@J@CAXSBhYt{yG@\\nfdea@@D@RYZymUr\\\\lGtVjh@@@`@B\\nfoAQ@@KN@eLrj\\x7Fbthu@@@D`@D\\ndg}@@@cIDmEDhcJg\\\\l@@@@QE@\\ndcn`@@rnuJYVuhUtHJIb@LBSIWbMh\\nf`ipB@DX|@HRYeYU\\\\cMNmyjhhJHH@H\\ndmvH`DH@aIVyVUZX@@@pxD[ae^Q@\\ndeTD@@QInUnEh@H@LBRnGbEH\\ndeT@@DjU^k``b`@pyLinF^IA@\\nfoQH@@@XHYJYg]UirRkN@bJjhh@H\\nfgApB@LLx@HRevUUpPTcViYj@H@@`\\ngOy@DDfUkZj`LBcWrX\\nfoQa@@H@RVUmUV\\\\djsj@Bh@@@B\\ndclH`ABHRYVyzy]`BFh`B\\ndcLDPND@c@aJY~vrjefj`B\\ndidHPACDZHrJIJFn`BH@H\\ngO|@AfeJykSTA@\\ngNt`MPdfUZj@pvKyJ\\ngNt`IPdfuZj@pJu_HP\\ndg_@`DGPbDfUueZZ@Bjj@B\\ndmWD@Hi`QImfUjjj@H\\nfhiP`@C^@aImYWVVRoAZX@JiRACEaiFBLxJVkNB\\ndmUL`LZDh@cIHULdeijh@p[FxYWd@\\ngOp@DiYKZj`LFHlWrT\\ndcLh@DxYCHdeEDcJmPDD@FEIcCoH`\\ndcLL@@QTfVUV]Z```@LFJfFUxgZ\\ndg^H@LAJUyfUSjhBH`@`\\ndeTH`L@HReyTYi`@@CC`RfxYyD@\\ngGYHL`DIMlu@XR|pq@\\ngGYHL`DIMlu@XHwbF@\\ndiFH`Bp@cIECDjZj@H\\ndcLH`BBHRYg^fzB@j`@`\\ndeTDPBdHcoAIfUvFBBD@H\\ndg\\x7F@PBWPbAbLbbbRfaSR]pPTMQ@F@acCNg_HH\\nfoApA@BZLBHeDYEEDhiiTqUgPPUCTP@P\\ndcN@PBBHFHrJJIJXmLDED`A`HXwCJ{rB@\\ndig@@@pdigwJZjf@LFSJ[ayA@\\ngOu@E`drm[SRAalWrT\\ndkmL`LNDD@cIIBhdmeuZ`PH@LFqneSyE@\\ndg_L`LfxPPBLddJbbQvfmPLA@A@\\ndaxB`HRnCpRk]Zj`B\\ndeV@PIBHzHRYeea`Ha@CA`rfx^QH\\ndmu@PITHchcHhheEVF@bF@`Z\\ngChhMDOBNtA`enP@\\ndid@p@qBqAqDfYun``H@H\\ndidD@@qJYWkjjj`CAhPj[nPH\\ndeTL@@rTie_kjjjh@pZDJnGbMH\\ndcLD@@QIeVuWVj`@@CClInFUyF`\\nfoA@@@DjYUgWfiF`XJbh`@`\\ndidH@@RYWZZ@B`@pXDpjGd\\\\\\ndaD@P@qNqDfUZZ@B@CB`pf{dH\\ndklL@@Ptfym]eVj@BP@pyLinF^Qh\\ngOpH@DISOkSM@XDZobQ@\\ndk\\\\H`F@HrQQJVIHjtzeX@H@LA@jFUt~P`\\ndcLL`NWPBDif~{JifZZ@H\\ndid`@@pjrQQQUn@hH@LDJnHp`\\ndaG@@@pdifZxBH@CCJ[nPP\\ndg~H@IAJ[VvuneZ@Bfh`CCdpfgSyE`\\nf`qQB@FF\\\\BPRYVwUZgAR`BJjfD@H\\ngNu@Dpdr{UPFAVMyF\\ndg~D@EBldTtVRTOBntDASQ@D\\ndig@@@pldTTQk`Ha@C@biny@`\\nfoAh@@@XHkVRJJHyQJTxZpDPsUBBGJ\\ndaF@@@Re]Jjjj@LFBDpnxeL\\nfoA`@@@YHhhhdeCHvgT@D@P@@XJ@Q`iJtZsnPh\\ndeT@@DjUijP`j@@pzDinF^PP\\nfhy``@E@xeLsO}kSdm^CPUAEUQ@A`YAJLEKQkN|D\\ndiT@@DjYVnXPbD`@pYLinGdD\\ndmLH@@RfyYxYV`HJD@`\\nfoA`B@N@bLbbbTNbRXJshBH`@@@H\\ndcLH`L@HrQJSPiKmMP@@A@\\ndaFL@LANRYUJfjf@LH[bXP\\ndie@`NDHaIe]ih@I@B\\ndmO@@@pldTTLRqiUj@``@pKNe^HP`\\ndmM@@@iJYYtjFYBHJ@B\\ndaF@`J@HRfWrjYj@LLAFxa\\\\\\ndmOH@FePRYVukaf@HZH@`\\nfdyAb@HHpCpRkVYU_]Nmyj`@@B`@B\\nfj}A`@@HTdssKMzsRuYp\\\\mPDQTuTT@D\\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\\nfhiQ@@JJ@djlklkIW`mUUT@D@AaiFBLxJUg^CqDC@\\nfakQB@CQDBPRYW[Ue]eZLCEoX@Ijjj`@H@B\\nfde@`@@JrJJJJJIIGLUXOhmR@T@A@@D\\nfdya`@O@x[HhheDlTdhsdmM@pQUU@@P\\ndmLD@@qJY{WJeZj@B@CAj[ae^IB@\\ndg^L@HACR[e]VxV`@jX@H\\nfdea`@D@dkHheEDheDUSfoVBuLDpTT`@P\\ndmtL@@RTeVUaUj@H@C@jXUydYH\\nf`qa@@O@rQQQIISGBtju@@@QX@A@\\ndcNH@FAIfYWgZ`hH@CAPcBinF]yB`\\nfnsqa@BLSFkPRBiCHhhhhhddTmeNZlGrXHbhjejXh@LABehsoE[rC@\\nffsA@@@ILvuoZunsfc^BVkSUUUUUUL@D\\ndcnD`I[PdDfUm^neX@biH@`\\ndk^H`MdICHhheCEfGS`HaiH@prfOfXn`\\nfbmqB@BNcxD`dsLrzlvqUhasAATUSUD`A@\\ndid@@DjU^nBAHBJ\\\\FaBiaxf\\\\\\ndmtDPNDHaYAIfVUi``X`@`\\ndknH@JAIUYfUNjjjj@H\\nfhipR@LBBhug@BLdTRbrRfeIrcJjjfYfP@pxBBBTE[bOA@\\nfbmha@LBm{Lm@BDaBTrs\\x7F]riFTyEMUULsRuL@FD`PPR``isqGK@\\ndaE@@@aJyUnX@@@pKB[nIE@\\ngGP@Djuj`LLm^JD\\ndmtH@@rQQEJZDjjfh@`\\nfhy@`@@\\\\RYeeo]xjQg^ZB`@@h@@`\\nf`iA@@@ISZvmjsbmN}P@@ETD@D\\ndclH@@RfumVy]h@Jh`CCdpfFUyF`\\nflu@`@@IRfum]fUgEZ}F`@jjjhh@H\\nfbm@`@@FrJJQIFIKSIDx{r\\\\uUUUT@E@@P\\ndmtDPBTLSlSHhhmDVFBBI@CB`pnGdR\\ndmvH@DAIe[VUZh@@@pyJ[ae^Q`\\ndk^@PABHtHRYWYZfWX@JVb@LFALJmxbf\\ndifD`JxPBDig{JifZ@H\\ndmNH`NTHaIfVUazXBHX`B\\neMJDBDe`pQyP\\ndmOH@NFPRYegXYUhD``@`\\ndaDD@@iJY\\x7FJjjh@pjLInyB@\\nf`q@a@ARADJbDfYV]}YsQhBBjjb@B\\ndg\\x7FD@NfpqJYoYWJNzjjjV`B\\ndg}B@HTDf|bfbbTThfnmA@tI@D\\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfX@`@CCbLLDFJ^P|\\nfhyQ@@CA@dsLjm{Jvg^Bt@@DCA@A@\\ndmMH`NV@BDke[VFUX@ab@LBpfWbAH\\ndiU@@@aJmUJnFjjj@H\\ndo}D@DTNrJIQSEQJaZjZjj@H\\nfoAP`@DNAsHheEEJefBMYji`@h@B\\ndiF@@@rQRJVjj`CC`SBiny@`\\nf`qa@@O@rJJJIIKERMjsPTEEQ@A@\\nfb}A@@@YEEHdcLeLeB\\\\djshijjjj`@j`@H\\nfoQHA@FJuXFH`HRYUYYbTT[UjZjefZ@B\\ndcND@E@TfUvvf`@jh@LEALJnFUt\\ndeTD`AdHaIe]jZ@BX@LJALj^PP\\nfhi`b@FN|BHRYV~YYirpX@bBA`@@`\\ndmtD@@qIUe\\\\YZ`@`@piFxUxdT\\nf`a@P@@HhyIeWfUsVZj`HF@@`\\ndklH@@rJJJIEQa`Hbj@C@PIne]OdT\\ndeTH@@rJJIEMtAAP@XTFES\\\\PY@\\nfdy@`@@QrJJIEIQISLx{tAAT@E@@D\\ndg\\\\H`BBPRYg^U[hHBjh@H\\ndcLH`IBPRYeWvz@`j`@`\\ndaD@`@\\\\DimVz`@@CAdpj[nP@\\ngGQDHG@nFRQFj`H\\ndet@@DjYUZ^D`dJ@CAdpjz^Hp`\\ndaxD@@QInejj@LLRfxa\\\\\\ngOq@@eLvmLtA`l~Ht\\ndidH`ACDRYWZZ@B`@pXDpjGd\\\\\\ndaFH@NAIe^fiZh@`\\nfoAPB@AVADILkkJ}FFm@AUUQ@A`hBLDiIVcNyC`\\ndmvD@LADfvUaej@B@CAliae^P`\\ndmvD@LADfWeYUj`@@CAlIne^PH\\ndknL`LaM@HrRRqIYPYV`@f@B\\ndeVH@BAIf_VzB@h@LJCBinHL`\\nf`q@a@AZAD^bDfUmn]hrsh@JB@`@B\\ndaD@P@bNbDfUZZ@B@C@`pnxbL\\ndcND@NADfUyU]Zj@@@H\\ndeV@@@RV[TYzP@@C@j[axaR\\ndeT@@DjU_k``R`HipZDJagfXw@\\ngGX@@dj|tHkAF|Rp\\ndeT@@DjY]zXFB@@pYLinGbEH\\ndcN@@@RVYUYwiBB@Hr`\\ndif@@@rRQHqajjZ@H\\ndazH@LAIYzjj@LFALJnxdL\\nfbmPb@B^dDDadTTRbbRRTQXjrXy``jJjZbP@pyc`kNSgfC^b\\ndazL`BaL@HrRPyKUPA`a]qJX\\ndmVL`BaL@HrRPzJIZjj@H\\ndcvL`BaL@HrRPyQZKUUT@P\\ngNs@EjpdssTpFFU_I`\\ndmtD@@QIn[VUZh@@@pyLkae^Pp\\nfoA@`@@BRYfYWuVLyh@`@@@CBUF\\\\EIVcNyBp\\ndmt@@DjYnvDHbJ@CBlkiWdB\\ndg}H@ATLbbbbbJpj]mMULm@D\\ndg}H@JxDefY^Zy[YjZZZ@H\\ndmvH@ACHhhhdYUhJ@@CAbine^Q`\\ndaF@`B@HRYg[hH@@LJCJ[nPP\\ndg}B@DpAV|bbbRbrK]imUMMU@FGXU]IwrM@\\ndcnL`LZ]@HrQQZYPyPkSMUU@D\\nfoAQ`@EZ@JVQQQQQIWLTZsT`tAP@D\\ndk\\\\D`HP@cIICDhl^e]V`bB`@`\\ndg~D@D@dfVumQd{Z`@@@@H\\ndg~D@FCldTRQTRUL]uUT@D@FBpfESKiwrI@\\nfoA`b@LRL@HRf[g^|TuZjhDHh@B\\ndif@@@RfU~F``@@pxDpj[nPH\\nfoAqb@BTYIS`RBSLnmnsakTmTuUP@P\\nfoAqP@DXH@RcNrJJIJKJUgMVZjZZj`@pybgIFl{dM@\\ndaEH@DHDfYVyje`CAJ{bXp\\ndieD@DHFRYf^EjiX@`\\ngG]@EbDf]jPLInIT\\ndmuD@FxERf_UrjYZjBJh\\nfoQP@@@JRi^yWZ\\\\DhujjhHBh@B\\ndo}B@HtDUtfyW[WaZ@BZh@LAPj[mM~QX\\nf`qQA@CVHBHEDYEEDeMCLfR]zBBbfh`@`\\ndmtH@@rJJIJEn`HJ`@pxBiae^Ig@\\ndmvH@EAJYYtYhH``@pYBinGbRh\\ndg^L@LAER[eYWNvjhD@@H\\ndcND@BADfuYU]Zj@@@LNrnFUwbHP\\ndazB`LaFx@cIHThmS@FBXWDC`\\ndcND@EADfvUtYZ`@h@LFSJ[axbz\\ndcN@pBBlFlVlRYfyVfBBb`@`\\ndiFH@BAIUgjjl@pZDrfGd@\\ndiFL@JANRY[vjj@H\\ndcLL@@G\\\\bbbRfK]@PUP@P\\ndo~D@E@\\\\bbbReRd[hBBjj@B\\ngJ\\\\@AbeMK@XKGdP\\ngJ\\\\@ABe[LbQpfyhb\\ndaz`@@bfyJUfZYBHX\\ndmM@PBx@c@aJYg\\\\jeZdHB@B\\nfoQh@@@XdhrTsMlkSdeFluMTsUP@P\\ndk}@@@YJUUURkatp@j@@@CCdqiWSyD@\\nfnkA`@@X[dRdtbRLrTfVsIZMxIZmUUUUUUUT@D\\nflm@@@DiUem^yIRVkNBejjjjjjj@B\\nfhyA@@@YEHhheDecKQoNCU@DP@P@A@\\nffs@`@@VrQSRIQSJJpqBt[pXykUUUUUUUU@A@\\nfhyI@@DDlDBSJkrmmFF]xKUM@DMD@D\\ndk]H@LdDie[Wz]N``@@@B\\nfbmAP@@\\\\}GNRJJJJIEJIN`cA\\\\dBB@@Hb@@CBSNBdkpXyxbs`\\nfakAp@@\\\\}EIVyHhhhhdTheETjBLEvPHH@@bbj@@B\\ndk]L@LxDMIe]eRkSZjjjh@`\\ndcNDPBePbNBDfYWia``aX@LFCBimy@`\\nfnsHJ@CASVBLDxjsP^FRRXjIQYSQIYRuEIZmUUUU@`U@@XFpRcARUjwlm@\\ngGX`DJdvsTA`a^YX`\\ngNy`HLtemfjDc@\\nfdy`a@BRlBHcDYEEDehXhlfB|FBBFB@`@B\\ndg}D@DXIrJJIQIH|ivuTB`P@P\\ndk]@PAdH`paIe[UZY]`@iiH@`\\ndaxB@@QnRUeZj`CBlJf{dP\\ndk]H`LiPBDigm[rivfPBJ@B\\nfoQAB@C@BDifYU^gIVtz`B@DH@@`\\ndmtH@@RVYWeVhH@@LNRfxYWbPP\\ndknL@HALRYyyWSZj`@@B\\nfoAPb@ARLxDPdrmjktXkT@EMLd@D\\ndg|@@DjU_eZx{BAH@@BJlIaBjUt{yfMp\\ndifL@NAJR[Y^Ejfd@`\\ndk^D@JADfV[W[mMjdHB@B\\ndmOH@FyPRf_eriVjjeh@pkBhYxdH\\nflmA@@@ILkZvmsQdeV\\\\EL@EUUUQR@FC`HqS`iJtZwhiy@H\\ndkn@`ECDRYWUZf`@fj@cj\\ndmvH`BTHaIf]un``J`@`\\nflea`@A@bgHhhhhdmL]EVMyh@`@bX@@puQgAJtZsoI@\\ndcLHPBCD{DrJJKQFLLDDU@A@\\ngJPdLQDHHRViPH\\ndg|@@DjU_eZx{BAH@@BJ\\\\IaBiiWSyf]X\\nfleA`@@HcdTtbLRTrVVc^BuU@@@T@@P\\ndaEH@LHDimVz`@@CAD{bTp\\ndeWD`LjXP@cIHUDdLkP@@A`fMs@xP\\ndigH@LxPRfuVz`@`@pQBxeB\\nfhiHb@LB|FB@AFRREQQII[Z][ru@@@D@@P\\nfhiHb@LBdFB@AFRREQQII[Z][ru@@@D@@X\\\\psbm^CqAk@\\ndigH@LhPRfuVz`@`@`\\ndeUD@LhARfuunh@J@B\\ndkoH@DgPRYYe]SZ`hH@C@TJfxUOdZ\\ndkoH@DEPRYYUfSZ``h@C@TJfz]OdJ\\nf`qq@@IZLAJ[WUeV\\\\]z`@j@@@@`\\nfbmP@@@IrRJJIQJIHdjmhKhu@DPQAT@@X^qS`iJtZsoAbgH\\ngOt@ATiVKjj`LFHlWrT\\ndid@P@bNbDfYYa`H`@LJBfx^Q`\\nfhiAP@@XyKRTrlovmA^CUUUP@P@FAhDipTmFl{p^HPp\\ndcM@pItIAICICHiCDeLJuPAB@D\\ndg_H@FzpRYeUyEZ``bh@H\\ndmtH`EBHRYWUih@Jh@LAALJnE^QH\\ndcOH@NGPrJJQVIKmUURpAapXUMJ|b@\\ndg_H@AVprJQRIVYG]UUUK@D\\ndeWL@DpPzTfY[ifjfX@`\\ndaF@@@RYe[hB@@LJCBknPp\\nfhyq@@DZ|AIe[yVvcCV|EjVffej@B\\ndmuH@DTDfYUQUjjj`CClJfxYyB`\\nfbuQ@@DJAdTTRRQRRbRDiNVjjjf@B@PMP\\ndknD@HALbfbRadxV`@j`@`\\nfoAAB@A@bLbbbRebRYrshBB`@@@LM@pQgAJtZsnPh\\ngJXHD@aIUj@pHVOI@\\ngOq@@dsI[UTA`Ub~R`\\nfoAA@@@ILs|kiFZLuU@AT@A@\\ndeTD`FdICHhdhUWPAD`A`RYS\\\\`P\\ngOp@DjukZj`LJlZ~R@\\nf`iA@@@YEEHdcLeB\\\\djsjjjjjjP@`\\nf`iAB@K@BDifYYWyjSc^h@`HP`@CBPBLEIVcNyCp\\nfdeAB@K@BLdTTTRbRsWMR\\\\[u@DABEP@A@\\ndcoH@DGPRUe[^e]Z@HX`CBdJnwbPh\\nfb}P@@@NrRJJIQJKEKB\\\\hvoQsTEQ@PDT@@XNQbgARUjw`qSd\\ndeU@@@{IEEEKP`QP`A@\\ndevH`Bp@cIEEBdUCMR@D@D\\ndmMH`Ad`bDfYuVzU``JR@H\\ndcm@PNDHaPaIeU]iaf@Bfb@LFCBE]yB@\\nfluQA@N^bBH\\\\DILrsmlnrUoNCA@qMTlT@D\\ndcn`@@rawIEDhiUTkhPUCD@XDc\\\\oHt\\ndeVH@JAJ[e^f``P@LJPfz^PH\\nf`iQB@C^X@HrQQJVIJYDijsoUJpACQ@A@\\ndeTL@@zTif[rjjjh@`\\ndeTL@@SdfUUifiZh@`\\ndcLD@@QIe[]ifiZY``Z\\ndaE@`BhHaIfUn`H@@ppL{bTp\\ndmv@HBBHFPfPVPRYUzih@Jh@H\\ndmuD`FFUBHrJIJERn`BI`@`\\ndknD@D@tfUe_WViB@`HJpEL[aeSyE@\\ndo~D@DA|bbRbbRqvviB`R@`f\\ndid@@LdfbQ[fji`B\\nfakA@@@YEDeLlhheHmXjL}DNZjefjjjij@aeJprBBLTxJVcN|FJ\\\\ejwdN`\\nf`qI`@DXUh@oYEEEELTlfRtYjjZfi`@piSakNyCp\\nfdyHP@DXUh@oQrJJJJXiYILehsUTuMTl@D\\ndiDL@@RdfVejj`CCB[nIP`\\ndmtHPIBHVHRYfUXXBHX@H\\ndieH@JxLbTTQkfej`CAFGbPP\\ndeUD@FxJRVYmnYjZ`B\\nf`qa@@M@RZYU_tVeFj`hHj`@LM@pRcNBTZsnHex\\nflma@@@`rJIJYRIIIFcIF\\\\GtX@Jjjjbh@LG@Qb`iJtZsoQR\\ndcl@@LdbbRRkCtaDQTPA`JXU\\\\LkrM@\\ndid@p@bFbAbDfUfn`BH@H\\ndeTL@@PdfzuFVjfd@`\\nf`qA@@@ILroljJSoMA@P@@@FBlDipVcV]{dF@\\nfhi@p@@XyHpTieY[wzB]zjjhHB`@LCPIS`iJtZs`|``\\ndig@@@pldTTqkiZjPB\\ndaE@@@qJYfn@b@@ppj[d\\\\\\ndigH@LhPRfuvz`@`@`\\nfhiHb@LBlFB@AFRREQQII[Z][ru@@@D@@P\\ndeWD`LjXP@cIHUDdLkP@@AafMwD@P\\ngJT@ADiZhCCBGbV@\\ndaFH`Lx@aJY_JjZX@ppD[dD\\nfhiPb@KN|D@PeLrj~lKRcT@@@Tp@A@\\ndifD`Na@BLddJT[ejj`B\\ndaEH@DpDeYVyjj`B\\ndiD`@@iarQQHijVPPJj\\ndk}@@@qJYWm\\\\katvid@J@B\\ndknL`JaLCprRRiQIKSZjjj`B\\ndet@`@bDfUUiaf@Bh`CB`pagbIp\\ndclH@@RYfmj[iZZjj`B\\nfoQA`@@\\\\ldsKKnlyKUgM@pQSD@FALJL{bJB@\\nfgAa`@N@t[HhheDTdsdeFltC@UQ@A@\\ndmMD@DhNRYYWIiUjA@`@`\\ndieD@HXDR[eVyiih@`\\ndeU@@@qJYejxBHh@LJJfF^Qp\\ndmuH@DXDfUgjZ@Bj@B\\ndg}H@NTDefV]qT{Zi``H@H\\ndcNH@DCHheEBdnmU@@@FGIeMpkqIt\\nf`a``@L@PdwJrkIoMUPPT@@P\\ndazD@DAdeYvjh@pKBknIB@\\ndefD`BpPbDemgijj@H\\ndo~D@D@|bTTTTRqvvhJHb@B\\ndmvD`La@|Dj~Uaej@B@B\\ndaE@@@yJeVnBB@@`\\ndmwH@DHPRYe~[fjVj@H\\ndazL@BANR[UZj`CBdrf{dD\\nfHgPAa@\\nfle@`@@^rJJJIRYqQY`hi`HbjB@@@H\\ndaF@@@Ri][jjj@LNaLJfx\\ndif@@@rRQHkajjj@H\\ndet@P@bBBDfYVX^fBBHPCA`pfx^QH\\ndmL@P@bBBLbbbRaZ^FBBbD@`\\nfoQa@@A@RYfYWvBUXsf`B@@`@CCeNRUhsnHEX\\nfhy``@A@|dsLro~pRkF\\\\t@P@EP@A@\\ngJY@HDeYhRVFFOH`\\nfoAAA@F@bGQBSJwroSakPAD@D@@P\\nfle@P@@HBeIeUUYVsN}EjjZZjj`HxjX\\ndeT@`@dDfYWFZP`@HR`\\ndid@`@bDf[Wai@@@LJ@j[nI``\\ndmtH`IBHRYm]xZP@h@H\\nf`qPB@E^ADILkjlkQcoP@SUUDBGJ\\nflua@@E@rQSISIQJEIgEFbf`@jj@@`@H\\ndeu@`DhHaIeURhYiZeh@`\\nfb}a@@E@RfuUe]UYqQg^Sf`@jjh@H@@pT`eARtZpT|qbNP\\nfa{a`@C@hwIEMEDdbdeLeeqQkAbVmAAQUT@EE@@XFPpTeZlxJ\\\\}y@h\\nffs``@C@heMrklkjoIF\\\\FIZtDDTD@@D@@P\\ngFx@@eLzuU@XFHwbF@\\nfdyqB@BZ|hDQdTTRRLrbbXKtXHHfjjH@H\\nfnsQB@IVDBHrJIJZEQQHjIJgK^jv@HZjj`@H@B\\ndcm@@@uJfUWyYvjjjj@LISBinFUxdZ\\nfoAq@@DDlAInfUWUXsfjjjjh@H\\ndg]D@DDKR[e]UxVjjjf@H\\nfoAQB@ARlBHRYVueZLTZ@Bfib@B\\ndg}H@DHLbbbQTRS\\\\]mTl@D@FERng_Lrf@\\nf`qP`@DD@iIfUumV\\\\]yjei@B@@`\\ndmuL@DHIWHhhdcFyjef`B\\nfhi@P@@HD[Hhdihdibj\\\\UYjP`hf`DGL\\ndiD@@Dj}Yjj`CCdpj[ayD@\\nfdy@`@@FrQQRJKZDjTdjuATQQMH@D\\nfhi@@@LdbbRRNbRxkpXFBb@@@Ppp\\ndmt@@DjU_ZxHHZ@cgChSBjUyc\\\\H\\nfle@@@LdbbRbVQfRyjJXFBhh@@ACE@\\ndaE@@@qJYVnBB@@pHj[nHf@\\ndidH`D@HRUe^Eh@@@phBkaxdL\\ndmuH`LY@BDfymYUj`@@B\\ndcMH`DjPBDefulUZ`BH@H\\ngOt@AdiWqZY`LCDWrT\\ndg}H@NLLbbbTVaSR]pPRTi@D\\nfhiAB@A@bLbbRaRbbRhqwh@J`HD@@`\\nfhy`@@@YIEEDdXllQbk^CTCP@@P@A`kENRUhsoAxae`\\nflu`@@@ILksLjoQchaSUUP@@A@@D\\nfbu`c@@drBlEVQkLbbbRbTJRTkI^SAAQAAQ@@FF`XEIVc^CGOHV@\\ndcLL@@WTfZYWijjjj@H\\nfle`b@LPP@HrRPjIIKQIYQhiVhHHB@@@LCXYpTeV]xLT|aP\\ngNq`@fdwKUPFAQkyL\\nfhiA`@@HBdrsJrziuoMP@A@H@A`JcARUjwnHLx\\nfdya`@H`PEIefUewTzwfh@@`F@@H\\nflep`@OQRABSKLjo{JlYsT@@@Tp@AajcARUhsoQSrG@\\ndifH@DAIfU[fjV`CBlJf{dB\\nfjc@`@@ERYeu[VyV\\\\Uiwhy`HJjjjhj@B\\nfb}A@@@ILk[Kk\\\\tyKSoQruSUUUUUP@P\\nfb}@`@@YRfum[VwYqVg^bf`@jjjjJ`@`\\nfhyh@@@XisVRJIJYIPiTDkW`aAQL@A@@XRQabcV]xOHZ@\\ngCi@DDfj@ppfyD\\ndeT@P@qIdDeYWxY`@`Ha`\\nfdeIB@BTuEpIAIfUeUeYrt_A`HJjfhd@LNXEHu`qxcW`\\ndg}H`BFPdLbbRRTTmLnp@TuP`FAYiwqDT\\nfbmIB@BTtepICHhhdhddhhfsed~C@PUUMUD`A@\\ndk}@@@YJUUURkatp@j@@@C@dZUxTYi`\\nfhyP`@LRAyIYUVuugIJly`@h@JH@B\\nfhyQ@@M^@eMk\\\\lzpRmN}PA@QAD@A@\\nfhyQ@@NVAdbfRfRRTKARUYu@DT@T@@D\\nfhyP`@EAAQJ[eWUWdmF|F``bh@@@B\\nf`yP@@@FRifUV|cAVTxwj`YBhjH@LITxJRmV]{bLF@\\ndk\\\\H`D@HRUe[Watv`@jb@LA@jzUt~Q@\\ndaDHPNBHPHrJIPeUMT`FE@aTwHx\\ndeTHPNBHPHrJIPiEUMUR@P\\ndclD`HP@cIHXdiepkjp@UD@XLU]J{r@@\\ndk^D`La@BLddlRTrF]MZ@Bh`B\\ndcl``Ae]BHRYWYZY]`@fhPB\\ndg~@PNBHTHRYUueicn@BjZD@pdLKaWSobHp\\nfdyPc@IZxHDPPH\\\\DYEEDiDfeDfJCFBAXjfa@B\\ndaF@@@RiUkjjj@LFaBinyF@\\ndg|H@@rJJIHqIMqw@PP@@@XKaTwRng_H@\\ndidH@@RVe~Fjjh@pzLJfx^P@\\ngJT`LPdfvhCAX|b@\\ndcLH@@RVYVnffjZh@`\\ndeTH@@rJJIFMsSUT@XUeLL|``\\ngOt@ADiYqfjPLMB~R`\\nfhia@@I@RYeU{UDkpV``bjh`@`\\ndcnH@DAIfYwXUuj`PH@LFJne]y@`\\ndk^D@DCTfYgUXUMj`Pb@B\\ngCi@HDff@pPwH`\\ndknDpItpdDdLdLbdLRTtEZh@a`@`\\ndmuD@HXDR[fUEV```@LLRexS\\\\L`\\ndk\\\\L@@STfUm]iiUjP@j@CBlkaOdR\\ndieD@DpFRYUrijfh@pILx^QP\\ndcnL@LAFRYV]Zy]Zi`@@B\\ndmL@@DjYUVGi@@@`@LNpjxYWdH\\ndet`@@iiRfYunFVifi@LLpayG@\\ndidh@HJfAIfYxZie`B\\neMbDBDfp`\\ngJPXHlQLQzlA@\\ngC`DADZHRVhB\\ngC`DAbZHRVhB\\ngCahHlNbNlA@\\ngJQhHl@cIHUhCBGd@\\ngKP`@Ti\\\\Zj@pRwI@';\nTrb.TE='daD@@DiYZYji`@\\ndaD@@DjUZxHD@@\\ndaD@@DjUZxHH@@\\ndaD@@DjWjXHB@@\\ndaD@@DjWzXHB@@\\ndaD@@DjYvxH`@@\\ndaD@@DkeVyjj`@\\ndaD@P@bBbDfYvzB@@@\\ndaDD@@IIf]nZZh@@\\ndaDD@@IIf]n``@@@\\ndaDD@@YJZUnjjh@@\\ndaDD@@aJVdnjjh@@\\ndaDD@@yIe^f`@`@@\\ndaDH@@RVU[j@@@@\\ndaDH@@RYVih@H@@\\ndaDH@@RYe[hB@@@\\ndaDH`BCDRYg[hH@@@\\ndaDH`NBPRYWih@H@@\\ndaDH`NCDRYWih@H@@\\ndaE@@@YIeZn`B@@@\\ndaE@@@aJyUnh@@@@\\ndaED@DpFRYVkfjY@@\\ndaF@@@RYe[hB@@@\\ndaFD`L[`BDi]lJjf`@\\ndaFH@BAIf]n``@@@\\ndaFH@DAIYUnZjh@@\\ndaFH@DAIeUnZjh@@\\ndaFH@FAIeZn`B@@@\\ndaFH@LAIVUnjjh@@\\ndaFH@NAIe^fZVh@@\\ndaFH@NAIe^f`@`@@\\ndaFH`LP@aIe\\\\jZjX@@\\ndax@H@SHbDbLbLddjUUT@@\\ndax@P@SHqDjmZjh@@\\ndaxB@@rnRV{Zj`@\\ndaxD@@QIgUjj@@\\ndaxD@@YIgYjf@@\\ndaxD@@iJU^jj@@\\ndaxD@@yIUVjj@@\\ndaxHpJBPRPrPrJPiUUH@@\\ndaxL@@SDfUVjh@@\\ndaxL@@idiUZjh@@\\ndaxL`HS@BLddNRuT@@\\ndaxL`HS@BLddNbuT@@\\ndax``HJn@JRgmjZp@\\nday@@@yIUVjj@@\\nday@@@yIUWjk@@\\nday@PDh@c`aIUUZe@@\\nday@`Dp@aIfYjj@@\\ndayD@HPNRVUZj`@\\ndayD@LHNRUUZZPcH\\ndayH@DpDfYfjh@@\\ndazB@BAJyImmji@@\\ndazD@LADf]Vjh@@\\ndazD@LADf^fjh@@\\ndazD@LCdeYzjh@@\\ndazD@NADf{Vfl@@\\ndazH@DAIeYjZ@@\\nda{D@HQ`iIYejZ@@\\nda{H`Dpn@HRYeZjP@\\ndcL@@LdbRbceBDEEP@@\\ndcL@X@bBbFbAbEbMbDfYn\\x7Fijjjj@@\\ndcL@X@bBdFdAdEdMdDfYn\\x7Fi`bHh@@\\ndcLB@@imReUUUvjjjh@@\\ndcLB@@riRfY~Qfjjjh@@\\ndcLD@@IIf]^xViZjP@\\ndcLD@@uIfUk[hBBj@@\\ndcLDPDtHaXaInUvxY`@i@@\\ndcLDPEt@b@cIDhTdiaUUUM@@\\ndcLF@@Rag\\\\bbTVTILuSUT@@\\ndcLH@@RYeUqVhHH`@@\\ndcLJ@@PUuInUgzV`BJ@@\\ndcLL@@STfue^UZX@HBL`\\ndcLL@@STfyWWaZ@Bh@@\\ndcL`@@qaRfU~ZxHDj`Hj@\\ndcM@@@aJufYgZhBH@@\\ndcM@PEtH`haIf]u[hHBj@@\\ndcM@PEtHchcHhheETppDQT@@\\ndcMD`LE]@HRV[]nEjiih@@\\ndcMH`BuPBDf[U{aj@BX@@\\ndcN@@@Ri]mUvjl@@@@\\ndcNB@BAEuInVVFV`HF@@\\ndcNBAHAEvISdfyV{iZ@HX@@\\ndcNBAHAEvISdfyW[aZ@BX@@\\ndcND@BADf{YU]Zj@@@@\\ndcND@E@\\\\bbRafUM@AUP@@\\ndcND@E@dfYwYn``Jh@@\\ndcND@MBldTtRROSPPQP@@\\ndcNH@EAJ[WU[j@Bj@@\\ndcNH@FAIfYWgZ`hH@@\\ndcNH`Bp@aJY{UWZZjj`@\\ndcNL@FA]rJJJJJlLADU@@@\\ndcNL@LB]RVV]vE`BFP@@\\ndcNL@M@iRYg^vzB@j`@@\\ndcNLaIQ]BHf]yInUvxY`@f@@\\ndcOD@DgPGHheDhkrmUSU@@\\ndcOH@NFPrQISQHrmTAA@@@\\ndcOLAHHPSXeNrJZJIHlKTuUH@@\\ndclD@@GIEEHhfUKmAU@P@@\\ndclD@@UIfV][iuhFAH@@\\ndclD@@iJYW]rnF``JX@@\\ndcll@DpYAmRYV]zzUZije`@\\ndcll@Dsm@iRYgeVE]ZjeZ`@\\ndcm@@@YJYYwhUtH@@@@@\\ndcm@@@{IDeCDdUKh@UUD@@\\ndcm@@@{IDeCEDUSh@UUD@@\\ndcmD@DHERYYUZz]Z``R@@\\ndcmD@DpFRYV]Zy]Zi`@@@\\ndcnD@D@TfYg\\\\fWVjYjh@@\\ndcnDPN[PBABLdTRbauCtuTuSP@@\\ndcnL@LAFRYV]Zy]Zi`@@@\\ndcnL@LAMRYUUrhYZh@h@@\\ndcnL`LaA@HrRPjIKTrzmPHD@@\\ndcndADkaTMz]yIefU[iUjeji@@\\ndco@@@bdigyWJWYj`@P@@\\ndctB@@RURY]VvjjZ@@\\ndctB@@ieReUWZjjj@@\\ndctF@@rngTen{mjjj`@\\ndctFPHSNePBABLddNRTbuUK@@\\ndctH@@RYuUVjjj@@\\ndctHxJBPRPrPFPfPVPvPrJPqJQUUUT@@\\ndcu@`Dp@aIeUUZjjh@@\\ndcuFPBvDsiT@`PcIICdeHmURp@@\\ndcwD@HQ`iIYgmZfjh@@\\ndeL@@Di[ernDYZjij@@\\ndeL@@DjYeIjGijjjj@@\\ndeLD@@EJUWhRfFZjjj`@\\ndeT@@DjWvifjih@@\\ndeT@@LdbTRoBuUM@@\\ndeTD@@EIe]jZ@Bh@@\\ndeTD@@QImeQej@@@@\\ndeTD@@eIfu~Eh@H@@\\ndeTD@@gHhhhjppDQ@@@\\ndeTD`AdHaIe]jZ@BX@@\\ndeTD`NDHaIfVVfBA`@@\\ndeTH@@RUYTYY`@@aH\\ndeTH@@RUYTYi`@@aH\\ndeTH@@RV[TYjP@@@\\ndeTH@@RYVZfZZj`@\\ndeTH`IBHrJJJJlLADP@@\\ndeTL@@PTfyVzV`B@@@\\ndeTL@@QdfygFV``@@@\\ndeTd@HRi@TefUzVjih@@\\ndeU@@@aJWeQfj@@@@\\ndeU@@@aJueQfj@@@@\\ndeU@`Dp@aIgeQej@@@@\\ndeUD@DdARYgxfZjf`@\\ndeUH@HPDefuFVh@@@@\\ndeUH@JdDin_xZB@`@@\\ndeV@@@RgYTYj`@@@\\ndeVD@BADf{YxVjjX@@\\ndeVD@D@TfVgJfjih@@\\ndeVD@DAdfygFV``@@@\\ndeVD@FADfygFV``@@@\\ndeVD@IADfyWxV`@`@@\\ndeVDAHAHeNR[e[aZ@B@@\\ndeVDAHAHeNR[e_aZ@B@@\\ndeVDAHAHeNR[fTYZ@`@@\\ndeVDPJJPqFqDfYokjVjX@@\\ndeVDaBxPbBd^RYeei``X@@\\ndeVDaNFPbNf^RYWZf`@f@@\\ndeVH@IAIe]ZZ@Bh@@\\ndeVH@LAIUeQfjjj@@\\ndeVHpDxHbhbXcHheEJptuMH@@\\ndeW@@@RTfyWxV`@`@@\\ndeWH@DZPR[e_aZ@B@@\\nded@@DiUUjjj@@\\nded@@Dj_VfZZ@@\\ndedB@@RiR[UUijhHr@\\ndedB@@iiReUvjjh@@\\ndedD@@QIkWZjj`@\\ndedD@@QInUVfj`cH\\ndedD@@QInUVjj`@\\ndedD@@aJVfjjj`@\\ndedH@@RUUVjjh@@\\ndedHXDBHjPZPzPFPfPRYZZjjh@@\\ndedHXJBPRPrPzPFPfPrJPsRUSU@@\\ndedH`HALRkUUjjh@@\\ndedJ@@rneI[nvjj`@\\nded`@@iiReUvjjh@@\\ndedd@BXYADfyvZZfBL`\\ndee@@@gHeHiCuUV@@\\ndeeD@BdDR[mUjjh@@\\ndeeL@HdBEIVUfji`@\\ndefD@LADf^]Zjj@@\\ndefD`FFPBDiWnjjf@@\\ndefH@DAIfWvjj`@\\ndefH@DAIfuVjj`@\\ndefL@IAAR[UYjjX@@\\ndefL`F`Y@HRkvyjjX@@\\ndefL`JHY@HrJJEJUMS@@\\ndeflAHrfxDfISdfvyZfi@@\\ndegD@HZPEIUUfji`@\\ndet@@DjYUX^d@@@@@\\ndet``Dki@HRYYUnFVjVi@@\\ndet``DkiBHRYYUnFXBBa@@\\ndeth@DkiAIeeVxYZiZd@@\\ndeth@DxYAIeeZxYZfYh@@\\ndeu@@@kIEEDceCLaPD@@\\ndeu@`Dp@aIeURhYfh@@@@\\ndev@@@RYyULFZh@H@@\\ndev`@@rfeJY{ZxYBBJD@@\\ndew@@@pldTTJVTLmP@P@@\\ndg\\\\B@@Q[R[VUmgVf@HhBL`\\ndg\\\\D@@eIfU_Un`HJj`@@\\ndg\\\\H@@RYWY^ih@Jmh@@\\ndg\\\\H@@RYvYiVvfZjjBL`\\ndg\\\\d`LF[a@BLddJbbQvfmPLA@@@\\ndg\\\\h@Fd{AIfUWxUZABI`Hj@\\ndg\\\\h`LJfd@aJ[Ywkaijejh@@\\ndg]B@NTBNtfY}[fyjVjf`@\\ndg]D`NV]BHRYWVyih@JZh@@\\ndg]HPAuPbBbDfYw[fzB@ij@@\\ndg]H`AuPbDfY_[fz@`ij@@\\ndg]L`LnDD@cIIBhhd]ikTC@P@@\\ndg^@@@RigvuNzjk@@@@\\ndg^B@BAEoHiihdhUNmT@QP@@\\ndg^B@BAMoHiieDeBimU@DP@@\\ndg^DPNI`BDBDfumeSmZf`@@@\\ndg^D`INpbLbdTJTv`kU@DS@@@\\ndg^D`La@BLddLTRRIvmTE@@@@\\ndg^H@DCHhhhddYimTE@P@@\\ndg^L@EACR[YWVFVh@JX@@\\ndg^L`Iia@HrIQPjZIG]TtuU@@\\ndg^LpDx{BHjHVHrJIQPiZLLADUL@@\\ndg_@pNfpqDBCBDfUyWbjfijfPad\\ndg_BAHJ`QSbT{HiheBidwMMUUR@@\\ndg_L`LfxPPBLddJbbQvfmPLA@@@\\ndgl@P@SHbDjmUUZjjjh@@\\ndglB@@Q]RYUumZjjZ`@\\ndglFPHSItpBEBLddNRRTbuUTl@@\\ndglP@@anESoIDhhd\\\\iMSMS@dWP\\ndgll@DrSAmRYV^uZiik``X\\ndgmFPBnDr]L@aPcIICddeHmUUK@@\\ndgmL`DVCl@cIICDmihmUUS@@\\ndgnNPKaLXYTOBoCIIKHiMTuUMU@@\\ndgoL`LD~gPBLdTtTjTuMSTt@@\\ndg|@@DjU_eZx{BAH@@BJ`\\ndg|@P@bEbLbbbTVbKR]pP@P@@@\\ndg|D@@MIfV]UivviP`R@@\\ndg|H@@RVUvU[cm`@`@@@@\\ndg|H@@RVUvU[cn`@`@@@@\\ndg|L@@t|bbbbbJcBmm@tCD@@\\ndg|d@Dq]@\\\\bbbbfJSSimUSTs@@\\ndg|laLJce]@HjUyJYn[gFNzZZYj`@\\ndg}DPEtYBHXHrJIJZQGUvg@DKUB@@\\ndg}H@IlLdTrTraS]Jt@EMQ@@\\ndg}L@hdDNISid~R[fV]F]mh@@H@@@\\ndg}L`JXiTIAIf]VunNzVjZj`@\\ndg~D@D@\\\\bbTbTjQL]mUR@D@@\\ndg~D@IB|dTrTraS]Jt@EMQ@@\\ndg~D`LS`BDfUueRh{Zjh@H@@\\ndg~L`EF[BHRYVyukev@HZiH@@\\ndg\\x7F@PBWPbAbLbbbRfaSR]pPTMQ@@\\ndg\\x7FH@DjprJIQEQIMqvuRp@P@@\\ndiD@X@dDdLdJdNdAdLbdLtjjh@@\\ndiD@`@RdjeVjj`@\\ndiDB`HSB@HrRPiIZj`@\\ndiDD@@QImVZjh@@\\ndiDD@@QImZZjh@@\\ndiDD@@QIn]Zjh@@\\ndiDH@@RVUjjj@@\\ndiDH@@RYWZjj@@\\ndiDH@@RYuVjj@@\\ndiDL@@Pdf]ijj`@\\ndiDL@@RdfUUjj`@\\ndiDL@@idiUVjj`@\\ndiDL@@xTiUVjj`@\\ndiDLB@PTyInuZZh@@\\ndiE@@@aJuUjjh@@\\ndiEL@HPJyIYvZjX@@\\ndiEL@HhNEIgVZjX@@\\ndiFD@AADfuUjj`@\\ndiFD@BADf{Yjj`@\\ndiFD@FADfumjjP@\\ndiFD`JxPBDivzji`@\\ndiFD`JxPBLbdTljjX@@\\ndiFD`JxPQDivzji`@\\ndiFHPF`@`PaJoUZjT@@\\ndiFJAHALXXgNRYvvjj@@\\ndiF`@@SNGHhhcFjf@@\\ndiG@@@HTeUWjjp@\\ndiGD@HQ`kHeECFij@@\\ndiGD@HhPyIUVZjX@@\\ndiGL@HQ`h\\\\bTTQZfh@@\\ndiT@@DjV]nxVjihHB@\\ndiTH@@ReUxRfjjf`@\\ndiTH@@RgeXSaj@B@@\\ndiV@@@RfU|kadHB@@\\ndid@@DjYUaBHP@@\\ndid@@LdbRQk``b@@\\ndid@`@bDfUff`@h@@\\ndidD@@EIfU[ffiP@\\ndidD@@EIfU[hBB@@\\ndidD@@GHhdhZZ@B`@@\\ndidD`BD@aIf][hHB@@\\ndidD`BDHaIf][hHB@@\\ndidD`BDHaIf_[hHB@@\\ndidD`BDLQIf][hHB@@\\ndidH@@RUe^Fh@@@@\\ndidH@@RYVZZ@B`@@\\ndidH@@RYWZZ@BP@@\\ndidH@@RYm^Eh@@@@\\ndidHPNBHPHRYWbjfid@@\\ndidL@@IdfYoa`b@@@\\ndidL@@XTfUfn`BH@@\\ndie@@@EIfW[hBB@@\\ndie@`BDHaIf][hHB@@\\ndie@`Dh@aIefkfif`@\\ndieD@DpFRYVZyjfd@@\\ndieD`JXaBPRYgvzejX@@\\ndieD`LIN@HRZufFZid@@\\ndieH`DpPBDfYeaZjj@@\\ndif@@@rQQIFfZjj@@\\ndif@@@rQQIFfjjj@@\\ndif@`D@HRUe^EX@@@@\\ndifDAHAHeNR[e^Eh@@@@\\ndifDPJHPqFqLbbbekjVi`@\\ndig@@@xTjU^njjj@@\\ndigDaLHVx@cI{dieljjUj@@\\ndigH@DK`R[e^Eh@@@@\\ndkL@`@SDjUUUjjjj@@\\ndkLD@@QIe[WVijj`@\\ndkLFPHSAWPBIBLddNRRdVjjV@@\\ndkLF`DkaTpBLbdtVafjjji@@\\ndkLH@@RUUUVjnzl@@\\ndkLJ@@imMJUUUZjjj`@\\ndkLP@@anF]OIDhhjeIjYi`RKh\\ndkLP@@bfF]OIDeDTeIiii`RKh\\ndkMFPBNDpUt@bPcIICddiEjje`@\\ndkNLPFi]@HLHrJQRjJJjZih@@\\ndkNLpFjUBPRPrPrJPsISJjZfd@@\\ndk\\\\@`@bDfYYwZ]NB@@@@@\\ndk\\\\D@@wHhhhhbfESZAhD`@@\\ndk\\\\D`ELLSHhdidhZZ]`@iYH@@\\ndk\\\\H@@RYeg]itxH@@@@@\\ndk\\\\``LyS@HRfUeTUtzBHba@@\\ndk\\\\d@Dq]@\\\\bbbbfJZ]MjjZe`@\\ndk\\\\d@DrUCdfY[uXUujijY`@\\ndk]@@@uJYU_lkihDHj`@@\\ndk]D@DxJRYY{Tjtvfh@H@@\\ndk]DAHDMF]yIYeg^ESh@@H@@@\\ndk]H@ALLbbRfTJiaf@Bfh`@\\ndk]H@DHDfYyWImMjhHA@@\\ndk^@@@RfYU\\\\]Tz@@@@@@\\ndk^@@@Ri_YVftzjX@H@@\\ndk^@PDCDNHRVf]}aWZjB@h@@\\ndk^D@A@|bbRfTJiaf@Bfh`@\\ndk^D@IADfvYWz]MjdHB@@\\ndk^FAHALzSb\\\\{HhmEDdQe]Zjjjh@@\\ndk^HPNHJrXaIf^UvGS``B@@@@\\ndk^L@LANrJIQQEJatvjf@@@@\\ndklB@@PcR[me]]Zj@B@@\\ndklB@@QSrJYJIJF]ZX@b@cH\\ndklB@@QmR[fUxUZBBF@@\\ndklD@@QInUvnEh@Jh@@\\ndklD@@eJ[Vvfz`@jh@@\\ndklDpBhJqJs@cHiiCDeeviX@H@@\\ndklH@@RYfVya`Hbj@@\\ndklH@@rJJJQJy]ZBhB@@\\ndkl`@@SFRYvUWSZjjj`@\\ndkl`@@kaRe[vTf@HZj@ah\\ndkm@`ATHaIe[ujZ@BfhBA`\\ndkm@`MLHcHhhdcDfz@`Z|@@\\ndkmB@hHD[heNJ^{HihhhTmMjf@@@@\\ndkmD@DpJRY{YWSZf`@@@\\ndkmDBLdDf\\\\bbTTJTWVj`@`@@\\ndkmDpDgSBHjHVHRYYmYn`HJf@@\\ndkmH`NVPbDfUunih@JZ`@@\\ndknD@DATf^UuFVh@J`@@\\ndknD@E@\\\\bbRafRih@Jj`@@\\ndknD@LALbbRbaRtvjh@@@@\\ndknD`J``BDjy{Utvfjjh@@\\ndknL@BACR[me]]Zj@B@@\\ndknL@BAMR[meYSZj@H@@\\ndknL@M@iRYg^un``Jj@@\\ndknLBLANSlbfbTaRtvjzjh@@\\ndknh@HF]LDee]V[iiYihDbz@\\ndko@@@aLdRbbRQtvjB`@HB@\\ndkoH@Dp`RYuYWSZj`@@@\\ndk}@@@iJUmUR[atpBJ@@@@\\ndmLB@@RURYUVJaejVjh@@\\ndmLD@@QIe[VfeVi@B@@\\ndmLH@@RYiYKnUjjjh@@\\ndmLH@@RffeZVVjjjh@@\\ndmLH@@rJJIQEneX@@@@@\\ndmLL@@SdfVUrjUZ`PH@@\\ndmM@@@[IEDhhZFU@B@@@@\\ndmM@@@aJUe^neYhDB@@\\ndmMD@DdNRYYWJiUjA@`@@\\ndmMD@DhNRYYWIiUjA@`@@\\ndmMh@DkaePRYYe[iUifjd@@\\ndmN@@@RYVuiiVj`@`@@\\ndmN@pN@H`HPHrRPqIZneUhDB@@\\ndmND@BA\\\\bbbReInFjZjd@@\\ndmND@DBdfV]RZUZf@@@@\\ndmND@DCdfVUrjUZ`PH@@\\ndmND@DCdfVUrjUZfZj@@\\ndmND@DCdfVUrjUZjZj@@\\ndmNDPNYPBABLdTRbch^fjfih@@\\ndmNH@NAIYe^neZdHB@@\\ndmN`@@raeJY{VfFP`JX`@\\ndmN``DkaT@aIefUneVjVjP@\\ndmNh@HqaTDeee^FUhBBa@@\\ndmOD@DiPyIee\\\\feVhDB@@\\ndmOD@DjPyIee\\\\feVhDB@@\\ndmOH@DK`RYYWkiUiB@`@@\\ndmT@p@SHbDbLddJRRjjj`@\\ndmTB@@ieReUWjjj`@\\ndmTB`HSBCpRjuUZjj`@\\ndmTBpHin@JspDJrQIRGJjZj@@\\ndmTFPHSFFPBNBLddNRdVje`@\\ndmTH@@RUUUjjj`@\\ndmTJ@@IaUIf[~jjj@@\\ndmTL@@xTiUUZjjh@@\\ndmTLPDp`|HdLddJTTfjj`@\\ndmTl@HQeBiRVY~Zfi`@\\ndmU@HLT@a@c`bPaIggYjjf@@\\ndmU@pLD@a@c`cHheEKFjfh@@\\ndmUD@DXARYW[ZffP@\\ndmUH@JXDiUYjjjh@@\\ndmULAFDDIiGdf{evfYh@@\\ndmUL`DzIT@cIICeMEjjX@@\\ndmVB`NiiT@cIDeEKJijX@@\\ndmVH@DAIYUUjjj@@\\ndmVL`JFU@HReYyjjf`@\\ndmWH`DphCpRjyfZjj`@\\ndmtB@@QeR[f]FV``H@@\\ndmtB@@QeR[f_FV``H@@\\ndmtD@@UIfU|YZB@`@@\\ndmtD@@WHhhhiVF@bJ@@\\ndmtD@@iJ[g_ahHBP@@\\ndmtD@@kIEEHeYV`j@@@\\ndmtH@@RYeY[hBBh@@\\ndmtH@@Rfuu[j@BXBA`\\ndmtL@@SdfVyyUjB@@@\\ndmtL@@YTf[gqehHB@@\\ndmtL@@yTee[VE`BJ@@\\ndmt`@@kaRe[vI`BFhBF`\\ndmu@@@aJueXYj`@`@@\\ndmu@@@aJue\\\\Yj`@`@@\\ndmu@@@aJufVUj`H@@@\\ndmu@`ITICHhhdbfz@`j@@\\ndmu@`ITLSHhhdbfz@`j@@\\ndmuD`LVD@HrRRqIXYV`@`@@\\ndmuDaBWaBHJQ{HhheEVfBAb@@\\ndmuH@HPDefUyUjB@@@\\ndmuL@DTAeIf]XfZjih@@\\ndmuL@DpFUIeY~nZijd@@\\ndmv@@@Rf~UeZj@@@@\\ndmvD@DATf^Uqej@B@@\\ndmvD@E@dfYwVzB@j@@\\ndmvD@EADfyW^Ejjj`@\\ndmvD@NADfVyyUjB@@@\\ndmvDPDePbAbDfUmjZ@Bf@@\\ndmvD`EJPqDfY}VzB@j@@\\ndmvD`La@BLddlTReUhB@@@\\ndmvD`NePBDig{ljfZf`@\\ndmvH@FCHhhhdYUhJ@@@\\ndmvL@FAIR[f^EV```@@\\ndmvLaFFUCDZYyIe[fn`BF`@@\\ndmw@@@aDiUmYUj`@@`H\\ndmw@@@aLdRbaReVj@@B@`\\ndmwDAHEPRISlbfbRazV`BH@@\\ndmwDAHYPRISdfygQehHB@@\\ndo\\\\@T@dDdLdJdFdAdEdCdKdGdLbdLaffdjjjjh@@\\ndo\\\\J@@imMJUUUUjjjjh@@\\ndo\\\\L@@idiUUUVjjjj`@\\ndo\\\\NPHQevw@DHDrRYJKJHqjfii`@\\ndo]B@L\\\\Dv|bbtTTUTZjjjX@@\\ndo^J`CaLKP|LddqbbTlZijfhHi@\\ndo^bAHs[\\\\DxXeNrJYQQEIQjiji`@\\ndo|D@@QIn[WVeVj@Bj@@\\ndo|D@@uJYU]]zZBBJj@@\\ndo|H@@RV^UviUj`@j`@@\\ndo|H@@rJIKJQFRf`@jjh@@\\ndo|H@@rJJIHiIIn`HJjh@@\\ndo|J@@S[_HheDdeDYMjBBb`@@\\ndo|L@@iTinU]_ihHHjXBC`\\ndo|L`BmpbDfYU]Ya``biX@@\\ndo|hHLJkL@bYAYCYCIEEMMHi|jfZjfh@@\\ndo|h`LInT@aJYV}zFZZjVj`@\\ndo}B`K^DxpBLddLRRVbgUhHHZ@@\\ndo}DPAuSBHJHRYg]nVzB@ij`@@\\ndo}DPAuSCDJHRYgunVzB@ij`@@\\ndo}H@DpLbbbLRVTWVj`@j@@\\ndo}`@@pjX|dTTRfb\\\\k`Hbjj@@\\ndo~B@BAC_HiiMhdh]mjj@H`@@\\ndo~B@BAK]InVuf[fjjif`@\\ndo~D@DAdfuke^wZjhH@@@\\ndo~J@BAFM|bfffbRavvjh@b@@\\ndo~L@CB]RfyV~^F`HJj`@@\\ndo~L@GBnrQSQQIGHUhHbJh@@\\ndo~L@LANRYye[iujBBJ`@@\\ndo~L@M@iRYg^ufzB@jj`@@\\ndo\\x7FBAHXpSAb\\\\yIgUnUmvji`@@@\\ndo\\x7FD@Ds`gHhhcDliIUjiijh@@\\ndo\\x7FD@HPpEIYunUmvji`@@@\\neFA@lbrJ@\\neFA@lhbL@\\neFAADdRJ@\\neFABHhbL@\\neFABljrL@\\neFACDlRL@\\neFB@Jc@@\\neFBBHc@@\\neFBBPc@@\\neFBCDc@@\\neFDBb`@\\neFHBJ@\\neFHBL@\\neFJHbHh@\\neFPBc@@\\neFhXNic@@\\neMA@HPaIT@\\neMA@JXaIh@\\neMABPYAIh@\\neMBBHRZ@\\neMCALhabHz@\\neMDARU@\\neMDARZ@\\neMFI@bMP@\\neMFIBrMP@\\neMHAIX@\\neMHAIh@\\neMHBN`@\\neMIHdFPRZ@\\neMPAR^@\\neMPBch@\\neM`AIx@\\neMdXZWde`@\\neMhDRV@\\neOBBHcfh@\\neOHBNZ`@\\nfH@@\\nfH`P@@\\nfH`T@@\\nfH`X@@\\nfHap@@\\nfHbd@@\\nfHbh@@\\nfHcP@@\\nfHcd@@\\nfHdH@@\\nfHdP@@\\nfHe@@@\\nfHep@@\\nfHf@@@\\nfI@@\\nf`aA@@@ILsKWRpTADUUP@@\\nf`aA@@@YEEDdTddf\\\\`HJjj@@@\\nf`aA`D@HdclbfdQTtRSoMUTp@@@@\\nf`aI`@BJ]xBAIMrlvkYsUTuRt@@\\nf`aPP@B\\\\@bwlbfdRLRTIgMUT@Q@@@\\nf`aPP`M^djs`QAHa`PXHrJJJYRZr\\\\EADBtl@@@\\nf`aPRDL^`cQ`AAnrRPjIIQUJlmPPLT@@@\\nf`aP`@DJA{HdiEDXhkKRuSUTl@@\\nf`aP`@LV@cHhmEDidYISTAAUP@@\\nf`aQB@NJdBHRYWVyncH@JZjp@@\\nf`a`C@C@dDRFICHiCDeBhlJUT@EUP@@\\nf`a`P@B@TZvQQQIIRsHTfiZfZd@@\\nf`a``@M@PdwMkjteMT@ES@@@\\nf`aa`@D@IiIeyWUYJZh@Jj@@@\\nf`aa`@M@D[IEDdhbeiqUAAQUP@@\\nf`apRBNJMACo@BES{lddJVbbbfcKUURsP@@\\nf`aq@@DV\\\\CHheEDcddkSTE@UP@@\\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@@\\nf`i@P@@HTYIe[VUZLeiwfi@HjhP@@\\nf`i@a@FRAD^bDfUm[WirRkN`BJ@BH@@\\nf`iP@@@TRfY]{WEAJ]zPhH@B@@@\\nf`iQA@B\\\\|@HpDISLzsnRdcN}TaAQUD@@\\nf`ia`@D@M{HhhhddYdJVkN|uPTDUD@@\\nf`q@@@DjYU[oxjQh@@BJ`@@\\nf`q@@`@QAHbtQzHrJJKKQIPlxYtDA@DP@@@\\nf`q@A`@XaLQfHKDMb^qDfYn}gyJshHb@``@@\\nf`q@`@@HR[YWYTTg^Z`@`@@@@\\nf`qA`@@HddrsLk~gV|u@D@@@@@\\nf`qHA@DBMxDQhHRYWVY~cMV`@jikHDMH\\nf`qHP@DXxHDg^rJIQSPiITyhsSUUUS@@@\\nf`qI`@DXUh@oYEEEELTlfRtYjjZfi`@@\\nf`qI`BHDDhBOPeGIMsOljpSoMSUUUL@@\\nf`qPA@B^ADVbLbbbrtRTKNF]A@PAD@@@\\nf`qPHAHV@cGIF]zDxzt~{HhmEDdThJRmMUUUST@@\\nf`qPP@LT@cfdfV^V]IRwfjhJBD@@\\nf`qP`@DV@YIfYmYZLuyj`hFb@@@\\nf`qP`@DXAqIfWnUrL]yjihHB@@@\\nf`qPaABLEh@Q@HIKIEvnrQJJJIQXj][uPAA@@@@@\\nf`qQA@CVHBHEDYEEDeMCLfR]zBBbfh`@@\\nf`qQB@G^`@HRkfUWvQmVZ@@@J@@@\\nf`qQ`@BF@abS\\\\oLkjL{sUUHPD@@@\\nf`qQ`@BZ@crS]lrnruYsUTa@T@@@\\nf`qQa@LL`bp@b`QddebRRRrxKQejZ@J`@@\\nf`qQb@FBt{p@aJYUW]lTEJfZjZZ`@@\\nf`qQb@LD``P@cIICDhhlUrSoKUST@@@@\\nf`q`P@L@PZvQQISQIPiVg^ZhBBjH@@\\nf`q`a@APX@H}HIUwOJ~JUgMRtDAP@@\\nf`q`a@IN|BHDDILklnmQbmP@TuSB@@\\nf`q`b@ILD@HrQQJJMQITX{uMTt@D@@@\\nf`qa@@E@rQQIZYQF\\\\EjuA@TuQ@@@\\nf`qaB@AFADYEEDeHUDV\\\\]z@`jfh`@@\\nf`qaB@BXAHYDihiheD]F]zfh@@@@@@\\nf`qa`@D@x{HhheKDeeQakMUL@EP@@\\nf`qa`@L@QqIgfUnyZTYjBBJh`@@\\nf`qi`@DTxIPC^rJIQQJiILyISUKMUU@@@\\nf`qp@@@Hpds\\\\rj~gV|uP@@@@@@\\nf`qpP@DXxBSoYEDhihTdjBtYijjji`@@\\nf`qpa@LR}A@@`PQddaTTRRUtxuejBPha@@\\nf`qqaBLDhJR`AA`bdr{IEELiiXeacoTtsMMR@@\\nf`~@P@@HtYIeU]mVjjij`@@\\nf`~@`@@^rIRHiIJQUUUUU@@@\\nf`~@p@@HYHsdf]UUVZjjjf@@\\nf`~@p@@TYhwdiUUU]jjjjj@@\\nf`~@q@HHpjs`AA`cIIChlhmHmUUTl@@\\nf`~A@@@ILjjjjuUUUT@@\\nf`~PA@F\\\\@DPBDiUVYUjjjjj@@\\nf`~`J@NPQafcN|CprRRjYQQFMTuSS@@@\\nf`~a@@D@rJIIJHiIMSUMU@PRe@\\nf`~hPBHXhsPDV]BT\\\\dvvjw[TuUSP@@\\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@@@@@@@\\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@@@@@@@\\nfbca`@D@BeIfYeUuu`iJMytTyZh@P@bjB@@\\nfbca`DK@iftiSJzljlxipVk^bEMA@@@DU@P@@\\nfbe@@@LdbbTbsbrTWESMUSSML@dESY|`\\nfbe@P@@LU[HhhhehcBdeHsPTEEUT@@@\\nfbe`p@L@PkPTiLjlr{{V|uU@pQS@@@\\nfbei`@LTDjpDIRYUyWYVtYjj@Bjj@@@\\nfbepb@BZ}IPHaIf]V_VUgHHBfjjh@@\\nfbepb@BZ}IPLQIf]V_VUgHHBfjjh@@\\nfbexc@LDXXJ\\\\pP@HdD^BLddNfRRbRrcoKTuUKTt@@\\nfbm@A@@IdHaJkfYUU|tWICfj@@@@@@@@\\nfbm@P@@BSgHhhhheEl\\\\hHrgV|t@PDASP@@@\\nfbmAB@H@SDjnYeUWsQ\\\\dNZh@@@@@@@@\\nfbmAB@H@SDjnYeUWsQ\\\\dNZjjjjjjh@@\\nfbmAP@@BLENQQQQQQQYG[bm^]Eh@bHAJ`@@\\nfbmAP@@HeENQQJJJIKZIUgMNmyj@H@Bj`@@\\nfbmA`@@ZMdRbbTVTJRRxIwdyXBBjZ@@@@@\\nfbmHR@LLDhwdy@DYHieDdUDhlnBdipZ@`Zjjhh@@\\nfbmIR@AZ|fBKNb@HrRPrJI[QQETEHr\\\\kUUUMRmP@@\\nfbmIR@LLDiAoIr@HrJSJIHjIQY\\\\EIS`uUJuUUUP@@\\nfbmP@@@FRieYgUWxYrPyjj`B@HH@@@\\nfbmP@@@IrRJJIQJIHdjmhKhu@DPQAT@@@\\nfbmPB@AIADILklsJktYyL\\\\p@UTEAA@@@\\nfbmP`@DJ@{HhhhhhdhbRqUhaRuP@pPAP@@@\\nfbmP`@DJAgHhhhhhdhcjqUhaRuP@pDAP@@@\\nfbmPb@AJ|dDPdrmrljoSfgQs@DMPTBD@@@\\nfbmQ`@DX@sJSJmsJkyJNbEKUM@@@E@@@\\nfbm`B@I@bDfYYu^yV\\\\uYNXB@P`B@@DAP\\nfbma@@I@rQSQIYQQIH|ExJ\\\\tAAUAPA@@@\\nfbmaB@KDADILsjlmklxZr\\\\pPEUPPA@@@\\nfbmhR@DXXJQoIrBHrJIJKJFIQYTyIS`pAEUUUPp@@\\nfbmiP@DTxIPC^SgHheEDjheEdsdeNBuRsUUUU@@@\\nfbmiP@LF]EHIJugIEEEDdhjllRegAcUUUPHET@@@\\nfbmpC@KQRBHDDZBLbbbRaRtTRSNJtgLAAUMUjTBFh\\nfbmp`@DXHBRSL|lvj}F^SGKUUH@@A@@@\\nfbmp`@LFbAFQQISISJQIFRcVbej`@jjjJ@@\\nfbmq@@ARLAJ[eg_fWbmFSf``Xj@`D@@\\nfbmq@@DBBAIeeU{e^VgASejBBIB@H@@\\nfbmq@@IJLAJ[V{WeY`mFbf`BFj@BD@@\\nfbmq@@IJLAJ[V{WfU`mFSf`BFj@`D@@\\nfbu@P`HHdhCaapXxZ\\\\LdTbdQLblRRmIsUUUUP@P@@\\nfbuA@@@ILsOsJk~SGKUUP@@@@@@\\nfbuAb@KIrBHrJJIJKIQGJLx[tAAUSULP@@\\nfbuHa@LRlFB@A@`cIIBhhddmeIiqkKTDaQUP`@@\\nfbuI`@DXtX@dyEEEEDbddUFRLyjjZjZfX@@\\nfbuPP@DD@xL\\\\bbTRTRVReUNRLu@aQTuP@@\\nfbuPb@GQxDDPdrnlkk]QakP@T@EMP@@@\\nfbuPc@IFSdD`bPqHYEHXdimDheAJCFj@H`HF@@@\\nfbuPr@NBYhwdyAbIJsNk[NbdxLtmTuUUPHP`\\nfbuQP@DA@JR\\\\yEEEDhdUmMBLLyj`VBJf`@@\\nfbuQP@DTAqTTyEDhhkMEDhfBCejii``X`@@\\nfbuQP@DV@JR\\\\yEEEDhdXceBLMyj`VBbf`@@\\nfbuQ`@DX@ZvQQZQQQQIH{rXyZj`A`@@@@\\nfbuQa@EVEHpHc`QdTRVTaTrbRhqNX@IZZjh`@@\\nfbu`Q@LJMxH@cHQdbbRbTTRfuqQrZj`f`ZJ@@@\\nfbu`R@DFmzH@aIfYU^]^QmNZhJBbjh@@\\nfbu`c@IQRBPQHXdLbdLRTvbbTPeAsU@DPPL@@@\\nfbuaP@D@M[tTfYeUyuyFtyj`hJJj`@@\\nfbuaPBH@PrQhRclbfbbtQfbRpeQRtDDS@A@@@\\nfby@A@@IdHaJkUUUUVjjjjjj@@\\nfby@`@@HR[UUUUUZjjffj`HTvP\\nfby@`@@YRUUUUUUjknknj`@@\\nfbyPH@BZ@bR`qSgHieDeDXdhhuUSUTs@@@\\nfbyPq@BY`cGhi@DABLddNRRRRRTbuUUUTl@@\\nfbyQ@@DX@dsLjjjjuUUUUU@@@\\nfb}@@@DjYee\\x7F]^RD[S`q@@@@@B`@@@\\nfb}@@@LdbbbbbTqvwEBlXJ\\\\`@A@D@@@@@\\nfb}@`@@YRYVumUWhrRkNbf@@@@@B@@@@\\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@@\\nfb}@`D@HQvQSRJIJUJYHRiZ]yNVjjjjjjj@@\\nfb}AB@L`BLbbdRQfRfRqNRUYtTuUUUP@UP@@\\nfb}A`@@JsdbbTTRrLrVqPVkNbfjjjj@Bj@@@\\nfb}A`@@\\\\sdTTbRLrTrVIrRkNbejjjj@Bj@@@\\nfb}P@@@NrRJJIQJKEKB\\\\hvoQsTEQ@PDT@@@\\nfb}P@@@PRfYVVwWppQoIcfZj``@@X@@@\\nfb}P@@@XrQQQJJYIKXxXHshaRuS@D@AT@@@\\nfb}PB@NZADILkljlktXkS`is@ATu@`E@@@\\nfb}Q@@AJ@drmvjroSbmNBgL@PttD@T@@@\\nfb}Q@@EI@drmrsvoSdeV\\\\gL@PDPD@P@@@\\nfb}Q@@IZ@eMk]jmjpVcN|gM@DMM@@T@@@\\nfb}QB@I^DBHrJIKJSQQIHtYjw`is@AUTC@E@@@\\nfb}``@H`YdTTTTTLQbJxkUg^bfBH@bBjH`@@\\nfb}a@@H`rQSISJQIIHlxjwhaSP@UUUUEP@@\\nfb}pB@ARTBHRYWYUVuhqVg^Sf@BZZP@J@@@\\nfb}pB@ARTBPRYWYUVuhqVg^Sf@BZZP@J@@@\\nfb}q@@DDtAIf[eUo\\\\cMNlENVjdJ@@A`@@\\nfb}q@@IJtAJ[V{UUU`mF]yNZ@HZZ`@`@@\\nfde@``ARAbDq@xd\\\\QIf]UUUYqVg^``Jh@h@@@\\nfdeH@@@XH[IEEEeddhUSdeV\\\\ADUUUQP@@\\nfdeIB@LLxxH@aJWYUWVpPTcViYj@JZ@@@\\nfdeP@@@PReenUe|TLGtYj`@B@P@@\\nfdeP@@@RRi^VV}z\\\\txLZjB`@@`@@\\nfdeQ@@DXAdTTtTTRbqUXp_QZh@``A@@@\\nfdeQ`@DT@hvQQJIPqSYIgMVCEjjif@H@@@\\nfdeQ`@DTAsVQQJJJVKII`cVCEjijZ@H@@@\\nfde`a@AZlBHYDYEDeDXhiij\\\\Lywh@bifjJ@@\\nfde`b@H\\\\d@HRfYfWwQJMxLZjfZ``H@@\\nfdeaB@OBADILk\\\\}vmNJLFL@PuP@D@@@\\nfdehB@L\\\\tYp@cIEDeEEDdfKUgAcPQ@EP@`@@\\nfdei`@LZlFHIJrQQQQYQEYDhZw`uUUPHEP@@\\nfdi@Q@ARUh@Q`HRf^yoYlTjVfZjj@@\\nfdi@`@@FrJJIJQIFPly@PUUUP@@\\nfdiA`@@HedTtbJRbbV|Ejjj@``@@\\nfdiHbBDBuxLPQGicvQQIYJJIHrcH@Jjjf@@@\\nfdi``@D@TdrrvokFluUA@UP@@\\nfdiqb@JLtRR`RFQQQYIPiIIgJVjVjj`@@\\nfdiqb@LR}A@`AFRREQQKKI[UejA`bj@@@\\nfdq@P@@HMYIeUU{UZjjijh@@\\nfdq@P@@HM[HhddhbidhuUUSUP@@\\nfdqPP@LQ@`p\\\\bbRTTaVRcUUUUS@@@\\nfduP@@@PRfYVuU\\\\LxIt_Afjh@@A@@@\\nfduP@@@PRfYemurLyJp_QfjB@@A`@@\\nfduP@@@XrQQQJJEIKXYpU`~buS@@@E@@@\\nfduQ@@DVAdTTRbLRrRYrVcVCEjejjjjh@@\\nfdup@@@PheLr|jjxipSh~CMUP@@B@@@\\nfdy@A`@QAHadPzHCDQbLbbbfJbRbwAV}ADD@QP@@@\\nfdy@`@@HRYUm]eUZCEjh@H@@@@\\nfdy@`@@HrJZJIPiSIBdFKUUUP@H@@\\nfdy@`@@QRYWYnuzL|F@Bj`@`@@\\nfdy@a@CVADQbLbbRrbbbQuF^C@ATC@P@@@\\nfdy@b@@qAHILrrkssIF}A@AAPp@@@\\nfdyA@@@IMLrroioNcU@DPA@@@@\\nfdyAP@@BUhNQQQQQQDqIdgAZYjZZj`@@\\nfdyA`@@DMdTTTtRRQtXKSfiB`XZ`@@\\nfdyA`@@HedTtbabRrRMXLVjjfh@@@@\\nfdyAa@OAbBPUHYEEDhddYeFRMZB@B@i`@@\\nfdyAb@FAb@HrQQJVIKJJDihuRl@ESP@@\\nfdyAb@NV\\\\@HrQQQPsQSHdhFMRsTC@P@@\\nfdyH`@DXxHDlbbTTRbTrmNAbtuSUUU@@@\\nfdyHb@LBeFB@AFRREQQIIZ[Sk^Vh@@@h@@@\\nfdyP`@DR@IIf_mfYHstVjihBH`@@\\nfdyP`@DZ@GHhleEEDbmKSoMURE@U@@@\\nfdyP`@MNAKIEDheEDZhHvkTDQTMTP@@\\nfdyPb@INHDD`dsJnnkLDkTDDUUSB@@\\nfdyPb@NJCDDQdTTRatRbTXIwhBH`HF@@@\\nfdyQ@@DQAdTRbbRbbuUzpVh@@bB@@@\\nfdyQ`@BN@`VQSQIQPqIXs`qZjfdHB@@@\\nfdyQ`@DLAHrSKjrmjZpXmUUU@A@@@\\nfdyQ`@DZAxJSNlrnkKUgMURDAU@@@\\nfdy``@F@PdwLkwKBUxKPPPAA@@@\\nfdy```LHx@H}HAdHrFQQIYJIJFPeCVZjh@Jj@@@\\nfdy`b@LHx@HrJIKIQIPrDhZsUU@AUP@@\\nfdy`b@N^BBHrJJIPzJIQLDzLADPPL@@@\\nfdyppBDDDCbkAbR^]dTtRaTRbrXHsfiZjjjh@@\\nfdyqb@LFcA@`AFRREQQIJH{WcVVhIBhhP@@\\nfgAAB@A@bDfUmmZLEHuh@J@@`@@\\nfgAQ@@BT@dsJ}kQ`iFmTuP@T@@@\\nfgApB@LLx@HRevUUpPTcViYj@H@@@\\nfha@B@@IbURjjjmUUUUT@@\\nfha@R@HHehBYddbRRbbSUUULuT@@\\nfha@R@HHpPG`eUjjjjuUUUU@@@\\nfha@b@HR@fYIHddhdbeUUSUU@@@\\nfhaPq@BA`cAg^@DVBLddNbbbjdVjjje`@@\\nfha`@@@IJjjjjuUUUUP@@\\nfheA@@@YEEDhmEhbpTmFmxKPI@TAB@@@\\nfhe`@@@YHhhhdeEbRdcZ|xM@@@@A@@@@\\nfhi@B@@QFQQQJGQSILyxLAAU@@@@@\\nfhi@B`@QAHadPzHCDYEEELUDeCpUoPQA@DP@@@\\nfhi@`@@ArJIKJQPiZcG^`@j`@`@@\\nfhi@`@@HR[fyYwU[pVjB@@@@@@\\nfhi@`@@^RYvUm]djsfj@@@h@@@\\nfhiA`@@H|dwMkZ{IUgMT@@AP@@@\\nfhiAc@HHDApHxT\\\\DjUgf{zBuZj`bHj`@@\\nfhiIP@DDhpDc^BdwJ|lzsfkMMMUUU@@@\\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\\nfhiP`@DZAyIgVYW^VkNZjdHBh@@\\nfhiPb@OA``@QddabbRRvRkF\\\\m@@@E@@@\\nfhiPp@DX@IQoARYeYv}YsUfjffjj`@@\\nfhiQ@@AJAdTTTTTJtPeVBtuTttt@@\\nfhiQ@@INAdTTTbRarrk^BtEP@@@@@\\nfhiQB@BJd@HrJJIKPjII`oA``ah@@@@\\nfhiQP@DX@IW`yEEDeDdbdsakMUMMUU@@@\\nfhiQR@IV`Sa``dLbRbTQbbvXIwjjjjYf`@@\\nfhiQR@JLIIW``kDfYu[UV\\\\MZejfjjh@@\\nfhiQR@LVXhw``BLdTVbRbbqqRVjYjjZj`@@\\nfhiQ`@EZ@JVQQQQQIEYLTYsT`tDU@@@\\nfhiQ`@HHAIvQJJQJIHqBdYsUUUUUP@@\\nfhi`P@D@ExJSLrkoqFZluPLDSP@@\\nfhi`Q@@pP{p@`pQddabTVrTgIJtmADEKP@@\\nfhi``@B@PdwWLjn[s`mU@@@@@@@\\nfhi``@N@PdrkLjn[s`mUTEAD@@@\\nfhia`@D@HkHheDdhiTiF|EjBA`@@@@\\nfhia`@F@ykIEDdUEDejLmzjj``b`@@\\nfhiab@LRMx@PeLwN}obfkUU@aET@@@\\nfhihB@NJtXHHcHhdlhhiDzLMz@BijjD@@\\nfhihbBDBtYw``bGRGlbbRrTTRLhpuh@JijX`PT`\\nfhipR@BTYIW``dDfY][UV\\\\MZejfjjh@@\\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXiVH@@\\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXjVH@@\\nfhip`@DDh@VQQJIIFIJBd{sTuL@E@@@\\nfhipp@DXH@Rc^BdsJsmzsfkMUMMUU@@@\\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\\nfhiq`@DDTA`TfYg]m^B|EjiZjjh@@\\nfhq@R@HHehBYddbRRbbSRcUUTsUR@@\\nfhqAb@AV\\\\BHRYV}Umhr@Bjij@@@\\nfhqQ@@DT@drlsLjXKUAQEP@@@\\nfhqQa@EVEHpHc`QdTRVTaTrUFP@RtuP@@\\nfhqQa@EVEHpHc`QdTRVTaTreFP@RtuP@@\\nfhqXB@J\\\\dZpPAFRIJIJJqIBeUSMMUpHJ`\\nfhq`P@L@PkRSJkLn}oMUPLDH@@\\nfhq`R@LPQhp@cIIBhdeDTeVVhHFJP@@\\nfhq`c@BN|BlEVJkLbbbfbUbbYJBBbjZ@@@\\nfhqa`@J@QqIenvyepVjj`H`@@\\nfhqa`@M@DYIfUoWigHBBjjh@@\\nfhyA@`A@qBXglPNHdsNjjjsdeV]A@U@E@@@@\\nfhyA`@@H}dTRbTTTUQFJ]xKTuUMST@@\\nfhyH@@@XxkIEDeDehTjBYspP`Xj@@`@@\\nfhyHB@L\\\\uX@QdbbRbbRRhmFmxMAD@T@H@@\\nfhy``@D@TdsLrj\\x7FQaoNBuP@`@P@@@\\nfhyh@@@XdhvRJJJYQIWTyIQkMSULuUP@@\\nfhyh@@@XhrRTsvzrmNBexHPPu@@P@@\\nfhyq@@DTtAIemU[TTmF|Ej@B`@H@@\\nfle@`@@HrJZQEJIJYJshiZjj@BjH@@\\nfle@`@@VRfYU_uTVeFh@@@jk@@@\\nfleA@@@ILr{LjnzHTmUT@@@@@@\\nfleA@@@YEEMDleHiJJQoM@PUUUD@@\\nfleAC@N@bERBYCHhheDlUDefRCFBAbX@H@PU@\\nfleAP@@HMEJSKLjt\\x7FJ|xKTCAUBq@@@\\nfleA`@@HXdvmrnrncQRuS@A@@@@@\\nfleA`@@QSdTTTRRTqfdcZ\\\\t@@AEL@@@\\nfleAp@@XDkSdyHhheDeLUmRPXuUUTDAP@@\\nfleH@@@XIsIEEDbeMMDjBbfVjfhBA@HPbP\\nfleHP@DTuDC@irJIJHqZIJJgOQZijjjYh@@\\nfleHb@LBdfB@AFRREQQIIZIZ][ru@@@EP@@@\\nfleI`BHDihBEPeGYEMDhULeDdsdTmMUMP@H@@\\nfleIb@LBLFBH`BLddJbbRRvVtzwej@@@J`@@\\nfleIb@LB\\\\fBK@BLddJbbRTVVuypUj@@HB`@@\\nfleIb@LB}FB@`BLddJbbRRrVtzwej@@@J`@@\\nfleP@@@PReevYU]tPijjh@@@@@@\\nflePB@K^AbILklrj}Qc`p@TaAE@B@h\\nfleP`@DA@eIVUue]^B]yX@J@BT@@@\\nfleQ@@DLAdTTTTtRbTI`~RuUATQQ@@@\\nfleQ@@DR@dsK[JsioARuUTEDQ@@@\\nfleQA@CQDBHUDILrl{ljsdTpDEUUJd@@\\nfle``@G@edbbTRbbNv`mV}PPE@QT@@@\\nfle`a@BQRBHEDYEEDeMCDdXrSoPPT@PS@@@\\nflea@@E@RfVYUV\\\\tWIjh@`B`@@@\\nfleaR@LPQYw`AFRRFJJYIQW\\\\dXJuPLDqT@@@\\nflehPBDX}EHAJCFT}dTTRTRRJRsNFluTtuUKP@@\\nflepa@LRmA@@`PQddaTTRRVLfgFlmPREETH@@\\nflepb@BZSIPHaIf]V_eV\\\\bfB@ijjh`@@\\nfleqa@EV\\\\JQ`QG@cHhdliBieDjLbf@BVfjh`@@\\nfli@q@HHpxLPAG`cIICdddddiEjjjje`@@\\nfli`@@@IJjjjjkUUTuUTBDd\\nflmA@@@ILkZvmsQdeV\\\\EL@EUUUQT@@\\nflmP@@@PRfYV{U_CAZ]DJYji@@@F@@@\\nflmP@@@PRfYV{U_CAZ]DJYjj@@@F@@@\\nflmP@@@PRfYen]|cIF]DJYj```@E@@@\\nflmP@@@PrQQQQJZKIDcIV]DJYj``H@F@@@\\nflmP@@@TRfYmUo\\\\eEVMzJYf`h@@J@@@\\nflmP@@@XRfYYmU\\x7FCAF]DJVjX@`@J@@@\\nflma@@@`rJIJYRIIIFcIF\\\\GtX@Jjjjbh@@\\nflma@@I@rJJIQZEJYI`iJlzJV`b@@@H@@@\\nflmp@@@PheLr|vj~JBtzHTsUR@@@L@@@\\nflmpB@ARTBHRYWYUUVcEZlzJX@Iij@B@@@\\nflu@b@HiADILrljm|sfoVC@PUUULT@@\\nfluA@@@IRlkjtrRdeFmUA@UUUD@@\\nfluAP@@HeEJSKLrorlyiuoMPA@@UP@@@\\nfluAP@@\\\\dZJSLlsr{lxjtTm@qEETq@@@\\nfluHR@DTyKShi@DILlk|lzs`iV}@PUUUTL@@\\nfluHR@IV|fANJ@DIJrsmrnpSoQSUUUTBAP@@\\nfluH`@DXTDAdfYfYu_Yit_AZj`eAbb@@\\nfluHb@LLxxLPABTnrjkmxHJQkTlu@EMP@@@\\nfluPB@AIADYEEDdUEDhlsc`qS@PL@@@@BGH\\nfluPB@AJADYEDeMDeELcSfgQS@DMPT@P@@\\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfZjf@@\\nfluPP@DVApt\\\\bbTTtabbJhJs`iZfZiifi@@\\nfluPQ@N^YirPA@`cIEDhh\\\\ihmjByHLZjZiijZ`@@\\nfluP`@DX@qIeVyeUrT]DJVjZ@@@H@@@\\nfluP`@NQ@EIfVVWV~Je[rV`h@`FH@@@\\nfluQ@@DJAdTTTTTRTQsEVbEKU@C@PD@@@\\nfluQ@@LT@eLw\\\\jmvJF|zMLp@@DT@@@\\nfluQ@@LT@eLw\\\\jonJF|xMLp@@AT@@@\\nfluQ@@LTAdbbffbbTRNJVbEMLp@PPD@@@\\nfluQP@BBAIWhyEEEDhdbddpQgQRtpSAEUD@@\\nfluQ`@DQ@KrSLrkssDYiwhmTC@qSQ@@@\\nfluQ`@DTAjvQQJQJVJ[ILDYtTmUUSL@P@@@\\nflu``@O@HdsNkKN{NF}ELDAUPPA@@@\\nflu`a@NZlBHHDILro\\\\wjpQgQSUUULpA@@@\\nflu`b@AQRBHRYVvuvZcARMZ@B`@jX`@@\\nflu`b@LQR@HRf[eU\\x7F[EEVLzf@@@JZ@@@\\nflu`p@E@EJwhyEEEEDdTddqQgQRuHMAEUD@@\\nflua`@@`PYIn[VuUYJlzJVj@Bj@@@@@\\nfluhP@LF]EHIJudbbbbRTUVQJV\\\\FMUUU@`U@@@\\nfluib@DXXJQhiADYEDeEeCDdeSdeN}@DUUUTL@@\\nflup@@@JLeLlj||}AZ]EHP@PTUPP@@\\nflup@@@PIdbTVbbbRQNBVCzLuP@P@R@@@\\nflup@@@PIdbTVbbbRQfBVCzLuP@P@R@@@\\nflup@@@PIdbTVbbbTRNBVbELuP@PPB@@@\\nflupB@ARtBHRYV{WfVgEZbf@HZhB@P@@\\nflupB@ARtBHRYWYWfVcEZbf@BZhB@P@@\\nflupB@ARtBPRYWYWfVcEZbf@BZhB@P@@\\nflupB@NBtBHRYeg_fUdeZbfBAbhB@P@@\\nfly@R@HHpPG`eUjrjkm`mUPTEE@@@\\nflyIPAHDTXBMV]BT\\\\jW]dTtTVRbfaSAMSUSMUH@@\\nflyQP@BI@`uhyEMDeEEDkhkSUUUMLt@@\\nflyQ`@D^@jrSOJzmkBdu@AUUT@@@\\nflyQ`@D^@jrS[JzmkBdu@AUUT@@@\\nflyaP@B@QjJTfvUfW^\\\\Ejj`XHX@@\\nflya`@M@EGIEDdhbdeD^JhHJJjj@@@\\nflyaa@KRtX@PkprQSQHiRYIS`j@`ijj`@@\\nflypqBE^CAFNBdCpixRyTyIIXiEXdhX{sUST@EP@@\\nflyqP@DDTA`XiRYf]vug`fjejjfh@@\\nflyqP@DDTAchiRYf]wU[`fjejjih@@\\nflyyB@J\\\\dZwhi@DYHdhdhkDhdJUUMUMUjBFd\\nfoA@C@@IdHaDQddabbRRrkF]U@@@@@@@\\nfoA@P@@HtYIe[UUhrRfi@Bj`@@\\nfoA@`@@HR[e]e^Blyh@H@@@@\\nfoA@`@@HR[fV]qZlyhH@@@@@\\nfoA@`@@\\\\RVUoeVBly`BH@@@@\\nfoAHB@L\\\\TX@QdbbRbRRheZMPQDUP`@@\\nfoAIB@HXHK`@aJV~vUqRsjYf`@`@@\\nfoAPP@DTAsUlbbTTTlTXHsfjfifh@@\\nfoAP`@BZ@aInvYWejsfjiB@`@@\\nfoAP`@DX@qIeVyWIRsfjZB@`@@\\nfoAP`@DXAsHhhddXdbLlyjih@H@@\\nfoAPa@LDlx@P`HRYYeUuVLyjjjjj@@\\nfoAQPBHF@aVgPeGIMrms\\x7FIFlt@PuI@@@\\nfoA`P@D@DZrSLrkrQfgMTC@q@@@\\nfoA``@D@edTTTbtjQNV\\\\uUR@D@@@\\nfoA``@L@QdTVbbbblmV\\\\u@A@@@@@\\nfoA`a@NRTBH]DYEEDhid\\\\pQkPD@pD@@@\\nfoAh@@@TYIVRJJKIFILxJSTsUUR@@\\nfoAh`@JBUYpBILoLkleFmUU@`T@@@\\nfoAi@@HDhrPLbbbbjbRxJsjiejjh@@\\nfoAq@@DD\\\\AIeUyWhpufjZ@B`@@\\nfoAq@DLTtCDiS\\\\kN\\x7FAV]PD@P@@@@\\nfoAqB@JLDPDQdTTTtlRWAV]RuT@B@@@\\nfoAqB@JLtPFHdsM|klEYuKTa@P@@\\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@@\\nfoAqb@NZ]ab`ABTsoL\\x7FbakUUULmP@@\\nfoQ`@@@ILkZjmFRUYt@@@@@@@@\\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@@\\ngBQ@@eLUT@@\\ngC`@Die@@\\ngC`HAbIMT@@\\ngC`LADJPt`duP@\\ngC`LAbJPt`duP@\\ngC`LAbKDvHduP@\\ngC``@dfZ@@\\ngC``Adej@@\\ngCa@@dkH@\\ngCa@@dmP@\\ngCa@@dsP@\\ngCa@@duP@\\ngCa@@eMH@\\ngCaHH@bNt@@\\ngCahHlHRNj@@\\ngCb@AEdij@@\\ngCd@ADij@@\\ngCd@ADkZ@@\\ngCd@Adej@@\\ngCd@Adez@@\\ngCdDI`BHDRZh@\\ngCe@h`NdiKLIH\\ngCh@@doH@\\ngCh@@doP@\\ngCh@AGj@@\\ngChHD@aIU`@\\ngChHL@aIZ`@\\ngCh`DLdkP@\\ngCi@DDeV@@\\ngCi@DDeZ@@\\ngCi@DDfZ@@\\ngCi@LDej@@\\ngFp@DiTt@@@\\ngFp`@dfTujX@\\ngFp`@dfTujh@\\ngFp`ATiTvjh@\\ngFq`AbeJfuU@@\\ngFr@ACTi[FZd@\\ngFt@ADiTt@@@\\ngFt@ADi[FZd@\\ngFtHE`DILikUP@\\ngFu@E`drfmU@@\\ngFx@@eJfuU@@\\ngFx`DBdwFmU@@\\ngFy@DDfTujh@\\ngF|HLZ@aJYuif@@\\ngGP@DiVj`@\\ngGPBAHJPLaYAInih@\\ngGPBAHJPtaYCHiCUP@\\ngGPHAbIL}U@@\\ngGPP@cTfyi`@\\ngGP`@TfYj`@\\ngGP`@dfUjP@\\ngGP`@df]jP@\\ngGP`ATeVn`@\\ngGP`ATefj`@\\ngGP`ATiVj`@\\ngGP`Adinj`@\\ngGPhMPDIK]U@@\\ngGQ@@eMUT@@\\ngGQDB@jQBUkUP@\\ngGQDL@aAFQRFj`@\\ngGQHHGCIHcUP@\\ngGQLJIARFdLbdMU@@\\ngGQXHlZHROjj@@\\ngGQ`@ZdruT@@\\ngGQ`@bdvmT@@\\ngGQ`@bdwMT@@\\ngGQdLZ@j^BTuSP@\\ngGQhHl@cIIBmP@\\ngGT@ADiVj`@\\ngGT@ATeVj`@\\ngGT@ATeWjp@\\ngGTHE`DILluBR@\\ngGTHE`DIL{U@@\\ngGU@CPdrm^@@\\ngGU@E`drmT@@\\ngGU@E`dsmT@@\\ngGXHD@aIUVd@\\ngGX`DBdsMT@@\\ngGX`LDdsmT@@\\ngGX`hEIWIMsU@@\\ngGY@DDfUjP@\\ngGY@DDfYj`@\\ngGY@HDfVj`@\\ngGYHI`xISkTbB@\\ngGp`@TizHvjj@@\\ngJPB@fRHTQhbOj`@\\ngJPBAbJHt`YAIjj@@\\ngJPD@eRHczh@\\ngJPD@fRHczh@\\ngJPH@DIJuP@\\ngJPH@EIRuP@\\ngJPH@eQ}T@@\\ngJPHADILth@\\ngJPLADJPt`duU@@\\ngJPLAHJPt`duU@@\\ngJPXHlPDQzt@@\\ngJP`@TeVh@\\ngJP`@TeZh@\\ngJP`@TfZh@\\ngJP`@dfvd@\\ngJPhLQVIKTp@\\ngJPlLPDRPTaGth@\\ngJQ@@djsBJ@\\ngJQ@@dkU@@\\ngJQ@@dlu@@\\ngJQ@@dru@@\\ngJQ@@dsU@@\\ngJQ@@duU@@\\ngJQ`@bdvu@@\\ngJT@@TeZh@\\ngJT@@Te^h@\\ngJTHE`DILmP@\\ngJT`E`TfVh@\\ngJU@H`dlu@@\\ngJX@@dkU@@\\ngJX@@dkt`@\\ngJX@@dku@@\\ngJX@@dms@@\\ngJXDBLQQBS]V@@\\ngJXDBLQXbS]V@@\\ngJX`DBdru@@\\ngJY@BDeZh@\\ngJY@BDfZh@\\ngJY@DDefh@\\ngJY@DDfVh@\\ngJY@DDfvd@\\ngJYHC`DIKTp@\\ngKP`@Tixjj@@\\ngKP`Adi\\\\Zj@@\\ngKQ@@eKcRp@\\ngKQ@@eKcUP@\\ngKQ@@eOEUP@\\ngKT@ADi\\\\Yi@@\\ngKT@Adi\\\\Vf@@\\ngKX@@eKcUP@\\ngKY@HDi\\\\ZV@@\\ngNpJAbJHLaYArBS]UU@@\\ngNpP`jusyImfi`@\\ngNpXHlPDYIHTmT@@\\ngNp`@dfUZf@@\\ngNp`@dfuZj@@\\ngNp`ATf^Zf@@\\ngNp`ATiUjj@@\\ngNplJqHJPtadTaeTp@\\ngNq@@dskUP@\\ngNq@@dssUP@\\ngNq@@eLuUP@\\ngNq@@eM]UP@\\ngNqTHmVDPhbU_MS@@\\ngNq`@bdvkUP@\\ngNq`AVeJmUP@\\ngNqhHl@cIICej`@\\ngNt@@Te[zj@@\\ngNtDLpDDHRevnl@\\ngNu@HPdjkUH@\\ngNu@H`dlkUP@\\ngNu@H`dl{UP@\\ngNxHD@aIUUfaM@\\ngNx`LDdskUP@\\ngNx`LDdssUP@\\ngNx`LFdjmUP@\\ngNxhMV@aI[ji`@\\ngNy@FDfWj[@@\\ngNy@LDeVjj@@\\ngNyhGE`DYIITmT@@\\ngN|@ADeJkUP``\\ngN|`HfJdlsTp@\\ngOp@DjWkB@@@\\ngOpH@DILkW@@@@\\ngOpHADILkW@@@@\\ngOp`@tigujj`@\\ngOp`AdeekZZP@\\ngOq@@drm[UT@@\\ngOq@@drm\\\\@@@@\\ngOq@@drm]UT@@\\ngOqHL@aIYZzfd@\\ngOq`@fdrikTl@@\\ngOq`@fdrikUL@@\\ngOq`AVeL~mUT@@\\ngOqhHl@cIIBjujh@\\ngOrHEcPDILl[MT`@\\ngOt@AdigkB@@@\\ngOtHE`DILjZuU@@\\ngOtHE`DILl[MT`@\\ngOt`E`tfUMZi`@\\ngOx@@drm\\\\@@@@\\ngOx@@drm]UT@@\\ngOxHHHaIeZzjh@\\ngOx`BDdwM[UT@@\\ngOx`DFdrikTl@@\\ngOx`FDdwM[UT@@\\ngOy@DDfYKZj`@\\ngOy@JDiWMjj`@';Trb.VE=false;\nTrb.YE='eOHBNZ`pge@\\neFDBcA@\\neFhHbayP\\ngFy@DDfXujhCAF|f@\\nfHcpAa@\\neMPBchLDnR\\neMBBHRZCAKd`\\neFJHbHpXI@\\ngCa@@dkHFBbyL\\neMJDbDf``\\neMHAIdLF^P\\ngJXHD@aIUj@pHVOI@\\ngGY@BDeVj`LJHm^P`\\neMPBcTH\\ngCd@ADkj@pTWDL\\ndeTH`ABHRVUunh@J@B\\ndidL@@SdfU{aZjj@H\\ndiDD@@QIeuZjh@pkJ[ayA@\\ngOy@HDfUk`@@H\\ngJ\\\\@ADe\\\\u@XKGd`\\ndeV@@@Rffeijjj`CClJfxYy@@\\ndeVH`NdLQIe]ZZ@Bd@LFALJny@`\\ngOx@@drm\\\\@@A`Qb~IT\\ngF|@AbeJfuU@P\\ndmN@@@rJJIQEneX@@@@B\\ndifH@BAIfuxV`@@C@j[ayF@\\ngOx@@drm\\\\@@A`PZ~IX\\ndaF@@@Rfu[j@@@LJSBinHG@\\ndeU@@@yJUuRh@Jh@LNaLIagd\\\\\\ngNxLL@aAABDfVZj@`\\ngGPB@DHHpQPaIUZdB\\ngGY@BDf^j`LBHmqF`\\ndazH@LAIUUjj@LJPj[nIF@\\neMBCDRZCAKd`\\ngGQHJLQIUjdB\\ndefD@B@TfUvZjf@H\\neFA@HoBJFD\\\\h\\ndayD@DpNRYWZj`C@lInxbT\\ngFt@AdiTvjhC@qF|Pp\\ngOtHLPDYHhckSM@XXI|a@\\ngNqBLIAREdGHIMmUTA@\\neMXIDfP`\\ngJT@ADiVhPT\\ngGY@JDeVj`LJHl^R`\\ngCi@DDeZ@pTwH`\\ngNx@@eJmUPFCDVKyJ\\ngNxDLHaqBRjuU@P\\ngGP@DjVj`LKEc^P@\\ngNx`LFdjmUPFCDQkyL\\nfHbpAa@\\ndidHPBBHFHRYgVzB@`@`\\ndaD@P@bNbDfUzZ@B@B\\ndaD@`@bDfUjZ@B@CB`SJ{dL\\ngCe@E`dsPFBV@\\ngOy@FDiguie`LMc^IL\\ndaDh@DInAIf]nZiX@`\\ndigH`LH^@HRf_ljfYh@ppBkbHH\\ndaD@`@QDeeVz`@@B\\ngCahHlHRNtA@\\ngOxhMDOAJmZvjhC@xu|`@\\ndaED`LJDCpRjw[fjj@LLinxfD\\ndcMDPLzfBHKpRUZvYvjZjh@`\\ndeT@`@bLbdTJPsU@@@D\\ndcNH@DAIee^eVhHB@CCbine]yB@\\ngJX`DBdru@XKGdP\\ndif``DqnDHaIeYih@J@B\\ngOx@@drm\\\\@@A`Pm^Hl\\ngCa`@ldsPFBV@\\ngNqhHl@cIICej`LD[rL\\ngO|HLV@aJY}ZYhB\\ngF}@LZDigVfXB\\ndaE@@@aJyUnh@@@pXLJf{dP\\ndmN@@@RYVuiiV@@@@@`\\ngFx@@eJfuT`XEXwbD@\\ngFt@ADiWFZdCCPwdP\\ngGPhMQDIJmU@P\\ngNqHLHaIYzj`H\\ngNx`JBdr}UPFCDVKyJ\\ndaF@`LBHRVU[j@@@H\\ngGX`HJeZuTA`Uc^R@\\nfHfpA@\\ngOy@FDfUkZj`LBl[rL\\ngGQ@@dluTA`Xm^HD\\ndaz@@@Revjj`CAdpj[nHD@\\ndiTD@@yJ]VaNFjjj@H\\ndmLL@@iTie]|kahHBh@LJPfE^QH\\ngOu@DPdrykURA`l~Q@\\ndiT`@@rnRfUjEnBA``B\\nfHgHA@\\ndid@@DjU^nBBD@LFaLiaxa\\\\\\neFACr`bLD\\ndcl`@@`nReeWZY]@``@@B\\ndid@`@bDfYUn`HD@LFCBiny@`\\ndmv@`EBHrJJIHin`HFpHy`\\ngOq@@eL~mLlAal[qI`\\ndeUH@DpDf^UFVh@@@pYLinGdR\\ndeVH@IAJYW~F``H@LFSBinyD`\\ndeV`@@rfyJWUlIifjBJh\\ndig@@@aDiyWaZ@@B@h\\ndeWH@DJPRY[TYZ`@@B\\neMBBHRZCAGe@\\ngNy@FDfUZk@pRwIP\\ndiFL@LANRYufjf@H\\ngGU@E`dkMTAad[rP\\ndayH`Dr@|Djyfjh@`\\ngNtDLpDHHR[UjhB\\ngJXDL@aABS[TA``nKD\\nfHe`Aa@\\ngJQ@@drt`XI[dH\\ndid@@DjU^nBBD@LNaLJfGd\\\\\\ndifH@FAIYU[fZj`CBlJnGdP\\ngJ]@HbDfZdB\\ndie@@@EJf[XZjj`CChSBiny@`\\ndk^@@@RYWYVftx@H@@@H\\neFA@H`bLFE\\\\`\\ndeTH@@RYWZf`@j@CC`SBhYyG@\\ngOu@JpeJymUTA@\\ndcN`@@pjYJYenk`Hbj@B\\ndmu@@@QIUYVUZh@@@pdDpfxYWdP\\ndmvH@NAIfUTUZBB@@p[BiaWdR\\ndkmH@NtDfYU_EZ``b`@`\\ndkmH@JTDeVVutvjh@@@`\\ndieH@DHLbbbaIjZjPB\\nfHaXA@\\nfHbHAa@\\nfHdXA@\\nfoA@R@HHpx@QddebRfRpiFlm@@@P@A@\\nf`i@@@LdbbRRlRSI\\\\D{qAHT@D@@P\\ngNq`@VdsMUPFCDQkyL\\nflmA@@@YEEHdcLdddSdmV]EKUUSU@E@@D\\nffsA`@@YkdTTbRLrTrVRIrRkNbejjjj@Bfh@B\\ndaE@@@yIe^f`@`@pILJnHG@\\nfeg@`@@SrJIJYYQQJQZqYTYzH\\\\uUKMUUUUUPDLiVEPPQbgARtYw`qSdmV}gr@p\\ndcMH@HdDf[W[ai@Bh@H\\nfc\\x7F@H@@JbdoU{RYfYU_uyYubc^\\\\D\\\\vi@H@BjjjhH@H\\nfb}A@@@YEDeMDhTihjLUiwhyZZjjjjjh@LKHqPTeZMYpTyxcdP\\nfnk@P@@FbuIefYZWz^`mA|gMVfjjjjjjj@B\\ndmLH@@rJJIQEneX@@@@CA`iae^Ig@\\nfleA@@@YDddhiiDdYipTtsUUUSTABHe@\\ndk|@@LdbbbRQKauS`@`@`@H\\nfjc@`@@ERYYefUez\\\\UyvPiZZjjjjjj@CCrLTXJVcV]zJ\\\\ey@H\\nfjc@`@@JrJIJZJJUJZJcMF|EIVfjjjjjj`@`\\nffsA`@@VkdTRTtRabrTRhqQoARUijjijjjj@B\\ndie@@@aJyW[f@B@CBlJfGdP\\ndeT`@@`YRnUunX@I@B\\ndmL@@DjYeVdU@@`@@H\\nfgA`@@@YIEDeDUfJxHujjhHB`@LNPQbgIZxQbcV@\\nf`ia@@E@Rfume]gEF]z`@jjhh@H\\nfoQ`@@@YIEDeDTdpWEF]UUAAE@@P\\ndcnH@EAJ[UU[ev`@jb@LFPje]xfB\\ndcnH@MAJ[UU[ev`@jb@LFPjE]xfR\\nfjc@`@@ErJIJZIPiSQJcEZ]zNVfjjjjjj`@p\\\\cENBdkQkNBgODQJ\\nfb}A@@@ILk[Kk\\\\tyKSoQsUSUMUUUP@XN`cEFBdhugASgb@Q@\\nfb}@@@LdbbTbrNTtWEBt{t\\\\sMUUUUUT@D\\ndg\\\\L@@{\\\\dTrTRtKCPAET`A@\\ngOtHLPDISKWSU@XDJodH\\ndknH@ECHhheLcFz@`jh@H\\ngJP@DknhCCSGdP\\ndcLh@LKaCIELeBhwT@ET@D\\ndmv@@@RfUYyZBB`@LAALInF^IR`\\nfgA@@@DjYU_VByHu`@@@@@@LIXISdeZM[dD@\\ndidD@@yIfVXXBH@C@`[axfT\\ngCa@@dmHFBVxa@\\ndaxL`HS@\\\\DjeZjh@`\\ngNphH`xITkUTA@\\ndaGH@Dp`RYeifjf@H\\ndg\\x7FH`LKU@HrQQSIJHyTgSA@qP@P\\ndev@@@RfU\\x7FJxZA@h@LFAB[iyE@\\ngOqHJ@aJUcZZhB\\ndaF@@@Rfu[j@@@LFALJfyG@\\ndieH@NDDfUvf`@d@H\\ngFx`LDdrfmU@XHwdp\\ngNuhJxl@cIIJej`H\\ndifD@JAdiWTjjjj@H\\ngGT`DQTfuiaMXIWdp\\nffcAp@@DEiNZyEEEMDihbdiVBMzIViBb@@hh@@pTQVcV]ENZ`\\ndo^H@DAIeV}YZfifdLIFU`\\ndg\\x7FH@LiPRUYYWESnj@@@@@`\\nfoAQ`@DD@irSLwN~QakMUPHE@@XLpJVcNx`g@\\ndg}D@DHERYfywIcmjjA@`@p[AgSobEp\\ndieD@DHNRY[Rijih@pSFybDH\\ndg}D`Ad{BHRYVuUiev@BffH@pXDrmob\\\\H\\nfoAPb@ARlxDPdrmkKtXht@EMSD@D\\ndclD@@[HhheBeSKkTp@P@P\\ndcNH@MAJ[WY[j@Bg@B\\nf`qA@@@ISZzljscoT@Dp@@B@kARLDhsQkN}q@i@\\nfbmpB@NV|@HRfYe]WnirQmN@@@@bj`@@pt@cAJLxLTy@\\ndg}L@LhDWHheDbhdSG[UTtuHQu@\\ndmLH@@rJJIQEneX@@@@CC`rfFUyG@\\nfbmPb@FRTX@QdbdTjRtrbRps`dyjjjYh@J@@pLAAJ\\\\e[pXisrF@\\ngJ]@EbDeVdCBKba@\\ndcl@@DjYU_egX@@@@@pELJae]xc\\\\\\ngJP@Di[xCBGdp\\nffsA`@@IkdbfbTTTTRtwxkW`ecfjjBjHjJb@B\\ngJYhMDPDYIBm@P\\ndmM@@@iJYWWJxYB@j@CBbiiWdH\\ndaD@@DjYvxH`@CCLJnXc\\\\\\ndg^@@@rQQQIIRcmAPTT@D\\ndiV@`J@HRfU|kahDB@CB`PfGd\\\\\\ndmL``LXU@HRfvUxYV`HFH@pHDj^Ph\\ngC`DADJHRZhCCBKdp\\ndmtH@@RYWYih@Jh@LAALJnE^QH\\ndmtH@@RYWUih@Jh@LNALJiWb\\\\H\\ndeUD@DhFrJIJHusUMT@XDf]OHD\\ndg}@@@aJVYU^Svv`@@@@`K@Z[ae]ObEX\\ndmwH@DePRUe]xV`@d@H\\ndcO@@@b\\\\dtTRJgBpDEP@P\\ndaD@@DjYvxH`@C@linxbD\\ngJX`BDdru@XS\\\\a@\\ndie@@@aJyW[f@B@C@lJfxdB\\ndid@`@bDfYUn`HH@LFCBiayG@\\nfoAPB@NBADILkjrmFV]@AL@@@ar`\\ndeUH@BxLbbbRKCA@d@D\\ndk}@@@iJUmUR[atpBJ@@@CChPiWSyE@\\ndeUD`LjD@HrREQICJt@@@XUc\\\\L|`@\\ndmuD`IVD@HrRFIKKaV@BP@`\\ndmtD`ATIAIe]Vf`@jP@pILJnIt`\\ngGP`@deUjpLI^JX\\ndmvD@LADfvUYUjjj`B\\ndcND`MEPdDfUuZf`@jX@H\\nfjc@`@@HRUe[Vun^Bt[pTeZ@Bjjjhj@CBqJ\\\\dkQkN}GI^H`d\\nfnk@`@@HRYVum[VydjshiJuj`@jjjjJ`@`\\nfa{@P@@HkwHdhdididihdUpVc^BdkP@UUUUTeP@P\\nfjcAB@C@bLbbbRdRbLJbXJUoQRVejjfjjjh@LG@pQ`iJuYpXyKrBP\\nfb}A@@@ILk[Kk\\\\tyKSoQruSUUUUUP@P\\nfjcP@@@FrQQQQII[FIJgIVt{IP@@@``@@@@`\\ndaD@@DjUZxHH@CAL[ePaUp\\ndcNH`BpHaI[fuWZZ`@@B\\ndcND@DCdefV]]Z`b@@H\\ngJQDD@b^BRkTA@\\ndg|@P@bEbLbbbTRRKR]pP@P@@D\\nfoA@A@@QChaIe]YWhpuh@J@B@@LE@Q`eIJtYwH\\\\@\\nfoA@@@DjYUgWfiF`XJbh`@`\\ndeTL`HS@BLddlRPrm@@@FETwCOHp\\ngOx@@eLmXD@A`Uc^Q`\\ndclD@@EJY}erevfVfiBJX\\ndcNH@DAIge]FVh@I@B\\nfoA`@@@ILkjrmFV]@AL@@@arptcAJ\\\\DkQkNy@@\\nf`qqa@FF}Sf`RBICHiMEMCEmPUgUUUSKT@D\\ndg}@@@aJVYU^Svv`@@@@`K@Rine]obBX\\ndg}@@@aJyeg_eNvB@@@@B\\ndmND@LAdige\\\\jUifZi@H\\ngKP@H~Jj`LEcqQ@\\ndidD@@QIenifjj`B\\ndklD@@QIVVU}MjlH@@H\\nf`q@`@@HRUfYU_Sk^Zh@@@@@H\\ndeVD@BADfVuFVh@@@`\\ndmwH@HePRYm]xZ`@d@H\\nf`qP@@@^RYWUe^cKN`@f@B@DNT\\nffsA`@@VkdTRTtRabrTRhqQoARUiZjijjjj@CArLTxJRcN}GIZ|`d\\ngNy`DBtf]Zi@`\\ndeV@pJBPRPrPrJPqICMT@@@^DwCH\\nfaw@@@LdbbbbbbeeRRwMB]Jq`y[Wh@@@@@@@@@@A@\\ndmN@@@rQQJJFfEP@@`@B\\ndmN@@@RfV_kad@@B@@`\\ndco@@@g\\\\dTRbtM\\\\J`@AB@A@\\nfdep@@@PheL}sJkxiXOhsUP@@@`@D\\nfhiP@@@ARVUue]Yrsn@B`@l@@`\\ndcn@@@RfV]zXU@@BD@CCdJnFUyF`\\nfbmP@@@IRfV]}e]hpR`q@@BF@B`@PUP\\ndeWH@DJ`RYYTfZij`B\\nfb}@`@@YRYVum[ehrRkNBejfjjjjj`@`\\ndk~H@NAJUmmRkatzVd@J@B\\ndklD@@IIf]vVzB@jh@LICBkagSyB`\\nfbuA@@@ISZ{Ll{lxgM@AMTD@@HBh\\ndaF@@@RYe[hB@@LBpj[bAp\\ndco@@@bdigyWJWYj`@P@pYLKawbRh\\ndaGD@Bi`QInUnZZX@`\\ndkmD@DpJRY{e]]Zf@B@B\\ndaDH@@RZW[jii@H\\ndazL`FaL@HrRRiKUPA`VEW\\\\a`\\ndaG@@@[diWRh@I@C@hSByG@\\ndigH`LJn@HRf_ljfYh@ppBGdH\\ndmL@`@bLbbbTQ[iV@@@@@`\\ndeVD@DCdfV[hVjfh@piJXYyF@\\ndaDH@@RYe[hB@@LJCBinQp\\nfoAPR@JLIIS`UbSLzmnsakTmTuUP@X\\\\Ab`mV]rA`\\ndcmH@NDLbbbTVKCJm@dE@A@\\ndg~H@FAIfU{TYNz``@@@B\\ndklF@@sittieY_hZjjjh@pfBinF]ObHh\\ndcLH@@RfUWnf``R`@pyBinW^Id`\\ndo|H@@rQQIIZHkihHDjd@H\\ndo~L`MaL@HrRPjIIKISVhHHh@H\\ndg]LPElYLHc`cHhdliBiSP@Rtp@XLBXUKrK@\\ndcNH`LdHaIUe[EZh@b@B\\ndk|H@@RfYU_JGUN`@@B@@pxfzUt~PH\\ndklH`I@HRYeuin`HJj@B\\nfdyQR@FJtZwh`BLdTbbJTRlvF\\\\eUUULsU@AaHBLDiqQ`|aD\\ndmu@pNTIAICICHiCDeafj@B@CAJ[bBh\\ndkmHpNTpdDdLdLbdLRRrFZh@JP@`\\ndkoL`LhXPpBLdaTRbQeUhBBP@`\\nfdy`a@BRlBHcDYEEDehXhlfB|FBBFB@`@B\\nfb}A@@@YEDeMDhTihjLUiwhyZZjjjjjd@H\\ndco@@@rldTRTJU\\\\naA@@@A`Prn|qLX\\nf`qA@@@IMKMjoiuoUV@@@@@D\\nflm`@@@YHhhhhdhb]RRkFCzH@@@@@P@@D\\ndg\\\\L`AWPbDfUv{ZZ@Bij@B\\ndg|H`KBHRYWYWimN@B@B@@`\\ndaF@@@RYVih@H@LBSJ{b@p\\ndeTD@@QIVYQehB@@LBinGbQH\\ndeTD`NDHaIfVVfBA`@LJCJX^QH\\neMhDRZCAKd`\\ndeU@@@cIMDeBwL@E@A@\\ndaG@`D[`bDfUZZ@B@CA@sbEp\\ndcMDPDy]BHXHRYV}jz@Hi`@`\\ndmt@@DjYZVTHbh@CBdxYWfES@\\ndev@@@Re[TjFP@@@@LFaFxYyA@\\ngOpHADILkW@@@XHWaVK@\\ndmv@HBBHFPfPVPRYUzih@Jh@H\\nfhy@`@@\\\\RYee~uYrVoAZA``@H@@pI`uo\\\\YPTmNB\\ndk\\\\L@@{\\\\bbbTQr[iUhF@j@CALOaTpr\\nfoA@P@@\\\\ekHhheECEf\\\\TYhFHbh@B\\nfoA@P@@\\\\d[HhheELiVRUYhFHhh@CCFMNyabk@\\nfoA@P@@\\\\T[HhheDXef\\\\eihFBJh@B\\nfj}@P@@\\\\tEIfVWnU]YrQdeZA`hB`b@@H\\nfj}@P@@\\\\ueIfVWn]}YrQhiZA`hB@j@@H\\nfj}@P@@\\\\MeIfVWVu}YrVhiZA`bB@j@@H\\ndmL@@DjYUVGi@@@`@LFrnFUxbD\\ndclH@@RfumVy]h@@@@CCdpfE]yD`\\ndmMH@HxLbbbTQ[iV@@@@@`\\ndeVH@HCHiEBdLuP@@A@\\nfoA@b@HH@DYIHXeEhbkUgKPP@@@@P\\ngJU@LPdjt`XQ\\\\TH\\ndeUH@JDDinUzZBA@@`\\ndclD@@IJ]YWaIVj`@h@H\\ngNpXHlQxIUZuTAaGqF`\\ndiDB`HSBCpRjuVji@H\\nf`a`R@LPP{p@cIIBhddbhhruAADp@F@jLxJRm^yC@\\ndk]@`FD@aJY}e\\\\kSif`@`@`\\nfoA@B@@QBRsLjnjqgSP@@@@@P\\ndmtH`IBHRUe]xY`@hBH\\\\F@j[exdH\\nfhiAB@O@bDfYUg_QZlzdH@@J@DDL\\nfhi@`@@HRYyWVUEKpVh@J@@@@pebcNBMYwnHTD\\nfjm@P@@HceIge]YWVEKpVh@J@Bf@@H\\ndmt@@DkYV~Gh@J@B\\nfjm@h@@XDkSoQRWIEEDhdicDXZRcfjjjjjjj@CBLDDhs`iJtYw`irWdK@\\nfleab@OPQD@QddabbRRvrbkF\\\\m@@@EL@@XJhs`iJt[r^P\\\\\\nfbuQb@OA`aH@cIICEDdelehjqgKP@@ATp@A@\\ndkld`LWSa@BLddlRVRFUh@JP@`\\ndg}H`AfpbDfUmYZYS`@ijR@LJALh~Iv`\\neFJHSHp^I@\\ngOpH@fILkW@@@P\\ngJPhI`fIKTpD\\ndaE@@@aJyUnX@@@ppj{fQc@\\ndmvDPLa@BNdLddlTVeUhH@@LBqagdJ\\ndcnH@LCIEDUDeeKmLuUT@P\\ndaFD@LADfyVyjj`C@binyB@\\ndcnD@BCTfYVuiEX@@B@@`\\ngC`LADJPt`duPFDGI@\\neMACDXaIhH\\neMACD\\\\QIhH\\neMBBlRZCAKd`\\neFJHAHhP\\neM`AIdLF^P\\nfHbXAa@\\neMBCDRZCAGe@\\ngJQdEbOBRD_M@P\\ngChHHDQIj`H';Trb.ZE='fHbTA@\\nfH`pA@\\ngFp`@dfTujXCAZ|a@\\ngFx@@eJftu@XVKF|`@\\neO`BNZ``\\nfH`XA@\\nfHdpAa@\\ngNxHLHaIVjj`H\\neFJHbHpP\\neMABHXaIhH\\ngJXHD@aIYj@ppqyH\\ngCi@HDej@pRwDH\\ngCi@LDeZ@pTWI`\\ngCd@ADiZDE@\\ngOx@@drm\\\\@@A`plZp\\ngGX`LDdsmTA`m^P`\\ngCiHLaDIMLA@\\nfHapA@\\ndeTH@@RY[TYjp@@B\\ngCa@@dkHFBVyH\\ndeTD@@eIYWVy`@h@LFpjXYyD@\\ndeT@`@qDeVUFZX@@HR`\\ngJQhHl@cIHUhCBGd@\\ndifH@DAInUxV`@@CBdinGdD\\ndeV@@@Rge[aj@B@CChPjxYy@@\\ndeV@@@RgfTYj@`@CChRfxYy@@\\ndeVD@AADfVuFVijh@phj[iy@`\\ndeVD@ICDiieZZjjh@`\\ndaGH@DK`R[e[fiZ@LLQnyE@\\ngOr@Ajti]qZY`H\\ngGPhIPDIU{T`XXK\\\\a@\\ndid@`@qDeYWaf@@BH\\\\NABinGdP\\nfHa@A@\\ngNq`@jdvkSPf\\\\Ll~P`\\ndedB`LkiCDRV{njjh@`\\ndiGH@Dr`RY{fjj@H\\ngJY@BDfZhC@bK\\\\a@\\ngJY@BDfVhCAK\\\\a@\\ngGY@JDf]j`LLl^R`\\ngGY@BDfUj`LLm^P`\\ngJPH@DISUPFABqyH\\ngJX@@dlu@XZX|PP\\ngNxHF@aJZzjPH\\ndazD@LADeUffhHr`\\ngGT`EaTf]jPLDmrD\\ngCh`LDdsPFDWI`\\ngGX`JDdsmTA`l^R`\\ndmv@@@Rf~UeZj@@@LEBDpfxYT\\ngOx@@drm]UTAaqEcV\\ngOx@@drm\\\\@@A`Qc^IL\\ndmvL`BaL@HrRRjIJUVjjh@`\\neFA@HoBJD\\ndiFB@BAFEInuZjd@pILJnQp\\ndayH@DpDf]Vjh@pKBinHg@\\ngNuHLzHaIUji`H\\ngNt`E`tf]Zj@pJM_I`\\neMJD|Df`pYy@\\ngJPhLQxIRuPD\\ndaDL@@KdfYvyjV`CCLJnPp\\neMBBlRZCAGe@\\ngOq`AVeL~mUTA`Yb~Q@\\neMPBchLD^T\\ndaF@@@ReYJjjj@LNaLJf{d@\\ndaE@@@aJyUnX@@@`\\ngCe@E`dkPFBbyL\\ngCahHlGBNtA@\\ngC`@Die@ptVy@\\ngC`DAb[DRVhB\\ngCaHLLQIZ`LDEqS@\\ngGPBADZPLaYAIZjhB\\neMABHYAIhH\\ngJX@@dkT`XFKGd@\\ngJY@DDeZhCCSGbB@\\ngGT`CPdfuj`LLl^R`\\ngGX`DJdsmRA`enP`\\ngFq@@eMqUW@P\\ndkNF@BAIWSR[YVYjjfX@`\\ndeVDPL[`bB|DeYgFZjZh@`\\ndeVL`LxY@HRf][JjZV`cJ\\ngO|HEfHaIeZx@@B\\ndaxD@@QInuij@LBRf{dD\\ndaxD@@QImUijBLlBRf{bXP\\ndedB@@PYR[fyijXHqpQIxe\\\\\\nfH`TA@\\ndaxL`HS@BLddNRuR@P\\neFJHqHpP\\ndaxL`Lk`qDenzjh@pXDpj{bPp\\neFPBca@\\ngG]@EjDfUj`LEcqJ`\\ndedd@DpaCdfU{ZjZ@H\\ndmOH`LJQ@HRf^yriVfZZh@`\\ndaE@@@yIe^f`@`@piLJny@@\\ndevH`LX@aJWY\\\\HYiZZd@`\\ndaEH@DHDfURijZ`CCL[nP`\\ndaFH@HAIYUnh@@@pXHpj[d\\\\\\ngFt`CQdidviXB\\ngJPXHlPDQztAxlP\\ngJPDAbGDRUj`H\\ngNx@@eJmThFCbqky@\\neMA@HPaIXLD^T\\ngGYHLQDIJuU@P\\ngGP`ATf]j`LLl^R`\\ngFp`AdeoEjhCCHwd`\\ngOp`AdeekZZPLMB~R`\\ngF|@@ZeJxru@XYF|d@\\ngOy@FDiekjj`LKEc^Q`\\ngOx@@eJqmUTA`xlZ~P@\\ngOx@@eLvmUTA`xlZ~P@\\ngOxHBHaIeZzjhB\\ngKP@Di\\\\YZ@phbq@\\ndiDB`HSB@HrRPyIZj`CCBknHp`\\ngNq@@djmUPFEfM_DD\\ndcLL`HS@BLddjbRtjmP@P@P\\ngJPJAHR`Tai@rBSUTA@\\neMCArhabHzCCI@\\ngNy@BDf[Zj@pruxbp\\ngJY@DDfzhCCSGbB@\\ngNx`JDdskUPFDwLZp\\ndmVD@JADf^Uvjjh@`\\ngChHL@aIVPH\\ngNy`LETeUZZDs@\\ngNt`LPdfUZi@pexlp\\ndiEH@DpDfYUjj`C@bkaxfL\\ndidD@@EJ[W[j@B@CBdJfGdX\\ndmtH@@rJIJFRf`@j`@pxDrae^Pp\\ndaG@@@kdiVrX@a@B\\neMhDRUB\\ngOx`FDdrikUTA@\\ngJXHD@aIUZ@`\\ndcnL`LaA@HrRPjIKTrzmPHD@FEYtkh\\ngCi@LDeZ@pTwH`\\ngFq@@eNqUU@XZX|Rh\\ngKP@Di\\\\Vi@pLVOH@\\ndiVH@BAIfUInFjZi@H\\ngNqhHl@cIHUEj`LLZ~P@\\ndaxD@@QIe]ji@LBpf{dT\\ndiFL@J@aRY]Zjj@LABDpfx^QP\\ngNx@@eLmUPFEfM_DD\\ngNy@LDeUji@phQkxi`\\ngGX`BDdjmTA`m^JD\\ndazD@FCdfUVjx@`\\ngCd@AH}PFBVyH\\ngChHHGBOTA@\\ngC`DADZHRVhB\\ndeVB`BaLd@cIIBeDwKULpA@\\ngJT@@deVhCCCGbb@\\ngNu@E`drkUPFFM_Dl\\ngGXHJGAJijhC@qX|e@\\ndidH@@RYeVz@``@pXLJf{dB\\ndaEH`Dq`BDfUjyjfPC@`SNyE@\\ndieH`Dq`BDfUfnZii@H\\ngJPDADFHRYfaHp\\ndmuL@DpFEIeY~nZifh@pILe^Qp\\ndklL@@STfue]eVj@B`@pyL[ad~PP\\ndifH@HAIVUxY`@@bGA`Pjx^Pp\\ndid@p@bBbFbDfYoa`b@@H\\ndid`@@pjRfUjXBB`@pSaxbL\\ndcNH@DCHheEDbnmPT@@F@hUMproHt\\ndaz`@@SFyIeYjf@LJAL[nQP\\ndaG@`LK`BDimVz`@@B\\ndeT`@@pjrQQIFTpDEP@P\\ndid`@@pjrQQIFf@`h@LLKaxbL\\ngNy@JDeUjj@phVKxiP\\ndigD@DpP[HhdhZyjfd@pqLkdB\\ndmuH@DpDfWeYUj`@@CAlInF^Hb`\\nfH`PAa@\\nfHdHA@\\nfHchA@\\neFHBJFE@\\ndmLH@@RYVuiiV@@@@@phJxYybXh\\ndid@@DjY}nBHH@LJSBh^Qp\\nf`i@@@LdbbbTRVHeZ][uHAD@D@@XRhs`iJtZwLX]x\\nfhyA@@@ILklrstXYw`p@TaDA@@P\\nfdeA@@@ISZvmvkNJLFM@AUH@D@A@\\ngOu@HpeK^MKTAaKqY`\\nffsA`@@LudTTTeRdVTtLIps`ySeijjjZjjj@B\\ndklF@@XUttief_kjjjjh@`\\nfi{@h@@LDipTmzOHhhhhhbXdiidnBu[IV`fHbjjjh`@pmIVc^CENRmzObNU@\\ndayL@DpFyIgYjf@LLPnyF@\\nfb}A@@@ISZvmk\\\\lxkSoQsP@UUUUEP@XNQ`cARUhugASgdH`\\nffs``@L@QdTVbdRQfRfRxhu`qKUjjjjj@Bh@B\\nfnkA`@@HkdRTTbRLrTrVSIZMxNRmUUUU@AUP@D\\nfa{A@@@YEDeMDhTihdXjLUiwhyZZjjjjjjj@B\\ndaxH@@RYWjZPcKA`SBinIG@\\ndet@@DjYUX^d@@@@CAlJnF^Hc@\\ngF|LHjOC^A|DiTt@@B\\nfnk@`@@UrJIJZIPiSQHrcEZ]zNVfjjjjjZj@CCrLTxJRmFlxJ\\\\myBH\\nfc\\x7F@P@@E{OHhdiheBeMDhUEKQbmN}GKSUUUUUTsUT@D\\nfnk@@@LdbTTRbTRQNfiKak^cejjfjjjjj`@`\\ndmtL@@QTfyeQehBA@C@jXYxb\\\\\\ndklL@@PtfVV]WVhH`P@`\\ndeTD@@eJ[WVz`@h@LBRfgfXP`\\ndcLL@@{TimY]ah@bh@LJPaW^Id`\\ndcLH@@RYeZvz@`j`@pxBXYW^Q`\\nfoAPB@LD@DYHhdcEEEQagTuPDQ@@P\\ndeVH@DAIgeQej@@@LJSJX^It`\\ndeVH@IAJYW~F``H@LJPj[nId`\\ndk^@@@RfYU\\\\]Tzjjjj@LKBDpj[ae]L\\ndid@@DjYmaBH`@LBrnGbDp\\ngJX@@dmu@XKGdP\\ndg^L@D@[rJIJJIGZ[UAPD@D\\ndeVh@LKadDimY[j@B`@paNHL`\\neMPBcXLIyP\\ndcMH@ITDee]UnX@Jh@H\\ndg]D@DpCRYVuveVj@BX@H\\nfgA@@@DjYU_VByHu`@@@@@@H\\ndclL@@{TivY~DeZhHB`@`\\ndid@@LdbRQk``b@CAhPjX^Q`\\neMJH\\\\Df`pgd@\\ndeTD@@YIfUqehH@@LFJfxYyF@\\ndclH@@rQQRJJuJ{PUDB@FCES\\\\L|Q]@\\ndif@@@RYWZZ@BP@pXDpj{dB\\ndaF`@@pjYJYfn@b@@pPfyG@\\ndeV@@@RYV~f`@i@B\\ndeV@`BBHRYg]n``I@B\\ndmNH@NCHhheDVzU`@@@@LJCJe^Hp`\\ndcnD`HI`BDfYoVnWZfX@@@`\\ndmND@DCdfVUrjUZjZi@LFrfFUyB@\\ndeVH@HAIYWVz`@d@H\\ndaG@@@rdifvxH`@C@linyA@\\ndieDPLZD@HhHrREQKaVii@LBrnGd@\\ndk]L@LhDeIeoYR[SZjZZdHZ`\\ndmTJ`HSNd@cIICeMEjjh@`\\ndaxB@@rnRV{jj`CAhSBinHG@\\ndeeD@DHFR[eyiihHr`\\ndaxD@@QIgUjfBJlBpj{dL\\nfoQPB@F\\\\@DYHheBeLdRdeV]Th@@D@@P\\ndk^@@@RfYU\\\\]Tz@@@@@LECBinFUOdZ\\ndclD@@kHheCDdUKkSP@P@P\\ndeV@@@RV[TYzP@@C@j[axaR\\ndklHPBBPzPrJJKQEIa``bZ@bV\\ngGP@DiUjaAXEXwbD@\\ndmtH@@RYWUih@IhBN\\\\NALJiWb\\\\H\\ndk]L@LxDMIe]eRkSZjjjh@`\\ngN}@DVDfUZi@`\\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@p\\\\AFJ\\\\EIQk^bgODZB\\nffs@`@@URYVumfv^cIJmyIX@Jjjjjbh@H\\nfjc@`@@ErJJQIFYJSKXgIJlyNVjjjjjjj`@pC`eF\\\\EIVkN|FJ\\\\|`T\\ndg|@@DjU_eZx{BAH@@BJ\\\\MaBine]N~Q`\\neFJHSHpP\\ndiV@`J@HRfU|kahDB@CB`QnGdD\\nfhy`B@J@BDifW_e\\\\TDkpZA`R@B@DAVF`DYpTeFl{wHA@\\nfhy`B@N@BLdTTTRRVqirUmNh@`BBh@@pt@cARUhugAyCp\\ngNx`DJdssTpFBsyD\\nfgA`@@@ISLrotyHvk@@@@@@@P\\nfdy@@@LdbbRbVbJwMAc@pU@P@@ab`\\nf`q@`@@^RYWUe^cKN`@f@B@DNVB`HpRbmFm{bNB@\\ngGP@DiVV`iJpJqoDH\\ndeTH@@RYWVf`@j@CC`SBhYyG@\\nf`qAA@A@bOQBSJ{\\\\ktYYt@EP@P@A@\\ndif@@@RfU~F``@@pYLJf{b@H\\ngJQ@@dsU`XKGbD@\\ndeVD@LADfvUFVjjh@p{BinF^P`\\ndmtD@@QIV[VUZh@@@pZfxYWbQ`\\ndeT@`@bDfUuih@Jp@`\\ndid@@DkYWaz@@@LF`j[ayB@\\ngNx`LDdskUXD\\nfoA@@@DkfYU]UcNz`@@@@@`\\ngJX`DBdru@XS\\\\RH\\ndeVH@DAIgeQej@@@LJrfx^Hd`\\ndg~@@@RYfUWd}mh@@@@@pdBinFUwbGX\\ndid@@DjYmaBH`@LJpj[nPH\\ndmvD@EBdin]~F``I@CAdJfF^Ph\\ndetD@@eIYe~DYZjjh@`\\nfmoA`@@HWdTrTTtbRLrTfVrk^CdhymUUUUUUUUU@AauFBTYrRmFl{pXyKUoQsV\\nf`qAA@A@dORBSJ{\\\\ktYYt@EP@P@A`IFBTUhunHxH\\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@p\\\\cENBdkQk^CEOD@r\\nfb}A@@@YEDeMDhTihjLUiwhyjjjjjjih@L@``cAJ\\\\EIQkNBgOHQ@\\ndknL`LaE@HrRPzIJZ]Vh@b@CAlInd~Qh\\ndeUH@JdDin]xZB@`@pIBX^IT`\\ndg]L`LnDT@cIIChdieNkT@QP@P\\nfgAAB@H@BDjyeUrLd[Uf`@@B@@H\\nfgA@@@LdbbbTVKIBMjp@@@@@@D\\ndieD`JXaCDRYgvzejX@pHLi`\\ndmUL`LZDh@cIHULdeijh@p[FxYWd@\\ndeV@@@RfyWahBB@CBj[agf@a@\\ndcNH@DAIVYeEZ`Hb@B\\ndaF@@@Rfu[j@@@LJABinIg@\\ndo}D@LlMrIJJIIHiSjhHHh@H\\ndid@p@qBqAqDfYun``H@H\\ndcn@@@RieU~V]jB`b@C@\\\\JfxYWbIh\\nfoA``@I@PdwJ{J|EYsP@UUD@D\\ndeUH@AdDim][j@B`@pYLJfGdR\\ndid@@DjUZnBAH@LFaLkayC@\\nfoA@@@DjU][VgKNBAJ@@@PiXZ`cAJLdkQk\\\\`x\\ndid@@DjYUaBHP@LFSBiayG@\\nfoA@B@@QBSJzlkQegP@S@@@H\\\\lM@Q`eNBUhunP\\\\\\ndif@@@RYWZZ@BP@piLJnx`B\\nfoA`@@@ILkjrmFV]@AL@@@ar`\\ndeUD@DXIRYvTYZjV`B\\nfdyAb@HHpCpRkVYU_]Nmyj`@@B`@B\\nfhiA`@@Hddjrm|jIW`mPAD@@@A@\\nfhi``@L@PdrkLjn[s`mUTEAD@A@\\ndeVD@LADeVUFVh@@@`\\ngJX`LDdju@XP|Tp\\ndifH@HAIfuxZ`@@B\\ndif@PBBPRPR[e^Fh@@@pbNES\\\\H\\ndcNHpJtIAICICHiCDedLuP@R@D\\ndkn@hJBPRPrPvPNPrJPqIPpYj`@j@B\\ndeV@@@Re]Xj@Bj@C@fxYxTIa@\\ndmvHPBTIAIAInV_ij@HP@`\\ndcNH@NCHeEDdYplAAT@D\\ndkn@PBBPRPR[eW[aj@Bj@B\\nfHbhA@\\nf`q`@@@YIEBedhdnB]zh@J@@@@`\\ndeVD@D@dfVuFVh@@@pXj[agdH\\nfoAP@@@NRYWVUzLMZ@B`@`@B\\nfde`@@@ISKN~rmFBTFH@@Pp@@@`j`\\nfoQHA@FJuXFH`HRYUYYbTT[UjZjefZ@B\\ndid@P@BJdDef_ahH@@LJ`fx^P@\\ndeT@@DjY]zXFB@@pYLinGbEH\\ndaF@@@RYWih@H@LBCB{bIP\\ndcl@@DjYU_egX@@@@@pYLJngaLJz\\ndknL`LaM@HrRRqIYPYV`@f@B\\ndeTh@DiiAIgeQej@@@H\\ndg^@@@rIRJEJFRoU@AT@D\\nfoAp@@@PidbbvbRafJJuMT@ER@A@\\ndk_@PBxpbEbDfYYUZ]NBBbT`B\\ndcvB@FAEuIm[VZijX@`\\ndknL@JABR[mfWSZZ@`@B\\ngOq@@drm]SRA@\\nfoA@`@@BRYfYWuVLyh@`@@@CBUF\\\\EIVcNyBp\\ndaG@@@[diWRh@I@B\\ndeT`@@pjrQQQUMpEAP@XDUCOHX\\ndaDh@DqnAIeZfZZd@`\\nfoAP`@DNAsHheEEJefBMYji`@h@B\\nfoAQ`@DX@pRSJs|kSegMTs@A@@X\\\\QaVcV]rG@\\ndg|@@DjU_eZx{BAH@@BJ\\\\MaLJfe]N~Qp\\ndk\\\\H@@RYm[Watz`@@@@H\\ndmvH@JAJ[g_ahHBP@`\\ndmvH`BdIAIfUya``a`@pkBhUyC@\\ngOy@HDfUkjj`LJlZ~P@\\ndifD@LADeYWaZjj@H\\ndif@@@RfU~F``@@pxDpj[nPH\\ndmtH@@rJJIJEn`HJ`@pxBiae^Ig@\\ndeVH@NAJ[VvF`BH@LBPfGfYt`\\nfoQH`@LBUXCldTRabRrIRRcVjj`PJ`@LFPISfg\\\\``\\ndmM@PBx@c@aJYg\\\\jeZdHB@B\\ndaF@`H@HRVU[jjj@LNaLJf{d@\\nfgA`B@K@BDifUW|TEiQj@@@J@@H\\nflmAP@@LUyNQQQQEJQJI|Eish~BtuUUUUU@A@\\nfnkA`@@U[dTRTrTrTtRJeFRUYpTmMUUUUTuT@D\\ndaDH@@RYUih@H@LBCB{bHp\\nfoAQ@@DZ@drsJkjlYsUPTDP@D\\nfoQAB@C@BDifYU^gIVtz`B@DH@@`\\nf`ip@@@F}dbbTRRRQhpVkN@@@BB@@B\\ndklD@@QIe]e]MjZ@@@LApfFUt~QP\\ndg|H@@rIQQJQZ}NfuUUTt@P\\ndmtD`ATHaIe]nf`@jP@pXDpjGb]H\\nfbmPB@NA@DYHhhhddmcEJ\\\\e[Sj@H@`jj@@H\\ndg~H@HAIYeg_eNzB@@@@B\\ndmvD`La@BLdabRbxUjjj@H\\ngGQ@@djutA`c^HP\\ndaD@@DjUZxHH@CBdpj[bQp\\nf`qpB@DLxBHRYUvYZcKN`@hBB@@H\\ndigDPLXXP@b`cIHUDnEZfd@`\\ndaE@@@aJmUnjjh@`\\nf`iA@@@YHhhhheEZBdxwj@BHHH@@`\\nfluA`@@HRdrvmkZxiFlFKUUUP@U@@P\\ndev@@@Re[TjFP@@@@LFaB[iy@`\\ndif`@@pjGIEEEVxB``@ppjGdL\\ndaE@`BhHaIfUn`H@@ppL{bTp\\ndg~L@BAER[e[gzSmh@B@@@`\\nfj}@P@@\\\\teIfVWn]{YrQhyZA`hBBJ@@H\\nfj}@P@@\\\\LeIfVWVu{YrVhyZA`bBBJ@@H\\ndmvH@DAIVUVUZjjh@peLJfxYWdP\\ngNp`@dfzZj@pJMX\\ndk\\\\D`HP@cIHXheDQgSV@@@@@pZnE]ObAH\\ndeVD@FADfygFV``@@pjfxYyB@\\nf`qa@@H@RVUuYUgG^h@J`@@@H\\ndaD@`@qDfYVz@`@CB`pj[d\\\\\\ndif@@@rRJEKaj@@@LJSJ[nHP`\\ndifD`Na@BLddJT[ejj`B\\nfhiQ`@DX@pRSJswJ}N^BuSMA@P@D\\nfgAa`@N@t[HhheDTdsdeFltC@UQ@A@\\neMBBHRYCAKd`\\ngGPdMQDGpRUYiDe@\\ngGPXHlQxIU[U@XR|VH\\ndeU@@@qJYejxBHh@LJJfF^Qp\\ndmuH@DXDfUgjZ@Bj@B\\ndcNH@DCHheEBdnmU@@@FGIeMpkqIt\\nfnk@`@@UrJIJZIPiSQHrcEZ]zNVfjjjjjZj@CCrLTxJRmFlxLTyyAh\\neMJDBDe`pQyP\\ndeTH`ICDRUe_af@B@bGB`Jf{fPd`\\nf`qAB@O@qDfYUg_EjsjP`@@`AAC@\\ndcLH`ICDRUe]^FX@J`Ha`\\ndid@`@bDf[Wai@@@LJ@j[nI``\\nfhi``@C@PdsrnljJW`mP@T@@@A@\\nfiwpP@DVz@wliLsLj{[klrPeFCEKQmTtuAPHDQ@@FDj\\\\d{qV}GrF`\\nfhiPb@OA``@QddabbRRvRkF\\\\m@@@E@@F@jLxJRmFxcpP\\ndeVH`IDIAIe[ZZ@Bd@LBSJGb]H\\ndmvH`IDIAIe[^f`@i`HF`\\ndmv@`ABHRYWUih@IhBN\\\\FALJixgJ\\ndaE@`FxLQIfVfifx@`\\ndaFH`BxLQIe\\\\jffh@`\\ndig@@@aDkYWaZ@@@LJPj[nI@`\\neMBBHR[B\\ndmtD@@QIn[VUZd@@@pYFxYWdT\\nfhi@`@@HR[YfUWMypVf`@@@@@ptc`iJtZsoAyC@\\ndk^H`MDIAIe[mZy]`BIjD@`\\ndaF@@@RYWifef@H\\ngOx@@drm[RtA`Uc^HL\\ndidL@@QdfU\\\\jZff@LBpf{dB\\ndcmH@HDLbTTRbOBnt@@@@A@\\ndaF@@@RZW[jii@H\\ndaFH@NAIe^f`@`@piLJny@@\\nfHgPAa@\\ngC`DAbZHRVhB\\neMBBHRYCAGe@\\neFJH\\\\HpXQr`\\neMPBchLF^P\\neMbDBDfp`';\nTrb.$E='daD@@DiYZYji`@\\ndaD@@DjUZxHD@@\\ndaD@@DjUZxHH@@\\ndaD@@DjWjXHB@@\\ndaD@@DjWzXHB@@\\ndaD@@DjYvxH`@@\\ndaD@P@bBbDfYvzB@@@\\ndaD@P@bFbDfUjz@H@@\\ndaD@P@bNBDfUzZ@B@@\\ndaD@`@BDeeVz`@@@\\ndaDB@@InRYgrfiZ@@\\ndaDD@@IIf]n``@@@\\ndaDD@@QIeZfZfh@@\\ndaDD@@QIe\\\\jZehHj@\\ndaDD@@QIe\\\\jZfh@@\\ndaDD@@QIe\\\\jZihHj@\\ndaDD@@YIeZn`B@@@\\ndaDD@@iIeenjZd@@\\ndaDD@@yIe^fZVX@@\\ndaDD@@yIe^f`@`@@\\ndaDH@@RVU[f@@@@\\ndaDH@@RVU[j@@@@\\ndaDH@@RYVih@H@@\\ndaDH@@RYWih@H@@\\ndaDH@@RYe[hB@@@\\ndaDH`NBPRYWih@H@@\\ndaDH`NBlRYWih@H@@\\ndaDH`NCDRYWih@H@@\\ndaDL@@SdfURijZ`@\\ndaDL`HS@BLddJS\\\\mUP@@\\ndaE@@@YIeZn`B@@@\\ndaE@@@yIe^f`@`@@\\ndaED@DHNRYWifif@@\\ndaED@DpFRYVkfjY@@\\ndaEH@DXDf[Vyje`@\\ndaF@@@RYe[hB@@@\\ndaF@`BBHRYg[hH@@@\\ndaF@`FBHRYVkh@`@@\\ndaF@`NBHRYWih@H@@\\ndaFD`HI`bDfYjzif`@\\ndaFD`JK`BLbbbMMTtp@@\\ndaFH@DAIeUnZjh@@\\ndaFH@HAIYUnfjh@@\\ndaGD@Dp`yIeVfZiX@@\\ndadL`HS`BLddJULwKUU@@\\ndax@X@bDbLbJbFbNbLbdLeUT@@\\ndax@X@bDbLbJdFdNdLbdLeUT@@\\ndax@X@bDbLdJbFbNdLbdLeUT@@\\ndaxB@@QnR[VZY`cH\\ndaxB`HSBCpRjuZj`@\\ndaxD@@IIeujj@@\\ndaxD@@QImUifALj`\\ndaxD@@iJU^jj@@\\ndaxL@@SDfUVjh@@\\ndaxL`HS@BLddNbuT@@\\nday@`Dp@aIfYjj@@\\ndazD@LADf]Vjh@@\\ndazD@LADf^Vjh@@\\ndazD@LADf^fjh@@\\ndazH@DAIfujj@@\\ndazH@DAImUjj@@\\ndazH`LPHaInVZj@@\\ndcL@@DjYn}aBHbh@@\\ndcL@X@bBbFbAbEbMbDfYn\\x7Fijjjj@@\\ndcL@X@bDbJbAbEbMbDfn^_ijjjj@@\\ndcLB@@RURYYejyjieh@@\\ndcLB@@RiRYyVQejjjh@@\\ndcLD@@IIf]z[hHBj@@\\ndcLD@@eJ[W[[j@Bk@@\\ndcLD@@iJ[g]xZB@f@bX\\ndcLD@@uIfUk[hBBj@@\\ndcLD@@uIfU}FV`PJ@@\\ndcLDHFDH`haXcXaIf[ozYjYjP@\\ndcLF@@IaWTfYn\\x7Fijjjj@@\\ndcLF@@Rag\\\\bbTVTILuSUT@@\\ndcLH@@RYWUZZ@Bj`@@\\ndcLH@@RYWYzZ@Bj`@@\\ndcLH@@RYeZvz@`j`@@\\ndcLH@@rJJIJGMtAAU@@@\\ndcLJB@PUuNR[eY~eijjh@@\\ndcLL@@QTfvUtYZ`@h@@\\ndcLL`HS@BLddJfRtjmP@P@@\\ndcM@@@WIDeBddU@AMTACP\\ndcMD@DTIR[fVQuhHF@@@\\ndcMH`BuPBDf[U{aj@BX@@\\ndcMh@DKaePR[eoVEjVfhHF@\\ndcNB`BaLtOCIILeBdnmUUU@@\\ndcND@DATfyeXYZ@`h@@\\ndcND@LADfU[U]Zj@@@@\\ndcNH@ICHhdhdYSP@UT@@\\ndcO@@@aDiUm^UZh@HB@`\\ndcl@@DjYU_egX@@@@@@\\ndcl@@DjYn}BXVjjjd@@\\ndclD@@UIfV][iuhFAH@@\\ndclD@@iJYW]rnF``IhBI`\\ndclD@@iJYW]rnF``Jh@@\\ndcll@Dsm@iRYgeVE]ZjeZ`@\\ndcllADqe@]R]{HhdhdcWRkURmT@@\\ndcm@@@YJYYwhUtH@@@@@\\ndcmH@DpLbbbLRQTnmU@A@@@\\ndcmH@DpLbbbLRQTnmUUUP@@\\ndcnL`LaA@HrRPjIKTrzmPHD@@\\ndcndADkatIjYyIefY[eujeji@@\\ndcnl@DsetBeIf^UXUujjUj@@\\ndct@@DiUUVjjj`@\\ndctB@@I]rJJJIVMRuLDE@\\ndctB@@PYRYU{ViijBBP\\ndctB@@RURY]VvjjZ@@\\ndctBHFxYBHRHrHkprJPqREUUMT@@\\ndctF@@IaWTfYn~jjj`@\\ndctF@@rngTen{mjjj`@\\ndctd@DrmATf^VYjji`@\\ndcuD`FWi@HrQRXiSUTttDU@\\ndcvB`JFUt@aJUgfjjfX@@\\ndcvD@LADf^eujjj`@\\ndcvD@LADf^fYjjj`@\\ndcvHPF`G@WCIIEXmIUSUPQR@\\ndeL@@DjYeIjGijjjj@@\\ndeT@@DjWvifjih@@\\ndeT@@DjYUXPbDP@@\\ndeT@p@bDbLbLbdLRPsU@@@@\\ndeTB@@KiRYg]nZej`@\\ndeTD@@SHheDYaMUMP@@\\ndeTD@@eIff\\\\Ijjf@@\\ndeTDB@YnRYe\\\\YZB@@@\\ndeTD`AdHaIe[jz@HX@@\\ndeTD`NDHaIfVVfBA`@@\\ndeTH@@RYVZfZZj`@\\ndeTH@@RYe\\\\YZA@@@\\ndeTH@@rJJIHmtA@pD]@\\ndeTH@@rJJIHmtAAH@@\\ndeTL@@JTfYoXXHH`@@\\ndeTL`BjPkDf[W[jjjh@@\\ndeU@@@EIYe^g``p@@\\ndeU@@@aJWeQfj@@@@\\ndeU@PBdHchaIf^VFBBH@@\\ndeU@`Dp@aIgeQej@@@@\\ndeUD@HDIRVUunfef`RKh\\ndeV@@@RVUenh@J@@\\ndeV@@@RYeun`HJ@@\\ndeV@PNBHFHRYeYi``x@@\\ndeV@pBBHzHfHRYgea``b@@\\ndeVD@FADfygFV``@@@\\ndeVD@IADfyWxV`@`@@\\ndeVH@BAIf]VzB@h@@\\ndeVH@FAIfUqehH@@@\\ndeVH@HAIYf^f`H`@@\\ndeVH@IAJ[Vvz`@h@@\\ndeVH`Ax@aIfVVfBA`@@\\nded@@DiUUjjj@@\\nded@@Dj_VfZZ@@\\nded@X@bDbBbFbAbIbDf{nijZ@@\\ndedD@@QIeVVjjP@\\ndeeD@DdAR[UYjjX@@\\ndefD@LADf^]Zjj@@\\ndefD`FFPBDiWnjjf@@\\ndefD`FFPBDi]nijf@@\\ndefJ`JaLFP|LddjRcUTp@@\\ndet@@DjYUX^d@@@@@\\ndet@@DjYUX^dHbH`@\\ndetL@@jTie]rnF``J@@\\ndet``Dki@HRYYUnFVjVi@@\\ndev@@@rQQJHtpr@@@@@@\\ndev@PL@HPHRYUTjFVj@@@@\\ndevh@DJndDfVU[af@`hP@\\ndevhADIadFf^R[fUnxVijY@@\\ndg\\\\B@@Q[R[VUmgVf@HhBL`\\ndg\\\\B@@SSRY[W[FVh@Ih@@\\ndg\\\\D@@eIfU_Un`HJj`@@\\ndg\\\\H`ABHRYVwUih@Jjh@@\\ndg]HPAuPbBbDfYw[fzB@ij@@\\ndg^B@BAMoHiieDeBimU@DP@@\\ndg^L`LxY@HrQQYJEIYUSRuUAFP\\ndgl@@DiUUUZjjjh@@\\ndglBA@RUSe{HihheDbtuSUAFH\\ndglBPHRU@HhHrRPrIRIkUTmP@@\\ndglD@@QIgV]YjfjZBJ`\\ndglD@@QImUUUjjjj@@\\ndglFPHkivpqLqDen{nzjjjh@@\\ndgmB@LxDWTfU[{Vjjfh@@\\ndgnD@KADfuUUVjjjh@@\\ndgnD`H[`BLdTRbJRUUMUT@@\\ndg|D@@OIEEHhfmPkmAU@T`@@\\ndg|DPFDH`haIf[oWiNyjY`@@@\\ndg|H@@RVUvU[cn`@`@@@@\\ndg|H@@RYfUWd}mh@@@@@@\\ndg|L@@ildTRbrJQTJtEAEL@@\\ndg|d@Dq]@\\\\bbbbfJSSimUSTs@@\\ndg|l@Dq]@[rJJJJXiMNfuUMSL@@\\ndg}@@@aJVYU^Svv`@@@@`H\\ndg}@@@mJYeU|]Tz@@@H@@\\ndg}D@AlBRYgU][iVB@jjD@@\\ndg}D@DpCrJJHqIYERzuT@EP@@\\ndg}D`LHU@HrQQYJJEYQwSMMMR@@\\ndg}H@DHDfYV]rX{Zi``H@@\\ndg}HPAuPbBbDfYw[fx{``JZb@@\\ndg}L`FWSl@cIEHhbeEc]MUUTsP@@\\ndg}L`JXiTIAIf]VunNzVjZj`@\\ndg~D@EADfufUqT{ZZP`HBL`\\ndg~L@BAER[e[gzSmh@B@@@@\\ndg~L@IAKR[Ye]z]MjdHB`@@\\ndiD@`@RdjeVjj`@\\ndiDB`HSB@HrRPiIZj`@\\ndiDD@@GIEHjjjj@@\\ndiDJHDpnDAbHbaahcIIJiIZe@@\\ndiDL@@xTiUVjj`@\\ndiDLPBhPbFbLbbbeiZdHQ@\\ndiDNPHSB[a@XhXrRPzQZe`@\\ndiE@@@sIDhcFZj@@\\ndiF@PHApiprRQVRjj`@\\ndiFD@AADfuUjj`@\\ndiFD@LADf^Yjj`@\\ndiFD@LADf^]jj`@\\ndiFD`JxPBLbdTljjX@@\\ndiFDpAk`bDbLbLbdJTjjX@@\\ndiTH@@RfU|kahDB@@\\ndiTL@@X\\\\dRRaaJzjZj@@\\ndiV@@@RfU|kahDB@@\\ndid@@DjUZnBAH@@\\ndid@@DjUfaBB`@@\\ndid@@DjYUaBHP@@\\ndid@@LdbRQk``R@@\\ndid@@LdbbQxXF@@@\\ndidD@@IIf][hHB@@\\ndidH@@RYVZZ@B`@@\\ndidH@@RYVzZ@B`@@\\ndidH@@RYeVz@``@@\\ndidH@@RYevz@``@@\\ndidH@@RYfVF@b@@@\\ndidH@@RYm^Fh@@@@\\ndidHHFBHJHzHFHRYgljZfh@@\\ndidH`DBHR[e^FX@@@@\\ndidL@@IdfYoa`b@@@\\ndidL@@RdfV^fZjj@@\\ndidL@@SdfVTjZfZ@@\\ndidL@@pTee^fZZi@@\\ndidh@DKaAInV[fiZ`@\\ndie@`HxGCIIEJnFjiX@@\\ndieD@DpFRYVZyjfd@@\\ndieD`JXaBPRYgvzejX@@\\ndieD`LIN@HRZufFZid@@\\ndieH`Dq`BDfUfnZii@@\\ndie`@@pjX\\\\dTTUk`Hb@@\\ndif@@@rJJIEn`HH@@\\ndif@@@rRJEKaj@@@@\\ndifH@AAJ[W[j@B@@\\ndifH@BAIfuxV`@@@\\ndifH@JAJ[gxZB@@@\\ndigH@DK`R[e^Eh@@@@\\ndigL@Ds`XTfUfn`BH@@\\ndkLB`HSB@HrRPiIIIZjjh@@\\ndkLH@@RUUUVjjjh@@\\ndkMB@LxDeTfU]mZjij@@\\ndkNF@BAIWSR[YVYjjfX@@\\ndk\\\\@`@bDfYYwZ]NB@@@@@\\ndk\\\\B@@SSRYVuVfeVi@Bh@@\\ndk\\\\D@@QIee}RkaZfjjh@@\\ndk\\\\D@@wHhhhhbfESZAhD`@@\\ndk\\\\D@@wHhhhhbfESZBhD`@@\\ndk\\\\H@@RYWYVftx@H@@@@\\ndk\\\\H@@RYeg]itxH@@@@@\\ndk\\\\L@@x|bbbTTJZUuhFHF@@\\ndk\\\\b@Dsm@iMIf^UvE]Zjeih@@\\ndk\\\\d@Dq]@\\\\bbbbfJZ]MjjZe`@\\ndk\\\\d@DsmB\\\\bbbTrQXUujjUj`@\\ndk]D@JxCRe]YTjtzjjjj@@\\ndk]D`LHY@HRf]VwJtzYifi@@\\ndk]H@DpLbbbLRVJeujh@J@@\\ndk]H`FVPbDfUonkmN@Hfh`@\\ndk^@@@RfYU\\\\]Tzjjjj@@\\ndk^@@@rQQRJJjaTzBjBD@@\\ndk^D@IADfvYWz]MjdHB@@\\ndk^d@DXYtCRYf[WaWVjfji@@\\ndk^d@DkaTMRYYe]neVjZji@@\\ndk^d@DkatCRYYfUngVjZji@@\\ndk_D@DHPuIeeevySZ`hD`@@\\ndklB@@PcR[me]]ZZ@B@@\\ndklB@@PcR[me]]Zj@B@@\\ndklB@@QSrJYJIJF]ZX@b@cH\\ndklB@@QmR[fUxUZBBF@@\\ndklD@@MJ[eZ~F`HJh@@\\ndklD@@eJ[Vvfz`@jh@@\\ndklH@@RYfWua`Hbe@@\\ndklL`HS@BLddJbRvWUjB@`@@\\ndkl`@@kaRe[vTf@HZj@ah\\ndkm@@@GHhhhhdvf@bbh@@\\ndkmD@DHCRYvUvUZh@J@@\\ndkmD@DTCRUfWtYV@`e@@\\ndkmD@DdCrIJJIPxUV@bE@@\\ndkmDpDgSBHjHVHRYYmYn`HJf@@\\ndkmH`NVPbDfUunih@JZ`@@\\ndkn@`D@HRUUYWSVj`@@@\\ndknD@LALbbRbaRtvjh@@@@\\ndknH@DCHhmEEEYuj@bH@@\\ndknL`IaMADRge][aj@Bf@@\\ndk~@@@RfYU_JGUN`@@B@@@\\ndmL@@DjYUVGi@@@`@@\\ndmL@`@VDifU^FUifje@@\\ndmL@`@ZDifU^FUifje@@\\ndmLB@@RURYUVJaejVjh@@\\ndmLD@@QIe[VfeVi@B@@\\ndmLD@@QIe[VfeVj@B@@\\ndmLH@@RYVuiiV@BjH@@\\ndmLH@@RYe~Ifyjjjh@@\\ndmLH@@RYiYKnUjjjh@@\\ndmLL@@SdfVUrjUZ`PH@@\\ndmLd@DpYBdfV]VzUZZjV@@\\ndmLd@Dqe@TfUeZzUZZeZ@@\\ndmM@@@yJUntfePBIhP@\\ndmN@pN@H`HPHrRPqIZneUhDB@@\\ndmND@BA\\\\bbbReInFjZjd@@\\ndmNH@BAIfUmiEX@@@@@\\ndmNH@NAIYe^neZdHB@@\\ndmNh@DkaTDfVYVzUZiZi@@\\ndmO@@@SdfVUrjUZ`PH@@\\ndmTB`HSB@HrRPiQQZjj@@\\ndmTH@@RUUUjjj`@\\ndmU@pLD@a@c`cHheEKFjfh@@\\ndmV@HLBHQpYpVHrIRHrJjjj@@\\ndmt@H@bAdIdEdDfUvjZ@Bj@@\\ndmt@X@bBbFbAbIbEbDfYojzfZj`@\\ndmtD@@QIgYVUZh@@@@\\ndmtH@@RYWUih@Jh@@\\ndmtH@@RYe[[hBBh@@\\ndmtH@@RYeeZVfjj@@\\ndmtH@@RYeeZZjjj@@\\ndmtH@@RYe~[ffjZ@@\\ndmtH@@Rfuu[j@BXBA`\\ndmtH@@rJJIHin`HJ`@@\\ndmuD`LVD@HrRRqIXYV`@`@@\\ndmuH`Dq`BLbbRbJkfjZi@@\\ndmvD@DATf^Uqej@B@@\\ndmvD`La@BLddlTReUhB@@@\\ndmvHPEHJsjsHhhmDVFBBK@@\\ndmvHPEHLSlSHhhmDVFBBK@@\\ndmvH`ITICHhdhdZZ@Bj@@\\ndmvL`BaL@HrRRjIJUVjjh@@\\ndnDH@@ReVDijiZ@@\\ndnDH@@ReVDijjj@@\\ndo\\\\H@@RUUUUZjjjj@@\\ndo^HpAxH`hb`aIevyffjZjhHa@\\ndo|J@@S[_HheDdeDYMjBBb`@@\\ndo|L@@RtfUVuwSZjp@h@@\\ndo|L@@RtfvYWwSZjA@h@@\\ndo|L@@iTinU]_ihHHjXBCP\\ndo|L@@iTinU]_ihHHjXBC`\\ndo~L@MAER[e]mnEh@Ij`@@\\ndo~``LKad@aJ[V]Y[j@Bjj@@\\neF@Hh@\\neFAAD`bJ@\\neFAADdRJ@\\neFABD`bJ@\\neFABHhbL@\\neFACDlRL@\\neFBBHc@@\\neFBBlc@@\\neFBCDc@@\\neFHBJ@\\neFPBc@@\\neFbHbHp@\\neFhXNic@@\\neM@Hv@\\neMA@JXaIh@\\neMABHXaIh@\\neMABHYAIh@\\neMB@Jch@\\neMBBHRZ@\\neMBBPRY@\\neMCALhabHz@\\neMDARV@\\neMFI@bMP@\\neMFIGBMP@\\neMFiDqzN`@\\neMHAIX@\\neMHAId@\\neMHAIh@\\neMIdEJHIcd@\\neMJDBDeP@\\neMPBch@\\neM`AIx@\\neMbDbDfp@\\neMhDRV@\\neO@Hyj@\\neOB@Hcfh@\\neOBBHcfh@\\neOBCDcfh@\\neOHBNZ`@\\neOPBcfX@\\neO`BNZ`@\\nfH`D@@\\nfH`T@@\\nfH`X@@\\nfH`p@@\\nfHa@@@\\nfHap@@\\nfHbT@@\\nfHcD@@\\nfHcP@@\\nfHcT@@\\nfHcd@@\\nfHdH@@\\nfHdP@@\\nfHdd@@\\nfHdp@@\\nfHep@@\\nfHfX@@\\nfHgP@@\\nfHgd@@\\nfHgh@@\\nfHpXT@\\nfHpp\\\\@\\nfI@@\\nfJ@@\\nf`a@P@@Ht[HheDhmD\\\\jsTE@qP@@\\nf`a@`@@FrJJIJQJrLy@PUUT@@@\\nf`aA@@@ILsKWRpTADUUP@@\\nf`aAb@NFlBHrJIKIRJUTY@AUST@@@\\nf`aQC@IVLBPQHXdLbdLRTvf`eUPADu@@@\\nf`ahB@LDxJP@aJ[V]Yf\\\\h@Jjj@@@\\nf`ahB@LDxJP@aJ[V]ZV\\\\h@Jjj@@@\\nf`aq@@DV\\\\CHheEDcddkSTE@UP@@\\nf`i@P@@HD[HhdihdhUSbkN|uHPTUB@@\\nf`i@P@@HTYIe[VUZLeiwfi@HjhP@@\\nf`i@`@@DRYfyU]`mNmyi`@@B@@@\\nf`i@`@@HrJSQQQIH|UiuoMP@P@P@@@\\nf`i@`@@VRYfYU]`eNMyh@`AB@@@\\nf`i@a@ARADDbDfYuUUYqVg^``Jh@@@@\\nf`i@a@BBADNbLbbbRfaRcIBU[tDE@AA@@@\\nf`i@a@FRAD^bDfUm[UirRkN`BJ@BH@@\\nf`i@a@FRAD^bDfUm[WirRkN`BJ@BH@@\\nf`iA@@@YHhhheLUfBdYwjBb@@H@@@\\nf`iA`@@HldrlkZuFJMYsTaADtP@@\\nf`iA`@@HmdTRTRTrQhqQkNZdHHfb@@\\nf`iQA@B\\\\|@HpDISLzsnRdcN}TaAQUD@@\\nf`ih@@@\\\\eYvRJJJJUKJgEZMX@HHFhH@@\\nf`ip@@@XTeLwOvmNJt{pPQT@A@@@\\nf`q@@@DjUgm_hJs``hB@`@@\\nf`q@`@@LRYfWg^Qg^ZB`@@@@@\\nf`qA`@@FmdbbdTUrRiIVjBh`jd@@\\nf`qA`@@Hpdrlrj~gV|uP@@@@@@\\nf`qHC@DXxHDPrHMDYEDeDUEEj\\\\]z@HhH@@@@\\nf`qP@@@PrQJJJIIFJlYsP@P@P@`B@\\nf`qPB@DX@DILwLjoiuoMUUUUT@@\\nf`qP`@DBAKHheHdhbmPSoMUTa@P@@\\nf`q`@@@YEEDbdhdf\\\\]z@`f@@@PE@\\nf`q`B@B@bDfYwVUYqwhHBX@@A@T@\\nf`q`B@O@dDfUuYWhrsh@I`@`ACd@\\nf`q```JBTBHQDXbBAFQREQQSYJVg^jjfX@@@@\\nf`q```JBTBHQDXbBAFQREQQSYJVg^jjfZjd@@\\nf`q`b@LPP@HrRPjJIIKZ][ru@@@@@@@\\nf`qa@@D@RYyV{TRg^Z`B@@@@@\\nf`qa@@D@RYyeg^Qg^Z``@@@@@\\nf`qh@@@XirVRJJZGJII`g^BHa`@@DAP\\nf`qi`@DTxIPC^rJIQQJiILyISUKMUU@@@\\nf`qp@@@Hpds\\\\rj~gV|uP@@@@@@\\nf`qpa@LR}A@@`PQddaTTRRUtxuejBPha@@\\nf`y@@@LdbbbbbfkEBMIuo@@@@@@@@@\\nf`~`b`KLLBHHDTBNA@`aIneUYYjjjZ`@@\\nfbc@@@LdbbbTRLRqWEBMjsoIs@AA@UUPT@@\\nfbc@@@LdbbbbbbQQsEBMKuhir@@@@@@@@@@\\nfbc@@@LdbbbbbbcJwEB]Hu`ir@@@@@@@@@@\\nfbc`@@@ISLrj}{dirVgVBgLmUTrB@m@@@\\nfbc`@@@YHheEMDXlijREhuoQSd@@@@@@@@@@\\nfbe@P@@HM[HheDhdhmbdisTEALUT@@@\\nfbe@`@@HRYWUUUUIQjjjjjj`@@\\nfbe`P@N@P[vQQJJKQRzZIUfjijjZi@@\\nfbm@@@DjYVWV}~ZlENXI@H@@@@@@\\nfbmAP@@BLENQQQQQQQYG[bm^]Eh@bHAJ`@@\\nfbmAP@@BUGNQQQQQQPeIG`mNBehIb@@b`@@\\nfbmH`@EVBdGlbbbbbbTRacAZb{KPADDLQ@@@\\nfbmI@@DTdhFQQIQIQHqIY`iJSejfYjB@h@@\\nfbmPB@NA@DYHhhhddmcEJ\\\\e[Sj@H@`jj@@@\\nfbmPb@AJ|dDPdrmrljoSfgQs@DMPTBD@@@\\nfbmQB@AJRBHRYVyV[WisShy`BFhJAB@@@\\nfbmp@@@V|eLsJzo]SdcZ\\\\@@@AEU@@@@\\nfbu@@@LdbbRbVbrQwMQS@pU@TA@BFH\\nfbu@@@LdbbRbbtRJOCIs@pUPE@@BFH\\nfbu@`@@YRYWYeg_hrJX@Ij``H@Py@\\nfbu@`@@YRYWYeg_hrJX@JY``H@HDj`\\nfbua@@D@rJJJPjJYIK^SGKUUX@@@@@@\\nfbupb@LVcA@@cIIBmDeLhThkUgKU@ASUQ@@@\\nfby@`@@HR[UUUUUZjjfjj`PT`\\nfby@`@@HR[UUUUUZjjjjj`@@\\nfbya@@D@R[UUUUUZjjjjj`@@\\nfb}@@@DjYee\\x7F]^RD[S`q@@@@@B`@@@\\nfb}@P@@H]gHheDheEeD\\\\jugQRgKUUUUUUU@@@\\nfb}@`@@LrJJJJHyISI\\\\dkSoIsTED@@@H@@@\\nfb}@`@@LrJJJJHyJIK\\\\dkS`isTED@@@H@@@\\nfb}@`@@LrJJJJKIIIH|Djw`isTEP@@@@@@@\\nfb}@`@@YRYVum[ehrRkNBf@BjjjjJ`@@\\nfb}@`@@YrJJQIFYJYKDyIUgQRuUUU@AU@@@\\nfb}@`D@HQvQSRJIJUJYHRiZ]yNVjjjjjjj@@\\nfb}A@@@IS\\\\lj{j|DjsoIsP@@@@@@@@@\\nfb}A@@@IS\\\\l~kZ|dkSoIsP@@@@@@@@@\\nfb}A@@@YHihhhdeCenJtzpTyh@@@@@@@@@\\nfb}P@@@RRVYfU{wyKSkASg`@@@@@@@@@\\nfb}`@@@YHhhhhdhecjRUXt_I@@@@@``@@@\\nfb}`B@A@dDfUmeumZLeiwdy`@@`@@@@@@\\nfb}`B@A@dDfUmevUzLeipTy`@@`@@@@@@\\nfb}`B@B@dLbbbRfbtVbKIBuxJ\\\\p@@A@@@@@@\\nfb}a@@I@RVYfU{wyKSkASe`@@@@@@@@@\\nfde@@P@QAHadQJHuDFb@qDXcHhhiMMEciS`eN}MUUUUUP@@\\nfde@@P@QAHadQJHuDFbOQDXcHhhiMMEcCS`eNCMUUUUUP@@\\nfde@P@@BLGHhhhhhhlcqVoNbt@QD@d@@@\\nfde@``ARADDb@qDXaIf]UUUYqVg^``Jh@h@@@\\nfde@``BRADLb@qDXcHhhheCBdeqTmN}ADT@AQ@@@\\nfdeQ@@DFAdTRbRRTJbIQVg^ZiBBZhDDJP\\nfde``@A@BdsLsKslUiuhm@DPAI@@@\\nfde`b@H\\\\d@HRfYfWwQJMxLZjfZ``H@@\\nfdi@P@@HM[HheDhdhkdisTE@lT`@@\\nfdiA`@@HedTtbJRbbV|Ejjj@``@@\\nfdiQb@LR``P@cIIBhheedmjru@pQU@@@\\nfdq@`@@HR[UUUUVjjjjj@@\\nfdqA`@@LdeJl{jjtuSSLtBbGbiLnP\\nfdqPP@LQ@`p\\\\bbRTTaVRcUUUUS@@@\\nfdqaQ@JDT{pPQEoCHhhihldYMRuUUMPHHP\\nfdu@@@DjYee]}daZlGtP@@@@@@@@@\\nfdu@@@DjYee]}faRlGtP@@@@@@@@@\\nfdu@@@DjYee\\x7F_daFtxLP@@@@@@@@@\\nfdu@@@LdbbbbbTUHeRlXOh`@@@@@@@@@\\nfdu@A`@QAHadQJHCDQbLbbbdtqTVeA\\\\TYuoSUUUUUT`@@\\nfduAC`H`bBQCHbTQjHMD^bLbbbdttVLUNBTxHXsUUUUUU@@@\\nfdu`@@@YHheEhTddj\\\\EHu`q@@@@@@@@@\\nfdu`@@@YHhhhdeCejBd[S`q@@@@@@@@@\\nfdu`@@@YHhhhhdhbZRUXp_Q@@@@@@@@@\\nfdy@A`@XaLPVH[DCbQqDfYuygUgG^``JB@h@@@\\nfdy@A`@XaLQfHKDUbNqDfYn\\x7Ff_d`q`bHhH@@@@\\nfdyAP@@BUhNQQQQQQDqIdgAZYjZZj`@@\\nfdyAa@MAbBHQDIM_JztvBRUUP@UTt@@@\\nfdyP`@AR@EJ[WUe]Yqwj@Bh@J@@@\\nfdyhP@DTxIPCAcdTRbbURTRYrRfjVZjjh@@\\nfdyi`@DTxIP@qrJIQQJiJILyISUKMUUT@@\\nfdyqb@LFcA@`AFRREQQIJH{WcVVhIBhhP@@\\nfgA@@@DjYU_VByHu`@@@@@@@\\nfgA@@@LdbbbTVKIBMjp@@@@@@@\\nfgA@P@@HEkHheHeEBRdmFluUMUU@@@\\nfgA@`@@\\\\RfYe_irQmVh@`@H@@@\\nfgAA`@@HLdrmlkQdmFluHADq@@@\\nfgAH@@@XhiJYmg]gAJMXH`jeF@@\\nfgAP@@@\\\\RfYe_irQmV@@@@@@@@\\nfgAp@@@XheLvnjs`iFlDPT@@@@@\\nfgApB@LLx@HRevUUpPTcViYj@H@@@\\nfha@R@HHpPG`eUjjjjuUUUU@@@\\nfhaH@@@\\\\DyJUUUWVjjjjj@@\\nfhep`@BLT@NQQQQQQRq\\\\tJQkN|uLuUTuP@@\\nfhi@B`@QAHadPzHCDYEEELUDeCpUoPQA@DP@@@\\nfhi@`@@RrJJIIQFYHVoAZBA`@@@@\\nfhi@c@ARAD\\\\B@qFQQIYRFIKTX{t@Dl@D@@@\\nfhiA`@@B|dsLro~jqgM@D@AP@@@\\nfhiHB@EZLDDQdTRVTTTQUFF]@A@QE@@@\\nfhiHa@LTdFB@A@`cIIBhhddmmNMYZ`hJJD@@\\nfhiIP@DXxHDc^CdTRbfaTVUNZltuUUUL@@\\nfhiP@@@ArJJIEJIJYgKN`HJ@B`@@\\nfhiPA@BAADNbLbbbrrbRaYrwhHB`BH@@@\\nfhiP`@DZAyIgVYW^VkNZjdHBh@@\\nfhiPb@OA``@QddabbRRvRkF\\\\m@@@E@@@\\nfhiQA@BADBH]DYEEEeeDeBseoPPE@DP@@@\\nfhiQ`@DX@pRSJswJ}N^BuSMA@P@@\\nfhia@@E@rQQQHyJIHToAhJ@h@@@@\\nfhia@@J@RfywVUxKpZB@f@@@Pe@\\nfhipS@IZCpSo@bBAA`cHhheHeTiFJlFBAXjVH@@\\nfhiq@@DZBCHheEDeDceNmyj@@`B@@@\\nfhiqB@IF]hDadTTTbfLVWE^CMUTmRt@@\\nfhiqP@DXxBQoArJIQSPjKJ`mVZZjjjf@@\\nfhiqb@LJMAC`AFRRVIKIQKBd{rt@EMLP@@\\nfhq@`@@NrQQJIJYHxRjBHbjh@@\\nfhqXB@J\\\\dZpPAFRIJIJJqIBeUSMMUpHJ`\\nfhy@C`@QAHadQJHuDFbOQFQQQRZZKFTxIS`sUUUUMP@@\\nfhy@`@@HRY[fUWpPwgAZj@@@H@@@\\nfhy@c@ARADDb@qBSLzjjkNJt{tDAU@D@@@\\nfhyA@`A@bBQGh`LPdsNjjjsdeV]A@U@E@@@@\\nfhyA`@@BMdTTTTTTVoEZ|xL@A@P@@@@\\nfhyA`@@B|dsLsKnqVgVBt@Q@BP@@@\\nfhyA`@@Hldrlk[oQbcN|uHPQUP`@@\\nfhyH@@@XxkIEDeDehTjBYspP`Xj@@`@@\\nfhyI`@LJMxD`yHhhhUEedRfcN}UUTBAT@@@\\nfhyPA@B\\\\@DXBDif]WmRTekpZdHHjjH@@\\nfhy``@A@|dsLsKnqVgVBt@Q@BP@@@\\nfhyaB@K^@DISLjo{XhKRcT@@@Tt@@@\\nfhyh@@@\\\\e[vRJJJJUIITxkQk@AA@uPP@@\\nfkAA`@@TTeJwsLDDXkVcUUUUUP@@\\nfle@B`@QAhbtPzHSDYEEDeCEHe\\\\s`XpDEATA@@@\\nfle@Q`OAbdDPRHYDRbMQAhcHhhiMMEcEJ\\\\DjZjjjfZ`@@\\nfleHb@LBdfB@AFRREQQIIZIZ][ru@@@EP@@@\\nfleI@BHTDh@NaNQJJIIKQPi\\\\eEMA@eT@@@ar@\\nfleP`@DA@eIVUue]^B]yX@J@BT@@@\\nfle`@@@YIEDeDThll[tTuSPP@@@BAH\\nfle``@A@Pdrrr\\x7FrjcQRuAPI@@@HJ`\\nfle``@D`TeMrnkZ\\x7FAAcPDET@D@@@\\nflehPBDX}EHAJCFT}dTTRTRRJRsNFluTtuUKP@@\\nfli@@@LdbVRRbbjTjjjjjj@@\\nfliA@@@IJjjjjkUUUUUT@@\\nfliAq@LDhkSo@BH^FRJQSIQUQ[TuUMSU@@@\\nflm@@@DjYee]\\x7FYhTkA}D@@@@@H@@@\\nflm@@@DjYee\\x7F]yHQmNCD@@@@@H@@@\\nflm@@@DjYee\\x7F_yHQmNCD@@@@@H@@@\\nflm@@@LdbbbTRrJRxhQmNBd@@@@@`@@@\\nflm@@@LdbbbTRvRQyHQmNbd@@@@H@@@@\\nflm@@@LdbbbTVRcRXhQmNbd@@@B@@@@@\\nflm@@@LdbbbbbTQnEjUcA}D@@@@@H@@@\\nflm@@@LdbbbbbTUVDjUcA|d@@@@@`@@@\\nflm@B@@AFQQQQQIJGKLdjqoQS@@@@@@@@@@\\nflm@B@@RFQQQJKPiIILEIUgQS@@@@@@@@@@\\nflm@B@@XfQQQQQIJGKLdjqoQS@@@@@@@@@@\\nflmA@@@ILrrknjsdcV]EL@@@@@@@@@\\nflm`@@@YHhhhdeElcPTcZ}EH@@@A@@@@@\\nflm`@@@YHhhhhdhecRRkFcyH@@@@D@@@@\\nflmaA@KQ@DPdLdtTRbtJfRyIVkNbfifZiZej@@\\nfluAP@@B\\\\FJSLsLoJlUkudm@DPDLP@@@\\nfluAP@@HdkrSKLvzjlxYtTmT`pQUP`@@\\nfluAc`OARBHIDLbIQFh`tQDHrJJJSSQXiZgAJCFZjjjjfh@@\\nfluPP@DTAsUlbbTTTlTvRXHshiZjZfX@`@@\\nfluP`@DX@qIeVyeUrT]DJVjZ@@@H@@@\\nfluQB@DXX@HRYUnYU\\\\eGQBejf`@@B@@@\\nflu`a@BJ|CDebYEEEheDXdlpQkQSAADtB@P@@\\nfluaP@E@EKt\\\\bbbbbRJRRXhshiZdF`bjb@@\\nflua`@O@QGHheEDdebeJ\\\\UXsfh@@@ih@@@\\nfluib@DTxIQhi@DYEDhheUDddsdeN|uRsUUUT@@\\nflux@@@XIRRmYHhhldiUDdsdcQRA@AQ@@@@@\\nflyAP@@HLxJSJkZrkzluT`DUT@@@\\nfl}A@@@IRlrjkoAENJl[tTuP@@@@T@@@\\nfl}A@@@YEEDhih]DdpTmZlxLTmSSTuJsT@@\\nfl}A@@@YHdhheDddcAENJ]ZHTt@@@@@@@@@\\nfl}AA`D`bBQCHbTPFHcDYEEEIibheEPWEFl{wdsUUUUUUT@@\\nfl}aA@HF@DIdLdRbbRRtJR``cIFuXLZjjZjeif@@\\nfoA@`@@VRfUYu^JLz``@B@@@\\nfoAAB@A@bDfUmyVcKN`@j@@@@@\\nfoAA`@@HXdrkkJdiYsTtp@PBGH\\nfoAP@@@NRYWVUzLMZ@B`@`@@\\nfoAP@@@XReeV]qZlyfjjjj@@\\nfoAPB@KN@DISLjohmJMP@@AP@@@\\nfoAPQ@LF`aV`AD`cIICDTiCJLlyZjiZj@@\\nfoAP`@BZ@aInvYWejsfjiB@`@@\\nfoA`@@@IKLrjzkF]u@@@@@@@\\nfoA`@@@ILkjrmFV]@AL@@@ar@\\nfoA`@@@IML|{wEFmUSA@R@@@\\nfoA``@L@QdTVbbbblmV\\\\u@A@@@@@\\nfoA`a@AZlBHYDYEDeDXhiSagPAESLP@@\\nfoAaB@G\\\\ADILkkJ}FFm@AP@P@@@\\nfoAa`@J@PIImeeWyJsfjZb@@@@\\nfoAp@@@P\\\\eKLjorMjsP@@A@B@H\\nfoAq`@DXxBSlbbTTtJVhKQffjjjX@@\\nfoIA@@@IRlkZ|DTyKUgUSUUJs@@@\\nfoIA@@@IRlrj|DTxjqgUP@@AP@@@\\nfoQ@b@BBADYEEDeMBdrPeV]AAP@A@@@\\nfoQ@b@FRADILkZvmNRUYt@QP@D@@@\\nfoQA`@@HldrmlrtYKUgMR@QSD@@\\nfoQH@@@RM[IEDhmBdj\\\\DkQ`@@ajB@@\\nfoQH@@@XhiJYmg^YpRcVBHJiXX@@\\nfoQP@@@FRfYeUz\\\\e[S`@@@`@@@\\nfoQP@@@FRfYeUz\\\\e[S`@`JbB@@\\nfoQa@@N@rQQQQJKGbiVLz`BB@D@@@\\nfoQp@@@XdeLv{ZtyIUgAAE@@P@@\\nfoQp@@@XidbbfbQRSNRUYpQAT@@@@@\\ngBQ@@eJuT@@\\ngBX@@eLUT@@\\ngC`@Die@@\\ngC`@H{P@\\ngC`DADJHRZd@\\ngC`DADZHRVXRP\\ngC`DADZHRVx@\\ngC`DAHJPRZd@\\ngC`HADIKLIH\\ngC`HAVIMT@@\\ngC`HAbIKJ@@\\ngC`LADJHtPduP@\\ngC`LADJPt`duP@\\ngC`LAVJluXduP@\\ngC``Adej@@\\ngCa@@dkH@\\ngCa@@dmH@\\ngCa@@dmP@\\ngCa@@dmX@\\ngCa@@dsP@\\ngCa@@duP@\\ngCaA@NRVd@\\ngCaHH@bNt@@\\ngCah@mJAIj`@\\ngCahHl@bNj@@\\ngCahHlGBNt@@\\ngCahHlHRNj@@\\ngCahhlAa]ncm@@\\ngCaihlLr\\\\nwQz`@\\ngCd@ADij@@\\ngCd@ADkZ@@\\ngCdDI`BHDRZh@\\ngCh@@doH@\\ngCh@@duP@\\ngCi@DDfZ@@\\ngFp@DiTt@@@\\ngFp`@dfTujh@\\ngFp`@df_Ejh@\\ngFp`ATiTvjh@\\ngFq@@eOKUU@@\\ngFq`@ldrfmT`@\\ngFr@ACTi[FZd@\\ngFr@ACTi_FVh@\\ngFt@ATigVVh@\\ngFt@AdigUjX@\\ngFtHE`DILikUP@\\ngFu@E`drfmU@@\\ngFx@@eJf`@@@\\ngFx`LDdrfmU@@\\ngFy@DDfXujh@\\ngFy@JDiTvjh@\\ngFy@LDeXvjh@\\ngFy@LDi^Jnh@\\ngGP@DiVj`@\\ngGPBADJHLQXaInih@\\ngGPBADJHtQXcHiCUp@\\ngGPBAHJPLaYAInih@\\ngGPBAHJPtaYCHiCUP@\\ngGP`@TfYi`@\\ngGP`ATeVj`@\\ngGP`ATeVn`@\\ngGP`ATiVj`@\\ngGQ@@dkUT@@\\ngGQ@@eMUT@@\\ngGQLJHaQFbLbdMT`@\\ngGQXHlZHROjj@@\\ngGQ`@bdwMT@@\\ngGQhHl@cIIBmP@\\ngGQhHlLSIHTmP@\\ngGQhHlOAJmZh@\\ngGT@ADiVj`@\\ngGU@E`dmmT@@\\ngGXHD@aIUVd@\\ngGXLJHaQFbLbdMU`@\\ngGX`LDdsmT@@\\ngGY@HDeVZaI@\\ngGY@HDefZaH`\\ngGYHLaDIMtu@@\\ngG]HHjPDIJuS@@\\ngJP@DjYd@\\ngJPBADJHtPXaIjj@@\\ngJPBADJHtPYAIjj@@\\ngJPDADQpRZj`@\\ngJPHADIKSP@\\ngJPHADILth@\\ngJPHAVILuP@\\ngJPLADJHLPdwS@@\\ngJPXHlPDQzt@@\\ngJPXHlPLQzt@@\\ngJP`@TeVd@\\ngJP`@TeZh@\\ngJP`@TfVd@\\ngJP`@deVh@\\ngJP`@dfvd@\\ngJPlLQDPHTPduR`@\\ngJQ@@dlu@@\\ngJQ@@dmU@@\\ngJQ@@duU@@\\ngJQ@@eKU@@\\ngJQDHG@nBUMT@@\\ngJQHBHaIfe@@\\ngJQHBLQIfe@@\\ngJQ`@bdvu@@\\ngJT@ADiYhRP\\ngJT`E`TfVh@\\ngJX@@dkU@@\\ngJX@@dms@@\\ngJX@@eKU@@\\ngJX`LDdru@@\\ngJY@DDfvd@\\ngJYHC`DIKTp@\\ngKP`@df\\\\Vj@@\\ngKQ@@eKcRp@\\ngKQ@@eKcUP@\\ngKX@@eKcUP@\\ngK\\\\@ADeKbuH@\\ngNpXHlPDYIHTmT@@\\ngNp`@dfVZf@@\\ngNp`@df]Zi@@\\ngNp`@dfzZj@@\\ngNp`@teUZi@@\\ngNplJqDJHtQdTaeUP@\\ngNpmJqDJHtP~rJPrjX@\\ngNq@@dssUP@\\ngNq`AVeJmUP@\\ngNqhHl@cIICej`@\\ngNqhHlOAJkVj`@\\ngNtDLpDDHRevnl@\\ngNtHE`DILruT@@\\ngNx@@eRmUP@\\ngNx`LDdskUH@\\ngNx`LDdskUP@\\ngNx`LDdssUP@\\ngNx`LFdjmUP@\\ngNy`LDtf]Zj@@\\ngN|@ADeJkUP``\\ngN}HEbpDILzuR@@\\ngOp@DjWkB@@@\\ngOpHADILkW@@@@\\ngOpXHlPDYIHUVmU@@\\ngOp`@dfUMZf`@\\ngOp`@dfVqZj`@\\ngOp`@tiguif`@\\ngOp`AdeekZZP@\\ngOphH`DYIHUVmT`@\\ngOq@@drm[UT@@\\ngOq@@drm\\\\@@@@\\ngOq`@fdrikTl@@\\ngOq`@fdrikUL@@\\ngOqhHl@cIIBjujh@\\ngOtHE`DILl[MT`@\\ngOx@@drm\\\\@@@@\\ngOx@@drm]UT@@\\ngOx@@eJqh@P@@\\ngOxHDHaIeZx@@@\\ngOy@DDfYKZj`@\\ngOz@ACVeKNLuR@@\\ngO|HDVHaIeZx@@@';Drb.Z$=B5(244);Urb.fF=function fF(a,b){Krb.Ei(a.a,b)};Urb.gF=function gF(a,b,c){Krb.Di(a.a,c,b)};Urb.hF=function hF(a,b){Krb.Ei(a.f,b);a.d=-1};Urb.iF=function iF(a,b,c){Krb.Di(a.f,c,b);a.d=-1};Urb.jF=function jF(a,b){Krb.Ei(a.g,b);a.d=-1};Urb.kF=function kF(a,b,c){Krb.Di(a.g,c,b);a.d=-1};Urb.lF=function lF(a){Hrb.Mmb(a.g.a,0);Hrb.Mmb(a.f.a,0);Hrb.Mmb(a.a.a,0);a.b=null;a.d=-1};Urb.mF=function mF(a){var b,c,d;for(d=new Krb.ueb(a.g);d.a<d.c.a.length;){b=Krb.teb(d);if(b.K)return true}for(c=new Krb.ueb(a.f);c.a<c.c.a.length;){b=Krb.teb(c);if(b.K)return true}return false};Urb.nF=function nF(a){var b,c,d,e;c=0;b=0;for(d=0;d<a.g.a.length+a.f.a.length;d++){e=d<a.g.a.length?Krb.Ji(a.g,d):Krb.Ji(a.f,d-a.g.a.length);if(e.r!=0){c+=e.r;b+=Jrb.Fk(e,e.q,e.r,(Jrb.Ej(),Jrb.Dj))*e.r}}return c==0?(Jrb.Ej(),Jrb.Ej(),Jrb.Dj):b/c};Urb.oF=function oF(a,b){return Krb.Ji(a.a,b)};Urb.pF=function pF(a){var b,c,d;if(a.d!=-1)return a.d;a.d=0;for(c=0;c<a.g.a.length+a.f.a.length;c++){d=c<a.g.a.length?Krb.Ji(a.g,c):Krb.Ji(a.f,c-a.g.a.length);for(b=0;b<d.q;b++){a.d<$wnd.Math.abs(d.w[b])&&(a.d=$wnd.Math.abs(d.w[b]))}}return a.d};Urb.qF=function qF(a){var b,c,d,e;c=new Urb.FF;if(a.g.a.length!=0){e=new Jrb.Iu(Krb.Ji(a.g,0));for(b=1;b<a.g.a.length;b++)Jrb.Kj(e,Krb.Ji(a.g,b));Krb.Ei(c.g,e);c.d=-1}if(a.f.a.length!=0){d=new Jrb.Iu(Krb.Ji(a.f,0));for(b=1;b<a.f.a.length;b++)Jrb.Kj(d,Krb.Ji(a.f,b));Krb.Ei(c.f,d);c.d=-1}return c};Urb.rF=function rF(a,b){return b<a.g.a.length?Krb.Ji(a.g,b):Krb.Ji(a.f,b-a.g.a.length)};Urb.sF=function sF(a){return a.g.a.length+a.f.a.length};Urb.tF=function tF(a){return a.e==null?'':a.e};Urb.uF=function uF(a,b){return Krb.Ji(a.f,b)};Urb.vF=function vF(a,b){return Krb.Ji(a.g,b)};Urb.wF=function wF(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;if(a.g.a.length==0||a.f.a.length==0)return null;m=Urb.pF(a);if(m==0)return null;l=tX(Drb.NY,lub,7,a.f.a.length,0,2);for(f=0;f<a.f.a.length;f++){p=Krb.Ji(a.f,f);Jrb.ou(p,15);l[f]=tX(Drb.NY,Qsb,6,m+1,15,1);Krb.Geb(l[f]);for(b=0;b<p.q;b++){k=$wnd.Math.abs(p.w[b]);if(k!=0&&l[f][k]!=-1)return null;l[f][k]=b}}g=tX(Drb.c3,itb,6,m+1,16,1);for(e=0;e<a.g.a.length;e++){t=Krb.Ji(a.g,e);Jrb.ou(t,15);for(r=0;r<t.q;r++){k=$wnd.Math.abs(t.w[r]);if(k!=0&&!g[k]){for(h=0;h<a.f.a.length;h++){n=l[h][k];if(n!=-1){p=Krb.Ji(a.f,h);if(t.j[r]!=p.j[n]){g[k]=true;break}if((t.u[r]&3)!=(p.u[n]&3)){g[k]=true;break}for(i=0;i<t.j[r];i++){c=Jrb.vk(t,t.i[r][i]);if(c==0){g[k]=true}else{s=t.k[r][i];d=false;for(j=0;j<p.j[n];j++){q=Jrb.vk(p,p.i[n][j]);if(q==0){g[k]=true;break}if(q==c){d=true;o=p.k[n][j];if((s<t.g&&(Jrb.Kr(t.p,s)||t.H[s]==8))^(o<p.g&&(Jrb.Kr(p.p,o)||p.H[o]==8))||!(s<t.g&&(Jrb.Kr(t.p,s)||t.H[s]==8))&&(Jrb.Qk(t,s)!=Jrb.Qk(p,o)||(t.F[s]&3)!=(p.F[o]&3))){g[k]=true;g[c]=true;break}break}}d||(g[k]=true)}}}}}}}return g};Urb.xF=function xF(a){var b,c,d,e;for(d=new Krb.ueb(a.g);d.a<d.c.a.length;){b=Krb.teb(d);if(b.q!=0)return false}for(e=new Krb.ueb(a.f);e.a<e.c.a.length;){b=Krb.teb(e);if(b.q!=0)return false}for(c=new Krb.ueb(a.a);c.a<c.c.a.length;){b=Krb.teb(c);if(b.q!=0)return false}return true};Urb.yF=function yF(a){return a.c||Urb.mF(a)};Urb.zF=function zF(a){var b,c,d,e,f,g,h,i,j,k,l;c=0;for(l=new Krb.ueb(a.g);l.a<l.c.a.length;){j=Krb.teb(l);Jrb.ou(j,1);if(j.K){for(b=0;b<j.f;b++){if(t3(j3(j.B[b],jtb),0))++c;else if($wnd.Math.abs(j.w[b])!=0)return false}}else{c+=j.f}}for(i=new Krb.ueb(a.f);i.a<i.c.a.length;){g=Krb.teb(i);Jrb.ou(g,1);if(g.K){for(b=0;b<g.f;b++){if(t3(j3(g.B[b],jtb),0))--c;else if($wnd.Math.abs(g.w[b])!=0)return false}}else{c-=g.f}}if(c!=0)return false;f=Urb.pF(a);d=tX(Drb.c3,itb,6,f+1,16,1);for(k=new Krb.ueb(a.g);k.a<k.c.a.length;){j=Krb.teb(k);for(b=0;b<j.f;b++){if(!j.K||t3(j3(j.B[b],jtb),0)){e=$wnd.Math.abs(j.w[b]);if(d[e])return false;d[e]=true}}}for(h=new Krb.ueb(a.f);h.a<h.c.a.length;){g=Krb.teb(h);Jrb.ou(g,1);for(b=0;b<g.f;b++){if(!g.K||t3(j3(g.B[b],jtb),0)){e=$wnd.Math.abs(g.w[b]);if(e>=f||!d[e])return false;d[e]=false}}}return true};Urb.AF=function AF(a){var b,c,d,e;if(a.g.a.length+a.f.a.length<=1)return false;b=Urb.nF(a);e=tX(Drb.g_,Bsb,47,a.g.a.length+a.f.a.length,0,1);for(c=0;c<a.g.a.length+a.f.a.length;c++){e[c]=Jrb.Vk(c<a.g.a.length?Krb.Ji(a.g,c):Krb.Ji(a.f,c-a.g.a.length),null);if(e[c]){for(d=0;d<c;d++){if(e[d]){if(e[c].c+e[c].b>=e[d].c&&e[c].c<=e[d].c+e[d].b)return true;if(e[c].d+e[c].a>=e[d].d&&e[c].d<=e[d].d+e[d].a)return true}}if(c!=0&&!!e[c-1]){if(e[c].c-e[c-1].c-e[c].b>5*b)return true;if(e[c].d-e[c-1].d-e[c].a>5*b)return true}}}return false};Urb.BF=function BF(a,b){a.b=b};Urb.CF=function CF(a,b){var c,d,e;a.c=b;for(e=new Krb.ueb(a.g);e.a<e.c.a.length;){c=Krb.teb(e);Jrb.vm(c,b)}for(d=new Krb.ueb(a.f);d.a<d.c.a.length;){c=Krb.teb(d);Jrb.vm(c,b)}};Urb.DF=function DF(a,b){a.e=b};Urb.EF=function EF(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;h=Urb.pF(a);g=tX(Drb.c3,itb,6,h+1,16,1);for(o=new Krb.ueb(a.g);o.a<o.c.a.length;){m=Krb.teb(o);for(c=0;c<m.q;c++){e=$wnd.Math.abs(m.w[c]);if(e!=0){if(g[e])throw h3(new Erb._z('Duplicate mapping no in reactants'));g[e]=true}}}f=tX(Drb.c3,itb,6,h+1,16,1);for(l=new Krb.ueb(a.f);l.a<l.c.a.length;){j=Krb.teb(l);for(c=0;c<j.q;c++){e=$wnd.Math.abs(j.w[c]);if(e!=0){if(f[e])throw h3(new Erb._z('Duplicate mapping no in products'));f[e]=true}}}i=tX(Drb.NY,Qsb,6,h+1,15,1);d=0;for(b=1;b<=h;b++)g[b]&&f[b]&&(i[b]=++d);if(d!=h){for(n=new Krb.ueb(a.g);n.a<n.c.a.length;){m=Krb.teb(n);for(c=0;c<m.q;c++)Jrb.$l(m,c,i[$wnd.Math.abs(m.w[c])],m.w[c]<0)}for(k=new Krb.ueb(a.f);k.a<k.c.a.length;){j=Krb.teb(k);for(c=0;c<j.q;c++)Jrb.$l(j,c,i[$wnd.Math.abs(j.w[c])],j.w[c]<0)}}};Urb.FF=function FF(){this.g=new Krb.Yi;this.f=new Krb.Yi;this.a=new Krb.Yi;this.d=-1;this.c=false};Urb.GF=function GF(a){var b,c,d,e,f,g;Urb.FF.call(this);g=!a?0:!a.g?0:a.g.a.length;f=!a?0:!a.f?0:a.f.a.length;b=!a?0:!a.a?0:a.a.a.length;for(d=0;d<g;d++)Krb.Ei(this.g,new Jrb.Iu(Krb.Ji(a.g,d)));for(e=0;e<f;e++)Krb.Ei(this.f,new Jrb.Iu(Krb.Ji(a.f,e)));for(c=0;c<b;c++)Krb.Ei(this.a,new Jrb.Iu(Krb.Ji(a.a,c)));this.b=new Jrb.rj(a.b);a.e!=null&&(this.e=a.e);this.c=a.c||Urb.mF(a)};Urb.HF=function HF(a,b){Urb.FF.call(this);Krb.Gi(this.g,new Krb.rcb(new Krb.gfb(a),0,b));Krb.Gi(this.f,new Krb.rcb(new Krb.gfb(a),b,a.length));this.c=Urb.mF(this)};Z3(61,1,Psb,Urb.FF,Urb.GF,Urb.HF);_.c=false;_.d=0;Drb._$=B5(61);Urb.IF=function IF(){this.e=tX(Drb.e_,Bsb,52,2,0,1);this.e[0]=new Wrb.BG;this.e[1]=new Wrb.BG};Urb.JF=function JF(b){var c,d,e,f;Urb.IF.call(this);c=0;while(c!=-1){d=Hrb.rnb(b).indexOf('=\"',c);if(d==-1)break;e=(Hrb.lnb(c+1,d,Hrb.rnb(b).length),Hrb.rnb(b).substr(c+1,d-(c+1)));c=Hrb.rnb(b).indexOf('\"',d+2);f=c==-1?(Hrb.mnb(d+1,Hrb.rnb(b).length+1),Hrb.rnb(b).substr(d+1)):(Hrb.lnb(d+1,c,Hrb.rnb(b).length),Hrb.rnb(b).substr(d+1,c-(d+1)));if(Erb.k7(e,'x1'))try{this.e[0].a=g6(f)}catch(a){a=g3(a);if(!zY(a,39))throw h3(a)}else if(Erb.k7(e,'y1'))try{this.e[0].b=g6(f)}catch(a){a=g3(a);if(!zY(a,39))throw h3(a)}else if(Erb.k7(e,'x2'))try{this.e[1].a=g6(f)}catch(a){a=g3(a);if(!zY(a,39))throw h3(a)}else if(Erb.k7(e,'y2'))try{this.e[1].b=g6(f)}catch(a){a=g3(a);if(!zY(a,39))throw h3(a)}}};Z3(170,169,{169:1},Urb.IF,Urb.JF);_.nb=function KF(){var a;a=new Urb.IF;a.e[0].a=this.e[0].a;a.e[0].b=this.e[0].b;a.e[1].a=this.e[1].a;a.e[1].b=this.e[1].b;a.d=this.d;return a};_.ob=function LF(){var a;a=new Erb.S7;Erb.P7(a,' x1=\"'+this.e[0].a+'\"');Erb.P7(a,' y1=\"'+this.e[0].b+'\"');Erb.P7(a,' x2=\"'+this.e[1].a+'\"');Erb.P7(a,' y2=\"'+this.e[1].b+'\"');return a.a};_.pb=function MF(){return 'arrow'};Drb.$$=B5(170);Urb.NF=function NF(a,b){var c,d,e,f,g,h,i,j,k;if(a==null)return null;h=a;j=null;i=null;k=null;g=null;c=Erb.o7(a,A7(35));if(c==-1){h=a}else{h=(Hrb.lnb(0,c,Hrb.rnb(a).length),Hrb.rnb(a).substr(0,c));d=Erb.p7(a,A7(35),c+1);if(d==-1){j=(Hrb.mnb(c+1,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(c+1))}else{j=(Hrb.lnb(c+1,d,Hrb.rnb(a).length),Hrb.rnb(a).substr(c+1,d-(c+1)));e=Erb.p7(a,A7(35),d+1);if(e==-1){i=(Hrb.mnb(d+1,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(d+1))}else{i=(Hrb.lnb(d+1,e,Hrb.rnb(a).length),Hrb.rnb(a).substr(d+1,e-(d+1)));f=Erb.p7(a,A7(35),e+1);if(f==-1){k=(Hrb.mnb(e+1,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(e+1))}else{k=(Hrb.lnb(e+1,f,Hrb.rnb(a).length),Hrb.rnb(a).substr(e+1,f-(e+1)));g=(Hrb.mnb(f+1,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(f+1))}}}}return Urb.OF(h,(b&1)!=0?j:null,(b&2)!=0?i:null,(b&4)!=0?k:null,(b&8)!=0?g:null,false,null)};Urb.OF=function OF(a,b,c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;if(a==null||Hrb.rnb(a).length==0){return null}o=false;l=0;t=0;i=0;w=Erb.o7(a,A7(33));if(w==-1){return null}!g?(g=new Urb.FF):Urb.lF(g);while(l!=-1){l>w&&(o=true);j=Erb.p7(a,A7(32),l);!o&&(j>w||j==-1)&&(j=w);k=null;if(j==-1){k=(Hrb.mnb(l,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(l));l=-1}else{k=(Hrb.lnb(l,j,Hrb.rnb(a).length),Hrb.rnb(a).substr(l,j-l));l=j+1}s=null;if(b!=null&&Hrb.rnb(b).length!=0){j=Erb.p7(b,A7(32),t);if(j==-1){s=(Hrb.mnb(t,Hrb.rnb(b).length+1),Hrb.rnb(b).substr(t))}else{s=(Hrb.lnb(t,j,Hrb.rnb(b).length),Hrb.rnb(b).substr(t,j-t));t=j+1}}h=null;if(c!=null&&Hrb.rnb(c).length!=0){j=Erb.p7(c,A7(32),i);if(j==-1){h=(Hrb.mnb(i,Hrb.rnb(c).length+1),Hrb.rnb(c).substr(i))}else{h=(Hrb.lnb(i,j,Hrb.rnb(c).length),Hrb.rnb(c).substr(i,j-i));i=j+1}}v=new Jrb.Fp(f);u=k==null?null:Jrb.wp(v,Hrb.Umb((q=k,hsb.Kab(),q)),h==null?null:Hrb.Umb((r=h,r)),0);s!=null&&Jrb.Ap(v,Hrb.Umb((p=s,hsb.Kab(),p)));o?(Krb.Ei(g.f,u),g.d=-1):(Krb.Ei(g.g,u),g.d=-1)}d!=null&&Hrb.rnb(d).length!=0&&Urb.BF(g,new Jrb.sj(d));if(e!=null&&Hrb.rnb(e).length!=0){v=new Jrb.Fp(f);m=0;n=Erb.o7(e,A7(43));while(n!=-1){Urb.fF(g,Jrb.tp(v,(Hrb.lnb(m,n,Hrb.rnb(e).length),Hrb.rnb(e).substr(m,n-m))));m=n+1;n=Erb.p7(e,A7(43),m)}Urb.fF(g,Jrb.tp(v,(Hrb.mnb(m,Hrb.rnb(e).length+1),Hrb.rnb(e).substr(m))))}return g};Urb.PF=function PF(a,b,c){var d,e,f,g,h,i,j,k,l;if(a==null)return null;i=a;k=null;j=null;l=null;h=null;d=Erb.o7(a,A7(35));if(d==-1){i=a}else{i=(Hrb.lnb(0,d,Hrb.rnb(a).length),Hrb.rnb(a).substr(0,d));e=Erb.p7(a,A7(35),d+1);if(e==-1){k=(Hrb.mnb(d+1,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(d+1))}else{k=(Hrb.lnb(d+1,e,Hrb.rnb(a).length),Hrb.rnb(a).substr(d+1,e-(d+1)));f=Erb.p7(a,A7(35),e+1);if(f==-1){j=(Hrb.mnb(e+1,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(e+1))}else{j=(Hrb.lnb(e+1,f,Hrb.rnb(a).length),Hrb.rnb(a).substr(e+1,f-(e+1)));g=Erb.p7(a,A7(35),f+1);if(g==-1){l=(Hrb.mnb(f+1,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(f+1))}else{l=(Hrb.lnb(f+1,g,Hrb.rnb(a).length),Hrb.rnb(a).substr(f+1,g-(f+1)));h=(Hrb.mnb(g+1,Hrb.rnb(a).length+1),Hrb.rnb(a).substr(g+1))}}}}return Urb.OF(i,k,j,l,h,b,c)};Urb.QF=function QF(a,b,c){var d,e;e=Urb.RF(a,b,(c&16)==0);if(e==null){return null}d=new Erb.K7(e[0]);if(c!=0){d.a+='#';(c&1)!=0&&e.length>1&&e[1]!=null&&Erb.H7(d,e[1])}c&=-2;if(c!=0){d.a+='#';(c&2)!=0&&e.length>2&&e[2]!=null&&Erb.H7(d,e[2])}c&=-3;if(c!=0){d.a+='#';(c&4)!=0&&e.length>3&&e[3]!=null&&Erb.H7(d,e[3])}c&=-5;if(c!=0){d.a+='#';(c&8)!=0&&e.length>4&&e[4]!=null&&Erb.H7(d,e[4])}return d.a};\nUrb.RF=function RF(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;if(!a||a.g.a.length==0||a.f.a.length==0){return null}k=tX(Drb.B0,Esb,2,a.g.a.length+a.f.a.length,6,1);o=tX(Drb.B0,Esb,2,a.g.a.length+a.f.a.length,6,1);f=tX(Drb.B0,Esb,2,a.g.a.length+a.f.a.length,6,1);for(i=0;i<a.g.a.length+a.f.a.length;i++){r=i<a.g.a.length?Krb.Ji(a.g,i):Krb.Ji(a.f,i-a.g.a.length);if(r.K&&i<a.g.a.length)for(d=0;d<r.q;d++)Jrb.cm(r,d,rub,false);e=new Jrb.eg(r);k[i]=Jrb.Kf(e);if(k[i]==null){return null}o[i]=Jrb.Jf(e);f[i]=Jrb.If(e,b)}l=new Erb.S7;g=new Erb.S7;p=new Erb.S7;for(j=0;j<a.g.a.length;j++){m=j;if(c){q='';m=-1;for(n=0;n<a.g.a.length;n++){if(Erb.e7(q,k[n])<0){q=k[n];m=n}}}if(j>0){l.a+=' ';p.a+=' ';g.a+=' '}Erb.P7(l,k[m]);Erb.P7(p,o[m]);Erb.P7(g,f[m]);k[m]=''}l.a+='!';p.a+=' ';g.a+=' ';for(h=a.g.a.length;h<a.g.a.length+a.f.a.length;h++){m=h;if(c){q='';m=-1;for(n=a.g.a.length;n<a.g.a.length+a.f.a.length;n++){if(Erb.e7(q,k[n])<0){q=k[n];m=n}}}if(h>a.g.a.length){l.a+=' ';p.a+=' ';g.a+=' '}Erb.P7(l,k[m]);Erb.P7(p,o[m]);Erb.P7(g,f[m]);k[m]=''}s=tX(Drb.B0,Esb,2,5,6,1);s[0]=l.a;Hrb.rnb(p.a).length>a.g.a.length+a.f.a.length-1&&(s[1]=p.a);Hrb.rnb(g.a).length>a.g.a.length+a.f.a.length-1&&(s[2]=g.a);!!a.b&&(s[3]=Jrb.qj(a.b));a.a.a.length!=0&&(s[4]=Urb.SF(a,b));return s};Urb.SF=function SF(a,b){var c,d,e;e=new Erb.S7;for(d=0;d<a.a.a.length;d++){Hrb.rnb(e.a).length!=0&&(e.a+='+',e);c=new Jrb.eg(Krb.Ji(a.a,d));Erb.P7(e,Jrb.Kf(c));if(b){e.a+=' ';Erb.P7(e,Jrb.If(c,true))}}return e.a};Urb.TF=function TF(a,b,c,d,e){var f,g,h,i;if((b.u[c]&3)!=0&&(b.u[c]&4)==0&&t3(j3(b.B[c],rub),0)){h=$wnd.Math.abs(b.w[c]);if(h!=0){for(g=0;g<a.c.g.a.length;g++){f=Urb.vF(a.c,g);for(i=0;i<f.f;i++){if($wnd.Math.abs(f.w[i])==h){if(b.j[c]==d.j[e])return true;if(E3(j3(f.B[i],Utb),0))return true;if((f.u[i]&_tb)>>18!=(b.u[c]&_tb)>>18)return true;return false}}}}}return false};Urb.UF=function UF(a,b,c,d){var e,f,g,h,i,j,k,l,m,n;m=tX(Drb.NY,Qsb,6,a.f,15,1);n=Urb.WF(a,b,m);g=false;f=false;l=new Krb.Yi;for(e=0;e<n;e++){if(Jrb.hl(a,m[e])){j=Jrb.Du(a,m[e],d);if(j==1||j==2){h=Jrb.xk(c,d[m[e]]);(h==1||h==2)&&(j==h?(g=true):(f=true))}i=tX(Drb.NY,Qsb,6,2,15,1);i[0]=m[e];i[1]=j;Hrb.Kmb(l.a,i)}}if(!g||!f){for(k=new Krb.ueb(l);k.a<k.c.a.length;){j=Krb.teb(k);i=j[1];(i==1||i==2)&&f&&(i=i==1?2:1);Jrb.bm(c,d[j[0]],i,true)}}};Urb.VF=function VF(a){var b,c,d,e,f,g,h,i,j,k,l;if(a.n!=null)return;if(a.b){d=a.j+1;a.p=tX(Drb.NY,ssb,25,a.o.length,0,3);for(f=0;f<a.o.length;f++){a.p[f]=tX(Drb.NY,lub,7,a.g[f].a.length,0,2);for(h=0;h<a.g[f].a.length;h++)a.p[f][h]=Urb.$F(a,f,Krb.Ji(a.g[f],h),d);d+=a.o[f].f;e=Urb.vF(a.c,f);for(b=0;b<e.f;b++)t3(j3(e.B[b],jtb),0)&&--d}}a.n=rX(Drb.JZ,[ssb,mvb],[112,27],0,[a.q,a.c.f.a.length],2);a.d=rX(Drb.B0,[ssb,Esb],[30,2],6,[a.q,a.c.f.a.length],2);a.e=tX(Drb.c3,itb,6,a.q,16,1);l=new Jrb.ku;k=new Erb.S7;g=0;c=0;if(a.q!=0){i=tX(Drb.NY,Qsb,6,a.o.length,15,1);do{j=Hrb.rnb(k.a).length;0<j?(k.a=Erb.x7(k.a,0,0)):0>j&&(k.a+=Erb.D7(tX(Drb.KY,iub,6,-j,15,1)));for(f=0;f<a.c.f.a.length;f++){xX(a.n[g],f,Urb.XF(a,a.g,i,f));a.d[g][f]=Jrb.Kf(new Jrb.eg(a.n[g][f]));Erb.P7(k,a.d[g][f])}a.e[g]=Jrb.iu(l,k.a)==-1;(!a.t||!a.e[g])&&++c;++g}while(Urb.bG(a,i)&&c<a.i)}};Urb.WF=function WF(a,b,c){var d,e,f,g,h,i;h=tX(Drb.c3,itb,6,a.f,16,1);c[0]=b;i=1;h[b]=true;for(f=0;f<i;f++){for(g=0;g<Jrb.Gn(a,c[f]);g++){e=Jrb.Hn(a,c[f],g);if((a.F[e]&64)!=0||Jrb.Qk(a,e)==2||Jrb.Ao(a,e)){d=Jrb.Fn(a,c[f],g);if(!h[d]){c[i++]=d;h[d]=true}}}}return i};Urb.XF=function XF(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb,fb,gb,hb,ib,jb,kb,lb,mb,nb,ob,pb,qb,rb,sb,tb,ub,vb,wb;B=Urb.uF(a.c,d);lb=new Jrb.Gu;p=0;q=0;vb=null;for(N=0;N<a.o.length;N++){C=Urb.vF(a.c,N);Jrb.ou(a.o[N],1);fb=Krb.Ji(b[N],c[N]);eb=tX(Drb.NY,Qsb,6,a.o[N].f,15,1);t=tX(Drb.c3,itb,6,a.o[N].f,16,1);u=tX(Drb.c3,itb,6,a.o[N].g,16,1);for(U=0;U<C.f;U++){if(fb[U]!=-1){if($wnd.Math.abs(C.w[U])==0){v=fb[U];t[v]=true;for(bb=0;bb<Jrb.Gn(a.o[N],v);bb++)u[Jrb.Hn(a.o[N],v,bb)]=true;for(ab=Jrb.rn(a.o[N],v);ab<Jrb.sn(a.o[N],v);ab++)u[Jrb.Hn(a.o[N],v,ab)]=true}else{eb[fb[U]]=$wnd.Math.abs(C.w[U])}}}for(V=0;V<C.g;V++){l=C.D[0][V];m=C.D[1][V];if($wnd.Math.abs(C.w[l])!=0&&$wnd.Math.abs(C.w[m])!=0){h=fb[l];i=fb[m];if(h!=-1&&i!=-1){for(ab=0;ab<a.o[N].g;ab++){if(Jrb.Ik(a.o[N],0,ab)==h&&Jrb.Ik(a.o[N],1,ab)==i||Jrb.Ik(a.o[N],0,ab)==i&&Jrb.Ik(a.o[N],1,ab)==h){u[ab]=true;break}}}}}ib=tX(Drb.NY,Qsb,6,a.o[N].f,15,1);for(W=0;W<a.o[N].f;W++){if(!t[W]){ib[W]=Jrb.Yj(a.o[N],lb,W,p,q);a.b&&Jrb.$l(lb,ib[W],a.p[N][c[N]][W],false);if(eb[W]!=0){Jrb.$l(lb,ib[W],eb[W],false);for(ab=0;ab<B.f;ab++){if($wnd.Math.abs(B.w[ab])==eb[W]){Jrb.Sl(lb,ib[W],B.s[ab]);Jrb.dm(lb,ib[W],B.u[ab]&48);if(a.f[d][ab]){kb=Jrb.xk(a.o[N],W);nb=j3(B.B[ab],rub);if(o3(nb,0)==0){Jrb.bm(lb,ib[W],3,false)}else if(o3(nb,rub)==0){!vb&&(vb=new Krb.Yi);Krb.Ei(vb,Erb.A6(ib[W]))}else{if(kb==1||kb==2){P=o3(nb,vzb)==0;for(cb=0;cb<Jrb.Gn(a.o[N],W);cb++){n=Jrb.Fn(a.o[N],W,cb);if(t[n]){for(db=0;db<Jrb.Gn(a.o[N],W);db++){jb=Jrb.Fn(a.o[N],W,db);!t[jb]&&jb>n&&(P=!P)}}}P&&(kb=kb==1?2:1);Jrb.bm(lb,ib[W],kb,false)}else{Jrb.bm(lb,ib[W],0,false)}}}break}}}}}for(X=0;X<a.o[N].g;X++)u[X]||Jrb.$j(a.o[N],lb,X,p,q,ib,true);p=Jrb.Ml(lb,1);q=Jrb.Ml(lb,2)}hb=tX(Drb.NY,Qsb,6,B.f,15,1);for(Y=0;Y<B.f;Y++){eb=$wnd.Math.abs(B.w[Y]);if(eb==0){hb[Y]=Jrb.Yj(B,lb,Y,p,q)}else{for(ab=0;ab<lb.q;ab++){if($wnd.Math.abs(lb.w[ab])==eb){hb[Y]=ab;break}}}}if(a.r){for(U=0;U<B.f;U++){Jrb._l(lb,hb[U],true);Jrb.gm(lb,hb[U],B.J[U].a);Jrb.hm(lb,hb[U],B.J[U].b)}}for(D=0;D<B.g;D++){if((B.G[D]&Xtb)!=0)continue;mb=Jrb.Zj(B,lb,D,p,q,hb[B.D[0][D]],hb[B.D[1][D]],false);ob=B.G[D]&31;if(ob!=0){A=false;Jrb.sm(lb,mb,31,false);F=Jrb.vk(B,B.D[0][D]);G=Jrb.vk(B,B.D[1][D]);for(M=0;!A&&M<a.c.g.a.length;M++){C=Urb.vF(a.c,M);for(J=0;!A&&J<C.g;J++){H=C.D[0][J];I=C.D[1][J];K=$wnd.Math.abs(C.w[H]);L=$wnd.Math.abs(C.w[I]);if(K!=0&&L!=0&&(K==F&&L==G||K==G&&L==F)){A=true;wb=C.G[J]&31;if(wb!=0){fb=Krb.Ji(b[M],c[M]);qb=fb[H];rb=fb[I];sb=Jrb.Dn(a.o[M],qb,rb);ub=Jrb.Tk(a.o[M],sb);tb=Jrb.Qk(a.o[M],sb);wb&=7;ob&=7;wb==3&&ob==6?(lb.H[mb]=tb<=1?2:4,lb.T=0):wb==6&&ob==3?(lb.H[mb]=tb==3?2:1,lb.T=0):(lb.H[mb]=ub,lb.T=0)}}}}}}Jrb.ou(lb,1);r=false;for(Z=0;Z<B.f;Z++){if($wnd.Math.abs(B.w[Z])==0){kb=Jrb.Du(B,Z,hb);Jrb.bm(lb,hb[Z],kb,false)}else if(a.f[d][Z]&&Urb.TF(a,B,Z,lb,hb[Z])){kb=Jrb.Du(B,Z,hb);Jrb.bm(lb,hb[Z],kb,false);if(kb==1||kb==2){s=(B.u[Z]&_tb)>>18;o=(B.u[Z]&_tb)>>18!=1&&(B.u[Z]&_tb)>>18!=2?-1:(B.u[Z]&Cub)>>20;s==1?(o+=p):s==2&&(o+=q);Jrb.Xl(lb,hb[Z],s,o);r=true}}}if(r){p=Jrb.Ml(lb,1);q=Jrb.Ml(lb,2)}pb=tX(Drb.c3,itb,6,B.q,16,1);for($=0;$<B.f;$++)a.f[d][$]&&!pb[$]&&(B.u[$]&4)!=0&&t3(j3(B.B[$],rub),0)&&B.j[$]==Jrb.Gn(lb,hb[$])&&Urb.UF(B,$,lb,hb);O=tX(Drb.c3,itb,6,lb.q,16,1);for(R=hb,S=0,T=R.length;S<T;++S){Q=R[S];O[Q]=true}w=true;while(w){w=false;for(k=0;k<lb.r;k++){h=lb.D[0][k];i=lb.D[1][k];if(O[h]&&!O[i]){O[i]=true;w=true}else if(O[i]&&!O[h]){O[h]=true;w=true}}}for(g=0;g<lb.q;g++)Jrb.em(lb,g,!O[g]);Jrb.hk(lb);if(!a.b)for(j=0;j<lb.q;j++)lb.w[j]=0;Jrb.de(new Jrb.qe(lb),null,false);lb.T|=8;gb=2|(a.r?8:0);Nrb.gy(new Nrb.zy(gb),lb);if(vb){Jrb.ou(lb,15);for(f=new Krb.ueb(vb);f.a<f.c.a.length;){e=Krb.teb(f).a;if((lb.u[e]&Hub)!=0){Jrb.bm(lb,e,1,false);Jrb.Xl(lb,e,1,p++)}}}return lb};Urb.YF=function YF(a){var b,c;b=a.q;if(a.t)for(c=0;c<a.q;c++)a.e[c]&&--b;a.i>0&&b>a.i&&(b=a.i);return b};Urb.ZF=function ZF(a){var b,c,d;Urb.VF(a);d=tX(Drb.JZ,ssb,112,Urb.YF(a),0,2);b=0;for(c=0;c<a.q&&b<a.i;c++)(!a.t||!a.e[c])&&(d[b++]=a.n[c]);return d};Urb.$F=function $F(a,b,c,d){var e,f,g,h;h=tX(Drb.NY,Qsb,6,a.o[b].f,15,1);Krb.Meb(h,h.length,-1);f=Urb.vF(a.c,b);for(e=0;e<f.f;e++)c[e]!=-1&&(h[c[e]]=$wnd.Math.abs(f.w[e]));for(g=0;g<h.length;g++)h[g]==-1&&(h[g]=d++);return h};Urb._F=function _F(a,b){var c,d,e,f;c=tX(Drb.NY,Qsb,6,a.j[b]-Jrb.Jn(a,b),15,1);f=0;for(e=0;e<a.j[b];e++){d=a.i[b][e];t3(j3(a.B[d],jtb),0)&&(c[f++]=a.C[d])}Hrb.Nmb(c,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));return c};Urb.aG=function aG(a,b){var c,d,e,f;f=tX(Drb.NY,Qsb,6,a.j[b]-Jrb.Jn(a,b),15,1);e=0;for(d=0;d<a.j[b];d++){c=a.i[b][d];t3(j3(a.B[c],jtb),0)&&(f[e++]=$wnd.Math.abs(a.w[c]))}Hrb.Nmb(f,Hrb.rnb(a4(Krb.ofb.prototype.pc,Krb.ofb,[])));return f};Urb.bG=function bG(a,b){var c;for(c=0;c<b.length;c++){if(b[c]<a.g[c].a.length-1){++b[c];return true}b[c]=0}return false};Urb.cG=function cG(a,b){var c,d,e,f,g,h,i,j,k,l;a.j=0;for(e=0;e<b.g.a.length+b.f.a.length;e++){i=Urb.rF(a.c,e);for(c=0;c<i.f;c++){E3(j3(i.B[c],jtb),0)?(i.w[c]=0):a.j<$wnd.Math.abs(i.w[c])&&(a.j=$wnd.Math.abs(i.w[c]))}}l=tX(Drb.c3,itb,6,a.j+1,16,1);for(f=0;f<b.g.a.length;f++){k=Krb.Ji(b.g,f);for(c=0;c<k.f;c++){h=$wnd.Math.abs(k.w[c]);h!=0&&(l[h]=true)}}for(g=0;g<b.f.a.length;g++){j=Krb.Ji(b.f,g);for(c=0;c<j.f;c++){h=$wnd.Math.abs(j.w[c]);h!=0&&(l[h]?(l[h]=false):(j.w[c]=0))}}for(d=0;d<b.g.a.length;d++){k=Krb.Ji(b.g,d);for(c=0;c<k.f;c++){h=$wnd.Math.abs(k.w[c]);h!=0&&l[h]&&(k.w[c]=0)}}};Urb.dG=function dG(a,b,c){var d,e,f,g,h,i,j,k;a.o[b]=c;a.n=null;e=Urb.vF(a.c,b);Jrb.qs(a.s,e,a.o[b]);i=8+(a.a?0:1);if(Jrb.ds(a.s,5,i)==0){a.g[b]=new Krb.Yi;a.q=0;return false}a.g[b]=a.s.D;for(g=a.g[b].a.length-1;g>=0;g--){j=Krb.Ji(a.g[b],g);for(h=0;h<j.length;h++){if(j[h]!=-1){d=0;if(a.a&&e.s[h]==0&&Jrb.mk(a.o[b],j[h])!=0){k=Jrb.$k(a.o[b],j[h]);d=Jrb.Xk(a.o[b],j[h],k)}if(a.k[b][h]>0&&a.k[b][h]>Jrb.Rn(a.o[b],j[h])-d){Krb.Qi(a.g[b],g);break}}}}a.q=1;for(f=0;f<a.o.length;f++)a.q*=!a.g[f]?0:a.g[f].a.length;return true};Urb.eG=function eG(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;this.r=true;this.b=false;this.t=true;this.a=false;this.i=xsb;this.c=a;this.o=tX(Drb.JZ,mvb,27,a.g.a.length,0,1);for(d=0;d<a.g.a.length;d++){Jrb.vm(Krb.Ji(a.g,d),true);Jrb.ou(Krb.Ji(a.g,d),15)}for(e=0;e<a.f.a.length;e++)Jrb.ou(Krb.Ji(a.f,e),15);Urb.cG(this,a);this.k=tX(Drb.NY,lub,7,a.g.a.length,0,2);for(f=0;f<a.g.a.length;f++){l=Krb.Ji(a.g,f);this.k[f]=tX(Drb.NY,Qsb,6,l.f,15,1);for(g=0;g<l.f;g++){j=$wnd.Math.abs(l.w[g]);if(j!=0){for(h=0;h<a.f.a.length;h++){k=Krb.Ji(a.f,h);for(i=0;i<k.f;i++){if($wnd.Math.abs(k.w[i])==j){b=(n=Jrb.$k(l,g),n+Jrb.Yk(l,g,n,l.C[g])-Jrb.ao(l,g)-(m=Jrb.$k(k,i),m+Jrb.Yk(k,i,m,k.C[i])-Jrb.ao(k,i)));this.k[f][g]=$wnd.Math.max(b,0)}}}}}}this.f=tX(Drb.c3,ssb,11,a.f.a.length,0,2);for(c=0;c<a.f.a.length;c++){k=Krb.Ji(a.f,c);this.f[c]=tX(Drb.c3,itb,6,k.f,16,1);for(g=0;g<k.f;g++){j=$wnd.Math.abs(k.w[g]);if(j!=0){for(h=0;h<a.g.a.length;h++){l=Krb.Ji(a.g,h);for(i=0;i<l.f;i++){$wnd.Math.abs(l.w[i])==j&&(Zrb.gV(Urb.aG(k,g),Urb.aG(l,i))!=0||Zrb.gV(Urb._F(k,g),Urb._F(l,i))!=0)&&(this.f[c][g]=true)}}}}}this.s=new Jrb.xs;this.g=tX(Drb.h1,ssb,18,this.o.length,0,1)};Urb.fG=function fG(a){Urb.eG.call(this,a)};Z3(183,1,{},Urb.fG);_.a=false;_.b=false;_.i=0;_.j=0;_.q=0;_.r=false;_.t=false;Drb.a_=B5(183);Urb.gG=function gG(a,b,c){var d,e,f;Jrb.ou(b,1);e=Krb.Ji(a.a,c);for(d=0;d<a.d.d.a.length;d++){f=Zrb.nV(a.d,d);Urb.jG(f,b,e)}Jrb.gk(b)};Urb.hG=function hG(a,b){var c,d,e;a.f=b;Jrb.qs(a.e,a.c,a.f);if(Jrb.ds(a.e,4,8)==0){a.a=null;return 0}a.a=a.e.D;for(c=a.a.a.length-1;c>=0;c--){e=Krb.Ji(a.a,c);for(d=0;d<e.length;d++){if(e[d]!=-1){if(a.b[d]>0&&a.b[d]>Jrb.Rn(a.f,e[d])){Krb.Qi(a.a,c);break}}}}return a.a.a.length};Urb.iG=function iG(a,b){var c,d,e,f,g,h,i,j,k,l,m;Jrb.ou(a,7);Jrb.ou(b,7);this.c=a;this.d=new Zrb.qV;for(d=0;d<a.g;d++)Zrb.lV(this.d,new Urb.mG(a,d));for(c=0;c<b.g;c++){k=new Urb.mG(b,c);i=(h=Zrb.oV(this.d,k),h<0?-1:h);if(i==-1){k.i=(Urb.vG(),Urb.rG);Zrb.lV(this.d,k)}else{Urb.lG(Zrb.nV(this.d,i),k)}}for(g=this.d.d.a.length-1;g>=0;g--){k=Zrb.nV(this.d,g);k.i!=(Urb.vG(),Urb.uG)?Zrb.nV(this.d,g).i==Urb.sG&&Zrb.pV(this.d,g):(k.i=Urb.tG)}this.b=tX(Drb.NY,Qsb,6,a.f,15,1);for(f=0;f<a.f;f++){for(j=0;j<b.f;j++){if($wnd.Math.abs(b.w[j])==$wnd.Math.abs(a.w[f])){e=(m=Jrb.$k(a,f),m+Jrb.Yk(a,f,m,a.C[f])-Jrb.ao(a,f)-(l=Jrb.$k(b,j),l+Jrb.Yk(b,j,l,b.C[j])-Jrb.ao(b,j)));this.b[f]=e>0?e:0;break}}}this.e=new Jrb.xs};Z3(245,1,{},Urb.iG);Drb.d_=B5(245);Urb.jG=function jG(a,b,c){var d,e,f,g;d=c[a.a];e=c[a.b];if(a.i==(Urb.vG(),Urb.rG)){Jrb.Jj(b,d,e,a.g);return true}else{f=Jrb.Dn(b,d,e);if(a.i==Urb.pG){Jrb.tm(b,f,a.g);return true}else if(a.i==Urb.qG){g=Jrb.Qk(b,f)+a.f;if(g>=0&&g<=3){Jrb.tm(b,f,(Jrb.Ej(),g==0?16:g==1?1:g==2?386:g==3?4:g==4?32:64));return true}}else if(a.i==Urb.tG){b.H[f]=512;return true}}return false};Urb.kG=function kG(a,b){if(a.d!=b.d)return a.d<b.d?-1:1;if(a.e!=b.e)return a.e<b.e?-1:1;return 0};Urb.lG=function lG(a,b){var c,d;if(a.c==b.c){a.i=(Urb.vG(),Urb.sG)}else if(p6(b.c)==1){a.g=b.c==1?1:b.c==2?386:b.c==4?4:b.c==16?16:8;a.i=(Urb.vG(),Urb.pG)}else{c=(a.c&16)!=0?0:(a.c&1)!=0?1:(a.c&2)!=0?2:3;d=(b.c&16)!=0?0:(b.c&1)!=0?1:(b.c&2)!=0?2:3;if(d==c)a.i=(Urb.vG(),Urb.sG);else{a.f=d-c;a.i=(Urb.vG(),Urb.qG)}}};Urb.mG=function mG(a,b){var c,d,e;this.a=a.D[0][b];this.b=a.D[1][b];d=Jrb.vk(a,this.a);e=Jrb.vk(a,this.b);if(d<e){this.d=d;this.e=e}else{this.d=e;this.e=d}this.c=a.G[b]&31;c=a.H[b]&127;c==16?(this.c|=16):c==2?(this.c|=2):c==4?(this.c|=4):(this.c|=1);this.i=(Urb.vG(),Urb.uG)};Z3(145,1,{145:1,28:1},Urb.mG);_.rb=function nG(a){return Urb.kG(this,a)};_.jb=function oG(a){return this.d==a.d&&this.e==a.e};_.a=0;_.b=0;_.c=0;_.d=0;_.e=0;_.f=0;_.g=0;Drb.c_=B5(145);Urb.vG=function vG(){Urb.vG=_3;Urb.rG=new Urb.wG('CREATE',0);Urb.qG=new Urb.wG('CHANGE_DIF',1);Urb.pG=new Urb.wG('CHANGE_ABS',2);Urb.tG=new Urb.wG('REMOVE',3);Urb.sG=new Urb.wG('NO_CHANGE',4);Urb.uG=new Urb.wG('UNKNOWN',5)};Urb.wG=function wG(a,b){JA.call(this,a,b)};Urb.xG=function xG(){Urb.vG();return BX(nX(Drb.b_,1),xub,80,0,[Urb.rG,Urb.qG,Urb.pG,Urb.tG,Urb.sG,Urb.uG])};Z3(80,49,{80:1,4:1,28:1,49:1},Urb.wG);Drb.b_=C5(80,Urb.xG);Vrb.AG=function AG(){Vrb.AG=_3;Vrb.yG=BX(nX(Drb.B0,1),Esb,2,6,['','r0','r','r3','r3-4','r3-5','r3-6','r3-7','r4','r4-5','r4-6','r4-7','r>3','r5','r5-6','r5-7','r>4','r6','r6-7','r>5','r7','r>6','r>7']);Vrb.zG=BX(nX(Drb.OY,1),iub,6,14,[0,Vsb,Tub,Wsb,25769803776,60129542144,128849018880,266287972352,Xsb,51539607552,120259084288,257698037760,532575944704,Ysb,103079215104,240518168576,515396075520,Zsb,206158430208,481036337152,$sb,412316860416,_sb])};Wrb.BG=function BG(){};Wrb.CG=function CG(a,b){this.a=a;this.b=b};Z3(52,1,{52:1},Wrb.BG,Wrb.CG);_.mb=function DG(){return 'x:'+this.a+' y:'+this.b};_.a=0;_.b=0;Drb.e_=B5(52);Wrb.EG=function EG(a,b,c){if(a.a==a.b.length){a.b=Krb.Beb(a.b,2*a.a);a.c=Krb.Beb(a.c,2*a.a)}a.b[a.a]=b;a.c[a.a]=c;++a.a};Wrb.FG=function FG(a){this.b=tX(Drb.LY,Osb,6,a,15,1);this.c=tX(Drb.LY,Osb,6,a,15,1);this.a=0};Z3(221,1,{348:1},Wrb.FG);_.a=0;Drb.f_=B5(221);Wrb.GG=function GG(a,b,c){return b>=a.c&&b<=a.c+a.b&&c>=a.d&&c<=a.d+a.a};Wrb.HG=function HG(a,b){return Wrb.GG(a,b.c,b.d)&&Wrb.GG(a,b.c+b.b,b.d+b.a)};Wrb.IG=function IG(a,b,c,d,e){a.c=b;a.d=c;a.b=d;a.a=e};Wrb.JG=function JG(a,b){var c,d,e,f;e=$wnd.Math.min(a.c,b.c);f=$wnd.Math.min(a.d,b.d);d=$wnd.Math.max(a.c+a.b,b.c+b.b)-e;c=$wnd.Math.max(a.d+a.a,b.d+b.a)-f;return new Wrb.LG(e,f,d,c)};Wrb.KG=function KG(){};Wrb.LG=function LG(a,b,c,d){this.c=a;this.d=b;this.b=c;this.a=d};Z3(47,1,{47:1,348:1},Wrb.KG,Wrb.LG);_.mb=function MG(){return 'x:'+this.c+' y:'+this.d+' w:'+this.b+' h:'+this.a};_.a=0;_.b=0;_.c=0;_.d=0;Drb.g_=B5(47);Xrb.SG=function SG(){};Xrb.TG=function TG(a,b){switch(b){default:case 0:return Jrb.kh(a.a,0);case 1:return Jrb.kh(a.a,1);case 2:return Jrb.kh(a.a,2);case 3:return Jrb.kh(a.a,3);case 4:return Jrb.kh(a.a,4);}};Z3(347,1,{},Xrb.SG);Xrb.NG=2;Xrb.OG=0;Xrb.PG=1;Xrb.QG=4;Xrb.RG=3;Drb.h_=B5(347);Xrb.YG=function YG(a){this.a=new msb._nb(Drb.r3(a))};Z3(349,1,{},Xrb.YG);_.getConformerCount=function ZG(){return this.a.p};_.getNextConformerAsMolecule=function $G(a){var b,c;b=!a?null:a.a;c=msb.Pnb(this.a,b);if(!c)return null;if(c==b)return a;return new Yrb.kN(c)};_.getOCL=function _G(){return $wnd.OCL};_.getOneConformerAsMolecule=function aH(a){var b;b=msb.Rnb(this.a,a.a);return !b?null:a};_.getPotentialConformerCount=function bH(){return msb.Snb(this.a)};_.Nb=function cH(a,b,c,d){return msb.Vnb(this.a,a.a,b,c,d)};_.initializeConformers=function dH(a,b){b===undefined&&(b={});var c=b.strategy;c===undefined&&(c=3);var d=b.maxTorsionSets;d===undefined&&(d=Bvb);var e=b.use60degreeSteps;e===undefined&&(e=false);return this.Nb(a,c,d,e)};Xrb.UG=4;Xrb.VG=3;Xrb.WG=1;Xrb.XG=2;Drb.i_=B5(349);Xrb.eH=function eH(){};Xrb.fH=function fH(a,b,c,d,e){return Trb.cE(a,b,c,d,e)};Z3(351,1,{},Xrb.eH);Drb.j_=B5(351);Xrb.iH=function iH(){Xrb.iH=_3;Xrb.hH=(!Xrb.yI&&(Xrb.yI=new Xrb.BI),Xrb.yI)};Xrb.jH=function jH(){Xrb.iH();this.a=new Trb.iE};Z3(352,1,{},Xrb.jH);_.assessDruglikeness=function kH(a){var b;return Trb.gE(this.a,(b=a.a,Xrb.AI(Xrb.hH),b))};_.getDetail=function lH(){return Xrb.DI(this.a.a)};_.getDruglikenessString=function mH(a){return Trb.hE(a.a)};_.getOCL=function nH(){return $wnd.OCL};Xrb.gH=-999;Drb.k_=B5(352);Xrb.uH=function uH(a,b,c){Xrb.yH(b);this.a=new Prb.xA(a.a,b,new Krb.thb)};\nXrb.yH=function yH(a){if(Erb.k7(a,wzb)&&!Xrb.rH){Prb.rA();Prb.yA(wzb,new Prb.pB('117\\nint,int,int,int,float\\n0,2,0,0,0.020\\n1,2,1,2,0.030\\n1,2,2,2,0.027\\n1,2,2,3,0.026\\n1,2,2,5,0.013\\n1,2,2,37,0.032\\n2,2,2,5,0.013\\n2,2,3,5,0.012\\n2,2,5,5,0.006\\n2,2,5,6,0.027\\n2,2,5,37,0.017\\n2,2,5,40,0.012\\n2,2,5,41,0.008\\n0,3,0,0,0.130\\n1,3,1,7,0.146\\n1,3,2,7,0.138\\n1,3,3,7,0.134\\n1,3,5,7,0.122\\n1,3,6,7,0.141\\n1,3,7,10,0.129\\n1,3,7,37,0.138\\n2,3,5,7,0.113\\n2,3,5,9,0.081\\n2,3,6,7,0.127\\n2,3,7,10,0.116\\n3,3,5,7,0.113\\n3,3,6,7,0.127\\n5,3,5,7,0.103\\n5,3,5,9,0.074\\n5,3,5,54,0.078\\n5,3,6,7,0.119\\n5,3,7,10,0.102\\n5,3,9,40,0.067\\n6,3,7,37,0.127\\n7,3,10,10,0.113\\n7,3,20,20,0.151\\n9,3,40,40,0.057\\n0,8,0,0,0.000\\n0,10,0,0,-0.020\\n1,10,1,3,-0.02\\n1,10,3,6,-0.033\\n1,10,3,28,-0.02\\n3,10,3,28,-0.030\\n3,10,28,28,-0.019\\n0,17,0,0,0.000\\n0,26,0,0,0.000\\n0,30,0,0,0.010\\n5,30,20,30,0.008\\n0,37,0,0,0.035\\n1,37,37,37,0.040\\n2,37,37,37,0.031\\n3,37,37,37,0.027\\n5,37,37,37,0.015\\n5,37,37,38,0.046\\n5,37,37,63,0.008\\n5,37,37,64,0.012\\n5,37,37,69,0.016\\n5,37,38,38,0.084\\n6,37,37,37,0.048\\n15,37,37,37,0.025\\n37,37,37,40,0.046\\n0,39,0,0,0.020\\n1,39,63,63,0.012\\n23,39,63,63,-0.014\\n23,39,63,65,0.021\\n23,39,65,65,0.062\\n0,40,0,0,-0.005\\n1,40,28,37,-0.006\\n2,40,28,28,-0.007\\n3,40,28,28,-0.007\\n28,40,28,37,0.004\\n0,41,0,0,0.180\\n1,41,32,32,0.178\\n2,41,32,32,0.161\\n5,41,32,32,0.158\\n0,43,0,0,0.000\\n0,45,0,0,0.150\\n0,49,0,0,0.000\\n50,49,50,50,0.000\\n0,54,0,0,0.020\\n1,54,3,36,0.016\\n3,54,36,36,0.018\\n0,55,0,0,0.020\\n1,55,36,57,0.020\\n36,55,36,57,0.020\\n0,56,0,0,0.020\\n1,56,36,57,0.020\\n36,56,36,57,0.020\\n0,57,0,0,0.080\\n5,57,55,55,0.038\\n56,57,56,56,0.158\\n0,58,0,0,0.025\\n0,63,0,0,0.050\\n5,63,39,64,0.019\\n5,63,39,66,0.068\\n5,63,44,64,0.014\\n5,63,44,66,0.055\\n5,63,59,64,0.033\\n5,63,59,66,0.085\\n37,63,39,64,0.010\\n0,64,0,0,0.040\\n5,64,63,64,0.006\\n5,64,63,66,0.043\\n5,64,64,65,0.052\\n5,64,65,66,0.094\\n37,64,63,64,-0.011\\n0,67,0,0,0.070\\n0,69,0,0,0.070\\n32,69,37,37,0.067\\n0,73,0,0,0.000\\n0,78,0,0,0.045\\n5,78,78,81,0.046\\n0,80,0,0,0.080\\n5,80,81,81,0.057\\n0,81,0,0,0.025\\n36,81,78,80,0.016\\n0,82,0,0,0.000\\n','926\\nint,int,int,int,int,float,float,float\\n0,0,1,1,0,0.000,0.000,0.300\\n5,0,1,1,0,0.200,-0.800,1.500\\n0,1,1,1,1,0.103,0.681,0.332\\n5,1,1,1,1,0.144,-0.547,1.126\\n0,1,1,1,2,-0.295,0.438,0.584\\n0,1,1,1,3,0.066,-0.156,0.143\\n0,1,1,1,5,0.639,-0.630,0.264\\n0,1,1,1,6,-0.688,1.757,0.477\\n5,1,1,1,6,0.000,0.000,0.054\\n0,1,1,1,8,-1.420,-0.092,1.101\\n5,1,1,1,8,0.000,-0.158,0.323\\n0,1,1,1,11,0.593,0.662,1.120\\n0,1,1,1,12,-0.678,0.417,0.624\\n0,1,1,1,15,-0.714,0.698,0.000\\n0,1,1,1,34,-0.647,0.550,0.590\\n0,2,1,1,5,0.321,-0.411,0.144\\n0,3,1,1,3,0.443,0.000,-1.140\\n0,3,1,1,5,-0.256,0.058,0.000\\n0,3,1,1,6,-0.679,-0.029,0.000\\n0,5,1,1,5,0.284,-1.386,0.314\\n0,5,1,1,6,-0.654,1.072,0.279\\n0,5,1,1,8,-0.744,-1.235,0.337\\n0,5,1,1,10,0.000,0.000,0.427\\n0,5,1,1,11,0.000,0.516,0.291\\n0,5,1,1,12,0.678,-0.602,0.398\\n0,5,1,1,15,1.142,-0.644,0.367\\n0,5,1,1,25,0.000,0.000,0.295\\n0,5,1,1,34,0.692,-0.530,0.278\\n0,5,1,1,37,0.000,0.000,0.389\\n0,5,1,1,39,0.000,0.000,0.278\\n0,5,1,1,41,0.000,0.000,-0.141\\n0,5,1,1,56,0.000,0.000,0.324\\n0,5,1,1,68,0.000,0.000,0.136\\n0,6,1,1,6,0.408,1.397,0.961\\n5,6,1,1,6,0.313,-1.035,1.631\\n0,8,1,1,8,1.055,0.834,0.000\\n0,11,1,1,11,-0.387,-0.543,1.405\\n0,12,1,1,12,0.000,0.000,0.893\\n0,15,1,1,15,-0.177,0.000,0.049\\n0,0,1,2,0,0.000,0.000,0.000\\n2,0,1,2,0,0.000,0.000,0.000\\n5,0,1,2,0,0.000,0.000,0.000\\n0,0,1,2,2,0.000,0.000,-0.650\\n5,0,1,2,2,0.000,0.000,-0.650\\n0,1,1,2,1,0.419,0.296,0.282\\n0,1,1,2,2,-0.494,0.274,-0.630\\n0,1,1,2,5,0.075,0.000,0.358\\n0,2,1,2,2,-0.293,0.115,-0.508\\n0,2,1,2,5,0.301,0.104,0.507\\n0,3,1,2,1,0.565,-0.554,0.234\\n0,3,1,2,2,-0.577,-0.482,-0.427\\n0,3,1,2,5,0.082,0.000,0.123\\n0,5,1,2,1,0.000,-0.184,0.220\\n0,5,1,2,2,0.501,-0.410,-0.535\\n2,5,1,2,2,0.000,0.000,0.055\\n2,5,1,2,3,0.000,0.000,-0.108\\n0,5,1,2,5,-0.523,-0.228,0.208\\n2,5,1,2,37,0.000,0.000,0.000\\n0,6,1,2,1,-0.467,0.000,0.490\\n0,6,1,2,2,0.425,0.168,-0.875\\n0,6,1,2,5,0.000,0.136,0.396\\n0,8,1,2,1,-0.504,0.371,0.557\\n0,8,1,2,2,0.541,0.539,-1.009\\n0,8,1,2,5,0.000,0.204,0.464\\n0,0,1,3,0,0.000,0.400,0.300\\n2,0,1,3,0,0.000,0.500,0.350\\n5,0,1,3,0,0.000,0.000,0.000\\n0,0,1,3,1,0.000,0.000,0.550\\n0,0,1,3,5,0.000,0.200,0.700\\n0,0,1,3,7,0.000,0.400,0.400\\n0,1,1,3,1,0.103,0.177,0.545\\n0,1,1,3,5,-0.072,0.316,0.674\\n0,1,1,3,6,-0.117,-0.333,0.202\\n0,1,1,3,7,0.825,0.139,0.325\\n0,1,1,3,10,-0.927,1.112,1.388\\n0,2,1,3,5,0.663,-0.167,0.426\\n0,2,1,3,7,-0.758,0.112,0.563\\n0,5,1,3,1,-0.073,0.085,0.531\\n2,5,1,3,2,0.000,0.000,0.115\\n2,5,1,3,3,0.000,0.000,0.446\\n0,5,1,3,5,-0.822,0.501,1.008\\n0,5,1,3,6,0.000,-0.624,0.330\\n0,5,1,3,7,0.659,-1.407,0.308\\n0,5,1,3,10,-0.412,0.693,0.087\\n2,5,1,3,37,0.000,0.000,0.056\\n0,5,1,3,43,0.000,1.027,0.360\\n0,5,1,3,51,0.000,1.543,0.350\\n0,5,1,3,53,0.000,0.501,0.000\\n0,5,1,3,74,0.000,0.513,-0.344\\n0,5,1,3,75,0.000,0.511,-0.186\\n0,6,1,3,6,0.447,0.652,0.318\\n0,6,1,3,7,-0.395,0.730,-0.139\\n0,10,1,3,7,0.338,2.772,2.145\\n0,10,1,3,10,0.548,0.000,1.795\\n0,0,1,4,0,0.000,0.000,0.000\\n0,0,1,6,0,0.000,0.000,0.200\\n5,0,1,6,0,0.000,-0.200,0.400\\n0,1,1,6,1,-0.681,0.755,0.755\\n5,1,1,6,1,0.000,0.243,-0.596\\n0,1,1,6,3,-0.547,0.000,0.320\\n0,1,1,6,21,0.000,0.270,0.237\\n0,2,1,6,21,0.102,0.460,-0.128\\n0,3,1,6,21,-1.652,-1.660,0.283\\n0,5,1,6,1,0.571,0.319,0.570\\n0,5,1,6,2,0.000,0.000,0.306\\n0,5,1,6,3,0.572,0.000,-0.304\\n0,5,1,6,21,0.596,-0.276,0.346\\n0,5,1,6,25,0.000,0.000,0.061\\n0,5,1,6,37,0.000,0.000,0.106\\n0,5,1,6,45,0.000,0.000,-0.174\\n0,6,1,6,1,0.229,-0.710,0.722\\n5,6,1,6,1,0.000,0.000,0.040\\n0,6,1,6,21,1.488,-3.401,-0.320\\n0,37,1,6,21,0.712,1.320,-0.507\\n0,0,1,8,0,0.000,-0.300,0.500\\n5,0,1,8,0,0.000,0.000,0.297\\n0,1,1,8,1,-0.439,0.786,0.272\\n5,1,1,8,1,0.115,-0.390,0.658\\n0,1,1,8,6,-0.608,0.339,1.496\\n0,1,1,8,23,-0.428,0.323,0.280\\n0,2,1,8,23,0.594,-0.409,0.155\\n0,5,1,8,1,0.393,-0.385,0.562\\n0,5,1,8,6,0.598,-0.158,0.399\\n0,5,1,8,23,-0.152,-0.440,0.357\\n0,0,1,9,0,0.000,0.000,0.000\\n5,0,1,9,0,0.000,0.000,0.000\\n0,5,1,9,3,0.204,-0.335,-0.352\\n0,5,1,9,53,0.000,0.000,0.097\\n0,0,1,10,0,0.000,0.000,0.300\\n5,0,1,10,0,0.000,0.000,0.000\\n0,0,1,10,3,0.000,0.000,1.000\\n0,1,1,10,3,-1.027,0.694,0.948\\n0,1,1,10,6,0.159,-0.552,0.198\\n0,1,1,10,28,0.552,-0.380,0.326\\n0,3,1,10,3,3.100,-2.529,1.494\\n0,3,1,10,28,0.079,0.280,0.402\\n0,5,1,10,1,0.000,0.000,0.779\\n0,5,1,10,3,-2.099,1.363,0.021\\n0,5,1,10,6,-0.162,0.832,0.552\\n0,5,1,10,28,-0.616,0.000,0.274\\n0,0,1,15,0,0.000,0.000,0.400\\n5,0,1,15,0,0.000,0.000,0.336\\n0,1,1,15,1,-1.047,0.170,0.398\\n0,1,1,15,15,-1.438,0.263,0.501\\n0,1,1,15,71,-0.376,-0.133,0.288\\n0,5,1,15,1,1.143,-0.231,0.447\\n0,5,1,15,15,1.555,-0.323,0.456\\n0,5,1,15,37,0.000,0.000,0.459\\n0,5,1,15,71,0.229,0.203,0.440\\n0,0,1,17,0,0.000,0.000,0.350\\n5,0,1,17,0,0.000,0.000,0.000\\n0,5,1,17,1,0.000,0.000,0.536\\n0,5,1,17,7,0.000,0.000,0.212\\n0,0,1,18,0,0.000,0.000,0.100\\n5,0,1,18,0,0.000,0.000,0.112\\n0,5,1,18,1,0.000,0.000,0.000\\n0,5,1,18,6,0.000,0.000,0.099\\n0,5,1,18,32,0.000,0.585,0.388\\n0,5,1,18,43,0.000,-0.412,0.121\\n0,5,1,18,48,0.000,0.000,0.195\\n0,5,1,18,62,0.000,0.000,-0.088\\n0,0,1,19,0,0.000,0.000,0.150\\n5,0,1,19,0,0.000,0.000,0.179\\n0,5,1,19,5,0.000,0.000,0.196\\n0,5,1,19,6,0.000,0.000,0.176\\n0,5,1,19,12,0.000,0.000,0.152\\n0,0,1,20,0,0.000,0.000,0.350\\n5,0,1,20,0,0.000,0.000,0.350\\n0,5,1,20,5,0.000,0.000,0.344\\n0,5,1,20,20,0.000,0.000,0.361\\n0,0,1,22,0,0.000,0.000,0.236\\n5,0,1,22,0,0.000,0.000,0.236\\n0,0,1,25,0,0.000,0.000,0.300\\n5,0,1,25,0,0.000,0.000,0.251\\n0,1,1,25,1,0.000,-0.207,0.232\\n0,1,1,25,32,0.000,0.288,0.218\\n0,5,1,25,1,0.000,0.152,0.235\\n0,5,1,25,6,0.000,0.000,0.495\\n0,5,1,25,32,0.000,-0.130,0.214\\n0,5,1,25,43,0.000,0.000,0.466\\n0,5,1,25,72,0.000,0.000,0.243\\n0,0,1,26,0,0.000,0.000,0.450\\n5,0,1,26,0,0.000,0.000,0.376\\n0,5,1,26,12,0.000,0.000,0.439\\n0,5,1,26,71,0.000,0.000,0.472\\n0,0,1,34,0,0.000,0.000,0.250\\n5,0,1,34,0,0.000,0.000,0.198\\n0,1,1,34,36,0.000,0.000,0.187\\n0,5,1,34,1,0.000,0.000,0.247\\n0,5,1,34,36,0.000,0.000,0.259\\n0,0,1,37,0,0.000,0.000,0.200\\n5,0,1,37,0,0.000,0.000,0.000\\n0,1,1,37,37,0.000,0.449,0.000\\n0,5,1,37,37,0.000,-0.420,0.391\\n0,6,1,37,37,0.000,0.000,0.150\\n0,0,1,39,0,0.000,0.000,0.000\\n5,0,1,39,0,0.000,0.000,0.000\\n0,1,1,39,63,0.000,-0.080,-0.056\\n0,5,1,39,63,0.000,0.000,-0.113\\n0,0,1,40,0,0.000,0.000,0.250\\n5,0,1,40,0,0.000,0.000,0.297\\n0,5,1,40,28,0.000,-0.097,0.203\\n0,5,1,40,37,0.000,0.000,0.329\\n0,0,1,41,0,0.000,0.600,0.000\\n0,1,1,41,32,0.000,1.263,0.000\\n0,5,1,41,32,0.000,0.000,-0.106\\n0,5,1,41,72,0.000,0.632,0.000\\n0,0,1,43,0,0.000,0.000,0.150\\n5,0,1,43,0,0.000,0.000,0.297\\n0,5,1,43,18,0.357,-0.918,0.000\\n0,5,1,43,25,0.000,0.000,0.061\\n0,5,1,43,28,-0.249,0.382,0.343\\n0,0,1,45,0,0.000,0.000,0.100\\n0,5,1,45,32,0.000,0.000,0.125\\n0,0,1,46,0,0.000,0.000,-0.500\\n0,5,1,46,7,0.000,0.000,-0.540\\n0,0,1,54,0,0.000,0.000,0.000\\n2,0,1,54,0,0.000,0.000,0.000\\n5,0,1,54,0,0.000,0.000,0.000\\n0,5,1,54,3,0.000,0.000,-0.315\\n0,5,1,54,36,0.000,0.000,0.315\\n0,0,1,55,0,0.000,0.000,0.000\\n5,0,1,55,0,0.000,0.000,0.000\\n0,5,1,55,36,0.000,-0.058,0.084\\n0,5,1,55,57,0.000,-0.058,-0.092\\n0,0,1,56,0,0.000,0.000,-0.300\\n0,1,1,56,36,0.875,0.668,-0.015\\n0,1,1,56,57,-0.870,0.775,-0.406\\n0,5,1,56,36,-0.958,-0.629,-0.372\\n0,5,1,56,57,0.952,-0.715,-0.483\\n0,0,1,57,0,0.000,0.000,0.000\\n5,0,1,57,0,0.000,0.000,0.000\\n0,0,1,58,0,0.000,0.000,0.000\\n0,0,1,62,0,0.000,0.000,0.250\\n0,5,1,62,18,0.000,0.000,0.270\\n0,0,1,63,0,0.000,0.000,0.000\\n5,0,1,63,0,0.000,0.000,0.000\\n0,0,1,64,0,0.000,0.000,0.000\\n5,0,1,64,0,0.000,0.000,0.000\\n0,0,1,67,0,0.000,0.000,0.000\\n5,0,1,67,0,0.000,0.000,0.000\\n0,0,1,68,0,0.000,0.000,0.400\\n0,1,1,68,1,-0.117,0.090,0.751\\n0,1,1,68,23,0.373,0.153,0.635\\n0,1,1,68,32,-0.090,-0.169,0.075\\n0,5,1,68,1,0.134,-0.112,0.329\\n0,5,1,68,23,-0.361,-0.202,0.560\\n0,5,1,68,32,0.072,0.218,0.093\\n0,0,1,73,0,0.000,0.000,0.500\\n0,5,1,73,32,0.000,0.000,0.509\\n0,5,1,73,72,0.000,0.000,0.443\\n0,0,1,75,0,0.000,0.000,0.000\\n0,0,1,78,0,0.000,0.000,0.000\\n0,0,1,80,0,0.000,0.000,0.000\\n0,0,1,81,0,0.000,0.000,0.000\\n0,0,2,2,0,0.000,12.000,0.000\\n1,0,2,2,0,0.000,1.800,0.000\\n5,0,2,2,0,0.000,12.000,0.000\\n0,1,2,2,1,-0.403,12.000,0.000\\n0,1,2,2,2,0.000,12.000,0.000\\n1,1,2,2,2,-0.418,2.089,-0.310\\n0,1,2,2,5,0.000,12.000,0.000\\n1,1,2,2,5,0.412,2.120,0.269\\n1,2,2,2,2,0.094,1.621,0.877\\n0,2,2,2,5,0.000,12.000,0.000\\n1,2,2,2,5,0.317,1.421,-0.870\\n0,3,2,2,5,0.000,12.000,0.000\\n0,5,2,2,5,0.000,12.000,0.000\\n1,5,2,2,5,-0.406,1.767,0.000\\n0,5,2,2,6,0.000,12.000,0.000\\n0,5,2,2,37,0.000,12.000,0.000\\n0,5,2,2,40,0.000,12.000,0.000\\n0,5,2,2,41,0.000,12.000,0.000\\n0,5,2,2,45,0.000,12.000,0.000\\n0,5,2,2,62,0.000,12.000,0.000\\n1,0,2,3,0,0.000,2.500,0.000\\n1,1,2,3,1,0.136,1.798,0.630\\n1,1,2,3,5,0.497,2.405,0.357\\n1,1,2,3,6,-0.211,1.925,-0.131\\n1,1,2,3,7,-0.401,2.028,-0.318\\n1,1,2,3,10,-0.084,2.214,-0.610\\n1,2,2,3,1,-0.325,1.553,-0.487\\n1,2,2,3,5,-0.295,2.024,-0.590\\n1,2,2,3,6,-0.143,1.466,0.000\\n1,2,2,3,7,0.362,1.978,0.000\\n1,2,2,3,9,0.296,1.514,0.481\\n1,2,2,3,10,0.095,1.583,0.380\\n1,5,2,3,1,0.213,1.728,-0.042\\n1,5,2,3,5,-0.208,1.622,0.223\\n1,5,2,3,6,0.359,1.539,0.194\\n1,5,2,3,7,0.000,2.046,0.000\\n1,5,2,3,9,-0.290,1.519,-0.470\\n1,5,2,3,10,0.000,1.395,0.227\\n1,0,2,4,0,0.000,0.000,0.000\\n0,0,2,6,0,0.000,3.100,0.000\\n2,0,2,6,0,0.000,3.600,0.000\\n5,0,2,6,0,0.000,3.600,0.000\\n0,2,2,6,1,-1.953,3.953,-1.055\\n0,2,2,6,3,-1.712,2.596,-0.330\\n0,2,2,6,29,-0.215,2.810,-0.456\\n0,5,2,6,1,1.951,3.936,1.130\\n0,5,2,6,3,1.719,2.628,0.360\\n0,5,2,6,29,0.216,2.808,0.456\\n1,0,2,9,0,0.000,1.800,0.000\\n0,0,2,10,0,0.000,6.000,0.000\\n2,0,2,10,0,0.000,6.000,0.000\\n5,0,2,10,0,0.000,6.000,0.000\\n0,0,2,15,0,0.000,1.423,0.000\\n2,0,2,15,0,0.000,1.423,0.000\\n5,0,2,15,0,0.000,1.423,0.000\\n0,0,2,17,0,0.000,1.423,0.000\\n0,0,2,18,0,0.000,0.000,0.000\\n2,0,2,18,0,0.000,0.000,0.000\\n5,0,2,18,0,0.000,0.000,0.000\\n0,0,2,19,0,0.000,0.000,0.000\\n0,0,2,20,0,0.000,0.000,0.000\\n2,0,2,20,0,0.000,0.000,0.000\\n0,0,2,22,0,0.000,0.000,0.000\\n2,0,2,22,0,0.000,0.000,0.000\\n5,0,2,22,0,0.000,0.000,0.000\\n0,0,2,25,0,0.000,0.000,0.000\\n0,0,2,30,0,0.000,12.000,0.000\\n0,0,2,34,0,0.000,0.000,0.000\\n2,0,2,34,0,0.000,0.000,0.000\\n1,0,2,37,0,0.000,2.000,0.000\\n1,1,2,37,37,0.000,2.952,-0.079\\n1,2,2,37,37,0.000,1.542,0.434\\n1,5,2,37,37,0.000,1.308,-0.357\\n1,0,2,39,0,0.000,6.000,0.000\\n0,0,2,40,0,0.000,3.700,0.000\\n2,0,2,40,0,0.000,3.600,0.000\\n5,0,2,40,0,0.000,3.600,0.000\\n0,2,2,40,28,0.000,3.756,-0.530\\n0,5,2,40,28,0.073,3.698,0.291\\n0,0,2,41,0,0.000,1.200,0.000\\n2,0,2,41,0,0.000,1.800,0.000\\n0,2,2,41,32,0.000,1.235,0.000\\n0,5,2,41,32,0.000,1.231,0.000\\n0,0,2,43,0,0.000,3.600,0.000\\n2,0,2,43,0,0.000,3.600,0.000\\n0,0,2,45,0,0.000,2.200,0.000\\n2,0,2,45,0,0.000,1.800,0.000\\n0,2,2,45,32,0.000,2.212,0.000\\n0,5,2,45,32,0.000,2.225,0.000\\n0,0,2,46,0,0.000,1.800,0.000\\n2,0,2,46,0,0.000,1.800,0.000\\n0,0,2,55,0,0.000,4.800,0.000\\n0,0,2,56,0,0.000,4.800,0.000\\n0,0,2,62,0,0.000,8.000,0.000\\n0,2,2,62,23,1.693,7.903,0.532\\n0,5,2,62,23,-1.696,7.897,-0.482\\n1,0,2,63,0,0.000,1.800,0.000\\n1,0,2,64,0,0.000,1.800,0.000\\n1,0,2,67,0,0.000,1.800,0.000\\n1,0,2,81,0,0.000,4.800,0.000\\n1,0,3,3,0,0.000,0.600,0.000\\n4,0,3,3,0,0.000,1.800,0.000\\n1,1,3,3,1,-0.486,0.714,0.000\\n1,1,3,3,6,-0.081,-0.125,0.132\\n1,1,3,3,7,1.053,1.327,0.000\\n1,5,3,3,6,0.000,0.188,0.436\\n1,5,3,3,7,0.000,0.177,-0.412\\n1,6,3,3,6,0.269,0.437,0.000\\n1,6,3,3,7,-0.495,0.793,-0.318\\n1,7,3,3,7,-0.260,1.084,0.193\\n0,0,3,6,0,0.000,5.500,0.000\\n2,0,3,6,0,0.000,5.500,0.000\\n4,0,3,6,0,0.000,3.600,0.000\\n5,0,3,6,0,0.000,3.600,0.000\\n0,1,3,6,1,-1.244,5.482,0.365\\n0,1,3,6,24,-1.166,5.078,-0.545\\n0,1,3,6,37,-0.677,5.854,0.521\\n2,2,3,6,24,0.256,4.519,0.258\\n2,3,3,6,24,1.663,4.073,0.094\\n0,5,3,6,1,0.526,5.631,0.691\\n0,5,3,6,2,0.159,6.586,0.216\\n0,5,3,6,24,-2.285,4.737,0.468\\n0,7,3,6,0,0.700,6.500,-0.400\\n0,7,3,6,1,0.682,7.184,-0.935\\n0,7,3,6,2,-0.168,6.572,-0.151\\n0,7,3,6,24,1.662,6.152,-0.058\\n0,7,3,6,37,0.635,5.890,-0.446\\n2,37,3,6,24,0.000,3.892,-0.094\\n0,0,3,9,0,0.000,16.000,0.000\\n1,0,3,9,0,0.000,1.800,0.000\\n5,0,3,9,0,0.000,12.000,0.000\\n0,2,3,9,27,0.000,16.000,0.000\\n0,5,3,9,1,0.687,16.152,0.894\\n0,5,3,9,27,0.000,16.000,0.000\\n0,40,3,9,1,-0.758,18.216,-0.188\\n0,40,3,9,27,0.000,16.000,0.000\\n0,0,3,10,0,0.000,6.000,0.000\\n2,0,3,10,0,0.000,6.000,0.000\\n4,0,3,10,0,0.000,6.000,0.000\\n5,0,3,10,0,0.000,6.000,0.000\\n0,1,3,10,1,0.647,6.159,0.507\\n0,1,3,10,6,-1.035,8.791,1.464\\n0,1,3,10,28,-0.294,5.805,1.342\\n2,2,3,10,28,-0.287,7.142,0.120\\n0,5,3,10,1,-0.183,6.314,1.753\\n0,5,3,10,3,-0.751,5.348,0.209\\n0,5,3,10,28,-0.388,5.972,0.459\\n0,7,3,10,1,-0.319,6.294,-0.147\\n0,7,3,10,3,0.776,-0.585,-0.145\\n0,7,3,10,6,1.107,8.631,-0.452\\n0,7,3,10,28,1.435,4.975,-0.454\\n0,10,3,10,28,0.000,3.495,1.291\\n0,0,3,15,0,0.000,1.423,0.000\\n2,0,3,15,0,0.000,1.423,0.000\\n4,0,3,15,0,0.000,1.423,0.000\\n5,0,3,15,0,0.000,1.423,0.000\\n0,0,3,17,0,0.000,1.423,0.000\\n5,0,3,17,0,0.000,1.423,0.000\\n0,0,3,18,0,0.000,0.000,0.000\\n2,0,3,18,0,0.000,0.000,0.000\\n0,0,3,20,0,0.000,0.000,-0.300\\n2,0,3,20,0,0.000,0.000,0.000\\n4,0,3,20,0,0.000,0.000,-0.300\\n5,0,3,20,0,0.000,0.000,0.000\\n0,7,3,20,0,0.000,0.400,0.400\\n0,7,3,20,5,0.000,0.000,-0.131\\n0,7,3,20,20,0.000,0.000,0.000\\n0,20,3,20,5,0.000,0.000,0.085\\n0,20,3,20,20,0.000,0.000,0.000\\n0,0,3,22,0,0.000,0.000,0.000\\n2,0,3,22,0,0.000,0.000,0.000\\n4,0,3,22,0,0.000,0.000,0.000\\n5,0,3,22,0,0.000,0.000,0.000\\n0,7,3,22,0,0.000,0.400,0.400\\n0,0,3,25,0,0.000,0.000,0.000\\n2,0,3,25,0,0.000,0.000,0.000\\n1,0,3,30,0,0.000,1.800,0.000\\n4,0,3,30,0,0.000,1.800,0.000\\n1,0,3,37,0,0.000,2.500,0.000\\n4,0,3,37,0,0.000,1.800,0.000\\n1,1,3,37,37,0.000,2.428,0.000\\n1,6,3,37,37,0.000,1.743,0.000\\n1,7,3,37,37,0.000,2.256,0.000\\n1,43,3,37,37,-0.241,3.385,-0.838\\n1,0,3,39,0,0.000,5.500,0.000\\n0,0,3,40,0,0.000,3.900,0.000\\n2,0,3,40,0,0.000,3.600,0.000\\n5,0,3,40,0,0.000,3.600,0.000\\n0,5,3,40,28,-1.477,4.362,0.902\\n0,9,3,40,28,1.496,4.369,-0.417\\n0,40,3,40,28,0.178,3.149,0.778\\n0,0,3,41,0,0.000,1.800,0.000\\n2,0,3,41,0,0.000,1.800,0.000\\n0,0,3,43,0,0.000,4.500,0.000\\n2,0,3,43,0,0.000,3.600,0.000\\n4,0,3,43,0,0.000,3.600,0.000\\n5,0,3,43,0,0.000,3.600,0.000\\n0,1,3,43,18,1.712,3.309,0.233\\n0,1,3,43,28,-0.414,4.168,-0.875\\n0,7,3,43,18,-0.880,5.091,-0.129\\n0,7,3,43,28,0.536,5.276,-0.556\\n2,37,3,43,18,-0.701,4.871,1.225\\n2,37,3,43,28,-0.086,5.073,0.878\\n0,0,3,45,0,0.000,1.800,0.000\\n2,0,3,45,0,0.000,1.800,0.000\\n0,0,3,48,0,0.000,0.000,0.892\\n0,0,3,51,0,0.000,13.500,0.000\\n0,1,3,51,52,0.000,13.549,0.000\\n0,0,3,54,0,0.000,8.000,0.000\\n1,0,3,54,0,0.000,2.500,0.000\\n5,0,3,54,0,0.000,12.000,0.000\\n0,5,3,54,1,0.000,8.000,0.000\\n0,5,3,54,36,0.000,8.000,0.000\\n0,0,3,55,0,0.000,4.800,0.000\\n2,0,3,55,0,0.000,4.800,0.000\\n0,0,3,56,0,0.000,4.800,0.000\\n2,0,3,56,0,0.000,4.800,0.000\\n1,0,3,57,0,0.000,2.500,0.000\\n1,0,3,58,0,0.000,4.800,0.000\\n0,0,3,62,0,0.000,3.600,0.000\\n2,0,3,62,0,0.000,3.600,0.000\\n5,0,3,62,0,0.000,3.600,0.000\\n1,0,3,63,0,0.000,2.500,0.000\\n1,0,3,64,0,0.000,2.500,0.000\\n0,0,3,67,0,0.000,12.000,0.000\\n0,0,3,74,0,0.000,19.000,0.000\\n0,1,3,74,7,0.000,19.349,0.000\\n0,0,3,75,0,0.000,19.000,0.000\\n0,1,3,75,71,0.000,18.751,0.000\\n1,0,3,78,0,0.000,2.500,0.000\\n1,0,3,80,0,0.000,2.500,0.000\\n0,0,6,6,0,0.000,-2.000,0.000\\n5,0,6,6,0,0.000,-2.000,0.000\\n0,0,6,8,0,0.900,-1.100,-0.500\\n5,0,6,8,0,0.000,0.000,0.274\\n0,21,6,8,1,0.261,-0.330,-0.542\\n0,21,6,8,23,1.503,-1.853,-0.476\\n0,0,6,9,0,0.000,3.600,0.000\\n5,0,6,9,0,0.000,3.600,0.000\\n0,0,6,10,0,1.200,0.500,-1.000\\n0,21,6,10,1,0.875,0.180,-0.733\\n0,21,6,10,3,0.529,0.000,-1.163\\n0,0,6,15,0,0.000,-4.000,0.000\\n0,0,6,17,0,0.000,1.423,0.000\\n5,0,6,17,0,0.000,1.423,0.000\\n0,0,6,18,0,0.000,0.000,0.100\\n5,0,6,18,0,0.000,0.000,0.103\\n0,33,6,18,1,-0.520,-0.471,-0.267\\n0,33,6,18,6,-1.623,0.204,0.438\\n0,33,6,18,32,1.616,0.425,0.191\\n0,0,6,19,0,0.000,0.000,0.150\\n5,0,6,19,0,0.000,0.000,0.165\\n0,21,6,19,1,-0.620,-0.329,0.303\\n0,21,6,19,5,0.683,0.220,0.000\\n0,0,6,20,0,0.000,0.000,0.400\\n4,0,6,20,0,0.000,0.000,0.217\\n5,0,6,20,0,0.000,0.000,0.217\\n0,20,6,20,5,0.000,0.000,-0.079\\n4,20,6,20,20,0.000,0.000,0.000\\n0,0,6,22,0,0.000,0.000,0.217\\n0,0,6,25,0,0.000,0.000,0.650\\n5,0,6,25,0,0.000,0.000,0.231\\n0,1,6,25,1,-1.704,-0.452,0.556\\n0,1,6,25,6,0.000,0.000,0.777\\n0,1,6,25,32,1.205,0.914,0.612\\n0,24,6,25,6,-3.209,-7.622,1.065\\n0,24,6,25,32,-5.891,-3.332,0.290\\n0,0,6,26,0,0.000,0.000,0.346\\n0,0,6,30,0,0.000,3.600,0.000\\n2,0,6,30,0,0.000,3.600,0.000\\n0,0,6,37,0,0.000,3.200,0.000\\n5,0,6,37,0,0.000,3.600,0.000\\n0,1,6,37,37,0.000,4.382,0.000\\n0,3,6,37,37,0.000,2.576,0.000\\n0,29,6,37,37,0.000,2.801,0.000\\n0,0,6,39,0,0.000,0.000,0.000\\n0,0,6,40,0,0.000,0.000,0.274\\n0,0,6,41,0,0.000,3.600,0.000\\n0,0,6,43,0,0.000,0.000,0.274\\n0,0,6,45,0,0.000,6.000,0.000\\n0,1,6,45,32,0.000,6.208,0.000\\n0,0,6,54,0,0.000,3.600,0.000\\n0,0,6,55,0,0.000,3.600,0.000\\n0,0,6,57,0,0.000,3.600,0.000\\n0,0,6,58,0,0.000,3.600,0.000\\n0,0,6,63,0,0.000,3.600,0.000\\n0,0,6,64,0,0.000,3.600,0.000\\n0,0,8,8,0,0.000,0.000,0.375\\n5,0,8,8,0,0.000,0.000,0.375\\n0,0,8,9,0,0.000,3.600,0.000\\n5,0,8,9,0,0.000,3.600,0.000\\n0,0,8,10,0,0.000,0.000,0.000\\n4,0,8,10,0,0.000,0.000,0.000\\n0,0,8,15,0,0.000,0.000,0.424\\n0,0,8,17,0,0.000,1.423,0.000\\n4,0,8,17,0,0.000,1.423,0.000\\n5,0,8,17,0,0.000,1.423,0.000\\n0,0,8,19,0,0.000,0.000,0.225\\n0,0,8,20,0,0.000,0.000,0.350\\n4,0,8,20,0,0.000,0.000,0.300\\n5,0,8,20,0,0.000,0.000,0.297\\n0,20,8,20,5,0.000,0.120,0.472\\n4,20,8,20,20,0.000,-0.097,0.200\\n0,23,8,20,5,-0.101,-0.324,0.371\\n0,23,8,20,20,0.107,0.253,0.151\\n0,0,8,22,0,0.000,0.000,0.297\\n0,0,8,25,0,0.000,0.000,0.316\\n5,0,8,25,0,0.000,0.000,0.316\\n0,0,8,26,0,0.000,0.000,0.474\\n5,0,8,26,0,0.000,0.000,0.474\\n0,0,8,34,0,0.000,0.000,0.250\\n0,0,8,39,0,0.000,0.000,0.000\\n0,0,8,40,0,0.000,0.000,0.375\\n0,0,8,43,0,0.000,0.000,0.375\\n0,0,8,45,0,0.000,3.600,0.000\\n0,0,8,46,0,0.000,3.600,0.000\\n0,0,8,55,0,0.000,3.600,0.000\\n0,0,8,56,0,0.000,3.600,0.000\\n0,0,9,9,0,0.000,12.000,0.000\\n1,0,9,9,0,0.000,1.800,0.000\\n5,0,9,9,0,0.000,12.000,0.000\\n0,0,9,10,0,0.000,6.000,0.000\\n5,0,9,10,0,0.000,6.000,0.000\\n0,0,9,15,0,0.000,1.423,0.000\\n0,0,9,18,0,0.000,0.000,0.000\\n0,0,9,19,0,0.000,0.000,0.000\\n0,0,9,20,0,0.000,0.000,0.000\\n0,0,9,25,0,0.000,0.000,0.000\\n0,0,9,34,0,0.000,0.000,0.000\\n5,0,9,34,0,0.000,0.000,0.000\\n1,0,9,37,0,0.000,1.800,0.000\\n1,0,9,39,0,0.000,6.000,0.000\\n0,0,9,40,0,0.000,3.600,0.000\\n0,0,9,41,0,0.000,4.800,0.000\\n0,0,9,45,0,0.000,1.800,0.000\\n0,0,9,54,0,0.000,12.000,0.000\\n0,0,9,55,0,0.000,4.800,0.000\\n0,0,9,56,0,0.000,4.800,0.000\\n1,0,9,57,0,0.000,1.800,0.000\\n0,0,9,62,0,0.000,3.600,0.000\\n1,0,9,63,0,0.000,1.800,0.000\\n1,0,9,64,0,0.000,1.800,0.000\\n0,0,9,67,0,0.000,12.000,0.000\\n1,0,9,78,0,0.000,1.800,0.000\\n1,0,9,81,0,0.000,4.800,0.000\\n0,0,10,10,0,0.000,0.000,0.000\\n5,0,10,10,0,0.000,0.000,0.000\\n0,0,10,15,0,0.000,0.000,0.000\\n0,0,10,17,0,0.000,4.743,0.000\\n0,0,10,20,0,0.000,0.000,0.000\\n4,0,10,20,0,0.000,0.000,0.000\\n5,0,10,20,0,0.000,0.000,0.000\\n0,0,10,22,0,0.000,0.000,0.000\\n0,0,10,25,0,0.000,0.000,0.000\\n0,0,10,26,0,0.000,0.000,0.000\\n5,0,10,26,0,0.000,0.000,0.000\\n0,0,10,34,0,0.000,0.000,0.000\\n0,0,10,37,0,0.000,6.000,0.000\\n0,0,10,39,0,0.000,0.000,0.000\\n0,0,10,40,0,0.000,0.000,0.000\\n5,0,10,40,0,0.000,0.000,0.000\\n0,0,10,41,0,0.000,6.000,0.000\\n0,0,10,45,0,0.000,6.000,0.000\\n0,0,10,63,0,0.000,6.000,0.000\\n0,0,10,64,0,0.000,6.000,0.000\\n0,0,15,15,0,-1.400,-8.300,1.000\\n5,0,15,15,0,0.000,-8.000,0.000\\n0,1,15,15,1,-1.663,-8.408,1.433\\n0,1,15,15,71,-1.088,-8.245,0.411\\n0,0,15,18,0,0.000,0.000,0.160\\n0,0,15,19,0,0.000,0.000,0.255\\n5,0,15,19,0,0.000,0.000,0.255\\n0,0,15,20,0,0.000,0.000,0.336\\n4,0,15,20,0,0.000,0.000,0.336\\n0,0,15,22,0,0.000,0.000,0.336\\n0,0,15,25,0,0.000,0.000,0.358\\n4,0,15,25,0,0.000,0.000,0.358\\n0,0,15,26,0,0.000,0.000,0.537\\n0,0,15,30,0,0.000,1.423,0.000\\n4,0,15,30,0,0.000,1.423,0.000\\n0,0,15,37,0,0.000,1.300,0.000\\n5,0,15,37,0,0.000,1.423,0.000\\n0,1,15,37,37,0.000,2.177,0.000\\n0,71,15,37,37,0.000,0.505,0.333\\n0,0,15,40,0,0.000,0.000,0.424\\n0,0,15,43,0,0.000,0.000,0.424\\n0,0,15,57,0,0.000,1.423,0.000\\n0,0,15,63,0,0.000,1.423,0.000\\n0,0,15,64,0,0.000,1.423,0.000\\n0,0,17,20,0,0.000,0.000,0.000\\n4,0,17,20,0,0.000,0.000,0.000\\n5,0,17,20,0,0.000,0.000,0.000\\n0,0,17,22,0,0.000,0.000,0.000\\n0,0,17,37,0,0.000,1.423,0.000\\n0,0,17,43,0,0.000,3.795,0.000\\n0,0,18,20,0,0.000,0.000,0.112\\n4,0,18,20,0,0.000,0.000,0.112\\n5,0,18,20,0,0.000,0.000,0.112\\n0,0,18,22,0,0.000,0.000,0.112\\n0,0,18,37,0,0.000,-1.200,-0.300\\n0,32,18,37,37,-0.173,-0.965,-0.610\\n0,39,18,37,37,0.000,-0.760,0.227\\n0,43,18,37,37,0.228,-1.741,-0.371\\n0,0,18,39,0,0.000,0.000,0.500\\n0,32,18,39,63,0.000,0.687,0.680\\n0,37,18,39,63,0.000,-0.513,0.357\\n0,0,18,43,0,0.000,0.000,0.350\\n4,0,18,43,0,0.000,0.000,0.141\\n5,0,18,43,0,0.000,0.000,0.141\\n0,1,18,43,1,-0.914,-0.482,0.179\\n0,1,18,43,3,-0.392,-2.724,0.312\\n0,1,18,43,28,-1.508,-1.816,-0.175\\n0,1,18,43,37,0.823,-1.220,-0.770\\n0,32,18,43,1,1.588,1.499,1.410\\n0,32,18,43,3,0.653,0.254,0.000\\n0,32,18,43,28,0.528,0.342,0.000\\n0,32,18,43,37,0.812,1.513,1.266\\n0,37,18,43,1,-1.139,-0.703,1.088\\n0,37,18,43,28,-2.014,-1.646,-2.068\\n0,37,18,43,37,-1.519,-0.328,1.437\\n0,43,18,43,28,3.011,-1.405,2.038\\n0,0,18,48,0,0.000,0.000,0.400\\n0,1,18,48,28,1.767,1.606,0.408\\n0,32,18,48,28,-1.463,-2.548,0.310\\n0,0,18,55,0,0.000,0.000,0.000\\n0,0,18,58,0,0.000,0.000,0.000\\n0,0,18,62,0,0.000,0.000,0.500\\n0,1,18,62,1,-0.403,-0.273,0.440\\n0,32,18,62,1,0.291,0.385,0.582\\n0,0,18,63,0,0.000,0.000,0.000\\n0,0,18,64,0,0.000,0.000,0.000\\n0,0,18,80,0,0.000,0.000,0.000\\n0,0,19,20,0,0.000,0.000,0.179\\n4,0,19,20,0,0.000,0.000,0.179\\n0,0,19,37,0,0.000,0.000,0.000\\n0,0,19,40,0,0.000,0.000,0.225\\n0,0,19,63,0,0.000,0.000,0.000\\n0,0,19,75,0,0.000,0.000,0.000\\n0,0,20,20,0,0.000,0.000,0.200\\n4,0,20,20,0,0.000,0.000,0.000\\n5,0,20,20,0,0.000,0.000,0.236\\n0,1,20,20,5,0.067,0.081,0.347\\n0,1,20,20,20,-0.063,-0.064,0.140\\n0,3,20,20,5,0.000,0.000,0.083\\n0,3,20,20,20,0.000,0.000,0.000\\n0,5,20,20,5,0.000,0.000,0.424\\n0,5,20,20,6,0.000,0.000,-0.080\\n0,5,20,20,8,0.000,0.127,0.450\\n0,5,20,20,12,-0.072,-0.269,0.439\\n0,5,20,20,20,-0.057,0.000,0.307\\n4,6,20,20,20,0.000,0.000,0.000\\n4,8,20,20,20,0.000,-0.091,0.192\\n0,12,20,20,20,0.077,0.202,0.183\\n4,20,20,20,20,0.000,0.000,0.000\\n0,0,20,22,0,0.000,0.000,0.236\\n4,0,20,22,0,0.000,0.000,0.236\\n0,0,20,25,0,0.000,0.000,0.251\\n4,0,20,25,0,0.000,0.000,0.251\\n0,0,20,26,0,0.000,0.000,0.376\\n4,0,20,26,0,0.000,0.000,0.376\\n5,0,20,26,0,0.000,0.000,0.376\\n0,0,20,30,0,0.000,0.000,0.000\\n2,0,20,30,0,0.000,0.000,0.000\\n4,0,20,30,0,0.000,0.000,0.000\\n0,0,20,30,30,0.000,0.000,-0.500\\n0,0,20,34,0,0.000,0.000,0.198\\n4,0,20,34,0,0.000,0.000,0.198\\n0,0,20,37,0,0.000,0.000,0.000\\n4,0,20,37,0,0.000,0.000,0.000\\n0,0,20,40,0,0.000,0.000,0.297\\n0,0,20,41,0,0.000,0.000,0.000\\n0,0,20,43,0,0.000,0.000,0.297\\n4,0,20,43,0,0.000,0.000,0.297\\n0,0,20,45,0,0.000,0.000,0.000\\n0,0,22,22,0,0.000,0.000,0.236\\n4,0,22,22,0,0.000,0.000,0.236\\n5,0,22,22,0,0.000,0.000,0.236\\n0,0,22,30,0,0.000,0.000,0.000\\n4,0,22,30,0,0.000,0.000,0.000\\n0,0,22,34,0,0.000,0.000,0.198\\n0,0,22,37,0,0.000,0.000,0.000\\n0,0,22,40,0,0.000,0.000,0.297\\n0,0,22,41,0,0.000,0.000,0.000\\n0,0,22,43,0,0.000,0.000,0.297\\n5,0,22,43,0,0.000,0.000,0.297\\n0,0,22,45,0,0.000,0.000,0.000\\n0,0,25,25,0,0.000,0.000,0.267\\n0,0,25,37,0,0.000,0.000,0.000\\n5,0,25,37,0,0.000,0.000,0.000\\n0,0,25,39,0,0.000,0.000,0.000\\n0,0,25,40,0,0.000,0.000,0.316\\n5,0,25,40,0,0.000,0.000,0.316\\n0,0,25,43,0,0.000,0.000,0.250\\n0,1,25,43,1,-2.686,-1.512,0.591\\n0,1,25,43,28,-3.730,-0.531,0.000\\n0,32,25,43,1,2.108,1.896,0.965\\n0,32,25,43,28,2.977,0.732,-0.502\\n0,0,25,57,0,0.000,0.000,0.000\\n0,0,25,63,0,0.000,0.000,0.000\\n0,0,26,26,0,0.000,0.000,0.600\\n5,0,26,26,0,0.000,0.000,0.600\\n0,0,26,34,0,0.000,0.000,0.316\\n5,0,26,34,0,0.000,0.000,0.316\\n0,0,26,37,0,0.000,1.423,0.000\\n0,0,26,40,0,0.000,0.000,0.474\\n0,0,30,30,0,0.000,12.000,0.000\\n1,0,30,30,0,0.000,1.800,0.000\\n4,0,30,30,0,0.000,1.800,0.000\\n0,0,30,40,0,0.000,3.600,0.000\\n1,0,30,67,0,0.000,1.800,0.000\\n0,0,34,37,0,0.000,0.000,0.000\\n0,0,34,43,0,0.000,0.000,0.250\\n0,0,37,37,0,0.000,7.000,0.000\\n1,0,37,37,0,0.000,2.000,0.000\\n4,0,37,37,0,0.000,6.000,0.000\\n5,0,37,37,0,0.000,6.000,0.000\\n0,1,37,37,5,0.000,7.000,0.000\\n0,1,37,37,37,0.000,7.000,0.000\\n0,2,37,37,5,0.000,7.000,0.000\\n0,2,37,37,37,0.000,7.000,0.000\\n0,3,37,37,5,0.000,7.000,0.000\\n0,3,37,37,37,0.000,7.000,0.000\\n0,5,37,37,5,0.000,7.000,0.000\\n0,5,37,37,6,0.000,7.000,0.000\\n0,5,37,37,15,0.000,7.000,0.000\\n0,5,37,37,18,0.000,7.000,0.000\\n0,5,37,37,37,0.000,7.000,0.000\\n0,5,37,37,40,0.000,7.000,0.000\\n0,5,37,37,43,0.000,7.000,0.000\\n0,6,37,37,37,0.000,7.000,0.000\\n0,15,37,37,37,0.000,7.000,0.000\\n0,18,37,37,37,0.000,7.000,0.000\\n0,37,37,37,37,0.000,7.000,0.000\\n0,37,37,37,40,0.000,7.000,0.000\\n0,37,37,37,43,0.000,7.000,0.000\\n0,0,37,38,0,0.000,7.000,0.000\\n0,0,37,39,0,0.000,3.600,0.000\\n1,0,37,39,0,0.000,6.000,0.000\\n0,0,37,40,0,0.000,4.000,0.000\\n5,0,37,40,0,0.000,3.600,0.000\\n0,37,37,40,1,0.000,4.336,0.370\\n0,37,37,40,28,0.715,2.628,3.355\\n0,0,37,41,0,0.000,1.800,0.000\\n0,0,37,43,0,0.000,2.000,1.800\\n5,0,37,43,0,0.000,3.600,0.000\\n0,37,37,43,18,0.372,2.284,2.034\\n0,37,37,43,28,0.000,1.694,1.508\\n0,0,37,45,0,0.000,1.800,0.000\\n0,0,37,46,0,0.000,1.800,0.000\\n0,0,37,55,0,0.000,4.800,0.000\\n0,0,37,56,0,0.000,4.800,0.000\\n1,0,37,57,0,0.000,1.800,0.000\\n0,0,37,58,0,0.000,6.000,0.000\\n1,0,37,58,0,0.000,4.800,0.000\\n0,0,37,62,0,0.000,3.600,0.000\\n0,0,37,63,0,0.000,7.000,0.000\\n1,0,37,63,0,0.000,1.800,0.000\\n0,0,37,64,0,0.000,7.000,0.000\\n1,0,37,64,0,0.000,1.800,0.000\\n1,0,37,67,0,0.000,1.800,0.000\\n0,0,37,69,0,0.000,7.000,0.000\\n0,0,37,78,0,0.000,6.000,0.000\\n0,0,37,81,0,0.000,6.000,0.000\\n1,0,37,81,0,0.000,4.800,0.000\\n0,0,38,38,0,0.000,7.000,0.000\\n0,0,38,58,0,0.000,7.000,0.000\\n0,0,38,63,0,0.000,7.000,0.000\\n0,0,38,64,0,0.000,7.000,0.000\\n0,0,38,69,0,0.000,6.000,0.000\\n0,0,38,78,0,0.000,6.000,0.000\\n0,0,39,40,0,0.000,0.000,0.000\\n0,0,39,45,0,0.000,6.000,0.000\\n0,0,39,63,0,0.000,4.000,0.000\\n1,0,39,63,0,0.000,6.000,0.000\\n5,0,39,63,0,0.000,3.600,0.000\\n0,1,39,63,5,0.000,4.000,0.000\\n0,1,39,63,64,0.000,4.000,0.000\\n0,18,39,63,5,0.000,4.000,0.000\\n0,18,39,63,64,0.000,4.000,0.000\\n0,63,39,63,5,0.000,4.000,0.000\\n0,63,39,63,64,0.000,4.000,0.000\\n0,0,39,64,0,0.000,3.600,0.000\\n1,0,39,64,0,0.000,6.000,0.000\\n0,0,39,65,0,0.000,4.000,0.000\\n0,0,39,78,0,0.000,3.600,0.000\\n0,0,40,40,0,0.000,0.000,0.375\\n0,0,40,45,0,0.000,3.600,0.000\\n0,0,40,46,0,0.000,3.600,0.000\\n0,0,40,54,0,0.000,3.600,0.000\\n2,0,40,54,0,0.000,3.600,0.000\\n0,0,40,63,0,0.000,3.600,0.000\\n0,0,40,64,0,0.000,3.600,0.000\\n0,0,40,78,0,0.000,3.600,0.000\\n0,0,41,41,0,0.000,1.800,0.000\\n0,0,41,55,0,0.000,4.800,0.000\\n0,0,41,62,0,0.000,3.600,0.000\\n0,0,41,80,0,0.000,1.800,0.000\\n0,0,43,43,0,0.000,0.000,0.375\\n0,0,43,45,0,0.000,3.600,0.000\\n0,0,43,64,0,0.000,3.600,0.000\\n0,0,44,57,0,0.000,7.000,0.000\\n0,0,44,63,0,0.000,7.000,0.000\\n0,0,44,65,0,0.000,7.000,0.000\\n0,0,44,78,0,0.000,2.846,0.000\\n0,0,44,80,0,0.000,2.846,0.000\\n0,0,45,63,0,0.000,1.800,0.000\\n0,0,45,64,0,0.000,1.800,0.000\\n0,0,45,78,0,0.000,1.800,0.000\\n0,0,55,57,0,0.000,10.000,0.000\\n2,0,55,57,0,0.000,4.800,0.000\\n5,0,55,57,0,0.000,4.800,0.000\\n0,1,55,57,5,0.423,12.064,0.090\\n0,1,55,57,55,-0.428,12.044,0.000\\n0,36,55,57,5,-0.268,8.077,-0.806\\n0,36,55,57,55,0.273,8.025,0.692\\n0,0,55,62,0,0.000,3.600,0.000\\n0,0,55,64,0,0.000,4.800,0.000\\n0,0,55,80,0,0.000,4.800,0.000\\n0,0,56,57,0,0.000,6.000,0.000\\n0,1,56,57,56,0.000,6.886,-0.161\\n0,36,56,57,56,0.000,4.688,0.107\\n0,0,56,63,0,0.000,4.800,0.000\\n0,0,56,80,0,0.000,4.800,0.000\\n1,0,57,63,0,0.000,1.800,0.000\\n1,0,57,64,0,0.000,1.800,0.000\\n0,0,58,63,0,0.000,6.000,0.000\\n0,0,58,64,0,0.000,6.000,0.000\\n0,0,59,63,0,0.000,7.000,0.000\\n0,0,59,65,0,0.000,7.000,0.000\\n0,0,59,78,0,0.000,3.600,0.000\\n0,0,59,80,0,0.000,3.600,0.000\\n0,0,59,82,0,0.000,3.600,0.000\\n0,0,62,63,0,0.000,3.600,0.000\\n0,0,62,64,0,0.000,3.600,0.000\\n1,0,63,63,0,0.000,1.800,0.000\\n0,0,63,64,0,0.000,7.000,0.000\\n0,5,63,64,5,0.000,7.000,0.000\\n0,5,63,64,64,0.000,7.000,0.000\\n0,39,63,64,5,0.000,7.000,0.000\\n0,39,63,64,64,0.000,7.000,0.000\\n0,0,63,66,0,0.000,7.000,0.000\\n0,0,63,78,0,0.000,6.000,0.000\\n0,0,63,81,0,0.000,6.000,0.000\\n0,0,64,64,0,0.000,7.000,0.000\\n1,0,64,64,0,0.000,1.800,0.000\\n0,5,64,64,5,0.000,7.000,0.000\\n0,5,64,64,63,0.000,7.000,0.000\\n0,63,64,64,63,0.000,7.000,0.000\\n0,0,64,65,0,0.000,7.000,0.000\\n0,0,64,66,0,0.000,7.000,0.000\\n0,0,64,78,0,0.000,6.000,0.000\\n0,0,64,81,0,0.000,6.000,0.000\\n5,0,64,81,0,0.000,6.000,0.000\\n0,0,64,82,0,0.000,6.000,0.000\\n0,0,65,66,0,0.000,7.000,0.000\\n0,0,65,78,0,0.000,6.000,0.000\\n0,0,65,81,0,0.000,6.000,0.000\\n0,0,65,82,0,0.000,6.000,0.000\\n0,0,66,66,0,0.000,7.000,0.000\\n0,0,66,78,0,0.000,6.000,0.000\\n0,0,66,81,0,0.000,6.000,0.000\\n0,0,67,67,0,0.000,12.000,0.000\\n5,0,67,67,0,0.000,12.000,0.000\\n0,0,76,76,0,0.000,3.600,0.000\\n0,0,76,78,0,0.000,3.600,0.000\\n0,0,78,78,0,0.000,7.000,0.000\\n0,0,78,79,0,0.000,6.000,0.000\\n0,0,78,81,0,0.000,4.000,0.000\\n0,0,79,79,0,0.000,6.000,0.000\\n0,0,79,81,0,0.000,6.000,0.000\\n0,0,80,81,0,0.000,4.000,0.000\\n'));Xrb.rH=true}else if(Erb.k7(a,xzb)&&!Xrb.sH){Prb.rA();Prb.yA(xzb,new Prb.pB(yzb,'926\\nint,int,int,int,int,float,float,float\\n0,0,1,1,0,0.000,0.000,0.300\\n5,0,1,1,0,0.200,-0.800,1.500\\n0,1,1,1,1,0.103,0.681,0.332\\n5,1,1,1,1,0.144,-0.547,1.126\\n0,1,1,1,2,-0.295,0.438,0.584\\n0,1,1,1,3,0.066,-0.156,0.143\\n0,1,1,1,5,0.639,-0.630,0.264\\n0,1,1,1,6,-0.688,1.757,0.477\\n5,1,1,1,6,0.000,0.000,0.054\\n0,1,1,1,8,-1.420,-0.092,1.101\\n5,1,1,1,8,0.000,-0.158,0.323\\n0,1,1,1,11,0.593,0.662,1.120\\n0,1,1,1,12,-0.678,0.417,0.624\\n0,1,1,1,15,-0.714,0.698,0.000\\n0,1,1,1,34,-0.647,0.550,0.590\\n0,2,1,1,5,0.321,-0.411,0.144\\n0,3,1,1,3,0.443,0.000,-1.140\\n0,3,1,1,5,-0.256,0.058,0.000\\n0,3,1,1,6,-0.679,-0.029,0.000\\n0,5,1,1,5,0.284,-1.386,0.314\\n0,5,1,1,6,-0.654,1.072,0.279\\n0,5,1,1,8,-0.744,-1.235,0.337\\n0,5,1,1,10,0.000,0.000,0.418\\n0,5,1,1,11,0.000,0.516,0.291\\n0,5,1,1,12,0.678,-0.602,0.398\\n0,5,1,1,15,1.142,-0.644,0.367\\n0,5,1,1,25,0.000,0.000,0.295\\n0,5,1,1,34,0.692,-0.530,0.278\\n0,5,1,1,37,0.000,0.000,0.389\\n0,5,1,1,39,0.000,0.000,0.278\\n0,5,1,1,41,0.000,0.000,-0.141\\n0,5,1,1,56,0.000,0.000,0.324\\n0,5,1,1,68,0.000,0.000,0.136\\n0,6,1,1,6,0.408,1.397,0.961\\n5,6,1,1,6,0.313,-1.035,1.631\\n0,8,1,1,8,1.055,0.834,0.000\\n0,11,1,1,11,-0.387,-0.543,1.405\\n0,12,1,1,12,0.000,0.000,0.893\\n0,15,1,1,15,-0.177,0.000,0.049\\n0,0,1,2,0,0.000,0.000,0.000\\n2,0,1,2,0,0.000,0.000,0.000\\n5,0,1,2,0,0.000,0.000,0.000\\n0,0,1,2,2,0.000,0.000,-0.650\\n5,0,1,2,2,0.000,0.000,-0.650\\n0,1,1,2,1,0.419,0.296,0.282\\n0,1,1,2,2,-0.494,0.274,-0.630\\n0,1,1,2,5,0.075,0.000,0.358\\n0,2,1,2,2,-0.293,0.115,-0.508\\n0,2,1,2,5,0.301,0.104,0.507\\n0,3,1,2,1,0.565,-0.554,0.234\\n0,3,1,2,2,-0.577,-0.482,-0.427\\n0,3,1,2,5,0.082,0.000,0.123\\n0,5,1,2,1,0.000,-0.184,0.220\\n0,5,1,2,2,0.501,-0.410,-0.535\\n2,5,1,2,2,0.000,0.000,0.055\\n2,5,1,2,3,0.000,0.000,-0.108\\n0,5,1,2,5,-0.523,-0.228,0.208\\n2,5,1,2,37,0.000,0.000,0.000\\n0,6,1,2,1,-0.467,0.000,0.490\\n0,6,1,2,2,0.425,0.168,-0.875\\n0,6,1,2,5,0.000,0.136,0.396\\n0,8,1,2,1,-0.504,0.371,0.557\\n0,8,1,2,2,0.541,0.539,-1.009\\n0,8,1,2,5,0.000,0.204,0.464\\n0,0,1,3,0,0.000,0.400,0.300\\n2,0,1,3,0,0.000,0.500,0.350\\n5,0,1,3,0,0.000,0.000,0.000\\n0,0,1,3,1,0.000,0.000,0.550\\n0,0,1,3,5,0.000,0.200,0.700\\n0,0,1,3,7,0.000,0.400,0.400\\n0,1,1,3,1,0.103,0.177,0.545\\n0,1,1,3,5,-0.072,0.316,0.674\\n0,1,1,3,6,-0.117,-0.333,0.202\\n0,1,1,3,7,0.825,0.139,0.325\\n0,1,1,3,10,-0.763,1.244,0.986\\n0,2,1,3,5,0.663,-0.167,0.426\\n0,2,1,3,7,-0.758,0.112,0.563\\n0,5,1,3,1,-0.073,0.085,0.531\\n2,5,1,3,2,0.000,0.000,0.115\\n2,5,1,3,3,0.000,0.000,0.446\\n0,5,1,3,5,-0.822,0.501,1.008\\n0,5,1,3,6,0.000,-0.624,0.330\\n0,5,1,3,7,0.659,-1.407,0.308\\n0,5,1,3,10,-0.687,1.244,0.136\\n2,5,1,3,37,0.000,0.000,0.056\\n0,5,1,3,43,0.000,1.027,0.360\\n0,5,1,3,51,0.000,1.543,0.350\\n0,5,1,3,53,0.000,0.501,0.000\\n0,5,1,3,74,0.000,0.513,-0.344\\n0,5,1,3,75,0.000,0.511,-0.186\\n0,6,1,3,6,0.447,0.652,0.318\\n0,6,1,3,7,-0.395,0.730,-0.139\\n0,10,1,3,7,0.530,2.905,2.756\\n0,10,1,3,10,0.465,-0.241,1.850\\n0,0,1,4,0,0.000,0.000,0.000\\n0,0,1,6,0,0.000,0.000,0.200\\n5,0,1,6,0,0.000,-0.200,0.400\\n0,1,1,6,1,-0.681,0.755,0.755\\n5,1,1,6,1,0.000,0.243,-0.596\\n0,1,1,6,3,-0.547,0.000,0.320\\n0,1,1,6,21,0.000,0.270,0.237\\n0,2,1,6,21,0.102,0.460,-0.128\\n0,3,1,6,21,-1.652,-1.660,0.283\\n0,5,1,6,1,0.571,0.319,0.570\\n0,5,1,6,2,0.000,0.000,0.306\\n0,5,1,6,3,0.572,0.000,-0.304\\n0,5,1,6,21,0.596,-0.276,0.346\\n0,5,1,6,25,0.000,0.000,0.061\\n0,5,1,6,37,0.000,0.000,0.106\\n0,5,1,6,45,0.000,0.000,-0.174\\n0,6,1,6,1,0.229,-0.710,0.722\\n5,6,1,6,1,0.000,0.000,0.040\\n0,6,1,6,21,1.488,-3.401,-0.320\\n0,37,1,6,21,0.712,1.320,-0.507\\n0,0,1,8,0,0.000,-0.300,0.500\\n5,0,1,8,0,0.000,0.000,0.297\\n0,1,1,8,1,-0.439,0.786,0.272\\n5,1,1,8,1,0.115,-0.390,0.658\\n0,1,1,8,6,-0.608,0.339,1.496\\n0,1,1,8,23,-0.428,0.323,0.280\\n0,2,1,8,23,0.594,-0.409,0.155\\n0,5,1,8,1,0.393,-0.385,0.562\\n0,5,1,8,6,0.598,-0.158,0.399\\n0,5,1,8,23,-0.152,-0.440,0.357\\n0,0,1,9,0,0.000,0.000,0.000\\n5,0,1,9,0,0.000,0.000,0.000\\n0,5,1,9,3,0.204,-0.335,-0.352\\n0,5,1,9,53,0.000,0.000,0.097\\n0,0,1,10,0,0.000,0.000,0.300\\n5,0,1,10,0,0.000,0.000,0.000\\n0,0,1,10,3,0.000,0.000,1.000\\n0,1,1,10,3,-0.884,0.578,0.818\\n0,1,1,10,6,0.000,-0.379,0.565\\n0,1,1,10,28,0.750,-0.404,0.369\\n0,3,1,10,3,3.219,-2.699,1.875\\n0,3,1,10,28,0.207,0.461,0.324\\n0,5,1,10,1,0.000,0.000,0.706\\n0,5,1,10,3,-2.334,1.517,-0.065\\n0,5,1,10,6,0.000,0.688,0.665\\n0,5,1,10,28,-0.982,-0.207,0.166\\n0,0,1,15,0,0.000,0.000,0.400\\n5,0,1,15,0,0.000,0.000,0.336\\n0,1,1,15,1,-1.047,0.170,0.398\\n0,1,1,15,15,-1.438,0.263,0.501\\n0,1,1,15,71,-0.376,-0.133,0.288\\n0,5,1,15,1,1.143,-0.231,0.447\\n0,5,1,15,15,1.555,-0.323,0.456\\n0,5,1,15,37,0.000,0.000,0.459\\n0,5,1,15,71,0.229,0.203,0.440\\n0,0,1,17,0,0.000,0.000,0.350\\n5,0,1,17,0,0.000,0.000,0.000\\n0,5,1,17,1,0.000,0.000,0.536\\n0,5,1,17,7,0.000,0.000,0.212\\n0,0,1,18,0,0.000,0.000,0.100\\n5,0,1,18,0,0.000,0.000,0.112\\n0,5,1,18,1,0.000,0.000,0.000\\n0,5,1,18,6,0.000,0.000,0.099\\n0,5,1,18,32,0.000,0.585,0.388\\n0,5,1,18,43,0.000,-0.412,0.121\\n0,5,1,18,48,0.000,0.000,0.195\\n0,5,1,18,62,0.000,0.000,-0.088\\n0,0,1,19,0,0.000,0.000,0.150\\n5,0,1,19,0,0.000,0.000,0.179\\n0,5,1,19,5,0.000,0.000,0.196\\n0,5,1,19,6,0.000,0.000,0.176\\n0,5,1,19,12,0.000,0.000,0.152\\n0,0,1,20,0,0.000,0.000,0.350\\n5,0,1,20,0,0.000,0.000,0.350\\n0,5,1,20,5,0.000,0.000,0.344\\n0,5,1,20,20,0.000,0.000,0.361\\n0,0,1,22,0,0.000,0.000,0.236\\n5,0,1,22,0,0.000,0.000,0.236\\n0,0,1,25,0,0.000,0.000,0.300\\n5,0,1,25,0,0.000,0.000,0.251\\n0,1,1,25,1,0.000,-0.207,0.232\\n0,1,1,25,32,0.000,0.288,0.218\\n0,5,1,25,1,0.000,0.152,0.235\\n0,5,1,25,6,0.000,0.000,0.495\\n0,5,1,25,32,0.000,-0.130,0.214\\n0,5,1,25,43,0.000,0.000,0.466\\n0,5,1,25,72,0.000,0.000,0.243\\n0,0,1,26,0,0.000,0.000,0.450\\n5,0,1,26,0,0.000,0.000,0.376\\n0,5,1,26,12,0.000,0.000,0.439\\n0,5,1,26,71,0.000,0.000,0.472\\n0,0,1,34,0,0.000,0.000,0.250\\n5,0,1,34,0,0.000,0.000,0.198\\n0,1,1,34,36,0.000,0.000,0.187\\n0,5,1,34,1,0.000,0.000,0.247\\n0,5,1,34,36,0.000,0.000,0.259\\n0,0,1,37,0,0.000,0.000,0.200\\n5,0,1,37,0,0.000,0.000,0.000\\n0,1,1,37,37,0.000,0.449,0.000\\n0,5,1,37,37,0.000,-0.420,0.391\\n0,6,1,37,37,0.000,0.000,0.150\\n0,0,1,39,0,0.000,0.000,0.000\\n5,0,1,39,0,0.000,0.000,0.000\\n0,1,1,39,63,0.000,-0.080,-0.056\\n0,5,1,39,63,0.000,0.000,-0.113\\n0,0,1,40,0,0.000,0.000,0.250\\n5,0,1,40,0,0.000,0.000,0.297\\n0,5,1,40,28,0.000,-0.105,0.000\\n0,5,1,40,37,0.000,0.000,0.468\\n0,0,1,41,0,0.000,0.600,0.000\\n0,1,1,41,32,0.000,1.263,0.000\\n0,5,1,41,32,0.000,0.000,-0.106\\n0,5,1,41,72,0.000,0.632,0.000\\n0,0,1,43,0,0.000,0.000,0.150\\n5,0,1,43,0,0.000,0.000,0.297\\n0,5,1,43,18,0.357,-0.918,0.000\\n0,5,1,43,25,0.000,0.000,0.061\\n0,5,1,43,28,-0.249,0.382,0.343\\n0,0,1,45,0,0.000,0.000,0.100\\n0,5,1,45,32,0.000,0.000,0.125\\n0,0,1,46,0,0.000,0.000,-0.500\\n0,5,1,46,7,0.000,0.000,-0.540\\n0,0,1,54,0,0.000,0.000,0.000\\n2,0,1,54,0,0.000,0.000,0.000\\n5,0,1,54,0,0.000,0.000,0.000\\n0,5,1,54,3,0.000,0.000,-0.315\\n0,5,1,54,36,0.000,0.000,0.315\\n0,0,1,55,0,0.000,0.000,0.000\\n5,0,1,55,0,0.000,0.000,0.000\\n0,5,1,55,36,0.000,-0.058,0.084\\n0,5,1,55,57,0.000,-0.058,-0.092\\n0,0,1,56,0,0.000,0.000,-0.300\\n0,1,1,56,36,0.875,0.668,-0.015\\n0,1,1,56,57,-0.870,0.775,-0.406\\n0,5,1,56,36,-0.958,-0.629,-0.372\\n0,5,1,56,57,0.952,-0.715,-0.483\\n0,0,1,57,0,0.000,0.000,0.000\\n5,0,1,57,0,0.000,0.000,0.000\\n0,0,1,58,0,0.000,0.000,0.000\\n0,0,1,62,0,0.000,0.000,0.250\\n0,5,1,62,18,0.000,0.000,0.270\\n0,0,1,63,0,0.000,0.000,0.000\\n5,0,1,63,0,0.000,0.000,0.000\\n0,0,1,64,0,0.000,0.000,0.000\\n5,0,1,64,0,0.000,0.000,0.000\\n0,0,1,67,0,0.000,0.000,0.000\\n5,0,1,67,0,0.000,0.000,0.000\\n0,0,1,68,0,0.000,0.000,0.400\\n0,1,1,68,1,-0.117,0.090,0.751\\n0,1,1,68,23,0.373,0.153,0.635\\n0,1,1,68,32,-0.090,-0.169,0.075\\n0,5,1,68,1,0.134,-0.112,0.329\\n0,5,1,68,23,-0.361,-0.202,0.560\\n0,5,1,68,32,0.072,0.218,0.093\\n0,0,1,73,0,0.000,0.000,0.500\\n0,5,1,73,32,0.000,0.000,0.509\\n0,5,1,73,72,0.000,0.000,0.443\\n0,0,1,75,0,0.000,0.000,0.000\\n0,0,1,78,0,0.000,0.000,0.000\\n0,0,1,80,0,0.000,0.000,0.000\\n0,0,1,81,0,0.000,0.000,0.000\\n0,0,2,2,0,0.000,12.000,0.000\\n1,0,2,2,0,0.000,1.800,0.000\\n5,0,2,2,0,0.000,12.000,0.000\\n0,1,2,2,1,-0.403,12.000,0.000\\n0,1,2,2,2,0.000,12.000,0.000\\n1,1,2,2,2,-0.418,2.089,-0.310\\n0,1,2,2,5,0.000,12.000,0.000\\n1,1,2,2,5,0.412,2.120,0.269\\n1,2,2,2,2,0.094,1.621,0.877\\n0,2,2,2,5,0.000,12.000,0.000\\n1,2,2,2,5,0.317,1.421,-0.870\\n0,3,2,2,5,0.000,12.000,0.000\\n0,5,2,2,5,0.000,12.000,0.000\\n1,5,2,2,5,-0.406,1.767,0.000\\n0,5,2,2,6,0.000,12.000,0.000\\n0,5,2,2,37,0.000,12.000,0.000\\n0,5,2,2,40,0.000,12.000,0.000\\n0,5,2,2,41,0.000,12.000,0.000\\n0,5,2,2,45,0.000,12.000,0.000\\n0,5,2,2,62,0.000,12.000,0.000\\n1,0,2,3,0,0.000,2.500,0.000\\n1,1,2,3,1,0.136,1.798,0.630\\n1,1,2,3,5,0.497,2.405,0.357\\n1,1,2,3,6,-0.211,1.925,-0.131\\n1,1,2,3,7,-0.401,2.028,-0.318\\n1,1,2,3,10,0.000,2.237,-0.610\\n1,2,2,3,1,-0.325,1.553,-0.487\\n1,2,2,3,5,-0.295,2.024,-0.590\\n1,2,2,3,6,-0.143,1.466,0.000\\n1,2,2,3,7,0.362,1.978,0.000\\n1,2,2,3,9,0.296,1.514,0.481\\n1,2,2,3,10,0.000,1.599,0.380\\n1,5,2,3,1,0.213,1.728,-0.042\\n1,5,2,3,5,-0.208,1.622,0.223\\n1,5,2,3,6,0.359,1.539,0.194\\n1,5,2,3,7,0.000,2.046,0.000\\n1,5,2,3,9,-0.290,1.519,-0.470\\n1,5,2,3,10,0.000,1.409,0.254\\n1,0,2,4,0,0.000,0.000,0.000\\n0,0,2,6,0,0.000,3.100,0.000\\n2,0,2,6,0,0.000,3.600,0.000\\n5,0,2,6,0,0.000,3.600,0.000\\n0,2,2,6,1,-1.953,3.953,-1.055\\n0,2,2,6,3,-1.712,2.596,-0.330\\n0,2,2,6,29,-0.215,2.810,-0.456\\n0,5,2,6,1,1.951,3.936,1.130\\n0,5,2,6,3,1.719,2.628,0.360\\n0,5,2,6,29,0.216,2.808,0.456\\n1,0,2,9,0,0.000,1.800,0.000\\n0,0,2,10,0,0.000,6.000,0.000\\n2,0,2,10,0,0.000,6.000,0.000\\n5,0,2,10,0,0.000,6.000,0.000\\n0,0,2,15,0,0.000,1.423,0.000\\n2,0,2,15,0,0.000,1.423,0.000\\n5,0,2,15,0,0.000,1.423,0.000\\n0,0,2,17,0,0.000,1.423,0.000\\n0,0,2,18,0,0.000,0.000,0.000\\n2,0,2,18,0,0.000,0.000,0.000\\n5,0,2,18,0,0.000,0.000,0.000\\n0,0,2,19,0,0.000,0.000,0.000\\n0,0,2,20,0,0.000,0.000,0.000\\n2,0,2,20,0,0.000,0.000,0.000\\n0,0,2,22,0,0.000,0.000,0.000\\n2,0,2,22,0,0.000,0.000,0.000\\n5,0,2,22,0,0.000,0.000,0.000\\n0,0,2,25,0,0.000,0.000,0.000\\n0,0,2,30,0,0.000,12.000,0.000\\n0,0,2,34,0,0.000,0.000,0.000\\n2,0,2,34,0,0.000,0.000,0.000\\n1,0,2,37,0,0.000,2.000,0.000\\n1,1,2,37,37,0.000,2.952,-0.079\\n1,2,2,37,37,0.000,1.542,0.434\\n1,5,2,37,37,0.000,1.308,-0.357\\n1,0,2,39,0,0.000,6.000,0.000\\n0,0,2,40,0,0.000,3.700,0.000\\n2,0,2,40,0,0.000,3.600,0.000\\n5,0,2,40,0,0.000,3.600,0.000\\n0,2,2,40,28,0.000,3.305,-0.530\\n0,5,2,40,28,0.139,3.241,0.139\\n0,0,2,41,0,0.000,1.200,0.000\\n2,0,2,41,0,0.000,1.800,0.000\\n0,2,2,41,32,0.000,1.235,0.000\\n0,5,2,41,32,0.000,1.231,0.000\\n0,0,2,43,0,0.000,3.600,0.000\\n2,0,2,43,0,0.000,3.600,0.000\\n0,0,2,45,0,0.000,2.200,0.000\\n2,0,2,45,0,0.000,1.800,0.000\\n0,2,2,45,32,0.000,2.212,0.000\\n0,5,2,45,32,0.000,2.225,0.000\\n0,0,2,46,0,0.000,1.800,0.000\\n2,0,2,46,0,0.000,1.800,0.000\\n0,0,2,55,0,0.000,4.800,0.000\\n0,0,2,56,0,0.000,4.800,0.000\\n0,0,2,62,0,0.000,8.000,0.000\\n0,2,2,62,23,1.693,7.903,0.532\\n0,5,2,62,23,-1.696,7.897,-0.482\\n1,0,2,63,0,0.000,1.800,0.000\\n1,0,2,64,0,0.000,1.800,0.000\\n1,0,2,67,0,0.000,1.800,0.000\\n1,0,2,81,0,0.000,4.800,0.000\\n1,0,3,3,0,0.000,0.600,0.000\\n4,0,3,3,0,0.000,1.800,0.000\\n1,1,3,3,1,-0.486,0.714,0.000\\n1,1,3,3,6,-0.081,-0.125,0.132\\n1,1,3,3,7,1.053,1.327,0.000\\n1,5,3,3,6,0.000,0.188,0.436\\n1,5,3,3,7,0.000,0.177,-0.412\\n1,6,3,3,6,0.269,0.437,0.000\\n1,6,3,3,7,-0.495,0.793,-0.318\\n1,7,3,3,7,-0.260,1.084,0.193\\n0,0,3,6,0,0.000,5.500,0.000\\n2,0,3,6,0,0.000,5.500,0.000\\n4,0,3,6,0,0.000,3.600,0.000\\n5,0,3,6,0,0.000,3.600,0.000\\n0,1,3,6,1,-1.244,5.482,0.365\\n0,1,3,6,24,-1.166,5.078,-0.545\\n0,1,3,6,37,-0.677,5.854,0.521\\n2,2,3,6,24,0.256,4.519,0.258\\n2,3,3,6,24,1.663,4.073,0.094\\n0,5,3,6,1,0.526,5.631,0.691\\n0,5,3,6,2,0.159,6.586,0.216\\n0,5,3,6,24,-2.285,4.737,0.468\\n0,7,3,6,0,0.700,6.500,-0.400\\n0,7,3,6,1,0.682,7.184,-0.935\\n0,7,3,6,2,-0.168,6.572,-0.151\\n0,7,3,6,24,1.662,6.152,-0.058\\n0,7,3,6,37,0.635,5.890,-0.446\\n2,37,3,6,24,0.000,3.892,-0.094\\n0,0,3,9,0,0.000,16.000,0.000\\n1,0,3,9,0,0.000,1.800,0.000\\n5,0,3,9,0,0.000,12.000,0.000\\n0,2,3,9,27,0.000,16.000,0.000\\n0,5,3,9,1,0.687,16.152,0.894\\n0,5,3,9,27,0.000,16.000,0.000\\n0,40,3,9,1,-0.704,18.216,0.000\\n0,40,3,9,27,0.000,16.000,0.178\\n0,0,3,10,0,0.000,6.000,0.000\\n2,0,3,10,0,0.000,6.000,0.000\\n4,0,3,10,0,0.000,6.000,0.000\\n5,0,3,10,0,0.000,6.000,0.000\\n0,1,3,10,1,0.831,6.061,0.522\\n0,1,3,10,6,-1.152,8.588,1.511\\n0,1,3,10,28,-0.259,5.934,1.326\\n2,2,3,10,28,0.000,6.561,0.294\\n0,5,3,10,1,-0.195,6.304,1.722\\n0,5,3,10,3,-0.705,5.383,0.234\\n0,5,3,10,28,-0.417,5.981,0.511\\n0,7,3,10,1,-0.491,6.218,0.000\\n0,7,3,10,3,0.733,-0.543,-0.163\\n0,7,3,10,6,1.234,8.372,-0.539\\n0,7,3,10,28,1.168,4.857,-0.341\\n0,10,3,10,28,0.000,3.706,1.254\\n0,0,3,15,0,0.000,1.423,0.000\\n2,0,3,15,0,0.000,1.423,0.000\\n4,0,3,15,0,0.000,1.423,0.000\\n5,0,3,15,0,0.000,1.423,0.000\\n0,0,3,17,0,0.000,1.423,0.000\\n5,0,3,17,0,0.000,1.423,0.000\\n0,0,3,18,0,0.000,0.000,0.000\\n2,0,3,18,0,0.000,0.000,0.000\\n0,0,3,20,0,0.000,0.000,-0.300\\n2,0,3,20,0,0.000,0.000,0.000\\n4,0,3,20,0,0.000,0.000,-0.300\\n5,0,3,20,0,0.000,0.000,0.000\\n0,7,3,20,0,0.000,0.400,0.400\\n0,7,3,20,5,0.000,0.000,-0.131\\n0,7,3,20,20,0.000,0.000,0.000\\n0,20,3,20,5,0.000,0.000,0.085\\n0,20,3,20,20,0.000,0.000,0.000\\n0,0,3,22,0,0.000,0.000,0.000\\n2,0,3,22,0,0.000,0.000,0.000\\n4,0,3,22,0,0.000,0.000,0.000\\n5,0,3,22,0,0.000,0.000,0.000\\n0,7,3,22,0,0.000,0.400,0.400\\n0,0,3,25,0,0.000,0.000,0.000\\n2,0,3,25,0,0.000,0.000,0.000\\n1,0,3,30,0,0.000,1.800,0.000\\n4,0,3,30,0,0.000,1.800,0.000\\n1,0,3,37,0,0.000,2.500,0.000\\n4,0,3,37,0,0.000,1.800,0.000\\n1,1,3,37,37,0.000,2.428,0.000\\n1,6,3,37,37,0.000,1.743,0.000\\n1,7,3,37,37,0.000,2.256,0.000\\n1,43,3,37,37,-0.241,3.385,-0.838\\n1,0,3,39,0,0.000,5.500,0.000\\n0,0,3,40,0,0.000,3.900,0.000\\n2,0,3,40,0,0.000,3.600,0.000\\n5,0,3,40,0,0.000,3.600,0.000\\n0,5,3,40,28,-1.355,3.964,0.800\\n0,9,3,40,28,1.045,3.785,-0.291\\n0,40,3,40,28,0.508,2.985,0.809\\n0,0,3,41,0,0.000,1.800,0.000\\n2,0,3,41,0,0.000,1.800,0.000\\n0,0,3,43,0,0.000,4.500,0.000\\n2,0,3,43,0,0.000,3.600,0.000\\n4,0,3,43,0,0.000,3.600,0.000\\n5,0,3,43,0,0.000,3.600,0.000\\n0,1,3,43,18,1.712,3.309,0.233\\n0,1,3,43,28,-0.414,4.168,-0.875\\n0,7,3,43,18,-0.880,5.091,-0.129\\n0,7,3,43,28,0.536,5.276,-0.556\\n2,37,3,43,18,-0.701,4.871,1.225\\n2,37,3,43,28,-0.086,5.073,0.878\\n0,0,3,45,0,0.000,1.800,0.000\\n2,0,3,45,0,0.000,1.800,0.000\\n0,0,3,48,0,0.000,0.000,0.892\\n0,0,3,51,0,0.000,13.500,0.000\\n0,1,3,51,52,0.000,13.549,0.000\\n0,0,3,54,0,0.000,8.000,0.000\\n1,0,3,54,0,0.000,2.500,0.000\\n5,0,3,54,0,0.000,12.000,0.000\\n0,5,3,54,1,0.000,8.000,0.000\\n0,5,3,54,36,0.000,8.000,0.000\\n0,0,3,55,0,0.000,4.800,0.000\\n2,0,3,55,0,0.000,4.800,0.000\\n0,0,3,56,0,0.000,4.800,0.000\\n2,0,3,56,0,0.000,4.800,0.000\\n1,0,3,57,0,0.000,2.500,0.000\\n1,0,3,58,0,0.000,4.800,0.000\\n0,0,3,62,0,0.000,3.600,0.000\\n2,0,3,62,0,0.000,3.600,0.000\\n5,0,3,62,0,0.000,3.600,0.000\\n1,0,3,63,0,0.000,2.500,0.000\\n1,0,3,64,0,0.000,2.500,0.000\\n0,0,3,67,0,0.000,12.000,0.000\\n0,0,3,74,0,0.000,19.000,0.000\\n0,1,3,74,7,0.000,19.349,0.000\\n0,0,3,75,0,0.000,19.000,0.000\\n0,1,3,75,71,0.000,18.751,0.000\\n1,0,3,78,0,0.000,2.500,0.000\\n1,0,3,80,0,0.000,2.500,0.000\\n0,0,6,6,0,0.000,-2.000,0.000\\n5,0,6,6,0,0.000,-2.000,0.000\\n0,0,6,8,0,0.900,-1.100,-0.500\\n5,0,6,8,0,0.000,0.000,0.274\\n0,21,6,8,1,0.261,-0.330,-0.542\\n0,21,6,8,23,1.503,-1.853,-0.476\\n0,0,6,9,0,0.000,3.600,0.000\\n5,0,6,9,0,0.000,3.600,0.000\\n0,0,6,10,0,1.200,0.500,-1.000\\n0,21,6,10,1,0.829,0.000,-0.730\\n0,21,6,10,3,0.675,-0.185,-1.053\\n0,0,6,15,0,0.000,-4.000,0.000\\n0,0,6,17,0,0.000,1.423,0.000\\n5,0,6,17,0,0.000,1.423,0.000\\n0,0,6,18,0,0.000,0.000,0.100\\n5,0,6,18,0,0.000,0.000,0.103\\n0,33,6,18,1,-0.520,-0.471,-0.267\\n0,33,6,18,6,-1.623,0.204,0.438\\n0,33,6,18,32,1.616,0.425,0.191\\n0,0,6,19,0,0.000,0.000,0.150\\n5,0,6,19,0,0.000,0.000,0.165\\n0,21,6,19,1,-0.620,-0.329,0.303\\n0,21,6,19,5,0.683,0.220,0.000\\n0,0,6,20,0,0.000,0.000,0.400\\n4,0,6,20,0,0.000,0.000,0.217\\n5,0,6,20,0,0.000,0.000,0.217\\n0,20,6,20,5,0.000,0.000,-0.079\\n4,20,6,20,20,0.000,0.000,0.000\\n0,0,6,22,0,0.000,0.000,0.217\\n0,0,6,25,0,0.000,0.000,0.650\\n5,0,6,25,0,0.000,0.000,0.231\\n0,1,6,25,1,-1.704,-0.452,0.556\\n0,1,6,25,6,0.000,0.000,0.777\\n0,1,6,25,32,1.205,0.914,0.612\\n0,24,6,25,6,-3.209,-7.622,1.065\\n0,24,6,25,32,-5.891,-3.332,0.290\\n0,0,6,26,0,0.000,0.000,0.346\\n0,0,6,30,0,0.000,3.600,0.000\\n2,0,6,30,0,0.000,3.600,0.000\\n0,0,6,37,0,0.000,3.200,0.000\\n5,0,6,37,0,0.000,3.600,0.000\\n0,1,6,37,37,0.000,4.382,0.000\\n0,3,6,37,37,0.000,2.576,0.000\\n0,29,6,37,37,0.000,2.801,0.000\\n0,0,6,39,0,0.000,0.000,0.000\\n0,0,6,40,0,0.000,0.000,0.274\\n0,0,6,41,0,0.000,3.600,0.000\\n0,0,6,43,0,0.000,0.000,0.274\\n0,0,6,45,0,0.000,6.000,0.000\\n0,1,6,45,32,0.000,6.208,0.000\\n0,0,6,54,0,0.000,3.600,0.000\\n0,0,6,55,0,0.000,3.600,0.000\\n0,0,6,57,0,0.000,3.600,0.000\\n0,0,6,58,0,0.000,3.600,0.000\\n0,0,6,63,0,0.000,3.600,0.000\\n0,0,6,64,0,0.000,3.600,0.000\\n0,0,8,8,0,0.000,0.000,0.375\\n5,0,8,8,0,0.000,0.000,0.375\\n0,0,8,9,0,0.000,3.600,0.000\\n5,0,8,9,0,0.000,3.600,0.000\\n0,0,8,10,0,0.000,0.000,0.000\\n4,0,8,10,0,0.000,0.000,0.000\\n0,0,8,15,0,0.000,0.000,0.424\\n0,0,8,17,0,0.000,1.423,0.000\\n4,0,8,17,0,0.000,1.423,0.000\\n5,0,8,17,0,0.000,1.423,0.000\\n0,0,8,19,0,0.000,0.000,0.225\\n0,0,8,20,0,0.000,0.000,0.350\\n4,0,8,20,0,0.000,0.000,0.300\\n5,0,8,20,0,0.000,0.000,0.297\\n0,20,8,20,5,0.000,0.120,0.472\\n4,20,8,20,20,0.000,-0.097,0.200\\n0,23,8,20,5,-0.101,-0.324,0.371\\n0,23,8,20,20,0.107,0.253,0.151\\n0,0,8,22,0,0.000,0.000,0.297\\n0,0,8,25,0,0.000,0.000,0.316\\n5,0,8,25,0,0.000,0.000,0.316\\n0,0,8,26,0,0.000,0.000,0.474\\n5,0,8,26,0,0.000,0.000,0.474\\n0,0,8,34,0,0.000,0.000,0.250\\n0,0,8,39,0,0.000,0.000,0.000\\n0,0,8,40,0,0.000,0.000,0.375\\n0,0,8,43,0,0.000,0.000,0.375\\n0,0,8,45,0,0.000,3.600,0.000\\n0,0,8,46,0,0.000,3.600,0.000\\n0,0,8,55,0,0.000,3.600,0.000\\n0,0,8,56,0,0.000,3.600,0.000\\n0,0,9,9,0,0.000,12.000,0.000\\n1,0,9,9,0,0.000,1.800,0.000\\n5,0,9,9,0,0.000,12.000,0.000\\n0,0,9,10,0,0.000,6.000,0.000\\n5,0,9,10,0,0.000,6.000,0.000\\n0,0,9,15,0,0.000,1.423,0.000\\n0,0,9,18,0,0.000,0.000,0.000\\n0,0,9,19,0,0.000,0.000,0.000\\n0,0,9,20,0,0.000,0.000,0.000\\n0,0,9,25,0,0.000,0.000,0.000\\n0,0,9,34,0,0.000,0.000,0.000\\n5,0,9,34,0,0.000,0.000,0.000\\n1,0,9,37,0,0.000,1.800,0.000\\n1,0,9,39,0,0.000,6.000,0.000\\n0,0,9,40,0,0.000,3.600,0.000\\n0,0,9,41,0,0.000,4.800,0.000\\n0,0,9,45,0,0.000,1.800,0.000\\n0,0,9,54,0,0.000,12.000,0.000\\n0,0,9,55,0,0.000,4.800,0.000\\n0,0,9,56,0,0.000,4.800,0.000\\n1,0,9,57,0,0.000,1.800,0.000\\n0,0,9,62,0,0.000,3.600,0.000\\n1,0,9,63,0,0.000,1.800,0.000\\n1,0,9,64,0,0.000,1.800,0.000\\n0,0,9,67,0,0.000,12.000,0.000\\n1,0,9,78,0,0.000,1.800,0.000\\n1,0,9,81,0,0.000,4.800,0.000\\n0,0,10,10,0,0.000,0.000,0.000\\n5,0,10,10,0,0.000,0.000,0.000\\n0,0,10,15,0,0.000,0.000,0.000\\n0,0,10,17,0,0.000,4.743,0.000\\n0,0,10,20,0,0.000,0.000,0.000\\n4,0,10,20,0,0.000,0.000,0.000\\n5,0,10,20,0,0.000,0.000,0.000\\n0,0,10,22,0,0.000,0.000,0.000\\n0,0,10,25,0,0.000,0.000,0.000\\n0,0,10,26,0,0.000,0.000,0.000\\n5,0,10,26,0,0.000,0.000,0.000\\n0,0,10,34,0,0.000,0.000,0.000\\n0,0,10,37,0,0.000,6.000,0.000\\n0,0,10,39,0,0.000,0.000,0.000\\n0,0,10,40,0,0.000,0.000,0.000\\n5,0,10,40,0,0.000,0.000,0.000\\n0,0,10,41,0,0.000,6.000,0.000\\n0,0,10,45,0,0.000,6.000,0.000\\n0,0,10,63,0,0.000,6.000,0.000\\n0,0,10,64,0,0.000,6.000,0.000\\n0,0,15,15,0,-1.400,-8.300,1.000\\n5,0,15,15,0,0.000,-8.000,0.000\\n0,1,15,15,1,-1.663,-8.408,1.433\\n0,1,15,15,71,-1.088,-8.245,0.411\\n0,0,15,18,0,0.000,0.000,0.160\\n0,0,15,19,0,0.000,0.000,0.255\\n5,0,15,19,0,0.000,0.000,0.255\\n0,0,15,20,0,0.000,0.000,0.336\\n4,0,15,20,0,0.000,0.000,0.336\\n0,0,15,22,0,0.000,0.000,0.336\\n0,0,15,25,0,0.000,0.000,0.358\\n4,0,15,25,0,0.000,0.000,0.358\\n0,0,15,26,0,0.000,0.000,0.537\\n0,0,15,30,0,0.000,1.423,0.000\\n4,0,15,30,0,0.000,1.423,0.000\\n0,0,15,37,0,0.000,1.300,0.000\\n5,0,15,37,0,0.000,1.423,0.000\\n0,1,15,37,37,0.000,2.177,0.000\\n0,71,15,37,37,0.000,0.505,0.333\\n0,0,15,40,0,0.000,0.000,0.424\\n0,0,15,43,0,0.000,0.000,0.424\\n0,0,15,57,0,0.000,1.423,0.000\\n0,0,15,63,0,0.000,1.423,0.000\\n0,0,15,64,0,0.000,1.423,0.000\\n0,0,17,20,0,0.000,0.000,0.000\\n4,0,17,20,0,0.000,0.000,0.000\\n5,0,17,20,0,0.000,0.000,0.000\\n0,0,17,22,0,0.000,0.000,0.000\\n0,0,17,37,0,0.000,1.423,0.000\\n0,0,17,43,0,0.000,3.795,0.000\\n0,0,18,20,0,0.000,0.000,0.112\\n4,0,18,20,0,0.000,0.000,0.112\\n5,0,18,20,0,0.000,0.000,0.112\\n0,0,18,22,0,0.000,0.000,0.112\\n0,0,18,37,0,0.000,-1.200,-0.300\\n0,32,18,37,37,-0.173,-0.965,-0.610\\n0,39,18,37,37,0.000,-0.760,0.227\\n0,43,18,37,37,0.228,-1.741,-0.371\\n0,0,18,39,0,0.000,0.000,0.500\\n0,32,18,39,63,0.000,0.687,0.680\\n0,37,18,39,63,0.000,-0.513,0.357\\n0,0,18,43,0,0.000,0.000,0.350\\n4,0,18,43,0,0.000,0.000,0.141\\n5,0,18,43,0,0.000,0.000,0.141\\n0,1,18,43,1,-0.914,-0.482,0.179\\n0,1,18,43,3,-0.392,-2.724,0.312\\n0,1,18,43,28,-1.508,-1.816,-0.175\\n0,1,18,43,37,0.823,-1.220,-0.770\\n0,32,18,43,1,1.588,1.499,1.410\\n0,32,18,43,3,0.653,0.254,0.000\\n0,32,18,43,28,0.528,0.342,0.000\\n0,32,18,43,37,0.812,1.513,1.266\\n0,37,18,43,1,-1.139,-0.703,1.088\\n0,37,18,43,28,-2.014,-1.646,-2.068\\n0,37,18,43,37,-1.519,-0.328,1.437\\n0,43,18,43,28,3.011,-1.405,2.038\\n0,0,18,48,0,0.000,0.000,0.400\\n0,1,18,48,28,1.767,1.606,0.408\\n0,32,18,48,28,-1.463,-2.548,0.310\\n0,0,18,55,0,0.000,0.000,0.000\\n0,0,18,58,0,0.000,0.000,0.000\\n0,0,18,62,0,0.000,0.000,0.500\\n0,1,18,62,1,-0.403,-0.273,0.440\\n0,32,18,62,1,0.291,0.385,0.582\\n0,0,18,63,0,0.000,0.000,0.000\\n0,0,18,64,0,0.000,0.000,0.000\\n0,0,18,80,0,0.000,0.000,0.000\\n0,0,19,20,0,0.000,0.000,0.179\\n4,0,19,20,0,0.000,0.000,0.179\\n0,0,19,37,0,0.000,0.000,0.000\\n0,0,19,40,0,0.000,0.000,0.225\\n0,0,19,63,0,0.000,0.000,0.000\\n0,0,19,75,0,0.000,0.000,0.000\\n0,0,20,20,0,0.000,0.000,0.200\\n4,0,20,20,0,0.000,0.000,0.000\\n5,0,20,20,0,0.000,0.000,0.236\\n0,1,20,20,5,0.067,0.081,0.347\\n0,1,20,20,20,-0.063,-0.064,0.140\\n0,3,20,20,5,0.000,0.000,0.083\\n0,3,20,20,20,0.000,0.000,0.000\\n0,5,20,20,5,0.000,0.000,0.424\\n0,5,20,20,6,0.000,0.000,-0.080\\n0,5,20,20,8,0.000,0.127,0.450\\n0,5,20,20,12,-0.072,-0.269,0.439\\n0,5,20,20,20,-0.057,0.000,0.307\\n4,6,20,20,20,0.000,0.000,0.000\\n4,8,20,20,20,0.000,-0.091,0.192\\n0,12,20,20,20,0.077,0.202,0.183\\n4,20,20,20,20,0.000,0.000,0.000\\n0,0,20,22,0,0.000,0.000,0.236\\n4,0,20,22,0,0.000,0.000,0.236\\n0,0,20,25,0,0.000,0.000,0.251\\n4,0,20,25,0,0.000,0.000,0.251\\n0,0,20,26,0,0.000,0.000,0.376\\n4,0,20,26,0,0.000,0.000,0.376\\n5,0,20,26,0,0.000,0.000,0.376\\n0,0,20,30,0,0.000,0.000,0.000\\n2,0,20,30,0,0.000,0.000,0.000\\n4,0,20,30,0,0.000,0.000,0.000\\n0,0,20,30,30,0.000,0.000,-0.500\\n0,0,20,34,0,0.000,0.000,0.198\\n4,0,20,34,0,0.000,0.000,0.198\\n0,0,20,37,0,0.000,0.000,0.000\\n4,0,20,37,0,0.000,0.000,0.000\\n0,0,20,40,0,0.000,0.000,0.297\\n0,0,20,41,0,0.000,0.000,0.000\\n0,0,20,43,0,0.000,0.000,0.297\\n4,0,20,43,0,0.000,0.000,0.297\\n0,0,20,45,0,0.000,0.000,0.000\\n0,0,22,22,0,0.000,0.000,0.236\\n4,0,22,22,0,0.000,0.000,0.236\\n5,0,22,22,0,0.000,0.000,0.236\\n0,0,22,30,0,0.000,0.000,0.000\\n4,0,22,30,0,0.000,0.000,0.000\\n0,0,22,34,0,0.000,0.000,0.198\\n0,0,22,37,0,0.000,0.000,0.000\\n0,0,22,40,0,0.000,0.000,0.297\\n0,0,22,41,0,0.000,0.000,0.000\\n0,0,22,43,0,0.000,0.000,0.297\\n5,0,22,43,0,0.000,0.000,0.297\\n0,0,22,45,0,0.000,0.000,0.000\\n0,0,25,25,0,0.000,0.000,0.267\\n0,0,25,37,0,0.000,0.000,0.000\\n5,0,25,37,0,0.000,0.000,0.000\\n0,0,25,39,0,0.000,0.000,0.000\\n0,0,25,40,0,0.000,0.000,0.316\\n5,0,25,40,0,0.000,0.000,0.316\\n0,0,25,43,0,0.000,0.000,0.250\\n0,1,25,43,1,-2.686,-1.512,0.591\\n0,1,25,43,28,-3.730,-0.531,0.000\\n0,32,25,43,1,2.108,1.896,0.965\\n0,32,25,43,28,2.977,0.732,-0.502\\n0,0,25,57,0,0.000,0.000,0.000\\n0,0,25,63,0,0.000,0.000,0.000\\n0,0,26,26,0,0.000,0.000,0.600\\n5,0,26,26,0,0.000,0.000,0.600\\n0,0,26,34,0,0.000,0.000,0.316\\n5,0,26,34,0,0.000,0.000,0.316\\n0,0,26,37,0,0.000,1.423,0.000\\n0,0,26,40,0,0.000,0.000,0.474\\n0,0,30,30,0,0.000,12.000,0.000\\n1,0,30,30,0,0.000,1.800,0.000\\n4,0,30,30,0,0.000,1.800,0.000\\n0,0,30,40,0,0.000,3.600,0.000\\n1,0,30,67,0,0.000,1.800,0.000\\n0,0,34,37,0,0.000,0.000,0.000\\n0,0,34,43,0,0.000,0.000,0.250\\n0,0,37,37,0,0.000,7.000,0.000\\n1,0,37,37,0,0.000,2.000,0.000\\n4,0,37,37,0,0.000,6.000,0.000\\n5,0,37,37,0,0.000,6.000,0.000\\n0,1,37,37,5,0.000,7.000,0.000\\n0,1,37,37,37,0.000,7.000,0.000\\n0,2,37,37,5,0.000,7.000,0.000\\n0,2,37,37,37,0.000,7.000,0.000\\n0,3,37,37,5,0.000,7.000,0.000\\n0,3,37,37,37,0.000,7.000,0.000\\n0,5,37,37,5,0.000,7.000,0.000\\n0,5,37,37,6,0.000,7.000,0.000\\n0,5,37,37,15,0.000,7.000,0.000\\n0,5,37,37,18,0.000,7.000,0.000\\n0,5,37,37,37,0.000,7.000,0.000\\n0,5,37,37,40,0.000,7.000,0.000\\n0,5,37,37,43,0.000,7.000,0.000\\n0,6,37,37,37,0.000,7.000,0.000\\n0,15,37,37,37,0.000,7.000,0.000\\n0,18,37,37,37,0.000,7.000,0.000\\n0,37,37,37,37,0.000,7.000,0.000\\n0,37,37,37,40,0.000,7.000,0.000\\n0,37,37,37,43,0.000,7.000,0.000\\n0,0,37,38,0,0.000,7.000,0.000\\n0,0,37,39,0,0.000,3.600,0.000\\n1,0,37,39,0,0.000,6.000,0.000\\n0,0,37,40,0,0.000,4.000,0.000\\n5,0,37,40,0,0.000,3.600,0.000\\n0,37,37,40,1,0.000,4.095,0.382\\n0,37,37,40,28,0.698,2.542,3.072\\n0,0,37,41,0,0.000,1.800,0.000\\n0,0,37,43,0,0.000,2.000,1.800\\n5,0,37,43,0,0.000,3.600,0.000\\n0,37,37,43,18,0.372,2.284,2.034\\n0,37,37,43,28,0.000,1.694,1.508\\n0,0,37,45,0,0.000,1.800,0.000\\n0,0,37,46,0,0.000,1.800,0.000\\n0,0,37,55,0,0.000,4.800,0.000\\n0,0,37,56,0,0.000,4.800,0.000\\n1,0,37,57,0,0.000,1.800,0.000\\n0,0,37,58,0,0.000,6.000,0.000\\n1,0,37,58,0,0.000,4.800,0.000\\n0,0,37,62,0,0.000,3.600,0.000\\n0,0,37,63,0,0.000,7.000,0.000\\n1,0,37,63,0,0.000,1.800,0.000\\n0,0,37,64,0,0.000,7.000,0.000\\n1,0,37,64,0,0.000,1.800,0.000\\n1,0,37,67,0,0.000,1.800,0.000\\n0,0,37,69,0,0.000,7.000,0.000\\n0,0,37,78,0,0.000,6.000,0.000\\n0,0,37,81,0,0.000,6.000,0.000\\n1,0,37,81,0,0.000,4.800,0.000\\n0,0,38,38,0,0.000,7.000,0.000\\n0,0,38,58,0,0.000,7.000,0.000\\n0,0,38,63,0,0.000,7.000,0.000\\n0,0,38,64,0,0.000,7.000,0.000\\n0,0,38,69,0,0.000,6.000,0.000\\n0,0,38,78,0,0.000,6.000,0.000\\n0,0,39,40,0,0.000,0.000,0.000\\n0,0,39,45,0,0.000,6.000,0.000\\n0,0,39,63,0,0.000,4.000,0.000\\n1,0,39,63,0,0.000,6.000,0.000\\n5,0,39,63,0,0.000,3.600,0.000\\n0,1,39,63,5,0.000,4.000,0.000\\n0,1,39,63,64,0.000,4.000,0.000\\n0,18,39,63,5,0.000,4.000,0.000\\n0,18,39,63,64,0.000,4.000,0.000\\n0,63,39,63,5,0.000,4.000,0.000\\n0,63,39,63,64,0.000,4.000,0.000\\n0,0,39,64,0,0.000,3.600,0.000\\n1,0,39,64,0,0.000,6.000,0.000\\n0,0,39,65,0,0.000,4.000,0.000\\n0,0,39,78,0,0.000,3.600,0.000\\n0,0,40,40,0,0.000,0.000,0.375\\n0,0,40,45,0,0.000,3.600,0.000\\n0,0,40,46,0,0.000,3.600,0.000\\n0,0,40,54,0,0.000,3.600,0.000\\n2,0,40,54,0,0.000,3.600,0.000\\n0,0,40,63,0,0.000,3.600,0.000\\n0,0,40,64,0,0.000,3.600,0.000\\n0,0,40,78,0,0.000,3.600,0.000\\n0,0,41,41,0,0.000,1.800,0.000\\n0,0,41,55,0,0.000,4.800,0.000\\n0,0,41,62,0,0.000,3.600,0.000\\n0,0,41,80,0,0.000,1.800,0.000\\n0,0,43,43,0,0.000,0.000,0.375\\n0,0,43,45,0,0.000,3.600,0.000\\n0,0,43,64,0,0.000,3.600,0.000\\n0,0,44,57,0,0.000,7.000,0.000\\n0,0,44,63,0,0.000,7.000,0.000\\n0,0,44,65,0,0.000,7.000,0.000\\n0,0,44,78,0,0.000,2.846,0.000\\n0,0,44,80,0,0.000,2.846,0.000\\n0,0,45,63,0,0.000,1.800,0.000\\n0,0,45,64,0,0.000,1.800,0.000\\n0,0,45,78,0,0.000,1.800,0.000\\n0,0,55,57,0,0.000,10.000,0.000\\n2,0,55,57,0,0.000,4.800,0.000\\n5,0,55,57,0,0.000,4.800,0.000\\n0,1,55,57,5,0.423,12.064,0.090\\n0,1,55,57,55,-0.428,12.044,0.000\\n0,36,55,57,5,-0.268,8.077,-0.806\\n0,36,55,57,55,0.273,8.025,0.692\\n0,0,55,62,0,0.000,3.600,0.000\\n0,0,55,64,0,0.000,4.800,0.000\\n0,0,55,80,0,0.000,4.800,0.000\\n0,0,56,57,0,0.000,6.000,0.000\\n0,1,56,57,56,0.000,6.886,-0.161\\n0,36,56,57,56,0.000,4.688,0.107\\n0,0,56,63,0,0.000,4.800,0.000\\n0,0,56,80,0,0.000,4.800,0.000\\n1,0,57,63,0,0.000,1.800,0.000\\n1,0,57,64,0,0.000,1.800,0.000\\n0,0,58,63,0,0.000,6.000,0.000\\n0,0,58,64,0,0.000,6.000,0.000\\n0,0,59,63,0,0.000,7.000,0.000\\n0,0,59,65,0,0.000,7.000,0.000\\n0,0,59,78,0,0.000,3.600,0.000\\n0,0,59,80,0,0.000,3.600,0.000\\n0,0,59,82,0,0.000,3.600,0.000\\n0,0,62,63,0,0.000,3.600,0.000\\n0,0,62,64,0,0.000,3.600,0.000\\n1,0,63,63,0,0.000,1.800,0.000\\n0,0,63,64,0,0.000,7.000,0.000\\n0,5,63,64,5,0.000,7.000,0.000\\n0,5,63,64,64,0.000,7.000,0.000\\n0,39,63,64,5,0.000,7.000,0.000\\n0,39,63,64,64,0.000,7.000,0.000\\n0,0,63,66,0,0.000,7.000,0.000\\n0,0,63,78,0,0.000,6.000,0.000\\n0,0,63,81,0,0.000,6.000,0.000\\n0,0,64,64,0,0.000,7.000,0.000\\n1,0,64,64,0,0.000,1.800,0.000\\n0,5,64,64,5,0.000,7.000,0.000\\n0,5,64,64,63,0.000,7.000,0.000\\n0,63,64,64,63,0.000,7.000,0.000\\n0,0,64,65,0,0.000,7.000,0.000\\n0,0,64,66,0,0.000,7.000,0.000\\n0,0,64,78,0,0.000,6.000,0.000\\n0,0,64,81,0,0.000,6.000,0.000\\n5,0,64,81,0,0.000,6.000,0.000\\n0,0,64,82,0,0.000,6.000,0.000\\n0,0,65,66,0,0.000,7.000,0.000\\n0,0,65,78,0,0.000,6.000,0.000\\n0,0,65,81,0,0.000,6.000,0.000\\n0,0,65,82,0,0.000,6.000,0.000\\n0,0,66,66,0,0.000,7.000,0.000\\n0,0,66,78,0,0.000,6.000,0.000\\n0,0,66,81,0,0.000,6.000,0.000\\n0,0,67,67,0,0.000,12.000,0.000\\n5,0,67,67,0,0.000,12.000,0.000\\n0,0,76,76,0,0.000,3.600,0.000\\n0,0,76,78,0,0.000,3.600,0.000\\n0,0,78,78,0,0.000,7.000,0.000\\n0,0,78,79,0,0.000,6.000,0.000\\n0,0,78,81,0,0.000,4.000,0.000\\n0,0,79,79,0,0.000,6.000,0.000\\n0,0,79,81,0,0.000,6.000,0.000\\n0,0,80,81,0,0.000,4.000,0.000\\n'));Xrb.sH=true}else if(Erb.k7(a,gxb)&&!Xrb.tH){Prb.rA();Prb.yA(gxb,new Prb.pB(yzb,'930\\nint,int,int,int,int,float,float,float\\n0,0,1,1,0,0.000,0.000,0.300\\n5,0,1,1,0,0.200,-0.800,1.500\\n0,1,1,1,1,0.103,0.681,0.332\\n5,1,1,1,1,0.144,-0.547,1.126\\n0,1,1,1,2,-0.295,0.438,0.584\\n0,1,1,1,3,0.066,-0.156,0.143\\n0,1,1,1,5,0.639,-0.630,0.264\\n0,1,1,1,6,-0.688,1.757,0.477\\n5,1,1,1,6,0.000,0.000,0.054\\n0,1,1,1,8,-1.420,-0.092,1.101\\n5,1,1,1,8,0.000,-0.158,0.323\\n0,1,1,1,11,0.593,0.662,1.120\\n0,1,1,1,12,-0.678,0.417,0.624\\n0,1,1,1,15,-0.714,0.698,0.000\\n0,1,1,1,34,-0.647,0.550,0.590\\n0,2,1,1,5,0.321,-0.411,0.144\\n0,3,1,1,3,0.443,0.000,-1.140\\n0,3,1,1,5,-0.256,0.058,0.000\\n0,3,1,1,6,-0.679,-0.029,0.000\\n0,5,1,1,5,0.284,-1.386,0.314\\n0,5,1,1,6,-0.654,1.072,0.279\\n0,5,1,1,8,-0.744,-1.235,0.337\\n0,5,1,1,10,0.000,0.000,0.418\\n0,5,1,1,11,0.000,0.516,0.291\\n0,5,1,1,12,0.678,-0.602,0.398\\n0,5,1,1,15,1.142,-0.644,0.367\\n0,5,1,1,25,0.000,0.000,0.295\\n0,5,1,1,34,0.692,-0.530,0.278\\n0,5,1,1,37,0.000,0.000,0.389\\n0,5,1,1,39,0.000,0.000,0.278\\n0,5,1,1,41,0.000,0.000,-0.141\\n0,5,1,1,56,0.000,0.000,0.324\\n0,5,1,1,68,0.000,0.000,0.136\\n0,6,1,1,6,0.408,1.397,0.961\\n5,6,1,1,6,0.313,-1.035,1.631\\n0,8,1,1,8,1.055,0.834,0.000\\n0,11,1,1,11,-0.387,-0.543,1.405\\n0,12,1,1,12,0.000,0.000,0.893\\n0,15,1,1,15,-0.177,0.000,0.049\\n0,0,1,2,0,0.000,0.000,0.000\\n2,0,1,2,0,0.000,0.000,0.000\\n5,0,1,2,0,0.000,0.000,0.000\\n0,0,1,2,2,0.000,0.000,-0.650\\n5,0,1,2,2,0.000,0.000,-0.650\\n0,1,1,2,1,0.419,0.296,0.282\\n0,1,1,2,2,-0.494,0.274,-0.630\\n0,1,1,2,5,0.075,0.000,0.358\\n0,2,1,2,2,-0.293,0.115,-0.508\\n0,2,1,2,5,0.301,0.104,0.507\\n0,3,1,2,1,0.565,-0.554,0.234\\n0,3,1,2,2,-0.577,-0.482,-0.427\\n0,3,1,2,5,0.082,0.000,0.123\\n0,5,1,2,1,0.000,-0.184,0.220\\n0,5,1,2,2,0.501,-0.410,-0.535\\n2,5,1,2,2,0.000,0.000,0.055\\n2,5,1,2,3,0.000,0.000,-0.108\\n0,5,1,2,5,-0.523,-0.228,0.208\\n2,5,1,2,37,0.000,0.000,0.000\\n0,6,1,2,1,-0.467,0.000,0.490\\n0,6,1,2,2,0.425,0.168,-0.875\\n0,6,1,2,5,0.000,0.136,0.396\\n0,8,1,2,1,-0.504,0.371,0.557\\n0,8,1,2,2,0.541,0.539,-1.009\\n0,8,1,2,5,0.000,0.204,0.464\\n0,0,1,3,0,0.000,0.400,0.300\\n2,0,1,3,0,0.000,0.500,0.350\\n5,0,1,3,0,0.000,0.000,0.000\\n0,0,1,3,1,0.000,0.000,0.550\\n0,0,1,3,5,0.000,0.200,0.700\\n0,0,1,3,7,0.000,0.400,0.400\\n0,1,1,3,1,0.103,0.177,0.545\\n0,1,1,3,5,-0.072,0.316,0.674\\n0,1,1,3,6,-0.117,-0.333,0.202\\n0,1,1,3,7,0.825,0.139,0.325\\n0,1,1,3,10,-0.763,1.244,0.986\\n0,2,1,3,5,0.663,-0.167,0.426\\n0,2,1,3,7,-0.758,0.112,0.563\\n0,5,1,3,1,-0.073,0.085,0.531\\n2,5,1,3,2,0.000,0.000,0.115\\n2,5,1,3,3,0.000,0.000,0.446\\n0,5,1,3,5,-0.822,0.501,1.008\\n0,5,1,3,6,0.000,-0.624,0.330\\n0,5,1,3,7,0.659,-1.407,0.308\\n0,5,1,3,10,-0.687,1.244,0.136\\n2,5,1,3,37,0.000,0.000,0.056\\n0,5,1,3,43,0.000,1.027,0.360\\n0,5,1,3,51,0.000,1.543,0.350\\n0,5,1,3,53,0.000,0.501,0.000\\n0,5,1,3,74,0.000,0.513,-0.344\\n0,5,1,3,75,0.000,0.511,-0.186\\n0,6,1,3,6,0.447,0.652,0.318\\n0,6,1,3,7,-0.395,0.730,-0.139\\n0,10,1,3,7,0.530,2.905,2.756\\n0,10,1,3,10,0.465,-0.241,1.850\\n0,0,1,4,0,0.000,0.000,0.000\\n0,0,1,6,0,0.000,0.000,0.200\\n5,0,1,6,0,0.000,-0.200,0.400\\n0,1,1,6,1,-0.681,0.755,0.755\\n5,1,1,6,1,0.000,0.243,-0.596\\n0,1,1,6,3,-0.547,0.000,0.320\\n0,1,1,6,21,0.000,0.270,0.237\\n0,2,1,6,21,0.102,0.460,-0.128\\n0,3,1,6,21,-1.652,-1.660,0.283\\n0,5,1,6,1,0.571,0.319,0.570\\n0,5,1,6,2,0.000,0.000,0.306\\n0,5,1,6,3,0.572,0.000,-0.304\\n0,5,1,6,21,0.596,-0.276,0.346\\n0,5,1,6,25,0.000,0.000,0.061\\n0,5,1,6,37,0.000,0.000,0.106\\n0,5,1,6,45,0.000,0.000,-0.174\\n0,6,1,6,1,0.229,-0.710,0.722\\n5,6,1,6,1,0.000,0.000,0.040\\n0,6,1,6,21,1.488,-3.401,-0.320\\n0,37,1,6,21,0.712,1.320,-0.507\\n0,0,1,8,0,0.000,-0.300,0.500\\n5,0,1,8,0,0.000,0.000,0.297\\n0,1,1,8,1,-0.439,0.786,0.272\\n5,1,1,8,1,0.115,-0.390,0.658\\n0,1,1,8,6,-0.608,0.339,1.496\\n0,1,1,8,23,-0.428,0.323,0.280\\n0,2,1,8,23,0.594,-0.409,0.155\\n0,5,1,8,1,0.393,-0.385,0.562\\n0,5,1,8,6,0.598,-0.158,0.399\\n0,5,1,8,23,-0.152,-0.440,0.357\\n0,0,1,9,0,0.000,0.000,0.000\\n5,0,1,9,0,0.000,0.000,0.000\\n0,5,1,9,3,0.204,-0.335,-0.352\\n0,5,1,9,53,0.000,0.000,0.097\\n0,0,1,10,0,0.000,0.000,0.300\\n5,0,1,10,0,0.000,0.000,0.000\\n0,0,1,10,3,0.000,0.000,1.000\\n0,1,1,10,3,-0.884,0.578,0.818\\n0,1,1,10,6,0.000,-0.379,0.565\\n0,1,1,10,28,0.750,-0.404,0.369\\n0,3,1,10,3,3.219,-2.699,1.875\\n0,3,1,10,28,0.207,0.461,0.324\\n0,5,1,10,1,0.000,0.000,0.706\\n0,5,1,10,3,-2.334,1.517,-0.065\\n0,5,1,10,6,0.000,0.688,0.665\\n0,5,1,10,28,-0.982,-0.207,0.166\\n0,0,1,15,0,0.000,0.000,0.400\\n5,0,1,15,0,0.000,0.000,0.336\\n0,1,1,15,1,-1.047,0.170,0.398\\n0,1,1,15,15,-1.438,0.263,0.501\\n0,1,1,15,71,-0.376,-0.133,0.288\\n0,5,1,15,1,1.143,-0.231,0.447\\n0,5,1,15,15,1.555,-0.323,0.456\\n0,5,1,15,37,0.000,0.000,0.459\\n0,5,1,15,71,0.229,0.203,0.440\\n0,0,1,17,0,0.000,0.000,0.350\\n5,0,1,17,0,0.000,0.000,0.000\\n0,5,1,17,1,0.000,0.000,0.536\\n0,5,1,17,7,0.000,0.000,0.212\\n0,0,1,18,0,0.000,0.000,0.100\\n5,0,1,18,0,0.000,0.000,0.112\\n0,5,1,18,1,0.000,0.000,0.000\\n0,5,1,18,6,0.000,0.000,0.099\\n0,5,1,18,32,0.000,0.585,0.388\\n0,5,1,18,43,0.000,-0.412,0.121\\n0,5,1,18,48,0.000,0.000,0.195\\n0,5,1,18,62,0.000,0.000,-0.088\\n0,0,1,19,0,0.000,0.000,0.150\\n5,0,1,19,0,0.000,0.000,0.179\\n0,5,1,19,5,0.000,0.000,0.196\\n0,5,1,19,6,0.000,0.000,0.176\\n0,5,1,19,12,0.000,0.000,0.152\\n0,0,1,20,0,0.000,0.000,0.350\\n5,0,1,20,0,0.000,0.000,0.350\\n0,5,1,20,5,0.000,0.000,0.344\\n0,5,1,20,20,0.000,0.000,0.361\\n0,0,1,22,0,0.000,0.000,0.236\\n5,0,1,22,0,0.000,0.000,0.236\\n0,0,1,25,0,0.000,0.000,0.300\\n5,0,1,25,0,0.000,0.000,0.251\\n0,1,1,25,1,0.000,-0.207,0.232\\n0,1,1,25,32,0.000,0.288,0.218\\n0,5,1,25,1,0.000,0.152,0.235\\n0,5,1,25,6,0.000,0.000,0.495\\n0,5,1,25,32,0.000,-0.130,0.214\\n0,5,1,25,43,0.000,0.000,0.466\\n0,5,1,25,72,0.000,0.000,0.243\\n0,0,1,26,0,0.000,0.000,0.450\\n5,0,1,26,0,0.000,0.000,0.376\\n0,5,1,26,12,0.000,0.000,0.439\\n0,5,1,26,71,0.000,0.000,0.472\\n0,0,1,34,0,0.000,0.000,0.250\\n5,0,1,34,0,0.000,0.000,0.198\\n0,1,1,34,36,0.000,0.000,0.187\\n0,5,1,34,1,0.000,0.000,0.247\\n0,5,1,34,36,0.000,0.000,0.259\\n0,0,1,37,0,0.000,0.000,0.200\\n5,0,1,37,0,0.000,0.000,0.000\\n0,1,1,37,37,0.000,0.449,0.000\\n0,5,1,37,37,0.000,-0.420,0.391\\n0,6,1,37,37,0.000,0.000,0.150\\n0,0,1,39,0,0.000,0.000,0.000\\n5,0,1,39,0,0.000,0.000,0.000\\n0,1,1,39,63,0.000,-0.080,-0.056\\n0,5,1,39,63,0.000,0.000,-0.113\\n0,0,1,40,0,0.000,0.000,0.250\\n5,0,1,40,0,0.000,0.000,0.297\\n0,5,1,40,28,0.000,-0.105,0.000\\n0,5,1,40,37,0.000,0.000,0.468\\n0,0,1,41,0,0.000,0.600,0.000\\n0,1,1,41,32,0.000,1.263,0.000\\n0,5,1,41,32,0.000,0.000,-0.106\\n0,5,1,41,72,0.000,0.632,0.000\\n0,0,1,43,0,0.000,0.000,0.150\\n5,0,1,43,0,0.000,0.000,0.297\\n0,5,1,43,18,0.357,-0.918,0.000\\n0,5,1,43,25,0.000,0.000,0.061\\n0,5,1,43,28,-0.249,0.382,0.343\\n0,0,1,45,0,0.000,0.000,0.100\\n0,5,1,45,32,0.000,0.000,0.125\\n0,0,1,46,0,0.000,0.000,-0.500\\n0,5,1,46,7,0.000,0.000,-0.540\\n0,0,1,54,0,0.000,0.000,0.000\\n2,0,1,54,0,0.000,0.000,0.000\\n5,0,1,54,0,0.000,0.000,0.000\\n0,5,1,54,3,0.000,0.000,-0.315\\n0,5,1,54,36,0.000,0.000,0.315\\n0,0,1,55,0,0.000,0.000,0.000\\n5,0,1,55,0,0.000,0.000,0.000\\n0,5,1,55,36,0.000,-0.058,0.084\\n0,5,1,55,57,0.000,-0.058,-0.092\\n0,0,1,56,0,0.000,0.000,-0.300\\n0,1,1,56,36,0.875,0.668,-0.015\\n0,1,1,56,57,-0.870,0.775,-0.406\\n0,5,1,56,36,-0.958,-0.629,-0.372\\n0,5,1,56,57,0.952,-0.715,-0.483\\n0,0,1,57,0,0.000,0.000,0.000\\n5,0,1,57,0,0.000,0.000,0.000\\n0,0,1,58,0,0.000,0.000,0.000\\n0,0,1,62,0,0.000,0.000,0.250\\n0,5,1,62,18,0.000,0.000,0.270\\n0,0,1,63,0,0.000,0.000,0.000\\n5,0,1,63,0,0.000,0.000,0.000\\n0,0,1,64,0,0.000,0.000,0.000\\n5,0,1,64,0,0.000,0.000,0.000\\n0,0,1,67,0,0.000,0.000,0.000\\n5,0,1,67,0,0.000,0.000,0.000\\n0,0,1,68,0,0.000,0.000,0.400\\n0,1,1,68,1,-0.117,0.090,0.751\\n0,1,1,68,23,0.373,0.153,0.635\\n0,1,1,68,32,-0.090,-0.169,0.075\\n0,5,1,68,1,0.134,-0.112,0.329\\n0,5,1,68,23,-0.361,-0.202,0.560\\n0,5,1,68,32,0.072,0.218,0.093\\n0,0,1,73,0,0.000,0.000,0.500\\n0,5,1,73,32,0.000,0.000,0.509\\n0,5,1,73,72,0.000,0.000,0.443\\n0,0,1,75,0,0.000,0.000,0.000\\n0,0,1,78,0,0.000,0.000,0.000\\n0,0,1,80,0,0.000,0.000,0.000\\n0,0,1,81,0,0.000,0.000,0.000\\n0,0,2,2,0,0.000,12.000,0.000\\n1,0,2,2,0,0.000,1.800,0.000\\n5,0,2,2,0,0.000,12.000,0.000\\n0,1,2,2,1,-0.403,12.000,0.000\\n0,1,2,2,2,0.000,12.000,0.000\\n1,1,2,2,2,-0.418,2.089,-0.310\\n0,1,2,2,5,0.000,12.000,0.000\\n1,1,2,2,5,0.412,2.120,0.269\\n1,2,2,2,2,0.094,1.621,0.877\\n0,2,2,2,5,0.000,12.000,0.000\\n1,2,2,2,5,0.317,1.421,-0.870\\n0,3,2,2,5,0.000,12.000,0.000\\n0,5,2,2,5,0.000,12.000,0.000\\n1,5,2,2,5,-0.406,1.767,0.000\\n0,5,2,2,6,0.000,12.000,0.000\\n0,5,2,2,37,0.000,12.000,0.000\\n0,5,2,2,40,0.000,12.000,0.000\\n0,5,2,2,41,0.000,12.000,0.000\\n0,5,2,2,45,0.000,12.000,0.000\\n0,5,2,2,62,0.000,12.000,0.000\\n1,0,2,3,0,0.000,2.500,0.000\\n1,1,2,3,1,0.136,1.798,0.630\\n1,1,2,3,5,0.497,2.405,0.357\\n1,1,2,3,6,-0.211,1.925,-0.131\\n1,1,2,3,7,-0.401,2.028,-0.318\\n1,1,2,3,10,0.000,2.237,-0.610\\n1,2,2,3,1,-0.325,1.553,-0.487\\n1,2,2,3,5,-0.295,2.024,-0.590\\n1,2,2,3,6,-0.143,1.466,0.000\\n1,2,2,3,7,0.362,1.978,0.000\\n1,2,2,3,9,0.296,1.514,0.481\\n1,2,2,3,10,0.000,1.599,0.380\\n1,5,2,3,1,0.213,1.728,-0.042\\n1,5,2,3,5,-0.208,1.622,0.223\\n1,5,2,3,6,0.359,1.539,0.194\\n1,5,2,3,7,0.000,2.046,0.000\\n1,5,2,3,9,-0.290,1.519,-0.470\\n1,5,2,3,10,0.000,1.409,0.254\\n1,0,2,4,0,0.000,0.000,0.000\\n0,0,2,6,0,0.000,3.100,0.000\\n2,0,2,6,0,0.000,3.600,0.000\\n5,0,2,6,0,0.000,3.600,0.000\\n0,2,2,6,1,-1.953,3.953,-1.055\\n0,2,2,6,3,-1.712,2.596,-0.330\\n0,2,2,6,29,-0.215,2.810,-0.456\\n0,5,2,6,1,1.951,3.936,1.130\\n0,5,2,6,3,1.719,2.628,0.360\\n0,5,2,6,29,0.216,2.808,0.456\\n1,0,2,9,0,0.000,1.800,0.000\\n0,0,2,10,0,0.000,6.000,0.000\\n2,0,2,10,0,0.000,6.000,0.000\\n5,0,2,10,0,0.000,6.000,0.000\\n0,0,2,15,0,0.000,1.423,0.000\\n2,0,2,15,0,0.000,1.423,0.000\\n5,0,2,15,0,0.000,1.423,0.000\\n0,0,2,17,0,0.000,1.423,0.000\\n0,0,2,18,0,0.000,0.000,0.000\\n2,0,2,18,0,0.000,0.000,0.000\\n5,0,2,18,0,0.000,0.000,0.000\\n0,0,2,19,0,0.000,0.000,0.000\\n0,0,2,20,0,0.000,0.000,0.000\\n2,0,2,20,0,0.000,0.000,0.000\\n0,0,2,22,0,0.000,0.000,0.000\\n2,0,2,22,0,0.000,0.000,0.000\\n5,0,2,22,0,0.000,0.000,0.000\\n0,0,2,25,0,0.000,0.000,0.000\\n0,0,2,30,0,0.000,12.000,0.000\\n0,0,2,34,0,0.000,0.000,0.000\\n2,0,2,34,0,0.000,0.000,0.000\\n1,0,2,37,0,0.000,2.000,0.000\\n1,1,2,37,37,0.000,2.952,-0.079\\n1,2,2,37,37,0.000,1.542,0.434\\n1,5,2,37,37,0.000,1.308,-0.357\\n1,0,2,39,0,0.000,6.000,0.000\\n0,0,2,40,0,0.000,3.700,0.000\\n2,0,2,40,0,0.000,3.600,0.000\\n5,0,2,40,0,0.000,3.600,0.000\\n0,2,2,40,28,0.000,3.305,-0.530\\n0,5,2,40,28,0.139,3.241,0.139\\n0,0,2,41,0,0.000,1.200,0.000\\n2,0,2,41,0,0.000,1.800,0.000\\n0,2,2,41,32,0.000,1.235,0.000\\n0,5,2,41,32,0.000,1.231,0.000\\n0,0,2,43,0,0.000,3.600,0.000\\n2,0,2,43,0,0.000,3.600,0.000\\n0,0,2,45,0,0.000,2.200,0.000\\n2,0,2,45,0,0.000,1.800,0.000\\n0,2,2,45,32,0.000,2.212,0.000\\n0,5,2,45,32,0.000,2.225,0.000\\n0,0,2,46,0,0.000,1.800,0.000\\n2,0,2,46,0,0.000,1.800,0.000\\n0,0,2,55,0,0.000,4.800,0.000\\n0,0,2,56,0,0.000,4.800,0.000\\n0,0,2,62,0,0.000,8.000,0.000\\n0,2,2,62,23,1.693,7.903,0.532\\n0,5,2,62,23,-1.696,7.897,-0.482\\n1,0,2,63,0,0.000,1.800,0.000\\n1,0,2,64,0,0.000,1.800,0.000\\n1,0,2,67,0,0.000,1.800,0.000\\n1,0,2,81,0,0.000,4.800,0.000\\n1,0,3,3,0,0.000,0.600,0.000\\n4,0,3,3,0,0.000,1.800,0.000\\n1,1,3,3,1,-0.486,0.714,0.000\\n1,1,3,3,6,-0.081,-0.125,0.132\\n1,1,3,3,7,1.053,1.327,0.000\\n1,5,3,3,6,0.000,0.188,0.436\\n1,5,3,3,7,0.000,0.177,-0.412\\n1,6,3,3,6,0.269,0.437,0.000\\n1,6,3,3,7,-0.495,0.793,-0.318\\n1,7,3,3,7,-0.260,1.084,0.193\\n0,0,3,6,0,0.000,5.500,0.000\\n2,0,3,6,0,0.000,5.500,0.000\\n4,0,3,6,0,0.000,3.600,0.000\\n5,0,3,6,0,0.000,3.600,0.000\\n0,1,3,6,1,-1.244,5.482,0.365\\n0,1,3,6,24,-1.166,5.078,-0.545\\n0,1,3,6,37,-0.677,5.854,0.521\\n2,2,3,6,24,0.256,4.519,0.258\\n2,3,3,6,24,1.663,4.073,0.094\\n0,5,3,6,1,0.526,5.631,0.691\\n0,5,3,6,2,0.159,6.586,0.216\\n0,5,3,6,24,-2.285,4.737,0.468\\n0,7,3,6,0,0.700,6.500,-0.400\\n0,7,3,6,1,0.682,7.184,-0.935\\n0,7,3,6,2,-0.168,6.572,-0.151\\n0,7,3,6,24,1.662,6.152,-0.058\\n0,7,3,6,37,0.635,5.890,-0.446\\n2,37,3,6,24,0.000,3.892,-0.094\\n0,0,3,9,0,0.000,16.000,0.000\\n1,0,3,9,0,0.000,1.800,0.000\\n5,0,3,9,0,0.000,12.000,0.000\\n0,2,3,9,27,0.000,16.000,0.000\\n0,5,3,9,1,0.687,16.152,0.894\\n0,5,3,9,27,0.000,16.000,0.000\\n0,40,3,9,1,-0.704,18.216,0.000\\n0,40,3,9,27,0.000,16.000,0.178\\n0,0,3,10,0,0.000,6.000,0.000\\n2,0,3,10,0,0.000,6.000,0.000\\n4,0,3,10,0,0.000,6.000,0.000\\n5,0,3,10,0,0.000,6.000,0.000\\n0,1,3,10,1,0.831,6.061,0.522\\n0,1,3,10,6,-1.152,8.588,1.511\\n0,1,3,10,28,-0.259,5.934,1.326\\n2,2,3,10,28,0.000,6.561,0.294\\n0,5,3,10,1,-0.195,6.304,1.722\\n0,5,3,10,3,-0.705,5.383,0.234\\n0,5,3,10,28,-0.417,5.981,0.511\\n0,7,3,10,1,-0.491,6.218,0.000\\n0,7,3,10,3,0.733,-0.543,-0.163\\n0,7,3,10,6,1.234,8.372,-0.539\\n0,7,3,10,28,1.168,4.857,-0.341\\n0,10,3,10,28,0.000,3.706,1.254\\n0,0,3,15,0,0.000,1.423,0.000\\n2,0,3,15,0,0.000,1.423,0.000\\n4,0,3,15,0,0.000,1.423,0.000\\n5,0,3,15,0,0.000,1.423,0.000\\n0,0,3,17,0,0.000,1.423,0.000\\n5,0,3,17,0,0.000,1.423,0.000\\n0,0,3,18,0,0.000,0.000,0.000\\n2,0,3,18,0,0.000,0.000,0.000\\n0,0,3,20,0,0.000,0.000,-0.300\\n2,0,3,20,0,0.000,0.000,0.000\\n4,0,3,20,0,0.000,0.000,-0.300\\n5,0,3,20,0,0.000,0.000,0.000\\n0,7,3,20,0,0.000,0.400,0.400\\n0,7,3,20,5,0.000,0.000,-0.131\\n0,7,3,20,20,0.000,0.000,0.000\\n0,20,3,20,5,0.000,0.000,0.085\\n0,20,3,20,20,0.000,0.000,0.000\\n0,0,3,22,0,0.000,0.000,0.000\\n2,0,3,22,0,0.000,0.000,0.000\\n4,0,3,22,0,0.000,0.000,0.000\\n5,0,3,22,0,0.000,0.000,0.000\\n0,7,3,22,0,0.000,4.200,1.900\\n0,0,3,25,0,0.000,0.000,0.000\\n2,0,3,25,0,0.000,0.000,0.000\\n1,0,3,30,0,0.000,1.800,0.000\\n4,0,3,30,0,0.000,1.800,0.000\\n1,0,3,37,0,0.000,2.500,0.000\\n4,0,3,37,0,0.000,1.800,0.000\\n1,1,3,37,37,0.000,2.428,0.000\\n1,6,3,37,37,0.000,1.743,0.000\\n1,7,3,37,37,0.000,2.256,0.000\\n1,43,3,37,37,-0.241,3.385,-0.838\\n1,0,3,39,0,0.000,5.500,0.000\\n0,0,3,40,0,0.000,3.900,0.000\\n2,0,3,40,0,0.000,3.600,0.000\\n5,0,3,40,0,0.000,3.600,0.000\\n0,5,3,40,28,-1.355,3.964,0.800\\n0,9,3,40,28,1.045,3.785,-0.291\\n0,40,3,40,28,0.508,2.985,0.809\\n0,0,3,41,0,0.000,1.800,0.000\\n2,0,3,41,0,0.000,1.800,0.000\\n0,0,3,43,0,0.000,4.500,0.000\\n2,0,3,43,0,0.000,3.600,0.000\\n4,0,3,43,0,0.000,3.600,0.000\\n5,0,3,43,0,0.000,3.600,0.000\\n0,1,3,43,18,1.712,3.309,0.233\\n0,1,3,43,28,-0.414,4.168,-0.875\\n0,7,3,43,18,-0.880,5.091,-0.129\\n0,7,3,43,28,0.536,5.276,-0.556\\n2,37,3,43,18,-0.701,4.871,1.225\\n2,37,3,43,28,-0.086,5.073,0.878\\n0,0,3,45,0,0.000,1.800,0.000\\n2,0,3,45,0,0.000,1.800,0.000\\n0,0,3,48,0,0.000,0.000,0.892\\n0,0,3,51,0,0.000,13.500,0.000\\n0,1,3,51,52,0.000,13.549,0.000\\n0,0,3,54,0,0.000,8.000,0.000\\n1,0,3,54,0,0.000,2.500,0.000\\n5,0,3,54,0,0.000,12.000,0.000\\n0,5,3,54,1,0.000,8.000,0.000\\n0,5,3,54,36,0.000,8.000,0.000\\n0,0,3,55,0,0.000,4.800,0.000\\n2,0,3,55,0,0.000,4.800,0.000\\n0,0,3,56,0,0.000,4.800,0.000\\n2,0,3,56,0,0.000,4.800,0.000\\n1,0,3,57,0,0.000,2.500,0.000\\n1,0,3,58,0,0.000,4.800,0.000\\n0,0,3,62,0,0.000,3.600,0.000\\n2,0,3,62,0,0.000,3.600,0.000\\n5,0,3,62,0,0.000,3.600,0.000\\n1,0,3,63,0,0.000,2.500,0.000\\n1,0,3,64,0,0.000,2.500,0.000\\n0,0,3,67,0,0.000,12.000,0.000\\n0,0,3,74,0,0.000,19.000,0.000\\n0,1,3,74,7,0.000,19.349,0.000\\n0,0,3,75,0,0.000,19.000,0.000\\n0,1,3,75,71,0.000,18.751,0.000\\n1,0,3,78,0,0.000,2.500,0.000\\n1,0,3,80,0,0.000,2.500,0.000\\n0,0,6,6,0,0.000,-2.000,0.000\\n5,0,6,6,0,0.000,-2.000,0.000\\n0,0,6,8,0,0.900,-1.100,-0.500\\n5,0,6,8,0,0.000,0.000,0.274\\n0,21,6,8,1,0.261,-0.330,-0.542\\n0,21,6,8,23,1.503,-1.853,-0.476\\n0,0,6,9,0,0.000,3.600,0.000\\n5,0,6,9,0,0.000,3.600,0.000\\n0,0,6,10,0,1.200,0.500,-1.000\\n0,21,6,10,1,0.829,0.000,-0.730\\n0,21,6,10,3,0.675,-0.185,-1.053\\n0,0,6,15,0,0.000,-4.000,0.000\\n0,0,6,17,0,0.000,1.423,0.000\\n5,0,6,17,0,0.000,1.423,0.000\\n0,0,6,18,0,0.000,0.000,0.100\\n5,0,6,18,0,0.000,0.000,0.103\\n0,33,6,18,1,-0.520,-0.471,-0.267\\n0,33,6,18,6,-1.623,0.204,0.438\\n0,33,6,18,32,1.616,0.425,0.191\\n0,0,6,19,0,0.000,0.000,0.150\\n5,0,6,19,0,0.000,0.000,0.165\\n0,21,6,19,1,-0.620,-0.329,0.303\\n0,21,6,19,5,0.683,0.220,0.000\\n0,0,6,20,0,0.000,0.000,0.400\\n4,0,6,20,0,0.000,0.000,0.217\\n5,0,6,20,0,0.000,0.000,0.217\\n0,20,6,20,5,0.000,0.000,-0.079\\n4,20,6,20,20,0.000,0.000,0.000\\n0,0,6,22,0,0.000,0.000,0.217\\n0,0,6,25,0,0.000,0.000,0.650\\n5,0,6,25,0,0.000,0.000,0.231\\n0,1,6,25,1,-1.704,-0.452,0.556\\n0,1,6,25,6,0.000,0.000,0.777\\n0,1,6,25,32,1.205,0.914,0.612\\n0,24,6,25,6,-3.209,-7.622,1.065\\n0,24,6,25,32,-5.891,-3.332,0.290\\n0,0,6,26,0,0.000,0.000,0.346\\n0,0,6,30,0,0.000,3.600,0.000\\n2,0,6,30,0,0.000,3.600,0.000\\n0,0,6,37,0,0.000,3.200,0.000\\n5,0,6,37,0,0.000,3.600,0.000\\n0,1,6,37,37,0.000,4.382,0.000\\n0,3,6,37,37,0.000,2.576,0.000\\n0,29,6,37,37,0.000,2.801,0.000\\n0,0,6,39,0,0.000,0.000,0.000\\n0,0,6,40,0,0.000,0.000,0.274\\n0,0,6,41,0,0.000,3.600,0.000\\n0,0,6,43,0,0.000,0.000,0.274\\n0,0,6,45,0,0.000,6.000,0.000\\n0,1,6,45,32,0.000,6.208,0.000\\n0,0,6,54,0,0.000,3.600,0.000\\n0,0,6,55,0,0.000,3.600,0.000\\n0,0,6,57,0,0.000,3.600,0.000\\n0,0,6,58,0,0.000,3.600,0.000\\n0,0,6,63,0,0.000,3.600,0.000\\n0,0,6,64,0,0.000,3.600,0.000\\n0,0,8,8,0,0.000,0.000,0.375\\n5,0,8,8,0,0.000,0.000,0.375\\n0,0,8,9,0,0.000,3.600,0.000\\n5,0,8,9,0,0.000,3.600,0.000\\n0,0,8,10,0,0.000,0.000,0.000\\n4,0,8,10,0,0.000,0.000,0.000\\n0,0,8,15,0,0.000,0.000,0.424\\n0,0,8,17,0,0.000,1.423,0.000\\n4,0,8,17,0,0.000,1.423,0.000\\n5,0,8,17,0,0.000,1.423,0.000\\n0,0,8,19,0,0.000,0.000,0.225\\n0,0,8,20,0,0.000,0.000,0.350\\n4,0,8,20,0,0.000,0.000,0.300\\n5,0,8,20,0,0.000,0.000,0.297\\n0,20,8,20,5,0.000,0.120,0.472\\n4,20,8,20,20,0.000,-0.097,0.200\\n0,23,8,20,5,-0.101,-0.324,0.371\\n0,23,8,20,20,0.107,0.253,0.151\\n0,0,8,22,0,0.000,0.000,0.297\\n0,0,8,25,0,0.000,0.000,0.316\\n5,0,8,25,0,0.000,0.000,0.316\\n0,0,8,26,0,0.000,0.000,0.474\\n5,0,8,26,0,0.000,0.000,0.474\\n0,0,8,34,0,0.000,0.000,0.250\\n0,0,8,39,0,0.000,0.000,0.000\\n0,0,8,40,0,0.000,0.000,0.375\\n0,0,8,43,0,0.000,0.000,0.375\\n0,0,8,45,0,0.000,3.600,0.000\\n0,0,8,46,0,0.000,3.600,0.000\\n0,0,8,55,0,0.000,3.600,0.000\\n0,0,8,56,0,0.000,3.600,0.000\\n0,0,9,9,0,0.000,12.000,0.000\\n1,0,9,9,0,0.000,1.800,0.000\\n5,0,9,9,0,0.000,12.000,0.000\\n0,0,9,10,0,0.000,6.000,0.000\\n5,0,9,10,0,0.000,6.000,0.000\\n0,0,9,15,0,0.000,1.423,0.000\\n0,0,9,18,0,0.000,0.000,0.000\\n0,0,9,19,0,0.000,0.000,0.000\\n0,0,9,20,0,0.000,0.000,0.000\\n0,0,9,25,0,0.000,0.000,0.000\\n0,0,9,34,0,0.000,0.000,0.000\\n5,0,9,34,0,0.000,0.000,0.000\\n1,0,9,37,0,0.000,1.800,0.000\\n1,0,9,39,0,0.000,6.000,0.000\\n0,0,9,40,0,0.000,3.600,0.000\\n0,0,9,41,0,0.000,4.800,0.000\\n0,0,9,45,0,0.000,1.800,0.000\\n0,0,9,54,0,0.000,12.000,0.000\\n0,0,9,55,0,0.000,4.800,0.000\\n0,0,9,56,0,0.000,4.800,0.000\\n1,0,9,57,0,0.000,1.800,0.000\\n0,0,9,62,0,0.000,3.600,0.000\\n1,0,9,63,0,0.000,1.800,0.000\\n1,0,9,64,0,0.000,1.800,0.000\\n0,0,9,67,0,0.000,12.000,0.000\\n1,0,9,78,0,0.000,1.800,0.000\\n1,0,9,81,0,0.000,4.800,0.000\\n0,0,10,10,0,0.000,0.000,0.000\\n5,0,10,10,0,0.000,0.000,0.000\\n0,0,10,15,0,0.000,0.000,0.000\\n0,0,10,17,0,0.000,4.743,0.000\\n0,0,10,20,0,0.000,0.000,0.000\\n4,0,10,20,0,0.000,0.000,0.000\\n5,0,10,20,0,0.000,0.000,0.000\\n0,0,10,22,0,0.000,0.000,0.000\\n0,0,10,25,0,0.000,0.000,0.000\\n0,0,10,26,0,0.000,0.000,0.000\\n5,0,10,26,0,0.000,0.000,0.000\\n0,0,10,34,0,0.000,0.000,0.000\\n0,0,10,37,0,0.000,2.700,0.000\\n0,0,10,39,0,0.000,0.000,0.000\\n0,0,10,40,0,0.000,0.000,0.000\\n5,0,10,40,0,0.000,0.000,0.000\\n0,0,10,41,0,0.000,6.000,0.000\\n0,0,10,45,0,0.000,6.000,0.000\\n0,0,10,63,0,0.000,0.600,0.000\\n0,3,10,63,44,-10.200,7.000,0.000\\n0,0,10,64,0,0.000,1.200,0.000\\n0,28,10,64,63,2.400,2.900,0.000\\n0,0,15,15,0,-1.400,-8.300,1.000\\n5,0,15,15,0,0.000,-8.000,0.000\\n0,1,15,15,1,-1.663,-8.408,1.433\\n0,1,15,15,71,-1.088,-8.245,0.411\\n0,0,15,18,0,0.000,0.000,0.160\\n0,0,15,19,0,0.000,0.000,0.255\\n5,0,15,19,0,0.000,0.000,0.255\\n0,0,15,20,0,0.000,0.000,0.336\\n4,0,15,20,0,0.000,0.000,0.336\\n0,0,15,22,0,0.000,0.000,0.336\\n0,0,15,25,0,0.000,0.000,0.358\\n4,0,15,25,0,0.000,0.000,0.358\\n0,0,15,26,0,0.000,0.000,0.537\\n0,0,15,30,0,0.000,1.423,0.000\\n4,0,15,30,0,0.000,1.423,0.000\\n0,0,15,37,0,0.000,3.000,0.000\\n5,0,15,37,0,0.000,1.423,0.000\\n0,1,15,37,37,0.000,2.177,0.000\\n0,71,15,37,37,0.000,0.505,0.333\\n0,0,15,40,0,0.000,0.000,0.424\\n0,0,15,43,0,0.000,0.000,0.424\\n0,0,15,57,0,0.000,1.423,0.000\\n0,0,15,63,0,0.000,1.423,0.000\\n0,0,15,64,0,0.000,1.423,0.000\\n0,0,17,20,0,0.000,0.000,0.000\\n4,0,17,20,0,0.000,0.000,0.000\\n5,0,17,20,0,0.000,0.000,0.000\\n0,0,17,22,0,0.000,0.000,0.000\\n0,0,17,37,0,0.000,1.423,0.000\\n0,0,17,43,0,0.000,3.795,0.000\\n0,0,18,20,0,0.000,0.000,0.112\\n4,0,18,20,0,0.000,0.000,0.112\\n5,0,18,20,0,0.000,0.000,0.112\\n0,0,18,22,0,0.000,0.000,0.112\\n0,0,18,37,0,0.000,-1.200,-0.300\\n0,32,18,37,37,-0.173,-0.965,-0.610\\n0,39,18,37,37,0.000,-0.760,0.227\\n0,43,18,37,37,0.228,-1.741,-0.371\\n0,0,18,39,0,0.000,0.000,0.500\\n0,32,18,39,63,0.000,0.687,0.680\\n0,37,18,39,63,0.000,-0.513,0.357\\n0,0,18,43,0,0.000,0.000,0.350\\n4,0,18,43,0,0.000,0.000,0.141\\n5,0,18,43,0,0.000,0.000,0.141\\n0,1,18,43,1,-0.914,-0.482,0.179\\n0,1,18,43,3,-0.392,-2.724,0.312\\n0,1,18,43,28,-1.508,-1.816,-0.175\\n0,1,18,43,37,0.823,-1.220,-0.770\\n0,32,18,43,1,1.588,1.499,1.410\\n0,32,18,43,3,0.653,0.254,0.000\\n0,32,18,43,28,0.528,0.342,0.000\\n0,32,18,43,37,0.812,1.513,1.266\\n0,37,18,43,1,-1.139,-0.703,1.088\\n0,37,18,43,28,-2.014,-1.646,-2.068\\n0,37,18,43,37,-1.519,-0.328,1.437\\n0,43,18,43,28,3.011,-1.405,2.038\\n0,0,18,48,0,0.000,0.000,0.400\\n0,1,18,48,28,1.767,1.606,0.408\\n0,32,18,48,28,-1.463,-2.548,0.310\\n0,0,18,55,0,0.000,0.000,0.000\\n0,0,18,58,0,0.000,0.000,0.000\\n0,0,18,62,0,0.000,0.000,0.500\\n0,1,18,62,1,-0.403,-0.273,0.440\\n0,32,18,62,1,0.291,0.385,0.582\\n0,0,18,63,0,0.000,0.000,0.000\\n0,0,18,64,0,0.000,0.000,0.000\\n0,0,18,80,0,0.000,0.000,0.000\\n0,0,19,20,0,0.000,0.000,0.179\\n4,0,19,20,0,0.000,0.000,0.179\\n0,0,19,37,0,0.000,0.000,0.000\\n0,0,19,40,0,0.000,0.000,0.225\\n0,0,19,63,0,0.000,0.000,0.000\\n0,0,19,75,0,0.000,0.000,0.000\\n0,0,20,20,0,0.000,0.000,0.200\\n4,0,20,20,0,0.000,0.000,0.000\\n5,0,20,20,0,0.000,0.000,0.236\\n0,1,20,20,5,0.067,0.081,0.347\\n0,1,20,20,20,-0.063,-0.064,0.140\\n0,3,20,20,5,0.000,0.000,0.083\\n0,3,20,20,20,0.000,0.000,0.000\\n0,5,20,20,5,0.000,0.000,0.424\\n0,5,20,20,6,0.000,0.000,-0.080\\n0,5,20,20,8,0.000,0.127,0.450\\n0,5,20,20,12,-0.072,-0.269,0.439\\n0,5,20,20,20,-0.057,0.000,0.307\\n4,6,20,20,20,0.000,0.000,0.000\\n4,8,20,20,20,0.000,-0.091,0.192\\n0,12,20,20,20,0.077,0.202,0.183\\n4,20,20,20,20,0.000,0.000,0.000\\n0,0,20,22,0,0.000,0.000,0.236\\n4,0,20,22,0,0.000,0.000,0.236\\n0,0,20,25,0,0.000,0.000,0.251\\n4,0,20,25,0,0.000,0.000,0.251\\n0,0,20,26,0,0.000,0.000,0.376\\n4,0,20,26,0,0.000,0.000,0.376\\n5,0,20,26,0,0.000,0.000,0.376\\n0,0,20,30,0,0.000,0.000,0.000\\n2,0,20,30,0,0.000,0.000,0.000\\n4,0,20,30,0,0.000,0.000,0.000\\n0,0,20,30,30,0.000,0.000,-0.500\\n0,0,20,34,0,0.000,0.000,0.198\\n4,0,20,34,0,0.000,0.000,0.198\\n0,0,20,37,0,0.000,0.000,0.000\\n4,0,20,37,0,0.000,0.000,0.000\\n0,0,20,40,0,0.000,0.000,0.297\\n0,0,20,41,0,0.000,0.000,0.000\\n0,0,20,43,0,0.000,0.000,0.297\\n4,0,20,43,0,0.000,0.000,0.297\\n0,0,20,45,0,0.000,0.000,0.000\\n0,0,22,22,0,0.000,0.000,0.236\\n4,0,22,22,0,0.000,0.000,0.236\\n5,0,22,22,0,0.000,0.000,0.236\\n0,0,22,30,0,0.000,0.000,0.000\\n4,0,22,30,0,0.000,0.000,0.000\\n0,0,22,34,0,0.000,0.000,0.198\\n0,0,22,37,0,0.000,0.500,-2.800\\n0,0,22,40,0,0.000,0.000,0.297\\n0,0,22,41,0,0.000,0.000,0.000\\n0,0,22,43,0,0.000,0.000,0.297\\n5,0,22,43,0,0.000,0.000,0.297\\n0,0,22,45,0,0.000,0.000,0.000\\n0,0,25,25,0,0.000,0.000,0.267\\n0,0,25,37,0,0.000,0.000,0.000\\n5,0,25,37,0,0.000,0.000,0.000\\n0,0,25,39,0,0.000,0.000,0.000\\n0,0,25,40,0,0.000,0.000,0.316\\n5,0,25,40,0,0.000,0.000,0.316\\n0,0,25,43,0,0.000,0.000,0.250\\n0,1,25,43,1,-2.686,-1.512,0.591\\n0,1,25,43,28,-3.730,-0.531,0.000\\n0,32,25,43,1,2.108,1.896,0.965\\n0,32,25,43,28,2.977,0.732,-0.502\\n0,0,25,57,0,0.000,0.000,0.000\\n0,0,25,63,0,0.000,0.000,0.000\\n0,0,26,26,0,0.000,0.000,0.600\\n5,0,26,26,0,0.000,0.000,0.600\\n0,0,26,34,0,0.000,0.000,0.316\\n5,0,26,34,0,0.000,0.000,0.316\\n0,0,26,37,0,0.000,1.423,0.000\\n0,0,26,40,0,0.000,0.000,0.474\\n0,0,30,30,0,0.000,12.000,0.000\\n1,0,30,30,0,0.000,1.800,0.000\\n4,0,30,30,0,0.000,1.800,0.000\\n0,0,30,40,0,0.000,3.600,0.000\\n1,0,30,67,0,0.000,1.800,0.000\\n0,0,34,37,0,0.000,0.000,0.000\\n0,0,34,43,0,0.000,0.000,0.250\\n0,0,37,37,0,0.000,7.000,0.000\\n1,0,37,37,0,0.000,2.000,0.000\\n4,0,37,37,0,0.000,6.000,0.000\\n5,0,37,37,0,0.000,6.000,0.000\\n0,1,37,37,5,0.000,7.000,0.000\\n0,1,37,37,37,0.000,7.000,0.000\\n0,2,37,37,5,0.000,7.000,0.000\\n0,2,37,37,37,0.000,7.000,0.000\\n0,3,37,37,5,0.000,7.000,0.000\\n0,3,37,37,37,0.000,7.000,0.000\\n0,5,37,37,5,0.000,7.000,0.000\\n0,5,37,37,6,0.000,7.000,0.000\\n0,5,37,37,15,0.000,7.000,0.000\\n0,5,37,37,18,0.000,7.000,0.000\\n0,5,37,37,37,0.000,7.000,0.000\\n0,5,37,37,40,0.000,7.000,0.000\\n0,5,37,37,43,0.000,7.000,0.000\\n0,6,37,37,37,0.000,7.000,0.000\\n0,15,37,37,37,0.000,7.000,0.000\\n0,18,37,37,37,0.000,7.000,0.000\\n0,37,37,37,37,0.000,7.000,0.000\\n0,37,37,37,40,0.000,7.000,0.000\\n0,37,37,37,43,0.000,7.000,0.000\\n0,0,37,38,0,0.000,7.000,0.000\\n0,0,37,39,0,0.000,3.600,0.000\\n1,0,37,39,0,0.000,2.600,0.000\\n0,0,37,40,0,0.000,4.000,0.000\\n5,0,37,40,0,0.000,3.600,0.000\\n0,37,37,40,1,0.000,4.095,0.382\\n0,37,37,40,28,0.698,2.542,3.072\\n0,0,37,41,0,0.000,1.800,0.000\\n0,0,37,43,0,0.000,2.000,1.800\\n5,0,37,43,0,0.000,3.600,0.000\\n0,37,37,43,18,0.372,2.284,2.034\\n0,37,37,43,28,0.000,1.694,1.508\\n0,0,37,45,0,0.000,1.800,0.000\\n0,0,37,46,0,0.000,1.800,0.000\\n0,0,37,55,0,0.000,4.800,0.000\\n0,0,37,56,0,0.000,4.800,0.000\\n1,0,37,57,0,0.000,1.800,0.000\\n0,0,37,58,0,0.000,6.000,0.000\\n1,0,37,58,0,0.000,4.800,0.000\\n0,0,37,62,0,0.000,3.600,0.000\\n0,0,37,63,0,0.000,7.000,0.000\\n1,0,37,63,0,0.000,1.800,0.000\\n1,37,37,63,39,0.000,3.000,4.100\\n1,37,37,63,44,0.000,3.000,2.100\\n0,0,37,64,0,0.000,7.000,0.000\\n1,0,37,64,0,0.000,1.800,0.000\\n1,0,37,67,0,0.000,1.800,0.000\\n0,0,37,69,0,0.000,7.000,0.000\\n0,0,37,78,0,0.000,6.000,0.000\\n0,0,37,81,0,0.000,6.000,0.000\\n1,0,37,81,0,0.000,4.800,0.000\\n0,0,38,38,0,0.000,7.000,0.000\\n0,0,38,58,0,0.000,7.000,0.000\\n0,0,38,63,0,0.000,7.000,0.000\\n0,0,38,64,0,0.000,7.000,0.000\\n0,0,38,69,0,0.000,6.000,0.000\\n0,0,38,78,0,0.000,6.000,0.000\\n0,0,39,40,0,0.000,0.000,0.000\\n0,0,39,45,0,0.000,6.000,0.000\\n0,0,39,63,0,0.000,4.000,0.000\\n1,0,39,63,0,0.000,6.000,0.000\\n5,0,39,63,0,0.000,3.600,0.000\\n0,1,39,63,5,0.000,4.000,0.000\\n0,1,39,63,64,0.000,4.000,0.000\\n0,18,39,63,5,0.000,4.000,0.000\\n0,18,39,63,64,0.000,4.000,0.000\\n0,63,39,63,5,0.000,4.000,0.000\\n0,63,39,63,64,0.000,4.000,0.000\\n0,0,39,64,0,0.000,3.600,0.000\\n1,0,39,64,0,0.000,6.000,0.000\\n0,0,39,65,0,0.000,4.000,0.000\\n0,0,39,78,0,0.000,3.600,0.000\\n0,0,40,40,0,0.000,0.000,0.375\\n0,0,40,45,0,0.000,3.600,0.000\\n0,0,40,46,0,0.000,3.600,0.000\\n0,0,40,54,0,0.000,3.600,0.000\\n2,0,40,54,0,0.000,3.600,0.000\\n0,0,40,63,0,0.000,3.600,0.000\\n0,0,40,64,0,0.000,3.600,0.000\\n0,0,40,78,0,0.000,3.600,0.000\\n0,0,41,41,0,0.000,1.800,0.000\\n0,0,41,55,0,0.000,4.800,0.000\\n0,0,41,62,0,0.000,3.600,0.000\\n0,0,41,80,0,0.000,1.800,0.000\\n0,0,43,43,0,0.000,0.000,0.375\\n0,0,43,45,0,0.000,3.600,0.000\\n0,0,43,64,0,0.000,3.600,0.000\\n0,0,44,57,0,0.000,7.000,0.000\\n0,0,44,63,0,0.000,7.000,0.000\\n0,0,44,65,0,0.000,7.000,0.000\\n0,0,44,78,0,0.000,2.846,0.000\\n0,0,44,80,0,0.000,2.846,0.000\\n0,0,45,63,0,0.000,1.800,0.000\\n0,0,45,64,0,0.000,1.800,0.000\\n0,0,45,78,0,0.000,1.800,0.000\\n0,0,55,57,0,0.000,10.000,0.000\\n2,0,55,57,0,0.000,4.800,0.000\\n5,0,55,57,0,0.000,4.800,0.000\\n0,1,55,57,5,0.423,12.064,0.090\\n0,1,55,57,55,-0.428,12.044,0.000\\n0,36,55,57,5,-0.268,8.077,-0.806\\n0,36,55,57,55,0.273,8.025,0.692\\n0,0,55,62,0,0.000,3.600,0.000\\n0,0,55,64,0,0.000,4.800,0.000\\n0,0,55,80,0,0.000,4.800,0.000\\n0,0,56,57,0,0.000,6.000,0.000\\n0,1,56,57,56,0.000,6.886,-0.161\\n0,36,56,57,56,0.000,4.688,0.107\\n0,0,56,63,0,0.000,4.800,0.000\\n0,0,56,80,0,0.000,4.800,0.000\\n1,0,57,63,0,0.000,1.800,0.000\\n1,0,57,64,0,0.000,1.800,0.000\\n0,0,58,63,0,0.000,6.000,0.000\\n0,0,58,64,0,0.000,6.000,0.000\\n0,0,59,63,0,0.000,7.000,0.000\\n0,0,59,65,0,0.000,7.000,0.000\\n0,0,59,78,0,0.000,3.600,0.000\\n0,0,59,80,0,0.000,3.600,0.000\\n0,0,59,82,0,0.000,3.600,0.000\\n0,0,62,63,0,0.000,3.600,0.000\\n0,0,62,64,0,0.000,3.600,0.000\\n1,0,63,63,0,0.000,1.800,0.000\\n0,0,63,64,0,0.000,7.000,0.000\\n0,5,63,64,5,0.000,7.000,0.000\\n0,5,63,64,64,0.000,7.000,0.000\\n0,39,63,64,5,0.000,7.000,0.000\\n0,39,63,64,64,0.000,7.000,0.000\\n0,0,63,66,0,0.000,7.000,0.000\\n0,0,63,78,0,0.000,6.000,0.000\\n0,0,63,81,0,0.000,6.000,0.000\\n0,0,64,64,0,0.000,7.000,0.000\\n1,0,64,64,0,0.000,1.800,0.000\\n0,5,64,64,5,0.000,7.000,0.000\\n0,5,64,64,63,0.000,7.000,0.000\\n0,63,64,64,63,0.000,7.000,0.000\\n0,0,64,65,0,0.000,7.000,0.000\\n0,0,64,66,0,0.000,7.000,0.000\\n0,0,64,78,0,0.000,6.000,0.000\\n0,0,64,81,0,0.000,6.000,0.000\\n5,0,64,81,0,0.000,6.000,0.000\\n0,0,64,82,0,0.000,6.000,0.000\\n0,0,65,66,0,0.000,7.000,0.000\\n0,0,65,78,0,0.000,6.000,0.000\\n0,0,65,81,0,0.000,6.000,0.000\\n0,0,65,82,0,0.000,6.000,0.000\\n0,0,66,66,0,0.000,7.000,0.000\\n0,0,66,78,0,0.000,6.000,0.000\\n0,0,66,81,0,0.000,6.000,0.000\\n0,0,67,67,0,0.000,12.000,0.000\\n5,0,67,67,0,0.000,12.000,0.000\\n0,0,76,76,0,0.000,3.600,0.000\\n0,0,76,78,0,0.000,3.600,0.000\\n0,0,78,78,0,0.000,7.000,0.000\\n0,0,78,79,0,0.000,6.000,0.000\\n0,0,78,81,0,0.000,4.000,0.000\\n0,0,79,79,0,0.000,6.000,0.000\\n0,0,79,81,0,0.000,6.000,0.000\\n0,0,80,81,0,0.000,4.000,0.000\\n'));Xrb.tH=true}};\nZ3(353,1,{},Xrb.uH);_._minimise=function vH(a,b,c){return Orb.wz(this.a,a,b)};_.getOCL=function wH(){return $wnd.OCL};_.getTotalEnergy=function xH(){return Prb.tA(this.a)};_.size=function zH(){return this.a.b.q};Xrb.oH=wzb;Xrb.pH=xzb;Xrb.qH=gxb;Xrb.rH=false;Xrb.sH=false;Xrb.tH=false;Drb.l_=B5(353);Xrb.AH=function AH(a){Trb.DE.call(this,a.a)};Z3(354,241,{},Xrb.AH);$3(_,{acceptorCount:{'get':function BH(){return Trb.AE(this)}}});$3(_,{donorCount:{'get':function CH(){return Trb.BE(this)}}});$3(_,{logP:{'get':function DH(){return Trb.CE(this)}}});$3(_,{logPString:{'get':function EH(){return Xrb.DI(Trb.aE((new Trb.bE,this.a)))}}});$3(_,{logS:{'get':function FH(){return Trb.HE((Trb.GE(),this.a))}}});$3(_,{logSString:{'get':function GH(){return Xrb.DI(Trb.IE((Trb.GE(),this.a)))}}});$3(_,{polarSurfaceArea:{'get':function HH(){return Trb.vE((Trb.tE(),this.a))}}});$3(_,{polarSurfaceAreaString:{'get':function IH(){return Xrb.DI(Trb.wE((Trb.tE(),this.a)))}}});$3(_,{rotatableBondCount:{'get':function JH(){return Jrb.ko(this.a)}}});$3(_,{stereoCenterCount:{'get':function KH(){return Jrb.yu(this.a)}}});Drb.m_=B5(354);Xrb.XH=function XH(){};Xrb.YH=function YH(a,b){!b&&(b={mode:3});b=Object.assign({},b);if('ensureCoordinates' in b){b.ensureCoordinates=Boolean(b.ensureCoordinates);return Xrb.ZH(a,b.ensureCoordinates)}typeof b.mode!==vsb&&(b.mode=3);b.mode=Math.trunc(b.mode);return Xrb._H(a,b.mode)};Xrb.ZH=function ZH(a,b){var c;c=Urb.PF(a,b,null);if(!c)return null;return new Yrb.ES(c)};Xrb._H=function _H(a,b){var c;c=Urb.NF(a,b);if(!c)return null;return new Yrb.ES(c)};Xrb.aI=function aI(a,b){!b&&(b={keepAbsoluteCoordinates:false,mode:3});b=Object.assign({},b);b.keepAbsoluteCoordinates=Boolean(b.keepAbsoluteCoordinates);if('sortByIDCode' in b){b.sortByIDCode=Boolean(b.sortByIDCode);return Xrb.cI(a,b.keepAbsoluteCoordinates,b.sortByIDCode)}typeof b.mode!==vsb&&(b.mode=3);b.mode=Math.trunc(b.mode);return Xrb.bI(a,b.keepAbsoluteCoordinates,b.mode)};Xrb.bI=function bI(a,b,c){return Urb.QF(a.a,b,c)};Xrb.cI=function cI(a,b,c){return Erb.B7(Urb.RF(a.a,b,c))};Z3(355,1,{},Xrb.XH);Xrb.LH='+';Xrb.MH=15;Xrb.NH=8;Xrb.OH=2;Xrb.PH=3;Xrb.QH=4;Xrb.RH=1;Xrb.SH=0;Xrb.TH=' ';Xrb.UH='#';Xrb.VH='!';Xrb.WH=16;Drb.n_=B5(355);Xrb.dI=function dI(a){this.a=new Urb.fG(a.a)};Z3(356,1,{},Xrb.dI);_.getProducts=function eI(){var a,b,c,d;d=Urb.ZF(this.a);if(d.length==0){return rX(Drb.t_,[ssb,zzb],[140,37],0,[0,0],2)}c=rX(Drb.t_,[ssb,zzb],[140,37],0,[d.length,d[0].length],2);for(a=0;a<d.length;a++){for(b=0;b<d[0].length;b++){xX(c[a],b,new Yrb.kN(d[a][b]))}}return c};_.setReactant=function fI(a,b){return Urb.dG(this.a,a,b.a)};Drb.o_=B5(356);Xrb.qI=function qI(){Xrb.qI=_3;Xrb.pI=(!Xrb.yI&&(Xrb.yI=new Xrb.BI),Xrb.yI);Xrb.iI=(Trb._E(),Trb.KE)};Xrb.rI=function rI(){Xrb.qI();new Trb.eF};Z3(357,1,{},Xrb.rI);_.assessRisk=function sI(a,b){var c;return Trb.aF(a.a,(c=b,Xrb.AI(Xrb.pI),c))};_.getDetail=function tI(a,b){return Xrb.DI(Trb.bF(a.a,b))};_.getOCL=function uI(){return $wnd.OCL};Xrb.gI=3;Xrb.hI=2;Xrb.jI=1;Xrb.kI=0;Xrb.lI=2;Xrb.mI=0;Xrb.nI=3;Xrb.oI=1;Drb.p_=B5(357);Xrb.vI=function vI(a,b,c){this.a=new Urb.iG(a.a,b.a)};Z3(358,1,{},Xrb.vI);_.applyTransformation=function wI(a,b){Urb.gG(this.a,a.a,b)};_.setMolecule=function xI(a,b){return Urb.hG(this.a,a.a)};Drb.q_=B5(358);Xrb.zI=function zI(a){};Xrb.AI=function AI(a){!a.a&&(a.a=new Xrb.CI);return a.a};Xrb.BI=function BI(){Xrb.zI(this)};Z3(179,1,{},Xrb.BI);_.a=null;Xrb.yI=null;Drb.s_=B5(179);Xrb.CI=function CI(){};Z3(236,1,{},Xrb.CI);Drb.r_=B5(236);Xrb.DI=function DI(a){var b,c,d;d=a.a.a.length;b=Xrb.FI(d);for(c=0;c<d;c++){Frb.OV(b,c,Xrb.EI(Krb.Ji(a.a,c).a,Krb.Ji(a.a,c).b))}return b};Xrb.EI=function EI(a,b){return {type:b,value:a}};Xrb.FI=function FI(a){return new Array(a)};Yrb.gN=function gN(){Yrb.gN=_3;Yrb.fN=(!Yrb.QU&&(Yrb.QU=new Yrb.TU),Yrb.QU);Yrb.eN=new Wrb.KG;Yrb.lJ=BX(nX(Drb.B0,1),Esb,2,6,['?','H','He','Li','Be','B','C','N','O','F','Ne','Na','Mg','Al','Si','P','S','Cl','Ar','K','Ca','Sc','Ti','V','Cr','Mn','Fe','Co','Ni','Cu','Zn','Ga','Ge','As','Se','Br','Kr','Rb','Sr','Y','Zr','Nb','Mo','Tc','Ru','Rh','Pd','Ag','Cd','In','Sn','Sb','Te','I','Xe','Cs','Ba','La','Ce','Pr','Nd','Pm','Sm','Eu','Gd','Tb','Dy','Ho','Er','Tm','Yb','Lu','Hf','Ta','W','Re','Os','Ir','Pt','Au','Hg','Tl','Pb','Bi','Po','At','Rn','Fr','Ra','Ac','Th','Pa','U','Np','Pu','Am','Cm','Bk','Cf','Es','Fm','Md','No','Lr','Rf','Db','Sg','Bh','Hs','Mt','Ds','Rg','Cn','Nh','Fl','Mc','Lv','Ts','Og',Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,'R4','R5','R6','R7','R8','R9','R10','R11','R12','R13','R14','R15','R16','R1','R2','R3','A','A1','A2','A3',Aub,Aub,'D','T','X','R','H2','H+','Nnn','HYD','Pol',Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,Aub,'Ala','Arg','Asn','Asp','Cys','Gln','Glu','Gly','His','Ile','Leu','Lys','Met','Phe','Pro','Ser','Thr','Trp','Tyr','Val']);Yrb.dN=BX(nX(Drb.b3,1),hub,6,15,[0,1,4,7,9,11,12,14,16,19,20,23,24,27,28,31,32,35,40,39,40,45,48,51,52,55,56,59,58,63,64,69,74,75,80,79,84,85,88,89,90,93,98,0,102,103,106,107,114,115,120,121,130,127,132,133,138,139,140,141,142,0,152,153,158,159,164,165,166,169,174,175,180,181,184,187,192,193,195,197,202,205,208,209,209,210,222,223,226,227,232,231,238,237,244,243,247,247,251,252,257,258,259,262,267,268,271,270,277,276,281,281,283,285,289,289,293,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,156,114,115,103,128,129,57,137,113,113,128,131,147,97,87,101,186,163,99]);Yrb.YK=BX(nX(Drb.JY,2),ssb,9,0,[null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[0]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[0]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[1,3,5,7]),BX(nX(Drb.JY,1),nub,6,15,[0]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),null,null,null,null,null,null,null,null,null,null,BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[1,3,5,7]),BX(nX(Drb.JY,1),nub,6,15,[0,2]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),null,null,null,null,null,null,null,null,null,null,BX(nX(Drb.JY,1),nub,6,15,[1,2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[1,3,5,7]),BX(nX(Drb.JY,1),nub,6,15,[0,2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[2])]);Yrb.pM=BX(nX(Drb.JY,2),ssb,9,0,[null,BX(nX(Drb.JY,1),nub,6,15,[1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),null,null,BX(nX(Drb.JY,1),nub,6,15,[-3]),BX(nX(Drb.JY,1),nub,6,15,[-2]),BX(nX(Drb.JY,1),nub,6,15,[-1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),null,BX(nX(Drb.JY,1),nub,6,15,[-3]),BX(nX(Drb.JY,1),nub,6,15,[-2]),BX(nX(Drb.JY,1),nub,6,15,[-1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,3,4]),BX(nX(Drb.JY,1),nub,6,15,[2,3,4,5]),BX(nX(Drb.JY,1),nub,6,15,[2,3,6]),BX(nX(Drb.JY,1),nub,6,15,[2,3,4,7]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[1,2]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[-3,3,5]),BX(nX(Drb.JY,1),nub,6,15,[-2]),BX(nX(Drb.JY,1),nub,6,15,[-1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[6]),BX(nX(Drb.JY,1),nub,6,15,[4,6,7]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[-3,3,5]),BX(nX(Drb.JY,1),nub,6,15,[-2,4,6]),BX(nX(Drb.JY,1),nub,6,15,[-1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3,4]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[5]),BX(nX(Drb.JY,1),nub,6,15,[6]),BX(nX(Drb.JY,1),nub,6,15,[4,6,7]),BX(nX(Drb.JY,1),nub,6,15,[3,4]),BX(nX(Drb.JY,1),nub,6,15,[3,4]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[1,3]),BX(nX(Drb.JY,1),nub,6,15,[1,2]),BX(nX(Drb.JY,1),nub,6,15,[1,3]),BX(nX(Drb.JY,1),nub,6,15,[2,4]),BX(nX(Drb.JY,1),nub,6,15,[3,5]),BX(nX(Drb.JY,1),nub,6,15,[-2,2,4]),BX(nX(Drb.JY,1),nub,6,15,[-1,1]),null,BX(nX(Drb.JY,1),nub,6,15,[1]),BX(nX(Drb.JY,1),nub,6,15,[2]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[4]),BX(nX(Drb.JY,1),nub,6,15,[4,5]),BX(nX(Drb.JY,1),nub,6,15,[3,4,5,6]),BX(nX(Drb.JY,1),nub,6,15,[3,4,5,6]),BX(nX(Drb.JY,1),nub,6,15,[3,4,5,6]),BX(nX(Drb.JY,1),nub,6,15,[3,4,5,6]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3,4]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[2,3]),BX(nX(Drb.JY,1),nub,6,15,[3])]);Yrb.XI=BX(nX(Drb.B0,1),Esb,2,6,[xvb,yvb,zvb])};Yrb.hN=function hN(a,b,c,d){return {x:a,y:b,width:c,height:d}};Yrb.iN=function iN(){Yrb.gN();Yrb.jN.call(this,32,32,null)};Yrb.jN=function jN(a,b,c){Yrb.gN();c?(this.a=c):(this.a=new Jrb.Hu(a,b))};Yrb.kN=function kN(a){Yrb.gN();Yrb.jN.call(this,0,0,a)};Yrb.ON=function ON(a,b){return {molecule:a,map:b}};Yrb.cO=function cO(a,b){Yrb.gN();var c;typeof b===Azb&&(b=true);typeof b===usb?(c=Yrb.eO(a,b)):typeof b===wsb&&(c=Yrb.dO(a,b));return c};Yrb.dO=function dO(a,b){return new Yrb.kN(Jrb.up(new Jrb.Fp(false),a,b))};Yrb.eO=function eO(a,b){return new Yrb.kN(Jrb.tp(new Jrb.Fp(b),a))};Yrb.fO=function fO(a){Yrb.gN();return new Yrb.kN(Jrb.Lq(new Jrb.dr,a))};Yrb.gO=function gO(a){Yrb.gN();var b,c,d;d=new Jrb.er;c=(d.j=null,Jrb.br(d,new fsb.v4(new fsb.z4(a)))?d.j:null);b=d.f==null?Jrb.Tn(d.j):d.f;return Yrb.ON(new Yrb.kN(c),b)};Yrb.hO=function hO(a,b){Yrb.gN();b=b||{};var c=!b.noCoordinates;var d=!b.noStereo;return Yrb.iO(a,c,d)};Yrb.iO=function iO(a,b,c){var d,e,f;f=new Jrb.Vt;e=new Yrb.iN;Jrb.Lt(f,e.a,Hrb.Umb((d=a,Hrb.Pmb(),d)),b,c);return e};Yrb.qO=function qO(a,b,c,d){Yrb.gN();return Jrb.Vm(a,b,c,d)};Yrb.rO=function rO(a,b){Yrb.gN();return Jrb.Wm(a,b)};Yrb.RO=function RO(a,b){Yrb.gN();return Jrb.Xm(a,b)};Yrb.uP=function uP(){Yrb.gN();return Jrb.Ej(),Jrb.Ej(),Jrb.Dj};Yrb.AQ=function AQ(a){Yrb.gN();return Jrb.Ym(a)};Yrb.BQ=function BQ(a){Yrb.gN();return Jrb.Zm(a)};Yrb.ZR=function ZR(a){Yrb.gN();Jrb.Ej();Jrb.Dj=a};Z3(37,1,{37:1},Yrb.iN,Yrb.jN,Yrb.kN);_.addAtom=function lN(a){return Jrb.Hj(this.a,a)};_.addBond=function mN(a,b){return Jrb.Ij(this.a,a,b)};_.addFragment=function nN(a,b,c){Jrb.cn(this.a,a.a,b,c)};_.Ob=function oN(){Mrb.Ix(this.a)};_.Pb=function pN(a){Mrb.Jx(this.a,a)};_.addImplicitHydrogens=function qN(a){a===undefined?this.Ob():this.Pb(a)};_.Qb=function rN(){Mrb.px();Mrb.qx(this.a,1)};_.Rb=function sN(a){Mrb.qx(this.a,a)};_.addMissingChirality=function tN(a){a===undefined?this.Qb():this.Rb(a)};_.addMolecule=function uN(a){return Jrb.Kj(this.a,a.a)};_.addOrChangeAtom=function vN(a,b,c,d,e,f,g){return Jrb.Mj(this.a,a,b,c,d,e,f,g)};_.addOrChangeBond=function wN(a,b,c){return Jrb.Nj(this.a,a,b,c)};_.addRing=function xN(a,b,c,d,e){return Jrb.Oj(this.a,a,b,c,d,e)};_.addRingToAtom=function yN(a,b,c,d){return Jrb.Pj(this.a,a,b,c,d)};_.addRingToBond=function zN(a,b,c,d){return Jrb.Qj(this.a,a,b,c,d)};_.addSubstituent=function AN(a,b){return Jrb.Rj(this.a,a.a,b)};_.calculateTorsion=function BN(a){return Jrb.Sj(this.a,a)};_.canonizeCharge=function CN(a){return Jrb.en(this.a,a,false)};_.changeAtom=function DN(a,b,c,d,e){return Jrb.Tj(this.a,a,b,c,d,e)};_.changeAtomCharge=function EN(a,b){return Jrb.Uj(this.a,a,b)};_.changeBond=function FN(a,b){return Jrb.Vj(this.a,a,b)};_.clear=function GN(){Jrb.mu(this.a)};_.convertStereoBondsToSingleBonds=function HN(a){Jrb.gn(this.a,a)};_.copyAtom=function IN(a,b,c,d){return Jrb.Yj(this.a,a.a,b,c,d)};_.copyBond=function JN(a,b,c,d,e,f){return Jrb.$j(this.a,a.a,b,c,d,e,f)};_.copyMolecule=function KN(a){Jrb._j(this.a,a.a)};_.copyMoleculeByAtoms=function LN(a,b,c,d){Jrb.hn(this.a,a.a,b,c,d)};_.copyMoleculeByBonds=function MN(a,b,c,d){return Jrb.jn(this.a,a.a,b,c,d)};_.copyMoleculeProperties=function NN(a){Jrb.nu(this.a,a.a)};_.deleteAtom=function PN(a){Jrb.bk(this.a,a)};_.deleteAtomOrBond=function QN(a,b){return Jrb.ck(this.a,a,b)};_.deleteAtoms=function RN(a){return Jrb.dk(this.a,a)};_.deleteBond=function SN(a){Jrb.ek(this.a,a)};_.deleteBondAndSurrounding=function TN(a){Jrb.fk(this.a,a)};_.deleteMarkedAtomsAndBonds=function UN(){return Jrb.gk(this.a)};_.deleteMolecule=function VN(){Jrb.mu(this.a)};_.deleteSelectedAtoms=function WN(){return Jrb.hk(this.a)};_.ensureHelperArrays=function XN(a){Jrb.ou(this.a,a)};_.findAlleneCenterAtom=function YN(a){return Jrb.ln(this.a,a)};_.findAlleneEndAtom=function ZN(a,b){return Jrb.mn(this.a,a,b)};_.findAtom=function $N(a,b){return Jrb.ik(this.a,a,b)};_.findBINAPChiralityBond=function _N(a){return Jrb.nn(this.a,a)};_.findBond=function aO(a,b){return Jrb.jk(this.a,a,b)};_.findRingSystem=function bO(a,b,c,d){Jrb.on(this.a,a,b,c,d)};_.getAbsoluteAtomParity=function jO(a){return Jrb.pu(this.a,a)};_.getAbsoluteBondParity=function kO(a){return Jrb.qu(this.a,a)};_.getAllAtoms=function lO(){return this.a.q};_.getAllBonds=function mO(){return this.a.r};_.getAllConnAtoms=function nO(a){return Jrb.rn(this.a,a)};_.getAllConnAtomsPlusMetalBonds=function oO(a){return Jrb.sn(this.a,a)};_.getAllHydrogens=function pO(a){return Jrb.tn(this.a,a)};_.getAromaticRingCount=function sO(){return Jrb.un(this.a)};_.getAtomAbnormalValence=function tO(a){return Jrb.kk(this.a,a)};_.getAtomCIPParity=function uO(a){return Jrb.lk(this.a,a)};_.getAtomCharge=function vO(a){return Jrb.mk(this.a,a)};_.getAtomColor=function wO(a){return Jrb.nk(this.a,a)};_.getAtomCustomLabel=function xO(a){return Jrb.ok(this.a,a)};_.getAtomESRGroup=function yO(a){return Jrb.qk(this.a,a)};_.getAtomESRType=function zO(a){return Jrb.rk(this.a,a)};_.getAtomLabel=function AO(a){return Jrb.sk(this.a,a)};_.getAtomList=function BO(a){return Jrb.tk(this.a,a)};_.getAtomListString=function CO(a){return Jrb.uk(this.a,a)};_.getAtomMapNo=function DO(a){return Jrb.vk(this.a,a)};_.getAtomMass=function EO(a){return Jrb.wk(this.a,a)};_.getAtomParity=function FO(a){return Jrb.xk(this.a,a)};_.getAtomPi=function GO(a){return Jrb.wn(this.a,a)};_.getAtomPreferredStereoBond=function HO(a){return Jrb.xn(this.a,a)};_.getAtomQueryFeaturesObject=function IO(a){return Yrb.DU(this.a,a)};_.getAtomRadical=function JO(a){return Jrb.zk(this.a,a)};_.getAtomRingBondCount=function KO(a){return Jrb.yn(this.a,a)};_.getAtomRingCount=function LO(a,b){return Jrb.zn(this.a,a,b)};_.getAtomRingSize=function MO(a){return Jrb.An(this.a,a)};_.getAtomX=function NO(a){return Jrb.Ak(this.a,a)};_.getAtomY=function OO(a){return Jrb.Bk(this.a,a)};_.getAtomZ=function PO(a){return Jrb.Ck(this.a,a)};_.getAtomicNo=function QO(a){return Jrb.Dk(this.a,a)};_.getAtoms=function SO(){return this.a.f};_.getAverageBondLength=function TO(a){return Jrb.Bn(this.a,a)};_.getAverageTopologicalAtomDistance=function UO(){return Jrb.Cn(this.a)};_.getBond=function VO(a,b){return Jrb.Dn(this.a,a,b)};_.getBondAngle=function WO(a,b){return Jrb.Hk(this.a,a,b)};_.getBondAtom=function XO(a,b){return Jrb.Ik(this.a,a,b)};_.getBondBridgeMaxSize=function YO(a){return Jrb.Jk(this.a,a)};_.getBondBridgeMinSize=function ZO(a){return Jrb.Kk(this.a,a)};_.getBondCIPParity=function $O(a){return Jrb.Lk(this.a,a)};_.getBondESRGroup=function _O(a){return Jrb.Mk(this.a,a)};_.getBondESRType=function aP(a){return Jrb.Nk(this.a,a)};_.getBondLength=function bP(a){return Jrb.Ok(this.a,a)};_.getBondOrder=function cP(a){return Jrb.Qk(this.a,a)};_.getBondParity=function dP(a){return Jrb.Rk(this.a,a)};_.getBondPreferredStereoBond=function eP(a){return Jrb.Uo(this.a,a)};_.getBondQueryFeatures=function fP(a){return Jrb.Sk(this.a,a)};_.getBondQueryFeaturesObject=function gP(a){return Yrb.EU(this.a,a)};_.getBondRingSize=function hP(a){return Jrb.En(this.a,a)};_.getBondType=function iP(a){return Jrb.Tk(this.a,a)};_.getBondTypeSimple=function jP(a){return Jrb.Uk(this.a,a)};_.getBonds=function kP(){return this.a.g};_.getBounds=function lP(){var a;a=Jrb.Vk(this.a,Yrb.eN);if(!a)return null;return Yrb.hN(a.c,a.d,a.b,a.a)};_.getCanonizedIDCode=function mP(a){var b;b=new Jrb.fg(this.a,a);return Jrb.Kf(b)};_.getChiralText=function nP(){return Jrb.ru(this.a)};_.getChirality=function oP(){return this.a.I};_.getCompactCopy=function pP(){return new Yrb.kN(Jrb.su(this.a))};_.getConnAtom=function qP(a,b){return Jrb.Fn(this.a,a,b)};_.getConnAtoms=function rP(a){return Jrb.Gn(this.a,a)};_.getConnBond=function sP(a,b){return Jrb.Hn(this.a,a,b)};_.getConnBondOrder=function tP(a,b){return Jrb.In(this.a,a,b)};_.getDefaultMaxValenceUncharged=function vP(a){return Jrb.Wk(this.a,a)};_.getDiastereotopicAtomIDs=function wP(){return Mrb.rx(this.a)};_.getElectronValenceCorrection=function xP(a,b){return Jrb.Xk(this.a,a,b)};_.getExcludedNeighbourCount=function yP(a){return Jrb.Jn(this.a,a)};_.getExplicitHydrogens=function zP(a){return Jrb.Kn(this.a,a)};_.getFinalRanks=function AP(a){var b;b=new Jrb.fg(this.a,a);return b.e};_.getFisherProjectionParity=function BP(a,b,c,d){return Jrb.Mn(this.a,a,b,c,d)};_.getFragmentAtoms=function CP(a,b){return Jrb.Nn(this.a,a,b)};_.getFragmentNumbers=function DP(a,b,c){return Jrb.Pn(this.a,a,b,c)};_.getFragments=function EP(){var a,b,c;a=Jrb.uu(this.a);c=tX(Drb.t_,zzb,37,a.length,0,1);for(b=0;b<a.length;b++){c[b]=new Yrb.kN(a[b])}return c};_.getFreeValence=function FP(a){return Jrb.Rn(this.a,a)};_.getHandleHydrogenMap=function GP(){return Jrb.Tn(this.a)};_.getHelperArrayStatus=function HP(){return this.a.T};_.getHoseCodes=function IP(a){a=a||{};var b=(typeof a.maxSphereSize===Azb?5:a.maxSphereSize)|0;var c=(typeof a.type===Azb?0:a.type)|0;return Mrb.tx(this.a,b,c)};_.getIDCode=function JP(){var a;a=Jrb.wu(this.a);a==null&&(a=Jrb.Kf(new Jrb.eg(this.a)));return a};_.getIDCodeAndCoordinates=function KP(){return {idCode:this.getIDCode(),coordinates:this.getIDCoordinates()}};_.getIDCoordinates=function LP(){var a;a=Jrb.xu(this.a);a==null&&(a=Jrb.Hf(new Jrb.eg(this.a)));return a};_.getImplicitHigherValence=function MP(a,b){return Jrb.Un(this.a,a,b)};_.getImplicitHydrogens=function NP(a){return Jrb.Wn(this.a,a)};_.getIndex=function OP(){return Jrb.Fs(Yrb.SU(Yrb.fN),this.a)};_.getLowestFreeValence=function PP(a){return Jrb.Xn(this.a,a)};_.getMaxAtoms=function QP(){return this.a.M};_.getMaxBonds=function RP(){return this.a.N};_.getMaxValence=function SP(a){return Jrb.Zk(this.a,a)};_.getMaxValenceUncharged=function TP(a){return Jrb.$k(this.a,a)};_.getMetalBondedConnAtoms=function UP(a){return Jrb.Zn(this.a,a)};_.getMolecularFormula=function VP(){return new Yrb.zU(this.a)};_.getMoleculeColor=function WP(){return this.a.O};_.getMolweight=function XP(){return Jrb.$n(this.a)};_.getName=function YP(){return this.a.P};_.getNonHydrogenNeighbourCount=function ZP(a){return Jrb._n(this.a,a)};_.getNumberOfHydrogens=function $P(){return Mrb.Kx(this.a)};_.getOCL=function _P(){return $wnd.OCL};_.getOccupiedValence=function aQ(a){return Jrb.ao(this.a,a)};_.getPath=function bQ(a,b,c,d,e){return Jrb.co(this.a,a,b,c,d,null,e)};_.getPathBonds=function cQ(a,b,c){Jrb.eo(this.a,a,b,c)};_.getPathLength=function dQ(a,b){return Jrb.fo(this.a,a,b)};_.getRingSet=function eQ(){return new Yrb.tT(Jrb.jo(this.a))};_.getRotatableBondCount=function fQ(){return Jrb.ko(this.a)};_.Sb=function gQ(a,b,c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r;j=true;for(k=0;k<this.a.q-1;k++){if(Jrb.Ak(this.a,k)!=Jrb.Ak(this.a,k+1)||Jrb.Bk(this.a,k)!=Jrb.Bk(this.a,k+1)){j=false;break}}m=j?Jrb.su(this.a):this.a;j&&Nrb.gy(new Nrb.zy(0),m);l=Yrb.UU(g);i=new Jrb.et(m,l,f);i.I=c;Jrb.Td(i,new Wrb.LG(0,0,a,b));h=i.v;Jrb.Md(i);r=Jrb.ct(i);if(d){o=N3(u3($wnd.Math.round(h.b+e*2)));n=N3(u3($wnd.Math.round(h.a+e*2)));p=N3(u3($wnd.Math.round(h.c-e)));q=N3(u3($wnd.Math.round(h.d-e)));return Erb.u7(r,'width=\"\\\\d+px\" height=\"\\\\d+px\" viewBox=\"0 0 \\\\d+ \\\\d+\"','width=\"'+o+'px\" height=\"'+n+'px\" viewBox=\"'+p+' '+q+' '+o+' '+n+'\"')}else{return r}};_.getStereoBond=function hQ(a){return Jrb.no(this.a,a)};_.getStereoCenterCount=function iQ(){return Jrb.yu(this.a)};_.getStereoProblem=function jQ(a){return Jrb.al(this.a,a)};_.getSubstituent=function kQ(a,b,c,d,e){return Jrb.po(this.a,a,b,c,d.a,e)};_.getSubstituentSize=function lQ(a,b){return Jrb.qo(this.a,a,b)};_.getSymmetryRank=function mQ(a){return Jrb.zu(this.a,a)};_.getZNeighbour=function nQ(a,b){return Jrb.ro(this.a,a,b)};_.invalidateHelperArrays=function oQ(a){Jrb.dl(this.a,a)};_.inventCoordinates=function pQ(){var a;a=new Nrb.yy;a.g=new Krb.Wib(0);Nrb.gy(a,this.a);Jrb.cp(this.a)};_.is3D=function qQ(){return Jrb.el(this.a)};_.isAlkaliMetal=function rQ(a){return Jrb.vo(this.a,a)};_.isAllylicAtom=function sQ(a){return Jrb.wo(this.a,a)};_.isAmideTypeBond=function tQ(a){return Jrb.xo(this.a,a)};_.isAromaticAtom=function uQ(a){return Jrb.yo(this.a,a)};_.isAromaticBond=function vQ(a){return Jrb.zo(this.a,a)};_.isAtomConfigurationUnknown=function wQ(a){return Jrb.fl(this.a,a)};_.isAtomMarkedForDeletion=function xQ(a){return Jrb.gl(this.a,a)};_.isAtomParityPseudo=function yQ(a){return Jrb.hl(this.a,a)};_.isAtomStereoCenter=function zQ(a){return Jrb.il(this.a,a)};_.isAutoMappedAtom=function CQ(a){return Jrb.jl(this.a,a)};_.isBINAPChiralityBond=function DQ(a){return Jrb.Ao(this.a,a)};_.isBondBackgroundHilited=function EQ(a){return Jrb.kl(this.a,a)};_.isBondBridge=function FQ(a){return Jrb.ll(this.a,a)};_.isBondForegroundHilited=function GQ(a){return Jrb.ml(this.a,a)};_.isBondMarkedForDeletion=function HQ(a){return Jrb.nl(this.a,a)};_.isBondParityPseudo=function IQ(a){return Jrb.ol(this.a,a)};_.isBondParityUnknownOrNone=function JQ(a){return Jrb.pl(this.a,a)};_.isChalcogene=function KQ(a){return Jrb.Co(this.a,a)};_.isDelocalizedBond=function LQ(a){return Jrb.Do(this.a,a)};_.isEarthAlkaliMetal=function MQ(a){return Jrb.Eo(this.a,a)};_.isElectronegative=function NQ(a){return Jrb.ql(this.a,a)};_.isElectropositive=function OQ(a){return Jrb.rl(this.a,a)};_.isFlatNitrogen=function PQ(a){return Jrb.Fo(this.a,a,true)};_.isFragment=function QQ(){return this.a.K};_.isHalogene=function RQ(a){return Jrb.Go(this.a,a)};_.isMarkedAtom=function SQ(a){return Jrb.sl(this.a,a)};_.isMetalAtom=function TQ(a){return Jrb.tl(this.a,a)};_.isNaturalAbundance=function UQ(a){return Jrb.ul(this.a,a)};_.isNitrogenFamily=function VQ(a){return Jrb.Ho(this.a,a)};_.isOrganicAtom=function WQ(a){return Jrb.vl(this.a,a)};_.isPseudoRotatableBond=function XQ(a){return Jrb.Io(this.a,a)};_.isPurelyOrganic=function YQ(){return Jrb.wl(this.a)};_.isRingAtom=function ZQ(a){return Jrb.Lo(this.a,a)};_.isRingBond=function $Q(a){return Jrb.Mo(this.a,a)};_.isSelectedAtom=function _Q(a){return Jrb.xl(this.a,a)};_.isSelectedBond=function aR(a){return Jrb.yl(this.a,a)};_.isSimpleHydrogen=function bR(a){return Jrb.No(this.a,a)};_.isSmallRingAtom=function cR(a){return Jrb.Oo(this.a,a)};_.isSmallRingBond=function dR(a){return Jrb.Po(this.a,a)};_.isStabilizedAtom=function eR(a){return Jrb.Qo(this.a,a)};_.isStereoBond=function fR(a){return Jrb.zl(this.a,a)};_.markAtomForDeletion=function gR(a){Jrb.Cl(this.a,a)};_.markBondForDeletion=function hR(a){Jrb.Dl(this.a,a)};_.normalizeAmbiguousBonds=function iR(){return Jrb.Ro(this.a)};_.removeAtomColors=function jR(){Jrb.Gl(this.a)};_.removeAtomCustomLabels=function kR(){this.a.t=null};_.removeAtomMarkers=function lR(){Jrb.Hl(this.a)};_.removeAtomSelection=function mR(){Jrb.Il(this.a)};_.removeBondHiliting=function nR(){Jrb.Jl(this.a)};_.removeExplicitHydrogens=function oR(a){Jrb.Wo(this.a,true)};_.removeQueryFeatures=function pR(){return Jrb.Ll(this.a)};_.renumberESRGroups=function qR(a){return Jrb.Ml(this.a,a)};_.scaleCoords=function rR(a){Jrb.Nl(this.a,a)};_.setAllAtoms=function sR(a){Jrb.Ol(this.a,a)};_.setAllBonds=function tR(a){Jrb.Pl(this.a,a)};_.setAssignParitiesToNitrogen=function uR(a){Jrb.Au(this.a,a)};_.setAtomAbnormalValence=function vR(a,b){Jrb.Ql(this.a,a,b)};_.setAtomCIPParity=function wR(a,b){Jrb.Rl(this.a,a,b)};_.setAtomCharge=function xR(a,b){Jrb.Sl(this.a,a,b)};_.setAtomColor=function yR(a,b){Jrb.Tl(this.a,a,b)};_.setAtomConfigurationUnknown=function zR(a,b){Jrb.Ul(this.a,a,b)};_.setAtomCustomLabel=function AR(a,b){Jrb.Vl(this.a,a,b)};_.setAtomESR=function BR(a,b,c){Jrb.Xl(this.a,a,b,c)};_.setAtomList=function CR(a,b,c){Jrb.Zl(this.a,a,b,c)};_.setAtomMapNo=function DR(a,b,c){Jrb.$l(this.a,a,b,c)};_.setAtomMarker=function ER(a,b){Jrb._l(this.a,a,b)};_.setAtomMass=function FR(a,b){Jrb.am(this.a,a,b)};_.setAtomParity=function GR(a,b,c){Jrb.bm(this.a,a,b,c)};_.setAtomQueryFeature=function HR(a,b,c){Jrb.cm(this.a,a,b,c)};_.setAtomRadical=function IR(a,b){Jrb.dm(this.a,a,b)};_.setAtomSelection=function JR(a,b){Jrb.em(this.a,a,b)};_.setAtomX=function KR(a,b){Jrb.gm(this.a,a,b)};_.setAtomY=function LR(a,b){Jrb.hm(this.a,a,b)};_.setAtomZ=function MR(a,b){Jrb.im(this.a,a,b)};_.setAtomicNo=function NR(a,b){Jrb.jm(this.a,a,b)};_.setBondAtom=function OR(a,b,c){Jrb.km(this.a,a,b,c)};_.setBondBackgroundHiliting=function PR(a,b){Jrb.lm(this.a,a,b)};_.setBondCIPParity=function QR(a,b){Jrb.mm(this.a,a,b)};_.setBondESR=function RR(a,b,c){Jrb.nm(this.a,a,b,c)};_.setBondForegroundHiliting=function SR(a,b){Jrb.om(this.a,a,b)};_.setBondOrder=function TR(a,b){Jrb.pm(this.a,a,b)};_.setBondParity=function UR(a,b,c){Jrb.qm(this.a,a,b,c)};_.setBondParityUnknownOrNone=function VR(a){Jrb.rm(this.a,a)};_.setBondQueryFeature=function WR(a,b,c){Jrb.sm(this.a,a,b,c)};_.setBondType=function XR(a,b){Jrb.tm(this.a,a,b)};_.setChirality=function YR(a){Jrb.um(this.a,a)};_.setFragment=function $R(a){Jrb.vm(this.a,a)};_.setHelperValidity=function _R(a){Jrb.wm(this.a,a)};_.setHydrogenProtection=function aS(a){Jrb.xm(this.a,a)};_.setMaxAtoms=function bS(a){Jrb.ym(this.a,a)};_.setMaxBonds=function cS(a){Jrb.zm(this.a,a)};_.setMoleculeColor=function dS(a){Jrb.Am(this.a,a)};_.setName=function eS(a){Jrb.Bm(this.a,a)};_.setParitiesValid=function fS(a){Jrb._o(this.a,a)};_.setStereoBondFromAtomParity=function gS(a){Jrb.ap(this.a,a)};_.setStereoBondFromBondParity=function hS(a){Jrb.bp(this.a,a)};_.setStereoBondsFromParity=function iS(){Jrb.cp(this.a)};_.setToRacemate=function jS(){this.a.L=true};_.setUnknownParitiesToExplicitlyUnknown=function kS(){Jrb.Bu(this.a)};_.shareSameFragment=function lS(a,b){return Jrb.fo(this.a,a,b)!=-1};_.stripIsotopInfo=function mS(){return Jrb.Em(this.a)};_.stripSmallFragments=function nS(a){return Jrb.dp(this.a,a)};_.stripStereoInformation=function oS(){Jrb.Cu(this.a)};_.suggestBondType=function pS(a,b){return Jrb.Fm(this.a,a,b)};_.supportsImplicitHydrogen=function qS(a){return Jrb.ep(this.a,a)};_.swapAtoms=function rS(a,b){Jrb.Gm(this.a,a,b)};_.swapBonds=function sS(a,b){Jrb.Hm(this.a,a,b)};_.toIsomericSmiles=function tS(a){a=a||{};var b=a.createSmarts===true;var c=a.includeMapping===true;var d=a.kekulizedOutput===true;return this.Tb(b,c,d)};_.Tb=function uS(a,b,c){var d;d=0;a&&(d|=1);b&&(d|=2);c&&(d|=4);return Jrb.Wp(new Jrb.cq(this.a,d))};_.toMolfile=function vS(){var a;a=new Jrb.Fq(this.a);return a.a.a};_.toMolfileV3=function wS(){var a;a=new Jrb.ir(this.a);return a.a.a};_.toSVG=function xS(a,b,c,d){if(!a||!b){throw new Error('Molecule#toSVG requires width and height to be specified')}d=d||{};var e=d.factorTextSize||1;var f=d.autoCrop===true;var g=typeof d.autoCropMargin===Azb?5:d.autoCropMargin;var h=this.Sb(a,b,e,f,g,c,d);h=h.replace('<style>','<style> text {font-family: sans-serif;}');d.fontWeight&&(h=h.replace(/font-size=/g,'font-weight=\"'+d.fontWeight+'\" font-size='));d.strokeWidth&&(h=h.replace(/stroke-width=\"[^\"]+\"/g,gtb+d.strokeWidth+'\"'));return h};_.toSmarts=function yS(){return Jrb.Wp(new Jrb.cq(this.a,1))};_.toSmiles=function zS(){return Jrb.yt(new Jrb.Bt,this.a)};_.translateCoords=function AS(a,b){Jrb.Im(this.a,a,b)};_.validate=function BS(){Jrb.Eu(this.a)};_.zoomAndRotate=function CS(a,b,c){Jrb.Km(this.a,a,b,c)};_.zoomAndRotateInit=function DS(a,b){Jrb.Lm(this.a,a,b)};Yrb.GI=32;Yrb.HI=2;Yrb.II=4;Yrb.JI=6;\nYrb.KI=64;Yrb.LI=128;Yrb.MI=1;Yrb.NI=256;Yrb.OI=8;Yrb.QI=vtb;Yrb.RI=16;Yrb.SI=Vtb;Yrb.TI=512;Yrb.UI=Bzb;Yrb.VI=24;Yrb.WI=Bzb;Yrb.YI=zvb;Yrb.ZI=xvb;Yrb.$I=yvb;Yrb._I=0;Yrb.aJ=3;Yrb.bJ=1;Yrb.cJ=2;Yrb.dJ=64;Yrb.eJ=384;Yrb.fJ=448;Yrb.gJ=192;Yrb.hJ=256;Yrb.iJ=0;Yrb.jJ=320;Yrb.kJ=128;Yrb.mJ=1;Yrb.nJ=2;Yrb.oJ=4;Yrb.pJ=0;Yrb.qJ=3;Yrb.rJ=1;Yrb.sJ=pub;Yrb.tJ=2;Yrb.uJ=1;Yrb.vJ=2;Yrb.wJ=wtb;Yrb.xJ=3;Yrb.yJ=25;Yrb.zJ=5;Yrb.AJ=39;Yrb.BJ=Itb;Yrb.CJ=jtb;Yrb.DJ=Ttb;Yrb.EJ=ttb;Yrb.FJ=utb;Yrb.GJ=4;Yrb.HJ=7;Yrb.IJ=stb;Yrb.JJ=rtb;Yrb.KJ=Utb;Yrb.LJ=qtb;Yrb.MJ=lvb;Yrb.NJ=5;Yrb.OJ=17;Yrb.PJ=Btb;Yrb.QJ=Usb;Yrb.RJ=7;Yrb.SJ=32;Yrb.TJ=Vtb;Yrb.UJ=46;Yrb.VJ=Otb;Yrb.WJ=128;Yrb.XJ=oub;Yrb.YJ=ptb;Yrb.ZJ=rvb;Yrb.$J=256;Yrb._J=bub;Yrb.aK=Iub;Yrb.bK=svb;Yrb.cK=512;Yrb.dK=aub;Yrb.eK=Fsb;Yrb.fK=16;Yrb.gK=tvb;Yrb.hK=vtb;Yrb.iK=qub;Yrb.jK=32;Yrb.kK=Ntb;Yrb.lK=Etb;Yrb.mK=64;Yrb.nK=4;Yrb.oK=8;Yrb.pK=Hub;Yrb.qK=Gub;Yrb.rK=134217728;Yrb.sK=3;Yrb.tK=14;Yrb.uK=Atb;Yrb.vK=Vsb;Yrb.wK=Wsb;Yrb.xK=Xsb;Yrb.yK=Ysb;Yrb.zK=Zsb;Yrb.AK=$sb;Yrb.BK=_sb;Yrb.CK=120;Yrb.DK=4;Yrb.EK=3;Yrb.FK=2;Yrb.GK=rub;Yrb.HK=vzb;Yrb.IK=rub;Yrb.JK=Sub;Yrb.KK=30;Yrb.LK=kvb;Yrb.MK=Stb;Yrb.NK=3;Yrb.OK=22;Yrb.PK=tub;Yrb.QK=2;Yrb.RK=44;Yrb.SK=48;Yrb.TK=32;Yrb.UK=0;Yrb.VK=16;Yrb.WK=4;Yrb.XK=48;Yrb.ZK=1;Yrb.$K=0;Yrb._K=3;Yrb.aL=2;Yrb.bL=1;Yrb.cL=0;Yrb.dL=3;Yrb.eL=2;Yrb.fL=Rsb;Yrb.gL=Ytb;Yrb.hL=2;Yrb.iL=21;Yrb.jL=Etb;Yrb.kL=31;Yrb.lL=5;Yrb.mL=0;Yrb.nL=Xtb;Yrb.oL=8;Yrb.pL=7680;Yrb.qL=4;Yrb.rL=9;Yrb.sL=9;Yrb.tL=122880;Yrb.uL=4;Yrb.vL=13;Yrb.wL=8;Yrb.xL=2;Yrb.yL=uub;Yrb.zL=qub;Yrb.AL=16;Yrb.BL=6291840;Yrb.CL=23;Yrb.DL=jvb;Yrb.EL=128;Yrb.FL=32;Yrb.GL=64;Yrb.HL=96;Yrb.IL=2;Yrb.JL=5;Yrb.KL=256;Yrb.LL=Gtb;Yrb.ML=3;Yrb.NL=17;Yrb.OL=384;Yrb.PL=2;Yrb.QL=7;Yrb.RL=6291967;Yrb.SL=1;Yrb.TL=4;Yrb.UL=386;Yrb.VL=512;Yrb.WL=8;Yrb.XL=2;Yrb.YL=129;Yrb.ZL=511;Yrb.$L=127;Yrb._L=384;Yrb.aM=16;Yrb.bM=32;Yrb.cM=64;Yrb.dM=1;Yrb.eM=4;Yrb.fM=257;Yrb.gM=458752;Yrb.hM=Ftb;Yrb.iM=Gsb;Yrb.jM=bub;Yrb.kM=oub;Yrb.lM=Fsb;Yrb.mM=196608;Yrb.nM=0;Yrb.oM=327680;Yrb.qM=24;Yrb.rM=321;Yrb.sM=6;Yrb.uM=5;Yrb.vM=32;Yrb.wM=0;Yrb.xM=1;Yrb.yM=2;Yrb.zM=255;Yrb.AM=16;Yrb.BM=128;Yrb.CM=1;Yrb.DM=8;Yrb.EM=4;Yrb.FM=2;Yrb.GM=32;Yrb.HM=64;Yrb.IM=248;Yrb.JM=31;Yrb.KM=1;Yrb.LM=0;Yrb.MM=15;Yrb.NM=7;Yrb.OM=3;Yrb.PM=63;Yrb.QM=95;Yrb.RM=190;Yrb.SM=16;Yrb.TM=0;Yrb.UM=1;Yrb.VM=16;Yrb.WM=256;Yrb.XM=128;Yrb.YM=8;Yrb.ZM=32;Yrb.$M=4;Yrb._M=511;Yrb.aN=64;Yrb.bN=1;Yrb.cN=2;Drb.t_=B5(37);Yrb.ES=function ES(a){this.a=a};Yrb.NS=function NS(){return new Yrb.ES(new Urb.FF)};Yrb.OS=function OS(a,b){var c,d;d=tX(Drb.JZ,mvb,27,a.length,0,1);for(c=0;c<a.length;c++){d[c]=a[c].a}return new Yrb.ES(new Urb.HF(d,b))};Yrb.PS=function PS(a){return new Yrb.ES(Srb.GD(a))};Yrb.QS=function QS(a){var b,c;c=Jrb.Nt(new Jrb.Vt,Hrb.Umb((b=a,Hrb.Pmb(),b)));return new Yrb.ES(c)};Z3(67,1,{},Yrb.ES);_.addCatalyst=function FS(a){Urb.fF(this.a,a.a)};_.addCatalystAt=function GS(a,b){Urb.gF(this.a,a.a,b)};_.addProduct=function HS(a){Urb.hF(this.a,a.a)};_.addProductAt=function IS(a,b){Urb.iF(this.a,a.a,b)};_.addReactant=function JS(a){Urb.jF(this.a,a.a)};_.addReactantAt=function KS(a,b){Urb.kF(this.a,a.a,b)};_.clear=function LS(){Urb.lF(this.a)};_.clone=function MS(){return new Yrb.ES(new Urb.GF(this.a))};_.getAverageBondLength=function RS(){return Urb.nF(this.a)};_.getCatalyst=function SS(a){return new Yrb.kN(Urb.oF(this.a,a))};_.getCatalysts=function TS(){return this.a.a.a.length};_.getHighestMapNo=function US(){return Urb.pF(this.a)};_.getMergedCopy=function VS(){return new Yrb.ES(Urb.qF(this.a))};_.getMolecule=function WS(a){return new Yrb.kN(Urb.rF(this.a,a))};_.getMolecules=function XS(){return Urb.sF(this.a)};_.getName=function YS(){return Urb.tF(this.a)};_.getOCL=function ZS(){return $wnd.OCL};_.getProduct=function $S(a){return new Yrb.kN(Urb.uF(this.a,a))};_.getProducts=function _S(){return this.a.f.a.length};_.getReactant=function aT(a){return new Yrb.kN(Urb.vF(this.a,a))};_.getReactants=function bT(){return this.a.g.a.length};_.getReactionCenterMapNos=function cT(){return Urb.wF(this.a)};_.isEmpty=function dT(){return Urb.xF(this.a)};_.isFragment=function eT(){return Urb.yF(this.a)};_.isPerfectlyMapped=function fT(){return Urb.zF(this.a)};_.isReactionLayoutRequired=function gT(){return Urb.AF(this.a)};_.removeCatalysts=function hT(){Hrb.Mmb(this.a.a.a,0)};_.setFragment=function iT(a){Urb.CF(this.a,a)};_.setName=function jT(a){Urb.DF(this.a,a)};_.toRxn=function kT(a){var b;b=new Srb.FD(this.a,a);return b.a?b.a.a:null};_.toRxnV3=function lT(a){var b;b=new Srb.MD(this.a,a);return b.a?b.a.a:null};_.toSmiles=function mT(){return Jrb.dq(this.a)};_.validateMapping=function nT(){Urb.EF(this.a)};Drb.u_=B5(67);Yrb.tT=function tT(a){this.a=a};Z3(230,1,{},Yrb.tT);_.determineAromaticity=function uT(a,b,c,d){Jrb.rr(this.a,a,b,c,d)};_.getAtomIndex=function vT(a,b){return Jrb.tr(this.a,a,b)};_.getAtomRingSize=function wT(a){return Jrb.ur(this.a,a)};_.getBondIndex=function xT(a,b){return Jrb.vr(this.a,a,b)};_.getBondRingSize=function yT(a){return Jrb.wr(this.a,a)};_.getHeteroPosition=function zT(a){return Jrb.xr(this.a,a)};_.getOCL=function AT(){return $wnd.OCL};_.getRingAtoms=function BT(a){return Jrb.yr(this.a,a)};_.getRingBonds=function CT(a){return Jrb.zr(this.a,a)};_.getRingSize=function DT(a){return Jrb.Br(this.a,a)};_.getSharedRing=function ET(a,b){return Jrb.Cr(this.a,a,b)};_.getSize=function FT(){return this.a.i.a.length};_.isAromatic=function GT(a){return Jrb.Er(this.a,a)};_.isAtomMember=function HT(a,b){return Jrb.Hr(this.a,a,b)};_.isBondMember=function IT(a,b){return Jrb.Ir(this.a,a,b)};_.isDelocalized=function JT(a){return Jrb.Jr(this.a,a)};_.qualifiesAsAmideTypeBond=function KT(a){return Jrb.Mr(this.a,a)};_.validateMemberIndex=function LT(a,b){return Jrb.Sr(this.a,a,b)};Yrb.oT=7;Yrb.pT=3;Yrb.qT=7;Yrb.rT=5;Yrb.sT=1;Drb.v_=B5(230);Yrb.MT=function MT(a,b){this.a=new Srb.WD(new fsb.z4(a),b)};Z3(359,1,{},Yrb.MT);_.getField=function NT(a){var b,c;c=Srb.TD(this.a);for(b=0;b<c.length;b++){if(Erb.k7(c[b],a)){return Srb.SD(this.a,b)}}return null};_.getFieldData=function OT(a){return Srb.SD(this.a,a)};_.getFieldNames=function PT(a){return Srb.UD(this.a,a)};_.getMolecule=function QT(){return new Yrb.kN(Srb.VD(this.a))};_.getNextFieldData=function RT(){var a;return a=this.a.b.a,a};_.getNextMolFile=function ST(){var a;return a=this.a.g.a,a};_.getOCL=function TT(){return $wnd.OCL};_.next=function UT(){return Srb.PD(this.a)};Drb.w_=B5(359);Yrb.VT=function VT(a){a.a=new Jrb.xs};Yrb.WT=function WT(a,b){Jrb.ps(a.a,b.a)};Yrb.XT=function XT(a,b){Jrb.rs(a.a,b.a)};Yrb.YT=function YT(){Yrb.VT(this)};Z3(361,1,{},Yrb.YT);_.getOCL=function ZT(){return $wnd.OCL};_.isFragmentInMolecule=function $T(){return Jrb.ks(this.a)};_.setFragment=function _T(a){Yrb.WT(this,a)};_.setMol=function aU(a,b){Jrb.rs(this.a,b.a);Jrb.ps(this.a,a.a)};_.setMolecule=function bU(a){Yrb.XT(this,a)};Drb.y_=B5(361);Yrb.cU=function cU(a){a.a=new Jrb.Ns};Yrb.dU=function dU(){Yrb.cU(this)};Yrb.eU=function eU(a){return p6(a)};Yrb.gU=function gU(a){return Jrb.Os(a)};Yrb.hU=function hU(a){return Jrb.Ps(a)};Yrb.iU=function iU(){return Jrb.Es(),Jrb.Cs};Yrb.kU=function kU(a,b){return Jrb.Qs(a,b)};Yrb.lU=function lU(a,b){return Jrb.Rs(a,b)};Z3(362,1,{},Yrb.dU);_.createIndex=function fU(a){return Jrb.Fs(this.a,a.a)};_.getOCL=function jU(){return $wnd.OCL};_.isFragmentInMolecule=function mU(){return Jrb.Is(this.a)};_.setFragment=function nU(a,b){Jrb.Ls(this.a,a.a,b)};_.setMolecule=function oU(a,b){Jrb.Ms(this.a,a.a,b)};Drb.x_=B5(362);Yrb.pU=function pU(h,a){a=a||{};var b=a.smartsMode||'smiles';var c=a.skipCoordinateTemplates||false;var d=a.makeHydrogenExplicit||false;var e=a.noCactvs||false;var f=a.singleDotSeparator||false;var g=a.createSmartsWarnings||false;h.Ub(b,c,d,e,f,g)};Yrb.qU=function qU(a){Yrb.pU(this,a)};Z3(363,1,{},Yrb.qU);_.getSmartsWarning=function rU(){return Jrb.It(this.a)};_.Ub=function sU(a,b,c,d,e,f){var g;g=0;switch(a){case 'smarts':g=2;break;case 'guess':g=1;}c&&(g|=8);b&&(g|=4);d&&(g|=16);e&&(g|=32);f&&(g|=64);this.a=new Jrb.Wt(g)};_.Vb=function tU(a,b,c,d){var e;Jrb.Lt(this.a,a.a,Hrb.Umb((e=b,Hrb.Pmb(),e)),c,d);return a};_.parseMolecule=function uU(a,b){b=b||{};var c=b.molecule||new Yrb.iN;var d=!b.noCoordinates;var e=!b.noStereo;return this.Vb(c,a,d,e)};_.parseReaction=function vU(a){return new Yrb.ES(Jrb.Mt(this.a,a))};_.setRandomSeed=function wU(a){Jrb.Tt(this.a,Drb.r3(a))};Drb.z_=B5(363);Yrb.xU=function xU(){};Yrb.yU=function yU(a,b){b=b||{};var c=(typeof b.maxSphereSize===Azb?5:b.maxSphereSize)|0;var d=(typeof b.type===Azb?0:b.type)|0;return Mrb.vx(a,c,d)};Z3(364,1,{},Yrb.xU);Drb.A_=B5(364);Yrb.zU=function zU(a){Jrb.qq();Jrb.uq.call(this,a)};Z3(229,128,{128:1},Yrb.zU);$3(_,{absoluteWeight:{'get':function AU(){return Jrb.rq(this)}}});$3(_,{formula:{'get':function BU(){return Jrb.sq(this)}}});$3(_,{relativeWeight:{'get':function CU(){return Jrb.tq(this)}}});Drb.B_=B5(229);Yrb.DU=function DU(a,b){var c,d;d={};c=a.B[b];Yrb.OU(d,'aromatic',w3(j3(c,2),0));Yrb.OU(d,'notAromatic',w3(j3(c,4),0));Yrb.OU(d,'notChain',w3(j3(c,8),0));Yrb.OU(d,'not2RingBonds',w3(j3(c,16),0));Yrb.OU(d,'not3RingBonds',w3(j3(c,32),0));Yrb.OU(d,'not4RingBonds',w3(j3(c,64),0));Yrb.OU(d,'noMoreNeighbours',w3(j3(c,Vtb),0));Yrb.OU(d,'moreNeighbours',w3(j3(c,qtb),0));Yrb.OU(d,'matchStereo',w3(j3(c,Utb),0));Yrb.OU(d,'not0PiElectrons',w3(j3(c,ptb),0));Yrb.OU(d,'not1PiElectron',w3(j3(c,Iub),0));Yrb.OU(d,'not2PiElectrons',w3(j3(c,Fsb),0));Yrb.OU(d,'not0Hydrogen',w3(j3(c,128),0));Yrb.OU(d,'not1Hydrogen',w3(j3(c,256),0));Yrb.OU(d,'not2Hydrogen',w3(j3(c,512),0));Yrb.OU(d,'not3Hydrogen',w3(j3(c,vtb),0));Yrb.OU(d,'not0Neighbours',w3(j3(c,oub),0));Yrb.OU(d,'not1Neighbour',w3(j3(c,bub),0));Yrb.OU(d,'not2Neighbours',w3(j3(c,aub),0));Yrb.OU(d,'not3Neighbours',w3(j3(c,qub),0));Yrb.OU(d,'not4Neighbours',w3(j3(c,Etb),0));Yrb.OU(d,'notChargeNeg',w3(j3(c,Gub),0));Yrb.OU(d,'notCharge0',w3(j3(c,Hub),0));Yrb.OU(d,'noChargePos',w3(j3(c,134217728),0));Yrb.OU(d,'ringSize0',w3(j3(c,Vsb),0));Yrb.OU(d,'ringSize3',w3(j3(c,Wsb),0));Yrb.OU(d,'ringSize4',w3(j3(c,Xsb),0));Yrb.OU(d,'ringSize5',w3(j3(c,Ysb),0));Yrb.OU(d,'ringSize6',w3(j3(c,Zsb),0));Yrb.OU(d,'ringSize7',w3(j3(c,$sb),0));Yrb.OU(d,'ringSizeLarge',w3(j3(c,_sb),0));return d};Yrb.EU=function EU(a,b){var c,d;d={};c=v3(a.G[b]);Yrb.OU(d,'single',w3(j3(c,1),0));Yrb.OU(d,'double',w3(j3(c,2),0));Yrb.OU(d,'triple',w3(j3(c,4),0));Yrb.OU(d,'delocalized',w3(j3(c,8),0));Yrb.OU(d,'metalLigand',w3(j3(c,16),0));Yrb.OU(d,'quadruple',w3(j3(c,32),0));Yrb.OU(d,'quintuple',w3(j3(c,64),0));Yrb.OU(d,'notRing',w3(j3(c,128),0));Yrb.OU(d,'ring',w3(j3(c,256),0));Yrb.OU(d,'aromatic',w3(j3(c,Etb),0));Yrb.OU(d,'nonAromatic',w3(j3(c,jvb),0));Yrb.PU(d,'ringSize',N3(j3(c,Gtb))>>17);Yrb.PU(d,'brigdeMin',N3(j3(c,7680))>>9);Yrb.PU(d,'brigdeSpan',N3(j3(c,122880))>>13);return d};Yrb.OU=function OU(c,a,b){c[a]=b};Yrb.PU=function PU(c,a,b){c[a]=b};Yrb.RU=function RU(a){};Yrb.SU=function SU(a){!a.a&&(a.a=new Jrb.Ns);return a.a};Yrb.TU=function TU(){Yrb.RU(this)};Z3(226,1,{},Yrb.TU);_.a=null;Yrb.QU=null;Drb.C_=B5(226);Yrb.UU=function UU(a){if(!a)return 0;var b=0;a.inflateToMaxAVBL&&(b|=Fsb);a.inflateToHighResAVBL&&(b|=oub);a.chiralTextBelowMolecule&&(b|=0);a.chiralTextAboveMolecule&&(b|=bub);a.chiralTextOnFrameTop&&(b|=aub);a.chiralTextOnFrameBottom&&(b|=_tb);a.noTabus&&(b|=1);a.showAtomNumber&&(b|=2);a.showBondNumber&&(b|=4);a.highlightQueryFeatures&&(b|=8);a.showMapping&&(b|=16);a.suppressChiralText&&(b|=32);a.suppressCIPParity&&(b|=64);a.suppressESR&&(b|=128);a.showSymmetryAny&&(b|=768);a.showSymmetrySimple&&(b|=256);a.showSymmetryStereoHeterotopicity&&(b|=512);a.noImplicitAtomLabelColors&&(b|=vtb);a.noStereoProblem&&(b|=Vtb);a.noColorOnESRAndCIP&&(b|=qtb);a.noImplicitHydrogen&&(b|=Utb);a.drawBondsInGray&&(b|=ptb);return b};Zrb.VU=function VU(a,b){var c;c=a-b;c>=ntb?(c-=mtb):c<Mub&&(c+=mtb);return c};Zrb.WU=function WU(a,b){var c;for(c=b;c<a.length;c++){if(a[c]==62)return c}return -1};Zrb.YU=function YU(){Zrb.YU=_3;Zrb.XU=BX(nX(Drb.MY,1),Pub,6,15,[0.29899999499320984,0.5870000123977661,0.11400000005960464])};Zrb.ZU=function ZU(a,b){var c;c=tX(Drb.MY,Pub,6,4,15,1);c[0]=Czb*((a&dub)>>16);c[1]=Czb*((a&Ssb)>>8);c[2]=Czb*(a&255);Zrb.$U(c,b);return a&cub|IY($wnd.Math.round(c[0]*255))<<16|IY($wnd.Math.round(c[1]*255))<<8|IY($wnd.Math.round(c[2]*255))};Zrb.$U=function $U(a,b){var c,d,e,f,g,h,i,j;g=Zrb.XU[0]*a[0]+Zrb.XU[1]*a[1]+Zrb.XU[2]*a[2];if(g==0){a[0]=0;a[1]=0;a[2]=0;return}c=b/g;j=0;i=0;for(e=0;e<3;e++){a[e]*=c;if(a[e]<1){i+=Zrb.XU[e]}else{j+=(a[e]-1)*Zrb.XU[e];a[e]=1}}if(j!=0){h=0;for(f=0;f<3;f++){if(a[f]<1){a[f]+=j/i;if(a[f]>1){h+=(a[f]-1)*Zrb.XU[f];a[f]=1}}}if(h!=0){for(d=0;d<3;d++){if(a[d]<1){a[d]+=h/Zrb.XU[d];a[d]>1&&(a[d]=1)}}}}};Zrb._U=function _U(a,b){Zrb.YU();var c,d,e,f,g,h,i,j,k,l,m;c=(Zrb.XU[0]*((b&dub)>>16)+Zrb.XU[1]*((b&Ssb)>>8)+Zrb.XU[2]*(b&255))/255;g=(Zrb.XU[0]*((a&dub)>>16)+Zrb.XU[1]*((a&Ssb)>>8)+Zrb.XU[2]*(a&255))/255;e=$wnd.Math.abs(c-g);if(e>Tsb)return a;h=dsb.i4(((b&dub)>>16)/255,((b&Ssb)>>8)/255,(b&255)/255,null);i=dsb.i4(((a&dub)>>16)/255,((a&Ssb)>>8)/255,(a&255)/255,null);j=$wnd.Math.abs(i[0]-h[0]);j>0.5&&(j=1-j);m=1-$wnd.Math.max(i[1],h[1]);d=$wnd.Math.abs(g+c-1);k=$wnd.Math.cos(ntb*j*3);l=Tsb*$wnd.Math.max(m,$wnd.Math.max(d,k));if(e>l)return a;f=g>c?g+l>1:g-l>0;return Zrb.ZU(a,f?c-l:c+l)};Zrb.aV=function aV(a){Zrb.YU();var b,c,d;d=(a&dub)>>16;c=(a&Ssb)>>8;b=a&255;return (d+IY($wnd.Math.round(Tsb*(92-d)))<<16)+(c+IY($wnd.Math.round(Tsb*(160-c)))<<8)+b+IY($wnd.Math.round(Tsb*(255-b)))};Zrb.cV=function cV(){Zrb.cV=_3;Zrb.bV=BX(nX(Drb.B0,1),Esb,2,6,['','0','00','000','0000','00000','000000','0000000','00000000'])};Zrb.dV=function dV(a,b){Zrb.cV();var c,d,e,f;if(isNaN(a))return 'NaN';if(!isNaN(a)&&!isFinite(a))return 'Infinity';if(a==0)return '0';e=1;for(d=1;d<b;d++)e*=10;f=e*10;c=0;while($wnd.Math.abs(a)+0.5<e){a*=10;--c}while($wnd.Math.abs(a)+0.5>=f){a/=10;++c}return Zrb.eV(u3(a+(a<0?-0.5:0.5)),c,b,true)};Zrb.eV=function eV(a,b,c,d){var e,f,g,h,i,j;g=1;if(o3(a,0)==0)return d||c==1?'0':'0.'+Zrb.fV(c-1);if(o3(a,0)!=0){while(t3(B3(a,10),0)){a=s3(a,10);++b}g=0;for(h=a;o3(h,0)!=0;h=s3(h,10))++g}f=new Erb.S7;o3(a,0)<0&&(f.a+='-',f);i=$wnd.Math.max(0,c-g);e=''+O3(o3(a,0)<0?D3(a):a);if(b==0){f.a+=e;if(!d&&i!=0){f.a+='.';Erb.P7(f,Zrb.fV(i))}}else if(b>0){j=d?b>4:b-i>4;if(j){if(g==1){f.a+=e;if(c>1){f.a+='.';d?(f.a+='0',f):Erb.P7(f,Zrb.fV(i))}}else{Erb.P7(f,(Hrb.lnb(0,1,Hrb.rnb(e).length),Hrb.rnb(e).substr(0,1)));f.a+='.';Erb.P7(f,(Hrb.mnb(1,Hrb.rnb(e).length+1),Hrb.rnb(e).substr(1)));!d&&i!=0&&Erb.P7(f,Zrb.fV(i))}f.a+='e';f.a+=''+(b+g-1)}else{f.a+=e;Erb.P7(f,Zrb.fV(b));if(!d&&i>b){f.a+='.';Erb.P7(f,Zrb.fV(i-b))}}}else{if(-b<g){Erb.P7(f,(Hrb.lnb(0,g+b,Hrb.rnb(e).length),Hrb.rnb(e).substr(0,g+b)));f.a+='.';Erb.P7(f,(Hrb.mnb(g+b,Hrb.rnb(e).length+1),Hrb.rnb(e).substr(g+b)));!d&&i!=0&&Erb.P7(f,Zrb.fV(i))}else if(-b==g){f.a+='0.';f.a+=e;!d&&i!=0&&Erb.P7(f,Zrb.fV(i))}else{if(b+g<-2){if(g==1){f.a+=e;if(c>1){f.a+='.';d?(f.a+='0',f):Erb.P7(f,Zrb.fV(i))}}else{Erb.L7(f,(Hrb.mnb(0,Hrb.rnb(e).length),Hrb.rnb(e).charCodeAt(0)));f.a+='.';Erb.P7(f,(Hrb.mnb(1,Hrb.rnb(e).length+1),Hrb.rnb(e).substr(1)));!d&&i!=0&&Erb.P7(f,Zrb.fV(i))}f.a+='e-';f.a+=''+(1-b-g)}else{f.a+='0.';Erb.P7(f,Zrb.fV(-b-g));f.a+=e;!d&&i!=0&&Erb.P7(f,Zrb.fV(i))}}}return f.a};Zrb.fV=function fV(a){var b;if(a<Zrb.bV.length)return Zrb.bV[a];b=new Erb.S7;while(a>=Zrb.bV.length){Erb.P7(b,Zrb.bV[Zrb.bV.length-1]);a-=Zrb.bV.length-1}Erb.P7(b,Zrb.bV[a]);return b.a};Zrb.gV=function gV(a,b){var c;if(a==null)return b==null?0:1;if(b==null)return -1;for(c=0;c<a.length;c++){if(b.length==c)return 1;if(a[c]!=b[c])return a[c]<b[c]?-1:1}return b.length>a.length?-1:0};Zrb.hV=function hV(){};Z3(129,1,Psb,Zrb.hV);_.qb=function iV(a,b){return Zrb.gV(a,b)};_.jb=function jV(a){return this===a};Drb.D_=B5(129);Zrb.kV=function kV(a){a.d=new Krb.Yi};Zrb.lV=function lV(a,b){var c;c=Zrb.oV(a,b);if(c<0){c=-(c+1);Krb.Di(a.d,c,b)}return c};Zrb.mV=function mV(a,b,c){return a.c?Krb.ghb(b,c):Erb.Z4(b,c)};Zrb.nV=function nV(a,b){return b<0?null:Krb.Ji(a.d,b)};Zrb.oV=function oV(a,b){var c,d,e,f;f=a.d.a.length;if(f==0){return -1}e=1;while(2*e<=f)e<<=1;d=e;--e;while(d!=0){d>>=1;if(e>=f){e-=d;continue}c=Zrb.mV(a,b,Krb.Ji(a.d,e));if(c==0)return e;if(d==0)break;c<0?(e-=d):(e+=d)}e<f&&Zrb.mV(a,b,Krb.Ji(a.d,e))>0&&++e;return -(e+1)};Zrb.pV=function pV(a,b){Krb.Qi(a.d,b)};Zrb.qV=function qV(){Zrb.rV.call(this,null)};Zrb.rV=function rV(a){Zrb.kV(this);this.c=a};Z3(88,1,{},Zrb.qV,Zrb.rV);Drb.E_=B5(88);Zrb.sV=function sV(a){a.b=new Krb.Yi};Zrb.tV=function tV(a,b){var c,d;d=a.d.a.length;c=Zrb.lV(a,b);if(a.d.a.length!=d){Krb.Ei(a.b,b);a.a=null;return d}a.a==null&&Zrb.uV(a);return a.a[c]};Zrb.uV=function uV(a){var b,c,d,e;a.a=tX(Drb.NY,Qsb,6,a.d.a.length,15,1);b=0;for(e=new Krb.ueb(a.b);e.a<e.c.a.length;){d=Krb.teb(e);a.a[c=Zrb.oV(a,d),c<0?-1:c]=b++}};Zrb.vV=function vV(){Zrb.qV.call(this);Zrb.sV(this)};Z3(325,88,Psb,Zrb.vV);Drb.F_=B5(325);Grb.zV=function zV(a){Erb.xV.call(this,a)};Z3(289,109,Csb);Drb.J_=B5(289);Frb.BV=function BV(){Frb.BV=_3;Frb.AV=new Jc};Frb.CV=function CV(a){a.a=''};Frb.DV=function DV(a){var b;if(a.c==null){b=HY(a.b)===HY(Frb.AV)?null:a.b;a.d=b==null?zsb:CY(b)?Frb.IV(b):EY(b)?'String':Erb.v5(Erb.Nc(b));a.a=a.a+': '+(CY(b)?Frb.HV(b):b+'');a.c='('+a.d+') '+a.a}};Frb.EV=function EV(a){return HY(a.b)===HY(Frb.AV)?null:a.b};Frb.FV=function FV(a){Frb.BV();Frb.GV.call(this,a)};Frb.GV=function GV(a){Grb.zV.call(this,a);Frb.CV(this);this.b=a;this.a=''};Frb.HV=function HV(a){return a==null?null:a.message};Frb.IV=function IV(a){return a==null?null:a.name};Z3(135,289,{135:1,4:1,15:1,26:1,23:1},Frb.FV);_.Jb=function JV(){Frb.DV(this);return this.c};_.Wb=function KV(){return Frb.EV(this)};Drb.G_=B5(135);Frb.LV=function LV(b,a){return b[a]};Frb.MV=function MV(a){return a.length};Frb.NV=function NV(b,a){b[b.length]=a};Frb.OV=function OV(c,a,b){c[a]=b};Frb.PV=function PV(b,a){return b[a]};Frb.QV=function QV(a){return a.length};Frb.RV=function RV(){return Date.now()};Z3(344,1,{});Drb.I_=B5(344);Grb.VV=function VV(){Grb.VV=_3;!!(Grb.oW(),Grb.nW)};Grb.WV=function WV(a,b,c){return a.apply(b,c);var d};Grb.XV=function XV(){var a;if(SV!=0){a=Frb.RV();if(a-TV>2000){TV=a;UV=Grb.cW()}}if(SV++==0){Grb.fW((Grb.eW(),Grb.dW));return true}return false};function YV(b){Grb.VV();return function(){return Grb.ZV(b,this,arguments);var a}}\nGrb.ZV=function ZV(a,b,c){var d;d=Grb.XV();try{return Grb.WV(a,b,c)}finally{Grb.$V(d)}};Grb.$V=function $V(a){a&&Grb.gW((Grb.eW(),Grb.dW));--SV;if(a){if(UV!=-1){Grb.aW(UV);UV=-1}}};Grb._V=function _V(a){Grb.VV();$wnd.setTimeout(function(){throw a},0)};Grb.aW=function aW(a){$wnd.clearTimeout(a)};Grb.bW=function bW(){SV!=0&&(SV=0);UV=-1};Grb.cW=function cW(){return $wnd.setTimeout(Grb.bW,10)};var SV=0;var TV=0;var UV=-1;Grb.eW=function eW(){Grb.eW=_3;Grb.dW=new Grb.hW};Grb.fW=function fW(a){var b,c;if(a.a){c=null;do{b=a.a;a.a=null;c=Grb.jW(b,c)}while(a.a);a.a=c}};Grb.gW=function gW(a){var b,c;if(a.b){c=null;do{b=a.b;a.b=null;c=Grb.jW(b,c)}while(a.b);a.b=c}};Grb.hW=function hW(){};Grb.iW=function iW(a,b){!a&&(a=Frb.KU());Frb.NV(a,b);return a};Grb.jW=function jW(b,c){var d,e,f,g;for(e=0,f=Frb.MV(b);e<f;e++){g=Frb.LV(b,e);try{Grb.mW(g)?Grb.kW(g).Ec()&&(c=Grb.iW(c,g)):Grb.lW(g).Ec()}catch(a){a=g3(a);if(zY(a,23)){d=a;Grb.VV();Grb._V(zY(d,135)?d.Wb():d)}else throw h3(a)}}return c};Z3(338,344,{},Grb.hW);Drb.K_=B5(338);Grb.kW=function kW(a){return a[0]};Grb.lW=function lW(a){return a[0]};Grb.mW=function mW(a){return a[1]};$rb.IW=function IW(a){return a.compatMode};$rb.JW=function JW(){return $doc};_rb.KW=function KW(){return ['USD','US$',2,'US$','$']};_rb.MW=function MW(){_rb.MW=_3;_rb.LW=new _rb.OW};_rb.NW=function NW(a){!a.a&&(a.a=new asb.hX);return a.a};_rb.OW=function OW(){};Z3(341,1,{},_rb.OW);Drb.P_=B5(341);_rb.PW=function PW(){_rb.PW=_3;_rb.NW((_rb.MW(),_rb.MW(),_rb.LW))};_rb.QW=function QW(a){};_rb.RW=function RW(a,b){var c,d;b.a+='E';if(a.e<0){a.e=-a.e;b.a+='-'}c=''+a.e;for(d=Hrb.rnb(c).length;d<a.k;++d){b.a+='0'}b.a+=c};_rb.SW=function SW(a,b,c){if(a.d==0){Erb.R7(b,0,String.fromCharCode(48));++a.b;++a.d}if(a.b<a.d||a.c){Erb.R7(b,a.b,String.fromCharCode(c));++a.d}};_rb.TW=function TW(a,b){var c,d;c=a.b+a.n;if(a.d<c){while(a.d<c){b.a+='0';++a.d}}else{d=a.b+a.i;d>a.d&&(d=a.d);while(d>c&&Erb.c7(b.a,d-1)==48){--d}if(d<a.d){Erb.Q7(b,d,a.d);a.d=d}}};_rb.UW=function UW(a,b){var c,d;d=0;while(d<a.d-1&&Erb.c7(b.a,d)==48){++d}if(d>0){Erb.E4(b,0,d,'');a.d-=d;a.e-=d}if(a.j>a.o&&a.j>0){a.e+=a.b-1;c=a.e%a.j;c<0&&(c+=a.j);a.b=c+1;a.e-=c}else{a.e+=a.b-a.o;a.b=a.o}if(a.d==1&&Erb.c7(b.a,0)==48){a.e=0;a.b=a.o}};_rb.VW=function VW(a,b){var c,d,e,f;if(isNaN(b)){return 'NaN'}d=b<0||b==0&&1/b<0;d&&(b=-b);c=new Erb.S7;if(!isNaN(b)&&!isFinite(b)){Erb.P7(c,d?a.q:a.t);c.a+='\\u221E';Erb.P7(c,d?a.r:a.u);return c.a}b*=a.p;f=_rb.gX(c,b);e=Hrb.rnb(c.a).length+f+a.i+3;if(e>0&&e<Hrb.rnb(c.a).length&&Erb.c7(c.a,e)==57){_rb.bX(a,c,e-1);f+=Hrb.rnb(c.a).length-e;Erb.Q7(c,e,Hrb.rnb(c.a).length)}_rb.WW(a,d,c,f);return c.a};_rb.WW=function WW(a,b,c,d){var e,f,g,h,i;if(a.g){f=(Hrb.mnb(0,Hrb.rnb('.').length),Hrb.rnb('.').charCodeAt(0));g=(Hrb.mnb(0,Hrb.rnb(',').length),Hrb.rnb(',').charCodeAt(0))}else{f=(Hrb.mnb(0,Hrb.rnb('.').length),Hrb.rnb('.').charCodeAt(0));g=(Hrb.mnb(0,Hrb.rnb(',').length),Hrb.rnb(',').charCodeAt(0))}a.e=0;a.d=Hrb.rnb(c.a).length;a.b=a.d+d;h=a.v;e=a.f;a.b>vtb&&(h=true);h&&_rb.UW(a,c);_rb.aX(a,c);_rb.cX(a,c);_rb.XW(a,c,g,e);_rb.TW(a,c);_rb.SW(a,c,f);h&&_rb.RW(a,c);i=(Hrb.mnb(0,Hrb.rnb('0').length),Hrb.rnb('0').charCodeAt(0));i!=48&&_rb.YW(c,i);Erb.R7(c,0,b?a.q:a.t);Erb.P7(c,b?a.r:a.u)};_rb.XW=function XW(a,b,c,d){var e;if(d>0){for(e=d;e<a.b;e+=d+1){Erb.R7(b,a.b-e,String.fromCharCode(c));++a.b;++a.d}}};_rb.YW=function YW(a,b){var c,d,e;e=Hrb.rnb(a.a).length;for(d=0;d<e;++d){c=Erb.c7(a.a,d);c>=48&&c<=57&&Erb.F4(a,d,c-48+b&Gsb)}};_rb.ZW=function ZW(a,b,c,d,e){var f,g,h,i;Erb.Q7(d,0,Hrb.rnb(d.a).length);g=false;h=Hrb.rnb(b).length;for(i=c;i<h;++i){f=(Hrb.mnb(i,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(i));if(f==39){if(i+1<h&&(Hrb.mnb(i+1,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(i+1)==39)){++i;d.a+=\"'\"}else{g=!g}continue}if(g){d.a+=String.fromCharCode(f)}else{switch(f){case 35:case 48:case 44:case 46:case 59:return i-c;case 164:a.g=true;if(i+1<h&&(Hrb.mnb(i+1,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(i+1)==164)){++i;if(i<h-2&&(Hrb.mnb(i+1,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(i+1)==164)&&(Hrb.mnb(i+2,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(i+2)==164)){i+=2;Erb.P7(d,bsb.lX(a.a))}else{Erb.P7(d,bsb.iX(a.a))}}else{Erb.P7(d,bsb.jX(a.a))}break;case 37:if(!e){if(a.p!=1){throw h3(new Erb.i6(Dzb+b+'\"'))}a.p=100}d.a+='%';break;case 8240:if(!e){if(a.p!=1){throw h3(new Erb.i6(Dzb+b+'\"'))}a.p=1000}d.a+='\\u2030';break;case 45:d.a+='-';break;default:d.a+=String.fromCharCode(f);}}}return h-c};_rb.$W=function $W(a,b){var c,d;d=0;c=new Erb.S7;d+=_rb.ZW(a,b,d,c,false);a.t=c.a;d+=_rb._W(a,b,d,false);d+=_rb.ZW(a,b,d,c,false);a.u=c.a;if(d<Hrb.rnb(b).length&&(Hrb.mnb(d,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(d)==59)){++d;d+=_rb.ZW(a,b,d,c,true);a.q=c.a;d+=_rb._W(a,b,d,true);d+=_rb.ZW(a,b,d,c,true);a.r=c.a}else{a.q='-'+a.t;a.r=a.u}};_rb._W=function _W(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p;f=-1;g=0;p=0;h=0;j=-1;k=Hrb.rnb(b).length;n=c;l=true;for(;n<k&&l;++n){e=(Hrb.mnb(n,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(n));switch(e){case 35:p>0?++h:++g;j>=0&&f<0&&++j;break;case 48:if(h>0){throw h3(new Erb.i6(\"Unexpected '0' in pattern \\\"\"+b+'\"'))}++p;j>=0&&f<0&&++j;break;case 44:j=0;break;case 46:if(f>=0){throw h3(new Erb.i6('Multiple decimal separators in pattern \"'+b+'\"'))}f=g+p+h;break;case 69:if(!d){if(a.v){throw h3(new Erb.i6('Multiple exponential symbols in pattern \"'+b+'\"'))}a.v=true;a.k=0}while(n+1<k&&(Hrb.mnb(n+1,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(n+1)==48)){++n;d||++a.k}if(!d&&g+p<1||a.k<1){throw h3(new Erb.i6('Malformed exponential pattern \"'+b+'\"'))}l=false;break;default:--n;l=false;}}if(p==0&&g>0&&f>=0){m=f;m==0&&++m;h=g-m;g=m-1;p=1}if(f<0&&h>0||f>=0&&(f<g||f>g+p)||j==0){throw h3(new Erb.i6('Malformed pattern \"'+b+'\"'))}if(d){return n-c}o=g+p+h;a.i=f>=0?o-f:0;if(f>=0){a.n=g+p-f;a.n<0&&(a.n=0)}i=f>=0?f:o;a.o=i-g;if(a.v){a.j=g+a.o;a.i==0&&a.o==0&&(a.o=1)}a.f=j>0?j:0;a.c=f==0||f==o;return n-c};_rb.aX=function aX(a,b){var c,d,e;if(a.b>a.d){while(a.d<a.b){b.a+='0';++a.d}}if(!a.v){if(a.b<a.o){d=new Erb.S7;while(a.b<a.o){d.a+='0';++a.b;++a.d}Erb.R7(b,0,d.a)}else if(a.b>a.o){e=a.b-a.o;for(c=0;c<e;++c){if(Erb.c7(b.a,c)!=48){e=c;break}}if(e>0){Erb.E4(b,0,e,'');a.d-=e;a.b-=e}}}};_rb.bX=function bX(a,b,c){var d,e;d=true;while(d&&c>=0){e=Erb.c7(b.a,c);if(e==57){Erb.F4(b,c--,48)}else{Erb.F4(b,c,e+1&Gsb);d=false}}if(d){Erb.R7(b,0,String.fromCharCode(49));++a.b;++a.d}};_rb.cX=function cX(a,b){var c;if(a.d>a.b+a.i&&Erb.D4(b,a.b+a.i)>=53){c=a.b+a.i-1;_rb.bX(a,b,c)}};_rb.dX=function dX(a,b,c){_rb.QW(this);if(!b){throw h3(new Erb.i6('Unknown currency code'))}this.s=a;this.a=b;_rb.$W(this,this.s);if(!c&&this.g){this.n=bsb.kX(this.a)&7;this.i=this.n}};_rb.eX=function eX(a,b){_rb.PW();_rb.dX.call(this,a,b,true)};_rb.fX=function fX(a,b){return a.toPrecision(b)};_rb.gX=function gX(a,b){var c,d,e,f,g;g=Hrb.rnb(a.a).length;Erb.P7(a,_rb.fX(b,20));f=0;e=Erb.p7(a.a,'e',g);e<0&&(e=Erb.p7(a.a,'E',g));if(e>=0){d=e+1;d<Hrb.rnb(a.a).length&&Erb.c7(a.a,d)==43&&++d;d<Hrb.rnb(a.a).length&&(f=Erb.V5(Erb.w7(a.a,d),_ub,xsb));Erb.Q7(a,e,Hrb.rnb(a.a).length)}c=Erb.p7(a.a,'.',g);if(c>=0){Erb.E4(a,c,c+1,'');f-=Hrb.rnb(a.a).length-c}return f};Z3(216,1,{},_rb.eX);_.b=0;_.c=false;_.d=0;_.e=0;_.f=3;_.g=false;_.i=3;_.j=40;_.k=0;_.n=0;_.o=1;_.p=1;_.q='-';_.r='';_.t='';_.u='';_.v=false;Drb.Q_=B5(216);asb.hX=function hX(){};Z3(343,1,{},asb.hX);Drb.R_=B5(343);bsb.iX=function iX(a){return a[0]};bsb.jX=function jX(a){return a[1]};bsb.kX=function kX(a){return a[2]};bsb.lX=function lX(a){return a[4]||a[1]};Drb.EX=function EX(a){var b,c,d;b=a&Nub;c=a>>22&Nub;d=a<0?Ezb:0;return Drb.GX(b,c,d)};Drb.FX=function FX(a){return Drb.GX(Drb.MX(a),Drb.NX(a),Drb.LX(a))};Drb.GX=function GX(a,b,c){return {l:a,m:b,h:c}};Drb.HX=function HX(a,b,c){var d,e,f,g,h,i;if(Drb.MX(b)==0&&Drb.NX(b)==0&&Drb.LX(b)==0){throw h3(new Erb.K4('divide by zero'))}if(Drb.MX(a)==0&&Drb.NX(a)==0&&Drb.LX(a)==0){c&&(Drb.DX=Drb.GX(0,0,0));return Drb.GX(0,0,0)}if(Drb.LX(b)==aub&&Drb.NX(b)==0&&Drb.MX(b)==0){return Drb.IX(a,c)}i=false;if(Drb.LX(b)>>19!=0){b=Drb.eY(b);i=!i}g=Drb.RX(b);f=false;e=false;d=false;if(Drb.LX(a)==aub&&Drb.NX(a)==0&&Drb.MX(a)==0){e=true;f=true;if(g==-1){a=Drb.FX((Drb.tY(),Drb.pY));d=true;i=!i}else{h=Drb.iY(a,g);i&&Drb.PX(h);c&&(Drb.DX=Drb.GX(0,0,0));return h}}else if(Drb.LX(a)>>19!=0){f=true;a=Drb.eY(a);d=true;i=!i}if(g!=-1){return Drb.JX(a,g,i,f,c)}if(Drb.bY(a,b)<0){c&&(f?(Drb.DX=Drb.eY(a)):(Drb.DX=Drb.GX(Drb.MX(a),Drb.NX(a),Drb.LX(a))));return Drb.GX(0,0,0)}return Drb.KX(d?a:Drb.GX(Drb.MX(a),Drb.NX(a),Drb.LX(a)),b,i,f,e,c)};Drb.IX=function IX(a,b){if(Drb.LX(a)==aub&&Drb.NX(a)==0&&Drb.MX(a)==0){b&&(Drb.DX=Drb.GX(0,0,0));return Drb.FX((Drb.tY(),Drb.rY))}b&&(Drb.DX=Drb.GX(Drb.MX(a),Drb.NX(a),Drb.LX(a)));return Drb.GX(0,0,0)};Drb.JX=function JX(a,b,c,d,e){var f;f=Drb.iY(a,b);c&&Drb.PX(f);if(e){a=Drb.OX(a,b);d?(Drb.DX=Drb.eY(a)):(Drb.DX=Drb.GX(Drb.MX(a),Drb.NX(a),Drb.LX(a)))}return f};Drb.KX=function KX(a,b,c,d,e,f){var g,h,i,j;j=Drb.QX(b)-Drb.QX(a);g=Drb.hY(b,j);i=Drb.GX(0,0,0);while(j>=0){h=Drb.$X(a,g);if(h){j<22?Drb.TX(i,j):j<44?Drb.UX(i,j-22):Drb.SX(i,j-44);if(Drb.MX(a)==0&&Drb.NX(a)==0&&Drb.LX(a)==0){break}}Drb.ZX(g);--j}c&&Drb.PX(i);if(f){if(d){Drb.DX=Drb.eY(a);e&&(Drb.DX=Drb.kY(Drb.DX,(Drb.tY(),Drb.rY)))}else{Drb.DX=Drb.GX(Drb.MX(a),Drb.NX(a),Drb.LX(a))}}return i};Drb.LX=function LX(a){return a.h};Drb.MX=function MX(a){return a.l};Drb.NX=function NX(a){return a.m};Drb.OX=function OX(a,b){var c,d,e;if(b<=22){c=Drb.MX(a)&(1<<b)-1;d=e=0}else if(b<=44){c=Drb.MX(a);d=Drb.NX(a)&(1<<b-22)-1;e=0}else{c=Drb.MX(a);d=Drb.NX(a);e=Drb.LX(a)&(1<<b-44)-1}return Drb.GX(c,d,e)};Drb.PX=function PX(a){var b,c,d;b=~Drb.MX(a)+1&Nub;c=~Drb.NX(a)+(b==0?1:0)&Nub;d=~Drb.LX(a)+(b==0&&c==0?1:0)&Ezb;Drb.WX(a,b);Drb.XX(a,c);Drb.VX(a,d)};Drb.QX=function QX(a){var b,c;c=x6(Drb.LX(a));if(c==32){b=x6(Drb.NX(a));return b==32?x6(Drb.MX(a))+32:b+20-10}else{return c-12}};Drb.RX=function RX(a){var b,c,d;c=Drb.MX(a);if((c&c-1)!=0){return -1}d=Drb.NX(a);if((d&d-1)!=0){return -1}b=Drb.LX(a);if((b&b-1)!=0){return -1}if(b==0&&d==0&&c==0){return -1}if(b==0&&d==0&&c!=0){return y6(c)}if(b==0&&d!=0&&c==0){return y6(d)+22}if(b!=0&&d==0&&c==0){return y6(b)+44}return -1};Drb.SX=function SX(a,b){a.h|=1<<b};Drb.TX=function TX(a,b){a.l|=1<<b};Drb.UX=function UX(a,b){a.m|=1<<b};Drb.VX=function VX(a,b){a.h=b};Drb.WX=function WX(a,b){a.l=b};Drb.XX=function XX(a,b){a.m=b};Drb.YX=function YX(a){return Drb.MX(a)+Drb.NX(a)*jvb+Drb.LX(a)*Fzb};Drb.ZX=function ZX(a){var b,c,d;c=Drb.NX(a);d=Drb.LX(a);b=Drb.MX(a);Drb.VX(a,d>>>1);Drb.XX(a,c>>>1|(d&1)<<21);Drb.WX(a,b>>>1|(c&1)<<21)};Drb.$X=function $X(a,b){var c,d,e;e=Drb.LX(a)-Drb.LX(b);if(e<0){return false}c=Drb.MX(a)-Drb.MX(b);d=Drb.NX(a)-Drb.NX(b)+(c>>22);e+=d>>22;if(e<0){return false}Drb.WX(a,c&Nub);Drb.XX(a,d&Nub);Drb.VX(a,e&Ezb);return true};Drb._X=function _X(a,b){var c,d,e;c=Drb.MX(a)+Drb.MX(b);d=Drb.NX(a)+Drb.NX(b)+(c>>22);e=Drb.LX(a)+Drb.LX(b)+(d>>22);return Drb.GX(c&Nub,d&Nub,e&Ezb)};Drb.aY=function aY(a,b){return Drb.GX(Drb.MX(a)&Drb.MX(b),Drb.NX(a)&Drb.NX(b),Drb.LX(a)&Drb.LX(b))};Drb.bY=function bY(a,b){var c,d,e,f,g,h,i,j;i=Drb.LX(a)>>19;j=Drb.LX(b)>>19;if(i!=j){return j-i}e=Drb.LX(a);h=Drb.LX(b);if(e!=h){return e-h}d=Drb.NX(a);g=Drb.NX(b);if(d!=g){return d-g}c=Drb.MX(a);f=Drb.MX(b);return c-f};Drb.cY=function cY(a){var b,c,d,e,f;if(isNaN(a)){return Drb.tY(),Drb.sY}if(a<-9223372036854775808){return Drb.tY(),Drb.qY}if(a>=9223372036854775807){return Drb.tY(),Drb.pY}e=false;if(a<0){e=true;a=-a}d=0;if(a>=Fzb){d=IY(a/Fzb);a-=d*Fzb}c=0;if(a>=jvb){c=IY(a/jvb);a-=c*jvb}b=IY(a);f=Drb.GX(b,c,d);e&&Drb.PX(f);return f};\nDrb.dY=function dY(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;c=Drb.MX(a)&8191;d=Drb.MX(a)>>13|(Drb.NX(a)&15)<<9;e=Drb.NX(a)>>4&8191;f=Drb.NX(a)>>17|(Drb.LX(a)&255)<<5;g=(Drb.LX(a)&1048320)>>8;h=Drb.MX(b)&8191;i=Drb.MX(b)>>13|(Drb.NX(b)&15)<<9;j=Drb.NX(b)>>4&8191;k=Drb.NX(b)>>17|(Drb.LX(b)&255)<<5;l=(Drb.LX(b)&1048320)>>8;B=c*h;C=d*h;D=e*h;F=f*h;G=g*h;if(i!=0){C+=c*i;D+=d*i;F+=e*i;G+=f*i}if(j!=0){D+=c*j;F+=d*j;G+=e*j}if(k!=0){F+=c*k;G+=d*k}l!=0&&(G+=c*l);n=B&Nub;o=(C&511)<<13;m=n+o;q=B>>22;r=C>>9;s=(D&262143)<<4;t=(F&31)<<17;p=q+r+s+t;v=D>>18;w=F>>5;A=(G&4095)<<8;u=v+w+A;p+=m>>22;m&=Nub;u+=p>>22;p&=Nub;u&=Ezb;return Drb.GX(m,p,u)};Drb.eY=function eY(a){var b,c,d;b=~Drb.MX(a)+1&Nub;c=~Drb.NX(a)+(b==0?1:0)&Nub;d=~Drb.LX(a)+(b==0&&c==0?1:0)&Ezb;return Drb.GX(b,c,d)};Drb.fY=function fY(a){return Drb.GX(~Drb.MX(a)&Nub,~Drb.NX(a)&Nub,~Drb.LX(a)&Ezb)};Drb.gY=function gY(a,b){return Drb.GX(Drb.MX(a)|Drb.MX(b),Drb.NX(a)|Drb.NX(b),Drb.LX(a)|Drb.LX(b))};Drb.hY=function hY(a,b){var c,d,e;b&=63;if(b<22){c=Drb.MX(a)<<b;d=Drb.NX(a)<<b|Drb.MX(a)>>22-b;e=Drb.LX(a)<<b|Drb.NX(a)>>22-b}else if(b<44){c=0;d=Drb.MX(a)<<b-22;e=Drb.NX(a)<<b-22|Drb.MX(a)>>44-b}else{c=0;d=0;e=Drb.MX(a)<<b-44}return Drb.GX(c&Nub,d&Nub,e&Ezb)};Drb.iY=function iY(a,b){var c,d,e,f,g;b&=63;c=Drb.LX(a);d=(c&aub)!=0;d&&(c|=-1048576);if(b<22){g=c>>b;f=Drb.NX(a)>>b|c<<22-b;e=Drb.MX(a)>>b|Drb.NX(a)<<22-b}else if(b<44){g=d?Ezb:0;f=c>>b-22;e=Drb.NX(a)>>b-22|c<<44-b}else{g=d?Ezb:0;f=d?Nub:0;e=c>>b-44}return Drb.GX(e&Nub,f&Nub,g&Ezb)};Drb.jY=function jY(a,b){var c,d,e,f;b&=63;c=Drb.LX(a)&Ezb;if(b<22){f=c>>>b;e=Drb.NX(a)>>b|c<<22-b;d=Drb.MX(a)>>b|Drb.NX(a)<<22-b}else if(b<44){f=0;e=c>>>b-22;d=Drb.NX(a)>>b-22|Drb.LX(a)<<44-b}else{f=0;e=0;d=c>>>b-44}return Drb.GX(d&Nub,e&Nub,f&Ezb)};Drb.kY=function kY(a,b){var c,d,e;c=Drb.MX(a)-Drb.MX(b);d=Drb.NX(a)-Drb.NX(b)+(c>>22);e=Drb.LX(a)-Drb.LX(b)+(d>>22);return Drb.GX(c&Nub,d&Nub,e&Ezb)};Drb.lY=function lY(a){if(Drb.bY(a,(Drb.tY(),Drb.sY))<0){return -Drb.YX(Drb.eY(a))}return Drb.MX(a)+Drb.NX(a)*jvb+Drb.LX(a)*Fzb};Drb.mY=function mY(a){return Drb.MX(a)|Drb.NX(a)<<22};Drb.nY=function nY(a){var b,c,d,e,f;if(Drb.MX(a)==0&&Drb.NX(a)==0&&Drb.LX(a)==0){return '0'}if(Drb.LX(a)==aub&&Drb.NX(a)==0&&Drb.MX(a)==0){return '-9223372036854775808'}if(Drb.LX(a)>>19!=0){return '-'+Drb.nY(Drb.eY(a))}c=a;d='';while(!(Drb.MX(c)==0&&Drb.NX(c)==0&&Drb.LX(c)==0)){e=Drb.EX(Gzb);c=Drb.HX(c,e,true);b=''+Drb.mY(Drb.DX);if(!(Drb.MX(c)==0&&Drb.NX(c)==0&&Drb.LX(c)==0)){f=9-Hrb.rnb(b).length;for(;f>0;f--){b='0'+b}}d=b+d}return d};Drb.oY=function oY(a,b){return Drb.GX(Drb.MX(a)^Drb.MX(b),Drb.NX(a)^Drb.NX(b),Drb.LX(a)^Drb.LX(b))};Drb.tY=function tY(){Drb.tY=_3;Drb.pY=Drb.GX(Nub,Nub,524287);Drb.qY=Drb.GX(0,0,aub);Drb.rY=Drb.EX(1);Drb.EX(2);Drb.sY=Drb.EX(0)};function i3(a,b){var c;if(Drb.y3(a)&&Drb.y3(b)){c=Drb.l3(Drb.m3(a))+Drb.l3(Drb.m3(b));if(Hzb<c&&c<Fzb){return Drb.r3(c)}}return Drb.q3(Drb._X(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),Drb.y3(b)?Drb.L3(Drb.m3(b)):Drb.k3(b)))}\nfunction j3(a,b){return Drb.q3(Drb.aY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),Drb.y3(b)?Drb.L3(Drb.m3(b)):Drb.k3(b)))}\nDrb.k3=function k3(a){return a};Drb.l3=function l3(a){return a};Drb.m3=function m3(a){return a};Drb.n3=function n3(a){return a|0};function o3(a,b){var c;if(Drb.y3(a)&&Drb.y3(b)){c=Drb.l3(Drb.m3(a))-Drb.l3(Drb.m3(b));if(!isNaN(c)){return c}}return Drb.bY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),Drb.y3(b)?Drb.L3(Drb.m3(b)):Drb.k3(b))}\nDrb.p3=function p3(a){return a};Drb.q3=function q3(a){var b;b=Drb.LX(a);if(b==0){return Drb.r3(Drb.MX(a)+Drb.NX(a)*jvb)}if(b==Ezb){return Drb.r3(Drb.MX(a)+Drb.NX(a)*jvb-Fzb)}return Drb.p3(a)};Drb.r3=function r3(a){return a};function s3(a,b){var c;if(Drb.y3(a)&&Drb.y3(b)){c=Drb.l3(Drb.m3(a))/Drb.l3(Drb.m3(b));if(Hzb<c&&c<Fzb){return Drb.r3(c<0?$wnd.Math.ceil(c):$wnd.Math.floor(c))}}return Drb.q3(Drb.HX(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),Drb.y3(b)?Drb.L3(Drb.m3(b)):Drb.k3(b),false))}\nfunction t3(a,b){return o3(a,b)==0}\nfunction u3(a){if(Hzb<a&&a<Fzb){return Drb.r3(a<0?$wnd.Math.ceil(a):$wnd.Math.floor(a))}return Drb.q3(Drb.cY(a))}\nfunction v3(a){return Drb.r3(a)}\nfunction w3(a,b){return o3(a,b)>0}\nfunction x3(a,b){return o3(a,b)>=0}\nDrb.y3=function y3(a){return typeof a===vsb};function z3(a,b){return o3(a,b)<0}\nfunction A3(a,b){return o3(a,b)<=0}\nfunction B3(a,b){var c;if(Drb.y3(a)&&Drb.y3(b)){c=Drb.l3(Drb.m3(a))%Drb.l3(Drb.m3(b));if(Hzb<c&&c<Fzb){return Drb.r3(c)}}return Drb.q3((Drb.HX(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),Drb.y3(b)?Drb.L3(Drb.m3(b)):Drb.k3(b),true),Drb.DX))}\nfunction C3(a,b){var c;if(Drb.y3(a)&&Drb.y3(b)){c=Drb.l3(Drb.m3(a))*Drb.l3(Drb.m3(b));if(Hzb<c&&c<Fzb){return Drb.r3(c)}}return Drb.q3(Drb.dY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),Drb.y3(b)?Drb.L3(Drb.m3(b)):Drb.k3(b)))}\nfunction D3(a){var b;if(Drb.y3(a)){b=0-Drb.l3(Drb.m3(a));if(!isNaN(b)){return Drb.r3(b)}}return Drb.q3(Drb.eY(Drb.k3(a)))}\nfunction E3(a,b){return o3(a,b)!=0}\nfunction F3(a){return Drb.q3(Drb.fY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a)))}\nfunction G3(a,b){return Drb.q3(Drb.gY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),Drb.y3(b)?Drb.L3(Drb.m3(b)):Drb.k3(b)))}\nfunction H3(a,b){return Drb.q3(Drb.hY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),b))}\nfunction I3(a,b){return Drb.q3(Drb.iY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),b))}\nfunction J3(a,b){return Drb.q3(Drb.jY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),b))}\nfunction K3(a,b){var c;if(Drb.y3(a)&&Drb.y3(b)){c=Drb.l3(Drb.m3(a))-Drb.l3(Drb.m3(b));if(Hzb<c&&c<Fzb){return Drb.r3(c)}}return Drb.q3(Drb.kY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),Drb.y3(b)?Drb.L3(Drb.m3(b)):Drb.k3(b)))}\nDrb.L3=function L3(a){var b,c,d,e;e=Drb.l3(a);d=0;if(e<0){e+=Fzb;d=Ezb}c=IY(e/jvb);b=IY(e-c*jvb);return Drb.GX(b,c,d)};function M3(a){var b;if(Drb.y3(a)){b=Drb.l3(Drb.m3(a));return b==-0.?0:b}return Drb.lY(Drb.k3(a))}\nfunction N3(a){if(Drb.y3(a)){return Drb.n3(Drb.l3(Drb.m3(a)))}return Drb.mY(Drb.k3(a))}\nfunction O3(a){if(Drb.y3(a)){return ''+Drb.l3(Drb.m3(a))}return Drb.nY(Drb.k3(a))}\nfunction P3(a,b){return Drb.q3(Drb.oY(Drb.y3(a)?Drb.L3(Drb.m3(a)):Drb.k3(a),Drb.y3(b)?Drb.L3(Drb.m3(b)):Drb.k3(b)))}\nfunction g4(){csb.h4()}\ncsb.h4=function h4(){var a,b,c;b=$rb.IW($rb.JW());a=BX(nX(Drb.B0,1),Esb,2,6,[Izb]);for(c=0;c<a.length;c++){if(Erb.k7(a[c],b)){return}}a.length==1&&Erb.k7(Izb,a[0])&&Erb.k7('BackCompat',b)?\"GWT no longer supports Quirks Mode (document.compatMode=' BackCompat').<br>Make sure your application's host HTML page has a Standards Mode (document.compatMode=' CSS1Compat') doctype,<br>e.g. by using &lt;!doctype html&gt; at the start of your application's HTML page.<br><br>To continue using this unsupported rendering mode and risk layout problems, suppress this message by adding<br>the following line to your*.gwt.xml module file:<br>&nbsp;&nbsp;&lt;extend-configuration-property name=\\\"document.compatMode\\\" value=\\\"\"+b+'\"/&gt;':\"Your *.gwt.xml module configuration prohibits the use of the current document rendering mode (document.compatMode=' \"+b+\"').<br>Modify your application's host HTML page doctype, or update your custom \"+\"'document.compatMode' configuration property settings.\"};dsb.i4=function i4(a,b,c,d){var e,f,g,h,i,j;g=0;j=0;e=0;d==null&&(d=tX(Drb.MY,Pub,6,3,15,1));i=$wnd.Math.min(a,$wnd.Math.min(b,c));h=$wnd.Math.max(a,$wnd.Math.max(b,c));e=h;f=h-i;if(f==0){e=i;g=0;d[0]=g;d[1]=j;d[2]=e;return d}if(h!=0)j=f/h;else{j=0;g=0;d[0]=g;d[1]=j;d[2]=e;return d}a==h?(g=(b-c)/f):b==h?(g=2+(c-a)/f):(g=4+(a-b)/f);g*=60;g<0&&(g+=360);d[0]=g/360;d[1]=j;d[2]=e;return d};dsb.l4=function l4(){dsb.l4=_3;dsb.k4=BX(nX(Drb.LY,1),Osb,6,15,[5.55,15,15,15,15,15,15,15,15,Jzb,Jzb,Jzb,Jzb,Jzb,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,Jzb,Jzb,7.1,Kzb,Kzb,17.78,Lzb,3.82,6.66,6.66,7.78,11.68,Jzb,6.66,Jzb,Jzb,Kzb,Kzb,Kzb,Kzb,Kzb,Kzb,Kzb,Kzb,Kzb,Kzb,Jzb,Jzb,11.68,11.68,11.68,Kzb,20.3,Lzb,Lzb,Mzb,Mzb,Lzb,12.22,15.56,Mzb,Jzb,10,Lzb,Kzb,16.66,Mzb,15.56,Lzb,15.56,Mzb,Lzb,12.22,Mzb,Lzb,18.88,Lzb,Lzb,12.22,Jzb,Jzb,Jzb,9.38,Kzb,6.66,Kzb,Kzb,10,Kzb,Kzb,Jzb,Kzb,Kzb,4.44,4.44,10,4.44,16.66,Kzb,Kzb,Kzb,Kzb,6.66,10,Jzb,Kzb,10,Mzb,10,10,10,6.68,5.2,6.68,11.68,10.5])};dsb.m4=function m4(a,b){var c,d,e,f,g;if(Erb.k7(a.a,'Helvetica')){f=0;for(d=0,e=Hrb.rnb(b).length;d<e;d++){c=(Hrb.mnb(d,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(d));f+=(c<128?(g=dsb.k4[c]):(g=Jzb),g*a.b/20)}return f}else{return dsb.n4(a,b)}};dsb.n4=function n4(e,a){var b=dsb.j4;if(!b){b=$doc.createElement('canvas');dsb.j4=b}var c=''+e.b+'px '+e.a;var d=b.getContext('2d');d.font=c;var a=d.measureText(a);return a.width};dsb.o4=function o4(a){dsb.l4();this.a='Helvetica';this.b=a};Z3(204,1,{},dsb.o4);_.b=0;dsb.j4=null;Drb.S_=B5(204);Z3(385,1,{});Drb.V_=B5(385);Z3(212,385,{212:1});_.jb=function p4(a){var b;if(a===this){return true}if(zY(a,53)){b=a;return this.c==b.c&&this.d==b.d&&this.b==b.b&&this.a==b.a}return false};_.lb=function q4(){var a;a=f6(this.c);a=i3(a,C3(f6(this.d),37));a=i3(a,C3(f6(this.b),43));a=i3(a,C3(f6(this.a),47));return N3(a)^N3(I3(a,32))};Drb.U_=B5(212);esb.r4=function r4(a,b){a.c=0;a.d=0;a.b=b;a.a=0};esb.s4=function s4(a){esb.r4(this,a)};Z3(53,212,{212:1,53:1},esb.s4);_.a=0;_.b=0;_.c=0;_.d=0;Drb.T_=B5(53);Z3(380,1,{});Drb.$_=B5(380);fsb.t4=function t4(a){var b;b=-1;if(a.a!=-2){b=a.a;a.a=-2}else{b=fsb.y4(a.b)}return b};fsb.u4=function u4(a){var b,c,d;c=fsb.t4(a);if(c==-1)return null;d=new Erb.S7;b=false;while(!b){if(c==10){b=true}else if(c==13){b=true;c=fsb.t4(a);c!=10&&(a.a=c)}if(!b){if(c==-1){break}Erb.L7(d,c&Gsb);c=fsb.t4(a)}}return d.a};fsb.v4=function v4(a){this.b=a;this.a=-2};Z3(55,380,{},fsb.v4);_.a=0;Drb.W_=B5(55);Z3(346,1,{});Drb.Y_=B5(346);Z3(345,346,{});Drb.X_=B5(345);fsb.w4=function w4(){};Z3(225,345,{},fsb.w4);Drb.Z_=B5(225);fsb.y4=function y4(a){return a.a==Hrb.rnb(a.b).length?-1:Erb.c7(a.b,a.a++)};fsb.z4=function z4(a){this.b=a;this.a=0};Z3(54,380,{},fsb.z4);_.a=0;Drb.__=B5(54);Z3(382,1,{});Drb.b0=B5(382);fsb.A4=function A4(a,b){Erb.H7(a.a,b)};fsb.B4=function B4(){this.a=new Erb.I7};Z3(202,382,{},fsb.B4);_.mb=function C4(){return this.a.a};Drb.a0=B5(202);Erb.D4=function D4(a,b){return Erb.c7(a.a,b)};Erb.E4=function E4(a,b,c,d){var e;e=Hrb.rnb(a.a).length;c>e?(c=e):Hrb.mnb(b,c+1);a.a=Erb.x7(a.a,0,b)+(''+d)+Erb.w7(a.a,c)};Erb.F4=function F4(a,b,c){Erb.E4(a,b,b+1,String.fromCharCode(c))};Erb.G4=function G4(a,b){var c;c=Hrb.rnb(a.a).length;b<c?(a.a=Erb.x7(a.a,0,b)):b>c&&(a.a+=Erb.D7(tX(Drb.KY,iub,6,b-c,15,1)))};Erb.H4=function H4(a){return a.a};Erb.I4=function I4(a){this.a=a};Z3(97,1,{175:1});_.mb=function J4(){return Erb.H4(this)};Drb.c0=B5(97);Erb.K4=function K4(a){Erb.cA.call(this,a)};Z3(71,26,Csb,Erb.K4);Drb.d0=B5(71);Erb.N4=function N4(){Erb.L4.call(this)};Erb.O4=function O4(a){Erb.M4.call(this,a)};Z3(220,68,Csb,Erb.N4,Erb.O4);Drb.e0=B5(220);Erb._4=function _4(a,b){return a.a-b.a};function a5(a){this.a=a}\nfunction b5(a){if(!a){throw h3(new Erb.h6)}}\nfunction c5(a,b,c){var d,e;d=Erb.c7(a,b++);if(d>=55296&&d<=56319&&b<c&&m5(e=(Hrb.mnb(b,Hrb.rnb(a).length),Hrb.rnb(a).charCodeAt(b)))){return Fsb+((d&1023)<<10)+(e&1023)}return d}\nfunction e5(a){if(a>=48&&a<48+$wnd.Math.min(10,10)){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1}\nfunction g5(a){var b;b=a-10;return (b<0?48+a:97+b)&Gsb}\nfunction i5(a){return /\\d/.test(String.fromCharCode(a))}\nfunction j5(a){return /[A-Z]/i.test(String.fromCharCode(a))}\nErb.k5=function k5(a){return /[A-Z]/i.test(String.fromCharCode(a))};function l5(a){return /[A-Z\\d]/i.test(String.fromCharCode(a))}\nfunction m5(a){return a>=56320&&a<=57343}\nfunction n5(a,b,c){b5(a>=0&&a<=1114111);if(a>=Fsb){b[c++]=55296+(a-Fsb>>10&1023)&Gsb;b[c]=56320+(a-Fsb&1023)&Gsb;return 2}else{b[c]=a&Gsb;return 1}}\nfunction p5(a){var b;if(a<128){b=(Erb.r5(),Erb.q5)[a];!b&&(b=Erb.q5[a]=new a5(a));return b}return new a5(a)}\nZ3(117,1,{4:1,117:1,28:1},a5);_.rb=function d5(a){return Erb._4(this,a)};_.jb=function f5(a){return zY(a,117)&&a.a==this.a};_.lb=function h5(){return this.a};_.mb=function o5(){return String.fromCharCode(this.a)};_.a=0;Drb.g0=B5(117);Erb.r5=function r5(){Erb.r5=_3;Erb.q5=tX(Drb.g0,xub,117,128,0,1)};function g6(a){var b;b=Erb.U5(a);if(b>hvb){return Infinity}else if(b<-3.4028234663852886E38){return -Infinity}return b}\nErb.h6=function h6(){Erb.aA.call(this)};Erb.i6=function i6(a){Erb.cA.call(this,a)};Z3(41,26,Csb,Erb.h6,Erb.i6);Drb.l0=B5(41);Erb.j6=function j6(){Erb.aA.call(this)};Erb.k6=function k6(a){Erb.cA.call(this,a)};Z3(160,26,Csb,Erb.j6,Erb.k6);Drb.m0=B5(160);Erb.l6=function l6(a,b){return q6(a.a,b.a)};Erb.m6=function m6(a){return a.a};Erb.n6=function n6(a){return a.a};Erb.o6=function o6(a){this.a=a};function p6(a){a-=a>>1&1431655765;a=(a>>2&858993459)+(a&858993459);a=(a>>4)+a&252645135;a+=a>>8;a+=a>>16;return a&63}\nfunction q6(a,b){return a<b?-1:a>b?1:0}\nfunction v6(a){var b;if(a<0){return _ub}else if(a==0){return 0}else{for(b=Sub;(b&a)==0;b>>=1);return b}}\nfunction x6(a){var b,c,d;if(a<0){return 0}else if(a==0){return 32}else{d=-(a>>16);b=d>>16&16;c=16-b;a=a>>b;d=a-256;b=d>>16&8;c+=b;a<<=b;d=a-qtb;b=d>>16&4;c+=b;a<<=b;d=a-ptb;b=d>>16&2;c+=b;a<<=b;d=a>>14;b=d&~(d>>1);return c+2-b}}\nfunction y6(a){var b,c;if(a==0){return 32}else{c=0;for(b=1;(b&a)==0;b<<=1){++c}return c}}\nErb.A6=function A6(a){if(a>-129&&a<128){return Erb.D6(a)}return new Erb.o6(a)};Z3(44,104,{4:1,28:1,44:1,104:1},Erb.o6);_.rb=function r6(a){return Erb.l6(this,a)};_.ec=function s6(){return this.a};_.jb=function t6(a){return zY(a,44)&&a.a==this.a};_.lb=function u6(){return Erb.m6(this)};_.fc=function w6(){return Erb.n6(this)};_.mb=function z6(){return ''+this.a};_.a=0;Drb.o0=B5(44);Erb.C6=function C6(){Erb.C6=_3;Erb.B6=tX(Drb.o0,xub,44,256,0,1)};Erb.D6=function D6(a){Erb.C6();var b,c;b=a+128;c=Erb.B6[b];!c&&(c=Erb.B6[b]=new Erb.o6(a));return c};Erb.E6=function E6(a,b){return G6(a.a,b.a)};Erb.F6=function F6(a){this.a=a};function G6(a,b){return o3(a,b)<0?-1:o3(a,b)>0?1:0}\nErb.L6=function L6(a){return N3(J3(a,32))^N3(a)};Erb.N6=function N6(a){var b,c,d,e;c=N3(J3(a,32));if(c==0){return d=Hrb.rnb(Hrb.qnb(N3(a))),d.toString(16)}b=tX(Drb.KY,iub,6,17,15,1);e=17;do{b[--e]=g5(N3(a)&15);a=J3(a,4)}while(o3(a,0)!=0);return Erb.E7(b,e,17-e)};Erb.P6=function P6(a){if(o3(a,-129)>0&&o3(a,128)<0){return Erb.S6(a)}return new Erb.F6(a)};Z3(78,104,{4:1,28:1,78:1,104:1},Erb.F6);_.rb=function H6(a){return Erb.E6(this,a)};_.ec=function I6(){return M3(this.a)};_.jb=function J6(a){return zY(a,78)&&t3(a.a,this.a)};_.lb=function K6(){return Erb.L6(this.a)};_.fc=function M6(){return N3(this.a)};_.mb=function O6(){return ''+O3(this.a)};_.a=0;Drb.q0=B5(78);Erb.R6=function R6(){Erb.R6=_3;Erb.Q6=tX(Drb.q0,xub,78,256,0,1)};Erb.S6=function S6(a){Erb.R6();var b,c;b=N3(a)+128;c=Erb.Q6[b];!c&&(c=Erb.Q6[b]=new Erb.F6(a));return c};Erb.T6=function T6(a){return a==0||isNaN(a)?a:a<0?-1:1};Z3(432,1,{});Erb.U6=function U6(a){Erb.cA.call(this,a)};Z3(339,26,Csb,Erb.U6);Drb.r0=B5(339);Erb.Z6=function Z6(a){Erb.i6.call(this,a)};Z3(39,41,{4:1,15:1,39:1,26:1,23:1},Erb.Z6);Drb.t0=B5(39);Erb.$6=function $6(a,b,c){this.a=tsb;this.d=a;this.b=b;this.c=c};Z3(75,1,{4:1,75:1},Erb.$6);_.jb=function _6(a){var b;if(zY(a,75)){b=a;return this.c==b.c&&this.d==b.d&&this.a==b.a&&this.b==b.b}return false};_.lb=function a7(){return Krb.Reb(BX(nX(Drb.v0,1),Bsb,1,5,[Erb.A6(this.c),this.a,this.d,this.b]))};_.mb=function b7(){return this.a+'.'+this.d+'('+(this.b!=null?this.b:'Unknown Source')+(this.c>=0?':'+this.c:'')+')'};_.c=0;Drb.x0=B5(75);Erb.F7=function F7(a,b){a.a+=String.fromCharCode(b);return a};Erb.G7=function G7(a,b){a.a+=b;return a};Erb.H7=function H7(a,b){a.a+=''+b;return a};Erb.I7=function I7(){Erb.I4.call(this,'')};Erb.J7=function J7(){Erb.I4.call(this,'')};Erb.K7=function K7(a){Erb.I4.call(this,(Hrb.gnb(a),a))};Z3(64,97,{175:1},Erb.I7,Erb.J7,Erb.K7);Drb.y0=B5(64);Erb.L7=function L7(a,b){a.a+=String.fromCharCode(b);return a};Erb.M7=function M7(a,b){a.a+=b;return a};Erb.N7=function N7(a,b){a.a+=O3(b);return a};Erb.O7=function O7(a,b){a.a+=''+b;return a};Erb.P7=function P7(a,b){a.a+=''+b;return a};Erb.Q7=function Q7(a,b,c){Erb.E4(a,b,c,'');return a};Erb.R7=function R7(a,b,c){Erb.E4(a,b,b,c);return a};Erb.S7=function S7(){Erb.I4.call(this,'')};Erb.T7=function T7(){Erb.I4.call(this,'')};Erb.U7=function U7(a){Erb.I4.call(this,(Hrb.gnb(a),a))};Z3(22,97,{175:1},Erb.S7,Erb.T7,Erb.U7);Drb.z0=B5(22);Erb.X7=function X7(){Erb.X7=_3;Erb.W7=new fsb.w4};Erb.Y7=function Y7(a,b,c,d,e){Erb.X7();Hrb.hnb(a,'src');Hrb.hnb(c,'dest');Erb.Z7(a,b,c,d,e);Hrb.Fmb(a,b,c,d,e,true);return};Erb.Z7=function Z7(a,b,c,d,e){var f,g;g=Hrb.rnb(a).length;f=Hrb.rnb(c).length;if(b<0||d<0||e<0||b+e>g||d+e>f){throw h3(new Erb.L4)}};Z3(434,1,{});Erb.$7=function $7(){Erb.aA.call(this)};Erb._7=function _7(a){Erb.cA.call(this,a)};Z3(34,26,Csb,Erb.$7,Erb._7);Drb.D0=B5(34);gsb.i8=function i8(){gsb.i8=_3;var a,b,c;new gsb.w8(1,0);new gsb.w8(10,0);new gsb.w8(0,0);gsb.a8=tX(Drb.E0,xub,16,11,0,1);gsb.b8=tX(Drb.KY,iub,6,100,15,1);gsb.c8=BX(nX(Drb.LY,1),Osb,6,15,[1,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625,1220703125,6103515625,30517578125,152587890625,762939453125,3814697265625,19073486328125,95367431640625,476837158203125,2384185791015625]);gsb.d8=tX(Drb.NY,Qsb,6,gsb.c8.length,15,1);gsb.e8=BX(nX(Drb.LY,1),Osb,6,15,[1,10,100,1000,Hsb,Bvb,1000000,10000000,100000000,Gzb,10000000000,100000000000,1000000000000,10000000000000,100000000000000,1000000000000000,10000000000000000]);gsb.f8=tX(Drb.NY,Qsb,6,gsb.e8.length,15,1);gsb.g8=tX(Drb.E0,xub,16,11,0,1);a=0;for(;a<gsb.g8.length;a++){gsb.a8[a]=new gsb.w8(Drb.r3(a),0);gsb.g8[a]=new gsb.w8(0,a);gsb.b8[a]=48}for(;a<gsb.b8.length;a++){gsb.b8[a]=48}for(c=0;c<gsb.d8.length;c++){gsb.d8[c]=gsb.A8(gsb.c8[c])}for(b=0;b<gsb.f8.length;b++){gsb.f8[b]=gsb.A8(gsb.e8[b])}gsb.iab()};gsb.j8=function j8(a,b){var c,d,e,f,g,h;e=gsb.q8(a);h=gsb.q8(b);if(e==h){if(a.e==b.e&&a.a<54&&b.a<54){return a.f<b.f?-1:a.f>b.f?1:0}d=a.e-b.e;c=(a.d>0?a.d:$wnd.Math.floor((a.a-1)*Nzb)+1)-(b.d>0?b.d:$wnd.Math.floor((b.a-1)*Nzb)+1);if(c>d+1){return e}else if(c<d-1){return -e}else{f=(!a.c&&(a.c=gsb.A9(u3(a.f))),a.c);g=(!b.c&&(b.c=gsb.A9(u3(b.f))),b.c);d<0?(f=gsb.d9(f,gsb.rab(-d))):d>0&&(g=gsb.d9(g,gsb.rab(d)));return gsb.W8(f,g)}}else return e<h?-1:1};gsb.k8=function k8(a){return Erb.U5(gsb.s8(a))};gsb.l8=function l8(a,b){var c,d,e,f,g,h,i,j;c=0;g=0;f=Hrb.rnb(b).length;h=null;j=(Hrb.rnb(b),new Erb.T7);if(g<f&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)==43)){++g;++c;if(g<f&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)==43||(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)==45))){throw h3(new Erb.Z6(ysb+b+'\"'))}}while(g<f&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)!=46)&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)!=101)&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)!=69)){++g}j.a+=''+(Hrb.lnb(c,g,Hrb.rnb(b==null?zsb:b).length),Hrb.rnb(b==null?zsb:b).substr(c,g-c));if(g<f&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)==46)){++g;c=g;while(g<f&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)!=101)&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)!=69)){++g}a.e=g-c;j.a+=''+(Hrb.lnb(c,g,Hrb.rnb(b==null?zsb:b).length),Hrb.rnb(b==null?zsb:b).substr(c,g-c))}else{a.e=0}if(g<f&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)==101||(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)==69))){++g;c=g;if(g<f&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)==43)){++g;g<f&&(Hrb.mnb(g,Hrb.rnb(b).length),Hrb.rnb(b).charCodeAt(g)!=45)&&++c}h=(Hrb.lnb(c,f,Hrb.rnb(b).length),Hrb.rnb(b).substr(c,f-c));a.e=a.e-Erb.V5(h,_ub,xsb);if(a.e!=IY(a.e)){throw h3(new Erb.Z6('Scale out of range.'))}}i=j.a;if(Hrb.rnb(i).length<16){a.f=(gsb.h8==null&&(gsb.h8=new RegExp('^[+-]?\\\\d*$','i')),gsb.h8.test(i)?parseInt(i,10):NaN);if(isNaN(a.f)){throw h3(new Erb.Z6(ysb+b+'\"'))}a.a=gsb.A8(a.f)}else{gsb.p8(a,new gsb.p9(i))}a.d=Hrb.rnb(j.a).length;for(e=0;e<Hrb.rnb(j.a).length;++e){d=Erb.c7(j.a,e);if(d!=45&&d!=48){break}--a.d}a.d==0&&(a.d=1)};gsb.m8=function m8(a,b){var c,d,e,f,g,h,i;f=b.a;if((a.d>0?a.d:$wnd.Math.floor((a.a-1)*Nzb)+1)-f<0||f==0){return}d=gsb.n8(a)-f;if(d<=0){return}if(a.a<54){gsb.r8(a,b,d);return}h=gsb.rab(d);e=gsb.Z8((!a.c&&(a.c=gsb.A9(u3(a.f))),a.c),h);g=a.e-d;if(e[1].e!=0){c=gsb.W8(gsb.h9(gsb.V8(e[1])),h);c=gsb.J8(gsb.j9(e[0],0)?1:0,e[1].e*(5+c),b.b);c!=0&&(e[0]=gsb.T9(e[0],(gsb.T8(),x3(Drb.r3(c),0)?gsb.u9(Drb.r3(c)):gsb.e9(gsb.u9(D3(Drb.r3(c)))))));i=new gsb.x8(e[0]);if(gsb.n8(i)>f){e[0]=gsb.Y8(e[0],(gsb.T8(),gsb.Q8));--g}}a.e=gsb.K8(g);a.d=f;gsb.p8(a,e[0])};gsb.n8=function n8(a){var b,c;if(a.d>0){return a.d}b=1;c=1;if(a.a<54){a.a>=1&&(c=a.f);b+=$wnd.Math.log($wnd.Math.abs(c))*$wnd.Math.LOG10E}else{b+=(a.a-1)*Nzb;gsb.Y8((!a.c&&(a.c=gsb.A9(u3(a.f))),a.c),gsb.rab(b)).e!=0&&++b}a.d=IY(b);return a.d};gsb.o8=function o8(a,b){var c;Hrb.gnb(b);c=2-a.e;if(c==0){return a}if(c>0){if(c<gsb.e8.length&&a.a+gsb.f8[IY(c)]<54){return new gsb.u8(a.f*gsb.e8[IY(c)])}return new gsb.z8(gsb.oab((!a.c&&(a.c=gsb.A9(u3(a.f))),a.c),IY(c)),2)}if(a.a<54&&-c<gsb.e8.length){return gsb.E8(a.f,gsb.e8[IY(-c)],b)}return gsb.D8((!a.c&&(a.c=gsb.A9(u3(a.f))),a.c),gsb.rab(-c),b)};gsb.p8=function p8(a,b){var c;a.c=b;a.a=gsb.B9(b);a.a<54&&(a.f=(c=b.d>1?Hrb.unb(b.a[0],b.a[1]):Hrb.unb(b.a[0],0),M3(b.e>0?c:D3(c))))};gsb.q8=function q8(a){if(a.a<54){return a.f<0?-1:a.f>0?1:0}return (!a.c&&(a.c=gsb.A9(u3(a.f))),a.c).e};gsb.r8=function r8(a,b,c){var d,e,f,g,h,i;h=u3(gsb.e8[c]);g=K3(u3(a.e),Drb.r3(c));i=u3(a.f);f=s3(i,h);e=B3(i,h);if(o3(e,0)!=0){d=z3(H3(o3(e,0)<0?D3(e):e,1),h)?-1:w3(H3(o3(e,0)<0?D3(e):e,1),h)?1:0;f=i3(f,v3(gsb.J8(N3(f)&1,(o3(e,0)==0?0:o3(e,0)<0?-1:1)*(5+d),b.b)));if($wnd.Math.log(M3(o3(f,0)<0?D3(f):f))*$wnd.Math.LOG10E>=b.a){f=s3(f,10);g=K3(g,1)}}a.e=gsb.K8(M3(g));a.d=b.a;a.f=M3(f);a.a=gsb.B8(f);a.c=null};gsb.s8=function s8(a){var b,c,d,e,f;if(a.g!=null){return a.g}if(a.a<32){a.g=gsb.M9(u3(a.f),IY(a.e));return a.g}e=gsb.N9((!a.c&&(a.c=gsb.A9(u3(a.f))),a.c),0);if(a.e==0){return e}b=(!a.c&&(a.c=gsb.A9(u3(a.f))),a.c).e<0?2:1;c=Hrb.rnb(e).length;d=-a.e+c-b;f=new Erb.S7;f.a+=''+e;if(a.e>0&&d>=-6){if(d>=0){Erb.R7(f,c-IY(a.e),String.fromCharCode(46))}else{Erb.E4(f,b-1,b-1,'0.');Erb.R7(f,b+1,Erb.E7(gsb.b8,0,-IY(d)-1))}}else{if(c-b>=1){Erb.R7(f,b,String.fromCharCode(46));++c}Erb.R7(f,c,String.fromCharCode(69));d>0&&Erb.R7(f,++c,String.fromCharCode(43));Erb.R7(f,++c,''+O3(u3(d)))}a.g=f.a;return a.g};gsb.t8=function t8(a){gsb.i8();var b;if(!isNaN(a)&&!isFinite(a)||isNaN(a)){throw h3(new Erb.Z6('Infinite or NaN'))}gsb.l8(this,(b=Hrb.rnb(a),b.toPrecision(20)))};gsb.u8=function u8(a){this.f=a;this.e=2;this.a=gsb.A8(a)};gsb.v8=function v8(a,b){gsb.i8();gsb.t8.call(this,a);gsb.m8(this,b)};gsb.w8=function w8(a,b){this.e=b;this.a=gsb.B8(a);this.a<54?(this.f=M3(a)):(this.c=(gsb.T8(),o3(a,0)>=0?gsb.u9(a):gsb.e9(gsb.u9(D3(a)))))};gsb.x8=function x8(a){gsb.z8.call(this,a,0)};gsb.y8=function y8(a,b){this.e=b;gsb.p8(this,(Hrb.gnb(a),a))};gsb.z8=function z8(a,b){gsb.y8.call(this,a,b)};gsb.A8=function A8(a){var b,c;if(a>-140737488355328&&a<140737488355328){if(a==0){return 0}b=a<0;b&&(a=-a);c=IY($wnd.Math.floor($wnd.Math.log(a)/0.6931471805599453));(!b||a!=$wnd.Math.pow(2,c))&&++c;return c}return gsb.B8(u3(a))};gsb.B8=function B8(a){var b;o3(a,0)<0&&(a=F3(a));return b=N3(J3(a,32)),64-(b!=0?x6(b):x6(N3(a))+32)};gsb.D8=function D8(a,b,c){var d,e,f,g,h,i,j,k,l;f=gsb.Z8(a,b);g=f[0];i=f[1];if(i.e==0){return new gsb.z8(g,2)}j=a.e*b.e;if(gsb.B9(b)<54){h=(l=i.d>1?Hrb.unb(i.a[0],i.a[1]):Hrb.unb(i.a[0],0),i.e>0?l:D3(l));e=(k=b.d>1?Hrb.unb(b.a[0],b.a[1]):Hrb.unb(b.a[0],0),b.e>0?k:D3(k));d=z3(H3(o3(h,0)<0?D3(h):h,1),o3(e,0)<0?D3(e):e)?-1:w3(H3(o3(h,0)<0?D3(h):h,1),o3(e,0)<0?D3(e):e)?1:0;d=gsb.J8(gsb.j9(g,0)?1:0,j*(5+d),c)}else{d=gsb.W8(gsb.h9(i.e<0?i.e==0?i:new gsb.n9(-i.e,i.d,i.a):i),b.e<0?b.e==0?b:new gsb.n9(-b.e,b.d,b.a):b);d=gsb.J8(gsb.j9(g,0)?1:0,j*(5+d),c)}if(d!=0){if(gsb.B9(g)<54){return gsb.M8((k=g.d>1?Hrb.unb(g.a[0],g.a[1]):Hrb.unb(g.a[0],0),i3(g.e>0?k:D3(k),Drb.r3(d))))}g=gsb.T9(g,(gsb.T8(),x3(Drb.r3(d),0)?gsb.u9(Drb.r3(d)):gsb.e9(gsb.u9(D3(Drb.r3(d))))));return new gsb.z8(g,2)}return new gsb.z8(g,2)};gsb.E8=function E8(a,b,c){var d,e,f,g,h;f=(e=a/b,e>0?$wnd.Math.floor(e):$wnd.Math.ceil(e));g=a%b;h=e6(a*b,0);if(g!=0){d=e6($wnd.Math.abs(g)*2,$wnd.Math.abs(b));f+=gsb.J8(IY(f)&1,h*(5+d),c)}return new gsb.u8(f)};gsb.J8=function J8(a,b,c){var d;d=0;switch(c.b){case 7:if(b!=0){throw h3(new Erb.K4('Rounding necessary'))}break;case 0:d=b==0?0:b<0?-1:1;break;case 2:d=$wnd.Math.max(b==0?0:b<0?-1:1,0);break;case 3:d=$wnd.Math.min(b==0?0:b<0?-1:1,0);break;case 4:$wnd.Math.abs(b)>=5&&(d=b==0?0:b<0?-1:1);break;case 5:$wnd.Math.abs(b)>5&&(d=b==0?0:b<0?-1:1);break;case 6:$wnd.Math.abs(b)+a>5&&(d=b==0?0:b<0?-1:1);}return d};gsb.K8=function K8(a){if(a<_ub){throw h3(new Erb.K4('Overflow'))}else if(a>xsb){throw h3(new Erb.K4('Underflow'))}else{return IY(a)}};gsb.M8=function M8(a){if(o3(a,0)==0&&2<gsb.g8.length){return gsb.g8[2]}return new gsb.w8(a,2)};Z3(16,104,{4:1,28:1,104:1,16:1},gsb.t8,gsb.u8,gsb.v8,gsb.w8,gsb.x8,gsb.z8);_.rb=function C8(a){return gsb.j8(this,a)};_.ec=function F8(){return gsb.k8(this)};_.jb=function G8(a){var b;if(this===a){return true}if(zY(a,16)){b=a;return this.e==b.e&&gsb.j8(this,b)==0}return false};_.lb=function H8(){var a;if(this.b!=0){return this.b}if(this.a<54){a=u3(this.f);this.b=N3(j3(a,-1));this.b=33*this.b+N3(j3(I3(a,32),-1));this.b=17*this.b+IY(this.e);return this.b}this.b=17*gsb.b9(this.c)+IY(this.e);return this.b};_.fc=function I8(){return this.e<=-32||this.e>(this.d>0?this.d:$wnd.Math.floor((this.a-1)*Nzb)+1)?0:gsb.c9(this.e==0||this.a==0&&this.f!=-1?(!this.c&&(this.c=gsb.A9(u3(this.f))),this.c):this.e<0?gsb.d9((!this.c&&(this.c=gsb.A9(u3(this.f))),this.c),gsb.rab(-this.e)):gsb.Y8((!this.c&&(this.c=gsb.A9(u3(this.f))),this.c),gsb.rab(this.e)))};_.mb=function L8(){return gsb.s8(this)};_.a=0;_.b=0;_.d=0;_.e=0;_.f=0;Drb.E0=B5(16);gsb.T8=function T8(){gsb.T8=_3;var a;gsb.O8=new gsb.l9(1,1);gsb.Q8=new gsb.l9(1,10);gsb.S8=new gsb.l9(0,0);gsb.N8=new gsb.l9(-1,1);gsb.P8=BX(nX(Drb.F0,1),xub,21,0,[gsb.S8,gsb.O8,new gsb.l9(1,2),new gsb.l9(1,3),new gsb.l9(1,4),new gsb.l9(1,5),new gsb.l9(1,6),new gsb.l9(1,7),new gsb.l9(1,8),new gsb.l9(1,9),gsb.Q8]);gsb.R8=tX(Drb.F0,xub,21,32,0,1);for(a=0;a<gsb.R8.length;a++){gsb.R8[a]=x3(H3(1,a),0)?gsb.u9(H3(1,a)):gsb.e9(gsb.u9(D3(H3(1,a))))}};gsb.U8=function U8(a){};gsb.V8=function V8(a){return a.e<0?a.e==0?a:new gsb.n9(-a.e,a.d,a.a):a};gsb.W8=function W8(a,b){if(a.e>b.e){return 1}if(a.e<b.e){return -1}if(a.d>b.d){return a.e}if(a.d<b.d){return -b.e}return a.e*gsb.W9(a.a,b.a,a.d)};gsb.X8=function X8(a){while(a.d>0&&a.a[--a.d]==0);a.a[a.d++]==0&&(a.e=0)};gsb.Y8=function Y8(a,b){var c,d,e,f,g,h,i,j,k,l;if(b.e==0){throw h3(new Erb.K4(Ozb))}e=b.e;if(b.d==1&&b.a[0]==1){return b.e>0?a:a.e==0?a:new gsb.n9(-a.e,a.d,a.a)}k=a.e;j=a.d;d=b.d;if(j+d==2){l=s3(j3(v3(a.a[0]),Pzb),j3(v3(b.a[0]),Pzb));k!=e&&(l=D3(l));return o3(l,0)>=0?gsb.u9(l):gsb.e9(gsb.u9(D3(l)))}c=j!=d?j>d?1:-1:gsb.W9(a.a,b.a,j);if(c==0){return k==e?gsb.O8:gsb.N8}if(c==-1){return gsb.S8}g=j-d+1;f=tX(Drb.NY,Qsb,6,g,15,1);h=k==e?1:-1;d==1?gsb.Q9(f,a.a,j,b.a[0]):gsb.O9(f,g,a.a,j,b.a,d);i=new gsb.n9(h,g,f);gsb.X8(i);return i};gsb.Z8=function Z8(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;f=b.e;if(f==0){throw h3(new Erb.K4(Ozb))}e=b.d;d=b.a;if(e==1){return gsb.P9(a,d[0],f)}n=a.a;o=a.d;c=o!=e?o>e?1:-1:gsb.W9(n,d,o);if(c<0){return BX(nX(Drb.F0,1),xub,21,0,[gsb.S8,a])}p=a.e;h=o-e+1;k=e;i=p==f?1:-1;g=tX(Drb.NY,Qsb,6,h,15,1);j=gsb.O9(g,h,n,o,d,e);l=new gsb.n9(i,h,g);m=new gsb.n9(p,k,j);gsb.X8(l);gsb.X8(m);return BX(nX(Drb.F0,1),xub,21,0,[l,m])};gsb.$8=function $8(a,b){var c;if(HY(a)===HY(b)){return true}if(zY(b,21)){c=b;return a.e==c.e&&a.d==c.d&&gsb._8(a,c.a)}return false};gsb._8=function _8(a,b){var c;for(c=a.d-1;c>=0&&a.a[c]==b[c];c--);return c<0};gsb.a9=function a9(a){var b;if(a.b==-2){if(a.e==0){b=-1}else{for(b=0;a.a[b]==0;b++);}a.b=b}return a.b};gsb.b9=function b9(a){var b;if(a.c!=0){return a.c}for(b=0;b<a.a.length;b++){a.c=a.c*33+(a.a[b]&-1)}a.c=a.c*a.e;return a.c};gsb.c9=function c9(a){var b;b=a.a[0];return a.e>0?b:-b|0};gsb.d9=function d9(a,b){if(b.e==0||a.e==0){return gsb.S8}return gsb.iab(),gsb.jab(a,b)};gsb.e9=function e9(a){return a.e==0?a:new gsb.n9(-a.e,a.d,a.a)};gsb.f9=function f9(a,b){var c;if(b<0){throw h3(new Erb.K4('Negative exponent'))}if(b==0){return gsb.O8}else if(b==1||gsb.$8(a,gsb.O8)||gsb.$8(a,gsb.S8)){return a}if(!gsb.j9(a,0)){c=1;while(!gsb.j9(a,c)){++c}return gsb.d9(gsb.v9(c*b),gsb.f9(gsb.i9(a,c),b))}return gsb.qab(a,b)};gsb.g9=function g9(a,b){if(b==0||a.e==0){return a}return b>0?gsb.C9(a,b):gsb.G9(a,-b)};gsb.h9=function h9(a){return a.e==0?a:gsb.E9(a)};gsb.i9=function i9(a,b){if(b==0||a.e==0){return a}return b>0?gsb.G9(a,b):gsb.C9(a,-b)};gsb.j9=function j9(a,b){var c,d,e;if(b==0){return (a.a[0]&1)!=0}if(b<0){throw h3(new Erb.K4('Negative bit address'))}e=b>>5;if(e>=a.d){return a.e<0}c=a.a[e];b=1<<(b&31);if(a.e<0){d=gsb.a9(a);if(e<d){return false}else d==e?(c=-c):(c=~c)}return (c&b)!=0};gsb.k9=function k9(a){return gsb.N9(a,0)};gsb.l9=function l9(a,b){gsb.T8();gsb.n9.call(this,a,1,BX(nX(Drb.NY,1),Qsb,6,15,[b]))};gsb.m9=function m9(a,b){gsb.n9.call(this,1,2,BX(nX(Drb.NY,1),Qsb,6,15,[a,b]))};gsb.n9=function n9(a,b,c){gsb.T8();gsb.U8(this);this.e=a;this.d=b;this.a=c};gsb.o9=function o9(a){gsb.T8();gsb.U8(this);if(a.length==0){this.e=0;this.d=1;this.a=BX(nX(Drb.NY,1),Qsb,6,15,[0])}else{this.e=1;this.d=a.length;this.a=a;gsb.X8(this)}};gsb.p9=function p9(a){gsb.T8();gsb.q9.call(this,a)};gsb.q9=function q9(a){gsb.U8(this);Hrb.gnb(a);if(Hrb.rnb(a).length==0){throw h3(new Erb.Z6('Zero length BigInteger'))}gsb.y9(this,a)};gsb.u9=function u9(a){gsb.T8();var b,c;c=N3(a);b=N3(J3(a,32));if(b!=0){return new gsb.m9(c,b)}if(c>10||c<0){return new gsb.l9(1,c)}return gsb.P8[c]};gsb.v9=function v9(a){var b,c,d;if(a<gsb.R8.length){return gsb.R8[a]}c=a>>5;b=a&31;d=tX(Drb.NY,Qsb,6,c+1,15,1);d[c]=1<<b;return new gsb.n9(1,c+1,d)};\ngsb.y9=function y9(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;n=Hrb.rnb(b).length;i=n;Hrb.mnb(0,Hrb.rnb(b).length);if(Hrb.rnb(b).charCodeAt(0)==45){l=-1;m=1;--n}else{l=1;m=0}f=(gsb.K9(),gsb.J9)[10];e=n/f|0;q=n%f;q!=0&&++e;h=tX(Drb.NY,Qsb,6,e,15,1);c=gsb.I9[8];g=0;o=m+(q==0?f:q);for(p=m;p<i;p=o,o=p+f){d=Erb.V5((Hrb.lnb(p,o,Hrb.rnb(b).length),Hrb.rnb(b).substr(p,o-p)),_ub,xsb);j=(gsb.iab(),gsb.mab(h,h,g,c));j+=gsb.X9(h,g,d);h[g++]=j}k=g;a.e=l;a.d=k;a.a=h;gsb.X8(a)};gsb.A9=function A9(a){gsb.T8();return o3(a,0)>=0?gsb.u9(a):gsb.e9(gsb.u9(D3(a)))};Z3(21,104,{4:1,28:1,104:1,21:1},gsb.l9,gsb.m9,gsb.n9,gsb.o9,gsb.p9);_.rb=function r9(a){return gsb.W8(this,a)};_.ec=function s9(){return Erb.U5(gsb.N9(this,0))};_.jb=function t9(a){return gsb.$8(this,a)};_.lb=function w9(){return gsb.b9(this)};_.fc=function x9(){return gsb.c9(this)};_.mb=function z9(){return gsb.k9(this)};_.b=-2;_.c=0;_.d=0;_.e=0;Drb.F0=B5(21);gsb.B9=function B9(a){var b,c,d;if(a.e==0){return 0}b=a.d<<5;c=a.a[a.d-1];if(a.e<0){d=gsb.a9(a);if(d==a.d-1){--c;c=c|0}}b-=x6(c);return b};gsb.C9=function C9(a,b){var c,d,e,f;c=b>>5;b&=31;e=a.d+c+(b==0?0:1);d=tX(Drb.NY,Qsb,6,e,15,1);gsb.D9(d,a.a,c,b);f=new gsb.n9(a.e,e,d);gsb.X8(f);return f};gsb.D9=function D9(a,b,c,d){var e,f,g;if(d==0){Erb.Y7(b,0,a,c,a.length-c)}else{g=32-d;a[a.length-1]=0;for(f=a.length-1;f>c;f--){a[f]|=b[f-c-1]>>>g;a[f-1]=b[f-c-1]<<d}}for(e=0;e<c;e++){a[e]=0}};gsb.E9=function E9(a){var b,c,d,e;e=a.d;c=e+1;b=tX(Drb.NY,Qsb,6,c,15,1);gsb.F9(b,a.a,e);d=new gsb.n9(a.e,c,b);gsb.X8(d);return d};gsb.F9=function F9(a,b,c){var d,e,f;d=0;for(e=0;e<c;e++){f=b[e];a[e]=f<<1|d;d=f>>>31}d!=0&&(a[c]=d)};gsb.G9=function G9(a,b){var c,d,e,f,g;d=b>>5;b&=31;if(d>=a.d){return a.e<0?(gsb.T8(),gsb.N8):(gsb.T8(),gsb.S8)}f=a.d-d;e=tX(Drb.NY,Qsb,6,f+1,15,1);gsb.H9(e,f,a.a,d,b);if(a.e<0){for(c=0;c<d&&a.a[c]==0;c++);if(c<d||b>0&&a.a[c]<<32-b!=0){for(c=0;c<f&&e[c]==-1;c++){e[c]=0}c==f&&++f;++e[c]}}g=new gsb.n9(a.e,f,e);gsb.X8(g);return g};gsb.H9=function H9(a,b,c,d,e){var f,g,h;f=true;for(g=0;g<d;g++){f=f&c[g]==0}if(e==0){Erb.Y7(c,d,a,0,b);g=b}else{h=32-e;f=f&c[g]<<h==0;for(g=0;g<b-1;g++){a[g]=c[g+d]>>>e|c[g+d+1]<<h}a[g]=c[g+d]>>>e;++g}return f};gsb.K9=function K9(){gsb.K9=_3;gsb.I9=BX(nX(Drb.NY,1),Qsb,6,15,[_ub,1162261467,Sub,1220703125,362797056,1977326743,Sub,387420489,Gzb,214358881,429981696,815730721,1475789056,170859375,Ttb,410338673,612220032,893871739,1280000000,1801088541,113379904,148035889,191102976,244140625,308915776,387420489,481890304,594823321,729000000,887503681,Sub,1291467969,1544804416,1838265625,60466176]);gsb.J9=BX(nX(Drb.NY,1),Qsb,6,15,[-1,-1,31,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5])};gsb.L9=function L9(a){var b,c,d;if(o3(a,0)>=0){c=s3(a,Gzb);d=B3(a,Gzb)}else{b=J3(a,1);c=s3(b,500000000);d=B3(b,500000000);d=i3(H3(d,1),j3(a,1))}return G3(H3(d,32),j3(c,Pzb))};gsb.M9=function M9(a,b){gsb.K9();var c,d,e,f,g,h,i,j,k,l,m,n,o,p;i=o3(a,0)<0;i&&(a=D3(a));if(o3(a,0)==0){switch(b){case 0:return '0';case 1:return '0.0';case 2:return '0.00';case 3:return '0.000';case 4:return Yub;case 5:return '0.00000';case 6:return '0.000000';default:n=new Erb.S7;b<0?(n.a+='0E+',n):(n.a+='0E',n);n.a+=b==_ub?'2147483648':''+-b;return n.a;}}k=18;l=tX(Drb.KY,iub,6,k+1,15,1);c=k;p=a;do{j=p;p=s3(p,10);l[--c]=N3(i3(48,K3(j,C3(p,10))))&Gsb}while(o3(p,0)!=0);e=K3(K3(K3(Drb.r3(k),Drb.r3(c)),Drb.r3(b)),1);if(b==0){i&&(l[--c]=45);return Erb.E7(l,c,k-c)}if(b>0&&o3(e,-6)>=0){if(o3(e,0)>=0){f=c+N3(e);for(h=k-1;h>=f;h--){l[h+1]=l[h]}l[++f]=46;i&&(l[--c]=45);return Erb.E7(l,c,k-c+1)}for(g=2;z3(Drb.r3(g),i3(D3(e),1));g++){l[--c]=48}l[--c]=46;l[--c]=48;i&&(l[--c]=45);return Erb.E7(l,c,k-c)}o=c+1;d=k;m=new Erb.T7;i&&(m.a+='-',m);if(d-o>=1){Erb.L7(m,l[c]);m.a+='.';m.a+=Erb.E7(l,c+1,k-c-1)}else{m.a+=Erb.E7(l,c,k-c)}m.a+='E';o3(e,0)>0&&(m.a+='+',m);m.a+=''+O3(e);return m.a};gsb.N9=function N9(a,b){gsb.K9();var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;B=a.e;o=a.d;e=a.a;if(B==0){switch(b){case 0:return '0';case 1:return '0.0';case 2:return '0.00';case 3:return '0.000';case 4:return Yub;case 5:return '0.00000';case 6:return '0.000000';default:w=new Erb.S7;b<0?(w.a+='0E+',w):(w.a+='0E',w);w.a+=-b;return w.a;}}t=o*10+1+7;u=tX(Drb.KY,iub,6,t+1,15,1);c=t;if(o==1){h=e[0];if(h<0){H=j3(Drb.r3(h),Pzb);do{p=H;H=s3(H,10);u[--c]=48+N3(K3(p,C3(H,10)))&Gsb}while(o3(H,0)!=0)}else{H=h;do{p=H;H=H/10|0;u[--c]=48+(p-H*10)&Gsb}while(H!=0)}}else{D=tX(Drb.NY,Qsb,6,o,15,1);G=o;Erb.Y7(e,0,D,0,G);I:while(true){A=0;for(j=G-1;j>=0;j--){F=i3(H3(A,32),j3(Drb.r3(D[j]),Pzb));r=gsb.L9(F);D[j]=N3(r);A=v3(N3(I3(r,32)))}s=N3(A);q=c;do{u[--c]=48+s%10&Gsb}while((s=s/10|0)!=0&&c!=0);d=9-q+c;for(i=0;i<d&&c>0;i++){u[--c]=48}l=G-1;for(;D[l]==0;l--){if(l==0){break I}}G=l+1}while(u[c]==48){++c}}n=B<0;g=t-c-b-1;if(b==0){n&&(u[--c]=45);return Erb.E7(u,c,t-c)}if(b>0&&g>=-6){if(g>=0){k=c+g;for(m=t-1;m>=k;m--){u[m+1]=u[m]}u[++k]=46;n&&(u[--c]=45);return Erb.E7(u,c,t-c+1)}for(l=2;l<-g+1;l++){u[--c]=48}u[--c]=46;u[--c]=48;n&&(u[--c]=45);return Erb.E7(u,c,t-c)}C=c+1;f=t;v=new Erb.T7;n&&(v.a+='-',v);if(f-C>=1){Erb.L7(v,u[c]);v.a+='.';v.a+=Erb.E7(u,c+1,t-c-1)}else{v.a+=Erb.E7(u,c,t-c)}v.a+='E';g>0&&(v.a+='+',v);v.a+=''+g;return v.a};gsb.O9=function O9(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;q=tX(Drb.NY,Qsb,6,d+1,15,1);r=tX(Drb.NY,Qsb,6,f+1,15,1);s=f;i=x6(e[f-1]);if(i!=0){gsb.D9(r,e,0,i);gsb.D9(q,c,0,i)}else{Erb.Y7(c,0,q,0,d);Erb.Y7(e,0,r,0,f)}j=r[s-1];l=b-1;m=d;while(l>=0){k=0;if(q[m]==j){k=-1}else{t=i3(H3(j3(Drb.r3(q[m]),Pzb),32),j3(Drb.r3(q[m-1]),Pzb));w=gsb.R9(t,j);k=N3(w);v=N3(I3(w,32));if(k!=0){o=0;A=0;u=false;++k;do{--k;if(u){break}o=C3(j3(Drb.r3(k),Pzb),j3(Drb.r3(r[s-2]),Pzb));A=i3(H3(Drb.r3(v),32),j3(Drb.r3(q[m-2]),Pzb));p=i3(j3(Drb.r3(v),Pzb),j3(Drb.r3(j),Pzb));x6(N3(J3(p,32)))<32?(u=true):(v=N3(p))}while(w3(P3(o,Qzb),P3(A,Qzb)))}}if(k!=0){g=gsb.S9(q,m-s,r,s,k);if(g!=0){--k;h=0;for(n=0;n<s;n++){h=i3(h,i3(j3(Drb.r3(q[m-s+n]),Pzb),j3(Drb.r3(r[n]),Pzb)));q[m-s+n]=N3(h);h=J3(h,32)}}}a[l]=k;--m;--l}if(i!=0){gsb.H9(r,s,q,0,i);return r}Erb.Y7(q,0,r,0,f);return q};gsb.P9=function P9(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;n=a.a;o=a.d;p=a.e;if(o==1){d=j3(Drb.r3(n[0]),Pzb);e=j3(Drb.r3(b),Pzb);f=s3(d,e);j=B3(d,e);p!=c&&(f=D3(f));p<0&&(j=D3(j));return BX(nX(Drb.F0,1),xub,21,0,[(gsb.T8(),o3(f,0)>=0?gsb.u9(f):gsb.e9(gsb.u9(D3(f)))),o3(j,0)>=0?gsb.u9(j):gsb.e9(gsb.u9(D3(j)))])}h=o;i=p==c?1:-1;g=tX(Drb.NY,Qsb,6,h,15,1);k=BX(nX(Drb.NY,1),Qsb,6,15,[gsb.Q9(g,n,o,b)]);l=new gsb.n9(i,h,g);m=new gsb.n9(p,1,k);gsb.X8(l);gsb.X8(m);return BX(nX(Drb.F0,1),xub,21,0,[l,m])};gsb.Q9=function Q9(a,b,c,d){var e,f,g,h,i,j,k;j=0;f=j3(Drb.r3(d),Pzb);for(h=c-1;h>=0;h--){k=G3(H3(j,32),j3(Drb.r3(b[h]),Pzb));if(o3(k,0)>=0){i=s3(k,f);j=B3(k,f)}else{e=J3(k,1);g=Drb.r3(d>>>1);i=s3(e,g);j=B3(e,g);j=i3(H3(j,1),j3(k,1));if((d&1)!=0){if(o3(i,j)<=0){j=K3(j,i)}else{if(A3(K3(i,j),f)){j=i3(j,K3(f,i));i=K3(i,1)}else{j=i3(j,K3(H3(f,1),i));i=K3(i,2)}}}}a[h]=N3(j3(i,Pzb))}return N3(j)};gsb.R9=function R9(a,b){var c,d,e,f,g;d=j3(Drb.r3(b),Pzb);if(o3(a,0)>=0){f=s3(a,d);g=B3(a,d)}else{c=J3(a,1);e=Drb.r3(b>>>1);f=s3(c,e);g=B3(c,e);g=i3(H3(g,1),j3(a,1));if((b&1)!=0){if(o3(f,g)<=0){g=K3(g,f)}else{if(A3(K3(f,g),d)){g=i3(g,K3(d,f));f=K3(f,1)}else{g=i3(g,K3(H3(d,1),f));f=K3(f,2)}}}}return G3(H3(g,32),j3(f,Pzb))};gsb.S9=function S9(a,b,c,d,e){var f,g,h;f=0;g=0;for(h=0;h<d;h++){f=(gsb.iab(),i3(C3(j3(Drb.r3(c[h]),Pzb),j3(Drb.r3(e),Pzb)),j3(v3(N3(f)),Pzb)));g=i3(K3(j3(Drb.r3(a[b+h]),Pzb),j3(f,Pzb)),g);a[b+h]=N3(g);g=I3(g,32);f=J3(f,32)}g=i3(K3(j3(Drb.r3(a[b+d]),Pzb),f),g);a[b+d]=N3(g);return N3(I3(g,32))};gsb.T9=function T9(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;g=a.e;i=b.e;if(g==0){return b}if(i==0){return a}f=a.d;h=b.d;if(f+h==2){c=j3(v3(a.a[0]),Pzb);d=j3(v3(b.a[0]),Pzb);if(g==i){k=i3(c,d);o=N3(k);n=N3(J3(k,32));return n==0?new gsb.l9(g,o):new gsb.n9(g,2,BX(nX(Drb.NY,1),Qsb,6,15,[o,n]))}return gsb.T8(),x3(g<0?K3(d,c):K3(c,d),0)?gsb.u9(g<0?K3(d,c):K3(c,d)):gsb.e9(gsb.u9(D3(g<0?K3(d,c):K3(c,d))))}else if(g==i){m=g;l=f>=h?gsb.U9(a.a,f,b.a,h):gsb.U9(b.a,h,a.a,f)}else{e=f!=h?f>h?1:-1:gsb.W9(a.a,b.a,f);if(e==0){return gsb.T8(),gsb.S8}if(e==1){m=g;l=gsb.Z9(a.a,f,b.a,h)}else{m=i;l=gsb.Z9(b.a,h,a.a,f)}}j=new gsb.n9(m,l.length,l);gsb.X8(j);return j};gsb.U9=function U9(a,b,c,d){var e;e=tX(Drb.NY,Qsb,6,b+1,15,1);gsb.V9(e,a,b,c,d);return e};gsb.V9=function V9(a,b,c,d,e){var f,g;f=i3(j3(Drb.r3(b[0]),Pzb),j3(Drb.r3(d[0]),Pzb));a[0]=N3(f);f=I3(f,32);if(c>=e){for(g=1;g<e;g++){f=i3(f,i3(j3(Drb.r3(b[g]),Pzb),j3(Drb.r3(d[g]),Pzb)));a[g]=N3(f);f=I3(f,32)}for(;g<c;g++){f=i3(f,j3(Drb.r3(b[g]),Pzb));a[g]=N3(f);f=I3(f,32)}}else{for(g=1;g<c;g++){f=i3(f,i3(j3(Drb.r3(b[g]),Pzb),j3(Drb.r3(d[g]),Pzb)));a[g]=N3(f);f=I3(f,32)}for(;g<e;g++){f=i3(f,j3(Drb.r3(d[g]),Pzb));a[g]=N3(f);f=I3(f,32)}}o3(f,0)!=0&&(a[g]=N3(f))};gsb.W9=function W9(a,b,c){var d;for(d=c-1;d>=0&&a[d]==b[d];d--);return d<0?0:z3(j3(Drb.r3(a[d]),Pzb),j3(Drb.r3(b[d]),Pzb))?-1:1};gsb.X9=function X9(a,b,c){var d,e;d=j3(Drb.r3(c),Pzb);for(e=0;o3(d,0)!=0&&e<b;e++){d=i3(d,j3(Drb.r3(a[e]),Pzb));a[e]=N3(d);d=I3(d,32)}return N3(d)};gsb.Y9=function Y9(a,b){var c,d,e,f,g,h,i,j,k,l;g=a.e;i=b.e;if(i==0){return a}if(g==0){return b.e==0?b:new gsb.n9(-b.e,b.d,b.a)}f=a.d;h=b.d;if(f+h==2){c=j3(v3(a.a[0]),Pzb);d=j3(v3(b.a[0]),Pzb);g<0&&(c=D3(c));i<0&&(d=D3(d));return gsb.T8(),x3(K3(c,d),0)?gsb.u9(K3(c,d)):gsb.e9(gsb.u9(D3(K3(c,d))))}e=f!=h?f>h?1:-1:gsb.W9(a.a,b.a,f);if(e==-1){l=-i;k=g==i?gsb.Z9(b.a,h,a.a,f):gsb.U9(b.a,h,a.a,f)}else{l=g;if(g==i){if(e==0){return gsb.T8(),gsb.S8}k=gsb.Z9(a.a,f,b.a,h)}else{k=gsb.U9(a.a,f,b.a,h)}}j=new gsb.n9(l,k.length,k);gsb.X8(j);return j};gsb.Z9=function Z9(a,b,c,d){var e;e=tX(Drb.NY,Qsb,6,b,15,1);gsb.$9(e,a,b,c,d);return e};gsb.$9=function $9(a,b,c,d,e){var f,g;f=0;for(g=0;g<e;g++){f=i3(f,K3(j3(Drb.r3(b[g]),Pzb),j3(Drb.r3(d[g]),Pzb)));a[g]=N3(f);f=I3(f,32)}for(;g<c;g++){f=i3(f,j3(Drb.r3(b[g]),Pzb));a[g]=N3(f);f=I3(f,32)}};gsb._9=function _9(){gsb._9=_3;new gsb.bab(34,(gsb.Bab(),gsb.xab));new gsb.bab(7,gsb.xab);new gsb.bab(16,gsb.xab);new gsb.bab(0,gsb.yab)};gsb.aab=function aab(){gsb._9();gsb.bab.call(this,4,(gsb.Bab(),gsb.yab))};gsb.bab=function bab(a,b){Hrb.anb(a>=0,'Digits < 0');Hrb.hnb(b,'null RoundingMode');this.a=a;this.b=b};Z3(82,1,{4:1,82:1},gsb.aab,gsb.bab);_.jb=function cab(a){return zY(a,82)&&a.a==this.a&&a.b==this.b};_.lb=function dab(){return this.a<<3|this.b.b};_.mb=function eab(){return 'precision='+this.a+' roundingMode='+this.b};_.a=0;Drb.G0=B5(82);gsb.iab=function iab(){gsb.iab=_3;var a,b;gsb.fab=tX(Drb.F0,xub,21,32,0,1);gsb.gab=tX(Drb.F0,xub,21,32,0,1);gsb.hab=BX(nX(Drb.NY,1),Qsb,6,15,[1,10,100,1000,Hsb,Bvb,1000000,10000000,100000000,Gzb]);a=1;for(b=0;b<=18;b++){gsb.fab[b]=(gsb.T8(),o3(a,0)>=0?gsb.u9(a):gsb.e9(gsb.u9(D3(a))));gsb.gab[b]=x3(H3(a,b),0)?gsb.u9(H3(a,b)):gsb.e9(gsb.u9(D3(H3(a,b))));a=C3(a,5)}for(;b<gsb.gab.length;b++){gsb.fab[b]=gsb.d9(gsb.fab[b-1],gsb.fab[1]);gsb.gab[b]=gsb.d9(gsb.gab[b-1],(gsb.T8(),gsb.Q8))}};gsb.jab=function jab(a,b){gsb.iab();var c,d,e,f,g,h,i,j,k;if(b.d>a.d){h=a;a=b;b=h}if(b.d<63){return gsb.pab(a,b)}g=(a.d&-2)<<4;j=gsb.i9(a,g);k=gsb.i9(b,g);d=gsb.Y9(a,gsb.g9(j,g));e=gsb.Y9(b,gsb.g9(k,g));i=gsb.jab(j,k);c=gsb.jab(d,e);f=gsb.jab(gsb.Y9(j,d),gsb.Y9(e,k));f=gsb.T9(gsb.T9(f,i),c);f=gsb.g9(f,g);i=gsb.g9(i,g<<1);return gsb.T9(gsb.T9(i,f),c)};gsb.kab=function kab(a,b,c,d,e){if(b==0||d==0){return}b==1?(e[d]=gsb.mab(e,c,d,a[0])):d==1?(e[b]=gsb.mab(e,a,b,c[0])):gsb.lab(a,c,e,b,d)};gsb.lab=function lab(a,b,c,d,e){var f,g,h,i;if(HY(a)===HY(b)&&d==e){gsb.sab(a,d,c);return}for(h=0;h<d;h++){g=0;f=a[h];for(i=0;i<e;i++){g=i3(i3(C3(j3(Drb.r3(f),Pzb),j3(Drb.r3(b[i]),Pzb)),j3(Drb.r3(c[h+i]),Pzb)),j3(v3(N3(g)),Pzb));c[h+i]=N3(g);g=J3(g,32)}c[h+e]=N3(g)}};gsb.mab=function mab(a,b,c,d){gsb.iab();var e,f;e=0;for(f=0;f<c;f++){e=i3(C3(j3(Drb.r3(b[f]),Pzb),j3(Drb.r3(d),Pzb)),j3(v3(N3(e)),Pzb));a[f]=N3(e);e=J3(e,32)}return N3(e)};gsb.nab=function nab(a,b){var c,d,e,f,g,h,i,j,k;j=a.e;if(j==0){return gsb.T8(),gsb.S8}d=a.d;c=a.a;if(d==1){e=C3(j3(Drb.r3(c[0]),Pzb),j3(Drb.r3(b),Pzb));i=N3(e);g=N3(J3(e,32));return g==0?new gsb.l9(j,i):new gsb.n9(j,2,BX(nX(Drb.NY,1),Qsb,6,15,[i,g]))}h=d+1;f=tX(Drb.NY,Qsb,6,h,15,1);f[d]=gsb.mab(f,c,d,b);k=new gsb.n9(j,h,f);gsb.X8(k);return k};gsb.oab=function oab(a,b){gsb.iab();return b<gsb.hab.length?gsb.nab(a,gsb.hab[b]):gsb.d9(a,gsb.rab(b))};gsb.pab=function pab(a,b){var c,d,e,f,g,h,i,j,k,l,m;d=a.d;f=b.d;h=d+f;i=a.e!=b.e?-1:1;if(h==2){k=C3(j3(v3(a.a[0]),Pzb),j3(v3(b.a[0]),Pzb));m=N3(k);l=N3(J3(k,32));return l==0?new gsb.l9(i,m):new gsb.n9(i,2,BX(nX(Drb.NY,1),Qsb,6,15,[m,l]))}c=a.a;e=b.a;g=tX(Drb.NY,Qsb,6,h,15,1);gsb.kab(c,d,e,f,g);j=new gsb.n9(i,h,g);gsb.X8(j);return j};gsb.qab=function qab(a,b){gsb.iab();var c,d;d=(gsb.T8(),gsb.O8);c=a;for(;b>1;b>>=1){(b&1)!=0&&(d=gsb.d9(d,c));c.d==1?(c=gsb.d9(c,c)):(c=new gsb.o9(gsb.sab(c.a,c.d,tX(Drb.NY,Qsb,6,c.d<<1,15,1))))}d=gsb.d9(d,c);return d};gsb.rab=function rab(a){gsb.iab();var b,c,d,e;b=IY(a);if(a<gsb.gab.length){return gsb.gab[b]}else if(a<=50){return gsb.f9((gsb.T8(),gsb.Q8),b)}else if(a<=1000){return gsb.g9(gsb.f9(gsb.fab[1],b),b)}if(a>1000000){throw h3(new Erb.K4('power of ten too big'))}if(a<=xsb){return gsb.g9(gsb.f9(gsb.fab[1],b),b)}d=gsb.f9(gsb.fab[1],xsb);e=d;c=u3(a-xsb);b=IY(a%xsb);while(o3(c,xsb)>0){e=gsb.d9(e,d);c=K3(c,xsb)}e=gsb.d9(e,gsb.f9(gsb.fab[1],b));e=gsb.g9(e,xsb);c=u3(a-xsb);while(o3(c,xsb)>0){e=gsb.g9(e,xsb);c=K3(c,xsb)}e=gsb.g9(e,b);return e};gsb.sab=function sab(a,b,c){var d,e,f,g,h;for(f=0;f<b;f++){d=0;for(h=f+1;h<b;h++){d=i3(i3(C3(j3(Drb.r3(a[f]),Pzb),j3(Drb.r3(a[h]),Pzb)),j3(Drb.r3(c[f+h]),Pzb)),j3(v3(N3(d)),Pzb));c[f+h]=N3(d);d=J3(d,32)}c[f+b]=N3(d)}gsb.F9(c,c,b<<1);d=0;for(e=0,g=0;e<b;++e,g++){d=i3(i3(C3(j3(Drb.r3(a[e]),Pzb),j3(Drb.r3(a[e]),Pzb)),j3(Drb.r3(c[g]),Pzb)),j3(v3(N3(d)),Pzb));c[g]=N3(d);d=J3(d,32);++g;d=i3(d,j3(Drb.r3(c[g]),Pzb));c[g]=N3(d);d=J3(d,32)}return c};gsb.Bab=function Bab(){gsb.Bab=_3;gsb.Aab=new gsb.Cab('UP',0);gsb.uab=new gsb.Cab('DOWN',1);gsb.tab=new gsb.Cab('CEILING',2);gsb.vab=new gsb.Cab('FLOOR',3);gsb.yab=new gsb.Cab('HALF_UP',4);gsb.wab=new gsb.Cab('HALF_DOWN',5);gsb.xab=new gsb.Cab('HALF_EVEN',6);gsb.zab=new gsb.Cab('UNNECESSARY',7)};gsb.Cab=function Cab(a,b){JA.call(this,a,b)};gsb.Dab=function Dab(){gsb.Bab();return BX(nX(Drb.H0,1),xub,65,0,[gsb.Aab,gsb.uab,gsb.tab,gsb.vab,gsb.yab,gsb.wab,gsb.xab,gsb.zab])};Z3(65,49,{4:1,28:1,49:1,65:1},gsb.Cab);Drb.H0=C5(65,gsb.Dab);hsb.Eab=function Eab(a,b){return Erb.f7(a.a,b.a)};hsb.Fab=function Fab(a){this.a=a};Z3(96,1,Rzb);_.rb=function Gab(a){return hsb.Eab(this,a)};_.jb=function Hab(a){var b;if(a===this){return true}if(!zY(a,96)){return false}b=a;return Erb.k7(this.a,b.a)};_.lb=function Iab(){return Erb.n7(this.a)};_.mb=function Jab(){return this.a};Drb.I0=B5(96);hsb.Kab=function Kab(){hsb.Kab=_3;Hrb.Pmb()};Z3(384,1,{});Drb.K0=B5(384);isb.Lab=function Lab(a,b){return _rb.VW(a.a,b)};isb.Mab=function Mab(a,b){return _rb.VW(a.a,b)};isb.Nab=function Nab(a){this.a=(_rb.PW(),new _rb.eX(a,_rb.KW()))};isb.Oab=function Oab(a){isb.Nab.call(this,a)};Z3(122,384,{},isb.Nab,isb.Oab);Drb.J0=B5(122);Krb.xib=function xib(a,b,c){var d;d=a.get(b);return d==null&&!a.containsKey(b)?c:d};Krb.yib=function yib(a,b,c){var d;d=a.get(b);return d!=null?d:a.put(b,c)};Krb.zib=function zib(a,b,c){return a.containsKey(b)?a.put(b,c):null};Krb.Aib=function Aib(a){return lsb.tmb(a.hc().ub(),lsb.Flb(new Krb.Cib,new Krb.Gib))};Krb.Pab=function Pab(a){a.hc().clear()};Krb.Qab=function Qab(a,b){var c,d,e;c=b.mc();e=b.nc();d=a.get(c);if(!(HY(e)===HY(d)||e!=null&&Erb.Lc(e,d))){return false}if(d==null&&!a.containsKey(c)){return false}return true};Krb.Rab=function Rab(a,b,c){var d,e,f;for(e=a.hc().sb();e.jc();){d=e.kc();f=d.mc();if(HY(b)===HY(f)||b!=null&&Erb.Lc(b,f)){if(c){d=new Krb.edb(d.mc(),d.nc());e.lc()}return d}}return null};Krb.Sab=function Sab(a){return a.size()==0};Krb.Tab=function Tab(a){return new Krb.ycb(a)};Krb.Uab=function Uab(a){return a.hc().size()};Krb.Vab=function Vab(a,b){return b===a?'(this Map)':b==null?zsb:e4(b)};Krb.Wab=function Wab(a){return new Krb.Kcb(a)};Krb.bbb=function bbb(a){return !a?null:a.nc()};Z3(378,1,Szb);_.getOrDefault=function cbb(a,b){var c;return c=this.get(a),c==null&&!this.containsKey(a)?b:c};_.putIfAbsent=function ibb(a,b){var c;return c=this.get(a),c!=null?c:this.put(a,b)};_.replace=function kbb(a,b){return this.containsKey(a)?this.put(a,b):null};_.clear=function Xab(){Krb.Pab(this)};_.gc=function Yab(a){return Krb.Qab(this,a)};_.containsKey=function Zab(a){return !!Krb.Rab(this,a,false)};_.containsValue=function $ab(a){var b,c,d;for(c=this.hc().sb();c.jc();){b=c.kc();d=b.nc();if(HY(a)===HY(d)||a!=null&&Erb.Lc(a,d)){return true}}return false};_.jb=function _ab(a){var b,c,d;if(a===this){return true}if(!zY(a,94)){return false}d=a;if(this.size()!=d.size()){return false}for(c=d.hc().sb();c.jc();){b=c.kc();if(!this.gc(b)){return false}}return true};_.get=function abb(a){return Krb.bbb(Krb.Rab(this,a,false))};_.lb=function dbb(){return Krb.Dfb(this.hc())};_.isEmpty=function ebb(){return Krb.Sab(this)};_.keySet=function fbb(){return Krb.Tab(this)};_.put=function gbb(a,b){throw h3(new Erb._7('Put not supported on this map'))};_.putAll=function hbb(a){var b,c;Hrb.gnb(a);for(c=a.hc().sb();c.jc();){b=c.kc();this.put(b.mc(),b.nc())}};_.remove=function jbb(a){return Krb.bbb(Krb.Rab(this,a,true))};_.size=function lbb(){return Krb.Uab(this)};_.mb=function mbb(){var a,b,c;c=new Krb.fjb(', ','{','}');for(b=this.hc().sb();b.jc();){a=b.kc();Krb.cjb(c,Krb.Vab(this,a.mc())+'='+Krb.Vab(this,a.nc()))}return !c.a?c.c:Hrb.rnb(c.e).length==0?c.a.a:c.a.a+(''+c.e)};_.values=function nbb(){return Krb.Wab(this)};Drb.$0=B5(378);Krb.obb=function obb(a){Krb.Abb(a)};Krb.pbb=function pbb(a,b){return EY(b)?Krb.vbb(a,Hrb.rnb(b)):!!Krb.Ghb(a.a,b)};Krb.qbb=function qbb(a,b){return Krb.rbb(b,a.c)||Krb.rbb(b,a.a)};Krb.rbb=function rbb(a,b){var c,d;for(d=b.sb();d.jc();){c=d.kc();if(Krb.rhb(a,c.nc())){return true}}return false};Krb.sbb=function sbb(a){return new Krb.Sbb(a)};Krb.tbb=function tbb(a,b){return EY(b)?Krb.ubb(a,Hrb.rnb(b)):Krb.bbb(Krb.Ghb(a.a,b))};Krb.ubb=function ubb(a,b){return b==null?Krb.bbb(Krb.Ghb(a.a,null)):Krb.aib(a.c,b)};Krb.vbb=function vbb(a,b){return b==null?!!Krb.Ghb(a.a,null):Krb._hb(a.c,b)};Krb.wbb=function wbb(a,b,c){return EY(b)?Krb.xbb(a,Hrb.rnb(b),c):Krb.Ihb(a.a,b,c)};Krb.xbb=function xbb(a,b,c){return b==null?Krb.Ihb(a.a,null,c):Krb.cib(a.c,b,c)};Krb.ybb=function ybb(a,b){return EY(b)?Krb.zbb(a,Hrb.rnb(b)):Krb.Jhb(a.a,b)};Krb.zbb=function zbb(a,b){return b==null?Krb.Jhb(a.a,null):Krb.dib(a.c,b)};Krb.Abb=function Abb(a){a.a=new Krb.Khb(a);a.c=new Krb.eib(a);++a.b};Krb.Bbb=function Bbb(a){return a.a.c+a.c.c};Krb.Cbb=function Cbb(){Krb.Abb(this)};Z3(265,378,Szb);_.clear=function Dbb(){Krb.obb(this)};_.containsKey=function Ebb(a){return Krb.pbb(this,a)};_.containsValue=function Fbb(a){return Krb.qbb(this,a)};_.hc=function Gbb(){return Krb.sbb(this)};_.get=function Hbb(a){return Krb.tbb(this,a)};_.put=function Ibb(a,b){return Krb.wbb(this,a,b)};_.remove=function Jbb(a){return Krb.ybb(this,a)};_.size=function Kbb(){return Krb.Bbb(this)};_.b=0;Drb.O0=B5(265);Krb.Xib=function Xib(a){return new Krb.ajb(a)};Krb.Yib=function Yib(a){var b;return lsb.tmb(a.ub(),(b=lsb.Dlb(new lsb.amb,lsb.qlb(new lsb.Ylb,new lsb.$lb,new lsb.mmb,new lsb.nmb,BX(nX(Drb.Z1,1),xub,79,0,[(lsb.vlb(),lsb.ulb),lsb.tlb]))),lsb.zlb(b,new lsb.dmb)))};Z3(379,42,Tzb);_.tb=function Obb(){return new Krb.ajb(this)};_.jb=function Lbb(a){var b;if(a===this){return true}if(!zY(a,74)){return false}b=a;if(b.size()!=this.size()){return false}return Krb.Xh(this,b)};_.lb=function Mbb(){return Krb.Dfb(this)};_.removeAll=function Nbb(a){var b,c,d,e;Hrb.gnb(a);e=this.size();if(e<a.size()){for(b=this.sb();b.jc();){c=b.kc();a.contains(c)&&b.lc()}}else{for(d=a.sb();d.jc();){c=d.kc();this.remove(c)}}return e!=this.size()};Drb.d1=B5(379);Krb.Pbb=function Pbb(a){Krb.Abb(a.a)};Krb.Qbb=function Qbb(a,b){if(zY(b,73)){return Krb.Qab(a.a,b)}return false};Krb.Rbb=function Rbb(a){return Krb.Bbb(a.a)};Krb.Sbb=function Sbb(a){this.a=a};Z3(120,379,Tzb,Krb.Sbb);_.clear=function Tbb(){Krb.Pbb(this)};_.contains=function Ubb(a){return Krb.Qbb(this,a)};_.sb=function Vbb(){return new Krb.acb(this.a)};_.remove=function Wbb(a){var b;if(Krb.Qbb(this,a)){b=a.mc();Krb.ybb(this.a,b);return true}return false};_.size=function Xbb(){return Krb.Rbb(this)};Drb.N0=B5(120);Krb.tib=function tib(a,b){Hrb.gnb(b);while(a.jc()){lsb.Cmb(b,a.kc())}};Krb.uib=function uib(){throw h3(new Erb.$7)};Krb.Ybb=function Ybb(a){a.e=new Krb.iib(a.f.c);a.a=a.e;a.b=Krb.Zbb(a);a.d=a.f.b};Krb.Zbb=function Zbb(a){if(a.a.jc()){return true}if(a.a!=a.e){return false}a.a=new Krb.Nhb(a.f.a);return a.a.jc()};Krb.$bb=function $bb(a){return a.b};Krb._bb=function _bb(a){var b;Hrb.dnb(a.f.b,a.d);Hrb.enb(a.b);a.c=a.a;b=a.a.kc();a.b=Krb.Zbb(a);return b};Krb.acb=function acb(a){this.f=a;Krb.Ybb(this)};Z3(266,1,{},Krb.acb);_.ic=function bcb(a){Krb.tib(this,a)};_.kc=function dcb(){return Krb._bb(this)};_.jc=function ccb(){return Krb.$bb(this)};_.lc=function ecb(){Hrb.knb(!!this.c);Hrb.dnb(this.f.b,this.d);this.c.lc();this.c=null;this.b=Krb.Zbb(this);this.d=this.f.b};_.b=false;_.d=0;Drb.M0=B5(266);Krb.fcb=function fcb(a){};Krb.gcb=function gcb(a){return a.a<a.c.size()};Krb.hcb=function hcb(a){Hrb.enb(a.a<a.c.size());return a.c.getAtIndex(a.b=a.a++)};Krb.icb=function icb(a){Hrb.knb(a.b!=-1);a.c.removeAtIndex(a.b);a.a=a.b;a.b=-1};Krb.jcb=function jcb(a){this.c=a;Krb.fcb(this)};Z3(190,1,{},Krb.jcb);_.ic=function kcb(a){Krb.tib(this,a)};_.jc=function lcb(){return Krb.gcb(this)};_.kc=function mcb(){return Krb.hcb(this)};_.lc=function ncb(){Krb.icb(this)};_.a=0;_.b=-1;Drb.P0=B5(190);Krb.ocb=function ocb(a){Krb.icb(a)};Krb.pcb=function pcb(a,b){Krb.jcb.call(this,a);Hrb.inb(b,a.size());this.a=b};Z3(191,190,{},Krb.pcb);_.lc=function qcb(){Krb.ocb(this)};Drb.Q0=B5(191);Krb.rcb=function rcb(a,b,c){Hrb.jnb(b,c,a.size());this.c=a;this.a=b;this.b=c-b};Z3(132,77,yub,Krb.rcb);_.addAtIndex=function scb(a,b){Hrb.inb(a,this.b);this.c.addAtIndex(this.a+a,b);++this.b};_.getAtIndex=function tcb(a){Hrb.fnb(a,this.b);return this.c.getAtIndex(this.a+a)};_.removeAtIndex=function ucb(a){var b;Hrb.fnb(a,this.b);b=this.c.removeAtIndex(this.a+a);--this.b;return b};_.setAtIndex=function vcb(a,b){Hrb.fnb(a,this.b);return this.c.setAtIndex(this.a+a,b)};_.size=function wcb(){return this.b};_.a=0;_.b=0;Drb.R0=B5(132);Krb.xcb=function xcb(a){var b;b=a.a.hc().sb();return new Krb.Ecb(b)};Krb.ycb=function ycb(a){this.a=a};Z3(192,379,Tzb,Krb.ycb);_.clear=function zcb(){this.a.clear()};_.contains=function Acb(a){return this.a.containsKey(a)};_.sb=function Bcb(){return Krb.xcb(this)};_.remove=function Ccb(a){if(this.a.containsKey(a)){this.a.remove(a);return true}return false};_.size=function Dcb(){return this.a.size()};Drb.U0=B5(192);Krb.Ecb=function Ecb(a){this.a=a};Z3(193,1,{},Krb.Ecb);_.ic=function Fcb(a){Krb.tib(this,a)};_.jc=function Gcb(){return this.a.jc()};_.kc=function Hcb(){var a;a=this.a.kc();return a.mc()};_.lc=function Icb(){this.a.lc()};Drb.T0=B5(193);Krb.Jcb=function Jcb(a){var b;b=a.a.hc().sb();return new Krb.Rcb(b)};Krb.Kcb=function Kcb(a){this.a=a};Z3(147,42,wub,Krb.Kcb);_.clear=function Lcb(){this.a.clear()};_.contains=function Mcb(a){return this.a.containsValue(a)};_.sb=function Ncb(){return Krb.Jcb(this)};_.size=function Ocb(){return this.a.size()};Drb.W0=B5(147);Krb.Pcb=function Pcb(a){return a.a.jc()};Krb.Qcb=function Qcb(a){var b;b=a.a.kc();return b.nc()};Krb.Rcb=function Rcb(a){this.a=a};Z3(148,1,{},Krb.Rcb);_.ic=function Scb(a){Krb.tib(this,a)};_.jc=function Tcb(){return Krb.Pcb(this)};_.kc=function Ucb(){return Krb.Qcb(this)};_.lc=function Vcb(){this.a.lc()};Drb.V0=B5(148);Drb.F1=D5();Krb.Wcb=function Wcb(a){return a.c};Krb.Xcb=function Xcb(a){return a.d};Krb.Ycb=function Ycb(a,b){var c;c=a.d;a.d=b;return c};Krb.Zcb=function Zcb(a,b){this.c=a;this.d=b};Z3(134,1,{134:1,73:1});_.jb=function $cb(a){var b;if(!zY(a,73)){return false}b=a;return Krb.Kib(this.c,b.mc())&&Krb.Kib(this.d,b.nc())};_.mc=function _cb(){return Krb.Wcb(this)};_.nc=function adb(){return Krb.Xcb(this)};_.lb=function bdb(){return Lib(this.c)^Lib(this.d)};_.oc=function cdb(a){return Krb.Ycb(this,a)};_.mb=function ddb(){return this.c+'='+this.d};Drb.X0=B5(134);Krb.edb=function edb(a,b){Krb.Zcb.call(this,a,b)};Z3(121,134,{134:1,121:1,73:1},Krb.edb);Drb.Y0=B5(121);Z3(383,1,{73:1});_.jb=function fdb(a){var b;if(!zY(a,73)){return false}b=a;return Krb.Kib(Hrb.rnb(this.b.value[0]),b.mc())&&Krb.Kib(Krb.oib(this),b.nc())};_.lb=function gdb(){return Lib(Hrb.rnb(this.b.value[0]))^Lib(Krb.oib(this))};_.mb=function hdb(){return Hrb.rnb(this.b.value[0])+'='+Krb.oib(this)};Drb.Z0=B5(383);Krb.idb=function idb(a,b){var c,d;c=b.mc();d=Krb.kjb(a,c);return !!d&&Krb.Kib(d.d,b.nc())};Krb.jdb=function jdb(a,b){var c;c=b;return !!Krb.kjb(a,c)};Krb.kdb=function kdb(a,b){var c;c=b;return Krb.bbb(Krb.kjb(a,c))};Krb.ldb=function ldb(a){return new Krb.ydb(a)};Z3(381,378,Szb);_.gc=function mdb(a){return Krb.idb(this,a)};_.containsKey=function ndb(a){return Krb.jdb(this,a)};_.hc=function odb(){return new Krb.sdb(this)};_.get=function pdb(a){return Krb.kdb(this,a)};_.keySet=function qdb(){return Krb.ldb(this)};Drb.c1=B5(381);Krb.rdb=function rdb(a){return new Krb.Hjb(a.b)};Krb.sdb=function sdb(a){this.b=a};Z3(198,379,Tzb,Krb.sdb);_.contains=function tdb(a){return zY(a,73)&&Krb.idb(this.b,a)};_.sb=function udb(){return Krb.rdb(this)};_.remove=function vdb(a){var b;if(zY(a,73)){b=a;return Krb.rjb(this.b,b)}return false};_.size=function wdb(){return this.b.c};Drb._0=B5(198);Krb.Zib=function Zib(a){return new Krb.bjb(a)};Krb.xdb=function xdb(a){var b;b=new Krb.Hjb((new Krb.Njb(a.a)).b);return new Krb.Hdb(b)};Krb.ydb=function ydb(a){this.a=a};Z3(115,379,Tzb,Krb.ydb);_.tb=function Edb(){return new Krb.bjb(this)};_.clear=function zdb(){Krb.ijb(this.a)};_.contains=function Adb(a){return Krb.jdb(this.a,a)};_.sb=function Bdb(){return Krb.xdb(this)};_.remove=function Cdb(a){if(Krb.jdb(this.a,a)){Krb.qjb(this.a,a);return true}return false};_.size=function Ddb(){return this.a.c};Drb.b1=B5(115);Krb.Fdb=function Fdb(a){return Krb.gcb(a.a.a)};Krb.Gdb=function Gdb(a){var b;b=Krb.Fjb(a.a);return b.mc()};Krb.Hdb=function Hdb(a){this.a=a};Z3(116,1,{},Krb.Hdb);_.ic=function Idb(a){Krb.tib(this,a)};_.jc=function Jdb(){return Krb.Fdb(this)};_.kc=function Kdb(){return Krb.Gdb(this)};_.lc=function Ldb(){Krb.Gjb(this.a)};Drb.a1=B5(116);Krb.Mdb=function Mdb(a,b){Krb.Ndb(a,b);return true};Krb.Ndb=function Ndb(a,b){Hrb.gnb(b);xX(a.a,a.c,b);a.c=a.c+1&a.a.length-1;Krb.Qdb(a)};Krb.Odb=function Odb(a,b){if(b==null){return false}while(a.a!=a.b){if(Erb.Lc(b,Krb.keb(a))){return true}}return false};Krb.Pdb=function Pdb(a,b,c){var d,e,f;f=a.a.length-1;for(e=a.b,d=0;d<c;e=e+1&f,++d){xX(b,d,a.a[e])}};Krb.Qdb=function Qdb(a){var b,c,d;if(a.b!=a.c){return}d=a.a.length;c=v6($wnd.Math.max(8,d))<<1;if(a.b!=0){b=Hrb.Gmb(a.a,c);Krb.Pdb(a,b,d);a.a=b;a.b=0}else{Hrb.Mmb(a.a,c)}a.c=d};Krb.Rdb=function Rdb(a){return a.b==a.c};Krb.Sdb=function Sdb(a){return new Krb.meb(a)};Krb.Tdb=function Tdb(a){var b;b=a.a[a.b];if(b==null){return null}xX(a.a,a.b,null);a.b=a.b+1&a.a.length-1;return b};Krb.Udb=function Udb(a,b){if(Krb.Odb(a,b)){Krb.leb(a);return true}return false};Krb.Vdb=function Vdb(a,b){var c,d,e,f;d=a.a.length-1;c=b-a.b&d;f=a.c-b&d;e=a.c-a.b&d;Krb._db(c<e);if(c>=f){Krb.Wdb(a,b);return -1}else{Krb.Xdb(a,b);return 1}};Krb.Wdb=function Wdb(a,b){var c,d;c=a.a.length-1;a.c=a.c-1&c;while(b!=a.c){d=b+1&c;xX(a.a,b,a.a[d]);b=d}xX(a.a,a.c,null)};Krb.Xdb=function Xdb(a,b){var c,d;c=a.a.length-1;while(b!=a.b){d=b-1&c;xX(a.a,b,a.a[d]);b=d}xX(a.a,a.b,null);a.b=a.b+1&c};Krb.Ydb=function Ydb(a){return a.c-a.b&a.a.length-1};Krb.Zdb=function Zdb(){this.a=tX(Drb.v0,Bsb,1,8,5,1)};Krb._db=function _db(a){if(!a){throw h3(new Krb.qhb)}};Z3(340,42,{5:1,33:1,42:1,36:1},Krb.Zdb);_.add=function $db(a){return Krb.Mdb(this,a)};_.clear=function aeb(){if(this.b==this.c){return}this.a=tX(Drb.v0,Bsb,1,8,5,1);this.b=0;this.c=0};_.contains=function beb(a){return Krb.Odb(new Krb.meb(this),a)};_.isEmpty=function ceb(){return Krb.Rdb(this)};_.sb=function deb(){return Krb.Sdb(this)};_.remove=function eeb(a){return Krb.Udb(new Krb.meb(this),a)};_.size=function feb(){return Krb.Ydb(this)};_.tb=function geb(){return new Krb.ajb(this)};_.vb=function heb(a){var b;b=this.c-this.b&this.a.length-1;a.length<b&&(a=Hrb.Omb(new Array(b),a));Krb.Pdb(this,a,b);a.length>b&&Drb.wX(a,b,null);return a};_.b=0;_.c=0;Drb.f1=B5(340);Krb.ieb=function ieb(a){a.a=a.d.b;a.b=a.d.c};Krb.jeb=function jeb(a){return a.a!=a.b};Krb.keb=function keb(a){var b;Hrb.enb(a.a!=a.b);b=a.d.a[a.a];Krb._db(a.b==a.d.c&&b!=null);a.c=a.a;a.a=a.a+1&a.d.a.length-1;return b};Krb.leb=function leb(a){Hrb.knb(a.c>=0);if(Krb.Vdb(a.d,a.c)<0){a.a=a.a-1&a.d.a.length-1;a.b=a.d.c}a.c=-1};Krb.meb=function meb(a){this.d=a;Krb.ieb(this)};Z3(168,1,{},Krb.meb);_.ic=function neb(a){Krb.tib(this,a)};_.jc=function oeb(){return Krb.jeb(this)};_.kc=function peb(){return Krb.keb(this)};_.lc=function qeb(){Krb.leb(this)};_.a=0;_.b=0;_.c=-1;Drb.e1=B5(168);Krb.reb=function reb(a){};Krb.seb=function seb(a){return a.a<a.c.a.length};Krb.teb=function teb(a){Hrb.enb(a.a<a.c.a.length);a.b=a.a++;return a.c.a[a.b]};Krb.ueb=function ueb(a){this.c=a;Krb.reb(this)};Z3(19,1,{},Krb.ueb);_.ic=function veb(a){Krb.tib(this,a)};_.jc=function web(){return Krb.seb(this)};_.kc=function xeb(){return Krb.teb(this)};_.lc=function yeb(){Hrb.knb(this.b!=-1);Krb.Qi(this.c,this.a=this.b);this.b=-1};_.a=0;_.b=-1;Drb.g1=B5(19);Krb.zeb=function zeb(a,b,c){var d;Hrb.anb(b<=c,b+' > '+c);d=Hrb.rnb(a).length;Hrb.bnb(b,b,d)};Krb.Aeb=function Aeb(a,b){Hrb.cnb(b);return Krb.Eeb(a,tX(Drb.JY,nub,6,b,15,1),0,b)};Krb.Beb=function Beb(a,b){Hrb.cnb(b);return Krb.Eeb(a,tX(Drb.LY,Osb,6,b,15,1),0,b)};Krb.Ceb=function Ceb(a,b){Hrb.cnb(b);return Krb.Eeb(a,tX(Drb.NY,Qsb,6,b,15,1),0,b)};Krb.Deb=function Deb(a,b){Hrb.cnb(b);return Krb.Eeb(a,tX(Drb.b3,hub,6,b,15,1),0,b)};Krb.Eeb=function Eeb(a,b,c,d){var e,f;f=Hrb.rnb(a).length;e=$wnd.Math.min(d,f)-c;Hrb.Fmb(a,c,b,0,e,true);return b};\nKrb.Feb=function Feb(a){Krb.Leb(a,a.length)};Krb.Geb=function Geb(a){Krb.Meb(a,a.length,-1)};Krb.Heb=function Heb(a){Krb.Neb(a,a.length)};Krb.Ieb=function Ieb(a){Krb.Oeb(a,a.length)};Krb.Jeb=function Jeb(a){Krb.Peb(a,a.length)};Krb.Keb=function Keb(a){Krb.Qeb(a,a.length)};Krb.Leb=function Leb(a,b){var c;for(c=0;c<b;++c){a[c]=-1}};Krb.Meb=function Meb(a,b,c){var d;for(d=0;d<b;++d){a[d]=c}};Krb.Neb=function Neb(a,b){var c;for(c=0;c<b;++c){a[c]=0}};Krb.Oeb=function Oeb(a,b){var c;for(c=0;c<b;++c){a[c]=2}};Krb.Peb=function Peb(a,b){var c;for(c=0;c<b;++c){a[c]=-1}};Krb.Qeb=function Qeb(a,b){var c;for(c=0;c<b;++c){a[c]=false}};Krb.Reb=function Reb(a){var b,c,d,e,f;f=1;for(c=a,d=0,e=c.length;d<e;++d){b=c[d];f=31*f+(b!=null?Erb.Pc(b):0);f=f|0}return f};Krb.Seb=function Seb(a,b,c,d){var e,f,g;for(e=b+1;e<c;++e){for(f=e;f>b&&d.qb(a[f-1],a[f])>0;--f){g=a[f];Drb.wX(a,f,a[f-1]);Drb.wX(a,f-1,g)}}};Krb.Teb=function Teb(a,b,c,d,e,f,g,h){var i;i=c;while(f<g){i>=d||b<c&&h.qb(a[b],a[i])<=0?xX(e,f++,a[b++]):xX(e,f++,a[i++])}};Krb.Ueb=function Ueb(a,b,c,d){var e;d=(Krb.lhb(),!d?Krb.khb:d);e=Hrb.rnb(a).slice(b,c);Krb.Veb(e,a,b,c,-b,d)};Krb.Veb=function Veb(a,b,c,d,e,f){var g,h,i,j;g=d-c;if(g<7){Krb.Seb(b,c,d,f);return}i=c+e;h=d+e;j=i+(h-i>>1);Krb.Veb(b,a,i,j,-e,f);Krb.Veb(b,a,j,h,-e,f);if(f.qb(a[j-1],a[j])<=0){while(c<d){xX(b,c++,a[i++])}return}Krb.Teb(a,i,j,h,b,c,d,f)};Krb.Web=function Web(a){Krb.Ueb(a,0,a.length,null)};Krb.Xeb=function Xeb(a,b,c){Hrb.bnb(0,b,a.length);Krb.Ueb(a,0,b,c)};Krb.Yeb=function Yeb(a,b){Krb.Ueb(a,0,a.length,b)};Krb.Zeb=function Zeb(){return Drb.H_};Krb.$eb=function $eb(){};Z3(350,$wnd.Function,{},Krb.$eb);_.pc=function _eb(a,b){return e6(a,b)};Krb.afb=function afb(){return Drb.H_};Krb.bfb=function bfb(){};Z3(395,$wnd.Function,{},Krb.bfb);_.qc=function cfb(a,b){return o3(a,b)<0?-1:o3(a,b)>0?1:0};Krb.dfb=function dfb(a,b){Hrb.fnb(b,a.a.length);return a.a[b]};Krb.efb=function efb(a){return a.a.length};Krb.ffb=function ffb(a,b){var c,d;d=a.a.length;b.length<d&&(b=Hrb.Omb(new Array(d),b));for(c=0;c<d;++c){xX(b,c,a.a[c])}b.length>d&&Drb.wX(b,d,null);return b};Krb.gfb=function gfb(a){Hrb.gnb(a);this.a=a};Z3(182,77,{4:1,33:1,42:1,77:1,36:1,72:1,108:1},Krb.gfb);_.contains=function hfb(a){return Krb.mi(this,a)!=-1};_.getAtIndex=function ifb(a){return Krb.dfb(this,a)};_.setAtIndex=function jfb(a,b){var c;c=(Hrb.fnb(a,this.a.length),this.a[a]);xX(this.a,a,b);return c};_.size=function kfb(){return Krb.efb(this)};_.toArray=function lfb(){return Krb.ffb(this,tX(Drb.v0,Bsb,1,this.a.length,5,1))};_.vb=function mfb(a){return Krb.ffb(this,a)};Drb.i1=B5(182);Krb.nfb=function nfb(){return Drb.H_};Krb.ofb=function ofb(){};Z3(51,$wnd.Function,{},Krb.ofb);_.pc=function pfb(a,b){return a-b};Krb.qfb=function qfb(a,b){var c;Krb.vfb(b);c=b/31|0;return c<a.a.length&&((a.a[c]|0)>>>b%31&1)==1};Krb.rfb=function rfb(a){var b,c;b=Krb.yfb(a.a);if(b==-1){return 0}c=a.a[b]|0;return b*31+(32-x6(c))};Krb.sfb=function sfb(a,b){var c,d,e;Krb.vfb(b);c=b/31|0;d=a.a.length;if(c>=d){return -1}e=(a.a[c]|0)&xsb<<b%31;while(e==0){if(++c>=d){return -1}e=a.a[c]|0}return c*31+y6(e)};Krb.tfb=function tfb(a,b){var c;Krb.vfb(b);c=b/31|0;Krb.zfb(a.a,c);a.a[c]=a.a[c]|0|1<<b%31};Krb.ufb=function ufb(){this.a=tX(Drb.NY,Qsb,6,0,15,1)};Krb.vfb=function vfb(a){if(a<0){throw h3(new Erb.M4('bitIndex < 0: '+a))}};Krb.yfb=function yfb(a){var b;b=a.length-1;for(;b>=0&&(a[b]|0)==0;--b);return b};Krb.zfb=function zfb(a,b){var c;c=b+1;c>a.length&&(Hrb.rnb(a).length=c)};Z3(146,1,{146:1},Krb.ufb);_.jb=function wfb(a){var b,c,d;if(this===a){return true}if(!zY(a,146)){return false}d=a;c=Krb.yfb(this.a);if(c!=Krb.yfb(d.a)){return false}for(b=0;b<=c;b++){if((this.a[b]|0)!=(d.a[b]|0)){return false}}return true};_.lb=function xfb(){var a,b,c,d;c=Krb.yfb(this.a);a=-2128831035^c;for(b=0;b<=c;b++){d=this.a[b]|0;a=a*Uzb&-1^d&255;a=a*Uzb&-1^d>>>8&255;a=a*Uzb&-1^d>>>16&255;a=a*Uzb&-1^d>>>24}return a};_.mb=function Afb(){var a,b;if(Krb.rfb(this)==0){return '{}'}b=new Erb.U7('{');a=Krb.sfb(this,0);b.a+=a;while((a=Krb.sfb(this,a+1))!=-1){b.a+=', ';b.a+=a}b.a+='}';return b.a};Drb.j1=B5(146);Krb.Dfb=function Dfb(a){var b,c,d;d=0;for(c=a.sb();c.jc();){b=c.kc();d=d+(b!=null?Erb.Pc(b):0);d=d|0}return d};Krb.Efb=function Efb(a){var b,c,d;d=1;for(c=a.sb();c.jc();){b=c.kc();d=31*d+(b!=null?Erb.Pc(b):0);d=d|0}return d};Krb.Ffb=function Ffb(a){return zY(a,108)?new Krb.fhb(a):new Krb.cgb(a)};Krb.Gfb=function Gfb(a){return new Krb.Zfb(a.b.sb())};Krb.Hfb=function Hfb(a){return a.b.toArray()};Krb.Ifb=function Ifb(a){this.b=a};Z3(156,1,{33:1,36:1},Krb.Ifb);_.tb=function Ufb(){return new Krb.ajb(this)};_.ub=function Vfb(){return new lsb.vmb(this.tb())};_.add=function Jfb(a){throw h3(new Erb.$7)};_.addAll=function Kfb(a){throw h3(new Erb.$7)};_.clear=function Lfb(){throw h3(new Erb.$7)};_.contains=function Mfb(a){return this.b.contains(a)};_.containsAll=function Nfb(a){return this.b.containsAll(a)};_.isEmpty=function Ofb(){return this.b.isEmpty()};_.sb=function Pfb(){return Krb.Gfb(this)};_.remove=function Qfb(a){throw h3(new Erb.$7)};_.removeAll=function Rfb(a){throw h3(new Erb.$7)};_.retainAll=function Sfb(a){throw h3(new Erb.$7)};_.size=function Tfb(){return this.b.size()};_.toArray=function Wfb(){return Krb.Hfb(this)};_.mb=function Xfb(){return e4(this.b)};Drb.l1=B5(156);Krb.Yfb=function Yfb(){throw h3(new Erb.$7)};Krb.Zfb=function Zfb(a){this.a=a};Z3(287,1,{},Krb.Zfb);_.ic=function $fb(a){Krb.tib(this,a)};_.jc=function _fb(){return this.a.jc()};_.kc=function agb(){return this.a.kc()};_.lc=function bgb(){Krb.Yfb()};Drb.k1=B5(287);Krb.cgb=function cgb(a){Krb.Ifb.call(this,a);this.a=a};Z3(157,156,{33:1,36:1,72:1},Krb.cgb);_.tb=function ngb(){return new Krb.ajb(this)};_.addAtIndex=function dgb(a,b){throw h3(new Erb.$7)};_.addAllAtIndex=function egb(a,b){throw h3(new Erb.$7)};_.jb=function fgb(a){return Erb.Lc(this.a,a)};_.getAtIndex=function ggb(a){return this.a.getAtIndex(a)};_.lb=function hgb(){return Erb.Pc(this.a)};_.indexOf=function igb(a){return this.a.indexOf(a)};_.isEmpty=function jgb(){return this.a.isEmpty()};_.lastIndexOf=function kgb(a){return this.a.lastIndexOf(a)};_.removeAtIndex=function lgb(a){throw h3(new Erb.$7)};_.setAtIndex=function mgb(a,b){throw h3(new Erb.$7)};_.subList=function ogb(a,b){return new Krb.cgb(this.a.subList(a,b))};Drb.m1=B5(157);Krb.pgb=function pgb(a,b){return a.c.containsKey(b)};Krb.qgb=function qgb(a,b){return a.c.get(b)};Krb.rgb=function rgb(){throw h3(new Erb.$7)};Krb.sgb=function sgb(a){this.c=a};Z3(284,1,Szb,Krb.sgb);_.getOrDefault=function zgb(a,b){var c;return c=this.c.get(a),c==null&&!this.c.containsKey(a)?b:c};_.putIfAbsent=function Fgb(a,b){var c;return c=this.c.get(a),c!=null?c:Krb.rgb()};_.replace=function Hgb(a,b){return this.c.containsKey(a)?Krb.rgb():null};_.clear=function tgb(){throw h3(new Erb.$7)};_.containsKey=function ugb(a){return Krb.pgb(this,a)};_.containsValue=function vgb(a){return this.c.containsValue(a)};_.hc=function wgb(){!this.a&&(this.a=new Krb.Qgb(this.c.hc()));return this.a};_.jb=function xgb(a){return Erb.Lc(this.c,a)};_.get=function ygb(a){return Krb.qgb(this,a)};_.lb=function Agb(){return Erb.Pc(this.c)};_.isEmpty=function Bgb(){return this.c.isEmpty()};_.keySet=function Cgb(){!this.b&&(this.b=new Krb.Lgb(this.c.keySet()));return this.b};_.put=function Dgb(a,b){return Krb.rgb()};_.putAll=function Egb(a){throw h3(new Erb.$7)};_.remove=function Ggb(a){throw h3(new Erb.$7)};_.size=function Igb(){return this.c.size()};_.mb=function Jgb(){return e4(this.c)};_.values=function Kgb(){!this.d&&(this.d=new Krb.Ifb(this.c.values()));return this.d};Drb.q1=B5(284);Krb.Lgb=function Lgb(a){Krb.Ifb.call(this,a)};Z3(158,156,Vzb,Krb.Lgb);_.tb=function Ogb(){return new Krb.ajb(this)};_.jb=function Mgb(a){return Erb.Lc(this.b,a)};_.lb=function Ngb(){return Erb.Pc(this.b)};Drb.s1=B5(158);Krb.Pgb=function Pgb(a,b){var c;for(c=0;c<b;++c){xX(a,c,new Krb.$gb(a[c]))}};Krb.Qgb=function Qgb(a){Krb.Lgb.call(this,a)};Z3(285,158,Vzb,Krb.Qgb);_.contains=function Rgb(a){return this.b.contains(a)};_.containsAll=function Sgb(a){return this.b.containsAll(a)};_.sb=function Tgb(){var a;a=this.b.sb();return new Krb.Vgb(a)};_.toArray=function Ugb(){var a;a=this.b.toArray();Krb.Pgb(a,a.length);return a};Drb.p1=B5(285);Krb.Vgb=function Vgb(a){this.a=a};Z3(288,1,{},Krb.Vgb);_.ic=function Wgb(a){Krb.tib(this,a)};_.kc=function Ygb(){return new Krb.$gb(this.a.kc())};_.jc=function Xgb(){return this.a.jc()};_.lc=function Zgb(){throw h3(new Erb.$7)};Drb.n1=B5(288);Krb.$gb=function $gb(a){this.a=a};Z3(195,1,{73:1},Krb.$gb);_.jb=function _gb(a){return this.a.jb(a)};_.mc=function ahb(){return this.a.mc()};_.nc=function bhb(){return this.a.nc()};_.lb=function chb(){return this.a.lb()};_.oc=function dhb(a){throw h3(new Erb.$7)};_.mb=function ehb(){return e4(this.a)};Drb.o1=B5(195);Krb.fhb=function fhb(a){Krb.cgb.call(this,a)};Z3(286,157,{33:1,36:1,72:1,108:1},Krb.fhb);Drb.r1=B5(286);Krb.ghb=function ghb(a,b){return e6(a.b,b.b)};Krb.hhb=function hhb(){};Z3(224,1,Psb,Krb.hhb);_.qb=function ihb(a,b){return Krb.ghb(a,b)};_.jb=function jhb(a){return this===a};Drb.t1=B5(224);Krb.lhb=function lhb(){Krb.lhb=_3;Krb.khb=new Krb.nhb};Krb.mhb=function mhb(a,b){return Hrb.gnb(a),Erb.Z4(a,(Hrb.gnb(b),b))};Krb.nhb=function nhb(){};Z3(317,1,Psb,Krb.nhb);_.qb=function ohb(a,b){return Krb.mhb(a,b)};_.jb=function phb(a){return this===a};Drb.u1=B5(317);Krb.qhb=function qhb(){Erb.aA.call(this)};Z3(223,26,Csb,Krb.qhb);Drb.v1=B5(223);Krb.rhb=function rhb(a,b){return HY(a)===HY(b)||a!=null&&Erb.Lc(a,b)};Krb.shb=function shb(a){var b;if(a==null){return 0}b=Erb.Pc(a);return b|0};Krb.thb=function thb(){Krb.Cbb.call(this)};Z3(76,265,{4:1,5:1,94:1},Krb.thb);Drb.w1=B5(76);Krb.uhb=function uhb(a,b){var c;c=Krb.wbb(a.a,b,a);return c==null};Krb.vhb=function vhb(){this.a=new Krb.thb};Z3(106,379,{4:1,5:1,33:1,42:1,36:1,106:1,74:1},Krb.vhb);_.add=function whb(a){return Krb.uhb(this,a)};_.clear=function xhb(){Krb.Abb(this.a)};_.contains=function yhb(a){return Krb.pbb(this.a,a)};_.isEmpty=function zhb(){return Krb.Bbb(this.a)==0};_.sb=function Ahb(){var a;return a=(new Krb.ycb(this.a)).a.hc().sb(),new Krb.Ecb(a)};_.remove=function Bhb(a){return Krb.ybb(this.a,a)!=null};_.size=function Chb(){return Krb.Bbb(this.a)};Drb.x1=B5(106);Krb.Dhb=function Dhb(a){a.a=Krb.Zhb()};Krb.Ehb=function Ehb(a,b){var c,d,e,f;for(d=b,e=0,f=d.length;e<f;++e){c=d[e];if(Krb.rhb(a,c.mc())){return c}}return null};Krb.Fhb=function Fhb(a,b){var c;c=Hrb.rnb(a.a.get(b));return c==null?Hrb.rnb(tX(Drb.v0,Bsb,1,0,5,1)):c};Krb.Ghb=function Ghb(a,b){return Krb.Ehb(b,Krb.Fhb(a,Krb.shb(b)))};Krb.Hhb=function Hhb(a){return new Krb.Nhb(a)};Krb.Ihb=function Ihb(a,b,c){var d,e,f,g;g=Krb.shb(b);e=(d=Hrb.rnb(a.a.get(g)),d==null?Hrb.rnb(tX(Drb.v0,Bsb,1,0,5,1)):d);if(e.length==0){a.a.set(g,e)}else{f=Krb.Ehb(b,e);if(f){return f.oc(c)}}xX(e,e.length,new Krb.edb(b,c));++a.c;++a.b.b;return null};Krb.Jhb=function Jhb(a,b){var c,d,e,f,g;f=Krb.shb(b);d=(c=Hrb.rnb(a.a.get(f)),c==null?Hrb.rnb(tX(Drb.v0,Bsb,1,0,5,1)):c);for(g=0;g<d.length;g++){e=d[g];if(Krb.rhb(b,e.mc())){if(d.length==1){Hrb.rnb(d).length=0;Krb.Shb(a.a,f)}else{Hrb.rnb(d).splice(g,1)}--a.c;++a.b.b;return e.nc()}}return null};Krb.Khb=function Khb(a){Krb.Dhb(this);this.b=a};Z3(320,1,{33:1},Krb.Khb);_.sb=function Lhb(){return Krb.Hhb(this)};_.c=0;Drb.z1=B5(320);Krb.Mhb=function Mhb(a){a.b=a.e.a.entries();a.a=Hrb.rnb(tX(Drb.v0,Bsb,1,0,5,1))};Krb.Nhb=function Nhb(a){this.e=a;Krb.Mhb(this)};Z3(209,1,{},Krb.Nhb);_.ic=function Ohb(a){Krb.tib(this,a)};_.kc=function Qhb(){return this.d=this.a[this.c++],this.d};_.jc=function Phb(){var a;if(this.c<this.a.length){return true}a=this.b.next();if(!a.done){this.a=Hrb.rnb(Hrb.rnb(a.value[1]));this.c=0;return true}return false};_.lc=function Rhb(){Krb.Jhb(this.e,this.d.mc());this.c!=0&&--this.c};_.c=0;_.d=null;Drb.y1=B5(209);Krb.Shb=function Shb(a,b){var c;c=Hrb.onb(a,Wzb);c.call(a,b)};Krb.Thb=function Thb(a,b){var c;c=Hrb.onb(a,Wzb);c.call(a,b)};Krb.Vhb=function Vhb(){Krb.Vhb=_3;Krb.Uhb=Krb.Xhb()};Krb.Whb=function Whb(){if(!Object.create||!Object.getOwnPropertyNames){return false}var a='__proto__';var b=Object.create(null);if(b[a]!==undefined){return false}var c=Object.getOwnPropertyNames(b);if(c.length!=0){return false}b[a]=42;if(b[a]!==42){return false}if(Object.getOwnPropertyNames(b).length==0){return false}return true};Krb.Xhb=function Xhb(){function b(){try{return (new Map).entries().next().done}catch(a){return false}}\nif(typeof Map==='function'&&Map.prototype.entries&&b()){return Map}else{return Krb.Yhb()}};Krb.Yhb=function Yhb(){function e(){this.obj=this.createObject()}\n;e.prototype.createObject=function(a){return Object.create(null)};e.prototype.get=function(a){return this.obj[a]};e.prototype.set=function(a,b){this.obj[a]=b};e.prototype[Wzb]=function(a){delete this.obj[a]};e.prototype.keys=function(){return Object.getOwnPropertyNames(this.obj)};e.prototype.entries=function(){var b=this.keys();var c=this;var d=0;return {next:function(){if(d>=b.length)return {done:true};var a=b[d++];return {value:[a,c.get(a)],done:false}}}};if(!Krb.Whb()){e.prototype.createObject=function(){return {}};e.prototype.get=function(a){return this.obj[':'+a]};e.prototype.set=function(a,b){this.obj[':'+a]=b};e.prototype[Wzb]=function(a){delete this.obj[':'+a]};e.prototype.keys=function(){var a=[];for(var b in this.obj){b.charCodeAt(0)==58&&a.push(b.substring(1))}return a}}return e};Krb.Zhb=function Zhb(){Krb.Vhb();return new Krb.Uhb};Krb.$hb=function $hb(a){a.a=Krb.Zhb()};Krb._hb=function _hb(a,b){return !Hrb.pnb(a.a.get(b))};Krb.aib=function aib(a,b){return a.a.get(b)};Krb.bib=function bib(a){return new Krb.iib(a)};Krb.cib=function cib(a,b,c){var d;d=a.a.get(b);a.a.set(b,Hrb.pnb(c)?null:c);if(Hrb.pnb(d)){++a.c;++a.b.b}else{++a.d}return d};Krb.dib=function dib(a,b){var c;c=a.a.get(b);if(Hrb.pnb(c)){++a.d}else{Krb.Thb(a.a,b);--a.c;++a.b.b}return c};Krb.eib=function eib(a){Krb.$hb(this);this.b=a};Z3(318,1,{33:1},Krb.eib);_.sb=function fib(){return Krb.bib(this)};_.c=0;_.d=0;Drb.C1=B5(318);Krb.gib=function gib(a){a.b=a.d.a.entries();a.a=a.b.next()};Krb.hib=function hib(a){a.c=a.a;a.a=a.b.next();return new Krb.pib(a.d,a.c,a.d.d)};Krb.iib=function iib(a){this.d=a;Krb.gib(this)};Z3(208,1,{},Krb.iib);_.ic=function jib(a){Krb.tib(this,a)};_.kc=function lib(){return Krb.hib(this)};_.jc=function kib(){return !this.a.done};_.lc=function mib(){Krb.dib(this.d,Hrb.rnb(this.c.value[0]))};Drb.A1=B5(208);Krb.nib=function nib(a){return Hrb.rnb(a.b.value[0])};Krb.oib=function oib(a){if(a.a.d!=a.c){return Krb.aib(a.a,Hrb.rnb(a.b.value[0]))}return Hrb.rnb(a.b.value[1])};Krb.pib=function pib(a,b,c){this.a=a;this.b=b;this.c=c};Z3(319,383,{73:1},Krb.pib);_.mc=function qib(){return Krb.nib(this)};_.nc=function rib(){return Krb.oib(this)};_.oc=function sib(a){return Krb.cib(this.a,Hrb.rnb(this.b.value[0]),a)};_.c=0;Drb.B1=B5(319);jsb.hlb=function hlb(a,b){Hrb.gnb(b);return new jsb.nlb(a,b)};jsb.ilb=function ilb(a,b,c){return b.sc(a.sc(c))};Krb.Bib=function Bib(a,b){return Hrb.gnb(b),new jsb.nlb(a,b)};Krb.Cib=function Cib(){};Z3(252,1,{},Krb.Cib);_.rc=function Dib(a){return Krb.Bib(this,a)};_.sc=function Eib(a){return a.mc()};Drb.D1=B5(252);Krb.Fib=function Fib(a,b){return Hrb.gnb(b),new jsb.nlb(a,b)};Krb.Gib=function Gib(){};Z3(253,1,{},Krb.Gib);_.rc=function Hib(a){return Krb.Fib(this,a)};_.sc=function Iib(a){return a.nc()};Drb.E1=B5(253);Krb.Jib=function Jib(){Erb.aA.call(this)};Z3(342,26,Csb,Krb.Jib);Drb.G1=B5(342);Krb.Kib=function Kib(a,b){return HY(a)===HY(b)||a!=null&&Erb.Lc(a,b)};function Lib(a){return a!=null?Erb.Pc(a):0}\nKrb.Mib=function Mib(a){if(a==null){throw h3(new Erb.V6)}return a};Krb.Qib=function Qib(){Krb.Qib=_3;var a,b,c,d;Krb.Nib=tX(Drb.LY,Osb,6,25,15,1);Krb.Oib=tX(Drb.LY,Osb,6,33,15,1);d=1.52587890625E-5;for(b=32;b>=0;b--){Krb.Oib[b]=d;d*=0.5}c=1;for(a=24;a>=0;a--){Krb.Nib[a]=c;c*=0.5}};Krb.Rib=function Rib(a){return Krb.Tib(a,26)*1.4901161193847656E-8+Krb.Tib(a,27)*1.1102230246251565E-16};Krb.Sib=function Sib(a,b){var c,d;Hrb._mb(b>0);if((b&-b)==b){return IY(b*Krb.Tib(a,31)*4.656612873077393E-10)}do{c=Krb.Tib(a,31);d=c%b}while(c-d+(b-1)<0);return IY(d)};Krb.Tib=function Tib(a,b){var c,d,e,f,g,h;f=a.a*Xzb+a.b*1502;h=a.b*Xzb+11;c=$wnd.Math.floor(h*Yzb);f+=c;h-=c*Zzb;f%=Zzb;a.a=f;a.b=h;if(b<=24){return $wnd.Math.floor(a.a*Krb.Nib[b])}else{e=a.a*(1<<b-24);g=$wnd.Math.floor(a.b*Krb.Oib[b]);d=e+g;d>=vzb&&(d-=Vsb);return d}};Krb.Uib=function Uib(a,b,c){a.a=b^1502;a.b=c^Xzb};Krb.Vib=function Vib(){Krb.Qib();var a,b,c;c=Krb.Pib+++Date.now();a=IY($wnd.Math.floor(c*Yzb))&Rsb;b=IY(c-a*Zzb);this.a=a^1502;this.b=b^Xzb};Krb.Wib=function Wib(a){Krb.Qib();Krb.Uib(this,N3(j3(I3(a,24),Rsb)),N3(j3(a,Rsb)))};Z3(56,1,{},Krb.Vib,Krb.Wib);_.a=0;_.b=0;Krb.Pib=0;Drb.H1=B5(56);Krb.$ib=function $ib(a,b){Krb._ib(a);a.b.ic(b)};Krb._ib=function _ib(a){if(!a.b){a.b=a.a.sb();v3(a.a.size())}};Krb.ajb=function ajb(a){this.a=(Hrb.gnb(a),a)};Z3(58,1,{},Krb.ajb);Drb.J1=B5(58);Krb.bjb=function bjb(a){Krb.ajb.call(this,a)};Z3(159,58,{},Krb.bjb);Drb.I1=B5(159);Krb.cjb=function cjb(a,b){!a.a?(a.a=new Erb.U7(a.d)):Erb.P7(a.a,a.b);Erb.O7(a.a,b);return a};Krb.djb=function djb(a){return !a.a?a.c:Hrb.rnb(a.e).length==0?a.a.a:a.a.a+(''+a.e)};Krb.ejb=function ejb(){Krb.fjb.call(this,'#','','')};Krb.fjb=function fjb(a,b,c){this.b=a;this.d=b;this.e=c;this.c=this.d+(''+this.e)};Z3(124,1,{},Krb.ejb,Krb.fjb);_.mb=function gjb(){return Krb.djb(this)};Drb.K1=B5(124);Krb.hjb=function hjb(a){};Krb.ijb=function ijb(a){a.b=null;a.c=0};Krb.jjb=function jjb(a){return new Krb.Njb(a)};Krb.kjb=function kjb(a,b){var c,d,e;e=a.b;while(e){c=a.a.qb(b,e.c);if(c==0){return e}d=c<0?0:1;e=e.a[d]}return null};Krb.ljb=function ljb(a,b,c,d,e,f,g,h){var i,j;if(!d){return}i=d.a[0];!!i&&Krb.ljb(a,b,c,i,e,f,g,h);Krb.mjb(a,c,d.c,e,f,g,h)&&b.add(d);j=d.a[1];!!j&&Krb.ljb(a,b,c,j,e,f,g,h)};Krb.mjb=function mjb(a,b,c,d,e,f,g){var h,i;if(b.tc()&&(i=a.a.qb(c,d),i<0||!e&&i==0)){return false}if(b.uc()&&(h=a.a.qb(c,f),h>0||!g&&h==0)){return false}return true};Krb.njb=function njb(a,b,c,d){var e,f;if(!b){return c}else{e=a.a.qb(c.c,b.c);if(e==0){d.d=Krb.Ycb(b,c.d);d.b=true;return b}f=e<0?0:1;b.a[f]=Krb.njb(a,b.a[f],c,d);if(Krb.ojb(b.a[f])){if(Krb.ojb(b.a[1-f])){b.b=true;b.a[0].b=false;b.a[1].b=false}else{Krb.ojb(b.a[f].a[f])?(b=Krb.vjb(b,1-f)):Krb.ojb(b.a[f].a[1-f])&&(b=Krb.ujb(b,1-f))}}}return b};Krb.ojb=function ojb(a){return !!a&&a.b};Krb.pjb=function pjb(a,b,c){var d,e;d=new Krb.Qjb(b,c);e=new Krb.Sjb;a.b=Krb.njb(a,a.b,d,e);e.b||++a.c;a.b.b=false;return e.d};Krb.qjb=function qjb(a,b){var c,d;c=b;d=new Krb.Sjb;Krb.sjb(a,c,d);return d.d};Krb.rjb=function rjb(a,b){var c;c=new Krb.Sjb;c.c=true;c.d=b.nc();return Krb.sjb(a,b.mc(),c)};Krb.sjb=function sjb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;if(!a.b){return false}g=null;m=null;i=new Krb.Qjb(null,null);e=1;i.a[1]=a.b;l=i;while(l.a[e]){j=e;h=m;m=l;l=l.a[e];d=a.a.qb(b,l.c);e=d<0?0:1;d==0&&(!c.c||Krb.Kib(l.d,c.d))&&(g=l);if(!(!!l&&l.b)&&!Krb.ojb(l.a[e])){if(Krb.ojb(l.a[1-e])){m=m.a[j]=Krb.vjb(l,e)}else if(!Krb.ojb(l.a[1-e])){n=m.a[1-j];if(n){if(!Krb.ojb(n.a[1-j])&&!Krb.ojb(n.a[j])){m.b=false;n.b=true;l.b=true}else{f=h.a[1]==m?1:0;Krb.ojb(n.a[j])?(h.a[f]=Krb.ujb(m,j)):Krb.ojb(n.a[1-j])&&(h.a[f]=Krb.vjb(m,j));l.b=h.a[f].b=true;h.a[f].a[0].b=false;h.a[f].a[1].b=false}}}}}if(g){c.b=true;c.d=g.d;if(l!=g){k=new Krb.Qjb(l.c,l.d);Krb.tjb(a,i,g,k);m==g&&(m=k)}m.a[m.a[1]==l?1:0]=l.a[!l.a[0]?1:0];--a.c}a.b=i.a[1];!!a.b&&(a.b.b=false);return c.b};Krb.tjb=function tjb(a,b,c,d){var e,f;f=b;e=f.c==null||a.a.qb(c.c,f.c)>0?1:0;while(f.a[e]!=c){f=f.a[e];e=a.a.qb(c.c,f.c)>0?1:0}f.a[e]=d;d.b=c.b;d.a[0]=c.a[0];d.a[1]=c.a[1];c.a[0]=null;c.a[1]=null};Krb.ujb=function ujb(a,b){var c;c=1-b;a.a[c]=Krb.vjb(a.a[c],c);return Krb.vjb(a,b)};Krb.vjb=function vjb(a,b){var c,d;c=1-b;d=a.a[c];a.a[c]=d.a[b];d.a[b]=a;a.b=true;d.b=false;return d};Krb.wjb=function wjb(a){return a.c};Krb.xjb=function xjb(){Krb.yjb.call(this,null)};Krb.yjb=function yjb(a){Krb.hjb(this);this.b=null;this.a=(Krb.lhb(),!a?Krb.khb:a)};Z3(59,381,{4:1,94:1},Krb.xjb,Krb.yjb);_.clear=function zjb(){Krb.ijb(this)};_.hc=function Ajb(){return Krb.jjb(this)};_.put=function Bjb(a,b){return Krb.pjb(this,a,b)};_.remove=function Cjb(a){return Krb.qjb(this,a)};_.size=function Djb(){return Krb.wjb(this)};_.c=0;Drb.T1=B5(59);Krb.Ejb=function Ejb(a){return Krb.gcb(a.a)};Krb.Fjb=function Fjb(a){return a.b=Krb.hcb(a.a)};Krb.Gjb=function Gjb(a){Krb.icb(a.a);Krb.rjb(a.c,a.b);a.b=null};Krb.Hjb=function Hjb(a){Krb.Ijb.call(this,a,(Krb.Yjb(),Krb.Ujb))};Krb.Ijb=function Ijb(a,b){var c;this.c=a;c=new Krb.Yi;Krb.ljb(a,c,b,a.b,null,false,null,false);this.a=new Krb.pcb(c,0)};Z3(89,1,{},Krb.Hjb);_.ic=function Jjb(a){Krb.tib(this,a)};_.kc=function Ljb(){return Krb.Fjb(this)};_.jc=function Kjb(){return Krb.Ejb(this)};_.lc=function Mjb(){Krb.Gjb(this)};Drb.L1=B5(89);Krb.Njb=function Njb(a){this.a=a;Krb.sdb.call(this,a)};Z3(103,198,Tzb,Krb.Njb);_.clear=function Ojb(){Krb.ijb(this.a)};Drb.M1=B5(103);Krb.Pjb=function Pjb(a){a.a=tX(Drb.N1,Bsb,107,2,0,1)};Krb.Qjb=function Qjb(a,b){Krb.Rjb.call(this,a,b)};Krb.Rjb=function Rjb(a,b){Krb.edb.call(this,a,b);Krb.Pjb(this);this.b=true};Z3(107,121,{134:1,121:1,73:1,107:1},Krb.Qjb);_.b=false;Drb.N1=B5(107);Krb.Sjb=function Sjb(){};Z3(162,1,{},Krb.Sjb);_.mb=function Tjb(){return 'State: mv='+this.c+' value='+this.d+' done='+this.a+' found='+this.b};_.a=false;_.b=false;_.c=false;Drb.O1=B5(162);Krb.Yjb=function Yjb(){Krb.Yjb=_3;Krb.Ujb=new Krb.Zjb('All',0);Krb.Vjb=new Krb.bkb;Krb.Wjb=new Krb.dkb;Krb.Xjb=new Krb.gkb};Krb.Zjb=function Zjb(a,b){JA.call(this,a,b)};Krb.akb=function akb(){Krb.Yjb();return BX(nX(Drb.S1,1),xub,69,0,[Krb.Ujb,Krb.Vjb,Krb.Wjb,Krb.Xjb])};Z3(69,49,$zb,Krb.Zjb);_.tc=function $jb(){return false};_.uc=function _jb(){return false};Drb.S1=C5(69,Krb.akb);Krb.bkb=function bkb(){Krb.Zjb.call(this,'Head',1)};Z3(298,69,$zb,Krb.bkb);_.uc=function ckb(){return true};Drb.P1=C5(298,null);Krb.dkb=function dkb(){Krb.Zjb.call(this,'Range',2)};Z3(299,69,$zb,Krb.dkb);_.tc=function ekb(){return true};_.uc=function fkb(){return true};Drb.Q1=C5(299,null);Krb.gkb=function gkb(){Krb.Zjb.call(this,'Tail',3)};Z3(300,69,$zb,Krb.gkb);_.tc=function hkb(){return true};Drb.R1=C5(300,null);Krb.ikb=function ikb(a,b){return Krb.pjb(a.a,b,(Erb.Q4(),P4))==null};Krb.jkb=function jkb(a){Krb.ijb(a.a)};Krb.kkb=function kkb(a,b){return Krb.jdb(a.a,b)};Krb.lkb=function lkb(a){var b;return b=new Krb.Hjb((new Krb.Njb((new Krb.ydb(a.a)).a)).b),new Krb.Hdb(b)};Krb.mkb=function mkb(a){return a.a.c};Krb.nkb=function nkb(){this.a=new Krb.xjb};Krb.okb=function okb(a){this.a=new Krb.yjb(a)};Z3(133,379,{4:1,33:1,42:1,36:1,74:1},Krb.nkb,Krb.okb);_.tb=function vkb(){return new Krb.bjb(this)};_.add=function pkb(a){return Krb.ikb(this,a)};_.clear=function qkb(){Krb.jkb(this)};_.contains=function rkb(a){return Krb.kkb(this,a)};_.sb=function skb(){return Krb.lkb(this)};_.remove=function tkb(a){return Krb.qjb(this.a,a)!=null};_.size=function ukb(){return Krb.mkb(this)};Drb.U1=B5(133);Krb.wkb=function wkb(a,b){return Krb.Ei(a.a,b)};Krb.xkb=function xkb(a){return a.a.a.length};Krb.ykb=function ykb(a,b){return Krb.Xi(a.a,b)};Krb.zkb=function zkb(){this.a=new Krb.Yi};Krb.Ekb=function Ekb(a,b){if(a<0||a>=b){throw h3(new Erb.N4)}};Z3(310,77,{4:1,5:1,33:1,42:1,77:1,36:1,72:1,108:1},Krb.zkb);_.addAtIndex=function Akb(a,b){Krb.Ekb(a,this.a.a.length+1);Krb.Di(this.a,a,b)};_.add=function Bkb(a){return Krb.wkb(this,a)};_.addAllAtIndex=function Ckb(a,b){Krb.Ekb(a,this.a.a.length+1);return Krb.Fi(this.a,a,b)};_.addAll=function Dkb(a){return Krb.Gi(this.a,a)};_.clear=function Fkb(){Hrb.Mmb(this.a.a,0)};_.contains=function Gkb(a){return Krb.Li(this.a,a,0)!=-1};_.containsAll=function Hkb(a){return Krb.Xh(this.a,a)};_.getAtIndex=function Ikb(a){Krb.Ekb(a,this.a.a.length);return Krb.Ji(this.a,a)};_.indexOf=function Jkb(a){return Krb.Li(this.a,a,0)};_.isEmpty=function Kkb(){return this.a.a.length==0};_.sb=function Lkb(){return new Krb.ueb(this.a)};_.lastIndexOf=function Mkb(a){return Krb.Oi(this.a,a)};_.removeAtIndex=function Nkb(a){Krb.Ekb(a,this.a.a.length);return Krb.Qi(this.a,a)};_.removeAll=function Okb(a){return Krb.Yh(this.a,a)};_.wb=function Pkb(a,b){Krb.Si(this.a,a,b)};_.setAtIndex=function Qkb(a,b){Krb.Ekb(a,this.a.a.length);return Krb.Ti(this.a,a,b)};_.size=function Rkb(){return Krb.xkb(this)};_.subList=function Skb(a,b){return new Krb.rcb(this.a,a,b)};_.toArray=function Tkb(){return Hrb.Emb(this.a.a)};_.vb=function Ukb(a){return Krb.ykb(this,a)};_.mb=function Vkb(){return Krb.Zh(this.a)};Drb.V1=B5(310);ksb.Wkb=function Wkb(a,b){if(b==null){throw h3(new Erb.V6)}return Krb.pbb(a.e,b)};ksb.Xkb=function Xkb(a){return new Krb.Sbb(a.e)};ksb.Ykb=function Ykb(a,b){if(b==null){throw h3(new Erb.V6)}return Krb.tbb(a.e,b)};ksb.Zkb=function Zkb(a,b,c){if(b==null||c==null){throw h3(new Erb.V6)}return Krb.wbb(a.e,b,c)};ksb.$kb=function $kb(){this.e=new Krb.thb};Z3(295,378,Szb);_.containsKey=function _kb(a){return ksb.Wkb(this,a)};_.containsValue=function alb(a){if(a==null){throw h3(new Erb.V6)}return Krb.qbb(this.e,a)};_.hc=function blb(){return ksb.Xkb(this)};_.get=function clb(a){return ksb.Ykb(this,a)};_.put=function dlb(a,b){return ksb.Zkb(this,a,b)};_.putIfAbsent=function elb(a,b){return ksb.Wkb(this,a)?this.get(a):this.put(a,b)};_.remove=function flb(a){if(a==null){throw h3(new Erb.V6)}return Krb.ybb(this.e,a)};_.replace=function glb(a,b){if(b==null){throw h3(new Erb.V6)}else return ksb.Wkb(this,a)?this.put(a,b):null};Drb.W1=B5(295);jsb.jlb=function jlb(){};Z3(251,1,{},jsb.jlb);_.rc=function klb(a){return Hrb.gnb(a),new jsb.nlb(this,a)};_.sc=function llb(a){return a};Drb.X1=B5(251);jsb.mlb=function mlb(a,b){return jsb.ilb(a.a,a.b,b)};jsb.nlb=function nlb(a,b){this.a=a;this.b=b};Z3(57,1,{},jsb.nlb);_.rc=function olb(a){return Hrb.gnb(a),new jsb.nlb(this,a)};_.sc=function plb(a){return jsb.mlb(this,a)};Drb.Y1=B5(57);lsb.qlb=function qlb(a,b,c,d,e){Hrb.gnb(a);Hrb.gnb(b);Hrb.gnb(c);Hrb.gnb(d);Hrb.gnb(e);return new lsb.ylb(a,b,c,d)};lsb.rlb=function rlb(a,b,c,d){Hrb.gnb(a);Hrb.gnb(b);Hrb.gnb(c);Hrb.gnb(d);return new lsb.ylb(a,b,c,new jsb.jlb)};lsb.vlb=function vlb(){lsb.vlb=_3;lsb.slb=new lsb.wlb('CONCURRENT',0);lsb.tlb=new lsb.wlb('IDENTITY_FINISH',1);lsb.ulb=new lsb.wlb('UNORDERED',2)};lsb.wlb=function wlb(a,b){JA.call(this,a,b)};lsb.xlb=function xlb(){lsb.vlb();return BX(nX(Drb.Z1,1),xub,79,0,[lsb.slb,lsb.tlb,lsb.ulb])};Z3(79,49,{4:1,28:1,49:1,79:1},lsb.wlb);Drb.Z1=C5(79,lsb.xlb);lsb.ylb=function ylb(a,b,c,d){this.d=a;this.a=b;this.b=c;this.c=d};Z3(138,1,{},lsb.ylb);Drb.$1=B5(138);lsb.zlb=function zlb(a,b){return new lsb.ylb(a.d,a.a,a.b,a.c.rc(b))};lsb.Alb=function Alb(a,b,c,d){a.a.vc(c,b.sc(d))};lsb.Blb=function Blb(){throw h3(new Erb.k6(\"Can't assign multiple values to the same key\"))};lsb.Clb=function Clb(a,b,c,d){var e,f;e=jsb.ilb(a.a,a.b,d);f=jsb.ilb(b.a,b.b,d);c.containsKey(e)?c.put(e,(c.get(e),lsb.Blb())):c.put(e,f)};lsb.Dlb=function Dlb(a,b){return new lsb.ylb(b.d,new lsb.gmb(b,a),b.b,b.c)};lsb.Elb=function Elb(a,b,c){return lsb.rlb(c,new lsb.jmb(a,b),new lsb.lmb,BX(nX(Drb.Z1,1),xub,79,0,[(lsb.vlb(),lsb.tlb)]))};lsb.Flb=function Flb(a,b){return lsb.zlb(lsb.Elb(Krb.Bib(a,new lsb.Vlb),Krb.Fib(b,new lsb.Vlb),new lsb.Qlb),new lsb.Slb)};lsb.Glb=function Glb(){};Z3(269,1,{},lsb.Glb);_.vc=function Hlb(a,b){a.add(b)};Drb._1=B5(269);lsb.Ilb=function Ilb(){};Z3(271,1,{},lsb.Ilb);_.wc=function Jlb(){return new Krb.Yi};Drb.a2=B5(271);lsb.Klb=function Klb(){};Z3(272,1,{},lsb.Klb);_.rc=function Llb(a){return Hrb.gnb(a),new jsb.nlb(this,a)};_.sc=function Mlb(a){return Krb.Mib(a)};Drb.b2=B5(272);lsb.Nlb=function Nlb(){};Z3(273,1,{},lsb.Nlb);_.rc=function Olb(a){return Hrb.gnb(a),new jsb.nlb(this,a)};_.sc=function Plb(a){return Krb.Ffb(a)};Drb.c2=B5(273);lsb.Qlb=function Qlb(){};Z3(274,1,{},lsb.Qlb);_.wc=function Rlb(){return new Krb.thb};Drb.d2=B5(274);lsb.Slb=function Slb(){};Z3(275,1,{},lsb.Slb);_.rc=function Tlb(a){return Hrb.gnb(a),new jsb.nlb(this,a)};_.sc=function Ulb(a){return new Krb.sgb(a)};Drb.e2=B5(275);lsb.Vlb=function Vlb(){};Z3(194,1,{},lsb.Vlb);_.rc=function Wlb(a){return Hrb.gnb(a),new jsb.nlb(this,a)};_.sc=function Xlb(a){return Krb.Mib(a)};Drb.f2=B5(194);lsb.Ylb=function Ylb(){};Z3(278,1,{},lsb.Ylb);_.wc=function Zlb(){return new Krb.vhb};Drb.g2=B5(278);lsb.$lb=function $lb(){};Z3(279,1,{},lsb.$lb);_.vc=function _lb(a,b){Krb.uhb(a,b)};Drb.h2=B5(279);lsb.amb=function amb(){};Z3(282,1,{},lsb.amb);_.rc=function bmb(a){return Hrb.gnb(a),new jsb.nlb(this,a)};_.sc=function cmb(a){return Krb.Mib(a)};Drb.i2=B5(282);lsb.dmb=function dmb(){};Z3(283,1,{},lsb.dmb);_.rc=function emb(a){return Hrb.gnb(a),new jsb.nlb(this,a)};_.sc=function fmb(a){return new Krb.Lgb(a)};Drb.j2=B5(283);lsb.gmb=function gmb(a,b){this.a=a;this.b=b};Z3(268,1,{},lsb.gmb);_.vc=function hmb(a,b){lsb.Alb(this.a,this.b,a,b)};Drb.k2=B5(268);lsb.imb=function imb(){};Z3(270,1,{},lsb.imb);Drb.l2=B5(270);lsb.jmb=function jmb(a,b){this.a=a;this.b=b};Z3(276,1,{},lsb.jmb);_.vc=function kmb(a,b){lsb.Clb(this.a,this.b,a,b)};Drb.m2=B5(276);lsb.lmb=function lmb(){};Z3(277,1,{},lsb.lmb);Drb.n2=B5(277);lsb.mmb=function mmb(){};Z3(280,1,{},lsb.mmb);Drb.o2=B5(280);lsb.nmb=function nmb(){};Z3(281,1,{},lsb.nmb);_.rc=function omb(a){return Hrb.gnb(a),new jsb.nlb(this,a)};_.sc=function pmb(a){return a};Drb.p2=B5(281);lsb.qmb=function qmb(a){};lsb.rmb=function rmb(a){if(a.b){throw h3(new Erb.k6(\"Stream already terminated, can't be modified or used\"))}};lsb.smb=function smb(){lsb.qmb(this);new Krb.Yi};Z3(290,1,{});_.b=false;Drb.u2=B5(290);lsb.tmb=function tmb(a,b){var c;return b.c.sc(lsb.umb(a,b.d.wc(),(c=new lsb.Bmb(b),c)))};lsb.umb=function umb(a,b,c){var d;lsb.rmb(a);a.b=true;d=new lsb.zmb;d.a=b;Krb.$ib(a.a,new lsb.Dmb(d,c));return d.a};lsb.vmb=function vmb(a){lsb.smb.call(this);this.a=a};lsb.wmb=function wmb(a,b,c){a.a.vc(b,c);return b};lsb.xmb=function xmb(a,b,c){lsb.ymb(a,lsb.Amb(b,a.a,c))};Z3(161,290,{},lsb.vmb);Drb.t2=B5(161);lsb.ymb=function ymb(a,b){a.a=b};lsb.zmb=function zmb(){};Z3(291,1,{},lsb.zmb);Drb.q2=B5(291);lsb.Amb=function Amb(a,b,c){return lsb.wmb(a.a,b,c)};lsb.Bmb=function Bmb(a){this.a=a};\nZ3(292,1,{},lsb.Bmb);Drb.r2=B5(292);lsb.Cmb=function Cmb(a,b){lsb.xmb(a.b,a.a,b)};lsb.Dmb=function Dmb(a,b){this.b=a;this.a=b};Z3(293,1,{},lsb.Dmb);Drb.s2=B5(293);Hrb.Omb=function Omb(a,b){return Drb.CX(a,b)};Hrb.Pmb=function Pmb(){Hrb.Pmb=_3;new Hrb.Vmb;new Hrb.Rmb('ISO-LATIN-1');new Hrb.Rmb('ISO-8859-1')};Hrb.Qmb=function Qmb(a){hsb.Fab.call(this,a)};Z3(187,96,Rzb);Drb.x2=B5(187);Hrb.Rmb=function Rmb(a){Hrb.Qmb.call(this,a)};Z3(188,187,Rzb,Hrb.Rmb);Drb.v2=B5(188);Hrb.Smb=function Smb(a,b,c){var d,e,f,g,h,i,j,k,l;f=0;for(j=0;j<c;){++f;e=a[b+j];if((e&192)==128){throw h3(new Erb.i6(_zb))}else if((e&128)==0){++j}else if((e&224)==192){j+=2}else if((e&240)==224){j+=3}else if((e&248)==240){j+=4}else{throw h3(new Erb.i6(_zb))}if(j>c){throw h3(new Erb.M4(_zb))}}g=tX(Drb.KY,iub,6,f,15,1);l=0;h=0;for(i=0;i<c;){e=a[b+i++];if((e&128)==0){h=1;e&=127}else if((e&224)==192){h=2;e&=31}else if((e&240)==224){h=3;e&=15}else if((e&248)==240){h=4;e&=7}else if((e&252)==248){h=5;e&=3}while(--h>0){d=a[b+i++];if((d&192)!=128){throw h3(new Erb.i6('Invalid UTF8 sequence at '+(b+i-1)+', byte='+(k=Hrb.rnb(Hrb.qnb(d)),k.toString(16))))}e=e<<6|d&63}l+=n5(e,g,l)}return g};Hrb.Tmb=function Tmb(a,b){if(b<128){Hrb.Jmb(a,(b&127)<<24>>24)}else if(b<Vtb){Hrb.Jmb(a,(b>>6&31|192)<<24>>24);Hrb.Jmb(a,(b&63|128)<<24>>24)}else if(b<Fsb){Hrb.Jmb(a,(b>>12&15|224)<<24>>24);Hrb.Jmb(a,(b>>6&63|128)<<24>>24);Hrb.Jmb(a,(b&63|128)<<24>>24)}else if(b<Etb){Hrb.Jmb(a,(b>>18&7|240)<<24>>24);Hrb.Jmb(a,(b>>12&63|128)<<24>>24);Hrb.Jmb(a,(b>>6&63|128)<<24>>24);Hrb.Jmb(a,(b&63|128)<<24>>24)}else if(b<Hub){Hrb.Jmb(a,(b>>24&3|248)<<24>>24);Hrb.Jmb(a,(b>>18&63|128)<<24>>24);Hrb.Jmb(a,(b>>12&63|128)<<24>>24);Hrb.Jmb(a,(b>>6&63|128)<<24>>24);Hrb.Jmb(a,(b&63|128)<<24>>24)}else{throw h3(new Erb.i6('Character out of range: '+b))}};Hrb.Umb=function Umb(a){var b,c,d,e;e=Hrb.rnb(a).length;b=tX(Drb.JY,nub,6,0,15,1);for(d=0;d<e;){c=c5(a,d,Hrb.rnb(a).length);d+=c>=Fsb?2:1;Hrb.Tmb(b,c)}return b};Hrb.Vmb=function Vmb(){Hrb.Qmb.call(this,'UTF-8')};Z3(254,187,Rzb,Hrb.Vmb);Drb.w2=B5(254);Hrb.unb=function unb(a,b){var c,d;d=j3(Drb.r3(a),Pzb);c=H3(Drb.r3(b),32);return G3(c,d)};msb.vnb=function vnb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;l=b.f;m=b.g;e=b.a;r=0;f=Jrb.Ik(a.o,0,e);g=Jrb.Ik(a.o,1,e);for(n=0;n<l.c.length;n++){c=l.e[l.c[n]];if(c!=f&&c!=g){s=msb.bob(Jrb.Dk(a.o,c));for(o=0;o<m.c.length;o++){d=m.e[m.c[o]];if(d!=f&&d!=g){p=s+msb.bob(Jrb.Dk(a.o,d));i=$wnd.Math.abs(a.k[c].a-a.k[d].a);if(i<p){j=$wnd.Math.abs(a.k[c].b-a.k[d].b);if(j<p){k=$wnd.Math.abs(a.k[c].c-a.k[d].c);if(k<p){h=$wnd.Math.sqrt(i*i+j*j+k*k);if(h<p){q=(p-h)/p;r+=q*q}}}}}}}}return r};msb.wnb=function wnb(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb,fb;G=b.i;H=b.j;A=b.f;B=b.g;if(!d[G]&&!d[H]){N=A.c.length>B.c.length?A:B;O=A.c.length>B.c.length?G:H;d[O]=true;D=e==null?0:e[O];for(L=0;L<N.d.length;L++){i=N.e[N.d[L]];Lrb.cw(a,i,Lrb.Yv(N.b[D],N.d[L]))}}if(d[G]){F=H;w=B;m=b.b?1:0}else{F=G;w=A;m=b.b?0:1}l=b.a;V=Jrb.Ik(a.o,m,l);S=Jrb.Ik(a.o,1-m,l);C=e==null?0:e[F];u=w.f[V];t=w.f[S];I=Lrb.Yv(w.b[C],w.d[u]);U=a.k[V];J=Jrb.Fh(Jrb.Eh(I,Lrb.Yv(w.b[C],w.d[t])));fb=Jrb.Fh(Jrb.Eh(U,a.k[S]));g=Jrb.yh(J,fb);v=tX(Drb.eZ,Fub,24,w.d.length,0,1);if(g<0.0010000000474974513){for(L=0;L<w.d.length;L++){i=w.e[w.d[L]];i!=V&&i!=S&&(v[L]=g>otb?Jrb.Eh(I,Lrb.Yv(w.b[C],w.d[L])):Jrb.Eh(Lrb.Yv(w.b[C],w.d[L]),I))}}else{g<3.1405926535422957?(W=new Jrb.Hh(fb.b*J.c-fb.c*J.b,-(fb.a*J.c-fb.c*J.a),fb.a*J.b-fb.b*J.a)):$wnd.Math.abs(fb.a)>=$wnd.Math.abs(fb.b)&&$wnd.Math.abs(fb.a)>=$wnd.Math.abs(fb.c)?(W=new Jrb.Hh(-(fb.b+fb.c)/fb.a,1,1)):$wnd.Math.abs(fb.b)>=$wnd.Math.abs(fb.a)&&$wnd.Math.abs(fb.b)>=$wnd.Math.abs(fb.c)?(W=new Jrb.Hh(1,-(fb.a+fb.c)/fb.b,1)):(W=new Jrb.Hh(1,1,-(fb.a+fb.b)/fb.c));P=msb.Fnb(Jrb.Fh(W),g);for(L=0;L<w.d.length;L++){i=w.e[w.d[L]];i!=V&&i!=S&&(v[L]=Jrb.zh(Jrb.Eh(Lrb.Yv(w.b[C],w.d[L]),I),P))}}d[F]=true;for(M=0;M<Jrb.Gn(a.o,V);M++){p=Jrb.Fn(a.o,V,M);if(p!=S){s=w.f[p];Lrb.dw(a,p,Jrb.sh(v[s],U))}}X=Lrb.tw(a,b.p);q=-1;j=0;k=0;for($=0;$<a.i[c].length;$++){q=a.i[c][$];P=msb.Fnb(fb,ntb*q/180-X);for(L=0;L<w.d.length;L++){i=w.e[w.d[L]];if(i!=V&&i!=S){Lrb.cw(a,i,v[L]);Jrb.rh(Jrb.zh(a.k[i],P),U)}}n=msb.vnb(a,b);eb=n;bb=0;if(n<Qvb){T=n/aAb;a.e[c][$]=a.d[c][$]*(1-T*T)}else{o=a.i[c][$];db=Eub;for(Q=0;Q<2;Q++){q=f[$][Q];if(q!=o){P=msb.Fnb(fb,ntb*q/180-X);for(K=0;K<w.d.length;K++){i=w.e[w.d[K]];if(i!=V&&i!=S){Lrb.cw(a,i,v[K]);Jrb.rh(Jrb.zh(a.k[i],P),U)}}R=msb.vnb(a,b);if(R<n*0.800000011920929&&R<db){a.i[c][$]=f[$][Q];T=R/0.16000000476837162;a.e[c][$]=a.d[c][$]*(1-T*T);eb=R;bb=Q+1;db=R}}}if(db==Eub&&n<aAb){T=n/aAb;a.e[c][$]=a.d[c][$]*(1-T*T)}}if(a.e[c][a.a[c]]<a.e[c][$]){a.a[c]=$;j=bb;k=eb}}cb=0;for(ab=0;ab<a.i[c].length;ab++)a.e[c][ab]>0&&(cb+=a.e[c][ab]);if(a.e[c][a.a[c]]<=0){a.e[c][a.a[c]]=1;h=j==1?-8:j==2?8:Krb.Rib(a.f)<0.5?-8:8;for(Y=1;Y<=4;Y++){q=a.i[c][a.a[c]]+h*Y<<16>>16;P=msb.Fnb(fb,ntb*q/180-X);for(K=0;K<w.d.length;K++){i=w.e[w.d[K]];if(i!=V&&i!=S){Lrb.cw(a,i,v[K]);Jrb.rh(Jrb.zh(a.k[i],P),U)}}r=msb.vnb(a,b);if(k-r<0.05)break;a.i[c][a.a[c]]=q}}else{for(Z=0;Z<a.i[c].length;Z++)a.e[c][Z]/=cb}if(q!=a.i[c][a.a[c]]){P=msb.Fnb(fb,ntb*a.i[c][a.a[c]]/180-X);for(K=0;K<w.d.length;K++){i=w.e[w.d[K]];if(i!=V&&i!=S){Lrb.cw(a,i,v[K]);Jrb.rh(Jrb.zh(a.k[i],P),U)}}}Lrb.bw(a,l,a.i[c][a.a[c]])};msb.xnb=function xnb(a,b,c){var d,e;++a.b;d=new Lrb.kw(a);d.p=c;for(e=a.g.length-1;e>=0;e--)msb.Dnb(a,d,a.g[e],e,b[e]);return d};msb.ynb=function ynb(a,b,c,d){var e,f,g;f=0;for(g=0;g<a.i[b].length;g++){e=(1-d)*a.e[b][g]+d/a.i[b].length;f+=e;if(c<=f)return g}return a.i[b].length-1};msb.znb=function znb(a,b,c){return a.i[b][c]};msb.Anb=function Anb(a,b,c){return a.e[b][c]};msb.Bnb=function Bnb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;k=b.p;i=b.n;j=Lrb.Yv(a,k[2]);l=Jrb.Fh(Jrb.Eh(j,Lrb.Yv(a,k[1])));h=msb.Fnb(l,i==k[1]?c:-c);for(e=b.o,f=0,g=e.length;f<g;++f){d=e[f];if(d!=i){m=a.k[d].a-j.a;n=a.k[d].b-j.b;o=a.k[d].c-j.c;Lrb.fw(a,d,m*h[0][0]+n*h[0][1]+o*h[0][2]+j.a);Lrb.gw(a,d,m*h[1][0]+n*h[1][1]+o*h[1][2]+j.b);Lrb.hw(a,d,m*h[2][0]+n*h[2][1]+o*h[2][2]+j.c)}}};msb.Cnb=function Cnb(a,b,c){var d,e;while(c<0)c=c+360<<16>>16;while(c>=360)c=c-360<<16>>16;d=b.a;if(c!=(a.j==null?-1:a.j[d])){e=c-(a.j==null?-1:a.j[d]);msb.Bnb(a,b,ntb*e/180);Lrb.bw(a,d,c)}};msb.Dnb=function Dnb(a,b,c,d,e){msb.Cnb(b,c,a.i[d][e])};msb.Enb=function Enb(a,b,c,d,e){var f,g,h,i,j,k,l,m;Lrb.jw.call(this,a);this.f=e;this.g=c;this.i=tX(Drb.b3,Rvb,13,c.length,0,2);this.d=tX(Drb.b3,Rvb,13,c.length,0,2);this.e=tX(Drb.LY,ssb,12,c.length,0,2);h=tX(Drb.b3,ssb,31,c.length,0,3);for(g=0;g<c.length;g++){m=c[g].d;this.i[g]=Krb.Deb(m,m.length);i=c[g].c;this.d[g]=Krb.Deb(i,i.length);this.e[g]=tX(Drb.LY,Osb,6,this.i[g].length,15,1);h[g]=c[g].e}this.a=tX(Drb.NY,Qsb,6,c.length,15,1);k=tX(Drb.c3,itb,6,b.length,16,1);for(f=0;f<c.length;f++)msb.wnb(this,c[f],f,k,d,h[f]);for(j=0;j<b.length;j++)if(!k[j])for(l=0;l<b[j].c.length;l++)Lrb.cw(this,msb.kob(b[j],l),msb.nob(b[j],d[j],l));this.c=new Krb.Yi};msb.Fnb=function Fnb(a,b){var c,d,e,f;f=$wnd.Math.sin(b);c=$wnd.Math.cos(b);d=1-c;e=rX(Drb.LY,[ssb,Osb],[12,6],15,[3,3],2);e[0][0]=a.a*a.a*d+c;e[1][1]=a.b*a.b*d+c;e[2][2]=a.c*a.c*d+c;e[0][1]=a.a*a.b*d-a.c*f;e[1][2]=a.b*a.c*d-a.a*f;e[2][0]=a.c*a.a*d-a.b*f;e[0][2]=a.a*a.c*d+a.b*f;e[1][0]=a.b*a.a*d+a.c*f;e[2][1]=a.c*a.b*d+a.a*f;return e};Z3(178,60,{60:1,28:1,178:1},msb.Enb);_.b=0;Drb.A2=B5(178);msb.Gnb=function Gnb(a,b){Krb.Ei(a.c,b)};msb.Hnb=function Hnb(a,b){a.a=b};msb.Inb=function Inb(a,b,c){var d,e;d=new Jrb.eg(Lrb.iw(c,null));Jrb.Kf(d);Jrb.If(d,d.ib);a.d=tX(Drb.NY,Qsb,6,b.g.length,15,1);for(e=0;e<a.d.length;e++)a.d[e]=Lrb.Xv(c,b.g[e].a)};msb.Jnb=function Jnb(a,b){Hrb.rnb(a.b.a).length!=0&&Erb.P7(a.b,'<NL>');Erb.P7(a.b,b)};msb.Knb=function Knb(){this.b=new Erb.S7;this.c=new Krb.Yi};Z3(213,1,{213:1},msb.Knb);Drb.B2=B5(213);msb.Lnb=function Lnb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;a.i&&msb.Hnb(msb.iob(a.c,b),null);i=0;h=null;q=c.o;for(d=1;d<q.q;d++){s=msb.bob(q.C[d]);for(e=0;e<d;e++){if(!a.u[d][e]){p=s+msb.bob(q.C[e]);k=$wnd.Math.abs(c.k[d].a-c.k[e].a);if(k<p){l=$wnd.Math.abs(c.k[d].b-c.k[e].b);if(l<p){m=$wnd.Math.abs(c.k[d].c-c.k[e].c);if(m<p){j=$wnd.Math.sqrt(k*k+l*l+m*m);if(j<p){r=(p-j)/p;g=20*r*r;i+=g;if(a.i){msb.Jnb(msb.iob(a.c,b),'a1:'+d+' f1:'+a.g[d]+' a2:'+e+' f2:'+a.g[e]+bAb+(Zrb.cV(),Zrb.dV(j,5))+' min:'+Zrb.dV(p,5));if(msb.iob(a.c,b).a==null){f=tX(Drb.NY,Qsb,6,2,15,1);f[0]=d;f[1]=e;msb.Hnb(msb.iob(a.c,b),f)}}h==null&&(h=tX(Drb.LY,ssb,12,a.q.length,0,2));n=a.g[d];o=a.g[e];if(n<o){h[o]==null&&(h[o]=tX(Drb.LY,Osb,6,o,15,1));h[o][n]+=g}else{h[n]==null&&(h[n]=tX(Drb.LY,Osb,6,n,15,1));h[n][o]+=g}}}}}}}}msb.Tob(b,i,h);return i!=0};msb.Mnb=function Mnb(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q;h=0;for(m=0;m<c.c.length;m++){e=c.e[c.c[m]];q=msb.bob(Jrb.Dk(a.k,e));for(n=0;n<d.c.length;n++){f=d.e[d.c[n]];o=q+msb.bob(Jrb.Dk(a.k,f));j=$wnd.Math.abs(b.k[e].a-b.k[f].a);if(j<o){k=$wnd.Math.abs(b.k[e].b-b.k[f].b);if(k<o){l=$wnd.Math.abs(b.k[e].c-b.k[f].c);if(l<o){i=$wnd.Math.sqrt(j*j+k*k+l*l);if(i<o){p=(o-i)/o;g=p*p;h+=g}}}}}}return 20*h};msb.Nnb=function Nnb(a,b){var c;c=Krb.kdb(a.b,b);if(c)return c;c=new msb.Enb(a.k,a.q,a.s,b,a.n);Krb.pjb(a.b,Krb.Ceb(b,b.length),c);return c};msb.Onb=function Onb(a){var b,c;if(a.s==null&&!a.t)return null;if(a.t){c=nsb.hqb(a.t);if(c){msb.Xnb(a,c);++a.p;Lrb.ew(c,'SO#'+ ++a.a);return c}return null}if(a.j)return null;a.b.c==0&&msb.Nnb(a,tX(Drb.NY,Qsb,6,a.q.length,15,1));a.A=msb.qpb(a.B,a.A,a.c);while(!!a.A&&!(E3(a.v,0)&&(Erb.X7(),w3(u3(Date.now()),a.v)))){b=msb.Nnb(a,a.A.d);if(!a.A.c){msb.Uob(a.A,msb.xnb(b,a.A.i,'#'+ ++a.a));a.i&&msb.hob(a.c,a.A)}if(a.A.b==0){msb.Lnb(a,a.A,a.A.c);a.A.b!=0&&msb.Znb(a,a.A);if(a.i){msb.Inb(msb.iob(a.c,a.A),b,a.A.c);msb.iob(a.c,a.A)}}if(a.A.b>a.B.s+3){a.A=msb.qpb(a.B,a.A,a.c);if(!!a.A||a.p!=0)continue;if(a.C){a.t=new nsb.rqb(a.k);nsb.nqb(a.t,a.v);nsb.jqb(a.t,a.o,-1);c=nsb.hqb(a.t);if(c){msb.Xnb(a,c);++a.p;Lrb.ew(c,'SO#'+ ++a.a);return c}}a.A=a.B.e;a.j=true}if(a.A){msb.Xnb(a,a.A.c);a.A.g=true;++a.p;a.i&&msb.iob(a.c,a.A);return a.A.c}}return null};msb.Pnb=function Pnb(a,b){var c;c=msb.Onb(a);return !c?null:Lrb.iw(c,b)};msb.Qnb=function Qnb(a,b){var c,d;if(!msb.Tnb(a,b,false))return null;if(a.s!=null){a.B=new msb.Apb(a,a.o);msb.upb(a.B,400);a.b=new Krb.yjb(new Zrb.hV);return msb.Onb(a)}else{d=new nsb.rqb(b);nsb.nqb(d,a.v);c=nsb.gqb(d,a.o);msb.Xnb(a,c);c.p='SO#1';return c}};msb.Rnb=function Rnb(a,b){var c;c=msb.Qnb(a,b);return !c?null:Lrb.iw(c,b)};msb.Snb=function Snb(a){return !a.B?1:a.B.u};msb.Tnb=function Tnb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;a.v=t3(a.w,0)?0:(Erb.X7(),i3(u3(Date.now()),a.w));msb.Eob(a.r,a.v);a.t=null;Jrb.ou(b,1);for(e=0;e<b.f;e++)if(Jrb.ao(b,e)>(p=Jrb.$k(b,e),p+Jrb.Yk(b,e,p,b.C[e])))return false;msb.aob(b);b.S=true;g=null;k=null;h=null;l=null;if((b.T&8)!=0){g=tX(Drb.NY,Qsb,6,b.f,15,1);h=tX(Drb.c3,itb,6,b.f,16,1);for(f=0;f<b.f;f++){g[f]=b.u[f]&3;h[f]=(b.u[f]&4)!=0}k=tX(Drb.NY,Qsb,6,b.g,15,1);l=tX(Drb.c3,itb,6,b.g,16,1);for(j=0;j<b.g;j++){k[j]=b.F[j]&3;l[j]=(b.F[j]&4)!=0}}Jrb.ou(b,63);if(g!=null){for(f=0;f<b.f;f++)Jrb.bm(b,f,g[f],h[f]);for(j=0;j<b.g;j++)Jrb.qm(b,j,k[j],l[j])}a.k=b;a.a=0;a.p=0;a.A=null;a.s=null;a.e=tX(Drb.NY,Qsb,6,b.q,15,1);a.d=Jrb.Pn(b,a.e,false,true);a.f=tX(Drb.NY,Qsb,6,a.d,15,1);for(d=0;d<b.q;d++)++a.f[a.e[d]];n=tX(Drb.c3,itb,6,b.r,16,1);m=Lrb.ww(b,n);if(m==0)return true;if(!msb.Wnb(a,n))return false;a.s=tX(Drb.J2,Bsb,142,m,0,1);o=0;for(i=0;i<b.g;i++)n[i]&&(a.s[o++]=new msb.Qob(b,i,a.g,a.e,a.f[a.e[b.D[0][i]]],a.q,c));Krb.Yeb(a.s,new msb.eob);a.i&&(a.c=new msb.job);msb.Unb(a);return true};msb.Unb=function Unb(a){var b,c,d,e,f,g,h,i,j,k,l,m;a.u=tX(Drb.c3,ssb,11,a.k.q,0,2);for(c=1;c<a.k.q;c++)a.u[c]=tX(Drb.c3,itb,6,c,16,1);for(k=a.q,l=0,m=k.length;l<m;++l){j=k[l];for(g=1;g<j.d.length;g++)for(i=0;i<g;i++)msb.Ynb(a,j.e[j.d[g]],j.e[j.d[i]])}for(b=0;b<a.k.f;b++)for(f=1;f<Jrb.rn(a.k,b);f++)for(h=0;h<f;h++)msb.Ynb(a,Jrb.Fn(a.k,b,f),Jrb.Fn(a.k,b,h));if(a.e!=null)for(d=1;d<a.k.q;d++)for(e=0;e<d;e++)a.e[d]!=a.e[e]&&(a.u[d][e]=true)};msb.Vnb=function Vnb(a,b,c,d,e){if(!msb.Tnb(a,b,e))return false;if(a.s==null){a.t=new nsb.rqb(b);nsb.nqb(a.t,a.v);nsb.jqb(a.t,a.o,-1)}else{a.b=new Krb.yjb(new Zrb.hV);switch(c){case 2:a.B=new msb.ypb(a,false,a.o);break;case 3:a.B=new msb.ypb(a,true,a.o);break;case 4:a.B=new msb.Apb(a,a.o);break;case 1:a.B=new msb.Dpb(a);}msb.upb(a.B,d)}return true};msb.Wnb=function Wnb(a,b){var c,d,e;a.g=tX(Drb.NY,Qsb,6,a.k.q,15,1);c=Jrb.Qn(a.k,a.g,b,true);a.q=tX(Drb.I2,Bsb,143,c,0,1);e=true;for(d=0;d<c;d++)e=e&!!(a.q[d]=msb.Cob(a.r,a.k,a.g,d));return e};msb.Xnb=function Xnb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;if(a.d>1){j=tX(Drb.LY,Osb,6,a.d,15,1);k=tX(Drb.LY,Osb,6,a.d,15,1);l=tX(Drb.LY,Osb,6,a.d,15,1);i=tX(Drb.LY,Osb,6,a.d,15,1);for(g=0;g<a.d;g++){l[g]=Gzb;i[g]=-1000000000}for(d=0;d<b.k.length;d++){j[a.e[d]]+=b.k[d].a;k[a.e[d]]+=b.k[d].b;l[a.e[d]]>b.k[d].c&&(l[a.e[d]]=b.k[d].c);i[a.e[d]]<b.k[d].c&&(i[a.e[d]]=b.k[d].c)}for(h=0;h<a.d;h++){j[h]/=a.f[h];k[h]/=a.f[h]}m=tX(Drb.LY,Osb,6,a.d,15,1);n=tX(Drb.LY,Osb,6,a.d,15,1);o=tX(Drb.LY,Osb,6,a.d,15,1);for(f=1;f<a.d;f++){m[f]=j[0]-j[f];n[f]=k[0]-k[f];o[f]=o[f-1]+i[f-1]-l[f]+3}for(c=0;c<b.k.length;c++){if(a.e[c]!=0){e=b.k[c];e.a+=m[a.e[c]];e.b+=n[a.e[c]];e.c+=o[a.e[c]]}}}};msb.Ynb=function Ynb(a,b,c){b<c?(a.u[c][b]=true):(a.u[b][c]=true)};msb.Znb=function Znb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;if(E3(a.v,0)&&(Erb.X7(),w3(u3(Date.now()),a.v)))return false;n=b.a;s=0;for(g=1;g<n.length;g++)if(n[g]!=null)for(i=0;i<g;i++)n[g][i]!=0&&msb.opb(a.B,g,i).length!=2&&(s+=n[g][i]);if(s>6)return false;e=null;m=null;j=null;c=Eub;o=b.b;for(f=1;f<n.length;f++){if(n[f]!=null){for(h=0;h<f;h++){if(n[f][h]>1&&msb.opb(a.B,f,h).length==2){r=msb.opb(a.B,f,h);u=tX(Drb.NY,Qsb,6,2,15,1);for(l=0;l<2;l++){t=a.s[r[l]];u[l]=Lrb.Xv(b.c,t.a)}A=tX(Drb.NY,Qsb,6,2,15,1);for(p=-1;p<=1;p+=2){A[0]=p*8;for(q=-1;q<=1;q+=2){A[1]=q*8;d=n[f][h];for(v=1;v<=3;v++){!e?(e=new Lrb.kw(b.c)):Lrb.Vv(e,b.c);for(k=0;k<2;k++)msb.Cnb(e,a.s[r[k]],u[k]+v*A[k]<<16>>16);w=msb.Mnb(a,e,a.q[f],a.q[h]);if(w<d-1){d=w;!m?(m=new Lrb.kw(e)):Lrb.Vv(m,e);if(d<1)break}else{break}}if(d<n[f][h]&&d<c){c=d;!j?(j=new Lrb.kw(m)):Lrb.Vv(j,m)}}}}}}}if(!j)return false;msb.Lnb(a,b,j);if(b.b>=o){msb.Tob(b,o,n);return false}Lrb.Vv(b.c,j);return true};msb.$nb=function $nb(a,b){Lrb.Bw();this.o=a;this.n=o3(a,0)==0?new Krb.Vib:new Krb.Wib(a);this.r=new msb.Fob(a,b)};msb._nb=function _nb(a){msb.$nb.call(this,a,msb.xob())};msb.aob=function aob(a){var b,c,d,e,f,g,h;h=a.T&248;Jrb.ou(a,1);g=tX(Drb.NY,Qsb,6,a.f,15,1);for(c=0;c<a.f;c++)g[c]=Jrb.Wn(a,c);e=0.8*Jrb.Fk(a,a.q,a.r,(Jrb.Ej(),Jrb.Dj));for(d=0;d<g.length;d++)if(g[d]!=0)for(f=0;f<g[d];f++)Jrb.Jj(a,d,Jrb.Hj(a,1),1);Jrb.ou(a,1);for(b=0;b<g.length;b++)g[b]!=0&&msb.dob(a,b,g[b],e);(h&8)!=0&&(a.T|=248&(8|h))};msb.bob=function bob(a){var b;b=(Lrb.nx(),Lrb.mx)[a<Lrb.mx.length?a:6];return b*(a==1?0.9:0.9)};msb.cob=function cob(a,b){return q6(b.o.length,a.o.length)};msb.dob=function dob(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;l=a.e[b]-c;u=-1;s=NaN;for(o=0;o<l;o++){if(Jrb.Al(a,a.k[b][o],b)){u=o;s=Jrb.Hk(a,b,a.i[b][o]);break}}t=u==-1?0:1;g=null;if(t<l){g=tX(Drb.LY,Osb,6,l-t,15,1);j=0;for(p=0;p<l;p++)p!=u&&(g[j++]=Jrb.Hk(a,b,a.i[b][p]));Hrb.Nmb(g,Hrb.rnb(a4(Krb.$eb.prototype.pc,Krb.$eb,[])))}h=mtb/$wnd.Math.max(c,3);r=0;if(g!=null){if(g.length==1&&c==1){r=g[0]}else{i=0;for(p=0;p<g.length;p++){e=p==0?g[g.length-1]-mtb:g[p-1];f=g[p];if(i<f-e){i=f-e;r=e}}h=i/(c+1)}}for(n=0;n<c;n++){r+=h;m=r;if(t!=0){k=Jrb.Wm(m,s);$wnd.Math.abs(k)<h/2&&(k<0?(m=s-h/2):(m=s+h/2))}q=a.i[b][l+n];Jrb.gm(a,q,a.J[b].a+d*$wnd.Math.sin(m));Jrb.hm(a,q,a.J[b].b+d*$wnd.Math.cos(m))}};Z3(176,1,{},msb._nb);_.a=0;_.d=0;_.i=false;_.j=false;_.o=0;_.p=0;_.v=0;_.w=0;_.C=false;Drb.D2=B5(176);msb.eob=function eob(){};Z3(232,1,{},msb.eob);_.qb=function fob(a,b){return msb.cob(a,b)};_.jb=function gob(a){return this===a};Drb.C2=B5(232);msb.hob=function hob(a,b){Krb.pjb(a.a,Lrb.Zv(b.c),new msb.Knb)};msb.iob=function iob(a,b){return Krb.kdb(a.a,Lrb.Zv(b.c))};msb.job=function job(){this.a=new Krb.xjb};Z3(233,1,{},msb.job);Drb.E2=B5(233);msb.kob=function kob(a,b){return a.e[a.c[b]]};msb.lob=function lob(a,b){return a.a[b]};msb.mob=function mob(a){return a.d.length-a.c.length};msb.nob=function nob(a,b,c){return Lrb.Yv(a.b[b],a.c[c])};msb.oob=function oob(a,b,c){var d,e,f;e=0;for(f=0;f<a.a.length;f++){d=(1-c)*a.a[f]+c/a.a.length;e+=d;if(b<=e)return f}return a.a.length-1};msb.pob=function pob(a,b,c,d,e,f){this.c=a;this.e=b;this.d=c;this.f=d;this.b=e;this.a=f};Z3(143,1,{143:1},msb.pob);Drb.I2=B5(143);msb.rob=function rob(a){return Krb.Bbb((new Krb.Sbb(a.e)).a)<a.c};msb.sob=function sob(a,b){var c;c=ksb.Ykb(a,b);++a.a;if(c){++c.b;++a.b}return c};msb.tob=function tob(a,b,c){return Krb.Bbb((new Krb.Sbb(a.e)).a)<a.c?ksb.Zkb(a,b,c):null};msb.uob=function uob(){ksb.$kb.call(this);this.c=500000};msb.xob=function xob(){if(msb.qob)return msb.qob;!msb.qob&&(msb.qob=new msb.uob);return msb.qob};Z3(296,295,{4:1,94:1},msb.uob);_.get=function wob(a){return msb.sob(this,a)};_.put=function yob(a,b){return msb.tob(this,a,b)};_.clear=function vob(){Krb.Abb((new Krb.Sbb(this.e)).a)};_.a=0;_.b=0;_.c=0;_.d=0;Drb.G2=B5(296);msb.zob=function zob(a,b){if(a.b!=b.b)return a.b<b.b?-1:1;return 0};msb.Aob=function Aob(a,b){this.a=a;this.c=b};Z3(197,1,{28:1,197:1},msb.Aob);_.rb=function Bob(a){return msb.zob(this,a)};_.b=0;Drb.F2=B5(197);msb.Cob=function Cob(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb,fb,gb,hb,ib,jb,kb,lb,mb,nb,ob;H=0;j=0;M=0;X=tX(Drb.c3,itb,6,b.q,16,1);ab=tX(Drb.c3,itb,6,b.q,16,1);$=tX(Drb.c3,itb,6,b.q,16,1);for(f=0;f<b.q;f++){if(c[f]==d){$[f]=true;X[f]=true;++j;++H}}for(g=0;g<b.q;g++){if($[g]){for(S=0;S<b.j[g];S++){A=b.i[g][S];if(!X[A]){X[A]=true;++j;++M}}}}for(h=0;h<b.q;h++){if(X[h]&&!$[h]&&!ab[h]){for(S=0;S<b.e[h];S++){A=b.i[h][S];if(!X[A]){ab[A]=true;X[A]=true;++j}}}}n=0;for(m=0;m<b.r;m++)X[b.D[0][m]]&&X[b.D[1][m]]&&++n;O=new Jrb.Hu(j,n);Jrb.hn(b,O,X,false,null);Jrb.vm(O,true);I=tX(Drb.NY,Qsb,6,H,15,1);Q=tX(Drb.NY,Qsb,6,j,15,1);N=tX(Drb.NY,Qsb,6,H+M,15,1);hb=tX(Drb.NY,Qsb,6,b.q,15,1);G=0;P=0;L=0;for(i=0;i<b.q;i++){if(X[i]){Jrb.Fo(b,i,true)&&Jrb.cm(O,P,Ttb,true);$[i]||(O.u[P]|=oub);if($[i]||!ab[i]){N[L]=P;hb[i]=L;++L}if($[i]){I[G]=P;++G}Q[P]=i;O.C[P]==1&&(O.A[P]=2,O.T&=O.C[P]==1?0:7);++P}}w=null;db=null;q=null;cb=null;Z=false;mb=!!a.a&&msb.rob(a.a)&&j<=32;if(mb){q=new Jrb.fg(O,512);for(e=0;e<O.f;e++){if(q.cb[e]==3){mb=false;break}}for(l=0;l<O.g;l++){if(q.n[l]==3){mb=false;break}}mb&&Jrb.ag(q)}!!a.a&&!mb&&++a.a.d;O.T|=8;if(mb){Z=Jrb.Yf(q);cb=Jrb.Kf(q);p=msb.sob(a.a,cb);if(p){R=(Jrb.Ef(q),q.G);w=new Krb.Yi;for(C=p.a,D=0,F=C.length;D<F;++D){B=C[D];for(bb=0;bb<O.q;bb++){o=B[R[bb]];Jrb.gm(O,bb,o.a);Jrb.hm(O,bb,o.b);Jrb.im(O,bb,Z?-o.c:o.c)}Krb.Ei(w,new nsb.Zqb(O))}db=p.c}}if(!w){kb=new nsb.rqb(O);nsb.nqb(kb,a.d);nsb.jqb(kb,a.c,16);w=new Krb.Yi;k=nsb.hqb(kb);Hrb.Kmb(w.a,k);v=nsb.hqb(kb);while(v){Hrb.Kmb(w.a,v);v=nsb.hqb(kb)}gb=Eub;for(t=new Krb.ueb(w);t.a<t.c.a.length;){r=Krb.teb(t);gb=$wnd.Math.min(gb,r.e)}lb=gb+4.08;for(T=w.a.length-1;T>=0;T--)(Hrb.fnb(T,w.a.length),w.a[T]).e>lb&&Krb.Qi(w,T);db=tX(Drb.LY,Osb,6,w.a.length,15,1);eb=0;Y=0;for(U=0;U<w.a.length;U++){r=(Hrb.fnb(U,w.a.length),w.a[U]);db[U]=$wnd.Math.pow(10,(gb-r.e)/1.36);eb+=db[U]}for(V=0;V<w.a.length;V++)db[V]/=eb;if(a.b){nb=0;fb=Eub;for(u=new Krb.ueb(w);u.a<u.c.a.length;){r=Krb.teb(u);J=msb.Dob(Lrb.iw(r,r.o));r.n=J;if(!isNaN(J)){fb=$wnd.Math.min(fb,J);++nb}Lrb.Uv(r,O)}K=fb+2.72;for(s=new Krb.ueb(w);s.a<s.c.a.length;){r=Krb.teb(s);if(!isNaN(r.n)&&r.n>K){r.n=NaN;--nb}}if(nb!=0){ib=tX(Drb.LY,Osb,6,nb,15,1);jb=0;Y=0;for(W=w.a.length-1;W>=0;W--){r=(Hrb.fnb(W,w.a.length),w.a[W]);if(isNaN(r.n))Krb.Qi(w,W);else{ib[Y]=$wnd.Math.pow(10,(fb-r.n)/1.36);jb+=ib[Y];++Y}}db=tX(Drb.LY,Osb,6,nb,15,1);for(S=0;S<nb;S++)db[S]=ib[S]/jb}}if(mb){R=(Jrb.Ef(q),q.G);B=rX(Drb.eZ,[ssb,Fub],[113,24],0,[w.a.length,R.length],2);for(S=0;S<B.length;S++){for(bb=0;bb<R.length;bb++){ob=Lrb.Yv((Hrb.fnb(S,w.a.length),w.a[S]),bb);B[S][R[bb]]=new Jrb.Hh(ob.a,ob.b,Z?-ob.c:ob.c)}}msb.tob(a.a,cb,new msb.Aob(B,db))}}return new msb.pob(I,Q,N,hb,Krb.Xi(w,tX(Drb.Z2,{4:1,5:1,17:1,8:1,396:1},93,0,0,1)),db)};msb.Dob=function Dob(b){var c,d;try{d=new Prb.wA(b);Orb.wz(d,4000,_wb);return Prb.uA(d,d.i)}catch(a){a=g3(a);if(zY(a,155)){return NaN}else if(zY(a,15)){c=a;Erb.Jz(c,(Erb.X7(),Erb.W7),'');return NaN}else throw h3(a)}};msb.Eob=function Eob(a,b){a.d=b};msb.Fob=function Fob(a,b){this.c=a;this.a=b;this.b=false};Z3(231,1,{},msb.Fob);_.b=false;_.c=0;_.d=0;Drb.H2=B5(231);msb.Job=function Job(){msb.Job=_3;msb.Iob=BX(nX(Drb.b3,1),hub,6,15,[0,60,120,180,240,300]);msb.Gob=BX(nX(Drb.b3,1),hub,6,15,[17,17,17,17,17,17]);msb.Hob=BX(nX(Drb.b3,2),Rvb,13,0,[BX(nX(Drb.b3,1),hub,6,15,[-20,20]),BX(nX(Drb.b3,1),hub,6,15,[40,80]),BX(nX(Drb.b3,1),hub,6,15,[100,140]),BX(nX(Drb.b3,1),hub,6,15,[160,200]),BX(nX(Drb.b3,1),hub,6,15,[220,260]),BX(nX(Drb.b3,1),hub,6,15,[280,320])])};msb.Kob=function Kob(a,b,c){var d,e,f;if(a.o[b]==2)return 1;if((a.o[b]==1||Jrb.Fo(a,b,true))&&a.j[b]!=3)return 1;if(a.o[b]==0&&a.j[b]!=4)return 1;f=-2;for(e=0;e<a.j[b];e++){d=a.i[b][e];if(d!=c){if(f==-2)f=Jrb.Of(a.d,d);else if(f!=Jrb.Of(a.d,d))return 1}}return a.j[b]-1};msb.Lob=function Lob(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o;k=tX(Drb.c3,itb,6,b.q,16,1);m=Jrb.po(b,a.k[0],a.p[1],k,null,null);e=0;a.k[0]!=a.p[2]&&(e=Jrb.fo(b,a.k[0],a.p[2]));j=false;if(m>d-e-m){m=d-e-m;j=true}if(j&&e!=0){o=a.k[0];g=a.p[1];while(b.o[o]==2&&b.j[o]==2&&b.C[o]<10){k[o]=true;for(l=0;l<2;l++){h=b.i[o][l];if(h!=g){g=o;o=h;break}}}}n=0;i=c[a.p[1]];a.o=tX(Drb.NY,Qsb,6,m,15,1);for(f=0;f<b.q;f++)c[f]==i&&k[f]^j&&(a.o[n++]=f);a.n=a.p[j?2:1]};msb.Mob=function Mob(a,b){return b==0?a.i:a.j};msb.Nob=function Nob(a,b){var c,d,e,f,g,h;for(f=0;f<2;f++){c=Jrb.Ik(b,f,a.a);h=Jrb.Ik(b,1-f,a.a);while(b.o[c]==2&&b.j[c]==2&&b.C[c]<10){for(g=0;g<2;g++){d=b.i[c][g];if(d!=h){h=c;c=d;break}}}a.p[f+1]=c;a.k[f]=h}if(Jrb.wn(b,a.p[1])==0&&Jrb.Gn(b,a.p[1])==3){a.p[0]=-1}else{for(e=0;e<Jrb.Gn(b,a.p[1]);e++){d=Jrb.Fn(b,a.p[1],e);if(d!=a.p[2]){a.p[0]=d;break}}}if(Jrb.wn(b,a.p[2])==0&&Jrb.Gn(b,a.p[2])==3){a.p[3]=-1}else{for(e=0;e<Jrb.Gn(b,a.p[2]);e++){d=Jrb.Fn(b,a.p[2],e);if(d!=a.p[1]){a.p[3]=d;break}}}};msb.Oob=function Oob(a,b){var c,d,e,f,g,h,i,j,k,l;k=msb.mob(a.f)!=1?1:msb.Kob(b,a.p[1],a.k[0]);l=msb.mob(a.g)!=1?1:msb.Kob(b,a.p[2],a.k[1]);if(k==1&&l==1)return;g=360/$wnd.Math.max(k,l)|0;c=0;d=0;for(f=0;f<a.d.length&&a.d[f]<g;f++){d+=a.c[f];++c}if(c==0)return;j=tX(Drb.b3,hub,6,c,15,1);h=tX(Drb.b3,hub,6,c,15,1);i=tX(Drb.b3,Rvb,13,c,0,2);for(e=0;e<c;e++){j[e]=a.d[e];h[e]=(a.c[e]*100/d|0)<<16>>16;i[e]=a.e[e]}a.d=j;a.c=h;a.e=i};msb.Pob=function Pob(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;if(Jrb.Qk(b,a.a)==1&&(Jrb.Rk(b,a.a)==1||Jrb.Rk(b,a.a)==2)){j=false;for(h=0;h<2;h++){d=a.p[3*h];c=a.p[1+h];p=a.p[2-h];for(k=0;k<b.j[c];k++){o=b.i[c][k];if(o!=p&&o!=d){o<d&&(j=!j);break}}}Jrb.Rk(b,a.a)==1&&(j=!j);e=0;f=0;for(i=0;i<a.d.length;i++){if(a.d[i]<180^j){f+=a.c[i];++e}}if(e<a.d.length){n=tX(Drb.b3,hub,6,e,15,1);l=tX(Drb.b3,hub,6,e,15,1);m=tX(Drb.b3,Rvb,13,e,0,2);e=0;for(g=0;g<a.d.length;g++){if(a.d[g]<180^j){n[e]=a.d[g];l[e]=(a.c[g]*100/f|0)<<16>>16;m[e]=a.e[g];++e}}a.d=n;a.c=l;a.e=m}}};msb.Qob=function Qob(a,b,c,d,e,f,g){msb.Job();var h,i,j,k;(k=Lrb.ow(Lrb.nw,cAb),!k?null:Lrb.dx(k))[0]==-1&&(Erb.X7(),String.fromCharCode(10));this.a=b;this.p=tX(Drb.NY,Qsb,6,4,15,1);this.k=tX(Drb.NY,Qsb,6,2,15,1);h=new Lrb.bx;if(Lrb.yw(a,b,this.p,h)!=null){this.k[0]=h.e[0];this.k[1]=h.e[1]}else{msb.Nob(this,a)}this.i=c[this.p[1]];this.j=c[this.p[2]];this.f=f[this.i];this.g=f[this.j];this.b=c[a.D[0][b]]==this.i;(j=Lrb.ow(Lrb.nw,cAb),!j?null:Lrb.dx(j))[0]==-1&&(Erb.X7(),String.fromCharCode(10));if(g){this.d=msb.Iob;this.c=msb.Gob;this.e=msb.Hob}else{this.d=Lrb.Aw(h.d);if(this.d==null){i=new Lrb.kx(a,this.p);this.d=i.b;this.c=i.a;this.e=i.c}else{this.c=Lrb.xw(h.d);this.e=Lrb.zw(h.d)}}msb.Pob(this,a);msb.Oob(this,a);msb.Lob(this,a,d,e)};Z3(142,1,{142:1},msb.Qob);_.a=0;_.b=false;_.i=0;_.j=0;_.n=0;Drb.J2=B5(142);msb.Rob=function Rob(a,b){var c;for(c=0;c<a.f.length;c++)if(E3(a.f[c],b.f[c]))return z3(a.f[c],b.f[c])?-1:1;return 0};msb.Sob=function Sob(a,b,c){var d;for(d=0;d<b.length;d++)if(E3(j3(a.f[d],b[d]),j3(c[d],b[d])))return false;return true};msb.Tob=function Tob(a,b,c){a.b=b;a.a=c;!!a.c&&a.e*$wnd.Math.pow(10,-b/1.36)};msb.Uob=function Uob(a,b){a.c=b;a.e*$wnd.Math.pow(10,-a.b/1.36)};msb.Vob=function Vob(a,b){a.e=b};msb.Wob=function Wob(a,b,c){this.i=a;this.d=b;this.f=msb.fpb(c,a,b)};Z3(136,1,{28:1,136:1},msb.Wob);_.rb=function Xob(a){return msb.Rob(this,a)};_.jb=function Yob(a){return msb.Rob(this,a)==0};_.mb=function Zob(){var a,b,c,d,e,f,g,h;h=new Erb.S7;for(c=this.i,e=0,g=c.length;e<g;++e){a=c[e];h.a+=a;h.a+=','}this.i.length!=0&&Erb.G4(h,Hrb.rnb(h.a).length-1);h.a+=';';for(b=this.d,d=0,f=b.length;d<f;++d){a=b[d];h.a+=a;h.a+=','}this.d.length!=0&&Erb.G4(h,Hrb.rnb(h.a).length-1);return h.a};_.b=0;_.e=0;_.g=false;Drb.T2=B5(136);msb.$ob=function $ob(a,b){var c,d;d=true;for(c=0;c<a.c.length;c++)(E3(j3(F3(b.c[c]),a.c[c]),0)||E3(j3(b.b[c],a.c[c]),a.b[c]))&&(d=false);return d};msb._ob=function _ob(a,b){var c,d;d=true;for(c=0;c<a.c.length;c++)(E3(j3(F3(a.c[c]),b.c[c]),0)||E3(j3(a.b[c],b.c[c]),b.b[c]))&&(d=false);return d};msb.apb=function apb(a,b,c,d){this.c=tX(Drb.OY,iub,6,d.c,14,1);this.b=tX(Drb.OY,iub,6,d.c,14,1);msb.gpb(d,a,b,this.c,this.b);this.a=c};Z3(217,1,{217:1},msb.apb);_.a=0;Drb.K2=B5(217);msb.cpb=function cpb(){msb.cpb=_3;msb.bpb=BX(nX(Drb.OY,1),iub,6,14,[0,1,3,7,15,31,63,127])};msb.dpb=function dpb(a,b,c){var d,e,f,g,h,i;h=new Erb.S7;d=msb.epb(a,b);h.a+=' rb:';i=Hrb.rnb(h.a).length;for(f=0;f<d.length;f++){if(d[f]!=-1){Hrb.rnb(h.a).length!=i&&(h.a+=',',h);h.a+=f}}h.a+=' ti:';i=Hrb.rnb(h.a).length;for(g=0;g<d.length;g++){if(d[g]!=-1){Hrb.rnb(h.a).length!=i&&(h.a+=',',h);Erb.M7(h,d[g])}}h.a+=' (';i=Hrb.rnb(h.a).length;for(e=0;e<d.length;e++){if(d[e]!=-1){Hrb.rnb(h.a).length!=i&&(h.a+=',',h);Erb.M7(h,msb.znb(c,e,d[e]))}}Erb.P7(h,(Zrb.cV(),') '+Zrb.dV(b.a,3)));return h.a};msb.epb=function epb(a,b){var c,d,e;c=tX(Drb.NY,Qsb,6,a.e.length,15,1);for(e=0;e<a.e.length;e++){d=H3(msb.bpb[a.a[e]],a.b[e]);E3(j3(b.c[a.d[e]],d),0)?(c[e]=N3(I3(j3(b.b[a.d[e]],d),a.b[e]))):(c[e]=-1)}return c};msb.fpb=function fpb(a,b,c){var d,e,f,g,h,i,j,k,l;l=tX(Drb.OY,iub,6,1+a.d[a.d.length-1],14,1);d=0;for(g=b,i=0,k=g.length;i<k;++i){e=g[i];l[a.d[d]]=i3(l[a.d[d]],v3(e<<a.b[d]));++d}for(f=c,h=0,j=f.length;h<j;++h){e=f[h];l[a.d[d]]=i3(l[a.d[d]],v3(e<<a.b[d]));++d}return l};msb.gpb=function gpb(a,b,c,d,e){var f,g,h,i;for(g=c,h=0,i=g.length;h<i;++h){f=g[h];e[a.d[f]]=i3(e[a.d[f]],v3(b[f]<<a.b[f]));d[a.d[f]]=i3(d[a.d[f]],H3(msb.bpb[a.a[f]],a.b[f]))}};msb.hpb=function hpb(a,b,c){return E3(j3(b.c[a.d[c]],H3(1,a.b[c])),0)};msb.ipb=function ipb(a){var b,c;b=0;c=a-1;while(c>0){c>>=1;++b}return b};msb.jpb=function jpb(a,b){msb.cpb();var c,d,e,f,g,h,i,j,k,l,m,n;this.e=b;this.a=tX(Drb.NY,Qsb,6,b.length+a.length,15,1);this.b=tX(Drb.NY,Qsb,6,b.length+a.length,15,1);this.d=tX(Drb.NY,Qsb,6,b.length+a.length,15,1);c=0;f=0;e=0;for(h=b,i=0,j=h.length;i<j;++i){g=h[i];d=msb.ipb(g.d.length);if(c+d<=64){this.b[e]=c;c+=d}else{++f;this.b[e]=0;c=0}this.a[e]=d;this.d[e]=f;++e}for(l=a,m=0,n=l.length;m<n;++m){k=l[m];d=msb.ipb(k.b.length);if(c+d<=64){this.b[e]=c;c+=d}else{++f;this.b[e]=0;c=0}this.a[e]=d;this.d[e]=f;++e}this.c=f+1};Z3(324,1,{},msb.jpb);_.c=0;Drb.L2=B5(324);msb.kpb=function kpb(a,b){var c,d,e;e=0;for(d=new Krb.ueb(b);d.a<d.c.a.length;){c=Krb.teb(d);e+=msb.Sob(a,c.c,c.b)?a.b:0}return e};msb.lpb=function lpb(a,b,c){var d;d=new msb.Wob(b,c,a.D);msb.Vob(d,msb.ppb(a,d));return d};msb.mpb=function mpb(a){var b,c;if(a.A.d.a.length==0)return null;b=zY(a,102)?Krb.Sib(a.c,a.A.d.a.length):0;c=Zrb.nV(a.A,b);Zrb.pV(a.A,b);return c};msb.npb=function npb(a,b){var c,d,e,f,g;c=tX(Drb.LY,Osb,6,a.w.length+a.v.length,15,1);d=msb.Nnb(a.i,b.d).c;for(f=new Krb.ueb(d);f.a<f.c.a.length;){e=Krb.teb(f);if((msb.Sob(b,e.c,e.b)?b.b:0)!=0)for(g=0;g<c.length;g++)msb.hpb(a.D,e,g)&&(c[g]+=e.a)}return c};msb.opb=function opb(a,b,c){return a.f[b][c]};msb.ppb=function ppb(a,b){var c,d,e,f;d=1;for(f=0;f<a.v.length;f++)d*=msb.lob(a.v[f],b.d[f]);c=msb.Nnb(a.i,b.d);for(e=0;e<a.w.length;e++)d*=msb.Anb(c,e,b.i[e]);return d};msb.qpb=function qpb(a,b,c){var d,e,f,g,h,i,j;!!b&&b.g&&++a.C;!!b&&a.s>b.b&&(a.s=b.b);if(a.G)return msb.mpb(a);if(a.F.d.a.length==a.t){return null}if(!!b&&b.b>3){d=c?msb.Nnb(a.i,b.d):null;g=c?d.c:null;f=!c?0:g.a.length;msb.tpb(a,b);if(c)for(h=f;h<g.a.length;h++)msb.Gnb(Krb.kdb(c.a,Lrb.Zv(b.c)),msb.dpb(a.D,(Hrb.fnb(h,g.a.length),g.a[h]),d));b.g||(b.b<6?Zrb.lV(a.A,b):(!a.e||a.e.b>b.b)&&(a.e=b));++a.g}i=a.s+3;j=msb.spb(a,i,b);while(j){e=msb.kpb(j,msb.Nnb(a.i,j.d).c);if(e<i)break;e<6&&Zrb.lV(a.B,new msb.Kpb(j,e));++a.g;Zrb.tV(a.F,j);if(a.F.d.a.length==a.t){return null}i=a.s+3;j=msb.spb(a,i,j)}if(!j){if(a.A.d.a.length!=0){a.G=true;while(a.A.d.a.length!=0&&Zrb.nV(a.A,a.A.d.a.length-1).b>a.s+3)Zrb.pV(a.A,a.A.d.a.length-1);j=msb.mpb(a)}return j}Zrb.tV(a.F,j);return j};msb.rpb=function rpb(a,b,c){var d,e,f,g,h,i,j;Krb.Keb(a.q);a.p[0]=b;a.q[b]=true;f=0;g=0;while(f<=g){for(h=0;h<a.j[a.p[f]].length;h++){e=a.j[a.p[f]][h];if(e==c){d=1;i=f;while(i!=0){++d;i=a.r[i]}j=tX(Drb.NY,Qsb,6,d,15,1);j[0]=a.k[a.p[f]][h];d=1;while(f!=0){j[d++]=a.o[f];f=a.r[f]}return j}if(!a.q[e]){a.q[e]=true;++g;a.p[g]=e;a.o[g]=a.k[a.p[f]][h];a.r[g]=f}}++f}return null};msb.spb=function spb(a,b,c){var d;if(a.B.d.a.length!=0){d=Zrb.nV(a.B,0);if(d.a<b){Zrb.pV(a.B,0);return d.b}}return a.xc(c)};msb.tpb=function tpb(a,b){var c,d,e,f,g,h,i,j,k,l,m;c=b.a;m=b.i;for(g=1;g<c.length;g++){if(c[g]!=null){for(h=0;h<g;h++){if(c[g][h]!=0){k=a.f[g][h];l=new msb.apb(m,k,c[g][h],a.D);i=false;j=null;d=msb.Nnb(a.i,b.d).c;for(f=new Krb.ueb(d);f.a<f.c.a.length;){e=Krb.teb(f);if(msb.$ob(e,l)){i=true;break}if(msb._ob(e,l)){!j&&(j=new Krb.Yi);Hrb.Kmb(j.a,e)}}if(!i){!!j&&Krb.Yh(d,j);Hrb.Kmb(d.a,l)}}}}}};msb.upb=function upb(a,b){a.t=$wnd.Math.min(b,a.u)};\nmsb.vpb=function vpb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;this.i=a;this.w=a.s;this.v=a.q;this.D=new msb.jpb(this.v,this.w);this.n=0;for(j=this.w,m=0,p=j.length;m<p;++m){h=j[m];this.n=$wnd.Math.max(this.n,$wnd.Math.max(1+h.i,1+h.j))}b=tX(Drb.NY,Qsb,6,this.n,15,1);for(k=this.w,n=0,q=k.length;n<q;++n){h=k[n];++b[h.i];++b[h.j]}this.j=tX(Drb.NY,lub,7,b.length,0,2);this.k=tX(Drb.NY,lub,7,b.length,0,2);for(g=0;g<b.length;g++){this.j[g]=tX(Drb.NY,Qsb,6,b[g],15,1);this.k[g]=tX(Drb.NY,Qsb,6,b[g],15,1)}Krb.Meb(b,b.length,0);for(f=0;f<this.w.length;f++){d=msb.Mob(this.w[f],0);e=msb.Mob(this.w[f],1);this.j[d][b[d]]=e;this.j[e][b[e]]=d;this.k[d][b[d]]=f;this.k[e][b[e]]=f;++b[d];++b[e]}this.p=tX(Drb.NY,Qsb,6,this.n,15,1);this.o=tX(Drb.NY,Qsb,6,this.n,15,1);this.r=tX(Drb.NY,Qsb,6,this.n,15,1);this.q=tX(Drb.c3,itb,6,this.n,16,1);this.f=tX(Drb.NY,ssb,25,this.n,0,3);for(c=1;c<this.n;c++){this.f[c]=tX(Drb.NY,lub,7,c,0,2);for(e=0;e<c;e++)this.f[c][e]=msb.rpb(this,c,e)}this.u=1;for(i=this.w,l=0,o=i.length;l<o;++l){h=i[l];this.u*=h.d.length}for(s=this.v,t=0,u=s.length;t<u;++t){r=s[t];this.u*=r.b.length}this.u<=0&&(this.u=xsb);this.F=new Zrb.vV;this.A=new Zrb.rV((Hrb.gnb(new msb.wpb),new Krb.hhb));this.B=new Zrb.qV;this.g=0;this.C=0;this.s=3;this.G=false;this.t=$wnd.Math.min(Hsb,this.u)};Z3(199,1,{});_.g=0;_.n=0;_.s=0;_.t=0;_.u=0;_.C=0;_.G=false;Drb.R2=B5(199);msb.wpb=function wpb(){};Z3(297,1,{},msb.wpb);Drb.M2=B5(297);msb.xpb=function xpb(a){var b,c,d,e,f,g,h,i,j,k,l;if(a.F.d.a.length==a.u)return null;k=tX(Drb.NY,Qsb,6,a.w.length,15,1);c=tX(Drb.NY,Qsb,6,a.v.length,15,1);d=0;do{if(d++==64)return null;if(a.b){h=d/64;for(j=0;j<a.v.length;j++)c[j]=msb.oob(a.v[j],Krb.Rib(a.c),h);b=msb.Nnb(a.i,c);for(i=0;i<a.w.length;i++)k[i]=msb.ynb(b,i,Krb.Rib(a.c),h)}else{for(g=0;g<a.v.length;g++)c[g]=Krb.Sib(a.c,a.v[g].b.length);for(f=0;f<a.w.length;f++)k[f]=Krb.Sib(a.c,a.w[f].d.length)}l=msb.lpb(a,k,c)}while(e=Zrb.oV(a.F,l),(e<0?-1:e)!=-1);return l};msb.ypb=function ypb(a,b,c){msb.vpb.call(this,a);this.b=b;this.c=o3(c,0)==0?new Krb.Vib:new Krb.Wib(c)};Z3(102,199,{102:1},msb.ypb);_.xc=function zpb(a){return msb.xpb(this)};_.b=false;Drb.Q2=B5(102);msb.Apb=function Apb(a,b){msb.ypb.call(this,a,true,b);this.a=true};Z3(177,102,{102:1},msb.Apb);_.xc=function Bpb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;if(!a){return this.a?msb.lpb(this,tX(Drb.NY,Qsb,6,this.w.length,15,1),tX(Drb.NY,Qsb,6,this.v.length,15,1)):msb.xpb(this)}if(a.b==0)return msb.xpb(this);d=msb.npb(this,a);c=a.i;b=a.d;k=tX(Drb.c3,itb,6,d.length,16,1);for(f=0;f<64;f++){(k[0]||this.w[0].d.length==1)&&(d[0]=0);j=1;for(h=1;h<this.w.length;h++){k[j]||this.w[h].d.length==1?(d[j]=d[j-1]):(d[j]+=d[j-1]);++j}for(o=this.v,p=0,q=o.length;p<q;++p){n=o[p];k[j]||n.b.length==1?(d[j]=d[j-1]):(d[j]+=d[j-1]);++j}if(d[d.length-1]==0)return msb.xpb(this);m=Krb.Rib(this.c)*d[d.length-1];for(g=0;g<d.length;g++){if(m<d[g]){r=Krb.Ceb(c,c.length);e=Krb.Ceb(b,b.length);if(g<this.w.length){for(l=1;l<this.w[g].d.length;l++){++r[g];r[g]==this.w[g].d.length&&(r[g]=0);s=msb.lpb(this,r,e);i=Zrb.oV(this.F,s);if((i<0?-1:i)==-1)return s}}else{g-=this.w.length;for(l=1;l<this.v[g].b.length;l++){++e[g];e[g]==this.v[g].b.length&&(e[g]=0);s=msb.lpb(this,r,e);i=Zrb.oV(this.F,s);if((i<0?-1:i)==-1)return s}}k[g]=true;break}}}return msb.xpb(this)};_.a=false;Drb.N2=B5(177);msb.Cpb=function Cpb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;c=-1;j=false;n=Eub;b=msb.Nnb(a.i,a.c);for(p=0;p<a.d.length;p++){if(a.d[p]<a.w[p].d.length-1){m=msb.Anb(b,p,a.d[p])/msb.Anb(b,p,a.d[p]+1);if(n>m){n=m;c=p}}}for(q=0;q<a.c.length;q++){if(a.c[q]<a.v[q].b.length-1){m=msb.lob(a.v[q],a.c[q])/msb.lob(a.v[q],a.c[q]+1);if(n>m){n=m;c=q;j=true}}}if(c==-1){a.a=null;return}f=1;for(h=0;h<a.d.length;h++)(j||h!=c)&&(f*=a.d[h]+1);for(i=0;i<a.c.length;i++)(!j||i!=c)&&(f*=a.c[i]+1);a.a=tX(Drb.T2,mub,136,f,0,1);j?++a.c[c]:++a.d[c];for(g=0;g<f;g++){o=g;s=tX(Drb.NY,Qsb,6,a.d.length,15,1);for(l=0;l<a.d.length;l++){if(j||l!=c){r=a.d[l]+1;if(r!=1){s[l]=o%r;o=o/r|0}}}e=tX(Drb.NY,Qsb,6,a.c.length,15,1);for(k=0;k<a.c.length;k++){if(!j||k!=c){d=a.c[k]+1;if(d!=1){e[k]=o%d;o=o/d|0}}}j?(e[c]=a.c[c]):(s[c]=a.d[c]);a.a[g]=msb.lpb(a,s,e)}Krb.Yeb(a.a,new msb.Gpb);a.b=-1};msb.Dpb=function Dpb(a){msb.vpb.call(this,a);this.d=tX(Drb.NY,Qsb,6,this.w.length,15,1);this.c=tX(Drb.NY,Qsb,6,this.v.length,15,1);this.a=tX(Drb.T2,mub,136,1,0,1);this.a[0]=msb.lpb(this,tX(Drb.NY,Qsb,6,this.w.length,15,1),tX(Drb.NY,Qsb,6,this.v.length,15,1));this.b=-1};msb.Fpb=function Fpb(a,b){return e6(b.e,a.e)};Z3(234,199,{},msb.Dpb);_.xc=function Epb(a){if(this.a==null)return null;this.b+1==this.a.length&&msb.Cpb(this);if(this.a==null)return null;++this.b;return this.a[this.b]};_.b=0;Drb.P2=B5(234);msb.Gpb=function Gpb(){};Z3(301,1,{},msb.Gpb);_.qb=function Hpb(a,b){return msb.Fpb(a,b)};_.jb=function Ipb(a){return this===a};Drb.O2=B5(301);msb.Jpb=function Jpb(a,b){return a.a<b.a?-1:a.a>b.a?1:0};msb.Kpb=function Kpb(a,b){this.b=a;this.a=b};Z3(218,1,{28:1,218:1},msb.Kpb);_.rb=function Lpb(a){return msb.Jpb(this,a)};_.a=0;Drb.S2=B5(218);nsb.Npb=function Npb(){nsb.Npb=_3;nsb.Mpb=BX(nX(Drb.B0,1),Esb,2,6,['distance','plane','line','torsion','stereo','binap'])};nsb.Opb=function Opb(a,b){var c;if(a.f==null){b.a+=' atoms:<null>'}else{Erb.P7(b,' atoms:'+a.f[0]);for(c=1;c<a.f.length;c++)Erb.P7(b,','+a.f[c])}};nsb.Ppb=function Ppb(a,b,c,d,e,f){var g,h,i,j,k;Jrb.qh(a.k[b],d,e,f);k=a.o;for(i=0;i<k.e[b];i++){g=k.i[b][i];h=false;if(c!=null){for(j=0;j<c.length;j++){if(g==c[j]){h=true;break}}}h||(k.e[g]==1?Jrb.qh(a.k[g],d,e,f):Jrb.Mo(k,k.k[b][i])?Jrb.qh(a.k[g],d/3,e/3,f/3):nsb.Qpb(a,b,g,d,e,f))}};nsb.Qpb=function Qpb(a,b,c,d,e,f){var g,h,i,j,k,l,m;Jrb.qh(a.k[c],d,e,f);m=a.o;l=tX(Drb.c3,itb,6,m.q,16,1);i=tX(Drb.NY,Qsb,6,m.q,15,1);i[0]=c;l[b]=true;l[c]=true;h=0;j=0;while(h<=j){for(k=0;k<Jrb.rn(m,i[h]);k++){g=Jrb.Fn(m,i[h],k);if(!l[g]){l[g]=true;i[++j]=g;Jrb.qh(a.k[g],d,e,f)}}++h}};nsb.Rpb=function Rpb(a){this.f=a;this.g=true};nsb.Spb=function Spb(a,b,c,d,e){nsb.Npb();var f,g,h,i,j,k,l,m,n,o,p;for(i=0;i<b.length;i++)Jrb.rh(c,Lrb.Yv(a,b[i]));Jrb.Ah(c,1/b.length);for(j=0;j<b.length;j++){e[j][0]=Lrb.$v(a,b[j])-c.a;e[j][1]=Lrb._v(a,b[j])-c.b;e[j][2]=Lrb.aw(a,b[j])-c.c}o=rX(Drb.LY,[ssb,Osb],[12,6],15,[3,3],2);for(k=0;k<b.length;k++)for(l=0;l<3;l++)for(m=0;m<3;m++)o[l][m]+=e[k][l]*e[k][m];p=new Irb.Sc(o);f=p.e;n=0;for(h=1;h<3;h++)f[h]<f[n]&&(n=h);g=p.a;d.a=g[0][n];d.b=g[1][n];d.c=g[2][n]};nsb.Tpb=function Tpb(a,b,c,d,e){var f,g,h,i,j,k,l,m,n;l=d.a;m=d.b;n=d.c;f=$wnd.Math.cos(e);j=$wnd.Math.sin(e);k=1-f;g=a.k[b].a-c.a;h=a.k[b].b-c.b;i=a.k[b].c-c.c;Lrb.fw(a,b,c.a+(k*l*l+f)*g+(k*l*m+j*n)*h+(k*l*n-j*m)*i);Lrb.gw(a,b,c.b+(k*l*m-j*n)*g+(k*m*m+f)*h+(k*m*n+j*l)*i);Lrb.hw(a,b,c.c+(k*l*n+j*m)*g+(k*n*m-j*l)*h+(k*n*n+f)*i)};nsb.Upb=function Upb(a,b,c,d,e,f){nsb.Npb();var g,h,i,j,k,l,m,n,o,p,q;m=a.o;g=tX(Drb.c3,itb,6,m.q,16,1);j=tX(Drb.NY,Qsb,6,m.q,15,1);j[0]=b;g[b]=true;for(o=c,p=0,q=o.length;p<q;++p){n=o[p];g[n]=true}nsb.Tpb(a,b,d,e,f);i=0;k=0;while(i<=k){for(l=0;l<Jrb.rn(m,j[i]);l++){h=Jrb.Fn(m,j[i],l);if(!g[h]){g[h]=true;j[++k]=h;nsb.Tpb(a,h,d,e,f)}}++i}};Z3(45,1,dAb);_.g=false;Drb.V2=B5(45);nsb.Vpb=function Vpb(a,b,c){var d,e,f,g,h,i,j,k,l,m;d=tX(Drb.NY,Qsb,6,a.f,15,1);l=tX(Drb.c3,itb,6,a.f,16,1);l[c]=true;l[b]=true;d[0]=b;g=0;h=1;while(g<=h){for(j=0;j<Jrb.Gn(a,d[g]);j++){if(Jrb.zo(a,Jrb.Hn(a,d[g],j))){f=Jrb.Fn(a,d[g],j);if(!l[f]){d[++h]=f;l[f]=true}}}++g}for(k=0;k<=h;k++){for(m=0;m<Jrb.Gn(a,d[k]);m++){f=Jrb.Fn(a,d[k],m);!l[f]&&!Jrb.Mo(a,Jrb.Hn(a,d[k],m))&&Jrb.po(a,d[k],f,l,null,null)}}l[c]=false;for(i=0;i<=h;i++)l[d[i]]=false;for(e=0;e<l.length;e++)l[e]&&(d[++h]=e);return Hrb.cnb(h+1),Krb.Eeb(d,tX(Drb.NY,Qsb,6,h+1,15,1),0,h+1)};nsb.Wpb=function Wpb(a,b,c,d,e){var f,g,h,i,j,k,l;if(c)return nsb.Vpb(b,d[1],d[2]);j=rX(Drb.c3,[ssb,itb],[11,6],16,[2,b.q],2);g=tX(Drb.NY,Qsb,6,2,15,1);for(h=0;h<2;h++)g[h]=Jrb.po(b,d[1+h],e[h],j[h],null,null);l=g[0]<g[1]?0:1;k=tX(Drb.NY,Qsb,6,g[l],15,1);i=0;for(f=0;f<b.q;f++)j[l][f]&&(k[i++]=f);a.a=l==1;return k};nsb.Xpb=function Xpb(a,b,c,d,e){nsb.Rpb.call(this,b);this.c=nsb.Wpb(this,a,d,b,c);this.b=e};nsb.$pb=function $pb(a,b){nsb.Npb();var c,d,e,f,g,h,i,j,k,l,m;for(f=0;f<b.f;f++){if(b.o[f]==2&&b.j[f]==2&&b.n[f][0]==2&&b.n[f][1]==2&&b.C[f]<=7){k=b.u[f]&3;if(k==1||k==2){d=tX(Drb.NY,Qsb,6,4,15,1);m=tX(Drb.NY,Qsb,6,2,15,1);for(h=0;h<b.j[f];h++){c=b.i[f][h];j=xsb;for(i=0;i<b.j[c];i++){g=b.i[c][i];g!=f&&j>g&&(j=g)}d[3*h]=j;d[1+h]=c;m[h]=f}if(d[0]==xsb||d[3]==xsb){Erb.X7();'Unexpected MAX_VALUE idcode:'+Jrb.Kf(new Jrb.eg(b));String.fromCharCode(10);break}Krb.Ei(a,new nsb.Xpb(b,d,m,(b.u[f]&Oub)!=0,k==1))}}}for(e=0;e<b.g;e++){k=b.F[e]&3;if((k==1||k==2)&&Jrb.Qk(b,e)!=2){d=tX(Drb.NY,Qsb,6,4,15,1);m=tX(Drb.NY,Qsb,6,2,15,1);for(h=0;h<2;h++){c=b.D[h][e];l=b.D[1-h][e];j=xsb;for(i=0;i<b.j[c];i++){g=b.i[c][i];g!=l&&j>g&&(j=g)}d[3*h]=j;d[1+h]=c;m[h]=b.D[1-h][e]}Krb.Ei(a,new nsb.Xpb(b,d,m,(b.F[e]&64)!=0,k==2))}}};Z3(207,45,dAb,nsb.Xpb);_.yc=function Ypb(a,b){var c,d,e,f,g;g=Lrb.Sv(a,this.f)<0?1:0;if(b!=null)for(d=this.f,e=0,f=d.length;e<f;++e){c=d[e];b[c]+=g/4}return g};_.zc=function Zpb(a,b){var c,d,e,f,g,h,i;h=Lrb.Sv(a,this.f);if(h==0||this.b==h>0)return false;i=Jrb.Eh(Lrb.Yv(a,this.f[2]),Lrb.Yv(a,this.f[1]));Jrb.Fh(i);g=$wnd.Math.abs(h)<otb?-2*h:2*(ntb-h);this.a&&(g=-g);for(d=this.c,e=0,f=d.length;e<f;++e){c=d[e];nsb.Tpb(a,c,Lrb.Yv(a,this.f[1]),i,g)}return true};_.Ac=function _pb(){return 5};_.mb=function aqb(){var a;a=new Erb.U7('binap rule ('+(this.b?'positive':'negative')+' torsion):');nsb.Opb(this,a);return a.a};_.a=false;_.b=false;Drb.U2=B5(207);nsb.cqb=function cqb(){nsb.cqb=_3;nsb.bqb=BX(nX(Drb.NY,1),Qsb,6,15,[40,20,20,100,20])};nsb.dqb=function dqb(a,b){var c,d,e;a.g==null&&(a.g=Lrb.Sw(a.d));if(b.e>a.c+2.72)return false;Lrb.Rv(b,a.g);for(d=a.a.a.length-1;d>=0;d--){e=Krb.Ji(a.a,d);Lrb.Wv(b,e);if(Lrb.Dw(b.q,e.q)){if(e.e>b.e){Krb.Qi(a.a,d);Krb.Ei(a.a,b);a.c>b.e&&(a.c=b.e);return true}return false}}Krb.Ei(a.a,b);if(a.c>b.e){a.c=b.e;for(c=a.a.a.length-1;c>=0;c--){e=Krb.Ji(a.a,c);e.e>a.c+2.72&&Krb.Qi(a.a,c)}}return true};nsb.eqb=function eqb(a){var b;for(b=0;b<a.o.q;b++)if((a.a==null?NaN:a.a[b])>1000||(a.a==null?NaN:a.a[b])>2000)return true;return false};nsb.fqb=function fqb(a,b){var c,d,e,f,g,h,i,j,k,l,m;nsb.Wqb(b,a.j);f=0;for(d=0;d<a.d.q;d++){g=b.a==null?NaN:b.a[d];g>1000&&nsb.oqb(a,b,d)&&++f}if(f==0){m=16;for(e=0;e<a.d.q;e++)m>Jrb.rn(a.d,e)&&(b.a==null?NaN:b.a[e])>(k=$wnd.Math.min(4,Jrb.rn(a.d,e)),400+k*2000/5)&&(m=Jrb.rn(a.d,e));if(m!=16){for(c=0;c<a.d.q;c++){if(m==Jrb.rn(a.d,c)&&(b.a==null?NaN:b.a[c])>(j=$wnd.Math.min(4,Jrb.rn(a.d,c)),400+j*2000/5)){h=b.k[c];if(Jrb.rn(a.d,c)==1){i=Lrb.Yv(b,Jrb.Fn(a.d,c,0));Jrb.qh(h,2*(i.a-h.a),2*(i.b-h.b),2*(i.c-h.c))}else{l=Jrb.rn(a.d,c)==0?16:8;Jrb.qh(h,l*Krb.Rib(a.f)-l/2,l*Krb.Rib(a.f)-l/2,l*Krb.Rib(a.f)-l/2)}++f}}}}f!=0&&nsb.Yqb(b);return f};nsb.gqb=function gqb(a,b){var c,d,e,f;a.f=o3(b,0)==0?new Krb.Vib:new Krb.Wib(b);d=new nsb.Zqb(a.d);c=null;for(e=0;e<12;e++){if(E3(a.n,0)&&(Erb.X7(),w3(u3(Date.now()),a.n)))break;if(nsb.qqb(a,d)||o3(b,0)!=0)return d;if(!c){c=d;d=new nsb.Zqb(a.d)}else if(c.e>d.e){f=c;c=d;d=f}}return c};nsb.hqb=function hqb(a){var b,c,d;if(!a.a)return null;a.e||nsb.iqb(a,1);b=null;for(d=new Krb.ueb(a.a);d.a<d.c.a.length;){c=Krb.teb(d);!c.b&&(!b||b.e>c.e)&&(b=c)}b?(b.b=true):(a.a=null);return b};nsb.iqb=function iqb(a,b){var c,d,e,f,g,h;c=null;d=null;e=a.a.a.length+b;h=b*12;for(f=0;f<h&&a.a.a.length<e&&!(E3(a.n,0)&&(Erb.X7(),w3(u3(Date.now()),a.n)));f++){!d&&(d=new nsb.Zqb(a.d));if(nsb.qqb(a,d)){nsb.dqb(a,d)&&(d=null)}else{if(!c){c=d;d=null}else if(c.e>d.e){g=c;c=d;d=g}}}a.a.a.length==0&&!!c&&Krb.Ei(a.a,c);(a.a.a.length<e||a.a.a.length==a.b)&&(a.e=true)};nsb.jqb=function jqb(a,b,c){var d,e,f;a.f=o3(b,0)==0?new Krb.Vib:new Krb.Wib(b);a.a=new Krb.Yi;a.c=Eub;a.e=false;e=0;f=0;for(d=0;d<a.d.g;d++){!Jrb.zo(a.d,d)&&Jrb.Qk(a.d,d)==1&&Jrb.rn(a.d,Jrb.Ik(a.d,0,d))>1&&Jrb.rn(a.d,Jrb.Ik(a.d,1,d))>1&&(Jrb.Mo(a.d,d)?Jrb.En(a.d,d)>4&&++f:++e)}a.b=c==-1?1<<1+e+(f/2|0):c;nsb.iqb(a,$wnd.Math.min(8,a.b))};nsb.kqb=function kqb(a){var b;for(b=0;b<a.o.q;b++)if((a.a==null?NaN:a.a[b])>2.72)return false;return true};nsb.lqb=function lqb(a,b){var c,d,e,f;e=2+2*$wnd.Math.sqrt(a.d.q);for(d=0;d<a.d.q;d++){if(Jrb.rn(a.d,d)!=1){Lrb.fw(b,d,e*Krb.Rib(a.f)-e/2);Lrb.gw(b,d,e*Krb.Rib(a.f)-e/2);Lrb.hw(b,d,e*Krb.Rib(a.f)-e/2)}}for(c=0;c<a.d.q;c++){if(Jrb.rn(a.d,c)==1){f=Jrb.Fn(a.d,c,0);Lrb.fw(b,c,b.k[f].a+4*Krb.Rib(a.f)-2);Lrb.gw(b,c,b.k[f].b+4*Krb.Rib(a.f)-2);Lrb.hw(b,c,b.k[f].c+4*Krb.Rib(a.f)-2)}}nsb.Yqb(b)};nsb.mqb=function mqb(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;i=nsb.bqb[d];h=1;n=d==4?$wnd.Math.exp($wnd.Math.log(0.01)/i):1;e=a.d.q*a.d.q;m=tX(Drb.LY,Osb,6,10,15,1);l=0;for(k=0;k<i&&!(E3(a.n,0)&&(Erb.X7(),w3(u3(Date.now()),a.n)));k++){d!=0&&k%10==0&&nsb.pqb(a,b);for(j=0;j<e&&!(E3(a.n,0)&&(Erb.X7(),w3(u3(Date.now()),a.n)));j++){o=null;o=Krb.Ji(a.j,IY(Krb.Rib(a.f)*a.j.a.length));if(o.g&&!a.k[o.Ac()]){g=o.zc(b,h);g&&nsb.Yqb(b)}}nsb.Wqb(b,a.j);m[l++]=b.e;l==10&&(l=0);if(k>10){f=0;for(q=m,r=0,s=q.length;r<s;++r){p=q[r];f+=p}f/=10;if(b.e>f)break}c.e>b.e&&(Lrb.Vv(c,b),nsb.Xqb(c,b));h*=n}b.e>c.e&&(Lrb.Vv(b,c),nsb.Xqb(b,c))};nsb.nqb=function nqb(a,b){a.n=b};nsb.oqb=function oqb(a,b,c){var d,e,f,g,h,i,j;if(Jrb.rn(a.d,c)==1){f=Jrb.Fn(a.d,c,0);if(Jrb.Oo(a.d,f)){d=b.k[c];e=b.k[f];i=new Jrb.Hh(e.a-d.a,e.b-d.b,e.c-d.c);for(g=0;g<Jrb.Gn(a.d,f);g++){h=Jrb.Fn(a.d,f,g);if(Jrb.Lo(a.d,h)){j=Jrb.Eh(e,b.k[h]);if(Jrb.yh(i,j)>otb)return false}}Jrb.rh(Jrb.rh(d,i),i);return true}}return false};nsb.pqb=function pqb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;f=false;B=Jrb.jo(a.d);for(s=0;s<B.i.a.length;s++){A=Krb.Ji(B.i,s);if(A.length==6&&!B.e[s]){n=true;for(u=Krb.Ji(B.j,s),v=0,w=u.length;v<w;++v){t=u[v];if(Jrb.Qk(a.d,t)!=1||Jrb.Do(a.d,t)){n=false;break}}if(n){g=new Jrb.Gh;p=new Jrb.Gh;i=rX(Drb.LY,[ssb,Osb],[12,6],15,[6,3],2);nsb.Spb(b,A,g,p,i);j=tX(Drb.LY,Osb,6,A.length,15,1);C=0;for(l=0;l<A.length;l++){j[l]=-(p.a*i[l][0]+p.b*i[l][1]+p.c*i[l][2]);j[l]<0^(l&1)==1&&++C}if(C!=0&&C!=6){for(k=0;k<A.length;k++){if(j[k]<0^(k&1)==1^C>=3){q=tX(Drb.NY,Qsb,6,2,15,1);q[0]=A[k==0?5:k-1];q[1]=A[k==5?0:k+1];r=Lrb.Yv(b,A[k]);d=Jrb.Fh(Jrb.vh(Jrb.Eh(Lrb.Yv(b,A[k]),g),p));c=0.6+$wnd.Math.asin($wnd.Math.abs(j[k])/$wnd.Math.sqrt((g.a-r.a)*(g.a-r.a)+(g.b-r.b)*(g.b-r.b)+(g.c-r.c)*(g.c-r.c)));D=j[k]<0?c:-c;e=Jrb.th(new Jrb.Ih(r),g);m=false;if(Jrb.Gn(a.d,A[k])>2){for(o=0;o<Jrb.Gn(a.d,A[k]);o++){h=Jrb.Fn(a.d,A[k],o);if(h!=q[0]&&h!=q[1]&&Jrb.Mo(a.d,Jrb.Hn(a.d,A[k],o))){m=true;break}}}m||nsb.Upb(b,A[k],q,e,d,D)}}f=true}}}}if(f){nsb.Yqb(b);nsb.Wqb(b,a.j)}return f};nsb.qqb=function qqb(a,b){var c,d,e,f,g;if(a.d.q<2)return true;for(g=new Krb.ueb(a.j);g.a<g.c.a.length;){f=Krb.teb(g);f.g=true}for(e=0;e<a.k.length;e++)a.k[e]=false;nsb.lqb(a,b);c=new nsb.$qb(b);nsb.mqb(a,b,c,0);for(d=0;nsb.eqb(b)&&d<3&&!(E3(a.n,0)&&(Erb.X7(),w3(u3(Date.now()),a.n)));d++){if(nsb.fqb(a,b)==0)break;nsb.mqb(a,b,c,2)}nsb.mqb(a,b,c,3);nsb.mqb(a,b,c,4);return nsb.kqb(b)};nsb.rqb=function rqb(a){nsb.cqb();this.d=a;Jrb.ou(this.d,15);this.j=new Krb.Yi;this.k=tX(Drb.c3,itb,6,(nsb.Npb(),nsb.Mpb).length,16,1);this.i=tX(Drb.NY,Qsb,6,nsb.Mpb.length,15,1);nsb.Fqb(this.j,a);this.i[0]=this.j.a.length;this.i[1]=-this.j.a.length;nsb.Sqb(this.j,a);this.i[1]+=this.j.a.length;this.i[2]=-this.j.a.length;nsb.crb(this.j,a);this.i[2]+=this.j.a.length;this.i[4]=-this.j.a.length;nsb.nrb(this.j,a);this.i[4]+=this.j.a.length;this.i[5]=-this.j.a.length;nsb.$pb(this.j,a);this.i[5]+=this.j.a.length;this.i[3]=-this.j.a.length;nsb.yrb(this.j,a);this.i[3]+=this.j.a.length};Z3(130,1,{},nsb.rqb);_.b=0;_.c=0;_.e=false;_.n=0;Drb.W2=B5(130);nsb.sqb=function sqb(a){return Hsb*a*a};nsb.tqb=function tqb(a){return 4000*a*a};nsb.uqb=function uqb(a){return 8000*a*a};nsb.vqb=function vqb(a,b,c){var d,e,f;f=1.02*nsb.Iqb(a.f[1],b)+nsb.Iqb(a.f[0],b);d=c/f;e=$wnd.Math.pow(d,-6);return d>=1?0:2*(e*e-e)};nsb.wqb=function wqb(a,b){var c,d;c=Jrb.wh(Lrb.Yv(b,a.f[1]),Lrb.Yv(b,a.f[0]));if(a.a.length==2){if(c<1.02*a.a[0]){return nsb.vqb(a,b.o,c)}else if(c>a.a[1]){return nsb.tqb((c-a.a[1])/c)}}else{d=a.c==10?nsb.sqb($wnd.Math.abs(a.a[0]-c)/$wnd.Math.max(a.a[0],c)):a.c==5?nsb.uqb($wnd.Math.abs(a.a[0]-c)/$wnd.Math.max(a.a[0],c)):nsb.tqb($wnd.Math.abs(a.a[0]-c)/$wnd.Math.max(a.a[0],c));if($wnd.Math.abs(d)>0.009999999776482582)return d}return 0};nsb.xqb=function xqb(){nsb.Rpb.call(this,null)};nsb.yqb=function yqb(a,b){nsb.Rpb.call(this,a);this.a=tX(Drb.LY,Osb,6,2,15,1);this.a[0]=b;this.a[1]=Eub;this.c=-1};nsb.zqb=function zqb(a,b,c,d,e){nsb.Rpb.call(this,a);this.a=tX(Drb.LY,Osb,6,2,15,1);this.a[0]=c;this.a[1]=d;this.b=b;this.c=e};nsb.Aqb=function Aqb(a,b,c,d){nsb.Rpb.call(this,a);this.a=tX(Drb.LY,Osb,6,1,15,1);this.a[0]=c;this.b=b;this.c=d};nsb.Dqb=function Dqb(a,b){var c,d,e,f;for(c=1;c<b.q;c++){for(d=0;d<c;d++){!a[c][d]&&xX(a[c],d,new nsb.yqb(nsb.Gqb(c,d),(f=b.C[c],(f<(Lrb.nx(),Lrb.mx).length?Lrb.mx[f]:2)+(e=b.C[d],e<Lrb.mx.length?Lrb.mx[e]:2))))}}};nsb.Eqb=function Eqb(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o;g=tX(Drb.NY,Qsb,6,c.q,15,1);k=tX(Drb.NY,Qsb,6,c.q,15,1);j=tX(Drb.LY,Osb,6,c.q,15,1);k[0]=b;i=0;l=0;while(i<=l){o=k[i];for(m=0;m<c.e[o];m++){h=c.i[o][m];if(g[h]==0&&h!=b){k[++l]=h;g[h]=g[o]+1;if(g[h]==2)j[h]=h<b?a[b][h].a[0]:a[h][b].a[0];else if(g[h]>2){j[h]=j[o]+Lrb.Iv(d,c.k[o][m]);if(h<b&&!a[b][h]){if(g[h]==3){xX(a[b],h,new nsb.xqb)}else{n=tX(Drb.NY,Qsb,6,2,15,1);n[0]=k[1];n[1]=o;xX(a[b],h,new nsb.zqb(nsb.Gqb(b,h),n,(f=c.C[b],(f<(Lrb.nx(),Lrb.mx).length?Lrb.mx[f]:2)+(e=c.C[h],e<Lrb.mx.length?Lrb.mx[e]:2)),j[h],0))}}}}}++i}};nsb.Fqb=function Fqb(a,b){nsb.Npb();var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W;q=new Lrb.Jv(b);n=new Lrb.Av(b,q);W=tX(Drb.X2,ssb,387,b.q,0,2);for(L=1;L<b.q;L++)W[L]=tX(Drb.X2,{4:1,5:1,8:1,388:1,387:1},70,L,0,1);for(m=0;m<b.r;m++){g=nsb.Gqb(b.D[0][m],b.D[1][m]);nsb.Mqb(W,g,g,q.a[m],10)}for(j=0;j<b.f;j++){for(M=1;M<b.e[j];M++){v=b.i[j][M];B=b.k[j][M];o=q.a[B];for(R=0;R<M;R++){w=b.i[j][R];C=b.k[j][R];c=M<R?n.a[j][R][M]:n.a[j][M][R];p=q.a[C];F=$wnd.Math.sqrt(o*o+p*p-2*o*p*$wnd.Math.cos(c));T=tX(Drb.NY,Qsb,6,1,15,1);T[0]=j;nsb.Mqb(W,nsb.Gqb(v,w),T,F,5)}}}for(l=0;l<b.r;l++){if(l<b.g&&Jrb.Gr(b.p,l)||(b.F[l]&64)!=0&&(!!b.p&&l<b.g?Jrb.wr(b.p,l):0)<=5)continue;g=tX(Drb.NY,Qsb,6,2,15,1);for(M=0;M<2;M++)g[M]=b.D[M][l];if(Jrb.rn(b,g[0])>1&&Jrb.rn(b,g[1])>1){if(Jrb.Qk(b,l)==3){F=q.a[l];V=tX(Drb.NY,Qsb,6,2,15,1);for(N=0;N<2;N++){for(R=0;R<Jrb.rn(b,g[N]);R++){A=Jrb.Hn(b,g[N],R);if(A!=l){F+=q.a[A];V[N]=Jrb.Fn(b,g[N],R);break}}}T=tX(Drb.NY,Qsb,6,2,15,1);T[0]=g[0];T[1]=g[1];nsb.Mqb(W,nsb.Gqb(V[0],V[1]),T,F,3)}else if(Jrb.Qk(b,l)==2&&Jrb.wn(b,g[0])==1&&Jrb.wn(b,g[1])==1&&(b.F[l]&3)!=3){u=tX(Drb.NY,lub,7,2,0,2);A=tX(Drb.NY,lub,7,2,0,2);t=tX(Drb.LY,ssb,12,2,0,2);for(N=0;N<2;N++){u[N]=tX(Drb.NY,Qsb,6,Jrb.rn(b,g[N])-1,15,1);A[N]=tX(Drb.NY,Qsb,6,Jrb.rn(b,g[N])-1,15,1);t[N]=tX(Drb.LY,Osb,6,Jrb.rn(b,g[N])-1,15,1);G=-1;for(R=0;R<Jrb.rn(b,g[N]);R++){if(Jrb.Fn(b,g[N],R)==g[1-N]){G=R;break}}D=0;for(S=0;S<Jrb.rn(b,g[N]);S++){if(S!=G){u[N][D]=Jrb.Fn(b,g[N],S);A[N][D]=Jrb.Hn(b,g[N],S);t[N][D]=Lrb.wv(n,g[N],G,S);++D}}}for(O=0;O<u[0].length;O++){for(R=0;R<u[1].length;R++){P=(b.F[l]&3)==1;u[0].length==2&&u[0][O]>u[0][1-O]&&(P=!P);u[1].length==2&&u[1][R]>u[1][1-R]&&(P=!P);nsb.Lqb(u[0][O],u[1][R],A[0][O],A[1][R],t[0][O],t[1][R],l,P,q,W,b)}}}else if(Jrb.Qk(b,l)!=0){U=tX(Drb.NY,Qsb,6,2,15,1);for(N=0;N<2;N++){for(R=0;R<Jrb.rn(b,g[N]);R++){if(Jrb.Fn(b,g[N],R)==g[1-N]){U[N]=R;break}}}for(O=0;O<Jrb.rn(b,g[0]);O++){if(O!=U[0]){for(R=0;R<Jrb.rn(b,g[1]);R++){R!=U[1]&&(Jrb.wn(b,g[0])==0&&Jrb.wn(b,g[1])==0?nsb.Nqb(Jrb.Fn(b,g[0],O),Jrb.Fn(b,g[1],R),Jrb.Hn(b,g[0],O),Jrb.Hn(b,g[1],R),Lrb.wv(n,g[0],U[0],O),Lrb.wv(n,g[1],U[1],R),l,q,W,b):nsb.Kqb(Jrb.Fn(b,g[0],O),Jrb.Fn(b,g[1],R),Jrb.Hn(b,g[0],O),Jrb.Hn(b,g[1],R),Lrb.wv(n,g[0],U[0],O),Lrb.wv(n,g[1],U[1],R),l,q,W,b))}}}}}}for(k=0;k<b.f;k++){if(b.o[k]==2&&b.j[k]==2&&b.n[k][0]==2&&b.n[k][1]==2){h=b.i[k][0];i=b.i[k][1];for(M=0;M<b.e[h];M++){r=b.i[h][M];if(r!=k){for(R=0;R<b.e[i];R++){s=b.i[i][R];if(s!=k){d=Lrb.vv(n,h,k,r);e=Lrb.vv(n,i,k,s);o=Lrb.Iv(q,b.k[h][M]);p=Lrb.Iv(q,b.k[i][R]);H=Lrb.Iv(q,b.k[k][0])+Lrb.Iv(q,b.k[k][1])-o*$wnd.Math.cos(d)-p*$wnd.Math.cos(e);I=o*$wnd.Math.sin(d);J=p*$wnd.Math.sin(e);T=tX(Drb.NY,Qsb,6,2,15,1);T[0]=h;T[1]=i;nsb.Mqb(W,nsb.Gqb(r,s),T,$wnd.Math.sqrt(H*H+I*I+J*J),3)}}}}}}for(f=0;f<b.q;f++)nsb.Eqb(W,f,b,q);nsb.Dqb(W,b);for(K=1;K<b.q;K++)for(Q=0;Q<K;Q++)W[K][Q].a!=null&&Krb.Ei(a,W[K][Q])};nsb.Gqb=function Gqb(a,b){var c;c=tX(Drb.NY,Qsb,6,2,15,1);if(a>b){c[0]=a;c[1]=b}else{c[0]=b;c[1]=a}return c};nsb.Iqb=function Iqb(a,b){var c;c=b.C[a];return c<(Lrb.nx(),Lrb.mx).length?Lrb.mx[c]:2};nsb.Jqb=function Jqb(a,b){var c,d,e,f,g,h,i,j,k;if(a==null)return b;k=tX(Drb.NY,Qsb,6,a.length+b.length,15,1);j=0;for(e=a,g=0,i=e.length;g<i;++g){c=e[g];k[j++]=c}for(d=b,f=0,h=d.length;f<h;++f){c=d[f];k[j++]=c}return k};nsb.Kqb=function Kqb(a,b,c,d,e,f,g,h,i,j){var k,l,m,n,o,p,q,r,s,t;if(a==b)return;k=nsb.Gqb(a,b);if(!!i[k[0]][k[1]]&&i[k[0]][k[1]].a.length==1)return;m=h.a[g]-h.a[c]*$wnd.Math.cos(e)-h.a[d]*$wnd.Math.cos(f);s=h.a[c]*$wnd.Math.sin(e);t=h.a[d]*$wnd.Math.sin(f);n=s+t;o=s-t;q=$wnd.Math.sqrt(m*m+o*o);p=$wnd.Math.sqrt(m*m+n*n);r=tX(Drb.NY,Qsb,6,2,15,1);r[0]=j.D[0][g];r[1]=j.D[1][g];l=i[k[0]][k[1]];if(!l){xX(i[k[0]],k[1],new nsb.zqb(k,r,q,p,3))}else{l.a[0]=$wnd.Math.min(l.a[0],q);l.a[1]=$wnd.Math.min(l.a[1],p)}};nsb.Lqb=function Lqb(a,b,c,d,e,f,g,h,i,j,k){var l,m,n;m=i.a[g]-i.a[c]*$wnd.Math.cos(e)-i.a[d]*$wnd.Math.cos(f);n=i.a[c]*$wnd.Math.sin(e);h?(n+=i.a[d]*$wnd.Math.sin(f)):(n-=i.a[d]*$wnd.Math.sin(f));l=tX(Drb.NY,Qsb,6,2,15,1);l[0]=k.D[0][g];l[1]=k.D[1][g];nsb.Mqb(j,nsb.Gqb(a,b),l,$wnd.Math.sqrt(m*m+n*n),3)};nsb.Mqb=function Mqb(a,b,c,d,e){if(!a[b[0]][b[1]]){xX(a[b[0]],b[1],new nsb.Aqb(b,c,d,e))}else if(a[b[0]][b[1]].a.length==2||a[b[0]][b[1]].c<e){xX(a[b[0]],b[1],new nsb.Aqb(b,c,d,e))}else if(a[b[0]][b[1]].c==e){a[b[0]][b[1]].a[0]=(a[b[0]][b[1]].a[0]+d)/2;a[b[0]][b[1]].b=nsb.Jqb(a[b[0]][b[1]].b,c)}};nsb.Nqb=function Nqb(a,b,c,d,e,f,g,h,i,j){var k,l,m,n,o,p,q,r,s,t,u,v,w,A;if(a==b)return;k=nsb.Gqb(a,b);if(!!i[k[0]][k[1]]&&i[k[0]][k[1]].a.length==1)return;A=0.866;l=0.5;if((j.F[g]&64)!=0){u=!!j.p&&g<j.g?Jrb.wr(j.p,g):0;if(u<6){A=0;l=1}}n=h.a[g]-h.a[c]*$wnd.Math.cos(e)-h.a[d]*$wnd.Math.cos(f);v=h.a[c]*$wnd.Math.sin(e);w=h.a[d]*$wnd.Math.sin(f);o=v+w;p=v-w*l;q=w*A;s=$wnd.Math.sqrt(n*n+p*p+q*q);r=$wnd.Math.sqrt(n*n+o*o);t=tX(Drb.NY,Qsb,6,2,15,1);t[0]=j.D[0][g];t[1]=j.D[1][g];m=i[k[0]][k[1]];if(!m){xX(i[k[0]],k[1],new nsb.zqb(k,t,s,r,3))}else{m.a[0]=$wnd.Math.min(m.a[0],s);m.a[1]=$wnd.Math.min(m.a[1],r)}};Z3(70,45,{45:1,70:1},nsb.xqb,nsb.yqb,nsb.zqb,nsb.Aqb);_.yc=function Bqb(a,b){var c;c=nsb.wqb(this,a);if(b!=null&&c>0){b[this.f[0]]+=c/2;b[this.f[1]]+=c/2}return c};_.zc=function Cqb(a,b){var c,d,e,f,g,h,i;e=Lrb.$v(a,this.f[1])-Lrb.$v(a,this.f[0]);f=Lrb._v(a,this.f[1])-Lrb._v(a,this.f[0]);g=Lrb.aw(a,this.f[1])-Lrb.aw(a,this.f[0]);c=$wnd.Math.sqrt(e*e+f*f+g*g);d=0;this.a.length==2?c<this.a[0]?(d=(c-this.a[0])/c):c>this.a[1]&&(d=(c-this.a[1])/c):c<this.a[0]?(d=(c-this.a[0])/c):c>this.a[0]&&(d=(c-this.a[0])/c);if($wnd.Math.abs(d)<0.001)return false;h=b*d;i=a.o;if(this.c==10){if(Jrb.rn(i,this.f[0])==1&&Jrb.rn(i,this.f[1])!=1){Jrb.qh(Lrb.Yv(a,this.f[0]),e*h,f*h,g*h);return true}if(Jrb.rn(i,this.f[0])!=1&&Jrb.rn(i,this.f[1])==1){Jrb.qh(Lrb.Yv(a,this.f[1]),-e*h,-f*h,-g*h);return true}}h/=2;nsb.Ppb(a,this.f[0],this.b,e*h,f*h,g*h);nsb.Ppb(a,this.f[1],this.b,-e*h,-f*h,-g*h);return true};_.Ac=function Hqb(){return 0};_.mb=function Oqb(){var a,b;b=new Erb.U7('distance rule:');nsb.Opb(this,b);this.a.length==1?Erb.P7(b,(Zrb.cV(),bAb+Zrb.dV(this.a[0],5))):Erb.P7(b,(Zrb.cV(),' min:'+Zrb.dV(this.a[0],5)+' max:'+Zrb.dV(this.a[1],5)));if(this.b!=null){Erb.P7(b,' not:'+this.b[0]);for(a=1;a<this.b.length;a++)Erb.P7(b,','+this.b[a])}return b.a};_.c=0;Drb.X2=B5(70);nsb.Pqb=function Pqb(a,b){var c,d,e;nsb.Rpb.call(this,a);c=0;for(e=0;e<a.length;e++)Jrb.Gn(b,a[e])!=1&&++c;if(c>2){this.a=tX(Drb.NY,Qsb,6,c,15,1);c=0;for(d=0;d<a.length;d++)Jrb.Gn(b,a[d])!=1&&(this.a[c++]=a[d])}else{this.a=a}};nsb.Sqb=function Sqb(a,b){nsb.Npb();var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;r=tX(Drb.c3,itb,6,b.g,16,1);v=(Jrb.ou(b,7),b.p);q=tX(Drb.c3,itb,6,v.i.a.length,16,1);Jrb.rr(v,q,tX(Drb.c3,itb,6,v.i.a.length,16,1),tX(Drb.NY,Qsb,6,v.i.a.length,15,1),true);for(u=0;u<v.i.a.length;u++)if(q[u])for(p=0;p<Krb.Ji(v.j,u).length;p++)r[Krb.Ji(v.j,u)[p]]=true;e=tX(Drb.NY,Qsb,6,2,15,1);for(g=0;g<b.g;g++){i=b.D[0][g];j=b.D[1][g];e[0]=b.C[i];e[1]=b.C[j];r[g]=r[g]|(g<b.g&&Jrb.Gr(b.p,g)||Jrb.Qk(b,g)==2&&e[0]<=8&&e[1]<=8&&b.o[i]==1&&b.o[j]==1&&b.e[i]>1&&b.e[j]>1);if(!r[g]){if(Jrb.Qk(b,g)==1){for(o=0;o<2;o++){if((e[o]==7||e[o]==8)&&e[1-o]==6){k=b.D[1-o][g];for(t=0;t<b.j[k];t++){if(b.n[k][t]==2){l=b.i[k][t];if(b.C[l]==7||b.C[l]==8||b.C[l]==16){r[g]=true;break}}}}}}}}s=tX(Drb.c3,itb,6,b.f,16,1);for(h=0;h<b.g;h++){if(r[h]){s[b.D[0][h]]=true;s[b.D[1][h]]=true}}n=tX(Drb.NY,Qsb,6,b.q,15,1);for(f=0;f<b.g;f++){if(r[f]){n[0]=b.D[0][f];m=nsb.Tqb(n,r,b);d=tX(Drb.NY,Qsb,6,m,15,1);for(o=0;o<m;o++)d[o]=n[o];Krb.Ei(a,new nsb.Pqb(d,b))}}for(c=0;c<b.f;c++){if(!s[c]){if(b.C[c]==5&&b.s[c]==0&&b.e[c]<=3||b.C[c]<=8&&b.o[c]==1&&b.e[c]>1||Jrb.Fo(b,c,true)&&b.o[c]!=2&&b.e[c]>1){d=tX(Drb.NY,Qsb,6,1+b.e[c],15,1);for(o=0;o<b.e[c];o++)d[o]=b.i[c][o];d[b.e[c]]=c;Krb.Ei(a,new nsb.Pqb(d,b))}}}};nsb.Tqb=function Tqb(a,b,c){var d,e,f,g,h,i,j,k,l;k=tX(Drb.c3,itb,6,c.q,16,1);k[a[0]]=true;g=0;h=0;while(g<=h&&Jrb.wn(c,a[g])<2){for(j=0;j<Jrb.Gn(c,a[g]);j++){d=Jrb.Fn(c,a[g],j);e=Jrb.Hn(c,a[g],j);if(b[e]){if(!k[d]){a[++h]=d;k[d]=true}b[e]=false}}++g}for(i=h;i>=0;i--){if(Jrb.Dk(c,a[i])<=8){for(l=0;l<Jrb.rn(c,a[i]);l++){f=Jrb.Fn(c,a[i],l);if(!k[f]&&Jrb.In(c,a[i],l)!=0){a[++h]=f;k[f]=true}}}}return h+1};Z3(206,45,dAb,nsb.Pqb);_.yc=function Qqb(a,b){var c,d,e,f,g,h,i;c=new Jrb.Gh;g=new Jrb.Gh;d=rX(Drb.LY,[ssb,Osb],[12,6],15,[this.f.length,3],2);nsb.Spb(a,this.f,c,g,d);i=0;for(f=0;f<this.f.length;f++){e=-(g.a*d[f][0]+g.b*d[f][1]+g.c*d[f][2]);h=20*e*e;b!=null&&(b[this.f[f]]+=h);i+=h}return i};_.zc=function Rqb(a,b){var c,d,e,f,g;c=new Jrb.Gh;g=new Jrb.Gh;d=rX(Drb.LY,[ssb,Osb],[12,6],15,[this.a.length,3],2);nsb.Spb(a,this.a,c,g,d);for(f=0;f<this.f.length;f++){e=-(g.a*(Lrb.$v(a,this.f[f])-c.a)+g.b*(Lrb._v(a,this.f[f])-c.b)+g.c*(Lrb.aw(a,this.f[f])-c.c));nsb.Ppb(a,this.f[f],this.f,0.5*e*b*g.a,0.5*e*b*g.b,0.5*e*b*g.c)}return true};_.Ac=function Uqb(){return 1};_.mb=function Vqb(){var a;a=new Erb.U7('plane rule:');nsb.Opb(this,a);return a.a};Drb.Y2=B5(206);nsb.Wqb=function Wqb(a,b){var c,d,e;if(a.a!=null)return;a.a=tX(Drb.LY,Osb,6,a.o.q,15,1);a.d=tX(Drb.LY,Osb,6,(nsb.Npb(),nsb.Mpb).length,15,1);for(e=new Krb.ueb(b);e.a<e.c.a.length;){d=Krb.teb(e);d.g&&(a.d[d.Ac()]+=d.yc(a,a.a))}a.e=0;for(c=0;c<a.o.q;c++)a.e+=a.a[c];a.c=-1};nsb.Xqb=function Xqb(a,b){a.e=b.e;a.c=b.c;a.b=b.b;a.a=b.a==null?null:Krb.Beb(b.a,b.a.length);a.d=b.d==null?null:Krb.Beb(b.d,b.d.length)};nsb.Yqb=function Yqb(a){a.e=Eub;a.a=null;a.d=null};nsb.Zqb=function Zqb(a){Lrb.jw.call(this,a);this.e=NaN};nsb.$qb=function $qb(a){Lrb.kw.call(this,a);nsb.Xqb(this,a)};Z3(93,60,{60:1,28:1,93:1},nsb.Zqb,nsb.$qb);_.b=false;_.c=0;_.e=0;Drb.Z2=B5(93);nsb._qb=function _qb(a){nsb.Rpb.call(this,a)};nsb.crb=function crb(a,b){nsb.Npb();var c,d,e,f;d=tX(Drb.c3,itb,6,b.q,16,1);for(c=0;c<b.f;c++){if(!d[c]&&b.o[c]==2&&b.C[c]<=8){e=nsb.drb(c,b);for(f=0;f<e.length;f++)d[e[f]]=true;e[0]!=e[e.length-1]&&Krb.Ei(a,new nsb._qb(e))}}};nsb.drb=function drb(a,b){var c,d,e,f,g,h,i,j;f=a;d=b.i[f][0];while(b.e[f]!=1&&b.o[f]==2){j=d;d=f;f=b.i[f][0]==j?b.i[f][1]:b.i[f][0];if(f==a)break}i=f;g=d;e=2;while(b.e[g]!=1&&b.o[g]==2){j=i;i=g;g=b.i[g][0]==j?b.i[g][1]:b.i[g][0];++e;if(g==f)break}c=tX(Drb.NY,Qsb,6,e,15,1);c[0]=f;c[1]=d;for(h=2;h<e;h++)c[h]=Jrb.Fn(b,c[h-1],0)==c[h-2]?Jrb.Fn(b,c[h-1],1):Jrb.Fn(b,c[h-1],0);return c};Z3(315,45,dAb,nsb._qb);_.yc=function arb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B;f=tX(Drb.LY,Osb,6,3,15,1);for(k=0;k<this.f.length;k++){f[0]+=Lrb.$v(a,this.f[k]);f[1]+=Lrb._v(a,this.f[k]);f[2]+=Lrb.aw(a,this.f[k])}for(q=0;q<3;q++)f[q]/=this.f.length;c=rX(Drb.LY,[ssb,Osb],[12,6],15,[this.f.length,3],2);for(l=0;l<this.f.length;l++){c[l][0]=Lrb.$v(a,this.f[l])-f[0];c[l][1]=Lrb._v(a,this.f[l])-f[1];c[l][2]=Lrb.aw(a,this.f[l])-f[2]}v=rX(Drb.LY,[ssb,Osb],[12,6],15,[3,3],2);for(m=0;m<this.f.length;m++)for(p=0;p<3;p++)for(r=0;r<3;r++)v[p][r]+=c[m][p]*c[m][r];A=new Irb.Sc(v);d=A.e;t=0;for(n=1;n<3;n++)d[n]>d[t]&&(t=n);e=A.a;u=tX(Drb.LY,Osb,6,3,15,1);for(o=0;o<3;o++)u[o]=e[o][t];B=0;for(j=0;j<this.f.length;j++){s=u[0]*c[j][0]+u[1]*c[j][1]+u[2]*c[j][2];g=s*u[0]-c[j][0];h=s*u[1]-c[j][1];i=s*u[2]-c[j][2];w=10*g*g+h*h+i*i;b!=null&&(b[this.f[j]]+=w);B+=w}return B};_.zc=function brb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;f=tX(Drb.LY,Osb,6,3,15,1);for(h=0;h<this.f.length;h++){f[0]+=Lrb.$v(a,this.f[h]);f[1]+=Lrb._v(a,this.f[h]);f[2]+=Lrb.aw(a,this.f[h])}for(r=0;r<3;r++)f[r]/=this.f.length;c=rX(Drb.LY,[ssb,Osb],[12,6],15,[this.f.length,3],2);for(i=0;i<this.f.length;i++){c[i][0]=Lrb.$v(a,this.f[i])-f[0];c[i][1]=Lrb._v(a,this.f[i])-f[1];c[i][2]=Lrb.aw(a,this.f[i])-f[2]}w=rX(Drb.LY,[ssb,Osb],[12,6],15,[3,3],2);for(j=0;j<this.f.length;j++)for(q=0;q<3;q++)for(s=0;s<3;s++)w[q][s]+=c[j][q]*c[j][s];A=new Irb.Sc(w);d=A.e;u=0;for(k=1;k<3;k++)d[k]>d[u]&&(u=k);e=A.a;v=tX(Drb.LY,Osb,6,3,15,1);for(l=0;l<3;l++)v[l]=e[l][u];t=tX(Drb.LY,Osb,6,this.f.length,15,1);for(m=0;m<this.f.length;m++)t[m]=v[0]*c[m][0]+v[1]*c[m][1]+v[2]*c[m][2];if(b==1){o=false;p=t[0]<t[1];for(n=2;n<this.f.length;n++){if(p!=t[n-1]<t[n]){o=true;break}}if(o)return false}for(g=0;g<this.f.length;g++){Jrb.qh(Lrb.Yv(a,this.f[g]),b*(t[g]*v[0]-c[g][0]),b*(t[g]*v[1]-c[g][1]),b*(t[g]*v[2]-c[g][2]))}return true};_.Ac=function erb(){return 2};_.mb=function frb(){var a;a=new Erb.U7('line rule:');nsb.Opb(this,a);return a.a};Drb.$2=B5(315);\nnsb.grb=function grb(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb;eb=c[4];X=c[3]==-1?3:4;o=tX(Drb.NY,Qsb,6,b.q,15,1);S=tX(Drb.c3,itb,6,b.r,16,1);for(r=0;r<X;r++)S[d[r]]=true;n=Jrb.Qn(b,o,S,false);p=tX(Drb.NY,Qsb,6,n,15,1);for(j=o,k=0,l=j.length;k<l;++k){m=j[k];++p[m]}U=0;A=tX(Drb.c3,itb,6,n,16,1);for(s=0;s<X;s++){m=o[c[s]];if(!A[m]){A[m]=true;++U}}V=tX(Drb.NY,Qsb,6,U,15,1);W=tX(Drb.NY,Qsb,6,U,15,1);T=tX(Drb.NY,Qsb,6,U,15,1);w=0;for(i=0;i<n;i++){if(A[i]){V[w]=i;W[w]=p[i];for(t=0;t<X;t++)i==o[c[t]]&&++T[w];++w}}B=tX(Drb.c3,itb,6,b.q,16,1);Z=0;db=2;if(U==X){R=-1;for(t=0;t<X-2;t++){ab=-1;bb=xsb;for(D=0;D<U;D++){if(D!=R&&W[D]<bb){ab=D;bb=W[D]}}for(e=0;e<b.q;e++){if(o[e]==V[ab]){B[e]=true;++Z}}R=ab}}else{for(t=0;t<V.length;t++){if(T[t]==1&&X==3){C=2*W[t]<b.q;C||(db=1);for(e=0;e<b.q;e++){if(e!=eb){if(o[e]==V[t]==C){B[e]=true;++Z}}}break}if(T[t]==2&&X==4){C=2*W[t]<b.q;for(e=0;e<b.q;e++){if(e!=eb){if(o[e]==V[t]==C){B[e]=true;++Z}}}break}}}if(Z==0){for(t=0;t<V.length;t++){if(T[t]==1){for(e=0;e<b.q;e++){if(o[e]==V[t]){B[e]=true;++Z}}break}}Y=X-2-(Z==0?0:1);for(u=0;u<Y;u++){for(D=0;D<X;D++){if(!B[c[D]]){B[c[D]]=true;++Z;break}}}}w=0;a.a=tX(Drb.NY,Qsb,6,Z,15,1);for(v=0;v<B.length;v++)B[v]&&(a.a[w++]=v);cb=0;$=0;a.c=tX(Drb.NY,Qsb,6,db,15,1);a.b=tX(Drb.NY,Qsb,6,X-db,15,1);for(q=0;q<X;q++)if(B[c[q]]){if($>=a.b.length){Erb.X7();'##### Out of bounds exception:'+(new Jrb.Fq(b)).a.a;String.fromCharCode(10);for(G=c,K=0,O=G.length;K<O;++K){}String.fromCharCode(10);for(H=d,L=0,P=H.length;L<P;++L){}String.fromCharCode(10);for(I=o,M=0,Q=I.length;M<Q;++M){}String.fromCharCode(10);for(F=A,J=0,N=F.length;J<N;++J){}String.fromCharCode(10);for(f=B,g=0,h=f.length;g<h;++g){}String.fromCharCode(10)}a.b[$++]=c[q]}else a.c[cb++]=c[q]};nsb.hrb=function hrb(a,b){var c,d,e,f,g,h;g=new Jrb.Gh;h=a.c.length==2?a.c:a.b;for(d=h,e=0,f=d.length;e<f;++e){c=d[e];Jrb.rh(g,b.k[c])}Jrb.Ah(g,0.5);Jrb.Fh(Jrb.Dh(g,Lrb.Yv(b,a.f[4])));return g};nsb.irb=function irb(a,b){var c,d,e;c=rX(Drb.LY,[ssb,Osb],[12,6],15,[2,3],2);for(d=0;d<2;d++){c[d][0]=Lrb.$v(b,a.f[d])-Lrb.$v(b,a.f[4]);c[d][1]=Lrb._v(b,a.f[d])-Lrb._v(b,a.f[4]);c[d][2]=Lrb.aw(b,a.f[d])-Lrb.aw(b,a.f[4])}e=tX(Drb.LY,Osb,6,3,15,1);e[0]=c[0][1]*c[1][2]-c[0][2]*c[1][1];e[1]=c[0][2]*c[1][0]-c[0][0]*c[1][2];e[2]=c[0][0]*c[1][1]-c[0][1]*c[1][0];return e};nsb.jrb=function jrb(a,b,c,d){var e;e=tX(Drb.LY,Osb,6,3,15,1);e[0]=a.k[d].a-a.k[c].a;e[1]=a.k[d].b-a.k[c].b;e[2]=a.k[d].c-a.k[c].c;return e[0]*b[0]+e[1]*b[1]+e[2]*b[2]>0};nsb.krb=function krb(a,b,c){nsb.Rpb.call(this,b);nsb.grb(this,a,b,c)};nsb.nrb=function nrb(a,b){nsb.Npb();var c,d,e,f,g,h,i,j,k,l;for(c=0;c<b.f;c++){if(b.e[c]>=3){k=b.u[c]&3;if((k==1||k==2)&&!(b.o[c]==2&&b.j[c]==2&&b.n[c][0]==2&&b.n[c][1]==2&&b.C[c]<=7)){d=tX(Drb.NY,Qsb,6,5,15,1);e=tX(Drb.NY,Qsb,6,4,15,1);for(h=0;h<b.e[c];h++){f=b.i[c][h];g=b.k[c][h];i=0;while(i<h&&f>d[i])++i;for(j=h-1;j>=i;j--){d[j+1]=d[j];e[j+1]=e[j]}d[i]=f;e[i]=g}if(b.e[c]==3){d[3]=-1;e[3]=-1}d[4]=c;if(k==1){l=d[1];d[1]=d[0];d[0]=l;l=e[1];e[1]=e[0];e[0]=l}Krb.Ei(a,new nsb.krb(b,d,e))}}}};Z3(316,45,dAb,nsb.krb);_.yc=function lrb(a,b){var c,d,e,f,g;f=0;d=nsb.irb(this,a);g=0;if(this.f[3]==-1){nsb.jrb(a,d,this.f[4],this.f[2])||++g}else{nsb.jrb(a,d,this.f[4],this.f[2])||++g;nsb.jrb(a,d,this.f[4],this.f[3])&&++g}if(g!=0){for(c=0;c<this.f.length;c++){if(this.f[c]!=-1){e=0.68*g;b!=null&&(b[this.f[c]]+=e);f+=e}}}return f};_.zc=function mrb(a,b){var c,d,e,f,g,h,i;h=nsb.irb(this,a);g=this.f[3]==-1&&!nsb.jrb(a,h,this.f[4],this.f[2])||this.f[3]!=-1&&!nsb.jrb(a,h,this.f[4],this.f[2])&&nsb.jrb(a,h,this.f[4],this.f[3]);if(!g)return false;i=nsb.hrb(this,a);for(d=this.a,e=0,f=d.length;e<f;++e){c=d[e];nsb.Tpb(a,c,Lrb.Yv(a,this.f[4]),i,ntb)}return true};_.Ac=function orb(){return 4};_.mb=function prb(){var a,b,c,d,e;e=new Erb.U7('stereo rule:');nsb.Opb(this,e);e.a+=' rotatable:';for(b=this.a,c=0,d=b.length;c<d;++c){a=b[c];e.a+=a+' '}return e.a};Drb._2=B5(316);nsb.qrb=function qrb(a,b){var c,d,e,f,g;e=-1;f=Eub;for(d=0;d<a.e.length;d++){g=ntb*a.e[d]/180;c=$wnd.Math.abs(b-g);c>ntb&&(c=mtb-c);c/=10+$wnd.Math.sqrt(a.b[d]);if(f>c){f=c;e=d}}return e};nsb.rrb=function rrb(a,b,c){var d,e,f,g;e=a.c[c][0]*ntb/180;f=a.c[c][1]*ntb/180;g=a.e[c]*ntb/180;b<g-ntb?(b+=mtb):b>g+ntb&&(b-=mtb);d=(g-b)/(g-(b<g?e:f));if(d<1)return 0;if(d<2){d-=1;return d*d}return 1};nsb.srb=function srb(a,b,c,d,e){var f,g,h;nsb.Tpb(a,b,a.k[c],d,e);h=a.o;for(g=0;g<h.e[b];g++){f=h.i[b][g];h.e[f]==1&&nsb.Tpb(a,f,a.k[c],d,e)}};nsb.trb=function trb(a,b,c,d,e,f){nsb.Rpb.call(this,d);this.e=a;this.b=b;this.c=c;this.a=e;this.d=f};nsb.urb=function urb(a,b,c,d,e){var f,g,h,i,j,k,l,m;f=tX(Drb.NY,Qsb,6,d,15,1);m=tX(Drb.NY,Qsb,6,4,15,1);m[0]=Jrb.Fn(a,c,a.i[c][0]==b?1:0);m[1]=c;m[2]=b;m[3]=Jrb.Fn(a,b,a.i[b][0]==c?1:0);i=0;for(j=0;j<a.e[b];j++){g=a.i[b][j];g!=c&&(f[i++]=g)}l=tX(Drb.b3,hub,6,3,15,1);h=tX(Drb.b3,hub,6,3,15,1);k=rX(Drb.b3,[Rvb,hub],[13,6],15,[3,2],2);l[0]=60;l[1]=180;l[2]=300;h[0]=33;h[1]=33;h[2]=33;k[0][0]=45;k[0][1]=75;k[1][0]=165;k[1][1]=195;k[2][0]=285;k[2][1]=315;Krb.Ei(e,new nsb.trb(l,h,k,m,f,1))};nsb.vrb=function vrb(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p;l=-1;for(k=0;k<a.j[c];k++)a.n[c][k]==2&&(l=a.i[c][k]);f=tX(Drb.NY,Qsb,6,d,15,1);p=tX(Drb.NY,Qsb,6,4,15,1);p[0]=l;p[1]=c;p[2]=b;i=0;for(j=0;j<a.e[b];j++){g=a.i[b][j];if(a.C[g]==1){i==0&&(p[3]=g);f[i++]=g}}n=!(c<a.f&&Jrb.Fr(a.p,c))&&d==1?1:2;o=tX(Drb.b3,hub,6,n,15,1);h=tX(Drb.b3,hub,6,n,15,1);m=rX(Drb.b3,[Rvb,hub],[13,6],15,[n,2],2);if(!(c<a.f&&Jrb.Fr(a.p,c))&&d==1){o[0]=0;h[0]=100;m[0][0]=-15;m[0][1]=15}else{o[0]=0;o[1]=180;h[0]=50;h[1]=50;m[0][0]=-15;m[0][1]=15;m[1][0]=165;m[1][1]=195}Krb.Ei(e,new nsb.trb(o,h,m,p,f,1))};nsb.yrb=function yrb(a,b){nsb.Npb();var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;Lrb.Bw();o=tX(Drb.c3,itb,6,b.r,16,1);Lrb.ww(b,o);for(g=0;g<b.g;g++){if(o[g]){B=tX(Drb.NY,Qsb,6,4,15,1);C=new Lrb.bx;D=Lrb.yw(b,g,B,C);if(D!=null&&!nsb.zrb(B,a)){A=(v=Lrb.ow(Lrb.nw,D),!v?null:Lrb.cx(v));j=(w=Lrb.ow(Lrb.nw,D),!w?null:Lrb.dx(w));r=(u=Lrb.ow(Lrb.nw,D),!u?null:Lrb.ex(u));if(A==null){q=new Lrb.kx(b,B);A=q.b;j=q.a;r=q.c}if(A!=null){d=null;t=0;if((b.F[g]&64)==0){n=rX(Drb.c3,[ssb,itb],[11,6],16,[2,b.q],2);i=tX(Drb.NY,Qsb,6,2,15,1);for(l=0;l<2;l++)i[l]=Jrb.po(b,C.e[l],C.b[l],n[l],null,null);t=i[0]<i[1]?0:1;d=tX(Drb.NY,Qsb,6,i[t],15,1);m=0;for(c=0;c<b.q;c++)n[t][c]&&(d[m++]=c)}Krb.Ei(a,new nsb.trb(A,j,r,B,d,t))}}}}for(f=0;f<b.g;f++){if(b.H[f]==1&&(b.F[f]&64)==0){for(l=0;l<2;l++){h=b.D[l][f];p=Jrb._n(b,h);k=b.e[h]-p;if(p==1&&k!=0){s=b.D[1-l][f];e=b.C[h];e>6&&b.o[s]==1?nsb.vrb(b,h,s,k,a):b.o[s]!=2&&b.e[s]>1&&nsb.urb(b,h,s,k,a);break}}}}};nsb.zrb=function zrb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;for(j=new Krb.ueb(b);j.a<j.c.a.length;){i=Krb.teb(j);if(i.Ac()==1){h=i.f;for(l=a,m=0,n=l.length;m<n;++m){k=l[m];if(k==-1)return false;c=false;for(e=h,f=0,g=e.length;f<g;++f){d=e[f];if(k==d){c=true;break}}if(!c)return false}return true}}return false};Z3(165,45,dAb,nsb.trb);_.yc=function wrb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;c=Lrb.tw(a,this.f);if(isNaN(c))return 0;c<0&&(c+=mtb);n=180*c/ntb;g=nsb.qrb(this,c);if(g==-1){Erb.X7();for(k=this.e,l=0,m=k.length;l<m;++l){}String.fromCharCode(10)}i=nsb.rrb(this,c,g);if(i==0)return 0;d=$wnd.Math.abs(n-this.e[g]);d>180&&(d=360-d);d>60&&(d=60);h=a.o;j=3*i*d*d/3600;o=0;for(f=0;f<Jrb.rn(h,this.f[1]);f++){if(Jrb.Fn(h,this.f[1],f)!=this.f[2]){b!=null&&(b[Jrb.Fn(h,this.f[1],f)]+=j);o+=j}}for(e=0;e<Jrb.rn(h,this.f[2]);e++){if(Jrb.Fn(h,this.f[2],e)!=this.f[1]){b!=null&&(b[Jrb.Fn(h,this.f[2],e)]+=j);o+=j}}return o};_.zc=function xrb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;i=Lrb.tw(a,this.f);if(isNaN(i))return false;i<0&&(i+=mtb);m=nsb.qrb(this,i);t=nsb.rrb(this,i,m);if(t==0)return false;g=ntb*this.e[m]/180-i;$wnd.Math.abs(g)>ntb&&(g=g<0?mtb+g:g-mtb);if($wnd.Math.abs(g)<0.0031415926535897933)return false;u=Jrb.Eh(Lrb.Yv(a,this.f[2]),Lrb.Yv(a,this.f[1]));Jrb.Fh(u);g*=b*t;q=a.o;if(this.a!=null){r=this.d==0?-g:g;for(d=this.a,e=0,f=d.length;e<f;++e){c=d[e];nsb.Tpb(a,c,Lrb.Yv(a,this.f[1]),u,r)}}else{h=Jrb.Dn(q,this.f[1],this.f[2]);n=h!=-1&&(!!q.p&&h<q.g?Jrb.wr(q.p,h):0)<=5;for(l=1;l<=2;l++){j=(l==1?-2:2)*Jrb.yn(q,this.f[l]);for(o=0;o<Jrb.rn(q,this.f[l]);o++){k=Jrb.Fn(q,this.f[l],o);if(k!=this.f[3-l]){nsb.srb(a,k,this.f[l],u,g/j);if(!n){for(p=0;p<q.j[k];p++){s=q.i[k][p];s!=k&&q.e[s]!=1&&nsb.srb(a,s,this.f[l],u,g/(4*j))}}}}}}return true};_.Ac=function Arb(){return 3};_.mb=function Brb(){var a,b;b=new Erb.U7('torsion rule:');nsb.Opb(this,b);b.a+=' torsions:';for(a=0;a<this.e.length;a++){a!=0&&(b.a+=',',b);Erb.P7(b,this.e[a]+'('+this.b[a]+')')}return b.a};_.d=0;Drb.a3=B5(165);Drb.KY=E5('C');Drb.b3=E5('S');Drb.JY=E5('B');Drb.NY=E5('I');Drb.c3=E5('Z');Drb.LY=E5('D');Drb.MY=E5('F');Drb.OY=E5('J');_=d4('OCL.CanonizerUtil',Xrb.SG);_.BACKBONE=Xrb.NG;_.NORMAL=Xrb.OG;_.NOSTEREO=Xrb.PG;_.NOSTEREO_TAUTOMER=Xrb.QG;_.TAUTOMER=Xrb.RG;_.getIDCode=Xrb.TG;_=d4('OCL.ConformerGenerator',Xrb.YG);_.STRATEGY_ADAPTIVE_RANDOM=Xrb.UG;_.STRATEGY_LIKELY_RANDOM=Xrb.VG;_.STRATEGY_LIKELY_SYSTEMATIC=Xrb.WG;_.STRATEGY_PURE_RANDOM=Xrb.XG;_=d4('OCL.DrugScoreCalculator',Xrb.eH);_.calculate=Xrb.fH;Xrb.iH();_=d4('OCL.DruglikenessPredictor',Xrb.jH);_.DRUGLIKENESS_UNKNOWN=Xrb.gH;_=d4('OCL.ForceFieldMMFF94',Xrb.uH);_.MMFF94=Xrb.oH;_.MMFF94S=Xrb.pH;_.MMFF94SPLUS=Xrb.qH;Yrb.gN();_=d4('OCL.Molecule',Yrb.jN);_.CANONIZER_ASSIGN_PARITIES_TO_TETRAHEDRAL_N=Yrb.GI;_.CANONIZER_CONSIDER_DIASTEREOTOPICITY=Yrb.HI;_.CANONIZER_CONSIDER_ENANTIOTOPICITY=Yrb.II;_.CANONIZER_CONSIDER_STEREOHETEROTOPICITY=Yrb.JI;_.CANONIZER_COORDS_ARE_3D=Yrb.KI;_.CANONIZER_CREATE_PSEUDO_STEREO_GROUPS=Yrb.LI;_.CANONIZER_CREATE_SYMMETRY_RANK=Yrb.MI;_.CANONIZER_DISTINGUISH_RACEMIC_OR_GROUPS=Yrb.NI;_.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS=Yrb.OI;_.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS_WITHOUT_RANKING=Yrb.QI;_.CANONIZER_ENCODE_ATOM_SELECTION=Yrb.RI;_.CANONIZER_NEGLECT_ANY_STEREO_INFORMATION=Yrb.SI;_.CANONIZER_TIE_BREAK_FREE_VALENCE_ATOMS=Yrb.TI;_.FISCHER_PROJECTION_LIMIT=Yrb.UI;_.FISCHER_PROJECTION_RING_LIMIT=Yrb.VI;_.STEREO_ANGLE_LIMIT=Yrb.WI;_.VALIDATION_ERRORS_STEREO=Yrb.XI;_.VALIDATION_ERROR_AMBIGUOUS_CONFIGURATION=Yrb.YI;_.VALIDATION_ERROR_ESR_CENTER_UNKNOWN=Yrb.ZI;_.VALIDATION_ERROR_OVER_UNDER_SPECIFIED=Yrb.$I;_.cAtomCIPParityNone=Yrb._I;_.cAtomCIPParityProblem=Yrb.aJ;_.cAtomCIPParityRorM=Yrb.bJ;_.cAtomCIPParitySorP=Yrb.cJ;_.cAtomColorBlue=Yrb.dJ;_.cAtomColorDarkGreen=Yrb.eJ;_.cAtomColorDarkRed=Yrb.fJ;_.cAtomColorGreen=Yrb.gJ;_.cAtomColorMagenta=Yrb.hJ;_.cAtomColorNone=Yrb.iJ;_.cAtomColorOrange=Yrb.jJ;_.cAtomColorRed=Yrb.kJ;_.cAtomLabel=Yrb.lJ;_.cAtomParity1=Yrb.mJ;_.cAtomParity2=Yrb.nJ;_.cAtomParityIsPseudo=Yrb.oJ;_.cAtomParityNone=Yrb.pJ;_.cAtomParityUnknown=Yrb.qJ;_.cAtomQFAny=Yrb.rJ;_.cAtomQFAromState=Yrb.sJ;_.cAtomQFAromStateBits=Yrb.tJ;_.cAtomQFAromStateShift=Yrb.uJ;_.cAtomQFAromatic=Yrb.vJ;_.cAtomQFCharge=Yrb.wJ;_.cAtomQFChargeBits=Yrb.xJ;_.cAtomQFChargeShift=Yrb.yJ;_.cAtomQFENeighbourBits=Yrb.zJ;_.cAtomQFENeighbourShift=Yrb.AJ;_.cAtomQFENeighbours=Yrb.BJ;_.cAtomQFExcludeGroup=Yrb.CJ;_.cAtomQFFlatNitrogen=Yrb.DJ;_.cAtomQFHeteroAromatic=Yrb.EJ;_.cAtomQFHydrogen=Yrb.FJ;_.cAtomQFHydrogenBits=Yrb.GJ;_.cAtomQFHydrogenShift=Yrb.HJ;_.cAtomQFIsNotStereo=Yrb.IJ;_.cAtomQFIsStereo=Yrb.JJ;_.cAtomQFMatchStereo=Yrb.KJ;_.cAtomQFMoreNeighbours=Yrb.LJ;_.cAtomQFNarrowing=Yrb.MJ;_.cAtomQFNeighbourBits=Yrb.NJ;_.cAtomQFNeighbourShift=Yrb.OJ;_.cAtomQFNeighbours=Yrb.PJ;_.cAtomQFNewRingSize=Yrb.QJ;_.cAtomQFNewRingSizeBits=Yrb.RJ;_.cAtomQFNewRingSizeShift=Yrb.SJ;_.cAtomQFNoMoreNeighbours=Yrb.TJ;_.cAtomQFNoOfBits=Yrb.UJ;_.cAtomQFNot0ENeighbours=Yrb.VJ;_.cAtomQFNot0Hydrogen=Yrb.WJ;_.cAtomQFNot0Neighbours=Yrb.XJ;_.cAtomQFNot0PiElectrons=Yrb.YJ;_.cAtomQFNot1ENeighbour=Yrb.ZJ;_.cAtomQFNot1Hydrogen=Yrb.$J;_.cAtomQFNot1Neighbour=Yrb._J;_.cAtomQFNot1PiElectron=Yrb.aK;_.cAtomQFNot2ENeighbours=Yrb.bK;_.cAtomQFNot2Hydrogen=Yrb.cK;_.cAtomQFNot2Neighbours=Yrb.dK;_.cAtomQFNot2PiElectrons=Yrb.eK;_.cAtomQFNot2RingBonds=Yrb.fK;_.cAtomQFNot3ENeighbours=Yrb.gK;_.cAtomQFNot3Hydrogen=Yrb.hK;_.cAtomQFNot3Neighbours=Yrb.iK;_.cAtomQFNot3RingBonds=Yrb.jK;_.cAtomQFNot4ENeighbours=Yrb.kK;_.cAtomQFNot4Neighbours=Yrb.lK;_.cAtomQFNot4RingBonds=Yrb.mK;_.cAtomQFNotAromatic=Yrb.nK;_.cAtomQFNotChain=Yrb.oK;_.cAtomQFNotCharge0=Yrb.pK;_.cAtomQFNotChargeNeg=Yrb.qK;_.cAtomQFNotChargePos=Yrb.rK;_.cAtomQFPiElectronBits=Yrb.sK;_.cAtomQFPiElectronShift=Yrb.tK;_.cAtomQFPiElectrons=Yrb.uK;_.cAtomQFRingSize0=Yrb.vK;_.cAtomQFRingSize3=Yrb.wK;_.cAtomQFRingSize4=Yrb.xK;_.cAtomQFRingSize5=Yrb.yK;_.cAtomQFRingSize6=Yrb.zK;_.cAtomQFRingSize7=Yrb.AK;_.cAtomQFRingSizeLarge=Yrb.BK;_.cAtomQFRingState=Yrb.CK;_.cAtomQFRingStateBits=Yrb.DK;_.cAtomQFRingStateShift=Yrb.EK;_.cAtomQFRxnParityBits=Yrb.FK;_.cAtomQFRxnParityHint=Yrb.GK;_.cAtomQFRxnParityInvert=Yrb.HK;_.cAtomQFRxnParityRacemize=Yrb.IK;_.cAtomQFRxnParityRetain=Yrb.JK;_.cAtomQFRxnParityShift=Yrb.KK;_.cAtomQFSimpleFeatures=Yrb.LK;_.cAtomQFSmallRingSize=Yrb.MK;_.cAtomQFSmallRingSizeBits=Yrb.NK;_.cAtomQFSmallRingSizeShift=Yrb.OK;_.cAtomQFStereoState=Yrb.PK;_.cAtomQFStereoStateBits=Yrb.QK;_.cAtomQFStereoStateShift=Yrb.RK;_.cAtomRadicalState=Yrb.SK;_.cAtomRadicalStateD=Yrb.TK;_.cAtomRadicalStateNone=Yrb.UK;_.cAtomRadicalStateS=Yrb.VK;_.cAtomRadicalStateShift=Yrb.WK;_.cAtomRadicalStateT=Yrb.XK;_.cAtomValence=Yrb.YK;_.cBondCIPParityEorP=Yrb.ZK;_.cBondCIPParityNone=Yrb.$K;_.cBondCIPParityProblem=Yrb._K;_.cBondCIPParityZorM=Yrb.aL;_.cBondParityEor1=Yrb.bL;_.cBondParityNone=Yrb.cL;_.cBondParityUnknown=Yrb.dL;_.cBondParityZor2=Yrb.eL;_.cBondQFAllFeatures=Yrb.fL;_.cBondQFAromState=Yrb.gL;_.cBondQFAromStateBits=Yrb.hL;_.cBondQFAromStateShift=Yrb.iL;_.cBondQFAromatic=Yrb.jL;_.cBondQFBondTypes=Yrb.kL;_.cBondQFBondTypesBits=Yrb.lL;_.cBondQFBondTypesShift=Yrb.mL;_.cBondQFBridge=Yrb.nL;_.cBondQFBridgeBits=Yrb.oL;_.cBondQFBridgeMin=Yrb.pL;_.cBondQFBridgeMinBits=Yrb.qL;_.cBondQFBridgeMinShift=Yrb.rL;_.cBondQFBridgeShift=Yrb.sL;_.cBondQFBridgeSpan=Yrb.tL;_.cBondQFBridgeSpanBits=Yrb.uL;_.cBondQFBridgeSpanShift=Yrb.vL;_.cBondQFDelocalized=Yrb.wL;_.cBondQFDouble=Yrb.xL;_.cBondQFMatchFormalOrder=Yrb.yL;_.cBondQFMatchStereo=Yrb.zL;_.cBondQFMetalLigand=Yrb.AL;_.cBondQFNarrowing=Yrb.BL;_.cBondQFNoOfBits=Yrb.CL;_.cBondQFNotAromatic=Yrb.DL;_.cBondQFNotRing=Yrb.EL;_.cBondQFQuadruple=Yrb.FL;_.cBondQFQuintuple=Yrb.GL;_.cBondQFRareBondTypes=Yrb.HL;_.cBondQFRareBondTypesBits=Yrb.IL;_.cBondQFRareBondTypesShift=Yrb.JL;_.cBondQFRing=Yrb.KL;_.cBondQFRingSize=Yrb.LL;_.cBondQFRingSizeBits=Yrb.ML;_.cBondQFRingSizeShift=Yrb.NL;_.cBondQFRingState=Yrb.OL;_.cBondQFRingStateBits=Yrb.PL;_.cBondQFRingStateShift=Yrb.QL;_.cBondQFSimpleFeatures=Yrb.RL;_.cBondQFSingle=Yrb.SL;_.cBondQFTriple=Yrb.TL;_.cBondTypeCross=Yrb.UL;_.cBondTypeDeleted=Yrb.VL;_.cBondTypeDelocalized=Yrb.WL;_.cBondTypeDouble=Yrb.XL;_.cBondTypeDown=Yrb.YL;_.cBondTypeIncreaseOrder=Yrb.ZL;_.cBondTypeMaskSimple=Yrb.$L;_.cBondTypeMaskStereo=Yrb._L;_.cBondTypeMetalLigand=Yrb.aM;_.cBondTypeQuadruple=Yrb.bM;_.cBondTypeQuintuple=Yrb.cM;_.cBondTypeSingle=Yrb.dM;_.cBondTypeTriple=Yrb.eM;_.cBondTypeUp=Yrb.fM;_.cChiralityDiastereomers=Yrb.gM;_.cChiralityEpimers=Yrb.hM;_.cChiralityIsomerCountMask=Yrb.iM;_.cChiralityKnownEnantiomer=Yrb.jM;_.cChiralityMeso=Yrb.kM;_.cChiralityNotChiral=Yrb.lM;_.cChiralityRacemic=Yrb.mM;_.cChiralityUnknown=Yrb.nM;_.cChiralityUnknownEnantiomer=Yrb.oM;_.cCommonOxidationState=Yrb.pM;_.cDefaultAVBL=Yrb.qM;_.cDefaultAllowedPseudoAtoms=Yrb.rM;_.cDefaultAtomValence=Yrb.sM;_.cESRGroupBits=Yrb.uM;_.cESRMaxGroups=Yrb.vM;_.cESRTypeAbs=Yrb.wM;_.cESRTypeAnd=Yrb.xM;_.cESRTypeOr=Yrb.yM;_.cHelperAll=Yrb.zM;_.cHelperBitCIP=Yrb.AM;_.cHelperBitIncludeNitrogenParities=Yrb.BM;_.cHelperBitNeighbours=Yrb.CM;_.cHelperBitParities=Yrb.DM;_.cHelperBitRings=Yrb.EM;_.cHelperBitRingsSimple=Yrb.FM;_.cHelperBitSymmetrySimple=Yrb.GM;_.cHelperBitSymmetryStereoHeterotopicity=Yrb.HM;_.cHelperBitsStereo=Yrb.IM;_.cHelperCIP=Yrb.JM;_.cHelperNeighbours=Yrb.KM;_.cHelperNone=Yrb.LM;_.cHelperParities=Yrb.MM;_.cHelperRings=Yrb.NM;_.cHelperRingsSimple=Yrb.OM;_.cHelperSymmetrySimple=Yrb.PM;_.cHelperSymmetryStereoHeterotopicity=Yrb.QM;_.cMaxAtomicNo=Yrb.RM;_.cMaxConnAtoms=Yrb.SM;_.cMoleculeColorDefault=Yrb.TM;_.cMoleculeColorNeutral=Yrb.UM;_.cPseudoAtomA=Yrb.VM;_.cPseudoAtomAttachmentPoint=Yrb.WM;_.cPseudoAtomPolymer=Yrb.XM;_.cPseudoAtomR=Yrb.YM;_.cPseudoAtomX=Yrb.ZM;_.cPseudoAtomsAGroups=Yrb.$M;_.cPseudoAtomsAll=Yrb._M;_.cPseudoAtomsAminoAcids=Yrb.aN;_.cPseudoAtomsHydrogenIsotops=Yrb.bN;_.cPseudoAtomsRGroups=Yrb.cN;_.cRoundedMass=Yrb.dN;_.fromIDCode=Yrb.cO;_.fromMolfile=Yrb.fO;_.fromMolfileWithAtomMap=Yrb.gO;_.fromSmiles=Yrb.hO;_.getAngle=Yrb.qO;_.getAngleDif=Yrb.rO;_.getAtomicNoFromLabel=Yrb.RO;_.getDefaultAverageBondLength=Yrb.uP;_.isAtomicNoElectronegative=Yrb.AQ;_.isAtomicNoElectropositive=Yrb.BQ;_.setDefaultAverageBondLength=Yrb.ZR;_=d4('OCL.MoleculeProperties',Xrb.AH);_=d4('OCL.Reaction');_.create=Yrb.NS;_.fromMolecules=Yrb.OS;_.fromRxn=Yrb.PS;_.fromSmiles=Yrb.QS;_=d4('OCL.ReactionEncoder',Xrb.XH);_.CATALYST_DELIMITER=Xrb.LH;_.INCLUDE_ALL=Xrb.MH;_.INCLUDE_CATALYSTS=Xrb.NH;_.INCLUDE_COORDS=Xrb.OH;_.INCLUDE_DEFAULT=Xrb.PH;_.INCLUDE_DRAWING_OBJECTS=Xrb.QH;_.INCLUDE_MAPPING=Xrb.RH;_.INCLUDE_RXN_CODE_ONLY=Xrb.SH;_.MOLECULE_DELIMITER=Xrb.TH;_.OBJECT_DELIMITER=Xrb.UH;_.PRODUCT_IDENTIFIER=Xrb.VH;_.RETAIN_REACTANT_AND_PRODUCT_ORDER=Xrb.WH;_.decode=Xrb.YH;_.encode=Xrb.aI;_=d4('OCL.Reactor',Xrb.dI);_=d4('OCL.RingCollection');_.MAX_SMALL_RING_SIZE=Yrb.oT;_.MODE_SMALL_AND_LARGE_RINGS=Yrb.pT;_.MODE_SMALL_AND_LARGE_RINGS_AND_AROMATICITY=Yrb.qT;_.MODE_SMALL_RINGS_AND_AROMATICITY=Yrb.rT;_.MODE_SMALL_RINGS_ONLY=Yrb.sT;_=d4('OCL.SDFileParser',Yrb.MT);_=d4('OCL.SSSearcher',Yrb.YT);_=d4('OCL.SSSearcherWithIndex',Yrb.dU);_.bitCount=Yrb.eU;_.getHexStringFromIndex=Yrb.gU;_.getIndexFromHexString=Yrb.hU;_.getKeyIDCode=Yrb.iU;_.getSimilarityAngleCosine=Yrb.kU;_.getSimilarityTanimoto=Yrb.lU;_=d4('OCL.SmilesParser',Yrb.qU);Xrb.qI();_=d4('OCL.ToxicityPredictor',Xrb.rI);_.RISK_HIGH=Xrb.gI;_.RISK_LOW=Xrb.hI;_.RISK_NAMES=Xrb.iI;_.RISK_NO=Xrb.jI;_.RISK_UNKNOWN=Xrb.kI;_.TYPE_IRRITANT=Xrb.lI;_.TYPE_MUTAGENIC=Xrb.mI;_.TYPE_REPRODUCTIVE_EFFECTIVE=Xrb.nI;_.TYPE_TUMORIGENIC=Xrb.oI;_=d4('OCL.Transformer',Xrb.vI);_=d4('OCL.Util',Yrb.xU);_.getHoseCodesFromDiastereotopicID=Yrb.yU;_=d4('java.io.Serializable');_.$isInstance=x4;Erb.Q4();_=d4('java.lang.Boolean');_.$isInstance=X4;_=d4('java.lang.CharSequence');_.$isInstance=$4;_=d4('java.lang.Cloneable');_.$isInstance=Q5;_=d4('java.lang.Comparable');_.$isInstance=R5;_=d4('java.lang.Double');_.$isInstance=d6;_=d4('java.lang.Number');_.$isInstance=Erb.T5;_=d4('java.lang.String');_.$isInstance=q7;_=d4('java.lang.Throwable');_.of=Xz;_=d4('java.util.List');_.copyOf=Krb.wib;_=d4('java.util.Map');_.copyOf=Krb.Aib;_=d4('java.util.Set');_.copyOf=Krb.Yib;_=d4('javaemul.internal.HashCodes',Hrb.Xmb);_.getIdentityHashCode=Hrb.Ymb;_.getNextHash=Hrb.Zmb;_.getObjectIdentityHashCode=Hrb.$mb;_=d4('javaemul.internal.JsUtils');_.toDoubleFromUnsignedInt=Hrb.qnb;var Crb=(Grb.VV(),YV);var gwtOnLoad=gwtOnLoad=U3;S3(g4);V3('permProps',[[['locale','default'],['user.agent','safari']]]);$sendStats('moduleStartup', 'moduleEvalEnd');gwtOnLoad(__gwtModuleFunction.__errFn, __gwtModuleFunction.__moduleName, __gwtModuleFunction.__moduleBase, __gwtModuleFunction.__softPermutationId,__gwtModuleFunction.__computePropValue);$sendStats('moduleStartup', 'end');$gwt && $gwt.permProps && __gwtModuleFunction.__moduleStartupDone($gwt.permProps);\n\n\n    // End GWT code\n\n    var toReturn = $wnd[\"OCL\"];\n\n    toReturn.version = '8.19.0';\n\n    return toReturn;\n  }\n\n  var isBrowser, globalEnv;\n\n  if (typeof self !== 'undefined') { // Usual Browser Window or Web Worker\n    isBrowser = true;\n    globalEnv = self;\n  } else if (typeof global !== 'undefined') { // Node.js\n    isBrowser = false;\n    globalEnv = global;\n  } else { // Other environment (example: CouchDB)\n    isBrowser = false;\n    globalEnv = root;\n  }\n\n  var document = globalEnv.document || {};\n\n  if (!document.compatMode) {\n    document.compatMode = 'CSS1Compat';\n  }\n\n  var fakeWindow;\n  if (isBrowser && !true) {\n    fakeWindow = globalEnv;\n  } else {\n    fakeWindow = {};\n    fakeWindow.setTimeout = globalEnv.setTimeout ? globalEnv.setTimeout.bind(globalEnv) : noop;\n    fakeWindow.clearTimeout = globalEnv.clearTimeout ? globalEnv.clearTimeout.bind(globalEnv) : noop;\n    fakeWindow.setInterval = globalEnv.setInterval ? globalEnv.setInterval.bind(globalEnv) : noop;\n    fakeWindow.clearInterval = globalEnv.clearInterval ? globalEnv.clearInterval.bind(globalEnv) : noop;\n    // required since GWT 2.8.0\n    fakeWindow.Error = globalEnv.Error;\n    fakeWindow.Math = globalEnv.Math;\n    fakeWindow.RegExp = globalEnv.RegExp;\n    fakeWindow.TypeError = globalEnv.TypeError;\n  }\n\n  if (!fakeWindow.document) {\n    fakeWindow.document = document;\n  }\n\n  var exportedApi = getExports(fakeWindow);\n\n  var extendApi = function extendApi(exports) {\n    function extendMinimal() {\n  // eslint-disable-next-line strict\n  'use strict';\n}\nextendMinimal(exports);\nfunction extendCore(exports) {\n  // eslint-disable-next-line strict\n  'use strict';\n\n  let ConformerGenerator = exports.ConformerGenerator;\n  ConformerGenerator.prototype.molecules = function* molecules() {\n    let nextConformer;\n    while ((nextConformer = this.getNextConformerAsMolecule()) !== null) {\n      yield nextConformer;\n    }\n  };\n\n  let ForceFieldMMFF94 = exports.ForceFieldMMFF94;\n  let defaultMinimiseOptions = {\n    maxIts: 4000,\n    gradTol: 1e-4,\n    funcTol: 1e-6,\n  };\n  ForceFieldMMFF94.prototype.minimise = function minimise(options) {\n    options = { ...defaultMinimiseOptions, ...options };\n    return this._minimise(options.maxIts, options.gradTol, options.funcTol);\n  };\n}\nextendCore(exports);\n  };\n\n  if (typeof exports !== 'undefined') { // NodeJS\n    fillExports(exportedApi, exports);\n  } else if (typeof define === 'function' && define.amd) { // AMD\n    define(function () {\n      var exportsObj = {};\n      fillExports(exportedApi, exportsObj);\n      return exportsObj;\n    });\n  } else { // Global\n    var path = [\"OCL\"];\n    var l = path.length - 1;\n    var obj = globalEnv;\n    for (var i = 0; i < l; i++) {\n      obj = obj[path[i]] || (obj[path[i]] = {});\n    }\n    obj[path[l]] = {};\n    fillExports(exportedApi, obj[path[l]]);\n  }\n\n  function fillExports(obj, exports) {\n    var keys = Object.keys(obj);\n    for (var i = 0; i < keys.length; i++) {\n      exports[keys[i]] = obj[keys[i]];\n    }\n    extendApi(exports);\n  }\n\n  function noop() {}\n\n})(this);\n","'use strict';\n\nconst OCL = require('./dist/openchemlib-core.js');\n\nexports.default = OCL;\nexports.CanonizerUtil = OCL.CanonizerUtil;\nexports.ConformerGenerator = OCL.ConformerGenerator;\nexports.DrugScoreCalculator = OCL.DrugScoreCalculator;\nexports.DruglikenessPredictor = OCL.DruglikenessPredictor;\nexports.ForceFieldMMFF94 = OCL.ForceFieldMMFF94;\nexports.Molecule = OCL.Molecule;\nexports.MoleculeProperties = OCL.MoleculeProperties;\nexports.Reaction = OCL.Reaction;\nexports.ReactionEncoder = OCL.ReactionEncoder;\nexports.Reactor = OCL.Reactor;\nexports.RingCollection = OCL.RingCollection;\nexports.SDFileParser = OCL.SDFileParser;\nexports.SSSearcher = OCL.SSSearcher;\nexports.SSSearcherWithIndex = OCL.SSSearcherWithIndex;\nexports.SmilesParser = OCL.SmilesParser;\nexports.ToxicityPredictor = OCL.ToxicityPredictor;\nexports.Transformer = OCL.Transformer;\nexports.Util = OCL.Util;\nexports.version = OCL.version;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultDatabase = void 0;\nexports.defaultDatabase = [\n    {\n        label: 'alpha cleavage',\n        rxnCode: 'eM``eIhOh`!fH@Oj@ eF``fJD#Qg Qp Qd#!RPNp@@qtJ_@ !RGUi| !R_P@]nop',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1149/1945-7111/abdde7',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Water elimination',\n        rxnCode: 'eMHJN`pksPqFdD@`!fI@GudYA@H@ eF@HhP#Q^ Qp Qd#!RWrL@@qvrO@ !RG]i| !R@@L]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.7',\n        description: 'Fig. 18 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Water elimination',\n        rxnCode: 'eFH`fLGtX!fI@Gu` fHT`P#QX QP a`#!R@AL]|gp !RGUi| !RG[i|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '7',\n        description: 'Fig. 32 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Water elimination',\n        rxnCode: 'gCiALAJRu@_HYlgHE@!fI@Gu` eO``fNZ`~cIrE@#qNT qH Qg#!R@BL@[@@cGPj| !RG]i| !Rog~w?Qwzo@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Water elimination',\n        rxnCode: 'eMH`eIXOda`!fI@Gu` eF@bXhP#Qy Qp Qd#!R@Fp@XqtJ_@ !RG]i| !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'gGTAAaJTwTpGrDZHpypB@P!gCh@@eKHFLv\\\\@`D@ eF``fLGtX#qn\\\\J qfQ qk#!R|Gvw__A|_g?p_Qurw@ !R_wy||G}~GYk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 23',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'gGTAAaJTwTpGrDZHpypB@P!gCh@@eKHFLv\\\\@`D@ eF``fLGtX#qbu_ qj{ Ql#!RlKvwo[@|og~poQurw@ !R_{x|lG~~GYk| !R@BL]~gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 24',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'gGTAAaJTwTpGtDQas`D@`!gJT@AdijdCzZHpypB@P fHT`P#qbqo qJ|h Qp#!R|Gvw__A|_g?p_Qurw@ !Rb@KW@gx@bGt]vhH !RG_i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 25',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'gGTAAaJTwTpGtFQas`D@`!gChAAIRfdCF[N@PB@ eF`BLGtX#qj|^ qbs qo#!Rm?wp?[]|_g~w?QvRw@ !R@Fp?[@AcG]k| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 26',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ureas fragmentation',\n        rxnCode: 'day@B@HIRigjf`Cy@`hcEYpB@P!gGTAAaJTwTpGrFZHpypB@P eF@HhP#IaLJfxP IaBia q~#!RbGwW_Wx@bOq~O}_|bGt]lcp !R|Gvw__A|_g?p_Qtzw@ !R@FL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 27',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Tropylium rearragement',\n        rxnCode: 'gOpAMJUKua@@Gtt@!gOpAGJTju`@@Gt\\\\@#qgVMX qYoTp#!Ri}w^@Hc]i?rg?Mx@GPhB !Rwg}GED]sw~g_~dvOG]h|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Tropylium fragmentation',\n        rxnCode: 'gOpAGJTju`@@D!gKPACJTnLE@P eF@HxP#qqUcx qMsx Qd#!RkpXxCLvpO`BblClLG[KB !RS|T~@BLXSzh]FhH !R@DL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: 'http://people.whitman.edu/~dunnivfm/C_MS_Ebook/CH6/6_9_5.html',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Tropylium fragmentation',\n        rxnCode: 'gFpAAJTjZ@@A@!gBPAAJTkRpD eF@HxP#qbqk qbu qY#!RdMvww]y?wg~wwQurW@ !R@M{^[}yoGUj| !R@@L]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: 'https://en.wikipedia.org/wiki/Fragmentation_%28mass_spectrometry%29',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphonates fragmentation',\n        rxnCode: 'gJPeE`DSpTiMMPGtT@!gC`eE`DSpdiLtA@ fH@Oj@#qbNh qbN qh#!Rb@I~Owx@bGt]|`H !Ru?sW_Wx@GQjB !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 60',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate B fragmentation',\n        rxnCode: 'gGQeLZ@b^@eJZihCzB@!gJQdEb@b^BSTtA}A@ fHT`P#qbqk qbMX Qp#!ROvL@Xvp?OvMc@AtrO@ !RbOq~@Gx?bGt]v`H !RGWi|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 49',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate B fragmentation',\n        rxnCode: 'gNqeLZ@b^@eJZZZ`OhH@!gJQeEb@b^@eIjZ@~`p eF@HhP#qbqkx qbMX q~#!ROvp@[FL?Ovql@@AcGSHB !RbOq~@Gx?bGt]N`H !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 50',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate B fragmentation',\n        rxnCode: 'gGQeLZ@b^@eJZihCzB@!gCaiHlO@SGZ@` eFB@HcA}D@#qbqk qQ] Ql#!ROvL@Xvp?OvMc@AwRO@ !Ruwu~@Ha}GUk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 51',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate A fragmentation',\n        rxnCode: 'gGQeEb@b^BeIiZhCzJ@!gC`eE`DSpdiLtA@ eFHBLGtP#qbqk qbM qs#!RXp@@[C}cXp@@XqtrP` !RbOq~@Ha}G]jB !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 45',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate A fragmentation',\n        rxnCode: 'gNqeEb@b^BgHiDVj`Ohh@!gJQeEb@b^BeIij@~bp eF@HhP#qbqkx qbqh q_#!R[@@@Xs}l[@@@[@AcGPiB !RbOq~@Gx?bGt]N`H !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 46',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate A fragmentation',\n        rxnCode: 'daxLRDp`BH|DgHiDbuU@GtI@!gGPdE`DSpRYvi@~d` eFH`fLGtX#IaLJfxP IaBka qs#!R[C|?XpAc[@@?[@Al@FL]lmp !RbOrH_Wx@b@JH_Qvz`` !R@FL]Agp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 47',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiophosphate A fragmentation',\n        rxnCode: 'gGQeEb@b^BeIiZhCzJ@!gC`eE`DSpdiLtA@ eFHBLGtP#qbqk qbM qs#!RXp@@[C}cXp@@XqtrP` !RbOq~@Ha}G]jB !R@FL]~gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 48',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiocarbamates fragmentation',\n        rxnCode: 'gJYIC`DBTijXCzB@!eMhdiRVB eFB@HcA}D@#qbqh qJh Ql#!Rb@KW@gx@bGt]\\\\hH !R@Fp@XqwZ?@ !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 19',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiocarbamates fragmentation',\n        rxnCode: 'gGYIC`DBTiff`OhH@!gCiIL`DBTff@~`p eF@HhP#IaLJa qbM IG@#!RupJH@m]}_`BH_Qtr`` !RbOq~@Ha}GSjB !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 20',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiocarbamates fragmentation',\n        rxnCode: 'gNyIC`DF\\\\dTJij@~a`!gJYHC`DISTpGtL@ eF@bXpP#IaLJnD qbqh IxP#!Rb@KW@gx@bGvH?Ha}GWJB !Rb@KW@gx@bGt]NhH !R@FL]Agp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 21',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Thiocarbamates fragmentation',\n        rxnCode: 'gGYIC`DB\\\\dTMM@_PP!gCaHL@aJZPH eF``fJGtP#qbqo qbq qo#!R|Gvw_Wy?|Gsp_Qvrw@ !R@Fp?[@AcG]i| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 22',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfoxides fragmentation',\n        rxnCode: 'eMJhBBXvCyH\\\\@!fHT`P eFJHBHh_Q@#Qg Qp Qd#!ROvL@Xqwro@ !RGUi| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 65',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfones fragmentation',\n        rxnCode: 'gC`iH`DRXzpGrdZ@!fHT`P eMFI@bM`~f@#qbq qH Qm#!Re{v~@Hb}G[K| !RGYi| !RWrL@Hquzo@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 66',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfones fragmentation',\n        rxnCode: 'gC`iH`DRXzpGtd@!fHT`P eMFI@bMP~b@#qfQ qH Qm#!R_`CW_Xa}G[K| !RGQi| !R@Gx?_avz_@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 67',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfites fragmentation',\n        rxnCode: 'gJQiHl@aReVu@_QP!gCahHl@bNtA}E@ fHT`P#qbqh qbq qh#!Rmwsp_Gy?|Ot]lkp !RuwvH_Wx@G]k| !RG_i|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 68',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfides fragmentation',\n        rxnCode: 'eMB`HIchOh`!fHT`P eFB@HcA}D@#Q[ a` Q\\\\#!ROvL@Xqur_@ !RGYi| !R@FL]ngp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 61',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sulfides fragmentation',\n        rxnCode: 'gC`I@DBTij@~``!eFB`HIcA}F@ eF@HhP#qrL qq Qd#!RGtL@Pq}lG[I| !R_pp]Vop !R_pp]nop',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 62',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Simple inductive cleavage',\n        rxnCode: 'eM@bXzCKGgW@!fHT`P eF@HpP#Q[ a` Q\\\\#!R_qL@Dqwro@ !RGUi| !R@AL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.1',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Sigmatropic rearrangement',\n        rxnCode: 'eM@HvCzX@!eM@HvB#Q^ Q[#!ROvL@XquJO@ !ROvL@Xqtzo@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.7',\n        description: 'Fig. 18 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene (McLafferty-type rearrangement)',\n        rxnCode: 'gJP@DkVhCzFHrEpBG`D@!eM@HvCzXcI\\\\@axA@ eF@HhP#qTqh Q^ qM#!ROvL@XpAl@FL]Bcp !R@FL?XqwZO@ !R@FL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene (Claisen rearrangement)',\n        rxnCode: String.raw `daxH@JrRHiMUHAcEHHA@!daxH@NrSRHmUHAcGHHA@#IZaxla@ IhfP^c@#!Ru{vHo[x@u?sWoY_|e{t]Dop !R@BL?Xs|\\[E|cWs}cOqp]vcp`,\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.4',\n        description: 'Fig. 12 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene',\n        rxnCode: 'daxDBDqIRiubJ`CZN|bPtQqDD@cDD@chXO}c`!gJQ@DeNl`XqHHA@ eFH`fLGtYFDD@`#qqj\\\\x qqkx QX#!RbCtAHN\\\\}b@Kg@cx@yst]xop !R@DL?W@Al@DL]Nop !R@DL]agp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig. 13 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene',\n        rxnCode: 'gGY@DDf]j`Odkl@!gCi@DDff@~`l eF@HhP#qrLk qrL qk#!RbOrH_Wx@b@JH_QuJ@` !RbOq~@Ha}GSjB !R@FL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig. 13 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene',\n        rxnCode: 'daDLBHSdeJmVfZjh@~QHzHyBB@PbB@QrB@P!gCaAIiRmhCFQA@H@ gC``Eh{PGrTZHiHHAFPPB@#Ikb[HPP I`Tp qky#!R}{rpwKy?lGvpO[y?og|]dep !ROqp@[@@cGUk| !RbKwW_[x@G_k|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.4',\n        description: 'Fig. 14 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-heteroene',\n        rxnCode: 'gGP`MTj}jPOihbl``DUA@H@!eMHJMPqiA@H@ eMHFM`~fHr``D@#qStM qTX qNh#!RbKwWo[x@upKW_QtR?@ !R@Ox?oawZ_@ !R@BL?XqwzO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.4',\n        description: 'Fig. 14 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-ene',\n        rxnCode: 'gJQ@DeZu@_PqFIA@HFB@!eMHJM`qiA@H@ eF@HhP#qeVH qbh qq#!RWrM@XpAl@BL]Bcp !ROvL@HqwZO@ !R@BL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.3',\n        description: 'Fig. 11 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-ene',\n        rxnCode: 'gJP@DkVhCzF@!eM@HvCzX@ eF@HhP#qbqh Qm qM#!ROvL@XpAl@FL]bcp !R@FL?XqwZO@ !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'daDD@DqJg^ffZh@qQDD@cDD@`!gGQ@BeJmJHGFEA@H@ eFHBJFLHHA@#IGmdehp IxakS IeP#!Rog?w_KC\\\\lCvp?[@|lOt]tkp !R|Gw~@OA|mpKp_QwZ`` !R@BL]Agp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 10 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'gFp@DiTujhB!gC`@Die@` eF@HhP#q]aV q]a Q\\\\#!R_g~w_K_}mwvw_AuRO@ !R@Fp?[@AcGUk| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 10 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'gFx@@eJfuS@P!gC`@Die@` eF`BJD#q]aV qqU q\\\\#!R_g~w_K_}mwvw_AuRO@ !R@Fp?[@AcGUk| !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 10 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'gOu@AReLm]SLAcB``D@!gJY@@TeVTCFEA@H@ eF`BJD#IKJRV` IZDrP qM#!R}xNp?[y?}{r~_{@}GQI\\\\ !R_vq?Dw}l_vp]z`H !R@BL]Agp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 10 d.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: String.raw `didDB@{iRYefxijh@zRhX!gNpaAQJRs\\uBIzQg@ eF@HhP#IwlDdeZ IwlIEh IFP#!RbMvH?Cx_bMt~@Hc]Oa~H?AtJo@ !Rm{vwoSy?musPO[\\}GYh\\ !R@DL]Akp`,\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 9 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'fdeA`D@\\\\brTfYY_m]gIZ|DhJB@@h@@~aF@!didHB@BTfUvfZVV@OhB@ didD@@iIYgxUie`B#iup`jXdibCPcXKoI iSxKhvMHP IwbkEYH#!RbCvH?Ky_bCv~@H`}oe~H?Hc|oe~~@H`}esv~W{y_e{v~WquRs@ !RlKvpwKy?lKvpO[y?lKvpOQwZg@ !Rmwvw_[y?msrpo[^}mwvwOAuzG@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 9 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Retro-Diels–Alder ',\n        rxnCode: 'deTDB@{iRYemnJXj`CiJaoQt@!gGPa@QJRmsPbX gC`@DiPDCteZ@#IaLJfxYT IaBxU IriX#!RbGvH?Gx?bGu~@Hb}_c~H?Gx?G[I\\\\ !RbGvH_X`B_`BH_Qtz_@ !R|Gq~_?C}GXX|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.2',\n        description: 'Fig. 9 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Remote Hydrogen rearrangment',\n        rxnCode: 'gC`AEJTu@P!fH@Oj@ eM@fXvB#qVa qH Q^#!R@Fq?[@@SG_HB !RGWi| !R@AM?DqtZO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Remote Hydrogen rearrangement',\n        rxnCode: 'eM@HzCzhcO\\\\@axADQbU`!fH@OjHw\\\\@axADQbU` eF@HhP#Q[ Qp Qd#!ROvL@XqurO@ !RGUi| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.1',\n        description: 'Fig. 4.1. a',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Remote Hydrogen rearrangement',\n        rxnCode: 'eM@HzCzhcW\\\\@axADQbU`!fH@Oj@ eF@HhXqw@H^@QDXeX#Q^ a` Qt#!R@FL?XqwrO@ !RGUi| !R_rp]ngp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.1. b',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Rearrangment d',\n        rxnCode: 'gOpAIJUKua@@Gtt@!gOpAMJUKua@@D#q]gJp q\\\\oQp#!Ro`BWoXb}e?rW?I^}GPhB !Resv~@H`}epJW@kx@GShB',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.comptc.2016.07.018',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Rearrangment a',\n        rxnCode: 'dnD@BLeJV|jfZih@`!gOpAGJTju`@@D#qTuYx qigSp#!RSF\\\\_iUMg_wy~_wy?G_I\\\\ !RgtXxCJvp_`Cbl@\\\\LG]kB',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.comptc.2016.07.018',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Radical resonance',\n        rxnCode: 'gCaA@IRVXROtD_u@`!gCa@@dkPGtD_uD`#qbq qbq#!R_`BH@ha}GXhB !R@FL@[@AcG[i|',\n        ionization: 'esi',\n        reaction: 'Reaction',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'resonance',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Radical resonance',\n        rxnCode: 'gCaA@IRVdCzCOzdP!gCaA@IRVXROtF_uL`#qbq qbq#!R@FL@[@AcGTj| !R_`BH?Ha}G[hB',\n        ionization: 'esi',\n        reaction: 'Reaction',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'resonance',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Radical H Rearrangment',\n        rxnCode: 'eM@jXzCzXcV\\\\@`DSc@jd!eM@jXzCFlxA@HgFATh#Qg Qg#!ROvL@XqtJO@ !ROvL@XqtzO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Phosphonic acid fragmentation',\n        rxnCode: 'gGPiHaxJ\\\\ddKU@_QYFEF@P@!gC`iHaxJX{PGrDKHsHpB@ eF@HhP#qqZl qq] Qd#!R[C|?XpAlXp@@Xqvr_@ !Ruwu~@Ha}G]k| !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 41&42',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphonic acid fragmentation',\n        rxnCode: 'gGQiHlOASddeZhCyKM@!gCahHlOBNtA}aBcP eF@bXpP#qVLk qVa qk#!RPpAlGq}C@Fp@Pqvr_@ !RO^\\\\@OcvHG]i| !RY`@]^op',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 43',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphonic acid fragmentation',\n        rxnCode: 'gJQiHlOASGmPGrVZ@!gC`iHaxBX{PGtT@ fI@Gu`#qbqh qbM Qp#!Re{v~@Ky_bKt]Lgp !Re{v~@Hb}GYk| !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 44',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphonates fragmentation',\n        rxnCode: 'gJQiHlOBSGmPGtd@!gCahHlOBOTA}I@ fHT`P#qbqh qbq qh#!Ruwu~@Gx?bGt]Lgp !Ruwu~@Ha}GUk| !RGWi|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 59',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphates fragmentation',\n        rxnCode: String.raw `gNpYHlQxR\\ddqZj@~Tap!gJPYHlQxRX}j@~TaP eF@HhP#qbuKx qbqh q{#!RXs|@Xs}l[@@@[@AcGPi| !Ruwu~@Gx?bGt]vgp !R@FL]Akp`,\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 37A&B',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphates fragmentation',\n        rxnCode: 'gGPYHlQxJTjmj`Ohh@!gCaiHlO@SGZ@` eFHBLGtP#IaLJa qbi IpP#!R[C|@[C}cXp@@Xqvr_@ !Ruwu~@Ha}GUk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 38',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Phosphates fragmentation',\n        rxnCode: 'gGPYHlQxJTjmj`OlhtF@!gJPXHlQxQ{TA}eF`p fHT`P#qqU\\\\ qqUX a`#!R[C|@[C}cXp@@Xqvr_@ !Ruwu~@Gx?bGt]vgp !RG_i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 40',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Oxonium Resonance',\n        rxnCode: 'eFH`fJGtQFDD@`!eFHhfLGuQFdD@`#QX Qd#!R@BL]bgp !R_vp]vop',\n        ionization: 'esi',\n        reaction: 'Reaction',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'resonance',\n        web: 'https://en.wikipedia.org/wiki/Oxonium_ion',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Oxime-ethers fragmentation',\n        rxnCode: 'gCiAHIJTt`_JPh@!eF``fJGtX eFHBJD#qbq qQ Ql#!R@Fp?[@AcGWK| !R@FL]Vgp !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 36',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ketones fragmentation',\n        rxnCode: 'eMH`eIXOh`!fH@Oj@ eFHbfJD#Qg Qp Qd#!R@Fp@Xqwr_@ !RGUi| !R@FL]^kp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 31',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ketones fragmentation',\n        rxnCode: 'eMH`eIXOh`!fHT`P eMHAIXOj`#qNP QP qN@#!R@Fp@Xqwr_@ !RGQi| !R@Fp@Xquz?@',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 32',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eFBCDcAcBQFIdT!eFBcDIcA}EqaHcD@#QX QX#!R@FL]bgp !R@FL]vgp',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '5',\n        description: 'Fig. 10',\n        kind: 'ionization',\n        web: 'https://www.orgchemboulder.com/Spectroscopy/MS/fragmech.shtml',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eF@HhP!eF@bXp_zi@#Qd Qd#!R@FL]Rkp !R@FL]vkp',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'gC`@DkZ@qds`D@`!fH@H eM@fXvCFlxA@H@#qbq qH Qg#!RWvp@[@@cGWHB !RGYi| !RWrL@HqvzO@',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eF@H`Zp`!eF@bXp_U@#Qd QX#!R@FL]Rkp !R_rp]Vop',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FL``D@!fIRPLYA@HjP#a` a`#!RGPi| !RG]i|',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eF@HpXp``D@!eF@bXpXt``D@#Qd QX#!R@FL]bgp !R_rp]Vop',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'eFHBLGtP!gChaHDiRUhCzJ@#Qd QBP#!R@FL]Bgp !R@FL@[@AcGSj|',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FMg@HAG~U@!eFJhrJXpXug@HA@#a` aP#!RGXi| !R@FL]Nkp',\n        ionization: 'esi',\n        reaction: 'Ionisation ',\n        doi: 'https://doi.org/10.1186/1477-5956-10-S1-S8',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FMg@HAG~U@!eFJhtJXpXug@HA@#a` aP#!RGXi| !R_rp]Vop',\n        ionization: 'esi',\n        reaction: 'Ionisation ',\n        doi: 'https://doi.org/10.1186/1477-5956-10-S1-S8',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FMg@HAG~U@!fIRPOjHv\\\\@`D@#a` a`#!RG\\\\i| !RGUi|',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: 'https://doi.org/10.1186/1477-5956-10-S1-S8',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@GuD[N@PBO|j!fIS`L[N@PB@#a` a`#!RGZi| !RGUi|',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: 'https://doi.org/10.1186/1477-5956-10-S1-S8',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ionization',\n        rxnCode: 'fI@FMg@HAG~U@!eMjrX@fezN`~SjHug@HA@#a` aP#!RGPi| !R_qL@DquZo@',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavages assisted by adjacent heteroatoms',\n        rxnCode: 'gCaALIRfhCJAxsEpBG`D@!eFH`fJFLEpBG`D@ eF@Hp_Q@#qbq qJ Ql#!R[pL@@v}lGSI| !R@@L]Vgp !R@@L]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavages assisted by β-hydrogen removal',\n        rxnCode: 'dayHBDxDeIYtjj@LhQHdU@!gCi@DDeZ@~b` gChA@IRVdCzB@#IyjH\\\\R@ IyjD qbq#!RtEsP_]A\\\\Og?P_]A\\\\tGt]|kp !R@DL@[@ACGSi| !R@DL@[@ACGXY|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.4',\n        description: 'Fig 23 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavages assisted by β-hydrogen removal',\n        rxnCode: 'gJPAMJTmTAeLhHcBW@H^@QNRO@!gC`AMJUm@_SQFXn@P|@b\\\\d^ fH@H#quQ` quT qH#!R@Fq_[@@cWrL]Lgp !R@BM_Hu}lGUi| !RGPY|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.4',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gChA@Icu@YPOYQ^`bNB\\\\GaHXECAjb@!fJ@FLgAx@ fHT`P#Q`P a` QP#!Rwg~PO[\\\\}G_H| !RGUi| !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.1',\n        description: 'Fig 22 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eFH`fLFTOzLcBB@P!fI@GudYA@H@ fHT`P#Qd a` QP#!R@DL]\\\\gp !RG]i| !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.1',\n        description: 'Fig 22 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eMhdYRRCJW}N@!fJ@D eFH`fND#Qg Qp Qd#!R@Fp@PquJ_@ !RGUi| !R@DL]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.1',\n        description: 'Fig 22 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eMDaYRRCJW}LQeA@H@!fI@FL``D@ eFH`fND#Qg Qp Qd#!R@Fp@@qvJ_@ !RGUi| !R@@L]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.1',\n        description: 'Fig 22 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'diD@b@|@gIIETjji@NlRrJ@!gC`HAxQz`H eM@fXvB eF@HhP#IaLJfxY qan IF^ qS#!R@FMl@C}lXs|@[@Ac@Fp@Xqvr_@ !Ruwu~@Ha}GYk| !ROvL@XquzO@ !R@FL]Qkp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '7',\n        description: 'Fig. 31',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gGYALMJT}TpGRdX!gJY@DDefXB fHT`P#qnZa qnTH qX#!RbGwW_X`B_`BH_Qur?@ !RbGvH@gx@bGt]Nop !RG_i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '7',\n        description: 'Fig. 32 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gCaA@IRmhCzZHpHHA@!eFH`fJGtQFDD@` eF@HhP#qqT qq Qd#!RWvp@[@@cG_I| !R@BL]vgp !R@BL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '7.4.1.3.',\n        description: 'Fig. 7.7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gGPiH`DZ\\\\ddJu@XsHp\\\\@!gC`iH`DBXzpD eF@HhXpcAp@#qVLk qVM qc#!R[C}c@@AlOvL@Xqvr_@ !Ruwu~@Ha}GYk| !R_rp]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1002/rcm.9131',\n        section: 'conclusion',\n        description: 'scheme 1',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eFH`fLG~hP!fI@G~i@ fHT`P#QX QP a`#!R_rp]\\\\gp !RGYi| !RGSi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eM@jXzCKGgW@!fHT`P eF@HhP#Q[ Qp Qd#!ROvL@Xqwro@ !RGUi| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'gBPAML^Jj@sfb`!gC`AMJUm@YqQP#qVL qTN#!R@GxBu}\\\\BG_I| !ROvp@[@AcGSi|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eM@jXzCfh!fHT`P eF@HhP#Q[ Qp Qd#!RGtL@Pqwro@ !RGUi| !R@DL]^kp',\n        ionization: 'esi',\n        reaction: 'ionization',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'ionization',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Inductive cleavage',\n        rxnCode: 'eM@bXzCzhsT!fHT`P eF@HhP#Q^ a` Q\\\\#!R_qL@Dquro@ !RGYi| !R@AL]nkp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1093/chromsci/43.2.92',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gCaA@IRUhCzB@!eFHbfLGtP eF@HhP#qtQ Qx qQ#!R@FL@[@AcGPi| !R@FL]vkp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'eMH`eIhOhp!fH@H eFH`fJGtP#Qg Qp Qd#!R@Fp@XqtJ_@ !RGYi| !R@FL]ngp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gJQA@IRUZ`OhH@!eMH`eIdOhp eF@HhP#qTqh Q[ qM#!R@Fp@XpAl@FL]Bgp !R@Fp@Xqtz_@ !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gCaA@IRVhCzC@!eFH`fJGtP eF@HhP#qTq QX qq#!R@FL@[@AcGPi| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gJPaAaJTtlA@!eMHAITH eFH`fJGtP#qfUH qnH Qd#!Rb@KW@ha}_`@]lhH !R@Gx@_awZ_@ !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gJQAAIRgjPH!gJQA@IRgeaDp#qTnH qTnH#!ROvL@Xs}lOvL]\\\\kp !RbGwW_X`B_`@]nop',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gCaA@iRZhCzB@!fI@Gu` eM@fXvB#qJt qH Q[#!Ru?q~@M]}GSJB !RGUi| !ROvL@XquzO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'eM@jXzB!fHT`P eF@HhP#Qg QP Qx#!R_qL@DqtJO@ !RGSi| !R@AL]fkp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'gJPAEJUkTA@!eM@bXvB eF@HhP#qVah Q[ qi#!R_qL@DpAl@AL]bcp !R_qL@Dqvz_@ !R@AL]Vkp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen rearrangment',\n        rxnCode: 'eM@jXzCKGgW@!fHT`P eF@HhP#Q[ Qp Qd#!R_qL@Dqwro@ !RGUi| !R@AL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen lost',\n        rxnCode: 'eM@jXzCVd@!eO@bXyjCVT@#Q[ Qg#!R_qL@DquJO@ !R?`Bw@auZ?@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Hydrogen elimination',\n        rxnCode: 'gFpACJTj[ATA}C`!gFpAAJTjZ@@A@#qbqk qn\\\\J#!Rog~wOK_}m{vwOAurO@ !Rog~wOK_}m{vwOAuZO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Halide Elimination',\n        rxnCode: 'eMBGDchOjbLiDX`!fHfHA}QFRHq@ eF@HhP#Q[ Qp Qd#!ROvL@DqurO@ !RGUi| !R@BL]^kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 1',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'H Radical Lost',\n        rxnCode: 'eF@bXp_QDXs`D@c~hP!fHd@AjP eF@bXhXqg@HA@#QX  QX#!R_rp]|gp !RGYi| !R_rp]ngp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Grob-Wharton',\n        rxnCode: 'gNpaIYJU_MU@_JQXbh``DUA@H@!gCa@IGj@~dbLbB@P eMHjfM`~jHt``D@#qqWeX qqW qeX#!Ru{vHo[x@b@J~@Hb}GSK| !Ruwv~@Hb}GUi| !ROvL@HqwzO@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.5',\n        description: 'Fig. 24 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Grob-Wharton',\n        rxnCode: 'gNxaLJIRU[jXCzZ@!eMH`eIxH eF`BJGtP eFHBND#q{iV` Qv qM q{#!R_c}~Oxa}b@I~@Ha}G]H\\\\ !R_wy?_awj_@ !R@FL]ngp !R@FL]Agp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '6.1.5',\n        description: 'Fig. 24 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Grob-Wharton',\n        rxnCode: 'gGPACJTkUPFtlUlxA@HlLG~r`!eN@HdH eF@HhXqg@HA@#qrLh qqh Qd#!R@FL?XpAlOvp@Xquro@ !RJW}yXQuZO@ !R@FL]Agp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.5',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'daF@B@BTeeVz`@@B!gOpAMJUKua@@D fJRPH#IGfbdK@ q\\\\oQp ID#!Rmwrw_Wy?mwrw_[_}mwp]Dcp !Ru{u~@Hb}upKW@gx@GUhB !RG_i|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'did@BLeJeWk``b@CzAbLMcApB@!gOpAMJUKua@@D eF@HhXqcApB@#IZJyBGI q\\\\oQp IFP#!Rquu^@Ha]q?sG?H`BW`BHWQur@` !Rquu^@Ha]q?sG?Ex@G]hB !R@Gt]Agp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'dif@B@BTeYWaz@@@OhB@!gOpAMJUKua@@D eF`BND#Id^ZJPl q\\\\oQp IdP#!R_`A~@M\\\\Bu{u~@M\\\\BupI~@AuRh` !Ru{u~@Hb}upKW@gx@GUhB !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'didHB@BTiyWaj@@@OhB@!gOpAMJUKua@@D eFHBLGtP#IGiZJPl q\\\\oQp IFP#!RuwvH_]_|uwu~@M_|u?q~@Awb@` !Ru{u~@Hb}upKW@gx@GUhB !R_rp]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Formation of stabilized cations',\n        rxnCode: 'dmtDB@PIRY^UeVj@@@OhB@!gOpAMJUKua@@D gC``@deZ@`#IaLJfxYWP I[aJUt qbu#!R_`CW?Hc|uwvH_Xc|_c~H_Xb}_c|]LhH !Ruwu~@Ha}u?sW?Gx@GUhB !R@FL@[@AcGXY|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 2',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ethers fragmentation',\n        rxnCode: 'eMH`fN`~b@!fHT`P eFHBLGtP#Qg QP Ql#!ROvL@Xqur_@ !RGYi| !R@FL]ngp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 33',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ethers fragmentation',\n        rxnCode: 'gCaA@IRfhCiQs{BIF`!eFH`fLGtX eF@HhP#qVa QX qN#!R@Fp?[@AcGPk| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 34',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ethers fragmentation',\n        rxnCode: 'eMH`fN`~RJ@!fH@Oj@ eFH`fJGtP#Q[ Qp QX#!ROvL@Xqvro@ !RGUi| !R@FL]ngp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 35',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ether/water elimination',\n        rxnCode: 'gCa@@eMPFtWihb```DJFCX`!fI@GuDYA@H@ eF@HhP#Qdp a` Q\\\\#!R@Fq?[@@SG_K| !RG]i| !R@AL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.3390%2Ftoxins6082580',\n        section: '2.2',\n        description: 'Fig. 3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Ether/water elimination',\n        rxnCode: 'gCaAHiRfhCZ[tTQTPPBMCAlp!fI@GuDYA@H@ eF@bXhP#Q[@ a` Qt#!R_qL@Xs}lG[J| !RG]i| !R_qp]^op',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.3390%2Ftoxins6082580',\n        section: '2.2',\n        description: 'Fig. 3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gC`a@aJRm@_PP!eMHAIhOh` eFH`fND#qbq qq@ Qd#!R@FL@[@AcG_I| !R@Fp@XqwZ_@ !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'http://dx.doi.org/10.1088/1468-6996/10/3/034602',\n        section: 'Results',\n        description: 'Fig. 5',\n        kind: 'reaction',\n        web: 'https://www.researchgate.net/figure/a-Chemical-structure-of-oxidative-reserpine-MW-6077-b-Post-source-decay_fig4_26637371',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gJPa@eJSKTA}E@!eMHbeIXH eFHBLGtX#qrLh Qv qM#!R@W~GKVQuazH]Lep !R@W|LEQvZw@ !R_tP]^op',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 11',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gGPa@eJSNuPGtT@!gC`a@eJSM@_QX eF@HhP#satpj satp qi#!RbOrHo[x@b@JHoQtJ`` !RbOrHo[x@GSjB !R_tp]~op',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 12',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gGPa@eJSNuPGtT@!gC``@dfZ@~b` eF@bXpP#qbqk qbq qk#!RbOrHo[x@b@JHoQwr`` !RbOrHo[x@GSjB !R@BL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 13',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gGPa@eJSJuPGtT@!gC``@deZ@` eF@bXpP#qbqk qbu qK#!Ro`BW?Hc|e{vHoQtr`` !R@BL@[@@cGSi| !R_tp]^gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 14',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Esters fragmentation',\n        rxnCode: 'gJPa@eJSKTA}E@!eMHAITH eFH`fLGtX#qbqh qbH qu#!R|Gwp_Gy?|Gt]|cp !R_wy?_atZ_@ !R@FL]~gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 15',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Elimination (missing source)',\n        rxnCode: 'eM`AIhOdq`!fJ@Gup eF@HhP#Qv Qp Qd#!R_rq?Dqvr_@ !RG]i| !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'To check',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Elimination',\n        rxnCode: 'eMHAIhOdm`!fI@Guh eF@HhP#Qg a` Qt#!R@Fp@HqvJ_@ !RG]i| !R@BL]^kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 1',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Elimination',\n        rxnCode: 'gC`@Dij@~b`!eF@Hp_Q@ eF@HhP#qVa qq Qd#!R@Fp?[@AcG_HB !R@FL]vgp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.jpha.2016.04.008',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Electron Sharing',\n        rxnCode: 'gCaAAIRVdCzB@!gCaA@IRUdCzB@#qbq qbq#!R@FL@[@AcGTj| !R@FL@[@AcG[i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Double cleavage',\n        rxnCode: 'gJPaAaJTkTHGyZCDTDD@cHHA@!eMDiicXOfabKHHAB``D@ eF@HhP#qbqh qTH qu#!RepJH@kx@bKt]LhH !ROvL@HqwZO@ !R@BL]Akp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Double cleavage',\n        rxnCode: 'gChA@IRmhCzB@!eF``fJGtX eF@HhP#qTq QX qq#!ROvp@[@AcG_I| !R@FL]Vgp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Double cleavage',\n        rxnCode: 'gJXA@IRmZ`OdHL@!eM`bfN`~b@ eF@HhP#qTqh Q^ qi#!ROvL@XpAl@FL]Bkp !ROvL@XqwZo@ !R@FL]Akp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Double cleavage',\n        rxnCode: 'gChA@Icu@_PP!fH@H eM``fM`~b@#qTq qH Q[#!Ruwu~@Ha}GWK| !RGYi| !ROvL@Xqvz_@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '7.4.3.',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: 'ISBN: 978-0-470-03310-4',\n        software: '',\n    },\n    {\n        label: 'Dithiophosphates fragmentation',\n        rxnCode: 'gGPmLPDSpPPiRZVj@~b`!gJPlLPDSpPPdtu@_QP fHT`P#qbqk qbqh qX#!RXp@@[C}cXp@@XqvrP` !RbOq~@Gx?bGt]v`H !RGWi|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 52',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Dithiophosphates fragmentation',\n        rxnCode: 'gGPmLPDSpPPiRZVj@~b`!gC`eE`DSpdiLtA@ eFB@HcA}D@#qbqk qbM qs#!RXp@@[C}cXp@@XqtrP` !RbOq~@Ha}G]jB !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 53',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Dithiophosphates fragmentation',\n        rxnCode: 'gGPmLPDSpPPiRZVj@~b`!gJPmLPDSpPQIRZV`H fH@Oj@#q`qk qpeH qX#!RXp@@[C}cXp@@XqtrP` !RbOq~@Gx?bGt]v`H !RG_i|',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 54',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement reaction ',\n        rxnCode: 'gCaALiRfhCJIxsHHADxH\\\\!fH@H eOH`fNZ`qaA@HgLN#qbq Qp qJ`#!R@Fq_[@@cG_K| !RGUi| !Rog~w?Quzo@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.3 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement reaction ',\n        rxnCode: 'gJXA@YRgj`LhWmEFJFB\\\\TOlP!fH@H eO`BNZ`sfG@#qJDp Qp qJ`#!RWrL@Hu}lWrL]lkp !RG]i| !Rog~w?QuzO@',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.3 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement reaction ',\n        rxnCode: 'gJPACJUkTAeB|YBXN@PBIqQx!gBPAML^Jj@qfI`xA@HgMG` fH@H#qTnH qVl qH#!RWrL@HpAl@BL]|cp !R@K{|ey\\\\BG]i| !RG_i|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.3 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement Reaction b.',\n        rxnCode: 'gJXA@IRUjPH!eM@fXvB eF`BLGtP#qlVH qrH ql#!R@Fp@XpAl@FL]Bgp !ROvL@XqwZO@ !R@FL]~gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement Reaction b.',\n        rxnCode: 'gJQABYRmZ`LXTD@`!eM@fXvB eFH`fLGtQFDD@`#qMr` qNh Qd#!R@BL?Xs|\\\\OvL]xcp !RWrL@HquZO@ !R@BL]~gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Displacement Reaction a.',\n        rxnCode: 'gGYADEJSLuPGtT_nlK|!gChA@Icu@_PP eFHBND#qtSi qQ] Qx#!RbGvH@gx?_`BH_QtJo@ !Ruwu~@Ha}GUk| !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '7.1.3',\n        description: 'Fig. 22 c. ',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Dioxolane fragmentation',\n        rxnCode: 'dclDB@iYRfUw\\\\kahHBj@CzI`!eFHBJD deTHB@RTfU]ih@I`Hz~`H@#IzAQirbWS IdP IzD[JI]L#!RIm~?ck^}|KuMswy?_g?po_B}|GspoQwR{@ !R@FL]fgp !RbOq~@Ha}b@JH@ha}bGvH?Ha}GXZB',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1002/jms.1963',\n        section: '',\n        description: 'Fig. 4',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Dioxolane fragmentation',\n        rxnCode: 'detDB@jYRfUwJxZB@h@H!eFHBJD daDHB@RTfUVyiZPB#IaLJfxYT Ql IXdziEP#!RIm~?ck^}|KuMswy?_g?po_B}GSKl !R@FL]fgp !RBGvh[AF?HBVDj?Jo@MX]Aep',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C3AY40543E',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'DB rearrangement',\n        rxnCode: 'eM@HvCzX@!eM@HvCzX@#Q[ Q^#!ROvL@XqvJO@ !R@FL?XqtzO@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.jpha.2016.04.008',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Cycloreversion',\n        rxnCode: 'gFp@DiTvjhB!eF@HhP eF@HhP eF@HhP#qbqk qn qY Qd#!R_g~w_K_}mwvw_AvRO@ !R@FL]Fkp !R@FL]Nkp !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Cyclization',\n        rxnCode: 'eM@jXzCNhh!eO@bXyjCNXh#Q[ Qg#!R_qL@DquJO@ !R?g~w?QuZo@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Charge Stabilization',\n        rxnCode: 'gCaAAIRVdCzB@!gCaAAiRVXROtD@#qbq qbq#!R@AL@[@@SGRj| !R?`BH@hc}GShB',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Charge Remote Fragmentation',\n        rxnCode: 'gC`@Dij@~RcP!eF@HhP eF@HhP#qqb Ql qJ#!R@Fp?[@AcGXk| !R@FL]vkp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.5',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Carbamates fragmentation',\n        rxnCode: 'gJXaLDiRYZ`Ohh@!eMhdiRVB eFHBLGtP#qbqh qbH qu#!R|Owp_Gy?|Gt]|mp !R@Fp@XqwZ?@ !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 16A & B',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Carbamates fragmentation',\n        rxnCode: 'gJXaLDiRYZ`Ohh@!eMhDRUB eFH`fLGtX#qbqh qbH qu#!R|Gwp_Gy?|Gt]|mp !R_wy?_atZ_@ !R@FL]~gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 17',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Carbamates fragmentation',\n        rxnCode: 'gGXaLDiRYvj@~b`!gChaLDiRYhCzK@ eF@HhP#IaLJa qbq IF`#!Rwg~Pw[_]dArP_Qwrw@ !RdKw^_yA\\\\GSk\\\\ !R_wP]^op',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 18',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'COOH loss',\n        rxnCode: 'gOxaBDYR[fmjj@pb}C@!gBXA@IReYj@` eMDARVCzX@#qbqkx qi{ Qg#!RbOp~@H`}HMkZK}hoGPhB !RO`@@O`@~GUhB !R_pq?Dqvz?@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1038/s41598-019-42777-8',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'CO loss',\n        rxnCode: 'gOxaBDYR[fmjj@pb}C@!gJYABCJRkTA}C@ eFHPfzND#qbqkx qq_h Qd#!RypKgOSx@iJSKiLndG^KB !R_pq?Dw|L_qL]zop !R_pp]~op',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1038/s41598-019-42777-8',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'CO elimination',\n        rxnCode: 'gCa@@dsPFRTZ@!eFHPfzND eF@HpYIE@#qJf qJ Ql#!RbOq~@Ha}G_JB !R@FL]Vkp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.8',\n        kind: 'reaction',\n        web: '',\n        mode: 'negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'CO elimination',\n        rxnCode: 'gOq@@drm[UTA@!gKP@Di\\\\Zj@` eFHBND#qbqkx qY~h Qd#!RbOvH?Oy?bOvH__y?GPi\\\\ !R?g|_Fa}eTv\\\\]fcp !R@AL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.8',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'CO Elimination',\n        rxnCode: 'gCaA@IRWhCZZLtLG~s@!fHT`P eFHPfzND#Qg@ Qp Qd#!R_g}~_?A}G_H\\\\ !RGYi| !R@FL]nkp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Beta Remote Hydrogen rearrangment ',\n        rxnCode: 'gGPACJTkUPD!gJPACJUkTA@ fH@Oj@#qrLk qTqh qX#!R@AM?DpAl_vp@Dqtr_@ !R_qL@DpAl@AL]~cp !RGYi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: '',\n        section: '',\n        description: '',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: 'Mass-Frontier',\n    },\n    {\n        label: 'Aromatic elimination',\n        rxnCode: 'ded@@DiUUeiZ@hTZfh!gFp@DiTt@@B gC`@DiZDC@#IpdjFGiT qcUq IGiT#!RbGvw_X`B?g?~@K]}b@K~_?x@GWJ| !R?g~w@k_}m?vw@avZO@ !Rb@K~_xc}GPZ|',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.6',\n        description: 'Fig. 16',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminothiophosphates fragmentation',\n        rxnCode: 'gGXiMDOCSddajXCFEA@H@!gC`iHaxBX}HFLrB@P eF`BLD#qbqk qbu qK#!RXp@?XpAl[C|@Xqvr_@ !Ruwu~@Ha}GUk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 55',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminothiophosphates fragmentation',\n        rxnCode: 'dazDbLa@|LeJi~ij@OdrNbLD``D@!gC`hHaxQvPOhHcL``D@ eF``fLGtX eF@HxP#IaLJnXP qbu qK IxP#!R@FMc@C}c[@@@[C}l@FL]top !Ruwu~@Ha}GUk| !R@FL]~gp !R@FL]Qkp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 56',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminothiophosphates fragmentation',\n        rxnCode: 'gNxiMDOCSddauSPGrtNHphHA@!gJXiMDOCSGuHGtvQaPPB@ eF@HhP#qbqkx qbqh q_#!R[@@?[@AcXs|@[@AcG_I| !Ruwu~@Gx?bGt]Ngp !R@FL]Akp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 57',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminosulphate fragmentation',\n        rxnCode: 'gGXiMD@cSddaVhCz[@!gC`iH`DBXzpD eF`BLGtX#qqj\\\\ qqk QX#!R[@ACGq}l@DL_PqwR_@ !RysvHOSx@GYk| !R_pp]^op',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 63',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminosulphate fragmentation',\n        rxnCode: 'gGXiMD@cSddaVhCy[C@!gC`hH`DQuPH eF``fLGt\\\\#qbqk qbu qK#!R[C}c@@AlOvL@Xqvr_@ !Ruwu~@Ha}GYk| !R@FL]^gp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 64',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminodithiophosphate fragmentation',\n        rxnCode: 'gGYMC`DSphPIRfji@~`bLjB@P!gCiEEAxXHDqzPLYdD@` eFB@HcA}D@#qrYl qQl qs#!ROvL@Xs}cXpAlOqwRO@ !R_`BH_]]}GUk| !R@FL]~gp',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 58',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amines fragmentation',\n        rxnCode: 'gChA@IRfhB!eF`BLD eF@bXpP#qLZ qK Qd#!RpDp^_|B]GPj| !R@Kt]Vgp !R_qP]nop',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 3',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amines fragmentation',\n        rxnCode: 'gChA@IRfhCyBM@!eF``fLGtX eF@HhP#qbq Ql qQ#!R@Fp?[@AcGPi| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 4 ',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amines fragmentation',\n        rxnCode: 'gJXA@IRij`OhH@!gChA@Icm@P fH@Oj@#qrM` qri a`#!Ruwu~@Ha}upH]Lop !Ruwu~@Ha}GUk| !RGWi|',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 5',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gGYADEJSNuPD!gCiADEJSM@_QP eF@HhP#qbq_ qbq q{#!RbOrH_Wx@b@JH_QvJ@` !RbOq~@Ha}GSjB !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 10',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gJYADEJSKTAkLh!eMHbeIXH eF`BLFlJ@#qbqh qbH qu#!RxCw`[Ey?xEt]Bcp !R@Fp@?QwZ?@ !R@Gt]^gp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 6',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gJYADEJSKTAkLh!eMHAITH eF``fLGtQVE@#qbqh qbH qu#!R|Gwp_Gy?|Gt]|cp !R_wy?_atZ_@ !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gCiADEJSM@P!fHT`P eMhDRVB#qbq qH Qg#!RbOq~@Ha}G_JB !RGQi| !R@Fp@Xquz_@',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 8',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Amides fragmentation',\n        rxnCode: 'gJYADEJSKTA@!gCi@DDfZ@` fHT`P#qbsH qbs qH#!R|Owp_Gy?|Gt]Bcp !RbOq~@Ha}G]jB !RGWi|',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 9',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Acyl urea fragmentation',\n        rxnCode: 'dayDBDpFRTfUfjX@~QLr@!gJU@E`dru@_SX eMHbeIXH#IZbyAr@ IZnHP Qv#!Ro`BW?Hc|e{vHo[y_e?p]ThH !Ro`BH?I_|bKt]vhH !R_tq?Dqwz?@',\n        ionization: 'esi,ei',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 28',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Acyl urea fragmentation',\n        rxnCode: 'gGTaEaUJSNuHGrVZ@!eMhdYRVCz^@ eMhDRUB#qyuS qZp qyh#!RbOrH_Wx@b@JH_Qur`` !R@Fp@XqwZ_@ !R_wy?_auz_@',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 29',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Acyl urea fragmentation',\n        rxnCode: 'dayDBDpFRTf[VjX@~QHr@!gGTaEaUJSNuHGrVZ@ eF@HhP#IaLJfEP IaLJa IU`#!Rb@JH_Wx@_c~H@m]}bGt]|gp !RbOrH_Wx@b@JH_Qvz`` !R@FL]Akp',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 30',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,5-shift',\n        rxnCode: 'gJP@DiYXRWtL@!gJP@DiYXRWtL@#qbqh qfUH#!ROvp@[C}c@FL]Bop !R@Fp?[@AcOvL]nop',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,4-elimination',\n        rxnCode: 'gC`@Dij@~RcP!eF@HhP eF@HhP#qVa Qd qq#!R@Fp?[@AcGXk| !R@FL]vkp !R@FL]^kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig 15 a.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,4-elimination',\n        rxnCode: 'gC``Adej@~PcP!eFHBJD eFHBJD#qtQ qJ Qx#!R@FL@[@AcGTj| !R@FL]vgp !R@FL]^gp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig 15 c.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,4-elimination',\n        rxnCode: 'gCa@@dmPGrDZ@!eFHBJD eF@HhP#qNT qN Qd#!R_rq?Dw|lGSK| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig 15 d.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,3-shift',\n        rxnCode: 'gJP@DiYXRWtL@!gJP@DkVdCzJ@#qqU` qTqh#!R@Fp?[@AcOvL]\\\\op !ROvL@XpAl@FL]ncp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '3',\n        description: 'Fig. 4.7',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: '1,3-elimination',\n        rxnCode: 'gCa@@dmPGrDZ@!eFHBJD eF@HhP#qTq QX qq#!R@FL@[@AcGTj| !R@FL]vgp !R@FL]~kp',\n        ionization: 'esi',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '5.5',\n        description: 'Fig 15 b.',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive,negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'α-Elimination',\n        rxnCode: 'eM@ghzCFZXN@P|@`!fHW@P eF@HhXqSApBG`D@#Q^ Qp Qd#!R_qL@DqwrO@ !RG[i| !R@AL]Vgp',\n        ionization: 'esi',\n        reaction: 'CMF',\n        doi: 'https://doi.org/10.1039/C5NP00073D',\n        section: '4.1',\n        description: 'Fig. 7.1.4',\n        kind: 'reaction',\n        web: '',\n        mode: 'negative',\n        isbn: '',\n        software: '',\n    },\n    {\n        label: 'Aminosulphate fragmentation',\n        rxnCode: 'dcMDbLvD@Hr\\\\ddJfRtjmP@P@_If[@!eF``fLGt\\\\ deVD`Ia@BLdabRwBkRs@D#IaLJf{QVS qK IaLkmEYL#!R@m]}ux`BupJH_]]}_`CW?M\\\\B_`CW?Avb`` !R@FL]fgp !Ruwu~@Ha}bOq~Oxa}bKu~Oxa}GXX|',\n        ionization: 'esi,ei',\n        reaction: 'CRF',\n        doi: 'https://doi.org/10.1016/j.ijms.2010.10.024',\n        section: 'Table 1',\n        description: 'Rule 64',\n        kind: 'reaction',\n        web: '',\n        mode: 'positive',\n        isbn: '',\n        software: '',\n    },\n];\n//# sourceMappingURL=defaultDatabase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDatabase = getDatabase;\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\nconst defaultDatabase_js_1 = require(\"./defaultDatabase.js\");\n/**\n * @description Get the default databases of reactions for positive and negative mode\n * @param {Object} options - Options for database selection\n * @param {('ionization'|'resonance'|'reaction')[]} [options.kind=['ionization','resonance','reaction']] - The kind of database to be used\n * @param {('esi'|'ei')[]} [options.ionizations=['esi','ei']] - The ionization technique to be used\n * @param {('positive'|'negative')[]} [options.modes=['positive','negative']] - The ionization mode to be used\n * @param {string} [options.dwar] - The dwar file to use. Default will use an included mass fragmentation database\n * @returns\n */\nfunction getDatabase(options = {}) {\n    const { kind = ['ionization', 'resonance', 'reaction'], ionizations = ['esi', 'ei'], modes = ['positive', 'negative'], dwar, } = options;\n    const fullDatabase = dwar ? (0, openchemlib_utils_1.parseDwar)(dwar).data : defaultDatabase_js_1.defaultDatabase;\n    const database = fullDatabase.filter((entry) => kind.some((k) => entry.kind.includes(k)) &&\n        ionizations.some((ik) => entry.ionization.split(',').includes(ik)) &&\n        modes.some((m) => entry.mode.split(',').includes(m)));\n    return database;\n}\n//# sourceMappingURL=getDatabase.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMasses = getMasses;\n/**\n * @description get array of mz from fragmentation nodes\n * @param {Array} nodes valid nodes of fragmentation process\n * @returns {Array}  array of unique mz values\n\n */\nfunction getMasses(nodes) {\n    let masses = {};\n    for (const node of nodes) {\n        for (let molecule of node.molecules) {\n            if (molecule.info.mz) {\n                if (!masses[molecule.info.mz]) {\n                    masses[molecule.info.mz] = {\n                        ...molecule.info,\n                        molecules: [],\n                        minDepth: node.depth,\n                    };\n                }\n                masses[molecule.info.mz].molecules.push({\n                    idCode: molecule.idCode,\n                    molfile: molecule.molfile,\n                    depth: node.depth,\n                });\n                if (masses[molecule.info.mz].minDepth > node.depth) {\n                    masses[molecule.info.mz].minDepth = node.depth;\n                }\n            }\n        }\n    }\n    return Object.values(masses);\n}\n//# sourceMappingURL=getMasses.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reactionFragmentation = reactionFragmentation;\nconst mf_parser_1 = require(\"mf-parser\");\nconst openchemlib_1 = __importDefault(require(\"openchemlib\"));\nconst openchemlib_utils_1 = require(\"openchemlib-utils\");\nconst getDatabase_1 = require(\"./database/getDatabase\");\nconst getMasses_1 = require(\"./utils/getMasses\");\n/**\n * @description Fragment a molecule by applying reactions from a custom database of reactions\n * @param {import('openchemlib').Molecule} oclMolecule - The OCL molecule to be fragmented\n * @param {Object}  [options={}]\n * @param {('esi'|'ei')[]}  [options.ionizations=['esi']] - The ionization technique to be used\n * @param {('positive'|'negative')[]}  [options.modes=['positive']] - The ionization mode to be used\n * @param {number}  [options.maxDepth=5] - The maximum depth of the overall fragmentation tree\n * @param {number}  [options.limitReactions=200] - The maximum number of reactions to be applied to each branch\n * @param {string}  [options.dwar] - The dwar entry to be used, if not provided, the default one will be used\n * @param {number}  [options.maxIonizations=1] - The maximum depth of the ionization tree\n * @param {number}  [options.minIonizations=1] - The minimum depth of the ionization tree\n * @param {number}  [options.minReactions=0] - The minimum depth of the reaction tree\n * @param {number}  [options.maxReactions=3] - The maximum depth of the reaction tree\n * @returns {object} In-Silico fragmentation results with the following properties:\n * - masses: array of monoisotopic masses\n * - trees: array of fragmentation trees\n * - validNodes: nodes without dead branches\n */\nfunction reactionFragmentation(oclMolecule, options = {}) {\n    const { ionizations = ['esi'], modes = ['positive'], dwar, maxDepth = 5, limitReactions = 200, minIonizations = 1, maxIonizations = 1, minReactions = 0, maxReactions = 3, } = options;\n    const reactions = new openchemlib_utils_1.Reactions(openchemlib_1.default, {\n        moleculeInfoCallback: (molecule) => {\n            // @ts-ignore\n            const mf = (0, openchemlib_utils_1.getMF)(molecule).mf;\n            const mfInfo = new mf_parser_1.MF(mf).getInfo();\n            return {\n                mf,\n                mw: mfInfo.mass,\n                em: mfInfo.monoisotopicMass,\n                mz: mfInfo.observedMonoisotopicMass,\n                charge: mfInfo.charge,\n            };\n        },\n        maxDepth,\n        limitReactions,\n        skipProcessed: true,\n    });\n    reactions.appendHead([oclMolecule]);\n    reactions.applyOneReactantReactions((0, getDatabase_1.getDatabase)({\n        kind: ['ionization'],\n        ionizations,\n        modes,\n        dwar,\n    }), {\n        min: minIonizations,\n        max: maxIonizations,\n    });\n    const reactionDb = (0, getDatabase_1.getDatabase)({\n        kind: ['reaction'],\n        ionizations,\n        modes,\n        dwar,\n    });\n    for (let i = 1; i <= maxReactions; i++) {\n        let min = 1;\n        if (minReactions < i + 1) {\n            min = 0;\n        }\n        reactions.applyOneReactantReactions(reactionDb, {\n            min,\n            max: 1,\n        });\n    }\n    const trees = reactions.trees;\n    const validNodes = reactions.getValidNodes();\n    const masses = (0, getMasses_1.getMasses)(validNodes);\n    return {\n        trees,\n        validNodes,\n        masses,\n        reactions,\n    };\n}\n//# sourceMappingURL=reactionFragmentation.js.map","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n  var key = null;\n  void 0 !== maybeKey && (key = \"\" + maybeKey);\n  void 0 !== config.key && (key = \"\" + config.key);\n  if (\"key\" in config) {\n    maybeKey = {};\n    for (var propName in config)\n      \"key\" !== propName && (maybeKey[propName] = config[propName]);\n  } else maybeKey = config;\n  config = maybeKey.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== config ? config : null,\n    props: maybeKey\n  };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n    isMounted: function () {\n      return !1;\n    },\n    enqueueForceUpdate: function () {},\n    enqueueReplaceState: function () {},\n    enqueueSetState: function () {}\n  },\n  assign = Object.assign,\n  emptyObject = {};\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n  if (\n    \"object\" !== typeof partialState &&\n    \"function\" !== typeof partialState &&\n    null != partialState\n  )\n    throw Error(\n      \"takes an object of state variables to update or a function which returns an object of state variables.\"\n    );\n  this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n  hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n  self = props.ref;\n  return {\n    $$typeof: REACT_ELEMENT_TYPE,\n    type: type,\n    key: key,\n    ref: void 0 !== self ? self : null,\n    props: props\n  };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  return ReactElement(\n    oldElement.type,\n    newKey,\n    void 0,\n    void 0,\n    void 0,\n    oldElement.props\n  );\n}\nfunction isValidElement(object) {\n  return (\n    \"object\" === typeof object &&\n    null !== object &&\n    object.$$typeof === REACT_ELEMENT_TYPE\n  );\n}\nfunction escape(key) {\n  var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n  return (\n    \"$\" +\n    key.replace(/[=:]/g, function (match) {\n      return escaperLookup[match];\n    })\n  );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n  return \"object\" === typeof element && null !== element && null != element.key\n    ? escape(\"\" + element.key)\n    : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw thenable.reason;\n    default:\n      switch (\n        (\"string\" === typeof thenable.status\n          ? thenable.then(noop$1, noop$1)\n          : ((thenable.status = \"pending\"),\n            thenable.then(\n              function (fulfilledValue) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"fulfilled\"),\n                  (thenable.value = fulfilledValue));\n              },\n              function (error) {\n                \"pending\" === thenable.status &&\n                  ((thenable.status = \"rejected\"), (thenable.reason = error));\n              }\n            )),\n        thenable.status)\n      ) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw thenable.reason;\n      }\n  }\n  throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n  if (\"undefined\" === type || \"boolean\" === type) children = null;\n  var invokeCallback = !1;\n  if (null === children) invokeCallback = !0;\n  else\n    switch (type) {\n      case \"bigint\":\n      case \"string\":\n      case \"number\":\n        invokeCallback = !0;\n        break;\n      case \"object\":\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = !0;\n            break;\n          case REACT_LAZY_TYPE:\n            return (\n              (invokeCallback = children._init),\n              mapIntoArray(\n                invokeCallback(children._payload),\n                array,\n                escapedPrefix,\n                nameSoFar,\n                callback\n              )\n            );\n        }\n    }\n  if (invokeCallback)\n    return (\n      (callback = callback(children)),\n      (invokeCallback =\n        \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n      isArrayImpl(callback)\n        ? ((escapedPrefix = \"\"),\n          null != invokeCallback &&\n            (escapedPrefix =\n              invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n          mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n            return c;\n          }))\n        : null != callback &&\n          (isValidElement(callback) &&\n            (callback = cloneAndReplaceKey(\n              callback,\n              escapedPrefix +\n                (null == callback.key ||\n                (children && children.key === callback.key)\n                  ? \"\"\n                  : (\"\" + callback.key).replace(\n                      userProvidedKeyEscapeRegex,\n                      \"$&/\"\n                    ) + \"/\") +\n                invokeCallback\n            )),\n          array.push(callback)),\n      1\n    );\n  invokeCallback = 0;\n  var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n  if (isArrayImpl(children))\n    for (var i = 0; i < children.length; i++)\n      (nameSoFar = children[i]),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n    for (\n      children = i.call(children), i = 0;\n      !(nameSoFar = children.next()).done;\n\n    )\n      (nameSoFar = nameSoFar.value),\n        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n        (invokeCallback += mapIntoArray(\n          nameSoFar,\n          array,\n          escapedPrefix,\n          type,\n          callback\n        ));\n  else if (\"object\" === type) {\n    if (\"function\" === typeof children.then)\n      return mapIntoArray(\n        resolveThenable(children),\n        array,\n        escapedPrefix,\n        nameSoFar,\n        callback\n      );\n    array = String(children);\n    throw Error(\n      \"Objects are not valid as a React child (found: \" +\n        (\"[object Object]\" === array\n          ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n          : array) +\n        \"). If you meant to render a collection of children, use an array instead.\"\n    );\n  }\n  return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n  if (null == children) return children;\n  var result = [],\n    count = 0;\n  mapIntoArray(children, result, \"\", \"\", function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\nfunction lazyInitializer(payload) {\n  if (-1 === payload._status) {\n    var ctor = payload._result;\n    ctor = ctor();\n    ctor.then(\n      function (moduleObject) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 1), (payload._result = moduleObject);\n      },\n      function (error) {\n        if (0 === payload._status || -1 === payload._status)\n          (payload._status = 2), (payload._result = error);\n      }\n    );\n    -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n  }\n  if (1 === payload._status) return payload._result.default;\n  throw payload._result;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction noop() {}\nexports.Children = {\n  map: mapChildren,\n  forEach: function (children, forEachFunc, forEachContext) {\n    mapChildren(\n      children,\n      function () {\n        forEachFunc.apply(this, arguments);\n      },\n      forEachContext\n    );\n  },\n  count: function (children) {\n    var n = 0;\n    mapChildren(children, function () {\n      n++;\n    });\n    return n;\n  },\n  toArray: function (children) {\n    return (\n      mapChildren(children, function (child) {\n        return child;\n      }) || []\n    );\n  },\n  only: function (children) {\n    if (!isValidElement(children))\n      throw Error(\n        \"React.Children.only expected to receive a single React element child.\"\n      );\n    return children;\n  }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n  __proto__: null,\n  c: function (size) {\n    return ReactSharedInternals.H.useMemoCache(size);\n  }\n};\nexports.cache = function (fn) {\n  return function () {\n    return fn.apply(null, arguments);\n  };\n};\nexports.cloneElement = function (element, config, children) {\n  if (null === element || void 0 === element)\n    throw Error(\n      \"The argument must be a React element, but you passed \" + element + \".\"\n    );\n  var props = assign({}, element.props),\n    key = element.key,\n    owner = void 0;\n  if (null != config)\n    for (propName in (void 0 !== config.ref && (owner = void 0),\n    void 0 !== config.key && (key = \"\" + config.key),\n    config))\n      !hasOwnProperty.call(config, propName) ||\n        \"key\" === propName ||\n        \"__self\" === propName ||\n        \"__source\" === propName ||\n        (\"ref\" === propName && void 0 === config.ref) ||\n        (props[propName] = config[propName]);\n  var propName = arguments.length - 2;\n  if (1 === propName) props.children = children;\n  else if (1 < propName) {\n    for (var childArray = Array(propName), i = 0; i < propName; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n  defaultValue = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    _threadCount: 0,\n    Provider: null,\n    Consumer: null\n  };\n  defaultValue.Provider = defaultValue;\n  defaultValue.Consumer = {\n    $$typeof: REACT_CONSUMER_TYPE,\n    _context: defaultValue\n  };\n  return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n  var propName,\n    props = {},\n    key = null;\n  if (null != config)\n    for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n      hasOwnProperty.call(config, propName) &&\n        \"key\" !== propName &&\n        \"__self\" !== propName &&\n        \"__source\" !== propName &&\n        (props[propName] = config[propName]);\n  var childrenLength = arguments.length - 2;\n  if (1 === childrenLength) props.children = children;\n  else if (1 < childrenLength) {\n    for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n      childArray[i] = arguments[i + 2];\n    props.children = childArray;\n  }\n  if (type && type.defaultProps)\n    for (propName in ((childrenLength = type.defaultProps), childrenLength))\n      void 0 === props[propName] &&\n        (props[propName] = childrenLength[propName]);\n  return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n  return { current: null };\n};\nexports.forwardRef = function (render) {\n  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n  return {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: { _status: -1, _result: ctor },\n    _init: lazyInitializer\n  };\n};\nexports.memo = function (type, compare) {\n  return {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: void 0 === compare ? null : compare\n  };\n};\nexports.startTransition = function (scope) {\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  try {\n    var returnValue = scope(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    \"object\" === typeof returnValue &&\n      null !== returnValue &&\n      \"function\" === typeof returnValue.then &&\n      returnValue.then(noop, reportGlobalError);\n  } catch (error) {\n    reportGlobalError(error);\n  } finally {\n    ReactSharedInternals.T = prevTransition;\n  }\n};\nexports.unstable_useCacheRefresh = function () {\n  return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n  return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n  return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n  return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n  return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, createDeps, update) {\n  var dispatcher = ReactSharedInternals.H;\n  if (\"function\" === typeof update)\n    throw Error(\n      \"useEffect CRUD overload is not enabled in this build of React.\"\n    );\n  return dispatcher.useEffect(create, createDeps);\n};\nexports.useId = function () {\n  return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n  return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n  return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n  return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n  return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n  return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n  subscribe,\n  getSnapshot,\n  getServerSnapshot\n) {\n  return ReactSharedInternals.H.useSyncExternalStore(\n    subscribe,\n    getSnapshot,\n    getServerSnapshot\n  );\n};\nexports.useTransition = function () {\n  return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction noop() {}\nvar Internals = {\n    d: {\n      f: noop,\n      r: function () {\n        throw Error(formatProdErrorMessage(522));\n      },\n      D: noop,\n      C: noop,\n      L: noop,\n      m: noop,\n      X: noop,\n      S: noop,\n      M: noop\n    },\n    p: 0,\n    findDOMNode: null\n  },\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n  var key =\n    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n  return {\n    $$typeof: REACT_PORTAL_TYPE,\n    key: null == key ? null : \"\" + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\nvar ReactSharedInternals =\n  React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n  if (\"font\" === as) return \"\";\n  if (\"string\" === typeof input)\n    return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n  Internals;\nexports.createPortal = function (children, container) {\n  var key =\n    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n  if (\n    !container ||\n    (1 !== container.nodeType &&\n      9 !== container.nodeType &&\n      11 !== container.nodeType)\n  )\n    throw Error(formatProdErrorMessage(299));\n  return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n  var previousTransition = ReactSharedInternals.T,\n    previousUpdatePriority = Internals.p;\n  try {\n    if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n  } finally {\n    (ReactSharedInternals.T = previousTransition),\n      (Internals.p = previousUpdatePriority),\n      Internals.d.f();\n  }\n};\nexports.preconnect = function (href, options) {\n  \"string\" === typeof href &&\n    (options\n      ? ((options = options.crossOrigin),\n        (options =\n          \"string\" === typeof options\n            ? \"use-credentials\" === options\n              ? options\n              : \"\"\n            : void 0))\n      : (options = null),\n    Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n  \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n  if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n      integrity =\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      fetchPriority =\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0;\n    \"style\" === as\n      ? Internals.d.S(\n          href,\n          \"string\" === typeof options.precedence ? options.precedence : void 0,\n          {\n            crossOrigin: crossOrigin,\n            integrity: integrity,\n            fetchPriority: fetchPriority\n          }\n        )\n      : \"script\" === as &&\n        Internals.d.X(href, {\n          crossOrigin: crossOrigin,\n          integrity: integrity,\n          fetchPriority: fetchPriority,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n  }\n};\nexports.preinitModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (\"object\" === typeof options && null !== options) {\n      if (null == options.as || \"script\" === options.as) {\n        var crossOrigin = getCrossOriginStringAs(\n          options.as,\n          options.crossOrigin\n        );\n        Internals.d.M(href, {\n          crossOrigin: crossOrigin,\n          integrity:\n            \"string\" === typeof options.integrity ? options.integrity : void 0,\n          nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n        });\n      }\n    } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n  if (\n    \"string\" === typeof href &&\n    \"object\" === typeof options &&\n    null !== options &&\n    \"string\" === typeof options.as\n  ) {\n    var as = options.as,\n      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n    Internals.d.L(href, as, {\n      crossOrigin: crossOrigin,\n      integrity:\n        \"string\" === typeof options.integrity ? options.integrity : void 0,\n      nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n      type: \"string\" === typeof options.type ? options.type : void 0,\n      fetchPriority:\n        \"string\" === typeof options.fetchPriority\n          ? options.fetchPriority\n          : void 0,\n      referrerPolicy:\n        \"string\" === typeof options.referrerPolicy\n          ? options.referrerPolicy\n          : void 0,\n      imageSrcSet:\n        \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n      imageSizes:\n        \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n      media: \"string\" === typeof options.media ? options.media : void 0\n    });\n  }\n};\nexports.preloadModule = function (href, options) {\n  if (\"string\" === typeof href)\n    if (options) {\n      var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n      Internals.d.m(href, {\n        as:\n          \"string\" === typeof options.as && \"script\" !== options.as\n            ? options.as\n            : void 0,\n        crossOrigin: crossOrigin,\n        integrity:\n          \"string\" === typeof options.integrity ? options.integrity : void 0\n      });\n    } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n  Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n  return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n  return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n  return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.1.0\";\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.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\n\"use strict\";\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  a: for (; 0 < index; ) {\n    var parentIndex = (index - 1) >>> 1,\n      parent = heap[parentIndex];\n    if (0 < compare(parent, node))\n      (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n    else break a;\n  }\n}\nfunction peek(heap) {\n  return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n  if (0 === heap.length) return null;\n  var first = heap[0],\n    last = heap.pop();\n  if (last !== first) {\n    heap[0] = last;\n    a: for (\n      var index = 0, length = heap.length, halfLength = length >>> 1;\n      index < halfLength;\n\n    ) {\n      var leftIndex = 2 * (index + 1) - 1,\n        left = heap[leftIndex],\n        rightIndex = leftIndex + 1,\n        right = heap[rightIndex];\n      if (0 > compare(left, last))\n        rightIndex < length && 0 > compare(right, left)\n          ? ((heap[index] = right),\n            (heap[rightIndex] = last),\n            (index = rightIndex))\n          : ((heap[index] = left),\n            (heap[leftIndex] = last),\n            (index = leftIndex));\n      else if (rightIndex < length && 0 > compare(right, last))\n        (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n      else break a;\n    }\n  }\n  return first;\n}\nfunction compare(a, b) {\n  var diff = a.sortIndex - b.sortIndex;\n  return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n  var localPerformance = performance;\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date,\n    initialTime = localDate.now();\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n}\nvar taskQueue = [],\n  timerQueue = [],\n  taskIdCounter = 1,\n  currentTask = null,\n  currentPriorityLevel = 3,\n  isPerformingWork = !1,\n  isHostCallbackScheduled = !1,\n  isHostTimeoutScheduled = !1,\n  needsPaint = !1,\n  localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n  localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n  localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n  for (var timer = peek(timerQueue); null !== timer; ) {\n    if (null === timer.callback) pop(timerQueue);\n    else if (timer.startTime <= currentTime)\n      pop(timerQueue),\n        (timer.sortIndex = timer.expirationTime),\n        push(taskQueue, timer);\n    else break;\n    timer = peek(timerQueue);\n  }\n}\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = !1;\n  advanceTimers(currentTime);\n  if (!isHostCallbackScheduled)\n    if (null !== peek(taskQueue))\n      (isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n    else {\n      var firstTimer = peek(timerQueue);\n      null !== firstTimer &&\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n}\nvar isMessageLoopRunning = !1,\n  taskTimeoutID = -1,\n  frameInterval = 5,\n  startTime = -1;\nfunction shouldYieldToHost() {\n  return needsPaint\n    ? !0\n    : exports.unstable_now() - startTime < frameInterval\n      ? !1\n      : !0;\n}\nfunction performWorkUntilDeadline() {\n  needsPaint = !1;\n  if (isMessageLoopRunning) {\n    var currentTime = exports.unstable_now();\n    startTime = currentTime;\n    var hasMoreWork = !0;\n    try {\n      a: {\n        isHostCallbackScheduled = !1;\n        isHostTimeoutScheduled &&\n          ((isHostTimeoutScheduled = !1),\n          localClearTimeout(taskTimeoutID),\n          (taskTimeoutID = -1));\n        isPerformingWork = !0;\n        var previousPriorityLevel = currentPriorityLevel;\n        try {\n          b: {\n            advanceTimers(currentTime);\n            for (\n              currentTask = peek(taskQueue);\n              null !== currentTask &&\n              !(\n                currentTask.expirationTime > currentTime && shouldYieldToHost()\n              );\n\n            ) {\n              var callback = currentTask.callback;\n              if (\"function\" === typeof callback) {\n                currentTask.callback = null;\n                currentPriorityLevel = currentTask.priorityLevel;\n                var continuationCallback = callback(\n                  currentTask.expirationTime <= currentTime\n                );\n                currentTime = exports.unstable_now();\n                if (\"function\" === typeof continuationCallback) {\n                  currentTask.callback = continuationCallback;\n                  advanceTimers(currentTime);\n                  hasMoreWork = !0;\n                  break b;\n                }\n                currentTask === peek(taskQueue) && pop(taskQueue);\n                advanceTimers(currentTime);\n              } else pop(taskQueue);\n              currentTask = peek(taskQueue);\n            }\n            if (null !== currentTask) hasMoreWork = !0;\n            else {\n              var firstTimer = peek(timerQueue);\n              null !== firstTimer &&\n                requestHostTimeout(\n                  handleTimeout,\n                  firstTimer.startTime - currentTime\n                );\n              hasMoreWork = !1;\n            }\n          }\n          break a;\n        } finally {\n          (currentTask = null),\n            (currentPriorityLevel = previousPriorityLevel),\n            (isPerformingWork = !1);\n        }\n        hasMoreWork = void 0;\n      }\n    } finally {\n      hasMoreWork\n        ? schedulePerformWorkUntilDeadline()\n        : (isMessageLoopRunning = !1);\n    }\n  }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\nelse if (\"undefined\" !== typeof MessageChannel) {\n  var channel = new MessageChannel(),\n    port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n  task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n  0 > fps || 125 < fps\n    ? console.error(\n        \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n      )\n    : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n  return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n  switch (currentPriorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n      var priorityLevel = 3;\n      break;\n    default:\n      priorityLevel = currentPriorityLevel;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_requestPaint = function () {\n  needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case 1:\n    case 2:\n    case 3:\n    case 4:\n    case 5:\n      break;\n    default:\n      priorityLevel = 3;\n  }\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n};\nexports.unstable_scheduleCallback = function (\n  priorityLevel,\n  callback,\n  options\n) {\n  var currentTime = exports.unstable_now();\n  \"object\" === typeof options && null !== options\n    ? ((options = options.delay),\n      (options =\n        \"number\" === typeof options && 0 < options\n          ? currentTime + options\n          : currentTime))\n    : (options = currentTime);\n  switch (priorityLevel) {\n    case 1:\n      var timeout = -1;\n      break;\n    case 2:\n      timeout = 250;\n      break;\n    case 5:\n      timeout = 1073741823;\n      break;\n    case 4:\n      timeout = 1e4;\n      break;\n    default:\n      timeout = 5e3;\n  }\n  timeout = options + timeout;\n  priorityLevel = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: options,\n    expirationTime: timeout,\n    sortIndex: -1\n  };\n  options > currentTime\n    ? ((priorityLevel.sortIndex = options),\n      push(timerQueue, priorityLevel),\n      null === peek(taskQueue) &&\n        priorityLevel === peek(timerQueue) &&\n        (isHostTimeoutScheduled\n          ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n          : (isHostTimeoutScheduled = !0),\n        requestHostTimeout(handleTimeout, options - currentTime)))\n    : ((priorityLevel.sortIndex = timeout),\n      push(taskQueue, priorityLevel),\n      isHostCallbackScheduled ||\n        isPerformingWork ||\n        ((isHostCallbackScheduled = !0),\n        isMessageLoopRunning ||\n          ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n  return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n  React = require(\"react\"),\n  ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n  var url = \"https://react.dev/errors/\" + code;\n  if (1 < arguments.length) {\n    url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n    for (var i = 2; i < arguments.length; i++)\n      url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n  }\n  return (\n    \"Minified React error #\" +\n    code +\n    \"; visit \" +\n    url +\n    \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n  );\n}\nfunction isValidContainer(node) {\n  return !(\n    !node ||\n    (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n  );\n}\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber,\n    nearestMounted = fiber;\n  if (fiber.alternate) for (; node.return; ) node = node.return;\n  else {\n    fiber = node;\n    do\n      (node = fiber),\n        0 !== (node.flags & 4098) && (nearestMounted = node.return),\n        (fiber = node.return);\n    while (fiber);\n  }\n  return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (13 === fiber.tag) {\n    var suspenseState = fiber.memoizedState;\n    null === suspenseState &&\n      ((fiber = fiber.alternate),\n      null !== fiber && (suspenseState = fiber.memoizedState));\n    if (null !== suspenseState) return suspenseState.dehydrated;\n  }\n  return null;\n}\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber)\n    throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n  if (!alternate) {\n    alternate = getNearestMountedFiber(fiber);\n    if (null === alternate) throw Error(formatProdErrorMessage(188));\n    return alternate !== fiber ? null : fiber;\n  }\n  for (var a = fiber, b = alternate; ; ) {\n    var parentA = a.return;\n    if (null === parentA) break;\n    var parentB = parentA.alternate;\n    if (null === parentB) {\n      b = parentA.return;\n      if (null !== b) {\n        a = b;\n        continue;\n      }\n      break;\n    }\n    if (parentA.child === parentB.child) {\n      for (parentB = parentA.child; parentB; ) {\n        if (parentB === a) return assertIsMounted(parentA), fiber;\n        if (parentB === b) return assertIsMounted(parentA), alternate;\n        parentB = parentB.sibling;\n      }\n      throw Error(formatProdErrorMessage(188));\n    }\n    if (a.return !== b.return) (a = parentA), (b = parentB);\n    else {\n      for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n        if (child$0 === a) {\n          didFindChild = !0;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n        if (child$0 === b) {\n          didFindChild = !0;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n        child$0 = child$0.sibling;\n      }\n      if (!didFindChild) {\n        for (child$0 = parentB.child; child$0; ) {\n          if (child$0 === a) {\n            didFindChild = !0;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n          if (child$0 === b) {\n            didFindChild = !0;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n          child$0 = child$0.sibling;\n        }\n        if (!didFindChild) throw Error(formatProdErrorMessage(189));\n      }\n    }\n    if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n  }\n  if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n  return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n  var tag = node.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n  for (node = node.child; null !== node; ) {\n    tag = findCurrentHostFiberImpl(node);\n    if (null !== tag) return tag;\n    node = node.sibling;\n  }\n  return null;\n}\nvar assign = Object.assign,\n  REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n  REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n  REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n  REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n  REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n  REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n  REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n  REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n  REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n  REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n  REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n  REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n  REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n  REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n  if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n  maybeIterable =\n    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n    maybeIterable[\"@@iterator\"];\n  return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n  if (null == type) return null;\n  if (\"function\" === typeof type)\n    return type.$$typeof === REACT_CLIENT_REFERENCE\n      ? null\n      : type.displayName || type.name || null;\n  if (\"string\" === typeof type) return type;\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return \"Fragment\";\n    case REACT_PROFILER_TYPE:\n      return \"Profiler\";\n    case REACT_STRICT_MODE_TYPE:\n      return \"StrictMode\";\n    case REACT_SUSPENSE_TYPE:\n      return \"Suspense\";\n    case REACT_SUSPENSE_LIST_TYPE:\n      return \"SuspenseList\";\n    case REACT_ACTIVITY_TYPE:\n      return \"Activity\";\n  }\n  if (\"object\" === typeof type)\n    switch (type.$$typeof) {\n      case REACT_PORTAL_TYPE:\n        return \"Portal\";\n      case REACT_CONTEXT_TYPE:\n        return (type.displayName || \"Context\") + \".Provider\";\n      case REACT_CONSUMER_TYPE:\n        return (type._context.displayName || \"Context\") + \".Consumer\";\n      case REACT_FORWARD_REF_TYPE:\n        var innerType = type.render;\n        type = type.displayName;\n        type ||\n          ((type = innerType.displayName || innerType.name || \"\"),\n          (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n        return type;\n      case REACT_MEMO_TYPE:\n        return (\n          (innerType = type.displayName || null),\n          null !== innerType\n            ? innerType\n            : getComponentNameFromType(type.type) || \"Memo\"\n        );\n      case REACT_LAZY_TYPE:\n        innerType = type._payload;\n        type = type._init;\n        try {\n          return getComponentNameFromType(type(innerType));\n        } catch (x) {}\n    }\n  return null;\n}\nvar isArrayImpl = Array.isArray,\n  ReactSharedInternals =\n    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  ReactDOMSharedInternals =\n    ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n  sharedNotPendingObject = {\n    pending: !1,\n    data: null,\n    method: null,\n    action: null\n  },\n  valueStack = [],\n  index = -1;\nfunction createCursor(defaultValue) {\n  return { current: defaultValue };\n}\nfunction pop(cursor) {\n  0 > index ||\n    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n  index++;\n  valueStack[index] = cursor.current;\n  cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n  contextFiberStackCursor = createCursor(null),\n  rootInstanceStackCursor = createCursor(null),\n  hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n  push(rootInstanceStackCursor, nextRootInstance);\n  push(contextFiberStackCursor, fiber);\n  push(contextStackCursor, null);\n  switch (nextRootInstance.nodeType) {\n    case 9:\n    case 11:\n      fiber = (fiber = nextRootInstance.documentElement)\n        ? (fiber = fiber.namespaceURI)\n          ? getOwnHostContext(fiber)\n          : 0\n        : 0;\n      break;\n    default:\n      if (\n        ((fiber = nextRootInstance.tagName),\n        (nextRootInstance = nextRootInstance.namespaceURI))\n      )\n        (nextRootInstance = getOwnHostContext(nextRootInstance)),\n          (fiber = getChildHostContextProd(nextRootInstance, fiber));\n      else\n        switch (fiber) {\n          case \"svg\":\n            fiber = 1;\n            break;\n          case \"math\":\n            fiber = 2;\n            break;\n          default:\n            fiber = 0;\n        }\n  }\n  pop(contextStackCursor);\n  push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n  pop(contextStackCursor);\n  pop(contextFiberStackCursor);\n  pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n  null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n  var context = contextStackCursor.current;\n  var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n  context !== JSCompiler_inline_result &&\n    (push(contextFiberStackCursor, fiber),\n    push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n  contextFiberStackCursor.current === fiber &&\n    (pop(contextStackCursor), pop(contextFiberStackCursor));\n  hostTransitionProviderCursor.current === fiber &&\n    (pop(hostTransitionProviderCursor),\n    (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n  scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n  cancelCallback$1 = Scheduler.unstable_cancelCallback,\n  shouldYield = Scheduler.unstable_shouldYield,\n  requestPaint = Scheduler.unstable_requestPaint,\n  now = Scheduler.unstable_now,\n  getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n  ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n  NormalPriority$1 = Scheduler.unstable_NormalPriority,\n  LowPriority = Scheduler.unstable_LowPriority,\n  IdlePriority = Scheduler.unstable_IdlePriority,\n  log$1 = Scheduler.log,\n  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n  rendererID = null,\n  injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n  if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n    try {\n      injectedHook.setStrictMode(rendererID, newIsStrictMode);\n    } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n  log = Math.log,\n  LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n  x >>>= 0;\n  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 256,\n  nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n  var pendingSyncLanes = lanes & 42;\n  if (0 !== pendingSyncLanes) return pendingSyncLanes;\n  switch (lanes & -lanes) {\n    case 1:\n      return 1;\n    case 2:\n      return 2;\n    case 4:\n      return 4;\n    case 8:\n      return 8;\n    case 16:\n      return 16;\n    case 32:\n      return 32;\n    case 64:\n      return 64;\n    case 128:\n      return 128;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return lanes & 4194048;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return lanes & 62914560;\n    case 67108864:\n      return 67108864;\n    case 134217728:\n      return 134217728;\n    case 268435456:\n      return 268435456;\n    case 536870912:\n      return 536870912;\n    case 1073741824:\n      return 0;\n    default:\n      return lanes;\n  }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n  var pendingLanes = root.pendingLanes;\n  if (0 === pendingLanes) return 0;\n  var nextLanes = 0,\n    suspendedLanes = root.suspendedLanes,\n    pingedLanes = root.pingedLanes;\n  root = root.warmLanes;\n  var nonIdlePendingLanes = pendingLanes & 134217727;\n  0 !== nonIdlePendingLanes\n    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n      0 !== pendingLanes\n        ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n        : ((pingedLanes &= nonIdlePendingLanes),\n          0 !== pingedLanes\n            ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n            : rootHasPendingCommit ||\n              ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n              0 !== rootHasPendingCommit &&\n                (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n      0 !== nonIdlePendingLanes\n        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n        : 0 !== pingedLanes\n          ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n          : rootHasPendingCommit ||\n            ((rootHasPendingCommit = pendingLanes & ~root),\n            0 !== rootHasPendingCommit &&\n              (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n  return 0 === nextLanes\n    ? 0\n    : 0 !== wipLanes &&\n        wipLanes !== nextLanes &&\n        0 === (wipLanes & suspendedLanes) &&\n        ((suspendedLanes = nextLanes & -nextLanes),\n        (rootHasPendingCommit = wipLanes & -wipLanes),\n        suspendedLanes >= rootHasPendingCommit ||\n          (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n      ? wipLanes\n      : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n  return (\n    0 ===\n    (root.pendingLanes &\n      ~(root.suspendedLanes & ~root.pingedLanes) &\n      renderLanes)\n  );\n}\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case 1:\n    case 2:\n    case 4:\n    case 8:\n    case 64:\n      return currentTime + 250;\n    case 16:\n    case 32:\n    case 128:\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n      return currentTime + 5e3;\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      return -1;\n    case 67108864:\n    case 134217728:\n    case 268435456:\n    case 536870912:\n    case 1073741824:\n      return -1;\n    default:\n      return -1;\n  }\n}\nfunction claimNextTransitionLane() {\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n  0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n  return lane;\n}\nfunction createLaneMap(initial) {\n  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n  return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n  root.pendingLanes |= updateLane;\n  268435456 !== updateLane &&\n    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n  root,\n  finishedLanes,\n  remainingLanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  var previouslyPendingLanes = root.pendingLanes;\n  root.pendingLanes = remainingLanes;\n  root.suspendedLanes = 0;\n  root.pingedLanes = 0;\n  root.warmLanes = 0;\n  root.expiredLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  root.errorRecoveryDisabledLanes &= remainingLanes;\n  root.shellSuspendCounter = 0;\n  var entanglements = root.entanglements,\n    expirationTimes = root.expirationTimes,\n    hiddenUpdates = root.hiddenUpdates;\n  for (\n    remainingLanes = previouslyPendingLanes & ~remainingLanes;\n    0 < remainingLanes;\n\n  ) {\n    var index$5 = 31 - clz32(remainingLanes),\n      lane = 1 << index$5;\n    entanglements[index$5] = 0;\n    expirationTimes[index$5] = -1;\n    var hiddenUpdatesForLane = hiddenUpdates[index$5];\n    if (null !== hiddenUpdatesForLane)\n      for (\n        hiddenUpdates[index$5] = null, index$5 = 0;\n        index$5 < hiddenUpdatesForLane.length;\n        index$5++\n      ) {\n        var update = hiddenUpdatesForLane[index$5];\n        null !== update && (update.lane &= -536870913);\n      }\n    remainingLanes &= ~lane;\n  }\n  0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n  0 !== suspendedRetryLanes &&\n    0 === updatedLanes &&\n    0 !== root.tag &&\n    (root.suspendedLanes |=\n      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n  root.pendingLanes |= spawnedLane;\n  root.suspendedLanes &= ~spawnedLane;\n  var spawnedLaneIndex = 31 - clz32(spawnedLane);\n  root.entangledLanes |= spawnedLane;\n  root.entanglements[spawnedLaneIndex] =\n    root.entanglements[spawnedLaneIndex] |\n    1073741824 |\n    (entangledLanes & 4194090);\n}\nfunction markRootEntangled(root, entangledLanes) {\n  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n  for (root = root.entanglements; rootEntangledLanes; ) {\n    var index$6 = 31 - clz32(rootEntangledLanes),\n      lane = 1 << index$6;\n    (lane & entangledLanes) | (root[index$6] & entangledLanes) &&\n      (root[index$6] |= entangledLanes);\n    rootEntangledLanes &= ~lane;\n  }\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n  switch (lane) {\n    case 2:\n      lane = 1;\n      break;\n    case 8:\n      lane = 4;\n      break;\n    case 32:\n      lane = 16;\n      break;\n    case 256:\n    case 512:\n    case 1024:\n    case 2048:\n    case 4096:\n    case 8192:\n    case 16384:\n    case 32768:\n    case 65536:\n    case 131072:\n    case 262144:\n    case 524288:\n    case 1048576:\n    case 2097152:\n    case 4194304:\n    case 8388608:\n    case 16777216:\n    case 33554432:\n      lane = 128;\n      break;\n    case 268435456:\n      lane = 134217728;\n      break;\n    default:\n      lane = 0;\n  }\n  return lane;\n}\nfunction lanesToEventPriority(lanes) {\n  lanes &= -lanes;\n  return 2 < lanes\n    ? 8 < lanes\n      ? 0 !== (lanes & 134217727)\n        ? 32\n        : 268435456\n      : 8\n    : 2;\n}\nfunction resolveUpdatePriority() {\n  var updatePriority = ReactDOMSharedInternals.p;\n  if (0 !== updatePriority) return updatePriority;\n  updatePriority = window.event;\n  return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    return (ReactDOMSharedInternals.p = priority), fn();\n  } finally {\n    ReactDOMSharedInternals.p = previousPriority;\n  }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n  internalInstanceKey = \"__reactFiber$\" + randomKey,\n  internalPropsKey = \"__reactProps$\" + randomKey,\n  internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n  internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n  internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n  internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n  internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n  internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlersKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst = targetNode[internalInstanceKey];\n  if (targetInst) return targetInst;\n  for (var parentNode = targetNode.parentNode; parentNode; ) {\n    if (\n      (targetInst =\n        parentNode[internalContainerInstanceKey] ||\n        parentNode[internalInstanceKey])\n    ) {\n      parentNode = targetInst.alternate;\n      if (\n        null !== targetInst.child ||\n        (null !== parentNode && null !== parentNode.child)\n      )\n        for (\n          targetNode = getParentSuspenseInstance(targetNode);\n          null !== targetNode;\n\n        ) {\n          if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n          targetNode = getParentSuspenseInstance(targetNode);\n        }\n      return targetInst;\n    }\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n  return null;\n}\nfunction getInstanceFromNode(node) {\n  if (\n    (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n  ) {\n    var tag = node.tag;\n    if (\n      5 === tag ||\n      6 === tag ||\n      13 === tag ||\n      26 === tag ||\n      27 === tag ||\n      3 === tag\n    )\n      return node;\n  }\n  return null;\n}\nfunction getNodeFromInstance(inst) {\n  var tag = inst.tag;\n  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n  throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n  var resources = root[internalRootNodeResourcesKey];\n  resources ||\n    (resources = root[internalRootNodeResourcesKey] =\n      { hoistableStyles: new Map(), hoistableScripts: new Map() });\n  return resources;\n}\nfunction markNodeAsHoistable(node) {\n  node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n  registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  registrationNameDependencies[registrationName] = dependencies;\n  for (\n    registrationName = 0;\n    registrationName < dependencies.length;\n    registrationName++\n  )\n    allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n    \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n  ),\n  illegalAttributeNameCache = {},\n  validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n    return !0;\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n    return (validatedAttributeNameCache[attributeName] = !0);\n  illegalAttributeNameCache[attributeName] = !0;\n  return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n  if (isAttributeNameSafe(name))\n    if (null === value) node.removeAttribute(name);\n    else {\n      switch (typeof value) {\n        case \"undefined\":\n        case \"function\":\n        case \"symbol\":\n          node.removeAttribute(name);\n          return;\n        case \"boolean\":\n          var prefix$8 = name.toLowerCase().slice(0, 5);\n          if (\"data-\" !== prefix$8 && \"aria-\" !== prefix$8) {\n            node.removeAttribute(name);\n            return;\n          }\n      }\n      node.setAttribute(name, \"\" + value);\n    }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttribute(name, \"\" + value);\n  }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n  if (null === value) node.removeAttribute(name);\n  else {\n    switch (typeof value) {\n      case \"undefined\":\n      case \"function\":\n      case \"symbol\":\n      case \"boolean\":\n        node.removeAttribute(name);\n        return;\n    }\n    node.setAttributeNS(namespace, name, \"\" + value);\n  }\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n  if (void 0 === prefix)\n    try {\n      throw Error();\n    } catch (x) {\n      var match = x.stack.trim().match(/\\n( *(at )?)/);\n      prefix = (match && match[1]) || \"\";\n      suffix =\n        -1 < x.stack.indexOf(\"\\n    at\")\n          ? \" (<anonymous>)\"\n          : -1 < x.stack.indexOf(\"@\")\n            ? \"@unknown:0:0\"\n            : \"\";\n    }\n  return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n  if (!fn || reentry) return \"\";\n  reentry = !0;\n  var previousPrepareStackTrace = Error.prepareStackTrace;\n  Error.prepareStackTrace = void 0;\n  try {\n    var RunInRootFrame = {\n      DetermineComponentFrameRoot: function () {\n        try {\n          if (construct) {\n            var Fake = function () {\n              throw Error();\n            };\n            Object.defineProperty(Fake.prototype, \"props\", {\n              set: function () {\n                throw Error();\n              }\n            });\n            if (\"object\" === typeof Reflect && Reflect.construct) {\n              try {\n                Reflect.construct(Fake, []);\n              } catch (x) {\n                var control = x;\n              }\n              Reflect.construct(fn, [], Fake);\n            } else {\n              try {\n                Fake.call();\n              } catch (x$9) {\n                control = x$9;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x$10) {\n              control = x$10;\n            }\n            (Fake = fn()) &&\n              \"function\" === typeof Fake.catch &&\n              Fake.catch(function () {});\n          }\n        } catch (sample) {\n          if (sample && control && \"string\" === typeof sample.stack)\n            return [sample.stack, control.stack];\n        }\n        return [null, null];\n      }\n    };\n    RunInRootFrame.DetermineComponentFrameRoot.displayName =\n      \"DetermineComponentFrameRoot\";\n    var namePropDescriptor = Object.getOwnPropertyDescriptor(\n      RunInRootFrame.DetermineComponentFrameRoot,\n      \"name\"\n    );\n    namePropDescriptor &&\n      namePropDescriptor.configurable &&\n      Object.defineProperty(\n        RunInRootFrame.DetermineComponentFrameRoot,\n        \"name\",\n        { value: \"DetermineComponentFrameRoot\" }\n      );\n    var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n      sampleStack = _RunInRootFrame$Deter[0],\n      controlStack = _RunInRootFrame$Deter[1];\n    if (sampleStack && controlStack) {\n      var sampleLines = sampleStack.split(\"\\n\"),\n        controlLines = controlStack.split(\"\\n\");\n      for (\n        namePropDescriptor = RunInRootFrame = 0;\n        RunInRootFrame < sampleLines.length &&\n        !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n      )\n        RunInRootFrame++;\n      for (\n        ;\n        namePropDescriptor < controlLines.length &&\n        !controlLines[namePropDescriptor].includes(\n          \"DetermineComponentFrameRoot\"\n        );\n\n      )\n        namePropDescriptor++;\n      if (\n        RunInRootFrame === sampleLines.length ||\n        namePropDescriptor === controlLines.length\n      )\n        for (\n          RunInRootFrame = sampleLines.length - 1,\n            namePropDescriptor = controlLines.length - 1;\n          1 <= RunInRootFrame &&\n          0 <= namePropDescriptor &&\n          sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n        )\n          namePropDescriptor--;\n      for (\n        ;\n        1 <= RunInRootFrame && 0 <= namePropDescriptor;\n        RunInRootFrame--, namePropDescriptor--\n      )\n        if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n          if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n            do\n              if (\n                (RunInRootFrame--,\n                namePropDescriptor--,\n                0 > namePropDescriptor ||\n                  sampleLines[RunInRootFrame] !==\n                    controlLines[namePropDescriptor])\n              ) {\n                var frame =\n                  \"\\n\" +\n                  sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n                fn.displayName &&\n                  frame.includes(\"<anonymous>\") &&\n                  (frame = frame.replace(\"<anonymous>\", fn.displayName));\n                return frame;\n              }\n            while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n          }\n          break;\n        }\n    }\n  } finally {\n    (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n  }\n  return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n    ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n    : \"\";\n}\nfunction describeFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n    case 27:\n    case 5:\n      return describeBuiltInComponentFrame(fiber.type);\n    case 16:\n      return describeBuiltInComponentFrame(\"Lazy\");\n    case 13:\n      return describeBuiltInComponentFrame(\"Suspense\");\n    case 19:\n      return describeBuiltInComponentFrame(\"SuspenseList\");\n    case 0:\n    case 15:\n      return describeNativeComponentFrame(fiber.type, !1);\n    case 11:\n      return describeNativeComponentFrame(fiber.type.render, !1);\n    case 1:\n      return describeNativeComponentFrame(fiber.type, !0);\n    case 31:\n      return describeBuiltInComponentFrame(\"Activity\");\n    default:\n      return \"\";\n  }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = \"\";\n    do\n      (info += describeFiber(workInProgress)),\n        (workInProgress = workInProgress.return);\n    while (workInProgress);\n    return info;\n  } catch (x) {\n    return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n  }\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case \"bigint\":\n    case \"boolean\":\n    case \"number\":\n    case \"string\":\n    case \"undefined\":\n      return value;\n    case \"object\":\n      return value;\n    default:\n      return \"\";\n  }\n}\nfunction isCheckable(elem) {\n  var type = elem.type;\n  return (\n    (elem = elem.nodeName) &&\n    \"input\" === elem.toLowerCase() &&\n    (\"checkbox\" === type || \"radio\" === type)\n  );\n}\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? \"checked\" : \"value\",\n    descriptor = Object.getOwnPropertyDescriptor(\n      node.constructor.prototype,\n      valueField\n    ),\n    currentValue = \"\" + node[valueField];\n  if (\n    !node.hasOwnProperty(valueField) &&\n    \"undefined\" !== typeof descriptor &&\n    \"function\" === typeof descriptor.get &&\n    \"function\" === typeof descriptor.set\n  ) {\n    var get = descriptor.get,\n      set = descriptor.set;\n    Object.defineProperty(node, valueField, {\n      configurable: !0,\n      get: function () {\n        return get.call(this);\n      },\n      set: function (value) {\n        currentValue = \"\" + value;\n        set.call(this, value);\n      }\n    });\n    Object.defineProperty(node, valueField, {\n      enumerable: descriptor.enumerable\n    });\n    return {\n      getValue: function () {\n        return currentValue;\n      },\n      setValue: function (value) {\n        currentValue = \"\" + value;\n      },\n      stopTracking: function () {\n        node._valueTracker = null;\n        delete node[valueField];\n      }\n    };\n  }\n}\nfunction track(node) {\n  node._valueTracker || (node._valueTracker = trackValueOnNode(node));\n}\nfunction updateValueIfChanged(node) {\n  if (!node) return !1;\n  var tracker = node._valueTracker;\n  if (!tracker) return !0;\n  var lastValue = tracker.getValue();\n  var value = \"\";\n  node &&\n    (value = isCheckable(node)\n      ? node.checked\n        ? \"true\"\n        : \"false\"\n      : node.value);\n  node = value;\n  return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n  doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n  if (\"undefined\" === typeof doc) return null;\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n  return value.replace(\n    escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n    function (ch) {\n      return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n    }\n  );\n}\nfunction updateInput(\n  element,\n  value,\n  defaultValue,\n  lastDefaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name\n) {\n  element.name = \"\";\n  null != type &&\n  \"function\" !== typeof type &&\n  \"symbol\" !== typeof type &&\n  \"boolean\" !== typeof type\n    ? (element.type = type)\n    : element.removeAttribute(\"type\");\n  if (null != value)\n    if (\"number\" === type) {\n      if ((0 === value && \"\" === element.value) || element.value != value)\n        element.value = \"\" + getToStringValue(value);\n    } else\n      element.value !== \"\" + getToStringValue(value) &&\n        (element.value = \"\" + getToStringValue(value));\n  else\n    (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n  null != value\n    ? setDefaultValue(element, type, getToStringValue(value))\n    : null != defaultValue\n      ? setDefaultValue(element, type, getToStringValue(defaultValue))\n      : null != lastDefaultValue && element.removeAttribute(\"value\");\n  null == checked &&\n    null != defaultChecked &&\n    (element.defaultChecked = !!defaultChecked);\n  null != checked &&\n    (element.checked =\n      checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n  null != name &&\n  \"function\" !== typeof name &&\n  \"symbol\" !== typeof name &&\n  \"boolean\" !== typeof name\n    ? (element.name = \"\" + getToStringValue(name))\n    : element.removeAttribute(\"name\");\n}\nfunction initInput(\n  element,\n  value,\n  defaultValue,\n  checked,\n  defaultChecked,\n  type,\n  name,\n  isHydrating\n) {\n  null != type &&\n    \"function\" !== typeof type &&\n    \"symbol\" !== typeof type &&\n    \"boolean\" !== typeof type &&\n    (element.type = type);\n  if (null != value || null != defaultValue) {\n    if (\n      !(\n        (\"submit\" !== type && \"reset\" !== type) ||\n        (void 0 !== value && null !== value)\n      )\n    )\n      return;\n    defaultValue =\n      null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n    value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n    isHydrating || value === element.value || (element.value = value);\n    element.defaultValue = value;\n  }\n  checked = null != checked ? checked : defaultChecked;\n  checked =\n    \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n  element.checked = isHydrating ? element.checked : !!checked;\n  element.defaultChecked = !!checked;\n  null != name &&\n    \"function\" !== typeof name &&\n    \"symbol\" !== typeof name &&\n    \"boolean\" !== typeof name &&\n    (element.name = name);\n}\nfunction setDefaultValue(node, type, value) {\n  (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n    node.defaultValue === \"\" + value ||\n    (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  node = node.options;\n  if (multiple) {\n    multiple = {};\n    for (var i = 0; i < propValue.length; i++)\n      multiple[\"$\" + propValue[i]] = !0;\n    for (propValue = 0; propValue < node.length; propValue++)\n      (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n        node[propValue].selected !== i && (node[propValue].selected = i),\n        i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n  } else {\n    propValue = \"\" + getToStringValue(propValue);\n    multiple = null;\n    for (i = 0; i < node.length; i++) {\n      if (node[i].value === propValue) {\n        node[i].selected = !0;\n        setDefaultSelected && (node[i].defaultSelected = !0);\n        return;\n      }\n      null !== multiple || node[i].disabled || (multiple = node[i]);\n    }\n    null !== multiple && (multiple.selected = !0);\n  }\n}\nfunction updateTextarea(element, value, defaultValue) {\n  if (\n    null != value &&\n    ((value = \"\" + getToStringValue(value)),\n    value !== element.value && (element.value = value),\n    null == defaultValue)\n  ) {\n    element.defaultValue !== value && (element.defaultValue = value);\n    return;\n  }\n  element.defaultValue =\n    null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n  if (null == value) {\n    if (null != children) {\n      if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n      if (isArrayImpl(children)) {\n        if (1 < children.length) throw Error(formatProdErrorMessage(93));\n        children = children[0];\n      }\n      defaultValue = children;\n    }\n    null == defaultValue && (defaultValue = \"\");\n    value = defaultValue;\n  }\n  defaultValue = getToStringValue(value);\n  element.defaultValue = defaultValue;\n  children = element.textContent;\n  children === defaultValue &&\n    \"\" !== children &&\n    null !== children &&\n    (element.value = children);\n}\nfunction setTextContent(node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n    if (\n      firstChild &&\n      firstChild === node.lastChild &&\n      3 === firstChild.nodeType\n    ) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n  \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n    \" \"\n  )\n);\nfunction setValueForStyle(style, styleName, value) {\n  var isCustomProperty = 0 === styleName.indexOf(\"--\");\n  null == value || \"boolean\" === typeof value || \"\" === value\n    ? isCustomProperty\n      ? style.setProperty(styleName, \"\")\n      : \"float\" === styleName\n        ? (style.cssFloat = \"\")\n        : (style[styleName] = \"\")\n    : isCustomProperty\n      ? style.setProperty(styleName, value)\n      : \"number\" !== typeof value ||\n          0 === value ||\n          unitlessNumbers.has(styleName)\n        ? \"float\" === styleName\n          ? (style.cssFloat = value)\n          : (style[styleName] = (\"\" + value).trim())\n        : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n  if (null != styles && \"object\" !== typeof styles)\n    throw Error(formatProdErrorMessage(62));\n  node = node.style;\n  if (null != prevStyles) {\n    for (var styleName in prevStyles)\n      !prevStyles.hasOwnProperty(styleName) ||\n        (null != styles && styles.hasOwnProperty(styleName)) ||\n        (0 === styleName.indexOf(\"--\")\n          ? node.setProperty(styleName, \"\")\n          : \"float\" === styleName\n            ? (node.cssFloat = \"\")\n            : (node[styleName] = \"\"));\n    for (var styleName$16 in styles)\n      (styleName = styles[styleName$16]),\n        styles.hasOwnProperty(styleName$16) &&\n          prevStyles[styleName$16] !== styleName &&\n          setValueForStyle(node, styleName$16, styleName);\n  } else\n    for (var styleName$17 in styles)\n      styles.hasOwnProperty(styleName$17) &&\n        setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n  if (-1 === tagName.indexOf(\"-\")) return !1;\n  switch (tagName) {\n    case \"annotation-xml\":\n    case \"color-profile\":\n    case \"font-face\":\n    case \"font-face-src\":\n    case \"font-face-uri\":\n    case \"font-face-format\":\n    case \"font-face-name\":\n    case \"missing-glyph\":\n      return !1;\n    default:\n      return !0;\n  }\n}\nvar aliases = new Map([\n    [\"acceptCharset\", \"accept-charset\"],\n    [\"htmlFor\", \"for\"],\n    [\"httpEquiv\", \"http-equiv\"],\n    [\"crossOrigin\", \"crossorigin\"],\n    [\"accentHeight\", \"accent-height\"],\n    [\"alignmentBaseline\", \"alignment-baseline\"],\n    [\"arabicForm\", \"arabic-form\"],\n    [\"baselineShift\", \"baseline-shift\"],\n    [\"capHeight\", \"cap-height\"],\n    [\"clipPath\", \"clip-path\"],\n    [\"clipRule\", \"clip-rule\"],\n    [\"colorInterpolation\", \"color-interpolation\"],\n    [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n    [\"colorProfile\", \"color-profile\"],\n    [\"colorRendering\", \"color-rendering\"],\n    [\"dominantBaseline\", \"dominant-baseline\"],\n    [\"enableBackground\", \"enable-background\"],\n    [\"fillOpacity\", \"fill-opacity\"],\n    [\"fillRule\", \"fill-rule\"],\n    [\"floodColor\", \"flood-color\"],\n    [\"floodOpacity\", \"flood-opacity\"],\n    [\"fontFamily\", \"font-family\"],\n    [\"fontSize\", \"font-size\"],\n    [\"fontSizeAdjust\", \"font-size-adjust\"],\n    [\"fontStretch\", \"font-stretch\"],\n    [\"fontStyle\", \"font-style\"],\n    [\"fontVariant\", \"font-variant\"],\n    [\"fontWeight\", \"font-weight\"],\n    [\"glyphName\", \"glyph-name\"],\n    [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n    [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n    [\"horizAdvX\", \"horiz-adv-x\"],\n    [\"horizOriginX\", \"horiz-origin-x\"],\n    [\"imageRendering\", \"image-rendering\"],\n    [\"letterSpacing\", \"letter-spacing\"],\n    [\"lightingColor\", \"lighting-color\"],\n    [\"markerEnd\", \"marker-end\"],\n    [\"markerMid\", \"marker-mid\"],\n    [\"markerStart\", \"marker-start\"],\n    [\"overlinePosition\", \"overline-position\"],\n    [\"overlineThickness\", \"overline-thickness\"],\n    [\"paintOrder\", \"paint-order\"],\n    [\"panose-1\", \"panose-1\"],\n    [\"pointerEvents\", \"pointer-events\"],\n    [\"renderingIntent\", \"rendering-intent\"],\n    [\"shapeRendering\", \"shape-rendering\"],\n    [\"stopColor\", \"stop-color\"],\n    [\"stopOpacity\", \"stop-opacity\"],\n    [\"strikethroughPosition\", \"strikethrough-position\"],\n    [\"strikethroughThickness\", \"strikethrough-thickness\"],\n    [\"strokeDasharray\", \"stroke-dasharray\"],\n    [\"strokeDashoffset\", \"stroke-dashoffset\"],\n    [\"strokeLinecap\", \"stroke-linecap\"],\n    [\"strokeLinejoin\", \"stroke-linejoin\"],\n    [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n    [\"strokeOpacity\", \"stroke-opacity\"],\n    [\"strokeWidth\", \"stroke-width\"],\n    [\"textAnchor\", \"text-anchor\"],\n    [\"textDecoration\", \"text-decoration\"],\n    [\"textRendering\", \"text-rendering\"],\n    [\"transformOrigin\", \"transform-origin\"],\n    [\"underlinePosition\", \"underline-position\"],\n    [\"underlineThickness\", \"underline-thickness\"],\n    [\"unicodeBidi\", \"unicode-bidi\"],\n    [\"unicodeRange\", \"unicode-range\"],\n    [\"unitsPerEm\", \"units-per-em\"],\n    [\"vAlphabetic\", \"v-alphabetic\"],\n    [\"vHanging\", \"v-hanging\"],\n    [\"vIdeographic\", \"v-ideographic\"],\n    [\"vMathematical\", \"v-mathematical\"],\n    [\"vectorEffect\", \"vector-effect\"],\n    [\"vertAdvY\", \"vert-adv-y\"],\n    [\"vertOriginX\", \"vert-origin-x\"],\n    [\"vertOriginY\", \"vert-origin-y\"],\n    [\"wordSpacing\", \"word-spacing\"],\n    [\"writingMode\", \"writing-mode\"],\n    [\"xmlnsXlink\", \"xmlns:xlink\"],\n    [\"xHeight\", \"x-height\"]\n  ]),\n  isJavaScriptProtocol =\n    /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n  return isJavaScriptProtocol.test(\"\" + url)\n    ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n    : url;\n}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n  nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n  nativeEvent.correspondingUseElement &&\n    (nativeEvent = nativeEvent.correspondingUseElement);\n  return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n  restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n  var internalInstance = getInstanceFromNode(target);\n  if (internalInstance && (target = internalInstance.stateNode)) {\n    var props = target[internalPropsKey] || null;\n    a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n      case \"input\":\n        updateInput(\n          target,\n          props.value,\n          props.defaultValue,\n          props.defaultValue,\n          props.checked,\n          props.defaultChecked,\n          props.type,\n          props.name\n        );\n        internalInstance = props.name;\n        if (\"radio\" === props.type && null != internalInstance) {\n          for (props = target; props.parentNode; ) props = props.parentNode;\n          props = props.querySelectorAll(\n            'input[name=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                \"\" + internalInstance\n              ) +\n              '\"][type=\"radio\"]'\n          );\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          ) {\n            var otherNode = props[internalInstance];\n            if (otherNode !== target && otherNode.form === target.form) {\n              var otherProps = otherNode[internalPropsKey] || null;\n              if (!otherProps) throw Error(formatProdErrorMessage(90));\n              updateInput(\n                otherNode,\n                otherProps.value,\n                otherProps.defaultValue,\n                otherProps.defaultValue,\n                otherProps.checked,\n                otherProps.defaultChecked,\n                otherProps.type,\n                otherProps.name\n              );\n            }\n          }\n          for (\n            internalInstance = 0;\n            internalInstance < props.length;\n            internalInstance++\n          )\n            (otherNode = props[internalInstance]),\n              otherNode.form === target.form && updateValueIfChanged(otherNode);\n        }\n        break a;\n      case \"textarea\":\n        updateTextarea(target, props.value, props.defaultValue);\n        break a;\n      case \"select\":\n        (internalInstance = props.value),\n          null != internalInstance &&\n            updateOptions(target, !!props.multiple, internalInstance, !1);\n    }\n  }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n  if (isInsideEventHandler) return fn(a, b);\n  isInsideEventHandler = !0;\n  try {\n    var JSCompiler_inline_result = fn(a);\n    return JSCompiler_inline_result;\n  } finally {\n    if (\n      ((isInsideEventHandler = !1),\n      null !== restoreTarget || null !== restoreQueue)\n    )\n      if (\n        (flushSyncWork$1(),\n        restoreTarget &&\n          ((a = restoreTarget),\n          (fn = restoreQueue),\n          (restoreQueue = restoreTarget = null),\n          restoreStateOfTarget(a),\n          fn))\n      )\n        for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n  }\n}\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n  if (null === stateNode) return null;\n  var props = stateNode[internalPropsKey] || null;\n  if (null === props) return null;\n  stateNode = props[registrationName];\n  a: switch (registrationName) {\n    case \"onClick\":\n    case \"onClickCapture\":\n    case \"onDoubleClick\":\n    case \"onDoubleClickCapture\":\n    case \"onMouseDown\":\n    case \"onMouseDownCapture\":\n    case \"onMouseMove\":\n    case \"onMouseMoveCapture\":\n    case \"onMouseUp\":\n    case \"onMouseUpCapture\":\n    case \"onMouseEnter\":\n      (props = !props.disabled) ||\n        ((inst = inst.type),\n        (props = !(\n          \"button\" === inst ||\n          \"input\" === inst ||\n          \"select\" === inst ||\n          \"textarea\" === inst\n        )));\n      inst = !props;\n      break a;\n    default:\n      inst = !1;\n  }\n  if (inst) return null;\n  if (stateNode && \"function\" !== typeof stateNode)\n    throw Error(\n      formatProdErrorMessage(231, registrationName, typeof stateNode)\n    );\n  return stateNode;\n}\nvar canUseDOM = !(\n    \"undefined\" === typeof window ||\n    \"undefined\" === typeof window.document ||\n    \"undefined\" === typeof window.document.createElement\n  ),\n  passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n  try {\n    var options = {};\n    Object.defineProperty(options, \"passive\", {\n      get: function () {\n        passiveBrowserEventsSupported = !0;\n      }\n    });\n    window.addEventListener(\"test\", options, options);\n    window.removeEventListener(\"test\", options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = !1;\n  }\nvar root = null,\n  startText = null,\n  fallbackText = null;\nfunction getData() {\n  if (fallbackText) return fallbackText;\n  var start,\n    startValue = startText,\n    startLength = startValue.length,\n    end,\n    endValue = \"value\" in root ? root.value : root.textContent,\n    endLength = endValue.length;\n  for (\n    start = 0;\n    start < startLength && startValue[start] === endValue[start];\n    start++\n  );\n  var minEnd = startLength - start;\n  for (\n    end = 1;\n    end <= minEnd &&\n    startValue[startLength - end] === endValue[endLength - end];\n    end++\n  );\n  return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n  var keyCode = nativeEvent.keyCode;\n  \"charCode\" in nativeEvent\n    ? ((nativeEvent = nativeEvent.charCode),\n      0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n    : (nativeEvent = keyCode);\n  10 === nativeEvent && (nativeEvent = 13);\n  return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n  return !0;\n}\nfunction functionThatReturnsFalse() {\n  return !1;\n}\nfunction createSyntheticEvent(Interface) {\n  function SyntheticBaseEvent(\n    reactName,\n    reactEventType,\n    targetInst,\n    nativeEvent,\n    nativeEventTarget\n  ) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n    for (var propName in Interface)\n      Interface.hasOwnProperty(propName) &&\n        ((reactName = Interface[propName]),\n        (this[propName] = reactName\n          ? reactName(nativeEvent)\n          : nativeEvent[propName]));\n    this.isDefaultPrevented = (\n      null != nativeEvent.defaultPrevented\n        ? nativeEvent.defaultPrevented\n        : !1 === nativeEvent.returnValue\n    )\n      ? functionThatReturnsTrue\n      : functionThatReturnsFalse;\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = !0;\n      var event = this.nativeEvent;\n      event &&\n        (event.preventDefault\n          ? event.preventDefault()\n          : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n        (this.isDefaultPrevented = functionThatReturnsTrue));\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n      event &&\n        (event.stopPropagation\n          ? event.stopPropagation()\n          : \"unknown\" !== typeof event.cancelBubble &&\n            (event.cancelBubble = !0),\n        (this.isPropagationStopped = functionThatReturnsTrue));\n    },\n    persist: function () {},\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\nvar EventInterface = {\n    eventPhase: 0,\n    bubbles: 0,\n    cancelable: 0,\n    timeStamp: function (event) {\n      return event.timeStamp || Date.now();\n    },\n    defaultPrevented: 0,\n    isTrusted: 0\n  },\n  SyntheticEvent = createSyntheticEvent(EventInterface),\n  UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n  SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n  lastMovementX,\n  lastMovementY,\n  lastMouseEvent,\n  MouseEventInterface = assign({}, UIEventInterface, {\n    screenX: 0,\n    screenY: 0,\n    clientX: 0,\n    clientY: 0,\n    pageX: 0,\n    pageY: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    getModifierState: getEventModifierState,\n    button: 0,\n    buttons: 0,\n    relatedTarget: function (event) {\n      return void 0 === event.relatedTarget\n        ? event.fromElement === event.srcElement\n          ? event.toElement\n          : event.fromElement\n        : event.relatedTarget;\n    },\n    movementX: function (event) {\n      if (\"movementX\" in event) return event.movementX;\n      event !== lastMouseEvent &&\n        (lastMouseEvent && \"mousemove\" === event.type\n          ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n            (lastMovementY = event.screenY - lastMouseEvent.screenY))\n          : (lastMovementY = lastMovementX = 0),\n        (lastMouseEvent = event));\n      return lastMovementX;\n    },\n    movementY: function (event) {\n      return \"movementY\" in event ? event.movementY : lastMovementY;\n    }\n  }),\n  SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n  DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n  SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n  FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n  SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n  AnimationEventInterface = assign({}, EventInterface, {\n    animationName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n  ClipboardEventInterface = assign({}, EventInterface, {\n    clipboardData: function (event) {\n      return \"clipboardData\" in event\n        ? event.clipboardData\n        : window.clipboardData;\n    }\n  }),\n  SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n  CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n  SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n  normalizeKey = {\n    Esc: \"Escape\",\n    Spacebar: \" \",\n    Left: \"ArrowLeft\",\n    Up: \"ArrowUp\",\n    Right: \"ArrowRight\",\n    Down: \"ArrowDown\",\n    Del: \"Delete\",\n    Win: \"OS\",\n    Menu: \"ContextMenu\",\n    Apps: \"ContextMenu\",\n    Scroll: \"ScrollLock\",\n    MozPrintableKey: \"Unidentified\"\n  },\n  translateToKey = {\n    8: \"Backspace\",\n    9: \"Tab\",\n    12: \"Clear\",\n    13: \"Enter\",\n    16: \"Shift\",\n    17: \"Control\",\n    18: \"Alt\",\n    19: \"Pause\",\n    20: \"CapsLock\",\n    27: \"Escape\",\n    32: \" \",\n    33: \"PageUp\",\n    34: \"PageDown\",\n    35: \"End\",\n    36: \"Home\",\n    37: \"ArrowLeft\",\n    38: \"ArrowUp\",\n    39: \"ArrowRight\",\n    40: \"ArrowDown\",\n    45: \"Insert\",\n    46: \"Delete\",\n    112: \"F1\",\n    113: \"F2\",\n    114: \"F3\",\n    115: \"F4\",\n    116: \"F5\",\n    117: \"F6\",\n    118: \"F7\",\n    119: \"F8\",\n    120: \"F9\",\n    121: \"F10\",\n    122: \"F11\",\n    123: \"F12\",\n    144: \"NumLock\",\n    145: \"ScrollLock\",\n    224: \"Meta\"\n  },\n  modifierKeyToProp = {\n    Alt: \"altKey\",\n    Control: \"ctrlKey\",\n    Meta: \"metaKey\",\n    Shift: \"shiftKey\"\n  };\nfunction modifierStateGetter(keyArg) {\n  var nativeEvent = this.nativeEvent;\n  return nativeEvent.getModifierState\n    ? nativeEvent.getModifierState(keyArg)\n    : (keyArg = modifierKeyToProp[keyArg])\n      ? !!nativeEvent[keyArg]\n      : !1;\n}\nfunction getEventModifierState() {\n  return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n    key: function (nativeEvent) {\n      if (nativeEvent.key) {\n        var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n        if (\"Unidentified\" !== key) return key;\n      }\n      return \"keypress\" === nativeEvent.type\n        ? ((nativeEvent = getEventCharCode(nativeEvent)),\n          13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n        : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n          ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n          : \"\";\n    },\n    code: 0,\n    location: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    altKey: 0,\n    metaKey: 0,\n    repeat: 0,\n    locale: 0,\n    getModifierState: getEventModifierState,\n    charCode: function (event) {\n      return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n    },\n    keyCode: function (event) {\n      return \"keydown\" === event.type || \"keyup\" === event.type\n        ? event.keyCode\n        : 0;\n    },\n    which: function (event) {\n      return \"keypress\" === event.type\n        ? getEventCharCode(event)\n        : \"keydown\" === event.type || \"keyup\" === event.type\n          ? event.keyCode\n          : 0;\n    }\n  }),\n  SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n  PointerEventInterface = assign({}, MouseEventInterface, {\n    pointerId: 0,\n    width: 0,\n    height: 0,\n    pressure: 0,\n    tangentialPressure: 0,\n    tiltX: 0,\n    tiltY: 0,\n    twist: 0,\n    pointerType: 0,\n    isPrimary: 0\n  }),\n  SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n  TouchEventInterface = assign({}, UIEventInterface, {\n    touches: 0,\n    targetTouches: 0,\n    changedTouches: 0,\n    altKey: 0,\n    metaKey: 0,\n    ctrlKey: 0,\n    shiftKey: 0,\n    getModifierState: getEventModifierState\n  }),\n  SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n  TransitionEventInterface = assign({}, EventInterface, {\n    propertyName: 0,\n    elapsedTime: 0,\n    pseudoElement: 0\n  }),\n  SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n  WheelEventInterface = assign({}, MouseEventInterface, {\n    deltaX: function (event) {\n      return \"deltaX\" in event\n        ? event.deltaX\n        : \"wheelDeltaX\" in event\n          ? -event.wheelDeltaX\n          : 0;\n    },\n    deltaY: function (event) {\n      return \"deltaY\" in event\n        ? event.deltaY\n        : \"wheelDeltaY\" in event\n          ? -event.wheelDeltaY\n          : \"wheelDelta\" in event\n            ? -event.wheelDelta\n            : 0;\n    },\n    deltaZ: 0,\n    deltaMode: 0\n  }),\n  SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n  ToggleEventInterface = assign({}, EventInterface, {\n    newState: 0,\n    oldState: 0\n  }),\n  SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n  END_KEYCODES = [9, 13, 27, 32],\n  canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n  documentMode = null;\ncanUseDOM &&\n  \"documentMode\" in document &&\n  (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n  useFallbackCompositionData =\n    canUseDOM &&\n    (!canUseCompositionEvent ||\n      (documentMode && 8 < documentMode && 11 >= documentMode)),\n  SPACEBAR_CHAR = String.fromCharCode(32),\n  hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"keyup\":\n      return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n    case \"keydown\":\n      return 229 !== nativeEvent.keyCode;\n    case \"keypress\":\n    case \"mousedown\":\n    case \"focusout\":\n      return !0;\n    default:\n      return !1;\n  }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n  nativeEvent = nativeEvent.detail;\n  return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n    ? nativeEvent.data\n    : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"compositionend\":\n      return getDataFromCustomEvent(nativeEvent);\n    case \"keypress\":\n      if (32 !== nativeEvent.which) return null;\n      hasSpaceKeypress = !0;\n      return SPACEBAR_CHAR;\n    case \"textInput\":\n      return (\n        (domEventName = nativeEvent.data),\n        domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n      );\n    default:\n      return null;\n  }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  if (isComposing)\n    return \"compositionend\" === domEventName ||\n      (!canUseCompositionEvent &&\n        isFallbackCompositionEnd(domEventName, nativeEvent))\n      ? ((domEventName = getData()),\n        (fallbackText = startText = root = null),\n        (isComposing = !1),\n        domEventName)\n      : null;\n  switch (domEventName) {\n    case \"paste\":\n      return null;\n    case \"keypress\":\n      if (\n        !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n        (nativeEvent.ctrlKey && nativeEvent.altKey)\n      ) {\n        if (nativeEvent.char && 1 < nativeEvent.char.length)\n          return nativeEvent.char;\n        if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n      }\n      return null;\n    case \"compositionend\":\n      return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n        ? null\n        : nativeEvent.data;\n    default:\n      return null;\n  }\n}\nvar supportedInputTypes = {\n  color: !0,\n  date: !0,\n  datetime: !0,\n  \"datetime-local\": !0,\n  email: !0,\n  month: !0,\n  number: !0,\n  password: !0,\n  range: !0,\n  search: !0,\n  tel: !0,\n  text: !0,\n  time: !0,\n  url: !0,\n  week: !0\n};\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return \"input\" === nodeName\n    ? !!supportedInputTypes[elem.type]\n    : \"textarea\" === nodeName\n      ? !0\n      : !1;\n}\nfunction createAndAccumulateChangeEvent(\n  dispatchQueue,\n  inst,\n  nativeEvent,\n  target\n) {\n  restoreTarget\n    ? restoreQueue\n      ? restoreQueue.push(target)\n      : (restoreQueue = [target])\n    : (restoreTarget = target);\n  inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n  0 < inst.length &&\n    ((nativeEvent = new SyntheticEvent(\n      \"onChange\",\n      \"change\",\n      null,\n      nativeEvent,\n      target\n    )),\n    dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n  activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n  if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n  var JSCompiler_inline_result$jscomp$282;\n  if (canUseDOM) {\n    var isSupported$jscomp$inline_417 = \"oninput\" in document;\n    if (!isSupported$jscomp$inline_417) {\n      var element$jscomp$inline_418 = document.createElement(\"div\");\n      element$jscomp$inline_418.setAttribute(\"oninput\", \"return;\");\n      isSupported$jscomp$inline_417 =\n        \"function\" === typeof element$jscomp$inline_418.oninput;\n    }\n    JSCompiler_inline_result$jscomp$282 = isSupported$jscomp$inline_417;\n  } else JSCompiler_inline_result$jscomp$282 = !1;\n  isInputEventSupported =\n    JSCompiler_inline_result$jscomp$282 &&\n    (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n  activeElement$1 &&\n    (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n    (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n  if (\n    \"value\" === nativeEvent.propertyName &&\n    getInstIfValueChanged(activeElementInst$1)\n  ) {\n    var dispatchQueue = [];\n    createAndAccumulateChangeEvent(\n      dispatchQueue,\n      activeElementInst$1,\n      nativeEvent,\n      getEventTarget(nativeEvent)\n    );\n    batchedUpdates$1(runEventInBatch, dispatchQueue);\n  }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  \"focusin\" === domEventName\n    ? (stopWatchingForValueChange(),\n      (activeElement$1 = target),\n      (activeElementInst$1 = targetInst),\n      activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n    : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n  if (\n    \"selectionchange\" === domEventName ||\n    \"keyup\" === domEventName ||\n    \"keydown\" === domEventName\n  )\n    return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (\"input\" === domEventName || \"change\" === domEventName)\n    return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) return !0;\n  if (\n    \"object\" !== typeof objA ||\n    null === objA ||\n    \"object\" !== typeof objB ||\n    null === objB\n  )\n    return !1;\n  var keysA = Object.keys(objA),\n    keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return !1;\n  for (keysB = 0; keysB < keysA.length; keysB++) {\n    var currentKey = keysA[keysB];\n    if (\n      !hasOwnProperty.call(objB, currentKey) ||\n      !objectIs(objA[currentKey], objB[currentKey])\n    )\n      return !1;\n  }\n  return !0;\n}\nfunction getLeafNode(node) {\n  for (; node && node.firstChild; ) node = node.firstChild;\n  return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  root = 0;\n  for (var nodeEnd; node; ) {\n    if (3 === node.nodeType) {\n      nodeEnd = root + node.textContent.length;\n      if (root <= offset && nodeEnd >= offset)\n        return { node: node, offset: offset - root };\n      root = nodeEnd;\n    }\n    a: {\n      for (; node; ) {\n        if (node.nextSibling) {\n          node = node.nextSibling;\n          break a;\n        }\n        node = node.parentNode;\n      }\n      node = void 0;\n    }\n    node = getLeafNode(node);\n  }\n}\nfunction containsNode(outerNode, innerNode) {\n  return outerNode && innerNode\n    ? outerNode === innerNode\n      ? !0\n      : outerNode && 3 === outerNode.nodeType\n        ? !1\n        : innerNode && 3 === innerNode.nodeType\n          ? containsNode(outerNode, innerNode.parentNode)\n          : \"contains\" in outerNode\n            ? outerNode.contains(innerNode)\n            : outerNode.compareDocumentPosition\n              ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n              : !1\n    : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n  containerInfo =\n    null != containerInfo &&\n    null != containerInfo.ownerDocument &&\n    null != containerInfo.ownerDocument.defaultView\n      ? containerInfo.ownerDocument.defaultView\n      : window;\n  for (\n    var element = getActiveElement(containerInfo.document);\n    element instanceof containerInfo.HTMLIFrameElement;\n\n  ) {\n    try {\n      var JSCompiler_inline_result =\n        \"string\" === typeof element.contentWindow.location.href;\n    } catch (err) {\n      JSCompiler_inline_result = !1;\n    }\n    if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n    else break;\n    element = getActiveElement(containerInfo.document);\n  }\n  return element;\n}\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return (\n    nodeName &&\n    ((\"input\" === nodeName &&\n      (\"text\" === elem.type ||\n        \"search\" === elem.type ||\n        \"tel\" === elem.type ||\n        \"url\" === elem.type ||\n        \"password\" === elem.type)) ||\n      \"textarea\" === nodeName ||\n      \"true\" === elem.contentEditable)\n  );\n}\nvar skipSelectionChangeEvent =\n    canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n  activeElement = null,\n  activeElementInst = null,\n  lastSelection = null,\n  mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  var doc =\n    nativeEventTarget.window === nativeEventTarget\n      ? nativeEventTarget.document\n      : 9 === nativeEventTarget.nodeType\n        ? nativeEventTarget\n        : nativeEventTarget.ownerDocument;\n  mouseDown ||\n    null == activeElement ||\n    activeElement !== getActiveElement(doc) ||\n    ((doc = activeElement),\n    \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n      ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n      : ((doc = (\n          (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n          window\n        ).getSelection()),\n        (doc = {\n          anchorNode: doc.anchorNode,\n          anchorOffset: doc.anchorOffset,\n          focusNode: doc.focusNode,\n          focusOffset: doc.focusOffset\n        })),\n    (lastSelection && shallowEqual(lastSelection, doc)) ||\n      ((lastSelection = doc),\n      (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n      0 < doc.length &&\n        ((nativeEvent = new SyntheticEvent(\n          \"onSelect\",\n          \"select\",\n          null,\n          nativeEvent,\n          nativeEventTarget\n        )),\n        dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n        (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n  prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n  return prefixes;\n}\nvar vendorPrefixes = {\n    animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n    animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n    animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n    transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n    transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n    transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n    transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n  },\n  prefixedEventNames = {},\n  style = {};\ncanUseDOM &&\n  ((style = document.createElement(\"div\").style),\n  \"AnimationEvent\" in window ||\n    (delete vendorPrefixes.animationend.animation,\n    delete vendorPrefixes.animationiteration.animation,\n    delete vendorPrefixes.animationstart.animation),\n  \"TransitionEvent\" in window ||\n    delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n  if (!vendorPrefixes[eventName]) return eventName;\n  var prefixMap = vendorPrefixes[eventName],\n    styleProp;\n  for (styleProp in prefixMap)\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n      return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n  return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n  ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n  ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n  TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n  TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n  TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n  TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n  topLevelEventsToReactNames = new Map(),\n  simpleEventPluginEvents =\n    \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n      \" \"\n    );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n  if (\"object\" === typeof value && null !== value) {\n    var existing = CapturedStacks.get(value);\n    if (void 0 !== existing) return existing;\n    source = {\n      value: value,\n      source: source,\n      stack: getStackByFiberInDevAndProd(source)\n    };\n    CapturedStacks.set(value, source);\n    return source;\n  }\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source)\n  };\n}\nvar concurrentQueues = [],\n  concurrentQueuesIndex = 0,\n  concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n  for (\n    var endIndex = concurrentQueuesIndex,\n      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n    i < endIndex;\n\n  ) {\n    var fiber = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var queue = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var update = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    var lane = concurrentQueues[i];\n    concurrentQueues[i++] = null;\n    if (null !== queue && null !== update) {\n      var pending = queue.pending;\n      null === pending\n        ? (update.next = update)\n        : ((update.next = pending.next), (pending.next = update));\n      queue.pending = update;\n    }\n    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n  }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n  concurrentQueues[concurrentQueuesIndex++] = fiber;\n  concurrentQueues[concurrentQueuesIndex++] = queue;\n  concurrentQueues[concurrentQueuesIndex++] = update;\n  concurrentQueues[concurrentQueuesIndex++] = lane;\n  concurrentlyUpdatedLanes |= lane;\n  fiber.lanes |= lane;\n  fiber = fiber.alternate;\n  null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  enqueueUpdate$1(fiber, queue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  enqueueUpdate$1(fiber, null, null, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n  sourceFiber.lanes |= lane;\n  var alternate = sourceFiber.alternate;\n  null !== alternate && (alternate.lanes |= lane);\n  for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n    (parent.childLanes |= lane),\n      (alternate = parent.alternate),\n      null !== alternate && (alternate.childLanes |= lane),\n      22 === parent.tag &&\n        ((sourceFiber = parent.stateNode),\n        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n      (sourceFiber = parent),\n      (parent = parent.return);\n  return 3 === sourceFiber.tag\n    ? ((parent = sourceFiber.stateNode),\n      isHidden &&\n        null !== update &&\n        ((isHidden = 31 - clz32(lane)),\n        (sourceFiber = parent.hiddenUpdates),\n        (alternate = sourceFiber[isHidden]),\n        null === alternate\n          ? (sourceFiber[isHidden] = [update])\n          : alternate.push(update),\n        (update.lane = lane | 536870912)),\n      parent)\n    : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n  if (50 < nestedUpdateCount)\n    throw (\n      ((nestedUpdateCount = 0),\n      (rootWithNestedUpdates = null),\n      Error(formatProdErrorMessage(185)))\n    );\n  for (var parent = sourceFiber.return; null !== parent; )\n    (sourceFiber = parent), (parent = sourceFiber.return);\n  return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n  this.tag = tag;\n  this.key = key;\n  this.sibling =\n    this.child =\n    this.return =\n    this.stateNode =\n    this.type =\n    this.elementType =\n      null;\n  this.index = 0;\n  this.refCleanup = this.ref = null;\n  this.pendingProps = pendingProps;\n  this.dependencies =\n    this.memoizedState =\n    this.updateQueue =\n    this.memoizedProps =\n      null;\n  this.mode = mode;\n  this.subtreeFlags = this.flags = 0;\n  this.deletions = null;\n  this.childLanes = this.lanes = 0;\n  this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n  return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n  Component = Component.prototype;\n  return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n  null === workInProgress\n    ? ((workInProgress = createFiberImplClass(\n        current.tag,\n        pendingProps,\n        current.key,\n        current.mode\n      )),\n      (workInProgress.elementType = current.elementType),\n      (workInProgress.type = current.type),\n      (workInProgress.stateNode = current.stateNode),\n      (workInProgress.alternate = current),\n      (current.alternate = workInProgress))\n    : ((workInProgress.pendingProps = pendingProps),\n      (workInProgress.type = current.type),\n      (workInProgress.flags = 0),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null));\n  workInProgress.flags = current.flags & 65011712;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue;\n  pendingProps = current.dependencies;\n  workInProgress.dependencies =\n    null === pendingProps\n      ? null\n      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n  workInProgress.refCleanup = current.refCleanup;\n  return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  workInProgress.flags &= 65011714;\n  var current = workInProgress.alternate;\n  null === current\n    ? ((workInProgress.childLanes = 0),\n      (workInProgress.lanes = renderLanes),\n      (workInProgress.child = null),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.memoizedProps = null),\n      (workInProgress.memoizedState = null),\n      (workInProgress.updateQueue = null),\n      (workInProgress.dependencies = null),\n      (workInProgress.stateNode = null))\n    : ((workInProgress.childLanes = current.childLanes),\n      (workInProgress.lanes = current.lanes),\n      (workInProgress.child = current.child),\n      (workInProgress.subtreeFlags = 0),\n      (workInProgress.deletions = null),\n      (workInProgress.memoizedProps = current.memoizedProps),\n      (workInProgress.memoizedState = current.memoizedState),\n      (workInProgress.updateQueue = current.updateQueue),\n      (workInProgress.type = current.type),\n      (renderLanes = current.dependencies),\n      (workInProgress.dependencies =\n        null === renderLanes\n          ? null\n          : {\n              lanes: renderLanes.lanes,\n              firstContext: renderLanes.firstContext\n            }));\n  return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n  type,\n  key,\n  pendingProps,\n  owner,\n  mode,\n  lanes\n) {\n  var fiberTag = 0;\n  owner = type;\n  if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n  else if (\"string\" === typeof type)\n    fiberTag = isHostHoistableType(\n      type,\n      pendingProps,\n      contextStackCursor.current\n    )\n      ? 26\n      : \"html\" === type || \"head\" === type || \"body\" === type\n        ? 27\n        : 5;\n  else\n    a: switch (type) {\n      case REACT_ACTIVITY_TYPE:\n        return (\n          (type = createFiberImplClass(31, pendingProps, key, mode)),\n          (type.elementType = REACT_ACTIVITY_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = 8;\n        mode |= 24;\n        break;\n      case REACT_PROFILER_TYPE:\n        return (\n          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n          (type.elementType = REACT_PROFILER_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_TYPE:\n        return (\n          (type = createFiberImplClass(13, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      case REACT_SUSPENSE_LIST_TYPE:\n        return (\n          (type = createFiberImplClass(19, pendingProps, key, mode)),\n          (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n          (type.lanes = lanes),\n          type\n        );\n      default:\n        if (\"object\" === typeof type && null !== type)\n          switch (type.$$typeof) {\n            case REACT_PROVIDER_TYPE:\n            case REACT_CONTEXT_TYPE:\n              fiberTag = 10;\n              break a;\n            case REACT_CONSUMER_TYPE:\n              fiberTag = 9;\n              break a;\n            case REACT_FORWARD_REF_TYPE:\n              fiberTag = 11;\n              break a;\n            case REACT_MEMO_TYPE:\n              fiberTag = 14;\n              break a;\n            case REACT_LAZY_TYPE:\n              fiberTag = 16;\n              owner = null;\n              break a;\n          }\n        fiberTag = 29;\n        pendingProps = Error(\n          formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n        );\n        owner = null;\n    }\n  key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n  key.elementType = type;\n  key.type = owner;\n  key.lanes = lanes;\n  return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  elements = createFiberImplClass(7, elements, key, mode);\n  elements.lanes = lanes;\n  return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  content = createFiberImplClass(6, content, null, mode);\n  content.lanes = lanes;\n  return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  mode = createFiberImplClass(\n    4,\n    null !== portal.children ? portal.children : [],\n    portal.key,\n    mode\n  );\n  mode.lanes = lanes;\n  mode.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    implementation: portal.implementation\n  };\n  return mode;\n}\nvar forkStack = [],\n  forkStackIndex = 0,\n  treeForkProvider = null,\n  treeForkCount = 0,\n  idStack = [],\n  idStackIndex = 0,\n  treeContextProvider = null,\n  treeContextId = 1,\n  treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  workInProgress = treeContextOverflow;\n  var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n  baseIdWithLeadingBit &= ~(1 << baseLength);\n  index += 1;\n  var length = 32 - clz32(totalChildren) + baseLength;\n  if (30 < length) {\n    var numberOfOverflowBits = baseLength - (baseLength % 5);\n    length = (\n      baseIdWithLeadingBit &\n      ((1 << numberOfOverflowBits) - 1)\n    ).toString(32);\n    baseIdWithLeadingBit >>= numberOfOverflowBits;\n    baseLength -= numberOfOverflowBits;\n    treeContextId =\n      (1 << (32 - clz32(totalChildren) + baseLength)) |\n      (index << baseLength) |\n      baseIdWithLeadingBit;\n    treeContextOverflow = length + workInProgress;\n  } else\n    (treeContextId =\n      (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n      (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  null !== workInProgress.return &&\n    (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n  for (; workInProgress === treeForkProvider; )\n    (treeForkProvider = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null),\n      (treeForkCount = forkStack[--forkStackIndex]),\n      (forkStack[forkStackIndex] = null);\n  for (; workInProgress === treeContextProvider; )\n    (treeContextProvider = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextOverflow = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null),\n      (treeContextId = idStack[--idStackIndex]),\n      (idStack[idStackIndex] = null);\n}\nvar hydrationParentFiber = null,\n  nextHydratableInstance = null,\n  isHydrating = !1,\n  hydrationErrors = null,\n  rootOrSingletonContext = !1,\n  HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n  var error = Error(formatProdErrorMessage(418, \"\"));\n  queueHydrationError(createCapturedValueAtFiber(error, fiber));\n  throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n  var instance = fiber.stateNode,\n    type = fiber.type,\n    props = fiber.memoizedProps;\n  instance[internalInstanceKey] = fiber;\n  instance[internalPropsKey] = props;\n  switch (type) {\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"cancel\", instance);\n      listenToNonDelegatedEvent(\"close\", instance);\n      break;\n    case \"iframe\":\n    case \"object\":\n    case \"embed\":\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (type = 0; type < mediaEventTypes.length; type++)\n        listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n      break;\n    case \"source\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      break;\n    case \"img\":\n    case \"image\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", instance);\n      listenToNonDelegatedEvent(\"load\", instance);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", instance);\n      break;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      initInput(\n        instance,\n        props.value,\n        props.defaultValue,\n        props.checked,\n        props.defaultChecked,\n        props.type,\n        props.name,\n        !0\n      );\n      track(instance);\n      break;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", instance);\n      break;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", instance),\n        initTextarea(instance, props.value, props.defaultValue, props.children),\n        track(instance);\n  }\n  type = props.children;\n  (\"string\" !== typeof type &&\n    \"number\" !== typeof type &&\n    \"bigint\" !== typeof type) ||\n  instance.textContent === \"\" + type ||\n  !0 === props.suppressHydrationWarning ||\n  checkForUnmatchedText(instance.textContent, type)\n    ? (null != props.popover &&\n        (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n        listenToNonDelegatedEvent(\"toggle\", instance)),\n      null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n      null != props.onScrollEnd &&\n        listenToNonDelegatedEvent(\"scrollend\", instance),\n      null != props.onClick && (instance.onclick = noop$1),\n      (instance = !0))\n    : (instance = !1);\n  instance || throwOnHydrationMismatch(fiber);\n}\nfunction popToNextHostParent(fiber) {\n  for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n    switch (hydrationParentFiber.tag) {\n      case 5:\n      case 13:\n        rootOrSingletonContext = !1;\n        return;\n      case 27:\n      case 3:\n        rootOrSingletonContext = !0;\n        return;\n      default:\n        hydrationParentFiber = hydrationParentFiber.return;\n    }\n}\nfunction popHydrationState(fiber) {\n  if (fiber !== hydrationParentFiber) return !1;\n  if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n  var tag = fiber.tag,\n    JSCompiler_temp;\n  if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n    if ((JSCompiler_temp = 5 === tag))\n      (JSCompiler_temp = fiber.type),\n        (JSCompiler_temp =\n          !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n          shouldSetTextContent(fiber.type, fiber.memoizedProps));\n    JSCompiler_temp = !JSCompiler_temp;\n  }\n  JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n  popToNextHostParent(fiber);\n  if (13 === tag) {\n    fiber = fiber.memoizedState;\n    fiber = null !== fiber ? fiber.dehydrated : null;\n    if (!fiber) throw Error(formatProdErrorMessage(317));\n    a: {\n      fiber = fiber.nextSibling;\n      for (tag = 0; fiber; ) {\n        if (8 === fiber.nodeType)\n          if (((JSCompiler_temp = fiber.data), \"/$\" === JSCompiler_temp)) {\n            if (0 === tag) {\n              nextHydratableInstance = getNextHydratable(fiber.nextSibling);\n              break a;\n            }\n            tag--;\n          } else\n            (\"$\" !== JSCompiler_temp &&\n              \"$!\" !== JSCompiler_temp &&\n              \"$?\" !== JSCompiler_temp) ||\n              tag++;\n        fiber = fiber.nextSibling;\n      }\n      nextHydratableInstance = null;\n    }\n  } else\n    27 === tag\n      ? ((tag = nextHydratableInstance),\n        isSingletonScope(fiber.type)\n          ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n            (previousHydratableOnEnteringScopedSingleton = null),\n            (nextHydratableInstance = fiber))\n          : (nextHydratableInstance = tag))\n      : (nextHydratableInstance = hydrationParentFiber\n          ? getNextHydratable(fiber.stateNode.nextSibling)\n          : null);\n  return !0;\n}\nfunction resetHydrationState() {\n  nextHydratableInstance = hydrationParentFiber = null;\n  isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n  var queuedErrors = hydrationErrors;\n  null !== queuedErrors &&\n    (null === workInProgressRootRecoverableErrors\n      ? (workInProgressRootRecoverableErrors = queuedErrors)\n      : workInProgressRootRecoverableErrors.push.apply(\n          workInProgressRootRecoverableErrors,\n          queuedErrors\n        ),\n    (hydrationErrors = null));\n  return queuedErrors;\n}\nfunction queueHydrationError(error) {\n  null === hydrationErrors\n    ? (hydrationErrors = [error])\n    : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n  currentlyRenderingFiber$1 = null,\n  lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n  push(valueCursor, context._currentValue);\n  context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n  context._currentValue = valueCursor.current;\n  pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  for (; null !== parent; ) {\n    var alternate = parent.alternate;\n    (parent.childLanes & renderLanes) !== renderLanes\n      ? ((parent.childLanes |= renderLanes),\n        null !== alternate && (alternate.childLanes |= renderLanes))\n      : null !== alternate &&\n        (alternate.childLanes & renderLanes) !== renderLanes &&\n        (alternate.childLanes |= renderLanes);\n    if (parent === propagationRoot) break;\n    parent = parent.return;\n  }\n}\nfunction propagateContextChanges(\n  workInProgress,\n  contexts,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  var fiber = workInProgress.child;\n  null !== fiber && (fiber.return = workInProgress);\n  for (; null !== fiber; ) {\n    var list = fiber.dependencies;\n    if (null !== list) {\n      var nextFiber = fiber.child;\n      list = list.firstContext;\n      a: for (; null !== list; ) {\n        var dependency = list;\n        list = fiber;\n        for (var i = 0; i < contexts.length; i++)\n          if (dependency.context === contexts[i]) {\n            list.lanes |= renderLanes;\n            dependency = list.alternate;\n            null !== dependency && (dependency.lanes |= renderLanes);\n            scheduleContextWorkOnParentPath(\n              list.return,\n              renderLanes,\n              workInProgress\n            );\n            forcePropagateEntireTree || (nextFiber = null);\n            break a;\n          }\n        list = dependency.next;\n      }\n    } else if (18 === fiber.tag) {\n      nextFiber = fiber.return;\n      if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n      nextFiber.lanes |= renderLanes;\n      list = nextFiber.alternate;\n      null !== list && (list.lanes |= renderLanes);\n      scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n      nextFiber = null;\n    } else nextFiber = fiber.child;\n    if (null !== nextFiber) nextFiber.return = fiber;\n    else\n      for (nextFiber = fiber; null !== nextFiber; ) {\n        if (nextFiber === workInProgress) {\n          nextFiber = null;\n          break;\n        }\n        fiber = nextFiber.sibling;\n        if (null !== fiber) {\n          fiber.return = nextFiber.return;\n          nextFiber = fiber;\n          break;\n        }\n        nextFiber = nextFiber.return;\n      }\n    fiber = nextFiber;\n  }\n}\nfunction propagateParentContextChanges(\n  current,\n  workInProgress,\n  renderLanes,\n  forcePropagateEntireTree\n) {\n  current = null;\n  for (\n    var parent = workInProgress, isInsidePropagationBailout = !1;\n    null !== parent;\n\n  ) {\n    if (!isInsidePropagationBailout)\n      if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n      else if (0 !== (parent.flags & 262144)) break;\n    if (10 === parent.tag) {\n      var currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent = currentParent.memoizedProps;\n      if (null !== currentParent) {\n        var context = parent.type;\n        objectIs(parent.pendingProps.value, currentParent.value) ||\n          (null !== current ? current.push(context) : (current = [context]));\n      }\n    } else if (parent === hostTransitionProviderCursor.current) {\n      currentParent = parent.alternate;\n      if (null === currentParent) throw Error(formatProdErrorMessage(387));\n      currentParent.memoizedState.memoizedState !==\n        parent.memoizedState.memoizedState &&\n        (null !== current\n          ? current.push(HostTransitionContext)\n          : (current = [HostTransitionContext]));\n    }\n    parent = parent.return;\n  }\n  null !== current &&\n    propagateContextChanges(\n      workInProgress,\n      current,\n      renderLanes,\n      forcePropagateEntireTree\n    );\n  workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n  for (\n    currentDependencies = currentDependencies.firstContext;\n    null !== currentDependencies;\n\n  ) {\n    if (\n      !objectIs(\n        currentDependencies.context._currentValue,\n        currentDependencies.memoizedValue\n      )\n    )\n      return !0;\n    currentDependencies = currentDependencies.next;\n  }\n  return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n  currentlyRenderingFiber$1 = workInProgress;\n  lastContextDependency = null;\n  workInProgress = workInProgress.dependencies;\n  null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n  return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n  null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n  return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n  var value = context._currentValue;\n  context = { context: context, memoizedValue: value, next: null };\n  if (null === lastContextDependency) {\n    if (null === consumer) throw Error(formatProdErrorMessage(308));\n    lastContextDependency = context;\n    consumer.dependencies = { lanes: 0, firstContext: context };\n    consumer.flags |= 524288;\n  } else lastContextDependency = lastContextDependency.next = context;\n  return value;\n}\nvar AbortControllerLocal =\n    \"undefined\" !== typeof AbortController\n      ? AbortController\n      : function () {\n          var listeners = [],\n            signal = (this.signal = {\n              aborted: !1,\n              addEventListener: function (type, listener) {\n                listeners.push(listener);\n              }\n            });\n          this.abort = function () {\n            signal.aborted = !0;\n            listeners.forEach(function (listener) {\n              return listener();\n            });\n          };\n        },\n  scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n  NormalPriority = Scheduler.unstable_NormalPriority,\n  CacheContext = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    Consumer: null,\n    Provider: null,\n    _currentValue: null,\n    _currentValue2: null,\n    _threadCount: 0\n  };\nfunction createCache() {\n  return {\n    controller: new AbortControllerLocal(),\n    data: new Map(),\n    refCount: 0\n  };\n}\nfunction releaseCache(cache) {\n  cache.refCount--;\n  0 === cache.refCount &&\n    scheduleCallback$2(NormalPriority, function () {\n      cache.controller.abort();\n    });\n}\nvar currentEntangledListeners = null,\n  currentEntangledPendingCount = 0,\n  currentEntangledLane = 0,\n  currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n  if (null === currentEntangledListeners) {\n    var entangledListeners = (currentEntangledListeners = []);\n    currentEntangledPendingCount = 0;\n    currentEntangledLane = requestTransitionLane();\n    currentEntangledActionThenable = {\n      status: \"pending\",\n      value: void 0,\n      then: function (resolve) {\n        entangledListeners.push(resolve);\n      }\n    };\n  }\n  currentEntangledPendingCount++;\n  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n  return thenable;\n}\nfunction pingEngtangledActionScope() {\n  if (\n    0 === --currentEntangledPendingCount &&\n    null !== currentEntangledListeners\n  ) {\n    null !== currentEntangledActionThenable &&\n      (currentEntangledActionThenable.status = \"fulfilled\");\n    var listeners = currentEntangledListeners;\n    currentEntangledListeners = null;\n    currentEntangledLane = 0;\n    currentEntangledActionThenable = null;\n    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n  }\n}\nfunction chainThenableValue(thenable, result) {\n  var listeners = [],\n    thenableWithOverride = {\n      status: \"pending\",\n      value: null,\n      reason: null,\n      then: function (resolve) {\n        listeners.push(resolve);\n      }\n    };\n  thenable.then(\n    function () {\n      thenableWithOverride.status = \"fulfilled\";\n      thenableWithOverride.value = result;\n      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n    },\n    function (error) {\n      thenableWithOverride.status = \"rejected\";\n      thenableWithOverride.reason = error;\n      for (error = 0; error < listeners.length; error++)\n        (0, listeners[error])(void 0);\n    }\n  );\n  return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n  \"object\" === typeof returnValue &&\n    null !== returnValue &&\n    \"function\" === typeof returnValue.then &&\n    entangleAsyncAction(transition, returnValue);\n  null !== prevOnStartTransitionFinish &&\n    prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n  var cacheResumedFromPreviousRender = resumedCache.current;\n  return null !== cacheResumedFromPreviousRender\n    ? cacheResumedFromPreviousRender\n    : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n  null === prevCachePool\n    ? push(resumedCache, resumedCache.current)\n    : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n  var cacheFromPool = peekCacheFromPool();\n  return null === cacheFromPool\n    ? null\n    : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n  SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n  SuspenseActionException = Error(formatProdErrorMessage(542)),\n  noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n  thenable = thenable.status;\n  return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop$3() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n  index = thenableState[index];\n  void 0 === index\n    ? thenableState.push(thenable)\n    : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));\n  switch (thenable.status) {\n    case \"fulfilled\":\n      return thenable.value;\n    case \"rejected\":\n      throw (\n        ((thenableState = thenable.reason),\n        checkIfUseWrappedInAsyncCatch(thenableState),\n        thenableState)\n      );\n    default:\n      if (\"string\" === typeof thenable.status) thenable.then(noop$3, noop$3);\n      else {\n        thenableState = workInProgressRoot;\n        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n          throw Error(formatProdErrorMessage(482));\n        thenableState = thenable;\n        thenableState.status = \"pending\";\n        thenableState.then(\n          function (fulfilledValue) {\n            if (\"pending\" === thenable.status) {\n              var fulfilledThenable = thenable;\n              fulfilledThenable.status = \"fulfilled\";\n              fulfilledThenable.value = fulfilledValue;\n            }\n          },\n          function (error) {\n            if (\"pending\" === thenable.status) {\n              var rejectedThenable = thenable;\n              rejectedThenable.status = \"rejected\";\n              rejectedThenable.reason = error;\n            }\n          }\n        );\n      }\n      switch (thenable.status) {\n        case \"fulfilled\":\n          return thenable.value;\n        case \"rejected\":\n          throw (\n            ((thenableState = thenable.reason),\n            checkIfUseWrappedInAsyncCatch(thenableState),\n            thenableState)\n          );\n      }\n      suspendedThenable = thenable;\n      throw SuspenseException;\n  }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n  if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n  var thenable = suspendedThenable;\n  suspendedThenable = null;\n  return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n  if (\n    rejectedReason === SuspenseException ||\n    rejectedReason === SuspenseActionException\n  )\n    throw Error(formatProdErrorMessage(483));\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n  fiber.updateQueue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n    callbacks: null\n  };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  current = current.updateQueue;\n  workInProgress.updateQueue === current &&\n    (workInProgress.updateQueue = {\n      baseState: current.baseState,\n      firstBaseUpdate: current.firstBaseUpdate,\n      lastBaseUpdate: current.lastBaseUpdate,\n      shared: current.shared,\n      callbacks: null\n    });\n}\nfunction createUpdate(lane) {\n  return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n  if (null === updateQueue) return null;\n  updateQueue = updateQueue.shared;\n  if (0 !== (executionContext & 2)) {\n    var pending = updateQueue.pending;\n    null === pending\n      ? (update.next = update)\n      : ((update.next = pending.next), (pending.next = update));\n    updateQueue.pending = update;\n    update = getRootForUpdatedFiber(fiber);\n    markUpdateLaneFromFiberToRoot(fiber, null, lane);\n    return update;\n  }\n  enqueueUpdate$1(fiber, updateQueue, update, lane);\n  return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n  fiber = fiber.updateQueue;\n  if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n    var queueLanes = fiber.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    fiber.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  var queue = workInProgress.updateQueue,\n    current = workInProgress.alternate;\n  if (\n    null !== current &&\n    ((current = current.updateQueue), queue === current)\n  ) {\n    var newFirst = null,\n      newLast = null;\n    queue = queue.firstBaseUpdate;\n    if (null !== queue) {\n      do {\n        var clone = {\n          lane: queue.lane,\n          tag: queue.tag,\n          payload: queue.payload,\n          callback: null,\n          next: null\n        };\n        null === newLast\n          ? (newFirst = newLast = clone)\n          : (newLast = newLast.next = clone);\n        queue = queue.next;\n      } while (null !== queue);\n      null === newLast\n        ? (newFirst = newLast = capturedUpdate)\n        : (newLast = newLast.next = capturedUpdate);\n    } else newFirst = newLast = capturedUpdate;\n    queue = {\n      baseState: current.baseState,\n      firstBaseUpdate: newFirst,\n      lastBaseUpdate: newLast,\n      shared: current.shared,\n      callbacks: current.callbacks\n    };\n    workInProgress.updateQueue = queue;\n    return;\n  }\n  workInProgress = queue.lastBaseUpdate;\n  null === workInProgress\n    ? (queue.firstBaseUpdate = capturedUpdate)\n    : (workInProgress.next = capturedUpdate);\n  queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n  if (didReadFromEntangledAsyncAction) {\n    var entangledActionThenable = currentEntangledActionThenable;\n    if (null !== entangledActionThenable) throw entangledActionThenable;\n  }\n}\nfunction processUpdateQueue(\n  workInProgress$jscomp$0,\n  props,\n  instance$jscomp$0,\n  renderLanes\n) {\n  didReadFromEntangledAsyncAction = !1;\n  var queue = workInProgress$jscomp$0.updateQueue;\n  hasForceUpdate = !1;\n  var firstBaseUpdate = queue.firstBaseUpdate,\n    lastBaseUpdate = queue.lastBaseUpdate,\n    pendingQueue = queue.shared.pending;\n  if (null !== pendingQueue) {\n    queue.shared.pending = null;\n    var lastPendingUpdate = pendingQueue,\n      firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null;\n    null === lastBaseUpdate\n      ? (firstBaseUpdate = firstPendingUpdate)\n      : (lastBaseUpdate.next = firstPendingUpdate);\n    lastBaseUpdate = lastPendingUpdate;\n    var current = workInProgress$jscomp$0.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      (pendingQueue = current.lastBaseUpdate),\n      pendingQueue !== lastBaseUpdate &&\n        (null === pendingQueue\n          ? (current.firstBaseUpdate = firstPendingUpdate)\n          : (pendingQueue.next = firstPendingUpdate),\n        (current.lastBaseUpdate = lastPendingUpdate)));\n  }\n  if (null !== firstBaseUpdate) {\n    var newState = queue.baseState;\n    lastBaseUpdate = 0;\n    current = firstPendingUpdate = lastPendingUpdate = null;\n    pendingQueue = firstBaseUpdate;\n    do {\n      var updateLane = pendingQueue.lane & -536870913,\n        isHiddenUpdate = updateLane !== pendingQueue.lane;\n      if (\n        isHiddenUpdate\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        0 !== updateLane &&\n          updateLane === currentEntangledLane &&\n          (didReadFromEntangledAsyncAction = !0);\n        null !== current &&\n          (current = current.next =\n            {\n              lane: 0,\n              tag: pendingQueue.tag,\n              payload: pendingQueue.payload,\n              callback: null,\n              next: null\n            });\n        a: {\n          var workInProgress = workInProgress$jscomp$0,\n            update = pendingQueue;\n          updateLane = props;\n          var instance = instance$jscomp$0;\n          switch (update.tag) {\n            case 1:\n              workInProgress = update.payload;\n              if (\"function\" === typeof workInProgress) {\n                newState = workInProgress.call(instance, newState, updateLane);\n                break a;\n              }\n              newState = workInProgress;\n              break a;\n            case 3:\n              workInProgress.flags = (workInProgress.flags & -65537) | 128;\n            case 0:\n              workInProgress = update.payload;\n              updateLane =\n                \"function\" === typeof workInProgress\n                  ? workInProgress.call(instance, newState, updateLane)\n                  : workInProgress;\n              if (null === updateLane || void 0 === updateLane) break a;\n              newState = assign({}, newState, updateLane);\n              break a;\n            case 2:\n              hasForceUpdate = !0;\n          }\n        }\n        updateLane = pendingQueue.callback;\n        null !== updateLane &&\n          ((workInProgress$jscomp$0.flags |= 64),\n          isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n          (isHiddenUpdate = queue.callbacks),\n          null === isHiddenUpdate\n            ? (queue.callbacks = [updateLane])\n            : isHiddenUpdate.push(updateLane));\n      } else\n        (isHiddenUpdate = {\n          lane: updateLane,\n          tag: pendingQueue.tag,\n          payload: pendingQueue.payload,\n          callback: pendingQueue.callback,\n          next: null\n        }),\n          null === current\n            ? ((firstPendingUpdate = current = isHiddenUpdate),\n              (lastPendingUpdate = newState))\n            : (current = current.next = isHiddenUpdate),\n          (lastBaseUpdate |= updateLane);\n      pendingQueue = pendingQueue.next;\n      if (null === pendingQueue)\n        if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n          break;\n        else\n          (isHiddenUpdate = pendingQueue),\n            (pendingQueue = isHiddenUpdate.next),\n            (isHiddenUpdate.next = null),\n            (queue.lastBaseUpdate = isHiddenUpdate),\n            (queue.shared.pending = null);\n    } while (1);\n    null === current && (lastPendingUpdate = newState);\n    queue.baseState = lastPendingUpdate;\n    queue.firstBaseUpdate = firstPendingUpdate;\n    queue.lastBaseUpdate = current;\n    null === firstBaseUpdate && (queue.shared.lanes = 0);\n    workInProgressRootSkippedLanes |= lastBaseUpdate;\n    workInProgress$jscomp$0.lanes = lastBaseUpdate;\n    workInProgress$jscomp$0.memoizedState = newState;\n  }\n}\nfunction callCallback(callback, context) {\n  if (\"function\" !== typeof callback)\n    throw Error(formatProdErrorMessage(191, callback));\n  callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n  var callbacks = updateQueue.callbacks;\n  if (null !== callbacks)\n    for (\n      updateQueue.callbacks = null, updateQueue = 0;\n      updateQueue < callbacks.length;\n      updateQueue++\n    )\n      callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n  prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n  fiber = entangledRenderLanes;\n  push(prevEntangledRenderLanesCursor, fiber);\n  push(currentTreeHiddenStackCursor, context);\n  entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n  push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n  entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n  pop(currentTreeHiddenStackCursor);\n  pop(prevEntangledRenderLanesCursor);\n}\nvar renderLanes = 0,\n  currentlyRenderingFiber = null,\n  currentHook = null,\n  workInProgressHook = null,\n  didScheduleRenderPhaseUpdate = !1,\n  didScheduleRenderPhaseUpdateDuringThisPass = !1,\n  shouldDoubleInvokeUserFnsInHooksDEV = !1,\n  localIdCounter = 0,\n  thenableIndexCounter$1 = 0,\n  thenableState$1 = null,\n  globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n  throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (null === prevDeps) return !1;\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n    if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n  return !0;\n}\nfunction renderWithHooks(\n  current,\n  workInProgress,\n  Component,\n  props,\n  secondArg,\n  nextRenderLanes\n) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber = workInProgress;\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = 0;\n  ReactSharedInternals.H =\n    null === current || null === current.memoizedState\n      ? HooksDispatcherOnMount\n      : HooksDispatcherOnUpdate;\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  nextRenderLanes = Component(props, secondArg);\n  shouldDoubleInvokeUserFnsInHooksDEV = !1;\n  didScheduleRenderPhaseUpdateDuringThisPass &&\n    (nextRenderLanes = renderWithHooksAgain(\n      workInProgress,\n      Component,\n      props,\n      secondArg\n    ));\n  finishRenderingHooks(current);\n  return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdate = !1;\n  thenableIndexCounter$1 = 0;\n  thenableState$1 = null;\n  if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n  null === current ||\n    didReceiveUpdate ||\n    ((current = current.dependencies),\n    null !== current &&\n      checkIfContextChanged(current) &&\n      (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n  currentlyRenderingFiber = workInProgress;\n  var numberOfReRenders = 0;\n  do {\n    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState$1 = null);\n    thenableIndexCounter$1 = 0;\n    didScheduleRenderPhaseUpdateDuringThisPass = !1;\n    if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n    numberOfReRenders += 1;\n    workInProgressHook = currentHook = null;\n    if (null != workInProgress.updateQueue) {\n      var children = workInProgress.updateQueue;\n      children.lastEffect = null;\n      children.events = null;\n      children.stores = null;\n      null != children.memoCache && (children.memoCache.index = 0);\n    }\n    ReactSharedInternals.H = HooksDispatcherOnRerender;\n    children = Component(props, secondArg);\n  } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  return children;\n}\nfunction TransitionAwareHostComponent() {\n  var dispatcher = ReactSharedInternals.H,\n    maybeThenable = dispatcher.useState()[0];\n  maybeThenable =\n    \"function\" === typeof maybeThenable.then\n      ? useThenable(maybeThenable)\n      : maybeThenable;\n  dispatcher = dispatcher.useState()[0];\n  (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n    (currentlyRenderingFiber.flags |= 1024);\n  return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n  var didRenderIdHook = 0 !== localIdCounter;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue;\n  workInProgress.flags &= -2053;\n  current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n  if (didScheduleRenderPhaseUpdate) {\n    for (\n      workInProgress = workInProgress.memoizedState;\n      null !== workInProgress;\n\n    ) {\n      var queue = workInProgress.queue;\n      null !== queue && (queue.pending = null);\n      workInProgress = workInProgress.next;\n    }\n    didScheduleRenderPhaseUpdate = !1;\n  }\n  renderLanes = 0;\n  workInProgressHook = currentHook = currentlyRenderingFiber = null;\n  didScheduleRenderPhaseUpdateDuringThisPass = !1;\n  thenableIndexCounter$1 = localIdCounter = 0;\n  thenableState$1 = null;\n}\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n  null === workInProgressHook\n    ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n    : (workInProgressHook = workInProgressHook.next = hook);\n  return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n  if (null === currentHook) {\n    var nextCurrentHook = currentlyRenderingFiber.alternate;\n    nextCurrentHook =\n      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n  } else nextCurrentHook = currentHook.next;\n  var nextWorkInProgressHook =\n    null === workInProgressHook\n      ? currentlyRenderingFiber.memoizedState\n      : workInProgressHook.next;\n  if (null !== nextWorkInProgressHook)\n    (workInProgressHook = nextWorkInProgressHook),\n      (currentHook = nextCurrentHook);\n  else {\n    if (null === nextCurrentHook) {\n      if (null === currentlyRenderingFiber.alternate)\n        throw Error(formatProdErrorMessage(467));\n      throw Error(formatProdErrorMessage(310));\n    }\n    currentHook = nextCurrentHook;\n    nextCurrentHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n    null === workInProgressHook\n      ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n          nextCurrentHook)\n      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n  }\n  return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n  return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n  var index = thenableIndexCounter$1;\n  thenableIndexCounter$1 += 1;\n  null === thenableState$1 && (thenableState$1 = []);\n  thenable = trackUsedThenable(thenableState$1, thenable, index);\n  index = currentlyRenderingFiber;\n  null ===\n    (null === workInProgressHook\n      ? index.memoizedState\n      : workInProgressHook.next) &&\n    ((index = index.alternate),\n    (ReactSharedInternals.H =\n      null === index || null === index.memoizedState\n        ? HooksDispatcherOnMount\n        : HooksDispatcherOnUpdate));\n  return thenable;\n}\nfunction use(usable) {\n  if (null !== usable && \"object\" === typeof usable) {\n    if (\"function\" === typeof usable.then) return useThenable(usable);\n    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n  }\n  throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n  var memoCache = null,\n    updateQueue = currentlyRenderingFiber.updateQueue;\n  null !== updateQueue && (memoCache = updateQueue.memoCache);\n  if (null == memoCache) {\n    var current = currentlyRenderingFiber.alternate;\n    null !== current &&\n      ((current = current.updateQueue),\n      null !== current &&\n        ((current = current.memoCache),\n        null != current &&\n          (memoCache = {\n            data: current.data.map(function (array) {\n              return array.slice();\n            }),\n            index: 0\n          })));\n  }\n  null == memoCache && (memoCache = { data: [], index: 0 });\n  null === updateQueue &&\n    ((updateQueue = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = updateQueue));\n  updateQueue.memoCache = memoCache;\n  updateQueue = memoCache.data[memoCache.index];\n  if (void 0 === updateQueue)\n    for (\n      updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n      current < size;\n      current++\n    )\n      updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n  memoCache.index++;\n  return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n  return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n  var hook = updateWorkInProgressHook();\n  return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n  var queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var baseQueue = hook.baseQueue,\n    pendingQueue = queue.pending;\n  if (null !== pendingQueue) {\n    if (null !== baseQueue) {\n      var baseFirst = baseQueue.next;\n      baseQueue.next = pendingQueue.next;\n      pendingQueue.next = baseFirst;\n    }\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n  pendingQueue = hook.baseState;\n  if (null === baseQueue) hook.memoizedState = pendingQueue;\n  else {\n    current = baseQueue.next;\n    var newBaseQueueFirst = (baseFirst = null),\n      newBaseQueueLast = null,\n      update = current,\n      didReadFromEntangledAsyncAction$32 = !1;\n    do {\n      var updateLane = update.lane & -536870913;\n      if (\n        updateLane !== update.lane\n          ? (workInProgressRootRenderLanes & updateLane) === updateLane\n          : (renderLanes & updateLane) === updateLane\n      ) {\n        var revertLane = update.revertLane;\n        if (0 === revertLane)\n          null !== newBaseQueueLast &&\n            (newBaseQueueLast = newBaseQueueLast.next =\n              {\n                lane: 0,\n                revertLane: 0,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              }),\n            updateLane === currentEntangledLane &&\n              (didReadFromEntangledAsyncAction$32 = !0);\n        else if ((renderLanes & revertLane) === revertLane) {\n          update = update.next;\n          revertLane === currentEntangledLane &&\n            (didReadFromEntangledAsyncAction$32 = !0);\n          continue;\n        } else\n          (updateLane = {\n            lane: 0,\n            revertLane: update.revertLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          }),\n            null === newBaseQueueLast\n              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n                (baseFirst = pendingQueue))\n              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n            (currentlyRenderingFiber.lanes |= revertLane),\n            (workInProgressRootSkippedLanes |= revertLane);\n        updateLane = update.action;\n        shouldDoubleInvokeUserFnsInHooksDEV &&\n          reducer(pendingQueue, updateLane);\n        pendingQueue = update.hasEagerState\n          ? update.eagerState\n          : reducer(pendingQueue, updateLane);\n      } else\n        (revertLane = {\n          lane: updateLane,\n          revertLane: update.revertLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        }),\n          null === newBaseQueueLast\n            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n              (baseFirst = pendingQueue))\n            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n          (currentlyRenderingFiber.lanes |= updateLane),\n          (workInProgressRootSkippedLanes |= updateLane);\n      update = update.next;\n    } while (null !== update && update !== current);\n    null === newBaseQueueLast\n      ? (baseFirst = pendingQueue)\n      : (newBaseQueueLast.next = newBaseQueueFirst);\n    if (\n      !objectIs(pendingQueue, hook.memoizedState) &&\n      ((didReceiveUpdate = !0),\n      didReadFromEntangledAsyncAction$32 &&\n        ((reducer = currentEntangledActionThenable), null !== reducer))\n    )\n      throw reducer;\n    hook.memoizedState = pendingQueue;\n    hook.baseState = baseFirst;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = pendingQueue;\n  }\n  null === baseQueue && (queue.lanes = 0);\n  return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n  var hook = updateWorkInProgressHook(),\n    queue = hook.queue;\n  if (null === queue) throw Error(formatProdErrorMessage(311));\n  queue.lastRenderedReducer = reducer;\n  var dispatch = queue.dispatch,\n    lastRenderPhaseUpdate = queue.pending,\n    newState = hook.memoizedState;\n  if (null !== lastRenderPhaseUpdate) {\n    queue.pending = null;\n    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n    do (newState = reducer(newState, update.action)), (update = update.next);\n    while (update !== lastRenderPhaseUpdate);\n    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n    hook.memoizedState = newState;\n    null === hook.baseQueue && (hook.baseState = newState);\n    queue.lastRenderedState = newState;\n  }\n  return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber,\n    hook = updateWorkInProgressHook(),\n    isHydrating$jscomp$0 = isHydrating;\n  if (isHydrating$jscomp$0) {\n    if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n    getServerSnapshot = getServerSnapshot();\n  } else getServerSnapshot = getSnapshot();\n  var snapshotChanged = !objectIs(\n    (currentHook || hook).memoizedState,\n    getServerSnapshot\n  );\n  snapshotChanged &&\n    ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n  hook = hook.queue;\n  var create = subscribeToStore.bind(null, fiber, hook, subscribe);\n  updateEffectImpl(2048, 8, create, [subscribe]);\n  if (\n    hook.getSnapshot !== getSnapshot ||\n    snapshotChanged ||\n    (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n  ) {\n    fiber.flags |= 2048;\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      updateStoreInstance.bind(\n        null,\n        fiber,\n        hook,\n        getServerSnapshot,\n        getSnapshot\n      ),\n      null\n    );\n    if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n    isHydrating$jscomp$0 ||\n      0 !== (renderLanes & 124) ||\n      pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n  }\n  return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= 16384;\n  fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n  getSnapshot = currentlyRenderingFiber.updateQueue;\n  null === getSnapshot\n    ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n      (currentlyRenderingFiber.updateQueue = getSnapshot),\n      (getSnapshot.stores = [fiber]))\n    : ((renderedSnapshot = getSnapshot.stores),\n      null === renderedSnapshot\n        ? (getSnapshot.stores = [fiber])\n        : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot;\n  checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n  return subscribe(function () {\n    checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n  });\n}\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  inst = inst.value;\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(inst, nextValue);\n  } catch (error) {\n    return !0;\n  }\n}\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, 2);\n  null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n  var hook = mountWorkInProgressHook();\n  if (\"function\" === typeof initialState) {\n    var initialStateInitializer = initialState;\n    initialState = initialStateInitializer();\n    if (shouldDoubleInvokeUserFnsInHooksDEV) {\n      setIsStrictModeForDevtools(!0);\n      try {\n        initialStateInitializer();\n      } finally {\n        setIsStrictModeForDevtools(!1);\n      }\n    }\n  }\n  hook.memoizedState = hook.baseState = initialState;\n  hook.queue = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n  hook.baseState = passthrough;\n  return updateReducerImpl(\n    hook,\n    currentHook,\n    \"function\" === typeof reducer ? reducer : basicStateReducer\n  );\n}\nfunction dispatchActionState(\n  fiber,\n  actionQueue,\n  setPendingState,\n  setState,\n  payload\n) {\n  if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n  fiber = actionQueue.action;\n  if (null !== fiber) {\n    var actionNode = {\n      payload: payload,\n      action: fiber,\n      next: null,\n      isTransition: !0,\n      status: \"pending\",\n      value: null,\n      reason: null,\n      listeners: [],\n      then: function (listener) {\n        actionNode.listeners.push(listener);\n      }\n    };\n    null !== ReactSharedInternals.T\n      ? setPendingState(!0)\n      : (actionNode.isTransition = !1);\n    setState(actionNode);\n    setPendingState = actionQueue.pending;\n    null === setPendingState\n      ? ((actionNode.next = actionQueue.pending = actionNode),\n        runActionStateAction(actionQueue, actionNode))\n      : ((actionNode.next = setPendingState.next),\n        (actionQueue.pending = setPendingState.next = actionNode));\n  }\n}\nfunction runActionStateAction(actionQueue, node) {\n  var action = node.action,\n    payload = node.payload,\n    prevState = actionQueue.state;\n  if (node.isTransition) {\n    var prevTransition = ReactSharedInternals.T,\n      currentTransition = {};\n    ReactSharedInternals.T = currentTransition;\n    try {\n      var returnValue = action(prevState, payload),\n        onStartTransitionFinish = ReactSharedInternals.S;\n      null !== onStartTransitionFinish &&\n        onStartTransitionFinish(currentTransition, returnValue);\n      handleActionReturnValue(actionQueue, node, returnValue);\n    } catch (error) {\n      onActionError(actionQueue, node, error);\n    } finally {\n      ReactSharedInternals.T = prevTransition;\n    }\n  } else\n    try {\n      (prevTransition = action(prevState, payload)),\n        handleActionReturnValue(actionQueue, node, prevTransition);\n    } catch (error$38) {\n      onActionError(actionQueue, node, error$38);\n    }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n  null !== returnValue &&\n  \"object\" === typeof returnValue &&\n  \"function\" === typeof returnValue.then\n    ? returnValue.then(\n        function (nextState) {\n          onActionSuccess(actionQueue, node, nextState);\n        },\n        function (error) {\n          return onActionError(actionQueue, node, error);\n        }\n      )\n    : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n  actionNode.status = \"fulfilled\";\n  actionNode.value = nextState;\n  notifyActionListeners(actionNode);\n  actionQueue.state = nextState;\n  actionNode = actionQueue.pending;\n  null !== actionNode &&\n    ((nextState = actionNode.next),\n    nextState === actionNode\n      ? (actionQueue.pending = null)\n      : ((nextState = nextState.next),\n        (actionNode.next = nextState),\n        runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n  var last = actionQueue.pending;\n  actionQueue.pending = null;\n  if (null !== last) {\n    last = last.next;\n    do\n      (actionNode.status = \"rejected\"),\n        (actionNode.reason = error),\n        notifyActionListeners(actionNode),\n        (actionNode = actionNode.next);\n    while (actionNode !== last);\n  }\n  actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n  actionNode = actionNode.listeners;\n  for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n  return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n  if (isHydrating) {\n    var ssrFormState = workInProgressRoot.formState;\n    if (null !== ssrFormState) {\n      a: {\n        var JSCompiler_inline_result = currentlyRenderingFiber;\n        if (isHydrating) {\n          if (nextHydratableInstance) {\n            b: {\n              var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n              for (\n                var inRootOrSingleton = rootOrSingletonContext;\n                8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n              ) {\n                if (!inRootOrSingleton) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n                JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n                  JSCompiler_inline_result$jscomp$0.nextSibling\n                );\n                if (null === JSCompiler_inline_result$jscomp$0) {\n                  JSCompiler_inline_result$jscomp$0 = null;\n                  break b;\n                }\n              }\n              inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n              JSCompiler_inline_result$jscomp$0 =\n                \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n                  ? JSCompiler_inline_result$jscomp$0\n                  : null;\n            }\n            if (JSCompiler_inline_result$jscomp$0) {\n              nextHydratableInstance = getNextHydratable(\n                JSCompiler_inline_result$jscomp$0.nextSibling\n              );\n              JSCompiler_inline_result =\n                \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n              break a;\n            }\n          }\n          throwOnHydrationMismatch(JSCompiler_inline_result);\n        }\n        JSCompiler_inline_result = !1;\n      }\n      JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n    }\n  }\n  ssrFormState = mountWorkInProgressHook();\n  ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n  JSCompiler_inline_result = {\n    pending: null,\n    lanes: 0,\n    dispatch: null,\n    lastRenderedReducer: actionStateReducer,\n    lastRenderedState: initialStateProp\n  };\n  ssrFormState.queue = JSCompiler_inline_result;\n  ssrFormState = dispatchSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result\n  );\n  JSCompiler_inline_result.dispatch = ssrFormState;\n  JSCompiler_inline_result = mountStateImpl(!1);\n  inRootOrSingleton = dispatchOptimisticSetState.bind(\n    null,\n    currentlyRenderingFiber,\n    !1,\n    JSCompiler_inline_result.queue\n  );\n  JSCompiler_inline_result = mountWorkInProgressHook();\n  JSCompiler_inline_result$jscomp$0 = {\n    state: initialStateProp,\n    dispatch: null,\n    action: action,\n    pending: null\n  };\n  JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n  ssrFormState = dispatchActionState.bind(\n    null,\n    currentlyRenderingFiber,\n    JSCompiler_inline_result$jscomp$0,\n    inRootOrSingleton,\n    ssrFormState\n  );\n  JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n  JSCompiler_inline_result.memoizedState = action;\n  return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n  var stateHook = updateWorkInProgressHook();\n  return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n  currentStateHook = updateReducerImpl(\n    stateHook,\n    currentStateHook,\n    actionStateReducer\n  )[0];\n  stateHook = updateReducer(basicStateReducer)[0];\n  if (\n    \"object\" === typeof currentStateHook &&\n    null !== currentStateHook &&\n    \"function\" === typeof currentStateHook.then\n  )\n    try {\n      var state = useThenable(currentStateHook);\n    } catch (x) {\n      if (x === SuspenseException) throw SuspenseActionException;\n      throw x;\n    }\n  else state = currentStateHook;\n  currentStateHook = updateWorkInProgressHook();\n  var actionQueue = currentStateHook.queue,\n    dispatch = actionQueue.dispatch;\n  action !== currentStateHook.memoizedState &&\n    ((currentlyRenderingFiber.flags |= 2048),\n    pushSimpleEffect(\n      9,\n      createEffectInstance(),\n      actionStateActionEffect.bind(null, actionQueue, action),\n      null\n    ));\n  return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n  actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n  var stateHook = updateWorkInProgressHook(),\n    currentStateHook = currentHook;\n  if (null !== currentStateHook)\n    return updateActionStateImpl(stateHook, currentStateHook, action);\n  updateWorkInProgressHook();\n  stateHook = stateHook.memoizedState;\n  currentStateHook = updateWorkInProgressHook();\n  var dispatch = currentStateHook.queue.dispatch;\n  currentStateHook.memoizedState = action;\n  return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, createDeps) {\n  tag = { tag: tag, create: create, deps: createDeps, inst: inst, next: null };\n  inst = currentlyRenderingFiber.updateQueue;\n  null === inst &&\n    ((inst = createFunctionComponentUpdateQueue()),\n    (currentlyRenderingFiber.updateQueue = inst));\n  create = inst.lastEffect;\n  null === create\n    ? (inst.lastEffect = tag.next = tag)\n    : ((createDeps = create.next),\n      (create.next = tag),\n      (tag.next = createDeps),\n      (inst.lastEffect = tag));\n  return tag;\n}\nfunction createEffectInstance() {\n  return { destroy: void 0, resource: void 0 };\n}\nfunction updateRef() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, createDeps) {\n  var hook = mountWorkInProgressHook();\n  createDeps = void 0 === createDeps ? null : createDeps;\n  currentlyRenderingFiber.flags |= fiberFlags;\n  hook.memoizedState = pushSimpleEffect(\n    1 | hookFlags,\n    createEffectInstance(),\n    create,\n    createDeps\n  );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var inst = hook.memoizedState.inst;\n  null !== currentHook &&\n  null !== deps &&\n  areHookInputsEqual(deps, currentHook.memoizedState.deps)\n    ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n    : ((currentlyRenderingFiber.flags |= fiberFlags),\n      (hook.memoizedState = pushSimpleEffect(\n        1 | hookFlags,\n        inst,\n        create,\n        deps\n      )));\n}\nfunction mountEffect(create, createDeps) {\n  mountEffectImpl(8390656, 8, create, createDeps);\n}\nfunction updateEffect(create, createDeps) {\n  updateEffectImpl(2048, 8, create, createDeps);\n}\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n  if (\"function\" === typeof ref) {\n    create = create();\n    var refCleanup = ref(create);\n    return function () {\n      \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n    };\n  }\n  if (null !== ref && void 0 !== ref)\n    return (\n      (create = create()),\n      (ref.current = create),\n      function () {\n        ref.current = null;\n      }\n    );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  hook.memoizedState = [callback, deps];\n  return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  deps = void 0 === deps ? null : deps;\n  var prevState = hook.memoizedState;\n  if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n    return prevState[0];\n  prevState = nextCreate();\n  if (shouldDoubleInvokeUserFnsInHooksDEV) {\n    setIsStrictModeForDevtools(!0);\n    try {\n      nextCreate();\n    } finally {\n      setIsStrictModeForDevtools(!1);\n    }\n  }\n  hook.memoizedState = [prevState, deps];\n  return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n  if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n    return (hook.memoizedState = value);\n  hook.memoizedState = initialValue;\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n  if (objectIs(value, prevValue)) return value;\n  if (null !== currentTreeHiddenStackCursor.current)\n    return (\n      (hook = mountDeferredValueImpl(hook, value, initialValue)),\n      objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n      hook\n    );\n  if (0 === (renderLanes & 42))\n    return (didReceiveUpdate = !0), (hook.memoizedState = value);\n  hook = requestDeferredLane();\n  currentlyRenderingFiber.lanes |= hook;\n  workInProgressRootSkippedLanes |= hook;\n  return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n  var previousPriority = ReactDOMSharedInternals.p;\n  ReactDOMSharedInternals.p =\n    0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n  var prevTransition = ReactSharedInternals.T,\n    currentTransition = {};\n  ReactSharedInternals.T = currentTransition;\n  dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n  try {\n    var returnValue = callback(),\n      onStartTransitionFinish = ReactSharedInternals.S;\n    null !== onStartTransitionFinish &&\n      onStartTransitionFinish(currentTransition, returnValue);\n    if (\n      null !== returnValue &&\n      \"object\" === typeof returnValue &&\n      \"function\" === typeof returnValue.then\n    ) {\n      var thenableForFinishedState = chainThenableValue(\n        returnValue,\n        finishedState\n      );\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        thenableForFinishedState,\n        requestUpdateLane(fiber)\n      );\n    } else\n      dispatchSetStateInternal(\n        fiber,\n        queue,\n        finishedState,\n        requestUpdateLane(fiber)\n      );\n  } catch (error) {\n    dispatchSetStateInternal(\n      fiber,\n      queue,\n      { then: function () {}, status: \"rejected\", reason: error },\n      requestUpdateLane()\n    );\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction noop$2() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n  if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n  var queue = ensureFormComponentIsStateful(formFiber).queue;\n  startTransition(\n    formFiber,\n    queue,\n    pendingState,\n    sharedNotPendingObject,\n    null === action\n      ? noop$2\n      : function () {\n          requestFormReset$1(formFiber);\n          return action(formData);\n        }\n  );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n  var existingStateHook = formFiber.memoizedState;\n  if (null !== existingStateHook) return existingStateHook;\n  existingStateHook = {\n    memoizedState: sharedNotPendingObject,\n    baseState: sharedNotPendingObject,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: sharedNotPendingObject\n    },\n    next: null\n  };\n  var initialResetState = {};\n  existingStateHook.next = {\n    memoizedState: initialResetState,\n    baseState: initialResetState,\n    baseQueue: null,\n    queue: {\n      pending: null,\n      lanes: 0,\n      dispatch: null,\n      lastRenderedReducer: basicStateReducer,\n      lastRenderedState: initialResetState\n    },\n    next: null\n  };\n  formFiber.memoizedState = existingStateHook;\n  formFiber = formFiber.alternate;\n  null !== formFiber && (formFiber.memoizedState = existingStateHook);\n  return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n  var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;\n  dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());\n}\nfunction useHostTransitionStatus() {\n  return readContext(HostTransitionContext);\n}\nfunction updateId() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n  return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n  for (var provider = fiber.return; null !== provider; ) {\n    switch (provider.tag) {\n      case 24:\n      case 3:\n        var lane = requestUpdateLane();\n        fiber = createUpdate(lane);\n        var root$41 = enqueueUpdate(provider, fiber, lane);\n        null !== root$41 &&\n          (scheduleUpdateOnFiber(root$41, provider, lane),\n          entangleTransitions(root$41, provider, lane));\n        provider = { cache: createCache() };\n        fiber.payload = provider;\n        return;\n    }\n    provider = provider.return;\n  }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  action = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  isRenderPhaseUpdate(fiber)\n    ? enqueueRenderPhaseUpdate(queue, action)\n    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n      null !== action &&\n        (scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n  var lane = requestUpdateLane();\n  dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n  var update = {\n    lane: lane,\n    revertLane: 0,\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n  else {\n    var alternate = fiber.alternate;\n    if (\n      0 === fiber.lanes &&\n      (null === alternate || 0 === alternate.lanes) &&\n      ((alternate = queue.lastRenderedReducer), null !== alternate)\n    )\n      try {\n        var currentState = queue.lastRenderedState,\n          eagerState = alternate(currentState, action);\n        update.hasEagerState = !0;\n        update.eagerState = eagerState;\n        if (objectIs(eagerState, currentState))\n          return (\n            enqueueUpdate$1(fiber, queue, update, 0),\n            null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n            !1\n          );\n      } catch (error) {\n      } finally {\n      }\n    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n    if (null !== action)\n      return (\n        scheduleUpdateOnFiber(action, fiber, lane),\n        entangleTransitionUpdate(action, queue, lane),\n        !0\n      );\n  }\n  return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n  action = {\n    lane: 2,\n    revertLane: requestTransitionLane(),\n    action: action,\n    hasEagerState: !1,\n    eagerState: null,\n    next: null\n  };\n  if (isRenderPhaseUpdate(fiber)) {\n    if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n  } else\n    (throwIfDuringRender = enqueueConcurrentHookUpdate(\n      fiber,\n      queue,\n      action,\n      2\n    )),\n      null !== throwIfDuringRender &&\n        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return (\n    fiber === currentlyRenderingFiber ||\n    (null !== alternate && alternate === currentlyRenderingFiber)\n  );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n    !0;\n  var pending = queue.pending;\n  null === pending\n    ? (update.next = update)\n    : ((update.next = pending.next), (pending.next = update));\n  queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (0 !== (lane & 4194048)) {\n    var queueLanes = queue.lanes;\n    queueLanes &= root.pendingLanes;\n    lane |= queueLanes;\n    queue.lanes = lane;\n    markRootEntangled(root, lane);\n  }\n}\nvar ContextOnlyDispatcher = {\n    readContext: readContext,\n    use: use,\n    useCallback: throwInvalidHookError,\n    useContext: throwInvalidHookError,\n    useEffect: throwInvalidHookError,\n    useImperativeHandle: throwInvalidHookError,\n    useLayoutEffect: throwInvalidHookError,\n    useInsertionEffect: throwInvalidHookError,\n    useMemo: throwInvalidHookError,\n    useReducer: throwInvalidHookError,\n    useRef: throwInvalidHookError,\n    useState: throwInvalidHookError,\n    useDebugValue: throwInvalidHookError,\n    useDeferredValue: throwInvalidHookError,\n    useTransition: throwInvalidHookError,\n    useSyncExternalStore: throwInvalidHookError,\n    useId: throwInvalidHookError,\n    useHostTransitionStatus: throwInvalidHookError,\n    useFormState: throwInvalidHookError,\n    useActionState: throwInvalidHookError,\n    useOptimistic: throwInvalidHookError,\n    useMemoCache: throwInvalidHookError,\n    useCacheRefresh: throwInvalidHookError\n  },\n  HooksDispatcherOnMount = {\n    readContext: readContext,\n    use: use,\n    useCallback: function (callback, deps) {\n      mountWorkInProgressHook().memoizedState = [\n        callback,\n        void 0 === deps ? null : deps\n      ];\n      return callback;\n    },\n    useContext: readContext,\n    useEffect: mountEffect,\n    useImperativeHandle: function (ref, create, deps) {\n      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n      mountEffectImpl(\n        4194308,\n        4,\n        imperativeHandleEffect.bind(null, create, ref),\n        deps\n      );\n    },\n    useLayoutEffect: function (create, deps) {\n      return mountEffectImpl(4194308, 4, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      mountEffectImpl(4, 2, create, deps);\n    },\n    useMemo: function (nextCreate, deps) {\n      var hook = mountWorkInProgressHook();\n      deps = void 0 === deps ? null : deps;\n      var nextValue = nextCreate();\n      if (shouldDoubleInvokeUserFnsInHooksDEV) {\n        setIsStrictModeForDevtools(!0);\n        try {\n          nextCreate();\n        } finally {\n          setIsStrictModeForDevtools(!1);\n        }\n      }\n      hook.memoizedState = [nextValue, deps];\n      return nextValue;\n    },\n    useReducer: function (reducer, initialArg, init) {\n      var hook = mountWorkInProgressHook();\n      if (void 0 !== init) {\n        var initialState = init(initialArg);\n        if (shouldDoubleInvokeUserFnsInHooksDEV) {\n          setIsStrictModeForDevtools(!0);\n          try {\n            init(initialArg);\n          } finally {\n            setIsStrictModeForDevtools(!1);\n          }\n        }\n      } else initialState = initialArg;\n      hook.memoizedState = hook.baseState = initialState;\n      reducer = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: reducer,\n        lastRenderedState: initialState\n      };\n      hook.queue = reducer;\n      reducer = reducer.dispatch = dispatchReducerAction.bind(\n        null,\n        currentlyRenderingFiber,\n        reducer\n      );\n      return [hook.memoizedState, reducer];\n    },\n    useRef: function (initialValue) {\n      var hook = mountWorkInProgressHook();\n      initialValue = { current: initialValue };\n      return (hook.memoizedState = initialValue);\n    },\n    useState: function (initialState) {\n      initialState = mountStateImpl(initialState);\n      var queue = initialState.queue,\n        dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n      queue.dispatch = dispatch;\n      return [initialState.memoizedState, dispatch];\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = mountWorkInProgressHook();\n      return mountDeferredValueImpl(hook, value, initialValue);\n    },\n    useTransition: function () {\n      var stateHook = mountStateImpl(!1);\n      stateHook = startTransition.bind(\n        null,\n        currentlyRenderingFiber,\n        stateHook.queue,\n        !0,\n        !1\n      );\n      mountWorkInProgressHook().memoizedState = stateHook;\n      return [!1, stateHook];\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      var fiber = currentlyRenderingFiber,\n        hook = mountWorkInProgressHook();\n      if (isHydrating) {\n        if (void 0 === getServerSnapshot)\n          throw Error(formatProdErrorMessage(407));\n        getServerSnapshot = getServerSnapshot();\n      } else {\n        getServerSnapshot = getSnapshot();\n        if (null === workInProgressRoot)\n          throw Error(formatProdErrorMessage(349));\n        0 !== (workInProgressRootRenderLanes & 124) ||\n          pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n      }\n      hook.memoizedState = getServerSnapshot;\n      var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n      hook.queue = inst;\n      mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n        subscribe\n      ]);\n      fiber.flags |= 2048;\n      pushSimpleEffect(\n        9,\n        createEffectInstance(),\n        updateStoreInstance.bind(\n          null,\n          fiber,\n          inst,\n          getServerSnapshot,\n          getSnapshot\n        ),\n        null\n      );\n      return getServerSnapshot;\n    },\n    useId: function () {\n      var hook = mountWorkInProgressHook(),\n        identifierPrefix = workInProgressRoot.identifierPrefix;\n      if (isHydrating) {\n        var JSCompiler_inline_result = treeContextOverflow;\n        var idWithLeadingBit = treeContextId;\n        JSCompiler_inline_result =\n          (\n            idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n          ).toString(32) + JSCompiler_inline_result;\n        identifierPrefix =\n          \"\\u00ab\" + identifierPrefix + \"R\" + JSCompiler_inline_result;\n        JSCompiler_inline_result = localIdCounter++;\n        0 < JSCompiler_inline_result &&\n          (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n        identifierPrefix += \"\\u00bb\";\n      } else\n        (JSCompiler_inline_result = globalClientIdCounter++),\n          (identifierPrefix =\n            \"\\u00ab\" +\n            identifierPrefix +\n            \"r\" +\n            JSCompiler_inline_result.toString(32) +\n            \"\\u00bb\");\n      return (hook.memoizedState = identifierPrefix);\n    },\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: mountActionState,\n    useActionState: mountActionState,\n    useOptimistic: function (passthrough) {\n      var hook = mountWorkInProgressHook();\n      hook.memoizedState = hook.baseState = passthrough;\n      var queue = {\n        pending: null,\n        lanes: 0,\n        dispatch: null,\n        lastRenderedReducer: null,\n        lastRenderedState: null\n      };\n      hook.queue = queue;\n      hook = dispatchOptimisticSetState.bind(\n        null,\n        currentlyRenderingFiber,\n        !0,\n        queue\n      );\n      queue.dispatch = hook;\n      return [passthrough, hook];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: function () {\n      return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n        null,\n        currentlyRenderingFiber\n      ));\n    }\n  },\n  HooksDispatcherOnUpdate = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: updateReducer,\n    useRef: updateRef,\n    useState: function () {\n      return updateReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return updateDeferredValueImpl(\n        hook,\n        currentHook.memoizedState,\n        value,\n        initialValue\n      );\n    },\n    useTransition: function () {\n      var booleanOrThenable = updateReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: updateActionState,\n    useActionState: updateActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  HooksDispatcherOnRerender = {\n    readContext: readContext,\n    use: use,\n    useCallback: updateCallback,\n    useContext: readContext,\n    useEffect: updateEffect,\n    useImperativeHandle: updateImperativeHandle,\n    useInsertionEffect: updateInsertionEffect,\n    useLayoutEffect: updateLayoutEffect,\n    useMemo: updateMemo,\n    useReducer: rerenderReducer,\n    useRef: updateRef,\n    useState: function () {\n      return rerenderReducer(basicStateReducer);\n    },\n    useDebugValue: mountDebugValue,\n    useDeferredValue: function (value, initialValue) {\n      var hook = updateWorkInProgressHook();\n      return null === currentHook\n        ? mountDeferredValueImpl(hook, value, initialValue)\n        : updateDeferredValueImpl(\n            hook,\n            currentHook.memoizedState,\n            value,\n            initialValue\n          );\n    },\n    useTransition: function () {\n      var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n        start = updateWorkInProgressHook().memoizedState;\n      return [\n        \"boolean\" === typeof booleanOrThenable\n          ? booleanOrThenable\n          : useThenable(booleanOrThenable),\n        start\n      ];\n    },\n    useSyncExternalStore: updateSyncExternalStore,\n    useId: updateId,\n    useHostTransitionStatus: useHostTransitionStatus,\n    useFormState: rerenderActionState,\n    useActionState: rerenderActionState,\n    useOptimistic: function (passthrough, reducer) {\n      var hook = updateWorkInProgressHook();\n      if (null !== currentHook)\n        return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n      hook.baseState = passthrough;\n      return [passthrough, hook.queue.dispatch];\n    },\n    useMemoCache: useMemoCache,\n    useCacheRefresh: updateRefresh\n  },\n  thenableState = null,\n  thenableIndexCounter = 0;\nfunction unwrapThenable(thenable) {\n  var index = thenableIndexCounter;\n  thenableIndexCounter += 1;\n  null === thenableState && (thenableState = []);\n  return trackUsedThenable(thenableState, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n  element = element.props.ref;\n  workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n    throw Error(formatProdErrorMessage(525));\n  returnFiber = Object.prototype.toString.call(newChild);\n  throw Error(\n    formatProdErrorMessage(\n      31,\n      \"[object Object]\" === returnFiber\n        ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n        : returnFiber\n    )\n  );\n}\nfunction resolveLazy(lazyType) {\n  var init = lazyType._init;\n  return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (shouldTrackSideEffects) {\n      var deletions = returnFiber.deletions;\n      null === deletions\n        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n        : deletions.push(childToDelete);\n    }\n  }\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) return null;\n    for (; null !== currentFirstChild; )\n      deleteChild(returnFiber, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return null;\n  }\n  function mapRemainingChildren(currentFirstChild) {\n    for (var existingChildren = new Map(); null !== currentFirstChild; )\n      null !== currentFirstChild.key\n        ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n        : existingChildren.set(currentFirstChild.index, currentFirstChild),\n        (currentFirstChild = currentFirstChild.sibling);\n    return existingChildren;\n  }\n  function useFiber(fiber, pendingProps) {\n    fiber = createWorkInProgress(fiber, pendingProps);\n    fiber.index = 0;\n    fiber.sibling = null;\n    return fiber;\n  }\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n    if (!shouldTrackSideEffects)\n      return (newFiber.flags |= 1048576), lastPlacedIndex;\n    newIndex = newFiber.alternate;\n    if (null !== newIndex)\n      return (\n        (newIndex = newIndex.index),\n        newIndex < lastPlacedIndex\n          ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n          : newIndex\n      );\n    newFiber.flags |= 67108866;\n    return lastPlacedIndex;\n  }\n  function placeSingleChild(newFiber) {\n    shouldTrackSideEffects &&\n      null === newFiber.alternate &&\n      (newFiber.flags |= 67108866);\n    return newFiber;\n  }\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (null === current || 6 !== current.tag)\n      return (\n        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, textContent);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n    if (elementType === REACT_FRAGMENT_TYPE)\n      return updateFragment(\n        returnFiber,\n        current,\n        element.props.children,\n        lanes,\n        element.key\n      );\n    if (\n      null !== current &&\n      (current.elementType === elementType ||\n        (\"object\" === typeof elementType &&\n          null !== elementType &&\n          elementType.$$typeof === REACT_LAZY_TYPE &&\n          resolveLazy(elementType) === current.type))\n    )\n      return (\n        (current = useFiber(current, element.props)),\n        coerceRef(current, element),\n        (current.return = returnFiber),\n        current\n      );\n    current = createFiberFromTypeAndProps(\n      element.type,\n      element.key,\n      element.props,\n      null,\n      returnFiber.mode,\n      lanes\n    );\n    coerceRef(current, element);\n    current.return = returnFiber;\n    return current;\n  }\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (\n      null === current ||\n      4 !== current.tag ||\n      current.stateNode.containerInfo !== portal.containerInfo ||\n      current.stateNode.implementation !== portal.implementation\n    )\n      return (\n        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, portal.children || []);\n    current.return = returnFiber;\n    return current;\n  }\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (null === current || 7 !== current.tag)\n      return (\n        (current = createFiberFromFragment(\n          fragment,\n          returnFiber.mode,\n          lanes,\n          key\n        )),\n        (current.return = returnFiber),\n        current\n      );\n    current = useFiber(current, fragment);\n    current.return = returnFiber;\n    return current;\n  }\n  function createChild(returnFiber, newChild, lanes) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (newChild = createFiberFromText(\n          \"\" + newChild,\n          returnFiber.mode,\n          lanes\n        )),\n        (newChild.return = returnFiber),\n        newChild\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (lanes = createFiberFromTypeAndProps(\n              newChild.type,\n              newChild.key,\n              newChild.props,\n              null,\n              returnFiber.mode,\n              lanes\n            )),\n            coerceRef(lanes, newChild),\n            (lanes.return = returnFiber),\n            lanes\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (newChild = createFiberFromPortal(\n              newChild,\n              returnFiber.mode,\n              lanes\n            )),\n            (newChild.return = returnFiber),\n            newChild\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return createChild(returnFiber, newChild, lanes);\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (newChild = createFiberFromFragment(\n            newChild,\n            returnFiber.mode,\n            lanes,\n            null\n          )),\n          (newChild.return = returnFiber),\n          newChild\n        );\n      if (\"function\" === typeof newChild.then)\n        return createChild(returnFiber, unwrapThenable(newChild), lanes);\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return createChild(\n          returnFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    var key = null !== oldFiber ? oldFiber.key : null;\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return null !== key\n        ? null\n        : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return newChild.key === key\n            ? updateElement(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_PORTAL_TYPE:\n          return newChild.key === key\n            ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n            : null;\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            updateSlot(returnFiber, oldFiber, newChild, lanes)\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return null !== key\n          ? null\n          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      if (\"function\" === typeof newChild.then)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateSlot(\n          returnFiber,\n          oldFiber,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function updateFromMap(\n    existingChildren,\n    returnFiber,\n    newIdx,\n    newChild,\n    lanes\n  ) {\n    if (\n      (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n    )\n      return (\n        (existingChildren = existingChildren.get(newIdx) || null),\n        updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n      );\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updateElement(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_PORTAL_TYPE:\n          return (\n            (existingChildren =\n              existingChildren.get(\n                null === newChild.key ? newIdx : newChild.key\n              ) || null),\n            updatePortal(returnFiber, existingChildren, newChild, lanes)\n          );\n        case REACT_LAZY_TYPE:\n          var init = newChild._init;\n          newChild = init(newChild._payload);\n          return updateFromMap(\n            existingChildren,\n            returnFiber,\n            newIdx,\n            newChild,\n            lanes\n          );\n      }\n      if (isArrayImpl(newChild) || getIteratorFn(newChild))\n        return (\n          (existingChildren = existingChildren.get(newIdx) || null),\n          updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n        );\n      if (\"function\" === typeof newChild.then)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return updateFromMap(\n          existingChildren,\n          returnFiber,\n          newIdx,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return null;\n  }\n  function reconcileChildrenArray(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null;\n      null !== oldFiber && newIdx < newChildren.length;\n      newIdx++\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(\n        returnFiber,\n        oldFiber,\n        newChildren[newIdx],\n        lanes\n      );\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (newIdx === newChildren.length)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; newIdx < newChildren.length; newIdx++)\n        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n          null !== oldFiber &&\n            ((currentFirstChild = placeChild(\n              oldFiber,\n              currentFirstChild,\n              newIdx\n            )),\n            null === previousNewFiber\n              ? (resultingFirstChild = oldFiber)\n              : (previousNewFiber.sibling = oldFiber),\n            (previousNewFiber = oldFiber));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      newIdx < newChildren.length;\n      newIdx++\n    )\n      (nextOldFiber = updateFromMap(\n        oldFiber,\n        returnFiber,\n        newIdx,\n        newChildren[newIdx],\n        lanes\n      )),\n        null !== nextOldFiber &&\n          (shouldTrackSideEffects &&\n            null !== nextOldFiber.alternate &&\n            oldFiber.delete(\n              null === nextOldFiber.key ? newIdx : nextOldFiber.key\n            ),\n          (currentFirstChild = placeChild(\n            nextOldFiber,\n            currentFirstChild,\n            newIdx\n          )),\n          null === previousNewFiber\n            ? (resultingFirstChild = nextOldFiber)\n            : (previousNewFiber.sibling = nextOldFiber),\n          (previousNewFiber = nextOldFiber));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildrenIterator(\n    returnFiber,\n    currentFirstChild,\n    newChildren,\n    lanes\n  ) {\n    if (null == newChildren) throw Error(formatProdErrorMessage(151));\n    for (\n      var resultingFirstChild = null,\n        previousNewFiber = null,\n        oldFiber = currentFirstChild,\n        newIdx = (currentFirstChild = 0),\n        nextOldFiber = null,\n        step = newChildren.next();\n      null !== oldFiber && !step.done;\n      newIdx++, step = newChildren.next()\n    ) {\n      oldFiber.index > newIdx\n        ? ((nextOldFiber = oldFiber), (oldFiber = null))\n        : (nextOldFiber = oldFiber.sibling);\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n      if (null === newFiber) {\n        null === oldFiber && (oldFiber = nextOldFiber);\n        break;\n      }\n      shouldTrackSideEffects &&\n        oldFiber &&\n        null === newFiber.alternate &&\n        deleteChild(returnFiber, oldFiber);\n      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n      null === previousNewFiber\n        ? (resultingFirstChild = newFiber)\n        : (previousNewFiber.sibling = newFiber);\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n    if (step.done)\n      return (\n        deleteRemainingChildren(returnFiber, oldFiber),\n        isHydrating && pushTreeFork(returnFiber, newIdx),\n        resultingFirstChild\n      );\n    if (null === oldFiber) {\n      for (; !step.done; newIdx++, step = newChildren.next())\n        (step = createChild(returnFiber, step.value, lanes)),\n          null !== step &&\n            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n            null === previousNewFiber\n              ? (resultingFirstChild = step)\n              : (previousNewFiber.sibling = step),\n            (previousNewFiber = step));\n      isHydrating && pushTreeFork(returnFiber, newIdx);\n      return resultingFirstChild;\n    }\n    for (\n      oldFiber = mapRemainingChildren(oldFiber);\n      !step.done;\n      newIdx++, step = newChildren.next()\n    )\n      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n        null !== step &&\n          (shouldTrackSideEffects &&\n            null !== step.alternate &&\n            oldFiber.delete(null === step.key ? newIdx : step.key),\n          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n          null === previousNewFiber\n            ? (resultingFirstChild = step)\n            : (previousNewFiber.sibling = step),\n          (previousNewFiber = step));\n    shouldTrackSideEffects &&\n      oldFiber.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    isHydrating && pushTreeFork(returnFiber, newIdx);\n    return resultingFirstChild;\n  }\n  function reconcileChildFibersImpl(\n    returnFiber,\n    currentFirstChild,\n    newChild,\n    lanes\n  ) {\n    \"object\" === typeof newChild &&\n      null !== newChild &&\n      newChild.type === REACT_FRAGMENT_TYPE &&\n      null === newChild.key &&\n      (newChild = newChild.props.children);\n    if (\"object\" === typeof newChild && null !== newChild) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          a: {\n            for (var key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key) {\n                key = newChild.type;\n                if (key === REACT_FRAGMENT_TYPE) {\n                  if (7 === currentFirstChild.tag) {\n                    deleteRemainingChildren(\n                      returnFiber,\n                      currentFirstChild.sibling\n                    );\n                    lanes = useFiber(\n                      currentFirstChild,\n                      newChild.props.children\n                    );\n                    lanes.return = returnFiber;\n                    returnFiber = lanes;\n                    break a;\n                  }\n                } else if (\n                  currentFirstChild.elementType === key ||\n                  (\"object\" === typeof key &&\n                    null !== key &&\n                    key.$$typeof === REACT_LAZY_TYPE &&\n                    resolveLazy(key) === currentFirstChild.type)\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.props);\n                  coerceRef(lanes, newChild);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                }\n                deleteRemainingChildren(returnFiber, currentFirstChild);\n                break;\n              } else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            newChild.type === REACT_FRAGMENT_TYPE\n              ? ((lanes = createFiberFromFragment(\n                  newChild.props.children,\n                  returnFiber.mode,\n                  lanes,\n                  newChild.key\n                )),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes))\n              : ((lanes = createFiberFromTypeAndProps(\n                  newChild.type,\n                  newChild.key,\n                  newChild.props,\n                  null,\n                  returnFiber.mode,\n                  lanes\n                )),\n                coerceRef(lanes, newChild),\n                (lanes.return = returnFiber),\n                (returnFiber = lanes));\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_PORTAL_TYPE:\n          a: {\n            for (key = newChild.key; null !== currentFirstChild; ) {\n              if (currentFirstChild.key === key)\n                if (\n                  4 === currentFirstChild.tag &&\n                  currentFirstChild.stateNode.containerInfo ===\n                    newChild.containerInfo &&\n                  currentFirstChild.stateNode.implementation ===\n                    newChild.implementation\n                ) {\n                  deleteRemainingChildren(\n                    returnFiber,\n                    currentFirstChild.sibling\n                  );\n                  lanes = useFiber(currentFirstChild, newChild.children || []);\n                  lanes.return = returnFiber;\n                  returnFiber = lanes;\n                  break a;\n                } else {\n                  deleteRemainingChildren(returnFiber, currentFirstChild);\n                  break;\n                }\n              else deleteChild(returnFiber, currentFirstChild);\n              currentFirstChild = currentFirstChild.sibling;\n            }\n            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n            lanes.return = returnFiber;\n            returnFiber = lanes;\n          }\n          return placeSingleChild(returnFiber);\n        case REACT_LAZY_TYPE:\n          return (\n            (key = newChild._init),\n            (newChild = key(newChild._payload)),\n            reconcileChildFibersImpl(\n              returnFiber,\n              currentFirstChild,\n              newChild,\n              lanes\n            )\n          );\n      }\n      if (isArrayImpl(newChild))\n        return reconcileChildrenArray(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      if (getIteratorFn(newChild)) {\n        key = getIteratorFn(newChild);\n        if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n        newChild = key.call(newChild);\n        return reconcileChildrenIterator(\n          returnFiber,\n          currentFirstChild,\n          newChild,\n          lanes\n        );\n      }\n      if (\"function\" === typeof newChild.then)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          unwrapThenable(newChild),\n          lanes\n        );\n      if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n        return reconcileChildFibersImpl(\n          returnFiber,\n          currentFirstChild,\n          readContextDuringReconciliation(returnFiber, newChild),\n          lanes\n        );\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n    return (\"string\" === typeof newChild && \"\" !== newChild) ||\n      \"number\" === typeof newChild ||\n      \"bigint\" === typeof newChild\n      ? ((newChild = \"\" + newChild),\n        null !== currentFirstChild && 6 === currentFirstChild.tag\n          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n            (lanes = useFiber(currentFirstChild, newChild)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes))\n          : (deleteRemainingChildren(returnFiber, currentFirstChild),\n            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n            (lanes.return = returnFiber),\n            (returnFiber = lanes)),\n        placeSingleChild(returnFiber))\n      : deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n  return function (returnFiber, currentFirstChild, newChild, lanes) {\n    try {\n      thenableIndexCounter = 0;\n      var firstChildFiber = reconcileChildFibersImpl(\n        returnFiber,\n        currentFirstChild,\n        newChild,\n        lanes\n      );\n      thenableState = null;\n      return firstChildFiber;\n    } catch (x) {\n      if (x === SuspenseException || x === SuspenseActionException) throw x;\n      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n      fiber.lanes = lanes;\n      fiber.return = returnFiber;\n      return fiber;\n    } finally {\n    }\n  };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n  mountChildFibers = createChildReconciler(!1),\n  suspenseHandlerStackCursor = createCursor(null),\n  shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n  var current = handler.alternate;\n  push(suspenseStackCursor, suspenseStackCursor.current & 1);\n  push(suspenseHandlerStackCursor, handler);\n  null === shellBoundary &&\n    (null === current || null !== currentTreeHiddenStackCursor.current\n      ? (shellBoundary = handler)\n      : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n  if (22 === fiber.tag) {\n    if (\n      (push(suspenseStackCursor, suspenseStackCursor.current),\n      push(suspenseHandlerStackCursor, fiber),\n      null === shellBoundary)\n    ) {\n      var current = fiber.alternate;\n      null !== current &&\n        null !== current.memoizedState &&\n        (shellBoundary = fiber);\n    }\n  } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n  push(suspenseStackCursor, suspenseStackCursor.current);\n  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n  pop(suspenseHandlerStackCursor);\n  shellBoundary === fiber && (shellBoundary = null);\n  pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n  for (var node = row; null !== node; ) {\n    if (13 === node.tag) {\n      var state = node.memoizedState;\n      if (\n        null !== state &&\n        ((state = state.dehydrated),\n        null === state ||\n          \"$?\" === state.data ||\n          isSuspenseInstanceFallback(state))\n      )\n        return node;\n    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n      if (0 !== (node.flags & 128)) return node;\n    } else if (null !== node.child) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n    if (node === row) break;\n    for (; null === node.sibling; ) {\n      if (null === node.return || node.return === row) return null;\n      node = node.return;\n    }\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n  return null;\n}\nfunction applyDerivedStateFromProps(\n  workInProgress,\n  ctor,\n  getDerivedStateFromProps,\n  nextProps\n) {\n  ctor = workInProgress.memoizedState;\n  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n  getDerivedStateFromProps =\n    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n      ? ctor\n      : assign({}, ctor, getDerivedStateFromProps);\n  workInProgress.memoizedState = getDerivedStateFromProps;\n  0 === workInProgress.lanes &&\n    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n  enqueueSetState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 1;\n    update.payload = payload;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    payload = enqueueUpdate(inst, update, lane);\n    null !== payload &&\n      (scheduleUpdateOnFiber(payload, inst, lane),\n      entangleTransitions(payload, inst, lane));\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    inst = inst._reactInternals;\n    var lane = requestUpdateLane(),\n      update = createUpdate(lane);\n    update.tag = 2;\n    void 0 !== callback && null !== callback && (update.callback = callback);\n    callback = enqueueUpdate(inst, update, lane);\n    null !== callback &&\n      (scheduleUpdateOnFiber(callback, inst, lane),\n      entangleTransitions(callback, inst, lane));\n  }\n};\nfunction checkShouldComponentUpdate(\n  workInProgress,\n  ctor,\n  oldProps,\n  newProps,\n  oldState,\n  newState,\n  nextContext\n) {\n  workInProgress = workInProgress.stateNode;\n  return \"function\" === typeof workInProgress.shouldComponentUpdate\n    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n    : ctor.prototype && ctor.prototype.isPureReactComponent\n      ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n      : !0;\n}\nfunction callComponentWillReceiveProps(\n  workInProgress,\n  instance,\n  newProps,\n  nextContext\n) {\n  workInProgress = instance.state;\n  \"function\" === typeof instance.componentWillReceiveProps &&\n    instance.componentWillReceiveProps(newProps, nextContext);\n  \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  instance.state !== workInProgress &&\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n  var newProps = baseProps;\n  if (\"ref\" in baseProps) {\n    newProps = {};\n    for (var propName in baseProps)\n      \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n  }\n  if ((Component = Component.defaultProps)) {\n    newProps === baseProps && (newProps = assign({}, newProps));\n    for (var propName$73 in Component)\n      void 0 === newProps[propName$73] &&\n        (newProps[propName$73] = Component[propName$73]);\n  }\n  return newProps;\n}\nvar reportGlobalError =\n  \"function\" === typeof reportError\n    ? reportError\n    : function (error) {\n        if (\n          \"object\" === typeof window &&\n          \"function\" === typeof window.ErrorEvent\n        ) {\n          var event = new window.ErrorEvent(\"error\", {\n            bubbles: !0,\n            cancelable: !0,\n            message:\n              \"object\" === typeof error &&\n              null !== error &&\n              \"string\" === typeof error.message\n                ? String(error.message)\n                : String(error),\n            error: error\n          });\n          if (!window.dispatchEvent(event)) return;\n        } else if (\n          \"object\" === typeof process &&\n          \"function\" === typeof process.emit\n        ) {\n          process.emit(\"uncaughtException\", error);\n          return;\n        }\n        console.error(error);\n      };\nfunction defaultOnUncaughtError(error) {\n  reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n  console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n  reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n  try {\n    var onUncaughtError = root.onUncaughtError;\n    onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n  } catch (e$74) {\n    setTimeout(function () {\n      throw e$74;\n    });\n  }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n  try {\n    var onCaughtError = root.onCaughtError;\n    onCaughtError(errorInfo.value, {\n      componentStack: errorInfo.stack,\n      errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n    });\n  } catch (e$75) {\n    setTimeout(function () {\n      throw e$75;\n    });\n  }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  lane.payload = { element: null };\n  lane.callback = function () {\n    logUncaughtError(root, errorInfo);\n  };\n  return lane;\n}\nfunction createClassErrorUpdate(lane) {\n  lane = createUpdate(lane);\n  lane.tag = 3;\n  return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n  if (\"function\" === typeof getDerivedStateFromError) {\n    var error = errorInfo.value;\n    update.payload = function () {\n      return getDerivedStateFromError(error);\n    };\n    update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n    };\n  }\n  var inst = fiber.stateNode;\n  null !== inst &&\n    \"function\" === typeof inst.componentDidCatch &&\n    (update.callback = function () {\n      logCaughtError(root, fiber, errorInfo);\n      \"function\" !== typeof getDerivedStateFromError &&\n        (null === legacyErrorBoundariesThatAlreadyFailed\n          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n          : legacyErrorBoundariesThatAlreadyFailed.add(this));\n      var stack = errorInfo.stack;\n      this.componentDidCatch(errorInfo.value, {\n        componentStack: null !== stack ? stack : \"\"\n      });\n    });\n}\nfunction throwException(\n  root,\n  returnFiber,\n  sourceFiber,\n  value,\n  rootRenderLanes\n) {\n  sourceFiber.flags |= 32768;\n  if (\n    null !== value &&\n    \"object\" === typeof value &&\n    \"function\" === typeof value.then\n  ) {\n    returnFiber = sourceFiber.alternate;\n    null !== returnFiber &&\n      propagateParentContextChanges(\n        returnFiber,\n        sourceFiber,\n        rootRenderLanes,\n        !0\n      );\n    sourceFiber = suspenseHandlerStackCursor.current;\n    if (null !== sourceFiber) {\n      switch (sourceFiber.tag) {\n        case 13:\n          return (\n            null === shellBoundary\n              ? renderDidSuspendDelayIfPossible()\n              : null === sourceFiber.alternate &&\n                0 === workInProgressRootExitStatus &&\n                (workInProgressRootExitStatus = 3),\n            (sourceFiber.flags &= -257),\n            (sourceFiber.flags |= 65536),\n            (sourceFiber.lanes = rootRenderLanes),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? (sourceFiber.updateQueue = new Set([value]))\n                  : returnFiber.add(value),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n        case 22:\n          return (\n            (sourceFiber.flags |= 65536),\n            value === noopSuspenseyCommitThenable\n              ? (sourceFiber.flags |= 16384)\n              : ((returnFiber = sourceFiber.updateQueue),\n                null === returnFiber\n                  ? ((returnFiber = {\n                      transitions: null,\n                      markerInstances: null,\n                      retryQueue: new Set([value])\n                    }),\n                    (sourceFiber.updateQueue = returnFiber))\n                  : ((sourceFiber = returnFiber.retryQueue),\n                    null === sourceFiber\n                      ? (returnFiber.retryQueue = new Set([value]))\n                      : sourceFiber.add(value)),\n                attachPingListener(root, value, rootRenderLanes)),\n            !1\n          );\n      }\n      throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n    }\n    attachPingListener(root, value, rootRenderLanes);\n    renderDidSuspendDelayIfPossible();\n    return !1;\n  }\n  if (isHydrating)\n    return (\n      (returnFiber = suspenseHandlerStackCursor.current),\n      null !== returnFiber\n        ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n          (returnFiber.flags |= 65536),\n          (returnFiber.lanes = rootRenderLanes),\n          value !== HydrationMismatchException &&\n            ((root = Error(formatProdErrorMessage(422), { cause: value })),\n            queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n        : (value !== HydrationMismatchException &&\n            ((returnFiber = Error(formatProdErrorMessage(423), {\n              cause: value\n            })),\n            queueHydrationError(\n              createCapturedValueAtFiber(returnFiber, sourceFiber)\n            )),\n          (root = root.current.alternate),\n          (root.flags |= 65536),\n          (rootRenderLanes &= -rootRenderLanes),\n          (root.lanes |= rootRenderLanes),\n          (value = createCapturedValueAtFiber(value, sourceFiber)),\n          (rootRenderLanes = createRootErrorUpdate(\n            root.stateNode,\n            value,\n            rootRenderLanes\n          )),\n          enqueueCapturedUpdate(root, rootRenderLanes),\n          4 !== workInProgressRootExitStatus &&\n            (workInProgressRootExitStatus = 2)),\n      !1\n    );\n  var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n  wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n  null === workInProgressRootConcurrentErrors\n    ? (workInProgressRootConcurrentErrors = [wrapperError])\n    : workInProgressRootConcurrentErrors.push(wrapperError);\n  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n  if (null === returnFiber) return !0;\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  sourceFiber = returnFiber;\n  do {\n    switch (sourceFiber.tag) {\n      case 3:\n        return (\n          (sourceFiber.flags |= 65536),\n          (root = rootRenderLanes & -rootRenderLanes),\n          (sourceFiber.lanes |= root),\n          (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n          enqueueCapturedUpdate(sourceFiber, root),\n          !1\n        );\n      case 1:\n        if (\n          ((returnFiber = sourceFiber.type),\n          (wrapperError = sourceFiber.stateNode),\n          0 === (sourceFiber.flags & 128) &&\n            (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n              (null !== wrapperError &&\n                \"function\" === typeof wrapperError.componentDidCatch &&\n                (null === legacyErrorBoundariesThatAlreadyFailed ||\n                  !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n        )\n          return (\n            (sourceFiber.flags |= 65536),\n            (rootRenderLanes &= -rootRenderLanes),\n            (sourceFiber.lanes |= rootRenderLanes),\n            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n            initializeClassErrorUpdate(\n              rootRenderLanes,\n              root,\n              sourceFiber,\n              value\n            ),\n            enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n            !1\n          );\n    }\n    sourceFiber = sourceFiber.return;\n  } while (null !== sourceFiber);\n  return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n  didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  workInProgress.child =\n    null === current\n      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n      : reconcileChildFibers(\n          workInProgress,\n          current.child,\n          nextChildren,\n          renderLanes\n        );\n}\nfunction updateForwardRef(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  Component = Component.render;\n  var ref = workInProgress.ref;\n  if (\"ref\" in nextProps) {\n    var propsWithoutRef = {};\n    for (var key in nextProps)\n      \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n  } else propsWithoutRef = nextProps;\n  prepareToReadContext(workInProgress);\n  nextProps = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    propsWithoutRef,\n    ref,\n    renderLanes\n  );\n  key = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && key && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null === current) {\n    var type = Component.type;\n    if (\n      \"function\" === typeof type &&\n      !shouldConstruct(type) &&\n      void 0 === type.defaultProps &&\n      null === Component.compare\n    )\n      return (\n        (workInProgress.tag = 15),\n        (workInProgress.type = type),\n        updateSimpleMemoComponent(\n          current,\n          workInProgress,\n          type,\n          nextProps,\n          renderLanes\n        )\n      );\n    current = createFiberFromTypeAndProps(\n      Component.type,\n      null,\n      nextProps,\n      workInProgress,\n      workInProgress.mode,\n      renderLanes\n    );\n    current.ref = workInProgress.ref;\n    current.return = workInProgress;\n    return (workInProgress.child = current);\n  }\n  type = current.child;\n  if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n    var prevProps = type.memoizedProps;\n    Component = Component.compare;\n    Component = null !== Component ? Component : shallowEqual;\n    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n  workInProgress.flags |= 1;\n  current = createWorkInProgress(type, nextProps);\n  current.ref = workInProgress.ref;\n  current.return = workInProgress;\n  return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  if (null !== current) {\n    var prevProps = current.memoizedProps;\n    if (\n      shallowEqual(prevProps, nextProps) &&\n      current.ref === workInProgress.ref\n    )\n      if (\n        ((didReceiveUpdate = !1),\n        (workInProgress.pendingProps = nextProps = prevProps),\n        checkScheduledUpdateOrContext(current, renderLanes))\n      )\n        0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n      else\n        return (\n          (workInProgress.lanes = current.lanes),\n          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n        );\n  }\n  return updateFunctionComponent(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    renderLanes\n  );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    nextChildren = nextProps.children,\n    prevState = null !== current ? current.memoizedState : null;\n  if (\"hidden\" === nextProps.mode) {\n    if (0 !== (workInProgress.flags & 128)) {\n      nextProps =\n        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n      if (null !== current) {\n        nextChildren = workInProgress.child = current.child;\n        for (prevState = 0; null !== nextChildren; )\n          (prevState =\n            prevState | nextChildren.lanes | nextChildren.childLanes),\n            (nextChildren = nextChildren.sibling);\n        workInProgress.childLanes = prevState & ~nextProps;\n      } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n      return deferHiddenOffscreenComponent(\n        current,\n        workInProgress,\n        nextProps,\n        renderLanes\n      );\n    }\n    if (0 !== (renderLanes & 536870912))\n      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n        null !== current &&\n          pushTransition(\n            workInProgress,\n            null !== prevState ? prevState.cachePool : null\n          ),\n        null !== prevState\n          ? pushHiddenContext(workInProgress, prevState)\n          : reuseHiddenContextOnStack(),\n        pushOffscreenSuspenseHandler(workInProgress);\n    else\n      return (\n        (workInProgress.lanes = workInProgress.childLanes = 536870912),\n        deferHiddenOffscreenComponent(\n          current,\n          workInProgress,\n          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n          renderLanes\n        )\n      );\n  } else\n    null !== prevState\n      ? (pushTransition(workInProgress, prevState.cachePool),\n        pushHiddenContext(workInProgress, prevState),\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (workInProgress.memoizedState = null))\n      : (null !== current && pushTransition(workInProgress, null),\n        reuseHiddenContextOnStack(),\n        reuseSuspenseHandlerOnStack(workInProgress));\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n  current,\n  workInProgress,\n  nextBaseLanes,\n  renderLanes\n) {\n  var JSCompiler_inline_result = peekCacheFromPool();\n  JSCompiler_inline_result =\n    null === JSCompiler_inline_result\n      ? null\n      : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n  workInProgress.memoizedState = {\n    baseLanes: nextBaseLanes,\n    cachePool: JSCompiler_inline_result\n  };\n  null !== current && pushTransition(workInProgress, null);\n  reuseHiddenContextOnStack();\n  pushOffscreenSuspenseHandler(workInProgress);\n  null !== current &&\n    propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n  return null;\n}\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n  if (null === ref)\n    null !== current &&\n      null !== current.ref &&\n      (workInProgress.flags |= 4194816);\n  else {\n    if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n      throw Error(formatProdErrorMessage(284));\n    if (null === current || current.ref !== ref)\n      workInProgress.flags |= 4194816;\n  }\n}\nfunction updateFunctionComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  Component = renderWithHooks(\n    current,\n    workInProgress,\n    Component,\n    nextProps,\n    void 0,\n    renderLanes\n  );\n  nextProps = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, Component, renderLanes);\n  return workInProgress.child;\n}\nfunction replayFunctionComponent(\n  current,\n  workInProgress,\n  nextProps,\n  Component,\n  secondArg,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  workInProgress.updateQueue = null;\n  nextProps = renderWithHooksAgain(\n    workInProgress,\n    Component,\n    nextProps,\n    secondArg\n  );\n  finishRenderingHooks(current);\n  Component = checkDidRenderIdHook();\n  if (null !== current && !didReceiveUpdate)\n    return (\n      bailoutHooks(current, workInProgress, renderLanes),\n      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n    );\n  isHydrating && Component && pushMaterializedTreeId(workInProgress);\n  workInProgress.flags |= 1;\n  reconcileChildren(current, workInProgress, nextProps, renderLanes);\n  return workInProgress.child;\n}\nfunction updateClassComponent(\n  current,\n  workInProgress,\n  Component,\n  nextProps,\n  renderLanes\n) {\n  prepareToReadContext(workInProgress);\n  if (null === workInProgress.stateNode) {\n    var context = emptyContextObject,\n      contextType = Component.contextType;\n    \"object\" === typeof contextType &&\n      null !== contextType &&\n      (context = readContext(contextType));\n    context = new Component(nextProps, context);\n    workInProgress.memoizedState =\n      null !== context.state && void 0 !== context.state ? context.state : null;\n    context.updater = classComponentUpdater;\n    workInProgress.stateNode = context;\n    context._reactInternals = workInProgress;\n    context = workInProgress.stateNode;\n    context.props = nextProps;\n    context.state = workInProgress.memoizedState;\n    context.refs = {};\n    initializeUpdateQueue(workInProgress);\n    contextType = Component.contextType;\n    context.context =\n      \"object\" === typeof contextType && null !== contextType\n        ? readContext(contextType)\n        : emptyContextObject;\n    context.state = workInProgress.memoizedState;\n    contextType = Component.getDerivedStateFromProps;\n    \"function\" === typeof contextType &&\n      (applyDerivedStateFromProps(\n        workInProgress,\n        Component,\n        contextType,\n        nextProps\n      ),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof Component.getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate ||\n      (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n        \"function\" !== typeof context.componentWillMount) ||\n      ((contextType = context.state),\n      \"function\" === typeof context.componentWillMount &&\n        context.componentWillMount(),\n      \"function\" === typeof context.UNSAFE_componentWillMount &&\n        context.UNSAFE_componentWillMount(),\n      contextType !== context.state &&\n        classComponentUpdater.enqueueReplaceState(context, context.state, null),\n      processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n      suspendIfUpdateReadFromEntangledAsyncAction(),\n      (context.state = workInProgress.memoizedState));\n    \"function\" === typeof context.componentDidMount &&\n      (workInProgress.flags |= 4194308);\n    nextProps = !0;\n  } else if (null === current) {\n    context = workInProgress.stateNode;\n    var unresolvedOldProps = workInProgress.memoizedProps,\n      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n    context.props = oldProps;\n    var oldContext = context.context,\n      contextType$jscomp$0 = Component.contextType;\n    contextType = emptyContextObject;\n    \"object\" === typeof contextType$jscomp$0 &&\n      null !== contextType$jscomp$0 &&\n      (contextType = readContext(contextType$jscomp$0));\n    var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n    contextType$jscomp$0 =\n      \"function\" === typeof getDerivedStateFromProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate;\n    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n    contextType$jscomp$0 ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((unresolvedOldProps || oldContext !== contextType) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          contextType\n        ));\n    hasForceUpdate = !1;\n    var oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    oldContext = workInProgress.memoizedState;\n    unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n      ? (\"function\" === typeof getDerivedStateFromProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            getDerivedStateFromProps,\n            nextProps\n          ),\n          (oldContext = workInProgress.memoizedState)),\n        (oldProps =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            oldProps,\n            nextProps,\n            oldState,\n            oldContext,\n            contextType\n          ))\n          ? (contextType$jscomp$0 ||\n              (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n                \"function\" !== typeof context.componentWillMount) ||\n              (\"function\" === typeof context.componentWillMount &&\n                context.componentWillMount(),\n              \"function\" === typeof context.UNSAFE_componentWillMount &&\n                context.UNSAFE_componentWillMount()),\n            \"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308))\n          : (\"function\" === typeof context.componentDidMount &&\n              (workInProgress.flags |= 4194308),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = oldContext)),\n        (context.props = nextProps),\n        (context.state = oldContext),\n        (context.context = contextType),\n        (nextProps = oldProps))\n      : (\"function\" === typeof context.componentDidMount &&\n          (workInProgress.flags |= 4194308),\n        (nextProps = !1));\n  } else {\n    context = workInProgress.stateNode;\n    cloneUpdateQueue(current, workInProgress);\n    contextType = workInProgress.memoizedProps;\n    contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n    context.props = contextType$jscomp$0;\n    getDerivedStateFromProps = workInProgress.pendingProps;\n    oldState = context.context;\n    oldContext = Component.contextType;\n    oldProps = emptyContextObject;\n    \"object\" === typeof oldContext &&\n      null !== oldContext &&\n      (oldProps = readContext(oldContext));\n    unresolvedOldProps = Component.getDerivedStateFromProps;\n    (oldContext =\n      \"function\" === typeof unresolvedOldProps ||\n      \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n      (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n        \"function\" !== typeof context.componentWillReceiveProps) ||\n      ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n        callComponentWillReceiveProps(\n          workInProgress,\n          context,\n          nextProps,\n          oldProps\n        ));\n    hasForceUpdate = !1;\n    oldState = workInProgress.memoizedState;\n    context.state = oldState;\n    processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n    suspendIfUpdateReadFromEntangledAsyncAction();\n    var newState = workInProgress.memoizedState;\n    contextType !== getDerivedStateFromProps ||\n    oldState !== newState ||\n    hasForceUpdate ||\n    (null !== current &&\n      null !== current.dependencies &&\n      checkIfContextChanged(current.dependencies))\n      ? (\"function\" === typeof unresolvedOldProps &&\n          (applyDerivedStateFromProps(\n            workInProgress,\n            Component,\n            unresolvedOldProps,\n            nextProps\n          ),\n          (newState = workInProgress.memoizedState)),\n        (contextType$jscomp$0 =\n          hasForceUpdate ||\n          checkShouldComponentUpdate(\n            workInProgress,\n            Component,\n            contextType$jscomp$0,\n            nextProps,\n            oldState,\n            newState,\n            oldProps\n          ) ||\n          (null !== current &&\n            null !== current.dependencies &&\n            checkIfContextChanged(current.dependencies)))\n          ? (oldContext ||\n              (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n                \"function\" !== typeof context.componentWillUpdate) ||\n              (\"function\" === typeof context.componentWillUpdate &&\n                context.componentWillUpdate(nextProps, newState, oldProps),\n              \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n                context.UNSAFE_componentWillUpdate(\n                  nextProps,\n                  newState,\n                  oldProps\n                )),\n            \"function\" === typeof context.componentDidUpdate &&\n              (workInProgress.flags |= 4),\n            \"function\" === typeof context.getSnapshotBeforeUpdate &&\n              (workInProgress.flags |= 1024))\n          : (\"function\" !== typeof context.componentDidUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 4),\n            \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n              (contextType === current.memoizedProps &&\n                oldState === current.memoizedState) ||\n              (workInProgress.flags |= 1024),\n            (workInProgress.memoizedProps = nextProps),\n            (workInProgress.memoizedState = newState)),\n        (context.props = nextProps),\n        (context.state = newState),\n        (context.context = oldProps),\n        (nextProps = contextType$jscomp$0))\n      : (\"function\" !== typeof context.componentDidUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 4),\n        \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n          (contextType === current.memoizedProps &&\n            oldState === current.memoizedState) ||\n          (workInProgress.flags |= 1024),\n        (nextProps = !1));\n  }\n  context = nextProps;\n  markRef(current, workInProgress);\n  nextProps = 0 !== (workInProgress.flags & 128);\n  context || nextProps\n    ? ((context = workInProgress.stateNode),\n      (Component =\n        nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n          ? null\n          : context.render()),\n      (workInProgress.flags |= 1),\n      null !== current && nextProps\n        ? ((workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            current.child,\n            null,\n            renderLanes\n          )),\n          (workInProgress.child = reconcileChildFibers(\n            workInProgress,\n            null,\n            Component,\n            renderLanes\n          )))\n        : reconcileChildren(current, workInProgress, Component, renderLanes),\n      (workInProgress.memoizedState = context.state),\n      (current = workInProgress.child))\n    : (current = bailoutOnAlreadyFinishedWork(\n        current,\n        workInProgress,\n        renderLanes\n      ));\n  return current;\n}\nfunction mountHostRootWithoutHydrating(\n  current,\n  workInProgress,\n  nextChildren,\n  renderLanes\n) {\n  resetHydrationState();\n  workInProgress.flags |= 256;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n  dehydrated: null,\n  treeContext: null,\n  retryLane: 0,\n  hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n  current,\n  primaryTreeDidDefer,\n  renderLanes\n) {\n  current = null !== current ? current.childLanes & ~renderLanes : 0;\n  primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n  return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    showFallback = !1,\n    didSuspend = 0 !== (workInProgress.flags & 128),\n    JSCompiler_temp;\n  (JSCompiler_temp = didSuspend) ||\n    (JSCompiler_temp =\n      null !== current && null === current.memoizedState\n        ? !1\n        : 0 !== (suspenseStackCursor.current & 2));\n  JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n  JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n  workInProgress.flags &= -33;\n  if (null === current) {\n    if (isHydrating) {\n      showFallback\n        ? pushPrimaryTreeSuspenseHandler(workInProgress)\n        : reuseSuspenseHandlerOnStack(workInProgress);\n      if (isHydrating) {\n        var nextInstance = nextHydratableInstance,\n          JSCompiler_temp$jscomp$0;\n        if ((JSCompiler_temp$jscomp$0 = nextInstance)) {\n          c: {\n            JSCompiler_temp$jscomp$0 = nextInstance;\n            for (\n              nextInstance = rootOrSingletonContext;\n              8 !== JSCompiler_temp$jscomp$0.nodeType;\n\n            ) {\n              if (!nextInstance) {\n                nextInstance = null;\n                break c;\n              }\n              JSCompiler_temp$jscomp$0 = getNextHydratable(\n                JSCompiler_temp$jscomp$0.nextSibling\n              );\n              if (null === JSCompiler_temp$jscomp$0) {\n                nextInstance = null;\n                break c;\n              }\n            }\n            nextInstance = JSCompiler_temp$jscomp$0;\n          }\n          null !== nextInstance\n            ? ((workInProgress.memoizedState = {\n                dehydrated: nextInstance,\n                treeContext:\n                  null !== treeContextProvider\n                    ? { id: treeContextId, overflow: treeContextOverflow }\n                    : null,\n                retryLane: 536870912,\n                hydrationErrors: null\n              }),\n              (JSCompiler_temp$jscomp$0 = createFiberImplClass(\n                18,\n                null,\n                null,\n                0\n              )),\n              (JSCompiler_temp$jscomp$0.stateNode = nextInstance),\n              (JSCompiler_temp$jscomp$0.return = workInProgress),\n              (workInProgress.child = JSCompiler_temp$jscomp$0),\n              (hydrationParentFiber = workInProgress),\n              (nextHydratableInstance = null),\n              (JSCompiler_temp$jscomp$0 = !0))\n            : (JSCompiler_temp$jscomp$0 = !1);\n        }\n        JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);\n      }\n      nextInstance = workInProgress.memoizedState;\n      if (\n        null !== nextInstance &&\n        ((nextInstance = nextInstance.dehydrated), null !== nextInstance)\n      )\n        return (\n          isSuspenseInstanceFallback(nextInstance)\n            ? (workInProgress.lanes = 32)\n            : (workInProgress.lanes = 536870912),\n          null\n        );\n      popSuspenseHandler(workInProgress);\n    }\n    nextInstance = nextProps.children;\n    nextProps = nextProps.fallback;\n    if (showFallback)\n      return (\n        reuseSuspenseHandlerOnStack(workInProgress),\n        (showFallback = workInProgress.mode),\n        (nextInstance = mountWorkInProgressOffscreenFiber(\n          { mode: \"hidden\", children: nextInstance },\n          showFallback\n        )),\n        (nextProps = createFiberFromFragment(\n          nextProps,\n          showFallback,\n          renderLanes,\n          null\n        )),\n        (nextInstance.return = workInProgress),\n        (nextProps.return = workInProgress),\n        (nextInstance.sibling = nextProps),\n        (workInProgress.child = nextInstance),\n        (showFallback = workInProgress.child),\n        (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n        (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n          current,\n          JSCompiler_temp,\n          renderLanes\n        )),\n        (workInProgress.memoizedState = SUSPENDED_MARKER),\n        nextProps\n      );\n    pushPrimaryTreeSuspenseHandler(workInProgress);\n    return mountSuspensePrimaryChildren(workInProgress, nextInstance);\n  }\n  JSCompiler_temp$jscomp$0 = current.memoizedState;\n  if (\n    null !== JSCompiler_temp$jscomp$0 &&\n    ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),\n    null !== nextInstance)\n  ) {\n    if (didSuspend)\n      workInProgress.flags & 256\n        ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n          (workInProgress.flags &= -257),\n          (workInProgress = retrySuspenseComponentWithoutHydrating(\n            current,\n            workInProgress,\n            renderLanes\n          )))\n        : null !== workInProgress.memoizedState\n          ? (reuseSuspenseHandlerOnStack(workInProgress),\n            (workInProgress.child = current.child),\n            (workInProgress.flags |= 128),\n            (workInProgress = null))\n          : (reuseSuspenseHandlerOnStack(workInProgress),\n            (showFallback = nextProps.fallback),\n            (nextInstance = workInProgress.mode),\n            (nextProps = mountWorkInProgressOffscreenFiber(\n              { mode: \"visible\", children: nextProps.children },\n              nextInstance\n            )),\n            (showFallback = createFiberFromFragment(\n              showFallback,\n              nextInstance,\n              renderLanes,\n              null\n            )),\n            (showFallback.flags |= 2),\n            (nextProps.return = workInProgress),\n            (showFallback.return = workInProgress),\n            (nextProps.sibling = showFallback),\n            (workInProgress.child = nextProps),\n            reconcileChildFibers(\n              workInProgress,\n              current.child,\n              null,\n              renderLanes\n            ),\n            (nextProps = workInProgress.child),\n            (nextProps.memoizedState =\n              mountSuspenseOffscreenState(renderLanes)),\n            (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n              current,\n              JSCompiler_temp,\n              renderLanes\n            )),\n            (workInProgress.memoizedState = SUSPENDED_MARKER),\n            (workInProgress = showFallback));\n    else if (\n      (pushPrimaryTreeSuspenseHandler(workInProgress),\n      isSuspenseInstanceFallback(nextInstance))\n    ) {\n      JSCompiler_temp =\n        nextInstance.nextSibling && nextInstance.nextSibling.dataset;\n      if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n      JSCompiler_temp = digest;\n      nextProps = Error(formatProdErrorMessage(419));\n      nextProps.stack = \"\";\n      nextProps.digest = JSCompiler_temp;\n      queueHydrationError({ value: nextProps, source: null, stack: null });\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else if (\n      (didReceiveUpdate ||\n        propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n      (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n      didReceiveUpdate || JSCompiler_temp)\n    ) {\n      JSCompiler_temp = workInProgressRoot;\n      if (\n        null !== JSCompiler_temp &&\n        ((nextProps = renderLanes & -renderLanes),\n        (nextProps =\n          0 !== (nextProps & 42)\n            ? 1\n            : getBumpedLaneForHydrationByLane(nextProps)),\n        (nextProps =\n          0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n            ? 0\n            : nextProps),\n        0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)\n      )\n        throw (\n          ((JSCompiler_temp$jscomp$0.retryLane = nextProps),\n          enqueueConcurrentRenderForLane(current, nextProps),\n          scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n          SelectiveHydrationException)\n        );\n      \"$?\" === nextInstance.data || renderDidSuspendDelayIfPossible();\n      workInProgress = retrySuspenseComponentWithoutHydrating(\n        current,\n        workInProgress,\n        renderLanes\n      );\n    } else\n      \"$?\" === nextInstance.data\n        ? ((workInProgress.flags |= 192),\n          (workInProgress.child = current.child),\n          (workInProgress = null))\n        : ((current = JSCompiler_temp$jscomp$0.treeContext),\n          (nextHydratableInstance = getNextHydratable(\n            nextInstance.nextSibling\n          )),\n          (hydrationParentFiber = workInProgress),\n          (isHydrating = !0),\n          (hydrationErrors = null),\n          (rootOrSingletonContext = !1),\n          null !== current &&\n            ((idStack[idStackIndex++] = treeContextId),\n            (idStack[idStackIndex++] = treeContextOverflow),\n            (idStack[idStackIndex++] = treeContextProvider),\n            (treeContextId = current.id),\n            (treeContextOverflow = current.overflow),\n            (treeContextProvider = workInProgress)),\n          (workInProgress = mountSuspensePrimaryChildren(\n            workInProgress,\n            nextProps.children\n          )),\n          (workInProgress.flags |= 4096));\n    return workInProgress;\n  }\n  if (showFallback)\n    return (\n      reuseSuspenseHandlerOnStack(workInProgress),\n      (showFallback = nextProps.fallback),\n      (nextInstance = workInProgress.mode),\n      (JSCompiler_temp$jscomp$0 = current.child),\n      (digest = JSCompiler_temp$jscomp$0.sibling),\n      (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {\n        mode: \"hidden\",\n        children: nextProps.children\n      })),\n      (nextProps.subtreeFlags =\n        JSCompiler_temp$jscomp$0.subtreeFlags & 65011712),\n      null !== digest\n        ? (showFallback = createWorkInProgress(digest, showFallback))\n        : ((showFallback = createFiberFromFragment(\n            showFallback,\n            nextInstance,\n            renderLanes,\n            null\n          )),\n          (showFallback.flags |= 2)),\n      (showFallback.return = workInProgress),\n      (nextProps.return = workInProgress),\n      (nextProps.sibling = showFallback),\n      (workInProgress.child = nextProps),\n      (nextProps = showFallback),\n      (showFallback = workInProgress.child),\n      (nextInstance = current.child.memoizedState),\n      null === nextInstance\n        ? (nextInstance = mountSuspenseOffscreenState(renderLanes))\n        : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),\n          null !== JSCompiler_temp$jscomp$0\n            ? ((digest = CacheContext._currentValue),\n              (JSCompiler_temp$jscomp$0 =\n                JSCompiler_temp$jscomp$0.parent !== digest\n                  ? { parent: digest, pool: digest }\n                  : JSCompiler_temp$jscomp$0))\n            : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),\n          (nextInstance = {\n            baseLanes: nextInstance.baseLanes | renderLanes,\n            cachePool: JSCompiler_temp$jscomp$0\n          })),\n      (showFallback.memoizedState = nextInstance),\n      (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n        current,\n        JSCompiler_temp,\n        renderLanes\n      )),\n      (workInProgress.memoizedState = SUSPENDED_MARKER),\n      nextProps\n    );\n  pushPrimaryTreeSuspenseHandler(workInProgress);\n  renderLanes = current.child;\n  current = renderLanes.sibling;\n  renderLanes = createWorkInProgress(renderLanes, {\n    mode: \"visible\",\n    children: nextProps.children\n  });\n  renderLanes.return = workInProgress;\n  renderLanes.sibling = null;\n  null !== current &&\n    ((JSCompiler_temp = workInProgress.deletions),\n    null === JSCompiler_temp\n      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n      : JSCompiler_temp.push(current));\n  workInProgress.child = renderLanes;\n  workInProgress.memoizedState = null;\n  return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n  primaryChildren = mountWorkInProgressOffscreenFiber(\n    { mode: \"visible\", children: primaryChildren },\n    workInProgress.mode\n  );\n  primaryChildren.return = workInProgress;\n  return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n  offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n  offscreenProps.lanes = 0;\n  offscreenProps.stateNode = {\n    _visibility: 1,\n    _pendingMarkers: null,\n    _retryCache: null,\n    _transitions: null\n  };\n  return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  current = mountSuspensePrimaryChildren(\n    workInProgress,\n    workInProgress.pendingProps.children\n  );\n  current.flags |= 2;\n  workInProgress.memoizedState = null;\n  return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes |= renderLanes;\n  var alternate = fiber.alternate;\n  null !== alternate && (alternate.lanes |= renderLanes);\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n  workInProgress,\n  isBackwards,\n  tail,\n  lastContentRow,\n  tailMode\n) {\n  var renderState = workInProgress.memoizedState;\n  null === renderState\n    ? (workInProgress.memoizedState = {\n        isBackwards: isBackwards,\n        rendering: null,\n        renderingStartTime: 0,\n        last: lastContentRow,\n        tail: tail,\n        tailMode: tailMode\n      })\n    : ((renderState.isBackwards = isBackwards),\n      (renderState.rendering = null),\n      (renderState.renderingStartTime = 0),\n      (renderState.last = lastContentRow),\n      (renderState.tail = tail),\n      (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps,\n    revealOrder = nextProps.revealOrder,\n    tailMode = nextProps.tail;\n  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n  nextProps = suspenseStackCursor.current;\n  if (0 !== (nextProps & 2))\n    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n  else {\n    if (null !== current && 0 !== (current.flags & 128))\n      a: for (current = workInProgress.child; null !== current; ) {\n        if (13 === current.tag)\n          null !== current.memoizedState &&\n            scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (19 === current.tag)\n          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n        else if (null !== current.child) {\n          current.child.return = current;\n          current = current.child;\n          continue;\n        }\n        if (current === workInProgress) break a;\n        for (; null === current.sibling; ) {\n          if (null === current.return || current.return === workInProgress)\n            break a;\n          current = current.return;\n        }\n        current.sibling.return = current.return;\n        current = current.sibling;\n      }\n    nextProps &= 1;\n  }\n  push(suspenseStackCursor, nextProps);\n  switch (revealOrder) {\n    case \"forwards\":\n      renderLanes = workInProgress.child;\n      for (revealOrder = null; null !== renderLanes; )\n        (current = renderLanes.alternate),\n          null !== current &&\n            null === findFirstSuspended(current) &&\n            (revealOrder = renderLanes),\n          (renderLanes = renderLanes.sibling);\n      renderLanes = revealOrder;\n      null === renderLanes\n        ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n        : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n      initSuspenseListRenderState(\n        workInProgress,\n        !1,\n        revealOrder,\n        renderLanes,\n        tailMode\n      );\n      break;\n    case \"backwards\":\n      renderLanes = null;\n      revealOrder = workInProgress.child;\n      for (workInProgress.child = null; null !== revealOrder; ) {\n        current = revealOrder.alternate;\n        if (null !== current && null === findFirstSuspended(current)) {\n          workInProgress.child = revealOrder;\n          break;\n        }\n        current = revealOrder.sibling;\n        revealOrder.sibling = renderLanes;\n        renderLanes = revealOrder;\n        revealOrder = current;\n      }\n      initSuspenseListRenderState(\n        workInProgress,\n        !0,\n        renderLanes,\n        null,\n        tailMode\n      );\n      break;\n    case \"together\":\n      initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n      break;\n    default:\n      workInProgress.memoizedState = null;\n  }\n  return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  null !== current && (workInProgress.dependencies = current.dependencies);\n  workInProgressRootSkippedLanes |= workInProgress.lanes;\n  if (0 === (renderLanes & workInProgress.childLanes))\n    if (null !== current) {\n      if (\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        0 === (renderLanes & workInProgress.childLanes))\n      )\n        return null;\n    } else return null;\n  if (null !== current && workInProgress.child !== current.child)\n    throw Error(formatProdErrorMessage(153));\n  if (null !== workInProgress.child) {\n    current = workInProgress.child;\n    renderLanes = createWorkInProgress(current, current.pendingProps);\n    workInProgress.child = renderLanes;\n    for (renderLanes.return = workInProgress; null !== current.sibling; )\n      (current = current.sibling),\n        (renderLanes = renderLanes.sibling =\n          createWorkInProgress(current, current.pendingProps)),\n        (renderLanes.return = workInProgress);\n    renderLanes.sibling = null;\n  }\n  return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  if (0 !== (current.lanes & renderLanes)) return !0;\n  current = current.dependencies;\n  return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n  current,\n  workInProgress,\n  renderLanes\n) {\n  switch (workInProgress.tag) {\n    case 3:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n      resetHydrationState();\n      break;\n    case 27:\n    case 5:\n      pushHostContext(workInProgress);\n      break;\n    case 4:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n    case 10:\n      pushProvider(\n        workInProgress,\n        workInProgress.type,\n        workInProgress.memoizedProps.value\n      );\n      break;\n    case 13:\n      var state = workInProgress.memoizedState;\n      if (null !== state) {\n        if (null !== state.dehydrated)\n          return (\n            pushPrimaryTreeSuspenseHandler(workInProgress),\n            (workInProgress.flags |= 128),\n            null\n          );\n        if (0 !== (renderLanes & workInProgress.child.childLanes))\n          return updateSuspenseComponent(current, workInProgress, renderLanes);\n        pushPrimaryTreeSuspenseHandler(workInProgress);\n        current = bailoutOnAlreadyFinishedWork(\n          current,\n          workInProgress,\n          renderLanes\n        );\n        return null !== current ? current.sibling : null;\n      }\n      pushPrimaryTreeSuspenseHandler(workInProgress);\n      break;\n    case 19:\n      var didSuspendBefore = 0 !== (current.flags & 128);\n      state = 0 !== (renderLanes & workInProgress.childLanes);\n      state ||\n        (propagateParentContextChanges(\n          current,\n          workInProgress,\n          renderLanes,\n          !1\n        ),\n        (state = 0 !== (renderLanes & workInProgress.childLanes)));\n      if (didSuspendBefore) {\n        if (state)\n          return updateSuspenseListComponent(\n            current,\n            workInProgress,\n            renderLanes\n          );\n        workInProgress.flags |= 128;\n      }\n      didSuspendBefore = workInProgress.memoizedState;\n      null !== didSuspendBefore &&\n        ((didSuspendBefore.rendering = null),\n        (didSuspendBefore.tail = null),\n        (didSuspendBefore.lastEffect = null));\n      push(suspenseStackCursor, suspenseStackCursor.current);\n      if (state) break;\n      else return null;\n    case 22:\n    case 23:\n      return (\n        (workInProgress.lanes = 0),\n        updateOffscreenComponent(current, workInProgress, renderLanes)\n      );\n    case 24:\n      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n  }\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n  if (null !== current)\n    if (current.memoizedProps !== workInProgress.pendingProps)\n      didReceiveUpdate = !0;\n    else {\n      if (\n        !checkScheduledUpdateOrContext(current, renderLanes) &&\n        0 === (workInProgress.flags & 128)\n      )\n        return (\n          (didReceiveUpdate = !1),\n          attemptEarlyBailoutIfNoScheduledUpdate(\n            current,\n            workInProgress,\n            renderLanes\n          )\n        );\n      didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n    }\n  else\n    (didReceiveUpdate = !1),\n      isHydrating &&\n        0 !== (workInProgress.flags & 1048576) &&\n        pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n  workInProgress.lanes = 0;\n  switch (workInProgress.tag) {\n    case 16:\n      a: {\n        current = workInProgress.pendingProps;\n        var lazyComponent = workInProgress.elementType,\n          init = lazyComponent._init;\n        lazyComponent = init(lazyComponent._payload);\n        workInProgress.type = lazyComponent;\n        if (\"function\" === typeof lazyComponent)\n          shouldConstruct(lazyComponent)\n            ? ((current = resolveClassComponentProps(lazyComponent, current)),\n              (workInProgress.tag = 1),\n              (workInProgress = updateClassComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )))\n            : ((workInProgress.tag = 0),\n              (workInProgress = updateFunctionComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              )));\n        else {\n          if (void 0 !== lazyComponent && null !== lazyComponent)\n            if (\n              ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)\n            ) {\n              workInProgress.tag = 11;\n              workInProgress = updateForwardRef(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            } else if (init === REACT_MEMO_TYPE) {\n              workInProgress.tag = 14;\n              workInProgress = updateMemoComponent(\n                null,\n                workInProgress,\n                lazyComponent,\n                current,\n                renderLanes\n              );\n              break a;\n            }\n          workInProgress =\n            getComponentNameFromType(lazyComponent) || lazyComponent;\n          throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n        }\n      }\n      return workInProgress;\n    case 0:\n      return updateFunctionComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 1:\n      return (\n        (lazyComponent = workInProgress.type),\n        (init = resolveClassComponentProps(\n          lazyComponent,\n          workInProgress.pendingProps\n        )),\n        updateClassComponent(\n          current,\n          workInProgress,\n          lazyComponent,\n          init,\n          renderLanes\n        )\n      );\n    case 3:\n      a: {\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        );\n        if (null === current) throw Error(formatProdErrorMessage(387));\n        lazyComponent = workInProgress.pendingProps;\n        var prevState = workInProgress.memoizedState;\n        init = prevState.element;\n        cloneUpdateQueue(current, workInProgress);\n        processUpdateQueue(workInProgress, lazyComponent, null, renderLanes);\n        var nextState = workInProgress.memoizedState;\n        lazyComponent = nextState.cache;\n        pushProvider(workInProgress, CacheContext, lazyComponent);\n        lazyComponent !== prevState.cache &&\n          propagateContextChanges(\n            workInProgress,\n            [CacheContext],\n            renderLanes,\n            !0\n          );\n        suspendIfUpdateReadFromEntangledAsyncAction();\n        lazyComponent = nextState.element;\n        if (prevState.isDehydrated)\n          if (\n            ((prevState = {\n              element: lazyComponent,\n              isDehydrated: !1,\n              cache: nextState.cache\n            }),\n            (workInProgress.updateQueue.baseState = prevState),\n            (workInProgress.memoizedState = prevState),\n            workInProgress.flags & 256)\n          ) {\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            );\n            break a;\n          } else if (lazyComponent !== init) {\n            init = createCapturedValueAtFiber(\n              Error(formatProdErrorMessage(424)),\n              workInProgress\n            );\n            queueHydrationError(init);\n            workInProgress = mountHostRootWithoutHydrating(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            );\n            break a;\n          } else {\n            current = workInProgress.stateNode.containerInfo;\n            switch (current.nodeType) {\n              case 9:\n                current = current.body;\n                break;\n              default:\n                current =\n                  \"HTML\" === current.nodeName\n                    ? current.ownerDocument.body\n                    : current;\n            }\n            nextHydratableInstance = getNextHydratable(current.firstChild);\n            hydrationParentFiber = workInProgress;\n            isHydrating = !0;\n            hydrationErrors = null;\n            rootOrSingletonContext = !0;\n            renderLanes = mountChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            );\n            for (workInProgress.child = renderLanes; renderLanes; )\n              (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n                (renderLanes = renderLanes.sibling);\n          }\n        else {\n          resetHydrationState();\n          if (lazyComponent === init) {\n            workInProgress = bailoutOnAlreadyFinishedWork(\n              current,\n              workInProgress,\n              renderLanes\n            );\n            break a;\n          }\n          reconcileChildren(\n            current,\n            workInProgress,\n            lazyComponent,\n            renderLanes\n          );\n        }\n        workInProgress = workInProgress.child;\n      }\n      return workInProgress;\n    case 26:\n      return (\n        markRef(current, workInProgress),\n        null === current\n          ? (renderLanes = getResource(\n              workInProgress.type,\n              null,\n              workInProgress.pendingProps,\n              null\n            ))\n            ? (workInProgress.memoizedState = renderLanes)\n            : isHydrating ||\n              ((renderLanes = workInProgress.type),\n              (current = workInProgress.pendingProps),\n              (lazyComponent = getOwnerDocumentFromRootContainer(\n                rootInstanceStackCursor.current\n              ).createElement(renderLanes)),\n              (lazyComponent[internalInstanceKey] = workInProgress),\n              (lazyComponent[internalPropsKey] = current),\n              setInitialProperties(lazyComponent, renderLanes, current),\n              markNodeAsHoistable(lazyComponent),\n              (workInProgress.stateNode = lazyComponent))\n          : (workInProgress.memoizedState = getResource(\n              workInProgress.type,\n              current.memoizedProps,\n              workInProgress.pendingProps,\n              current.memoizedState\n            )),\n        null\n      );\n    case 27:\n      return (\n        pushHostContext(workInProgress),\n        null === current &&\n          isHydrating &&\n          ((lazyComponent = workInProgress.stateNode =\n            resolveSingletonInstance(\n              workInProgress.type,\n              workInProgress.pendingProps,\n              rootInstanceStackCursor.current\n            )),\n          (hydrationParentFiber = workInProgress),\n          (rootOrSingletonContext = !0),\n          (init = nextHydratableInstance),\n          isSingletonScope(workInProgress.type)\n            ? ((previousHydratableOnEnteringScopedSingleton = init),\n              (nextHydratableInstance = getNextHydratable(\n                lazyComponent.firstChild\n              )))\n            : (nextHydratableInstance = init)),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        markRef(current, workInProgress),\n        null === current && (workInProgress.flags |= 4194304),\n        workInProgress.child\n      );\n    case 5:\n      if (null === current && isHydrating) {\n        if ((init = lazyComponent = nextHydratableInstance))\n          (lazyComponent = canHydrateInstance(\n            lazyComponent,\n            workInProgress.type,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== lazyComponent\n              ? ((workInProgress.stateNode = lazyComponent),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = getNextHydratable(\n                  lazyComponent.firstChild\n                )),\n                (rootOrSingletonContext = !1),\n                (init = !0))\n              : (init = !1);\n        init || throwOnHydrationMismatch(workInProgress);\n      }\n      pushHostContext(workInProgress);\n      init = workInProgress.type;\n      prevState = workInProgress.pendingProps;\n      nextState = null !== current ? current.memoizedProps : null;\n      lazyComponent = prevState.children;\n      shouldSetTextContent(init, prevState)\n        ? (lazyComponent = null)\n        : null !== nextState &&\n          shouldSetTextContent(init, nextState) &&\n          (workInProgress.flags |= 32);\n      null !== workInProgress.memoizedState &&\n        ((init = renderWithHooks(\n          current,\n          workInProgress,\n          TransitionAwareHostComponent,\n          null,\n          null,\n          renderLanes\n        )),\n        (HostTransitionContext._currentValue = init));\n      markRef(current, workInProgress);\n      reconcileChildren(current, workInProgress, lazyComponent, renderLanes);\n      return workInProgress.child;\n    case 6:\n      if (null === current && isHydrating) {\n        if ((current = renderLanes = nextHydratableInstance))\n          (renderLanes = canHydrateTextInstance(\n            renderLanes,\n            workInProgress.pendingProps,\n            rootOrSingletonContext\n          )),\n            null !== renderLanes\n              ? ((workInProgress.stateNode = renderLanes),\n                (hydrationParentFiber = workInProgress),\n                (nextHydratableInstance = null),\n                (current = !0))\n              : (current = !1);\n        current || throwOnHydrationMismatch(workInProgress);\n      }\n      return null;\n    case 13:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n    case 4:\n      return (\n        pushHostContainer(\n          workInProgress,\n          workInProgress.stateNode.containerInfo\n        ),\n        (lazyComponent = workInProgress.pendingProps),\n        null === current\n          ? (workInProgress.child = reconcileChildFibers(\n              workInProgress,\n              null,\n              lazyComponent,\n              renderLanes\n            ))\n          : reconcileChildren(\n              current,\n              workInProgress,\n              lazyComponent,\n              renderLanes\n            ),\n        workInProgress.child\n      );\n    case 11:\n      return updateForwardRef(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 7:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 8:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 12:\n      return (\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 10:\n      return (\n        (lazyComponent = workInProgress.pendingProps),\n        pushProvider(workInProgress, workInProgress.type, lazyComponent.value),\n        reconcileChildren(\n          current,\n          workInProgress,\n          lazyComponent.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 9:\n      return (\n        (init = workInProgress.type._context),\n        (lazyComponent = workInProgress.pendingProps.children),\n        prepareToReadContext(workInProgress),\n        (init = readContext(init)),\n        (lazyComponent = lazyComponent(init)),\n        (workInProgress.flags |= 1),\n        reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n        workInProgress.child\n      );\n    case 14:\n      return updateMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 15:\n      return updateSimpleMemoComponent(\n        current,\n        workInProgress,\n        workInProgress.type,\n        workInProgress.pendingProps,\n        renderLanes\n      );\n    case 19:\n      return updateSuspenseListComponent(current, workInProgress, renderLanes);\n    case 31:\n      return (\n        (lazyComponent = workInProgress.pendingProps),\n        (renderLanes = workInProgress.mode),\n        (lazyComponent = {\n          mode: lazyComponent.mode,\n          children: lazyComponent.children\n        }),\n        null === current\n          ? ((renderLanes = mountWorkInProgressOffscreenFiber(\n              lazyComponent,\n              renderLanes\n            )),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes))\n          : ((renderLanes = createWorkInProgress(current.child, lazyComponent)),\n            (renderLanes.ref = workInProgress.ref),\n            (workInProgress.child = renderLanes),\n            (renderLanes.return = workInProgress),\n            (workInProgress = renderLanes)),\n        workInProgress\n      );\n    case 22:\n      return updateOffscreenComponent(current, workInProgress, renderLanes);\n    case 24:\n      return (\n        prepareToReadContext(workInProgress),\n        (lazyComponent = readContext(CacheContext)),\n        null === current\n          ? ((init = peekCacheFromPool()),\n            null === init &&\n              ((init = workInProgressRoot),\n              (prevState = createCache()),\n              (init.pooledCache = prevState),\n              prevState.refCount++,\n              null !== prevState && (init.pooledCacheLanes |= renderLanes),\n              (init = prevState)),\n            (workInProgress.memoizedState = {\n              parent: lazyComponent,\n              cache: init\n            }),\n            initializeUpdateQueue(workInProgress),\n            pushProvider(workInProgress, CacheContext, init))\n          : (0 !== (current.lanes & renderLanes) &&\n              (cloneUpdateQueue(current, workInProgress),\n              processUpdateQueue(workInProgress, null, null, renderLanes),\n              suspendIfUpdateReadFromEntangledAsyncAction()),\n            (init = current.memoizedState),\n            (prevState = workInProgress.memoizedState),\n            init.parent !== lazyComponent\n              ? ((init = { parent: lazyComponent, cache: lazyComponent }),\n                (workInProgress.memoizedState = init),\n                0 === workInProgress.lanes &&\n                  (workInProgress.memoizedState =\n                    workInProgress.updateQueue.baseState =\n                      init),\n                pushProvider(workInProgress, CacheContext, lazyComponent))\n              : ((lazyComponent = prevState.cache),\n                pushProvider(workInProgress, CacheContext, lazyComponent),\n                lazyComponent !== init.cache &&\n                  propagateContextChanges(\n                    workInProgress,\n                    [CacheContext],\n                    renderLanes,\n                    !0\n                  ))),\n        reconcileChildren(\n          current,\n          workInProgress,\n          workInProgress.pendingProps.children,\n          renderLanes\n        ),\n        workInProgress.child\n      );\n    case 29:\n      throw workInProgress.pendingProps;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n  workInProgress.flags |= 4;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n  if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n    workInProgress.flags &= -16777217;\n  else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {\n    resource = suspenseHandlerStackCursor.current;\n    if (\n      null !== resource &&\n      ((workInProgressRootRenderLanes & 4194048) ===\n      workInProgressRootRenderLanes\n        ? null !== shellBoundary\n        : ((workInProgressRootRenderLanes & 62914560) !==\n            workInProgressRootRenderLanes &&\n            0 === (workInProgressRootRenderLanes & 536870912)) ||\n          resource !== shellBoundary)\n    )\n      throw (\n        ((suspendedThenable = noopSuspenseyCommitThenable),\n        SuspenseyCommitException)\n      );\n    workInProgress.flags |= 8192;\n  }\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n  null !== retryQueue && (workInProgress.flags |= 4);\n  workInProgress.flags & 16384 &&\n    ((retryQueue =\n      22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n    (workInProgress.lanes |= retryQueue),\n    (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (!isHydrating)\n    switch (renderState.tailMode) {\n      case \"hidden\":\n        hasRenderedATailFallback = renderState.tail;\n        for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n          null !== hasRenderedATailFallback.alternate &&\n            (lastTailNode = hasRenderedATailFallback),\n            (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n        null === lastTailNode\n          ? (renderState.tail = null)\n          : (lastTailNode.sibling = null);\n        break;\n      case \"collapsed\":\n        lastTailNode = renderState.tail;\n        for (var lastTailNode$113 = null; null !== lastTailNode; )\n          null !== lastTailNode.alternate && (lastTailNode$113 = lastTailNode),\n            (lastTailNode = lastTailNode.sibling);\n        null === lastTailNode$113\n          ? hasRenderedATailFallback || null === renderState.tail\n            ? (renderState.tail = null)\n            : (renderState.tail.sibling = null)\n          : (lastTailNode$113.sibling = null);\n    }\n}\nfunction bubbleProperties(completedWork) {\n  var didBailout =\n      null !== completedWork.alternate &&\n      completedWork.alternate.child === completedWork.child,\n    newChildLanes = 0,\n    subtreeFlags = 0;\n  if (didBailout)\n    for (var child$114 = completedWork.child; null !== child$114; )\n      (newChildLanes |= child$114.lanes | child$114.childLanes),\n        (subtreeFlags |= child$114.subtreeFlags & 65011712),\n        (subtreeFlags |= child$114.flags & 65011712),\n        (child$114.return = completedWork),\n        (child$114 = child$114.sibling);\n  else\n    for (child$114 = completedWork.child; null !== child$114; )\n      (newChildLanes |= child$114.lanes | child$114.childLanes),\n        (subtreeFlags |= child$114.subtreeFlags),\n        (subtreeFlags |= child$114.flags),\n        (child$114.return = completedWork),\n        (child$114 = child$114.sibling);\n  completedWork.subtreeFlags |= subtreeFlags;\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps;\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 31:\n    case 16:\n    case 15:\n    case 0:\n    case 11:\n    case 7:\n    case 8:\n    case 12:\n    case 9:\n    case 14:\n      return bubbleProperties(workInProgress), null;\n    case 1:\n      return bubbleProperties(workInProgress), null;\n    case 3:\n      renderLanes = workInProgress.stateNode;\n      newProps = null;\n      null !== current && (newProps = current.memoizedState.cache);\n      workInProgress.memoizedState.cache !== newProps &&\n        (workInProgress.flags |= 2048);\n      popProvider(CacheContext);\n      popHostContainer();\n      renderLanes.pendingContext &&\n        ((renderLanes.context = renderLanes.pendingContext),\n        (renderLanes.pendingContext = null));\n      if (null === current || null === current.child)\n        popHydrationState(workInProgress)\n          ? markUpdate(workInProgress)\n          : null === current ||\n            (current.memoizedState.isDehydrated &&\n              0 === (workInProgress.flags & 256)) ||\n            ((workInProgress.flags |= 1024),\n            upgradeHydrationErrorsToRecoverable());\n      bubbleProperties(workInProgress);\n      return null;\n    case 26:\n      return (\n        (renderLanes = workInProgress.memoizedState),\n        null === current\n          ? (markUpdate(workInProgress),\n            null !== renderLanes\n              ? (bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217)))\n          : renderLanes\n            ? renderLanes !== current.memoizedState\n              ? (markUpdate(workInProgress),\n                bubbleProperties(workInProgress),\n                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n              : (bubbleProperties(workInProgress),\n                (workInProgress.flags &= -16777217))\n            : (current.memoizedProps !== newProps && markUpdate(workInProgress),\n              bubbleProperties(workInProgress),\n              (workInProgress.flags &= -16777217)),\n        null\n      );\n    case 27:\n      popHostContext(workInProgress);\n      renderLanes = rootInstanceStackCursor.current;\n      var type = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        popHydrationState(workInProgress)\n          ? prepareToHydrateHostInstance(workInProgress, current)\n          : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n            (workInProgress.stateNode = current),\n            markUpdate(workInProgress));\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 5:\n      popHostContext(workInProgress);\n      renderLanes = workInProgress.type;\n      if (null !== current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (!newProps) {\n          if (null === workInProgress.stateNode)\n            throw Error(formatProdErrorMessage(166));\n          bubbleProperties(workInProgress);\n          return null;\n        }\n        current = contextStackCursor.current;\n        if (popHydrationState(workInProgress))\n          prepareToHydrateHostInstance(workInProgress, current);\n        else {\n          type = getOwnerDocumentFromRootContainer(\n            rootInstanceStackCursor.current\n          );\n          switch (current) {\n            case 1:\n              current = type.createElementNS(\n                \"http://www.w3.org/2000/svg\",\n                renderLanes\n              );\n              break;\n            case 2:\n              current = type.createElementNS(\n                \"http://www.w3.org/1998/Math/MathML\",\n                renderLanes\n              );\n              break;\n            default:\n              switch (renderLanes) {\n                case \"svg\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/2000/svg\",\n                    renderLanes\n                  );\n                  break;\n                case \"math\":\n                  current = type.createElementNS(\n                    \"http://www.w3.org/1998/Math/MathML\",\n                    renderLanes\n                  );\n                  break;\n                case \"script\":\n                  current = type.createElement(\"div\");\n                  current.innerHTML = \"<script>\\x3c/script>\";\n                  current = current.removeChild(current.firstChild);\n                  break;\n                case \"select\":\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(\"select\", { is: newProps.is })\n                      : type.createElement(\"select\");\n                  newProps.multiple\n                    ? (current.multiple = !0)\n                    : newProps.size && (current.size = newProps.size);\n                  break;\n                default:\n                  current =\n                    \"string\" === typeof newProps.is\n                      ? type.createElement(renderLanes, { is: newProps.is })\n                      : type.createElement(renderLanes);\n              }\n          }\n          current[internalInstanceKey] = workInProgress;\n          current[internalPropsKey] = newProps;\n          a: for (type = workInProgress.child; null !== type; ) {\n            if (5 === type.tag || 6 === type.tag)\n              current.appendChild(type.stateNode);\n            else if (4 !== type.tag && 27 !== type.tag && null !== type.child) {\n              type.child.return = type;\n              type = type.child;\n              continue;\n            }\n            if (type === workInProgress) break a;\n            for (; null === type.sibling; ) {\n              if (null === type.return || type.return === workInProgress)\n                break a;\n              type = type.return;\n            }\n            type.sibling.return = type.return;\n            type = type.sibling;\n          }\n          workInProgress.stateNode = current;\n          a: switch (\n            (setInitialProperties(current, renderLanes, newProps), renderLanes)\n          ) {\n            case \"button\":\n            case \"input\":\n            case \"select\":\n            case \"textarea\":\n              current = !!newProps.autoFocus;\n              break a;\n            case \"img\":\n              current = !0;\n              break a;\n            default:\n              current = !1;\n          }\n          current && markUpdate(workInProgress);\n        }\n      }\n      bubbleProperties(workInProgress);\n      workInProgress.flags &= -16777217;\n      return null;\n    case 6:\n      if (current && null != workInProgress.stateNode)\n        current.memoizedProps !== newProps && markUpdate(workInProgress);\n      else {\n        if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n          throw Error(formatProdErrorMessage(166));\n        current = rootInstanceStackCursor.current;\n        if (popHydrationState(workInProgress)) {\n          current = workInProgress.stateNode;\n          renderLanes = workInProgress.memoizedProps;\n          newProps = null;\n          type = hydrationParentFiber;\n          if (null !== type)\n            switch (type.tag) {\n              case 27:\n              case 5:\n                newProps = type.memoizedProps;\n            }\n          current[internalInstanceKey] = workInProgress;\n          current =\n            current.nodeValue === renderLanes ||\n            (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n            checkForUnmatchedText(current.nodeValue, renderLanes)\n              ? !0\n              : !1;\n          current || throwOnHydrationMismatch(workInProgress);\n        } else\n          (current =\n            getOwnerDocumentFromRootContainer(current).createTextNode(\n              newProps\n            )),\n            (current[internalInstanceKey] = workInProgress),\n            (workInProgress.stateNode = current);\n      }\n      bubbleProperties(workInProgress);\n      return null;\n    case 13:\n      newProps = workInProgress.memoizedState;\n      if (\n        null === current ||\n        (null !== current.memoizedState &&\n          null !== current.memoizedState.dehydrated)\n      ) {\n        type = popHydrationState(workInProgress);\n        if (null !== newProps && null !== newProps.dehydrated) {\n          if (null === current) {\n            if (!type) throw Error(formatProdErrorMessage(318));\n            type = workInProgress.memoizedState;\n            type = null !== type ? type.dehydrated : null;\n            if (!type) throw Error(formatProdErrorMessage(317));\n            type[internalInstanceKey] = workInProgress;\n          } else\n            resetHydrationState(),\n              0 === (workInProgress.flags & 128) &&\n                (workInProgress.memoizedState = null),\n              (workInProgress.flags |= 4);\n          bubbleProperties(workInProgress);\n          type = !1;\n        } else\n          (type = upgradeHydrationErrorsToRecoverable()),\n            null !== current &&\n              null !== current.memoizedState &&\n              (current.memoizedState.hydrationErrors = type),\n            (type = !0);\n        if (!type) {\n          if (workInProgress.flags & 256)\n            return popSuspenseHandler(workInProgress), workInProgress;\n          popSuspenseHandler(workInProgress);\n          return null;\n        }\n      }\n      popSuspenseHandler(workInProgress);\n      if (0 !== (workInProgress.flags & 128))\n        return (workInProgress.lanes = renderLanes), workInProgress;\n      renderLanes = null !== newProps;\n      current = null !== current && null !== current.memoizedState;\n      if (renderLanes) {\n        newProps = workInProgress.child;\n        type = null;\n        null !== newProps.alternate &&\n          null !== newProps.alternate.memoizedState &&\n          null !== newProps.alternate.memoizedState.cachePool &&\n          (type = newProps.alternate.memoizedState.cachePool.pool);\n        var cache$127 = null;\n        null !== newProps.memoizedState &&\n          null !== newProps.memoizedState.cachePool &&\n          (cache$127 = newProps.memoizedState.cachePool.pool);\n        cache$127 !== type && (newProps.flags |= 2048);\n      }\n      renderLanes !== current &&\n        renderLanes &&\n        (workInProgress.child.flags |= 8192);\n      scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n      bubbleProperties(workInProgress);\n      return null;\n    case 4:\n      return (\n        popHostContainer(),\n        null === current &&\n          listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 10:\n      return (\n        popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n      );\n    case 19:\n      pop(suspenseStackCursor);\n      type = workInProgress.memoizedState;\n      if (null === type) return bubbleProperties(workInProgress), null;\n      newProps = 0 !== (workInProgress.flags & 128);\n      cache$127 = type.rendering;\n      if (null === cache$127)\n        if (newProps) cutOffTailIfNeeded(type, !1);\n        else {\n          if (\n            0 !== workInProgressRootExitStatus ||\n            (null !== current && 0 !== (current.flags & 128))\n          )\n            for (current = workInProgress.child; null !== current; ) {\n              cache$127 = findFirstSuspended(current);\n              if (null !== cache$127) {\n                workInProgress.flags |= 128;\n                cutOffTailIfNeeded(type, !1);\n                current = cache$127.updateQueue;\n                workInProgress.updateQueue = current;\n                scheduleRetryEffect(workInProgress, current);\n                workInProgress.subtreeFlags = 0;\n                current = renderLanes;\n                for (renderLanes = workInProgress.child; null !== renderLanes; )\n                  resetWorkInProgress(renderLanes, current),\n                    (renderLanes = renderLanes.sibling);\n                push(\n                  suspenseStackCursor,\n                  (suspenseStackCursor.current & 1) | 2\n                );\n                return workInProgress.child;\n              }\n              current = current.sibling;\n            }\n          null !== type.tail &&\n            now() > workInProgressRootRenderTargetTime &&\n            ((workInProgress.flags |= 128),\n            (newProps = !0),\n            cutOffTailIfNeeded(type, !1),\n            (workInProgress.lanes = 4194304));\n        }\n      else {\n        if (!newProps)\n          if (((current = findFirstSuspended(cache$127)), null !== current)) {\n            if (\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              (current = current.updateQueue),\n              (workInProgress.updateQueue = current),\n              scheduleRetryEffect(workInProgress, current),\n              cutOffTailIfNeeded(type, !0),\n              null === type.tail &&\n                \"hidden\" === type.tailMode &&\n                !cache$127.alternate &&\n                !isHydrating)\n            )\n              return bubbleProperties(workInProgress), null;\n          } else\n            2 * now() - type.renderingStartTime >\n              workInProgressRootRenderTargetTime &&\n              536870912 !== renderLanes &&\n              ((workInProgress.flags |= 128),\n              (newProps = !0),\n              cutOffTailIfNeeded(type, !1),\n              (workInProgress.lanes = 4194304));\n        type.isBackwards\n          ? ((cache$127.sibling = workInProgress.child),\n            (workInProgress.child = cache$127))\n          : ((current = type.last),\n            null !== current\n              ? (current.sibling = cache$127)\n              : (workInProgress.child = cache$127),\n            (type.last = cache$127));\n      }\n      if (null !== type.tail)\n        return (\n          (workInProgress = type.tail),\n          (type.rendering = workInProgress),\n          (type.tail = workInProgress.sibling),\n          (type.renderingStartTime = now()),\n          (workInProgress.sibling = null),\n          (current = suspenseStackCursor.current),\n          push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n          workInProgress\n        );\n      bubbleProperties(workInProgress);\n      return null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        (newProps = null !== workInProgress.memoizedState),\n        null !== current\n          ? (null !== current.memoizedState) !== newProps &&\n            (workInProgress.flags |= 8192)\n          : newProps && (workInProgress.flags |= 8192),\n        newProps\n          ? 0 !== (renderLanes & 536870912) &&\n            0 === (workInProgress.flags & 128) &&\n            (bubbleProperties(workInProgress),\n            workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n          : bubbleProperties(workInProgress),\n        (renderLanes = workInProgress.updateQueue),\n        null !== renderLanes &&\n          scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n        (renderLanes = null),\n        null !== current &&\n          null !== current.memoizedState &&\n          null !== current.memoizedState.cachePool &&\n          (renderLanes = current.memoizedState.cachePool.pool),\n        (newProps = null),\n        null !== workInProgress.memoizedState &&\n          null !== workInProgress.memoizedState.cachePool &&\n          (newProps = workInProgress.memoizedState.cachePool.pool),\n        newProps !== renderLanes && (workInProgress.flags |= 2048),\n        null !== current && pop(resumedCache),\n        null\n      );\n    case 24:\n      return (\n        (renderLanes = null),\n        null !== current && (renderLanes = current.memoizedState.cache),\n        workInProgress.memoizedState.cache !== renderLanes &&\n          (workInProgress.flags |= 2048),\n        popProvider(CacheContext),\n        bubbleProperties(workInProgress),\n        null\n      );\n    case 25:\n      return null;\n    case 30:\n      return null;\n  }\n  throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n  popTreeContext(workInProgress);\n  switch (workInProgress.tag) {\n    case 1:\n      return (\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 3:\n      return (\n        popProvider(CacheContext),\n        popHostContainer(),\n        (current = workInProgress.flags),\n        0 !== (current & 65536) && 0 === (current & 128)\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 26:\n    case 27:\n    case 5:\n      return popHostContext(workInProgress), null;\n    case 13:\n      popSuspenseHandler(workInProgress);\n      current = workInProgress.memoizedState;\n      if (null !== current && null !== current.dehydrated) {\n        if (null === workInProgress.alternate)\n          throw Error(formatProdErrorMessage(340));\n        resetHydrationState();\n      }\n      current = workInProgress.flags;\n      return current & 65536\n        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n        : null;\n    case 19:\n      return pop(suspenseStackCursor), null;\n    case 4:\n      return popHostContainer(), null;\n    case 10:\n      return popProvider(workInProgress.type), null;\n    case 22:\n    case 23:\n      return (\n        popSuspenseHandler(workInProgress),\n        popHiddenContext(),\n        null !== current && pop(resumedCache),\n        (current = workInProgress.flags),\n        current & 65536\n          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n          : null\n      );\n    case 24:\n      return popProvider(CacheContext), null;\n    case 25:\n      return null;\n    default:\n      return null;\n  }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n  popTreeContext(interruptedWork);\n  switch (interruptedWork.tag) {\n    case 3:\n      popProvider(CacheContext);\n      popHostContainer();\n      break;\n    case 26:\n    case 27:\n    case 5:\n      popHostContext(interruptedWork);\n      break;\n    case 4:\n      popHostContainer();\n      break;\n    case 13:\n      popSuspenseHandler(interruptedWork);\n      break;\n    case 19:\n      pop(suspenseStackCursor);\n      break;\n    case 10:\n      popProvider(interruptedWork.type);\n      break;\n    case 22:\n    case 23:\n      popSuspenseHandler(interruptedWork);\n      popHiddenContext();\n      null !== current && pop(resumedCache);\n      break;\n    case 24:\n      popProvider(CacheContext);\n  }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          lastEffect = void 0;\n          var create = updateQueue.create,\n            inst = updateQueue.inst;\n          lastEffect = create();\n          inst.destroy = lastEffect;\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHookEffectListUnmount(\n  flags,\n  finishedWork,\n  nearestMountedAncestor$jscomp$0\n) {\n  try {\n    var updateQueue = finishedWork.updateQueue,\n      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n    if (null !== lastEffect) {\n      var firstEffect = lastEffect.next;\n      updateQueue = firstEffect;\n      do {\n        if ((updateQueue.tag & flags) === flags) {\n          var inst = updateQueue.inst,\n            destroy = inst.destroy;\n          if (void 0 !== destroy) {\n            inst.destroy = void 0;\n            lastEffect = finishedWork;\n            var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n              destroy_ = destroy;\n            try {\n              destroy_();\n            } catch (error) {\n              captureCommitPhaseError(\n                lastEffect,\n                nearestMountedAncestor,\n                error\n              );\n            }\n          }\n        }\n        updateQueue = updateQueue.next;\n      } while (updateQueue !== firstEffect);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitClassCallbacks(finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  if (null !== updateQueue) {\n    var instance = finishedWork.stateNode;\n    try {\n      commitCallbacks(updateQueue, instance);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n  }\n}\nfunction safelyCallComponentWillUnmount(\n  current,\n  nearestMountedAncestor,\n  instance\n) {\n  instance.props = resolveClassComponentProps(\n    current.type,\n    current.memoizedProps\n  );\n  instance.state = current.memoizedState;\n  try {\n    instance.componentWillUnmount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    var ref = current.ref;\n    if (null !== ref) {\n      switch (current.tag) {\n        case 26:\n        case 27:\n        case 5:\n          var instanceToUse = current.stateNode;\n          break;\n        case 30:\n          instanceToUse = current.stateNode;\n          break;\n        default:\n          instanceToUse = current.stateNode;\n      }\n      \"function\" === typeof ref\n        ? (current.refCleanup = ref(instanceToUse))\n        : (ref.current = instanceToUse);\n    }\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref,\n    refCleanup = current.refCleanup;\n  if (null !== ref)\n    if (\"function\" === typeof refCleanup)\n      try {\n        refCleanup();\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      } finally {\n        (current.refCleanup = null),\n          (current = current.alternate),\n          null != current && (current.refCleanup = null);\n      }\n    else if (\"function\" === typeof ref)\n      try {\n        ref(null);\n      } catch (error$143) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error$143);\n      }\n    else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n  var type = finishedWork.type,\n    props = finishedWork.memoizedProps,\n    instance = finishedWork.stateNode;\n  try {\n    a: switch (type) {\n      case \"button\":\n      case \"input\":\n      case \"select\":\n      case \"textarea\":\n        props.autoFocus && instance.focus();\n        break a;\n      case \"img\":\n        props.src\n          ? (instance.src = props.src)\n          : props.srcSet && (instance.srcset = props.srcSet);\n    }\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n  try {\n    var domElement = finishedWork.stateNode;\n    updateProperties(domElement, finishedWork.type, oldProps, newProps);\n    domElement[internalPropsKey] = newProps;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nfunction isHostParent(fiber) {\n  return (\n    5 === fiber.tag ||\n    3 === fiber.tag ||\n    26 === fiber.tag ||\n    (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n    4 === fiber.tag\n  );\n}\nfunction getHostSibling(fiber) {\n  a: for (;;) {\n    for (; null === fiber.sibling; ) {\n      if (null === fiber.return || isHostParent(fiber.return)) return null;\n      fiber = fiber.return;\n    }\n    fiber.sibling.return = fiber.return;\n    for (\n      fiber = fiber.sibling;\n      5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n    ) {\n      if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n      if (fiber.flags & 2) continue a;\n      if (null === fiber.child || 4 === fiber.tag) continue a;\n      else (fiber.child.return = fiber), (fiber = fiber.child);\n    }\n    if (!(fiber.flags & 2)) return fiber.stateNode;\n  }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before\n        ? (9 === parent.nodeType\n            ? parent.body\n            : \"HTML\" === parent.nodeName\n              ? parent.ownerDocument.body\n              : parent\n          ).insertBefore(node, before)\n        : ((before =\n            9 === parent.nodeType\n              ? parent.body\n              : \"HTML\" === parent.nodeName\n                ? parent.ownerDocument.body\n                : parent),\n          before.appendChild(node),\n          (parent = parent._reactRootContainer),\n          (null !== parent && void 0 !== parent) ||\n            null !== before.onclick ||\n            (before.onclick = noop$1));\n  else if (\n    4 !== tag &&\n    (27 === tag &&\n      isSingletonScope(node.type) &&\n      ((parent = node.stateNode), (before = null)),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n        (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag;\n  if (5 === tag || 6 === tag)\n    (node = node.stateNode),\n      before ? parent.insertBefore(node, before) : parent.appendChild(node);\n  else if (\n    4 !== tag &&\n    (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n    (node = node.child),\n    null !== node)\n  )\n    for (\n      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n      null !== node;\n\n    )\n      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n  var singleton = finishedWork.stateNode,\n    props = finishedWork.memoizedProps;\n  try {\n    for (\n      var type = finishedWork.type, attributes = singleton.attributes;\n      attributes.length;\n\n    )\n      singleton.removeAttributeNode(attributes[0]);\n    setInitialProperties(singleton, type, props);\n    singleton[internalInstanceKey] = finishedWork;\n    singleton[internalPropsKey] = props;\n  } catch (error) {\n    captureCommitPhaseError(finishedWork, finishedWork.return, error);\n  }\n}\nvar offscreenSubtreeIsHidden = !1,\n  offscreenSubtreeWasHidden = !1,\n  needsFormReset = !1,\n  PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n  nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  root = root.containerInfo;\n  eventsEnabled = _enabled;\n  root = getActiveElementDeep(root);\n  if (hasSelectionCapabilities(root)) {\n    if (\"selectionStart\" in root)\n      var JSCompiler_temp = {\n        start: root.selectionStart,\n        end: root.selectionEnd\n      };\n    else\n      a: {\n        JSCompiler_temp =\n          ((JSCompiler_temp = root.ownerDocument) &&\n            JSCompiler_temp.defaultView) ||\n          window;\n        var selection =\n          JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n        if (selection && 0 !== selection.rangeCount) {\n          JSCompiler_temp = selection.anchorNode;\n          var anchorOffset = selection.anchorOffset,\n            focusNode = selection.focusNode;\n          selection = selection.focusOffset;\n          try {\n            JSCompiler_temp.nodeType, focusNode.nodeType;\n          } catch (e$20) {\n            JSCompiler_temp = null;\n            break a;\n          }\n          var length = 0,\n            start = -1,\n            end = -1,\n            indexWithinAnchor = 0,\n            indexWithinFocus = 0,\n            node = root,\n            parentNode = null;\n          b: for (;;) {\n            for (var next; ; ) {\n              node !== JSCompiler_temp ||\n                (0 !== anchorOffset && 3 !== node.nodeType) ||\n                (start = length + anchorOffset);\n              node !== focusNode ||\n                (0 !== selection && 3 !== node.nodeType) ||\n                (end = length + selection);\n              3 === node.nodeType && (length += node.nodeValue.length);\n              if (null === (next = node.firstChild)) break;\n              parentNode = node;\n              node = next;\n            }\n            for (;;) {\n              if (node === root) break b;\n              parentNode === JSCompiler_temp &&\n                ++indexWithinAnchor === anchorOffset &&\n                (start = length);\n              parentNode === focusNode &&\n                ++indexWithinFocus === selection &&\n                (end = length);\n              if (null !== (next = node.nextSibling)) break;\n              node = parentNode;\n              parentNode = node.parentNode;\n            }\n            node = next;\n          }\n          JSCompiler_temp =\n            -1 === start || -1 === end ? null : { start: start, end: end };\n        } else JSCompiler_temp = null;\n      }\n    JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n  } else JSCompiler_temp = null;\n  selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n  _enabled = !1;\n  for (nextEffect = firstChild; null !== nextEffect; )\n    if (\n      ((firstChild = nextEffect),\n      (root = firstChild.child),\n      0 !== (firstChild.subtreeFlags & 1024) && null !== root)\n    )\n      (root.return = firstChild), (nextEffect = root);\n    else\n      for (; null !== nextEffect; ) {\n        firstChild = nextEffect;\n        focusNode = firstChild.alternate;\n        root = firstChild.flags;\n        switch (firstChild.tag) {\n          case 0:\n            break;\n          case 11:\n          case 15:\n            break;\n          case 1:\n            if (0 !== (root & 1024) && null !== focusNode) {\n              root = void 0;\n              JSCompiler_temp = firstChild;\n              anchorOffset = focusNode.memoizedProps;\n              focusNode = focusNode.memoizedState;\n              selection = JSCompiler_temp.stateNode;\n              try {\n                var resolvedPrevProps = resolveClassComponentProps(\n                  JSCompiler_temp.type,\n                  anchorOffset,\n                  JSCompiler_temp.elementType === JSCompiler_temp.type\n                );\n                root = selection.getSnapshotBeforeUpdate(\n                  resolvedPrevProps,\n                  focusNode\n                );\n                selection.__reactInternalSnapshotBeforeUpdate = root;\n              } catch (error) {\n                captureCommitPhaseError(\n                  JSCompiler_temp,\n                  JSCompiler_temp.return,\n                  error\n                );\n              }\n            }\n            break;\n          case 3:\n            if (0 !== (root & 1024))\n              if (\n                ((root = firstChild.stateNode.containerInfo),\n                (JSCompiler_temp = root.nodeType),\n                9 === JSCompiler_temp)\n              )\n                clearContainerSparingly(root);\n              else if (1 === JSCompiler_temp)\n                switch (root.nodeName) {\n                  case \"HEAD\":\n                  case \"HTML\":\n                  case \"BODY\":\n                    clearContainerSparingly(root);\n                    break;\n                  default:\n                    root.textContent = \"\";\n                }\n            break;\n          case 5:\n          case 26:\n          case 27:\n          case 6:\n          case 4:\n          case 17:\n            break;\n          default:\n            if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n        }\n        root = firstChild.sibling;\n        if (null !== root) {\n          root.return = firstChild.return;\n          nextEffect = root;\n          break;\n        }\n        nextEffect = firstChild.return;\n      }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitHookEffectListMount(5, finishedWork);\n      break;\n    case 1:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (flags & 4)\n        if (((finishedRoot = finishedWork.stateNode), null === current))\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        else {\n          var prevProps = resolveClassComponentProps(\n            finishedWork.type,\n            current.memoizedProps\n          );\n          current = current.memoizedState;\n          try {\n            finishedRoot.componentDidUpdate(\n              prevProps,\n              current,\n              finishedRoot.__reactInternalSnapshotBeforeUpdate\n            );\n          } catch (error$142) {\n            captureCommitPhaseError(\n              finishedWork,\n              finishedWork.return,\n              error$142\n            );\n          }\n        }\n      flags & 64 && commitClassCallbacks(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      if (\n        flags & 64 &&\n        ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n      ) {\n        current = null;\n        if (null !== finishedWork.child)\n          switch (finishedWork.child.tag) {\n            case 27:\n            case 5:\n              current = finishedWork.child.stateNode;\n              break;\n            case 1:\n              current = finishedWork.child.stateNode;\n          }\n        try {\n          commitCallbacks(finishedRoot, current);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 27:\n      null === current &&\n        flags & 4 &&\n        commitHostSingletonAcquisition(finishedWork);\n    case 26:\n    case 5:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      null === current && flags & 4 && commitHostMount(finishedWork);\n      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n      break;\n    case 12:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n      flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n      flags & 64 &&\n        ((finishedRoot = finishedWork.memoizedState),\n        null !== finishedRoot &&\n          ((finishedRoot = finishedRoot.dehydrated),\n          null !== finishedRoot &&\n            ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n              null,\n              finishedWork\n            )),\n            registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n      break;\n    case 22:\n      flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n      if (!flags) {\n        current =\n          (null !== current && null !== current.memoizedState) ||\n          offscreenSubtreeWasHidden;\n        prevProps = offscreenSubtreeIsHidden;\n        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n        offscreenSubtreeIsHidden = flags;\n        (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n          ? recursivelyTraverseReappearLayoutEffects(\n              finishedRoot,\n              finishedWork,\n              0 !== (finishedWork.subtreeFlags & 8772)\n            )\n          : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n        offscreenSubtreeIsHidden = prevProps;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      }\n      break;\n    case 30:\n      break;\n    default:\n      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n  }\n}\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n  null !== alternate &&\n    ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n  fiber.child = null;\n  fiber.deletions = null;\n  fiber.sibling = null;\n  5 === fiber.tag &&\n    ((alternate = fiber.stateNode),\n    null !== alternate && detachDeletedInstance(alternate));\n  fiber.stateNode = null;\n  fiber.return = null;\n  fiber.dependencies = null;\n  fiber.memoizedProps = null;\n  fiber.memoizedState = null;\n  fiber.pendingProps = null;\n  fiber.stateNode = null;\n  fiber.updateQueue = null;\n}\nvar hostParent = null,\n  hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n  finishedRoot,\n  nearestMountedAncestor,\n  parent\n) {\n  for (parent = parent.child; null !== parent; )\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n      (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n  finishedRoot,\n  nearestMountedAncestor,\n  deletedFiber\n) {\n  if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n    } catch (err) {}\n  switch (deletedFiber.tag) {\n    case 26:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      deletedFiber.memoizedState\n        ? deletedFiber.memoizedState.count--\n        : deletedFiber.stateNode &&\n          ((deletedFiber = deletedFiber.stateNode),\n          deletedFiber.parentNode.removeChild(deletedFiber));\n      break;\n    case 27:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n      var prevHostParent = hostParent,\n        prevHostParentIsContainer = hostParentIsContainer;\n      isSingletonScope(deletedFiber.type) &&\n        ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      releaseSingletonInstance(deletedFiber.stateNode);\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 5:\n      offscreenSubtreeWasHidden ||\n        safelyDetachRef(deletedFiber, nearestMountedAncestor);\n    case 6:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = null;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      if (null !== hostParent)\n        if (hostParentIsContainer)\n          try {\n            (9 === hostParent.nodeType\n              ? hostParent.body\n              : \"HTML\" === hostParent.nodeName\n                ? hostParent.ownerDocument.body\n                : hostParent\n            ).removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n        else\n          try {\n            hostParent.removeChild(deletedFiber.stateNode);\n          } catch (error) {\n            captureCommitPhaseError(\n              deletedFiber,\n              nearestMountedAncestor,\n              error\n            );\n          }\n      break;\n    case 18:\n      null !== hostParent &&\n        (hostParentIsContainer\n          ? ((finishedRoot = hostParent),\n            clearSuspenseBoundary(\n              9 === finishedRoot.nodeType\n                ? finishedRoot.body\n                : \"HTML\" === finishedRoot.nodeName\n                  ? finishedRoot.ownerDocument.body\n                  : finishedRoot,\n              deletedFiber.stateNode\n            ),\n            retryIfBlockedOn(finishedRoot))\n          : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));\n      break;\n    case 4:\n      prevHostParent = hostParent;\n      prevHostParentIsContainer = hostParentIsContainer;\n      hostParent = deletedFiber.stateNode.containerInfo;\n      hostParentIsContainer = !0;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      hostParent = prevHostParent;\n      hostParentIsContainer = prevHostParentIsContainer;\n      break;\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n      offscreenSubtreeWasHidden ||\n        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 1:\n      offscreenSubtreeWasHidden ||\n        (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n        (prevHostParent = deletedFiber.stateNode),\n        \"function\" === typeof prevHostParent.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            deletedFiber,\n            nearestMountedAncestor,\n            prevHostParent\n          ));\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 21:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      break;\n    case 22:\n      offscreenSubtreeWasHidden =\n        (prevHostParent = offscreenSubtreeWasHidden) ||\n        null !== deletedFiber.memoizedState;\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n      offscreenSubtreeWasHidden = prevHostParent;\n      break;\n    default:\n      recursivelyTraverseDeletionEffects(\n        finishedRoot,\n        nearestMountedAncestor,\n        deletedFiber\n      );\n  }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n  if (\n    null === finishedWork.memoizedState &&\n    ((finishedRoot = finishedWork.alternate),\n    null !== finishedRoot &&\n      ((finishedRoot = finishedRoot.memoizedState),\n      null !== finishedRoot &&\n        ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n  )\n    try {\n      retryIfBlockedOn(finishedRoot);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n}\nfunction getRetryCache(finishedWork) {\n  switch (finishedWork.tag) {\n    case 13:\n    case 19:\n      var retryCache = finishedWork.stateNode;\n      null === retryCache &&\n        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n      return retryCache;\n    case 22:\n      return (\n        (finishedWork = finishedWork.stateNode),\n        (retryCache = finishedWork._retryCache),\n        null === retryCache &&\n          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n        retryCache\n      );\n    default:\n      throw Error(formatProdErrorMessage(435, finishedWork.tag));\n  }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n  var retryCache = getRetryCache(finishedWork);\n  wakeables.forEach(function (wakeable) {\n    var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n    retryCache.has(wakeable) ||\n      (retryCache.add(wakeable), wakeable.then(retry, retry));\n  });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (null !== deletions)\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i],\n        root = root$jscomp$0,\n        returnFiber = parentFiber,\n        parent = returnFiber;\n      a: for (; null !== parent; ) {\n        switch (parent.tag) {\n          case 27:\n            if (isSingletonScope(parent.type)) {\n              hostParent = parent.stateNode;\n              hostParentIsContainer = !1;\n              break a;\n            }\n            break;\n          case 5:\n            hostParent = parent.stateNode;\n            hostParentIsContainer = !1;\n            break a;\n          case 3:\n          case 4:\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = !0;\n            break a;\n        }\n        parent = parent.return;\n      }\n      if (null === hostParent) throw Error(formatProdErrorMessage(160));\n      commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n      hostParent = null;\n      hostParentIsContainer = !1;\n      root = childToDelete.alternate;\n      null !== root && (root.return = null);\n      childToDelete.return = null;\n    }\n  if (parentFiber.subtreeFlags & 13878)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n        (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n  var current = finishedWork.alternate,\n    flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 14:\n    case 15:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n        commitHookEffectListMount(3, finishedWork),\n        commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n      break;\n    case 1:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      flags & 64 &&\n        offscreenSubtreeIsHidden &&\n        ((finishedWork = finishedWork.updateQueue),\n        null !== finishedWork &&\n          ((flags = finishedWork.callbacks),\n          null !== flags &&\n            ((current = finishedWork.shared.hiddenCallbacks),\n            (finishedWork.shared.hiddenCallbacks =\n              null === current ? flags : current.concat(flags)))));\n      break;\n    case 26:\n      var hoistableRoot = currentHoistableRoot;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (flags & 4) {\n        var currentResource = null !== current ? current.memoizedState : null;\n        flags = finishedWork.memoizedState;\n        if (null === current)\n          if (null === flags)\n            if (null === finishedWork.stateNode) {\n              a: {\n                flags = finishedWork.type;\n                current = finishedWork.memoizedProps;\n                hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n                b: switch (flags) {\n                  case \"title\":\n                    currentResource =\n                      hoistableRoot.getElementsByTagName(\"title\")[0];\n                    if (\n                      !currentResource ||\n                      currentResource[internalHoistableMarker] ||\n                      currentResource[internalInstanceKey] ||\n                      \"http://www.w3.org/2000/svg\" ===\n                        currentResource.namespaceURI ||\n                      currentResource.hasAttribute(\"itemprop\")\n                    )\n                      (currentResource = hoistableRoot.createElement(flags)),\n                        hoistableRoot.head.insertBefore(\n                          currentResource,\n                          hoistableRoot.querySelector(\"head > title\")\n                        );\n                    setInitialProperties(currentResource, flags, current);\n                    currentResource[internalInstanceKey] = finishedWork;\n                    markNodeAsHoistable(currentResource);\n                    flags = currentResource;\n                    break a;\n                  case \"link\":\n                    var maybeNodes = getHydratableHoistableCache(\n                      \"link\",\n                      \"href\",\n                      hoistableRoot\n                    ).get(flags + (current.href || \"\"));\n                    if (maybeNodes)\n                      for (var i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"href\") ===\n                            (null == current.href || \"\" === current.href\n                              ? null\n                              : current.href) &&\n                            currentResource.getAttribute(\"rel\") ===\n                              (null == current.rel ? null : current.rel) &&\n                            currentResource.getAttribute(\"title\") ===\n                              (null == current.title ? null : current.title) &&\n                            currentResource.getAttribute(\"crossorigin\") ===\n                              (null == current.crossOrigin\n                                ? null\n                                : current.crossOrigin))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  case \"meta\":\n                    if (\n                      (maybeNodes = getHydratableHoistableCache(\n                        \"meta\",\n                        \"content\",\n                        hoistableRoot\n                      ).get(flags + (current.content || \"\")))\n                    )\n                      for (i = 0; i < maybeNodes.length; i++)\n                        if (\n                          ((currentResource = maybeNodes[i]),\n                          currentResource.getAttribute(\"content\") ===\n                            (null == current.content\n                              ? null\n                              : \"\" + current.content) &&\n                            currentResource.getAttribute(\"name\") ===\n                              (null == current.name ? null : current.name) &&\n                            currentResource.getAttribute(\"property\") ===\n                              (null == current.property\n                                ? null\n                                : current.property) &&\n                            currentResource.getAttribute(\"http-equiv\") ===\n                              (null == current.httpEquiv\n                                ? null\n                                : current.httpEquiv) &&\n                            currentResource.getAttribute(\"charset\") ===\n                              (null == current.charSet\n                                ? null\n                                : current.charSet))\n                        ) {\n                          maybeNodes.splice(i, 1);\n                          break b;\n                        }\n                    currentResource = hoistableRoot.createElement(flags);\n                    setInitialProperties(currentResource, flags, current);\n                    hoistableRoot.head.appendChild(currentResource);\n                    break;\n                  default:\n                    throw Error(formatProdErrorMessage(468, flags));\n                }\n                currentResource[internalInstanceKey] = finishedWork;\n                markNodeAsHoistable(currentResource);\n                flags = currentResource;\n              }\n              finishedWork.stateNode = flags;\n            } else\n              mountHoistable(\n                hoistableRoot,\n                finishedWork.type,\n                finishedWork.stateNode\n              );\n          else\n            finishedWork.stateNode = acquireResource(\n              hoistableRoot,\n              flags,\n              finishedWork.memoizedProps\n            );\n        else\n          currentResource !== flags\n            ? (null === currentResource\n                ? null !== current.stateNode &&\n                  ((current = current.stateNode),\n                  current.parentNode.removeChild(current))\n                : currentResource.count--,\n              null === flags\n                ? mountHoistable(\n                    hoistableRoot,\n                    finishedWork.type,\n                    finishedWork.stateNode\n                  )\n                : acquireResource(\n                    hoistableRoot,\n                    flags,\n                    finishedWork.memoizedProps\n                  ))\n            : null === flags &&\n              null !== finishedWork.stateNode &&\n              commitHostUpdate(\n                finishedWork,\n                finishedWork.memoizedProps,\n                current.memoizedProps\n              );\n      }\n      break;\n    case 27:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      null !== current &&\n        flags & 4 &&\n        commitHostUpdate(\n          finishedWork,\n          finishedWork.memoizedProps,\n          current.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 512 &&\n        (offscreenSubtreeWasHidden ||\n          null === current ||\n          safelyDetachRef(current, current.return));\n      if (finishedWork.flags & 32) {\n        hoistableRoot = finishedWork.stateNode;\n        try {\n          setTextContent(hoistableRoot, \"\");\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      flags & 4 &&\n        null != finishedWork.stateNode &&\n        ((hoistableRoot = finishedWork.memoizedProps),\n        commitHostUpdate(\n          finishedWork,\n          hoistableRoot,\n          null !== current ? current.memoizedProps : hoistableRoot\n        ));\n      flags & 1024 && (needsFormReset = !0);\n      break;\n    case 6:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4) {\n        if (null === finishedWork.stateNode)\n          throw Error(formatProdErrorMessage(162));\n        flags = finishedWork.memoizedProps;\n        current = finishedWork.stateNode;\n        try {\n          current.nodeValue = flags;\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      }\n      break;\n    case 3:\n      tagCaches = null;\n      hoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(root.containerInfo);\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      currentHoistableRoot = hoistableRoot;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n        try {\n          retryIfBlockedOn(root.containerInfo);\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      needsFormReset &&\n        ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n      break;\n    case 4:\n      flags = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(\n        finishedWork.stateNode.containerInfo\n      );\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      currentHoistableRoot = flags;\n      break;\n    case 12:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      break;\n    case 13:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      finishedWork.child.flags & 8192 &&\n        (null !== finishedWork.memoizedState) !==\n          (null !== current && null !== current.memoizedState) &&\n        (globalMostRecentFallbackTime = now());\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 22:\n      hoistableRoot = null !== finishedWork.memoizedState;\n      var wasHidden = null !== current && null !== current.memoizedState,\n        prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n        prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n      commitReconciliationEffects(finishedWork);\n      if (flags & 8192)\n        a: for (\n          root = finishedWork.stateNode,\n            root._visibility = hoistableRoot\n              ? root._visibility & -2\n              : root._visibility | 1,\n            hoistableRoot &&\n              (null === current ||\n                wasHidden ||\n                offscreenSubtreeIsHidden ||\n                offscreenSubtreeWasHidden ||\n                recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n            current = null,\n            root = finishedWork;\n          ;\n\n        ) {\n          if (5 === root.tag || 26 === root.tag) {\n            if (null === current) {\n              wasHidden = current = root;\n              try {\n                if (((currentResource = wasHidden.stateNode), hoistableRoot))\n                  (maybeNodes = currentResource.style),\n                    \"function\" === typeof maybeNodes.setProperty\n                      ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n                      : (maybeNodes.display = \"none\");\n                else {\n                  i = wasHidden.stateNode;\n                  var styleProp = wasHidden.memoizedProps.style,\n                    display =\n                      void 0 !== styleProp &&\n                      null !== styleProp &&\n                      styleProp.hasOwnProperty(\"display\")\n                        ? styleProp.display\n                        : null;\n                  i.style.display =\n                    null == display || \"boolean\" === typeof display\n                      ? \"\"\n                      : (\"\" + display).trim();\n                }\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (6 === root.tag) {\n            if (null === current) {\n              wasHidden = root;\n              try {\n                wasHidden.stateNode.nodeValue = hoistableRoot\n                  ? \"\"\n                  : wasHidden.memoizedProps;\n              } catch (error) {\n                captureCommitPhaseError(wasHidden, wasHidden.return, error);\n              }\n            }\n          } else if (\n            ((22 !== root.tag && 23 !== root.tag) ||\n              null === root.memoizedState ||\n              root === finishedWork) &&\n            null !== root.child\n          ) {\n            root.child.return = root;\n            root = root.child;\n            continue;\n          }\n          if (root === finishedWork) break a;\n          for (; null === root.sibling; ) {\n            if (null === root.return || root.return === finishedWork) break a;\n            current === root && (current = null);\n            root = root.return;\n          }\n          current === root && (current = null);\n          root.sibling.return = root.return;\n          root = root.sibling;\n        }\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((current = flags.retryQueue),\n          null !== current &&\n            ((flags.retryQueue = null),\n            attachSuspenseRetryListeners(finishedWork, current))));\n      break;\n    case 19:\n      recursivelyTraverseMutationEffects(root, finishedWork);\n      commitReconciliationEffects(finishedWork);\n      flags & 4 &&\n        ((flags = finishedWork.updateQueue),\n        null !== flags &&\n          ((finishedWork.updateQueue = null),\n          attachSuspenseRetryListeners(finishedWork, flags)));\n      break;\n    case 30:\n      break;\n    case 21:\n      break;\n    default:\n      recursivelyTraverseMutationEffects(root, finishedWork),\n        commitReconciliationEffects(finishedWork);\n  }\n}\nfunction commitReconciliationEffects(finishedWork) {\n  var flags = finishedWork.flags;\n  if (flags & 2) {\n    try {\n      for (\n        var hostParentFiber, parentFiber = finishedWork.return;\n        null !== parentFiber;\n\n      ) {\n        if (isHostParent(parentFiber)) {\n          hostParentFiber = parentFiber;\n          break;\n        }\n        parentFiber = parentFiber.return;\n      }\n      if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n      switch (hostParentFiber.tag) {\n        case 27:\n          var parent = hostParentFiber.stateNode,\n            before = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before, parent);\n          break;\n        case 5:\n          var parent$144 = hostParentFiber.stateNode;\n          hostParentFiber.flags & 32 &&\n            (setTextContent(parent$144, \"\"), (hostParentFiber.flags &= -33));\n          var before$145 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNode(finishedWork, before$145, parent$144);\n          break;\n        case 3:\n        case 4:\n          var parent$146 = hostParentFiber.stateNode.containerInfo,\n            before$147 = getHostSibling(finishedWork);\n          insertOrAppendPlacementNodeIntoContainer(\n            finishedWork,\n            before$147,\n            parent$146\n          );\n          break;\n        default:\n          throw Error(formatProdErrorMessage(161));\n      }\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    }\n    finishedWork.flags &= -3;\n  }\n  flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n  if (parentFiber.subtreeFlags & 1024)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var fiber = parentFiber;\n      recursivelyResetForms(fiber);\n      5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n      parentFiber = parentFiber.sibling;\n    }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n  if (parentFiber.subtreeFlags & 8772)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedWork = parentFiber;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 14:\n      case 15:\n        commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 1:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        var instance = finishedWork.stateNode;\n        \"function\" === typeof instance.componentWillUnmount &&\n          safelyCallComponentWillUnmount(\n            finishedWork,\n            finishedWork.return,\n            instance\n          );\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 27:\n        releaseSingletonInstance(finishedWork.stateNode);\n      case 26:\n      case 5:\n        safelyDetachRef(finishedWork, finishedWork.return);\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      case 30:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n        break;\n      default:\n        recursivelyTraverseDisappearLayoutEffects(finishedWork);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var current = parentFiber.alternate,\n      finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(4, finishedWork);\n        break;\n      case 1:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        current = finishedWork;\n        finishedRoot = current.stateNode;\n        if (\"function\" === typeof finishedRoot.componentDidMount)\n          try {\n            finishedRoot.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        current = finishedWork;\n        finishedRoot = current.updateQueue;\n        if (null !== finishedRoot) {\n          var instance = current.stateNode;\n          try {\n            var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n            if (null !== hiddenCallbacks)\n              for (\n                finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n                finishedRoot < hiddenCallbacks.length;\n                finishedRoot++\n              )\n                callCallback(hiddenCallbacks[finishedRoot], instance);\n          } catch (error) {\n            captureCommitPhaseError(current, current.return, error);\n          }\n        }\n        includeWorkInProgressEffects &&\n          flags & 64 &&\n          commitClassCallbacks(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 27:\n        commitHostSingletonAcquisition(finishedWork);\n      case 26:\n      case 5:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          null === current &&\n          flags & 4 &&\n          commitHostMount(finishedWork);\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 12:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        break;\n      case 13:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 4 &&\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n        break;\n      case 22:\n        null === finishedWork.memoizedState &&\n          recursivelyTraverseReappearLayoutEffects(\n            finishedRoot,\n            finishedWork,\n            includeWorkInProgressEffects\n          );\n        safelyAttachRef(finishedWork, finishedWork.return);\n        break;\n      case 30:\n        break;\n      default:\n        recursivelyTraverseReappearLayoutEffects(\n          finishedRoot,\n          finishedWork,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n  var previousCache = null;\n  null !== current &&\n    null !== current.memoizedState &&\n    null !== current.memoizedState.cachePool &&\n    (previousCache = current.memoizedState.cachePool.pool);\n  current = null;\n  null !== finishedWork.memoizedState &&\n    null !== finishedWork.memoizedState.cachePool &&\n    (current = finishedWork.memoizedState.cachePool.pool);\n  current !== previousCache &&\n    (null != current && current.refCount++,\n    null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n  current = null;\n  null !== finishedWork.alternate &&\n    (current = finishedWork.alternate.memoizedState.cache);\n  finishedWork = finishedWork.memoizedState.cache;\n  finishedWork !== current &&\n    (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n  root,\n  parentFiber,\n  committedLanes,\n  committedTransitions\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveMountOnFiber(\n        root,\n        parentFiber,\n        committedLanes,\n        committedTransitions\n      ),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n  finishedRoot,\n  finishedWork,\n  committedLanes,\n  committedTransitions\n) {\n  var flags = finishedWork.flags;\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 && commitHookEffectListMount(9, finishedWork);\n      break;\n    case 1:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 3:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        ((finishedRoot = null),\n        null !== finishedWork.alternate &&\n          (finishedRoot = finishedWork.alternate.memoizedState.cache),\n        (finishedWork = finishedWork.memoizedState.cache),\n        finishedWork !== finishedRoot &&\n          (finishedWork.refCount++,\n          null != finishedRoot && releaseCache(finishedRoot)));\n      break;\n    case 12:\n      if (flags & 2048) {\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n        finishedRoot = finishedWork.stateNode;\n        try {\n          var _finishedWork$memoize2 = finishedWork.memoizedProps,\n            id = _finishedWork$memoize2.id,\n            onPostCommit = _finishedWork$memoize2.onPostCommit;\n          \"function\" === typeof onPostCommit &&\n            onPostCommit(\n              id,\n              null === finishedWork.alternate ? \"mount\" : \"update\",\n              finishedRoot.passiveEffectDuration,\n              -0\n            );\n        } catch (error) {\n          captureCommitPhaseError(finishedWork, finishedWork.return, error);\n        }\n      } else\n        recursivelyTraversePassiveMountEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions\n        );\n      break;\n    case 13:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      break;\n    case 23:\n      break;\n    case 22:\n      _finishedWork$memoize2 = finishedWork.stateNode;\n      id = finishedWork.alternate;\n      null !== finishedWork.memoizedState\n        ? _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n        : _finishedWork$memoize2._visibility & 2\n          ? recursivelyTraversePassiveMountEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions\n            )\n          : ((_finishedWork$memoize2._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              0 !== (finishedWork.subtreeFlags & 10256)\n            ));\n      flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n      break;\n    case 24:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n      flags & 2048 &&\n        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveMountEffects(\n        finishedRoot,\n        finishedWork,\n        committedLanes,\n        committedTransitions\n      );\n  }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber,\n  committedLanes$jscomp$0,\n  committedTransitions$jscomp$0,\n  includeWorkInProgressEffects\n) {\n  includeWorkInProgressEffects =\n    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    var finishedRoot = finishedRoot$jscomp$0,\n      finishedWork = parentFiber,\n      committedLanes = committedLanes$jscomp$0,\n      committedTransitions = committedTransitions$jscomp$0,\n      flags = finishedWork.flags;\n    switch (finishedWork.tag) {\n      case 0:\n      case 11:\n      case 15:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        commitHookEffectListMount(8, finishedWork);\n        break;\n      case 23:\n        break;\n      case 22:\n        var instance = finishedWork.stateNode;\n        null !== finishedWork.memoizedState\n          ? instance._visibility & 2\n            ? recursivelyTraverseReconnectPassiveEffects(\n                finishedRoot,\n                finishedWork,\n                committedLanes,\n                committedTransitions,\n                includeWorkInProgressEffects\n              )\n            : recursivelyTraverseAtomicPassiveEffects(\n                finishedRoot,\n                finishedWork\n              )\n          : ((instance._visibility |= 2),\n            recursivelyTraverseReconnectPassiveEffects(\n              finishedRoot,\n              finishedWork,\n              committedLanes,\n              committedTransitions,\n              includeWorkInProgressEffects\n            ));\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitOffscreenPassiveMountEffects(\n            finishedWork.alternate,\n            finishedWork\n          );\n        break;\n      case 24:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n        includeWorkInProgressEffects &&\n          flags & 2048 &&\n          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n        break;\n      default:\n        recursivelyTraverseReconnectPassiveEffects(\n          finishedRoot,\n          finishedWork,\n          committedLanes,\n          committedTransitions,\n          includeWorkInProgressEffects\n        );\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n  finishedRoot$jscomp$0,\n  parentFiber\n) {\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n      var finishedRoot = finishedRoot$jscomp$0,\n        finishedWork = parentFiber,\n        flags = finishedWork.flags;\n      switch (finishedWork.tag) {\n        case 22:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitOffscreenPassiveMountEffects(\n              finishedWork.alternate,\n              finishedWork\n            );\n          break;\n        case 24:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n          flags & 2048 &&\n            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n          break;\n        default:\n          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n      }\n      parentFiber = parentFiber.sibling;\n    }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n  if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      accumulateSuspenseyCommitOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n  switch (fiber.tag) {\n    case 26:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      fiber.flags & suspenseyCommitFlag &&\n        null !== fiber.memoizedState &&\n        suspendResource(\n          currentHoistableRoot,\n          fiber.memoizedState,\n          fiber.memoizedProps\n        );\n      break;\n    case 5:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      break;\n    case 3:\n    case 4:\n      var previousHoistableRoot = currentHoistableRoot;\n      currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n      recursivelyAccumulateSuspenseyCommit(fiber);\n      currentHoistableRoot = previousHoistableRoot;\n      break;\n    case 22:\n      null === fiber.memoizedState &&\n        ((previousHoistableRoot = fiber.alternate),\n        null !== previousHoistableRoot &&\n        null !== previousHoistableRoot.memoizedState\n          ? ((previousHoistableRoot = suspenseyCommitFlag),\n            (suspenseyCommitFlag = 16777216),\n            recursivelyAccumulateSuspenseyCommit(fiber),\n            (suspenseyCommitFlag = previousHoistableRoot))\n          : recursivelyAccumulateSuspenseyCommit(fiber));\n      break;\n    default:\n      recursivelyAccumulateSuspenseyCommit(fiber);\n  }\n}\nfunction detachAlternateSiblings(parentFiber) {\n  var previousFiber = parentFiber.alternate;\n  if (\n    null !== previousFiber &&\n    ((parentFiber = previousFiber.child), null !== parentFiber)\n  ) {\n    previousFiber.child = null;\n    do\n      (previousFiber = parentFiber.sibling),\n        (parentFiber.sibling = null),\n        (parentFiber = previousFiber);\n    while (null !== parentFiber);\n  }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  if (parentFiber.subtreeFlags & 10256)\n    for (parentFiber = parentFiber.child; null !== parentFiber; )\n      commitPassiveUnmountOnFiber(parentFiber),\n        (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case 0:\n    case 11:\n    case 15:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      finishedWork.flags & 2048 &&\n        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n      break;\n    case 3:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 12:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    case 22:\n      var instance = finishedWork.stateNode;\n      null !== finishedWork.memoizedState &&\n      instance._visibility & 2 &&\n      (null === finishedWork.return || 13 !== finishedWork.return.tag)\n        ? ((instance._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n        : recursivelyTraversePassiveUnmountEffects(finishedWork);\n      break;\n    default:\n      recursivelyTraversePassiveUnmountEffects(finishedWork);\n  }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n  var deletions = parentFiber.deletions;\n  if (0 !== (parentFiber.flags & 16)) {\n    if (null !== deletions)\n      for (var i = 0; i < deletions.length; i++) {\n        var childToDelete = deletions[i];\n        nextEffect = childToDelete;\n        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n          childToDelete,\n          parentFiber\n        );\n      }\n    detachAlternateSiblings(parentFiber);\n  }\n  for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n    deletions = parentFiber;\n    switch (deletions.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, deletions, deletions.return);\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n        break;\n      case 22:\n        i = deletions.stateNode;\n        i._visibility & 2 &&\n          ((i._visibility &= -3),\n          recursivelyTraverseDisconnectPassiveEffects(deletions));\n        break;\n      default:\n        recursivelyTraverseDisconnectPassiveEffects(deletions);\n    }\n    parentFiber = parentFiber.sibling;\n  }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n  deletedSubtreeRoot,\n  nearestMountedAncestor\n) {\n  for (; null !== nextEffect; ) {\n    var fiber = nextEffect;\n    switch (fiber.tag) {\n      case 0:\n      case 11:\n      case 15:\n        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n        break;\n      case 23:\n      case 22:\n        if (\n          null !== fiber.memoizedState &&\n          null !== fiber.memoizedState.cachePool\n        ) {\n          var cache = fiber.memoizedState.cachePool.pool;\n          null != cache && cache.refCount++;\n        }\n        break;\n      case 24:\n        releaseCache(fiber.memoizedState.cache);\n    }\n    cache = fiber.child;\n    if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n    else\n      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n        cache = nextEffect;\n        var sibling = cache.sibling,\n          returnFiber = cache.return;\n        detachFiberAfterEffects(cache);\n        if (cache === fiber) {\n          nextEffect = null;\n          break a;\n        }\n        if (null !== sibling) {\n          sibling.return = returnFiber;\n          nextEffect = sibling;\n          break a;\n        }\n        nextEffect = returnFiber;\n      }\n  }\n}\nvar DefaultAsyncDispatcher = {\n    getCacheForType: function (resourceType) {\n      var cache = readContext(CacheContext),\n        cacheForType = cache.data.get(resourceType);\n      void 0 === cacheForType &&\n        ((cacheForType = resourceType()),\n        cache.data.set(resourceType, cacheForType));\n      return cacheForType;\n    }\n  },\n  PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n  executionContext = 0,\n  workInProgressRoot = null,\n  workInProgress = null,\n  workInProgressRootRenderLanes = 0,\n  workInProgressSuspendedReason = 0,\n  workInProgressThrownValue = null,\n  workInProgressRootDidSkipSuspendedSiblings = !1,\n  workInProgressRootIsPrerendering = !1,\n  workInProgressRootDidAttachPingListener = !1,\n  entangledRenderLanes = 0,\n  workInProgressRootExitStatus = 0,\n  workInProgressRootSkippedLanes = 0,\n  workInProgressRootInterleavedUpdatedLanes = 0,\n  workInProgressRootPingedLanes = 0,\n  workInProgressDeferredLane = 0,\n  workInProgressSuspendedRetryLanes = 0,\n  workInProgressRootConcurrentErrors = null,\n  workInProgressRootRecoverableErrors = null,\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n  globalMostRecentFallbackTime = 0,\n  workInProgressRootRenderTargetTime = Infinity,\n  workInProgressTransitions = null,\n  legacyErrorBoundariesThatAlreadyFailed = null,\n  pendingEffectsStatus = 0,\n  pendingEffectsRoot = null,\n  pendingFinishedWork = null,\n  pendingEffectsLanes = 0,\n  pendingEffectsRemainingLanes = 0,\n  pendingPassiveTransitions = null,\n  pendingRecoverableErrors = null,\n  nestedUpdateCount = 0,\n  rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n  if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)\n    return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;\n  if (null !== ReactSharedInternals.T) {\n    var actionScopeLane = currentEntangledLane;\n    return 0 !== actionScopeLane ? actionScopeLane : requestTransitionLane();\n  }\n  return resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n  0 === workInProgressDeferredLane &&\n    (workInProgressDeferredLane =\n      0 === (workInProgressRootRenderLanes & 536870912) || isHydrating\n        ? claimNextTransitionLane()\n        : 536870912);\n  var suspenseHandler = suspenseHandlerStackCursor.current;\n  null !== suspenseHandler && (suspenseHandler.flags |= 32);\n  return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n  if (\n    (root === workInProgressRoot &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    prepareFreshStack(root, 0),\n      markRootSuspended(\n        root,\n        workInProgressRootRenderLanes,\n        workInProgressDeferredLane,\n        !1\n      );\n  markRootUpdated$1(root, lane);\n  if (0 === (executionContext & 2) || root !== workInProgressRoot)\n    root === workInProgressRoot &&\n      (0 === (executionContext & 2) &&\n        (workInProgressRootInterleavedUpdatedLanes |= lane),\n      4 === workInProgressRootExitStatus &&\n        markRootSuspended(\n          root,\n          workInProgressRootRenderLanes,\n          workInProgressDeferredLane,\n          !1\n        )),\n      ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  var shouldTimeSlice =\n      (!forceSync &&\n        0 === (lanes & 124) &&\n        0 === (lanes & root$jscomp$0.expiredLanes)) ||\n      checkIfRootIsPrerendering(root$jscomp$0, lanes),\n    exitStatus = shouldTimeSlice\n      ? renderRootConcurrent(root$jscomp$0, lanes)\n      : renderRootSync(root$jscomp$0, lanes, !0),\n    renderWasConcurrent = shouldTimeSlice;\n  do {\n    if (0 === exitStatus) {\n      workInProgressRootIsPrerendering &&\n        !shouldTimeSlice &&\n        markRootSuspended(root$jscomp$0, lanes, 0, !1);\n      break;\n    } else {\n      forceSync = root$jscomp$0.current.alternate;\n      if (\n        renderWasConcurrent &&\n        !isRenderConsistentWithExternalStores(forceSync)\n      ) {\n        exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n        renderWasConcurrent = !1;\n        continue;\n      }\n      if (2 === exitStatus) {\n        renderWasConcurrent = lanes;\n        if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n          var JSCompiler_inline_result = 0;\n        else\n          (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n            (JSCompiler_inline_result =\n              0 !== JSCompiler_inline_result\n                ? JSCompiler_inline_result\n                : JSCompiler_inline_result & 536870912\n                  ? 536870912\n                  : 0);\n        if (0 !== JSCompiler_inline_result) {\n          lanes = JSCompiler_inline_result;\n          a: {\n            var root = root$jscomp$0;\n            exitStatus = workInProgressRootConcurrentErrors;\n            var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n            wasRootDehydrated &&\n              (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n            JSCompiler_inline_result = renderRootSync(\n              root,\n              JSCompiler_inline_result,\n              !1\n            );\n            if (2 !== JSCompiler_inline_result) {\n              if (\n                workInProgressRootDidAttachPingListener &&\n                !wasRootDehydrated\n              ) {\n                root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n                workInProgressRootInterleavedUpdatedLanes |=\n                  renderWasConcurrent;\n                exitStatus = 4;\n                break a;\n              }\n              renderWasConcurrent = workInProgressRootRecoverableErrors;\n              workInProgressRootRecoverableErrors = exitStatus;\n              null !== renderWasConcurrent &&\n                (null === workInProgressRootRecoverableErrors\n                  ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n                  : workInProgressRootRecoverableErrors.push.apply(\n                      workInProgressRootRecoverableErrors,\n                      renderWasConcurrent\n                    ));\n            }\n            exitStatus = JSCompiler_inline_result;\n          }\n          renderWasConcurrent = !1;\n          if (2 !== exitStatus) continue;\n        }\n      }\n      if (1 === exitStatus) {\n        prepareFreshStack(root$jscomp$0, 0);\n        markRootSuspended(root$jscomp$0, lanes, 0, !0);\n        break;\n      }\n      a: {\n        shouldTimeSlice = root$jscomp$0;\n        renderWasConcurrent = exitStatus;\n        switch (renderWasConcurrent) {\n          case 0:\n          case 1:\n            throw Error(formatProdErrorMessage(345));\n          case 4:\n            if ((lanes & 4194048) !== lanes) break;\n          case 6:\n            markRootSuspended(\n              shouldTimeSlice,\n              lanes,\n              workInProgressDeferredLane,\n              !workInProgressRootDidSkipSuspendedSiblings\n            );\n            break a;\n          case 2:\n            workInProgressRootRecoverableErrors = null;\n            break;\n          case 3:\n          case 5:\n            break;\n          default:\n            throw Error(formatProdErrorMessage(329));\n        }\n        if (\n          (lanes & 62914560) === lanes &&\n          ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n          10 < exitStatus)\n        ) {\n          markRootSuspended(\n            shouldTimeSlice,\n            lanes,\n            workInProgressDeferredLane,\n            !workInProgressRootDidSkipSuspendedSiblings\n          );\n          if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n          shouldTimeSlice.timeoutHandle = scheduleTimeout(\n            commitRootWhenReady.bind(\n              null,\n              shouldTimeSlice,\n              forceSync,\n              workInProgressRootRecoverableErrors,\n              workInProgressTransitions,\n              workInProgressRootDidIncludeRecursiveRenderUpdate,\n              lanes,\n              workInProgressDeferredLane,\n              workInProgressRootInterleavedUpdatedLanes,\n              workInProgressSuspendedRetryLanes,\n              workInProgressRootDidSkipSuspendedSiblings,\n              renderWasConcurrent,\n              2,\n              -0,\n              0\n            ),\n            exitStatus\n          );\n          break a;\n        }\n        commitRootWhenReady(\n          shouldTimeSlice,\n          forceSync,\n          workInProgressRootRecoverableErrors,\n          workInProgressTransitions,\n          workInProgressRootDidIncludeRecursiveRenderUpdate,\n          lanes,\n          workInProgressDeferredLane,\n          workInProgressRootInterleavedUpdatedLanes,\n          workInProgressSuspendedRetryLanes,\n          workInProgressRootDidSkipSuspendedSiblings,\n          renderWasConcurrent,\n          0,\n          -0,\n          0\n        );\n      }\n    }\n    break;\n  } while (1);\n  ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n  root,\n  finishedWork,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  lanes,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes,\n  didSkipSuspendedSiblings,\n  exitStatus,\n  suspendedCommitReason,\n  completedRenderStartTime,\n  completedRenderEndTime\n) {\n  root.timeoutHandle = -1;\n  suspendedCommitReason = finishedWork.subtreeFlags;\n  if (\n    suspendedCommitReason & 8192 ||\n    16785408 === (suspendedCommitReason & 16785408)\n  )\n    if (\n      ((suspendedState = { stylesheets: null, count: 0, unsuspend: noop }),\n      accumulateSuspenseyCommitOnFiber(finishedWork),\n      (suspendedCommitReason = waitForCommitToBeReady()),\n      null !== suspendedCommitReason)\n    ) {\n      root.cancelPendingCommit = suspendedCommitReason(\n        commitRoot.bind(\n          null,\n          root,\n          finishedWork,\n          lanes,\n          recoverableErrors,\n          transitions,\n          didIncludeRenderPhaseUpdate,\n          spawnedLane,\n          updatedLanes,\n          suspendedRetryLanes,\n          exitStatus,\n          1,\n          completedRenderStartTime,\n          completedRenderEndTime\n        )\n      );\n      markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n      return;\n    }\n  commitRoot(\n    root,\n    finishedWork,\n    lanes,\n    recoverableErrors,\n    transitions,\n    didIncludeRenderPhaseUpdate,\n    spawnedLane,\n    updatedLanes,\n    suspendedRetryLanes\n  );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  for (var node = finishedWork; ; ) {\n    var tag = node.tag;\n    if (\n      (0 === tag || 11 === tag || 15 === tag) &&\n      node.flags & 16384 &&\n      ((tag = node.updateQueue),\n      null !== tag && ((tag = tag.stores), null !== tag))\n    )\n      for (var i = 0; i < tag.length; i++) {\n        var check = tag[i],\n          getSnapshot = check.getSnapshot;\n        check = check.value;\n        try {\n          if (!objectIs(getSnapshot(), check)) return !1;\n        } catch (error) {\n          return !1;\n        }\n      }\n    tag = node.child;\n    if (node.subtreeFlags & 16384 && null !== tag)\n      (tag.return = node), (node = tag);\n    else {\n      if (node === finishedWork) break;\n      for (; null === node.sibling; ) {\n        if (null === node.return || node.return === finishedWork) return !0;\n        node = node.return;\n      }\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n  return !0;\n}\nfunction markRootSuspended(\n  root,\n  suspendedLanes,\n  spawnedLane,\n  didAttemptEntireTree\n) {\n  suspendedLanes &= ~workInProgressRootPingedLanes;\n  suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes;\n  didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n  didAttemptEntireTree = root.expirationTimes;\n  for (var lanes = suspendedLanes; 0 < lanes; ) {\n    var index$4 = 31 - clz32(lanes),\n      lane = 1 << index$4;\n    didAttemptEntireTree[index$4] = -1;\n    lanes &= ~lane;\n  }\n  0 !== spawnedLane &&\n    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n  return 0 === (executionContext & 6)\n    ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n    : !0;\n}\nfunction resetWorkInProgressStack() {\n  if (null !== workInProgress) {\n    if (0 === workInProgressSuspendedReason)\n      var interruptedWork = workInProgress.return;\n    else\n      (interruptedWork = workInProgress),\n        (lastContextDependency = currentlyRenderingFiber$1 = null),\n        resetHooksOnUnwind(interruptedWork),\n        (thenableState = null),\n        (thenableIndexCounter = 0),\n        (interruptedWork = workInProgress);\n    for (; null !== interruptedWork; )\n      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n        (interruptedWork = interruptedWork.return);\n    workInProgress = null;\n  }\n}\nfunction prepareFreshStack(root, lanes) {\n  var timeoutHandle = root.timeoutHandle;\n  -1 !== timeoutHandle &&\n    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n  timeoutHandle = root.cancelPendingCommit;\n  null !== timeoutHandle &&\n    ((root.cancelPendingCommit = null), timeoutHandle());\n  resetWorkInProgressStack();\n  workInProgressRoot = root;\n  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n  workInProgressRootRenderLanes = lanes;\n  workInProgressSuspendedReason = 0;\n  workInProgressThrownValue = null;\n  workInProgressRootDidSkipSuspendedSiblings = !1;\n  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n  workInProgressRootDidAttachPingListener = !1;\n  workInProgressSuspendedRetryLanes =\n    workInProgressDeferredLane =\n    workInProgressRootPingedLanes =\n    workInProgressRootInterleavedUpdatedLanes =\n    workInProgressRootSkippedLanes =\n    workInProgressRootExitStatus =\n      0;\n  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n    null;\n  workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n  0 !== (lanes & 8) && (lanes |= lanes & 32);\n  var allEntangledLanes = root.entangledLanes;\n  if (0 !== allEntangledLanes)\n    for (\n      root = root.entanglements, allEntangledLanes &= lanes;\n      0 < allEntangledLanes;\n\n    ) {\n      var index$2 = 31 - clz32(allEntangledLanes),\n        lane = 1 << index$2;\n      lanes |= root[index$2];\n      allEntangledLanes &= ~lane;\n    }\n  entangledRenderLanes = lanes;\n  finishQueueingConcurrentUpdates();\n  return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n  currentlyRenderingFiber = null;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  thrownValue === SuspenseException || thrownValue === SuspenseActionException\n    ? ((thrownValue = getSuspendedThenable()),\n      (workInProgressSuspendedReason = 3))\n    : thrownValue === SuspenseyCommitException\n      ? ((thrownValue = getSuspendedThenable()),\n        (workInProgressSuspendedReason = 4))\n      : (workInProgressSuspendedReason =\n          thrownValue === SelectiveHydrationException\n            ? 8\n            : null !== thrownValue &&\n                \"object\" === typeof thrownValue &&\n                \"function\" === typeof thrownValue.then\n              ? 6\n              : 1);\n  workInProgressThrownValue = thrownValue;\n  null === workInProgress &&\n    ((workInProgressRootExitStatus = 1),\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    ));\n}\nfunction pushDispatcher() {\n  var prevDispatcher = ReactSharedInternals.H;\n  ReactSharedInternals.H = ContextOnlyDispatcher;\n  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n  var prevAsyncDispatcher = ReactSharedInternals.A;\n  ReactSharedInternals.A = DefaultAsyncDispatcher;\n  return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n  workInProgressRootExitStatus = 4;\n  workInProgressRootDidSkipSuspendedSiblings ||\n    ((workInProgressRootRenderLanes & 4194048) !==\n      workInProgressRootRenderLanes &&\n      null !== suspenseHandlerStackCursor.current) ||\n    (workInProgressRootIsPrerendering = !0);\n  (0 === (workInProgressRootSkippedLanes & 134217727) &&\n    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n    null === workInProgressRoot ||\n    markRootSuspended(\n      workInProgressRoot,\n      workInProgressRootRenderLanes,\n      workInProgressDeferredLane,\n      !1\n    );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n    (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n  lanes = !1;\n  var exitStatus = workInProgressRootExitStatus;\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        var unitOfWork = workInProgress,\n          thrownValue = workInProgressThrownValue;\n        switch (workInProgressSuspendedReason) {\n          case 8:\n            resetWorkInProgressStack();\n            exitStatus = 6;\n            break a;\n          case 3:\n          case 2:\n          case 9:\n          case 6:\n            null === suspenseHandlerStackCursor.current && (lanes = !0);\n            var reason = workInProgressSuspendedReason;\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n            if (\n              shouldYieldForPrerendering &&\n              workInProgressRootIsPrerendering\n            ) {\n              exitStatus = 0;\n              break a;\n            }\n            break;\n          default:\n            (reason = workInProgressSuspendedReason),\n              (workInProgressSuspendedReason = 0),\n              (workInProgressThrownValue = null),\n              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n        }\n      }\n      workLoopSync();\n      exitStatus = workInProgressRootExitStatus;\n      break;\n    } catch (thrownValue$167) {\n      handleThrow(root, thrownValue$167);\n    }\n  while (1);\n  lanes && root.shellSuspendCounter++;\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  executionContext = prevExecutionContext;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  null === workInProgress &&\n    ((workInProgressRoot = null),\n    (workInProgressRootRenderLanes = 0),\n    finishQueueingConcurrentUpdates());\n  return exitStatus;\n}\nfunction workLoopSync() {\n  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= 2;\n  var prevDispatcher = pushDispatcher(),\n    prevAsyncDispatcher = pushAsyncDispatcher();\n  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n    ? ((workInProgressTransitions = null),\n      (workInProgressRootRenderTargetTime = now() + 500),\n      prepareFreshStack(root, lanes))\n    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n        root,\n        lanes\n      ));\n  a: do\n    try {\n      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n        lanes = workInProgress;\n        var thrownValue = workInProgressThrownValue;\n        b: switch (workInProgressSuspendedReason) {\n          case 1:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n            break;\n          case 2:\n          case 9:\n            if (isThenableResolved(thrownValue)) {\n              workInProgressSuspendedReason = 0;\n              workInProgressThrownValue = null;\n              replaySuspendedUnitOfWork(lanes);\n              break;\n            }\n            lanes = function () {\n              (2 !== workInProgressSuspendedReason &&\n                9 !== workInProgressSuspendedReason) ||\n                workInProgressRoot !== root ||\n                (workInProgressSuspendedReason = 7);\n              ensureRootIsScheduled(root);\n            };\n            thrownValue.then(lanes, lanes);\n            break a;\n          case 3:\n            workInProgressSuspendedReason = 7;\n            break a;\n          case 4:\n            workInProgressSuspendedReason = 5;\n            break a;\n          case 7:\n            isThenableResolved(thrownValue)\n              ? ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                replaySuspendedUnitOfWork(lanes))\n              : ((workInProgressSuspendedReason = 0),\n                (workInProgressThrownValue = null),\n                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n            break;\n          case 5:\n            var resource = null;\n            switch (workInProgress.tag) {\n              case 26:\n                resource = workInProgress.memoizedState;\n              case 5:\n              case 27:\n                var hostFiber = workInProgress;\n                if (resource ? preloadResource(resource) : 1) {\n                  workInProgressSuspendedReason = 0;\n                  workInProgressThrownValue = null;\n                  var sibling = hostFiber.sibling;\n                  if (null !== sibling) workInProgress = sibling;\n                  else {\n                    var returnFiber = hostFiber.return;\n                    null !== returnFiber\n                      ? ((workInProgress = returnFiber),\n                        completeUnitOfWork(returnFiber))\n                      : (workInProgress = null);\n                  }\n                  break b;\n                }\n            }\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n            break;\n          case 6:\n            workInProgressSuspendedReason = 0;\n            workInProgressThrownValue = null;\n            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n            break;\n          case 8:\n            resetWorkInProgressStack();\n            workInProgressRootExitStatus = 6;\n            break a;\n          default:\n            throw Error(formatProdErrorMessage(462));\n        }\n      }\n      workLoopConcurrentByScheduler();\n      break;\n    } catch (thrownValue$169) {\n      handleThrow(root, thrownValue$169);\n    }\n  while (1);\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  ReactSharedInternals.H = prevDispatcher;\n  ReactSharedInternals.A = prevAsyncDispatcher;\n  executionContext = prevExecutionContext;\n  if (null !== workInProgress) return 0;\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = 0;\n  finishQueueingConcurrentUpdates();\n  return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n  for (; null !== workInProgress && !shouldYield(); )\n    performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n  var next = unitOfWork;\n  var current = next.alternate;\n  switch (next.tag) {\n    case 15:\n    case 0:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type,\n        void 0,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 11:\n      next = replayFunctionComponent(\n        current,\n        next,\n        next.pendingProps,\n        next.type.render,\n        next.ref,\n        workInProgressRootRenderLanes\n      );\n      break;\n    case 5:\n      resetHooksOnUnwind(next);\n    default:\n      unwindInterruptedWork(current, next),\n        (next = workInProgress =\n          resetWorkInProgress(next, entangledRenderLanes)),\n        (next = beginWork(current, next, entangledRenderLanes));\n  }\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n  root,\n  unitOfWork,\n  thrownValue,\n  suspendedReason\n) {\n  lastContextDependency = currentlyRenderingFiber$1 = null;\n  resetHooksOnUnwind(unitOfWork);\n  thenableState = null;\n  thenableIndexCounter = 0;\n  var returnFiber = unitOfWork.return;\n  try {\n    if (\n      throwException(\n        root,\n        returnFiber,\n        unitOfWork,\n        thrownValue,\n        workInProgressRootRenderLanes\n      )\n    ) {\n      workInProgressRootExitStatus = 1;\n      logUncaughtError(\n        root,\n        createCapturedValueAtFiber(thrownValue, root.current)\n      );\n      workInProgress = null;\n      return;\n    }\n  } catch (error) {\n    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n    workInProgressRootExitStatus = 1;\n    logUncaughtError(\n      root,\n      createCapturedValueAtFiber(thrownValue, root.current)\n    );\n    workInProgress = null;\n    return;\n  }\n  if (unitOfWork.flags & 32768) {\n    if (isHydrating || 1 === suspendedReason) root = !0;\n    else if (\n      workInProgressRootIsPrerendering ||\n      0 !== (workInProgressRootRenderLanes & 536870912)\n    )\n      root = !1;\n    else if (\n      ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n      2 === suspendedReason ||\n        9 === suspendedReason ||\n        3 === suspendedReason ||\n        6 === suspendedReason)\n    )\n      (suspendedReason = suspenseHandlerStackCursor.current),\n        null !== suspendedReason &&\n          13 === suspendedReason.tag &&\n          (suspendedReason.flags |= 16384);\n    unwindUnitOfWork(unitOfWork, root);\n  } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n  var completedWork = unitOfWork;\n  do {\n    if (0 !== (completedWork.flags & 32768)) {\n      unwindUnitOfWork(\n        completedWork,\n        workInProgressRootDidSkipSuspendedSiblings\n      );\n      return;\n    }\n    unitOfWork = completedWork.return;\n    var next = completeWork(\n      completedWork.alternate,\n      completedWork,\n      entangledRenderLanes\n    );\n    if (null !== next) {\n      workInProgress = next;\n      return;\n    }\n    completedWork = completedWork.sibling;\n    if (null !== completedWork) {\n      workInProgress = completedWork;\n      return;\n    }\n    workInProgress = completedWork = unitOfWork;\n  } while (null !== completedWork);\n  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n  do {\n    var next = unwindWork(unitOfWork.alternate, unitOfWork);\n    if (null !== next) {\n      next.flags &= 32767;\n      workInProgress = next;\n      return;\n    }\n    next = unitOfWork.return;\n    null !== next &&\n      ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n    if (\n      !skipSiblings &&\n      ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n    ) {\n      workInProgress = unitOfWork;\n      return;\n    }\n    workInProgress = unitOfWork = next;\n  } while (null !== unitOfWork);\n  workInProgressRootExitStatus = 6;\n  workInProgress = null;\n}\nfunction commitRoot(\n  root,\n  finishedWork,\n  lanes,\n  recoverableErrors,\n  transitions,\n  didIncludeRenderPhaseUpdate,\n  spawnedLane,\n  updatedLanes,\n  suspendedRetryLanes\n) {\n  root.cancelPendingCommit = null;\n  do flushPendingEffects();\n  while (0 !== pendingEffectsStatus);\n  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n  if (null !== finishedWork) {\n    if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n    didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n    didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n    markRootFinished(\n      root,\n      lanes,\n      didIncludeRenderPhaseUpdate,\n      spawnedLane,\n      updatedLanes,\n      suspendedRetryLanes\n    );\n    root === workInProgressRoot &&\n      ((workInProgress = workInProgressRoot = null),\n      (workInProgressRootRenderLanes = 0));\n    pendingFinishedWork = finishedWork;\n    pendingEffectsRoot = root;\n    pendingEffectsLanes = lanes;\n    pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n    pendingPassiveTransitions = transitions;\n    pendingRecoverableErrors = recoverableErrors;\n    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? ((root.callbackNode = null),\n        (root.callbackPriority = 0),\n        scheduleCallback$1(NormalPriority$1, function () {\n          flushPassiveEffects(!0);\n          return null;\n        }))\n      : ((root.callbackNode = null), (root.callbackPriority = 0));\n    recoverableErrors = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n      recoverableErrors = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      transitions = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      spawnedLane = executionContext;\n      executionContext |= 4;\n      try {\n        commitBeforeMutationEffects(root, finishedWork, lanes);\n      } finally {\n        (executionContext = spawnedLane),\n          (ReactDOMSharedInternals.p = transitions),\n          (ReactSharedInternals.T = recoverableErrors);\n      }\n    }\n    pendingEffectsStatus = 1;\n    flushMutationEffects();\n    flushLayoutEffects();\n    flushSpawnedWork();\n  }\n}\nfunction flushMutationEffects() {\n  if (1 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n    if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n      rootMutationHasEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitMutationEffectsOnFiber(finishedWork, root);\n        var priorSelectionInformation = selectionInformation,\n          curFocusedElem = getActiveElementDeep(root.containerInfo),\n          priorFocusedElem = priorSelectionInformation.focusedElem,\n          priorSelectionRange = priorSelectionInformation.selectionRange;\n        if (\n          curFocusedElem !== priorFocusedElem &&\n          priorFocusedElem &&\n          priorFocusedElem.ownerDocument &&\n          containsNode(\n            priorFocusedElem.ownerDocument.documentElement,\n            priorFocusedElem\n          )\n        ) {\n          if (\n            null !== priorSelectionRange &&\n            hasSelectionCapabilities(priorFocusedElem)\n          ) {\n            var start = priorSelectionRange.start,\n              end = priorSelectionRange.end;\n            void 0 === end && (end = start);\n            if (\"selectionStart\" in priorFocusedElem)\n              (priorFocusedElem.selectionStart = start),\n                (priorFocusedElem.selectionEnd = Math.min(\n                  end,\n                  priorFocusedElem.value.length\n                ));\n            else {\n              var doc = priorFocusedElem.ownerDocument || document,\n                win = (doc && doc.defaultView) || window;\n              if (win.getSelection) {\n                var selection = win.getSelection(),\n                  length = priorFocusedElem.textContent.length,\n                  start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n                  end$jscomp$0 =\n                    void 0 === priorSelectionRange.end\n                      ? start$jscomp$0\n                      : Math.min(priorSelectionRange.end, length);\n                !selection.extend &&\n                  start$jscomp$0 > end$jscomp$0 &&\n                  ((curFocusedElem = end$jscomp$0),\n                  (end$jscomp$0 = start$jscomp$0),\n                  (start$jscomp$0 = curFocusedElem));\n                var startMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    start$jscomp$0\n                  ),\n                  endMarker = getNodeForCharacterOffset(\n                    priorFocusedElem,\n                    end$jscomp$0\n                  );\n                if (\n                  startMarker &&\n                  endMarker &&\n                  (1 !== selection.rangeCount ||\n                    selection.anchorNode !== startMarker.node ||\n                    selection.anchorOffset !== startMarker.offset ||\n                    selection.focusNode !== endMarker.node ||\n                    selection.focusOffset !== endMarker.offset)\n                ) {\n                  var range = doc.createRange();\n                  range.setStart(startMarker.node, startMarker.offset);\n                  selection.removeAllRanges();\n                  start$jscomp$0 > end$jscomp$0\n                    ? (selection.addRange(range),\n                      selection.extend(endMarker.node, endMarker.offset))\n                    : (range.setEnd(endMarker.node, endMarker.offset),\n                      selection.addRange(range));\n                }\n              }\n            }\n          }\n          doc = [];\n          for (\n            selection = priorFocusedElem;\n            (selection = selection.parentNode);\n\n          )\n            1 === selection.nodeType &&\n              doc.push({\n                element: selection,\n                left: selection.scrollLeft,\n                top: selection.scrollTop\n              });\n          \"function\" === typeof priorFocusedElem.focus &&\n            priorFocusedElem.focus();\n          for (\n            priorFocusedElem = 0;\n            priorFocusedElem < doc.length;\n            priorFocusedElem++\n          ) {\n            var info = doc[priorFocusedElem];\n            info.element.scrollLeft = info.left;\n            info.element.scrollTop = info.top;\n          }\n        }\n        _enabled = !!eventsEnabled;\n        selectionInformation = eventsEnabled = null;\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootMutationHasEffect);\n      }\n    }\n    root.current = finishedWork;\n    pendingEffectsStatus = 2;\n  }\n}\nfunction flushLayoutEffects() {\n  if (2 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n    if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n      rootHasLayoutEffect = ReactSharedInternals.T;\n      ReactSharedInternals.T = null;\n      var previousPriority = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      var prevExecutionContext = executionContext;\n      executionContext |= 4;\n      try {\n        commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n      } finally {\n        (executionContext = prevExecutionContext),\n          (ReactDOMSharedInternals.p = previousPriority),\n          (ReactSharedInternals.T = rootHasLayoutEffect);\n      }\n    }\n    pendingEffectsStatus = 3;\n  }\n}\nfunction flushSpawnedWork() {\n  if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n    pendingEffectsStatus = 0;\n    requestPaint();\n    var root = pendingEffectsRoot,\n      finishedWork = pendingFinishedWork,\n      lanes = pendingEffectsLanes,\n      recoverableErrors = pendingRecoverableErrors;\n    0 !== (finishedWork.subtreeFlags & 10256) ||\n    0 !== (finishedWork.flags & 10256)\n      ? (pendingEffectsStatus = 5)\n      : ((pendingEffectsStatus = 0),\n        (pendingFinishedWork = pendingEffectsRoot = null),\n        releaseRootPooledCache(root, root.pendingLanes));\n    var remainingLanes = root.pendingLanes;\n    0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n    lanesToEventPriority(lanes);\n    finishedWork = finishedWork.stateNode;\n    if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n      try {\n        injectedHook.onCommitFiberRoot(\n          rendererID,\n          finishedWork,\n          void 0,\n          128 === (finishedWork.current.flags & 128)\n        );\n      } catch (err) {}\n    if (null !== recoverableErrors) {\n      finishedWork = ReactSharedInternals.T;\n      remainingLanes = ReactDOMSharedInternals.p;\n      ReactDOMSharedInternals.p = 2;\n      ReactSharedInternals.T = null;\n      try {\n        for (\n          var onRecoverableError = root.onRecoverableError, i = 0;\n          i < recoverableErrors.length;\n          i++\n        ) {\n          var recoverableError = recoverableErrors[i];\n          onRecoverableError(recoverableError.value, {\n            componentStack: recoverableError.stack\n          });\n        }\n      } finally {\n        (ReactSharedInternals.T = finishedWork),\n          (ReactDOMSharedInternals.p = remainingLanes);\n      }\n    }\n    0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n    ensureRootIsScheduled(root);\n    remainingLanes = root.pendingLanes;\n    0 !== (lanes & 4194090) && 0 !== (remainingLanes & 42)\n      ? root === rootWithNestedUpdates\n        ? nestedUpdateCount++\n        : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n      : (nestedUpdateCount = 0);\n    flushSyncWorkAcrossRoots_impl(0, !1);\n  }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n  0 === (root.pooledCacheLanes &= remainingLanes) &&\n    ((remainingLanes = root.pooledCache),\n    null != remainingLanes &&\n      ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects(wasDelayedCommit) {\n  flushMutationEffects();\n  flushLayoutEffects();\n  flushSpawnedWork();\n  return flushPassiveEffects(wasDelayedCommit);\n}\nfunction flushPassiveEffects() {\n  if (5 !== pendingEffectsStatus) return !1;\n  var root = pendingEffectsRoot,\n    remainingLanes = pendingEffectsRemainingLanes;\n  pendingEffectsRemainingLanes = 0;\n  var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n    prevTransition = ReactSharedInternals.T,\n    previousPriority = ReactDOMSharedInternals.p;\n  try {\n    ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n    ReactSharedInternals.T = null;\n    renderPriority = pendingPassiveTransitions;\n    pendingPassiveTransitions = null;\n    var root$jscomp$0 = pendingEffectsRoot,\n      lanes = pendingEffectsLanes;\n    pendingEffectsStatus = 0;\n    pendingFinishedWork = pendingEffectsRoot = null;\n    pendingEffectsLanes = 0;\n    if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n    var prevExecutionContext = executionContext;\n    executionContext |= 4;\n    commitPassiveUnmountOnFiber(root$jscomp$0.current);\n    commitPassiveMountOnFiber(\n      root$jscomp$0,\n      root$jscomp$0.current,\n      lanes,\n      renderPriority\n    );\n    executionContext = prevExecutionContext;\n    flushSyncWorkAcrossRoots_impl(0, !1);\n    if (\n      injectedHook &&\n      \"function\" === typeof injectedHook.onPostCommitFiberRoot\n    )\n      try {\n        injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n      } catch (err) {}\n    return !0;\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition),\n      releaseRootPooledCache(root, remainingLanes);\n  }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n  sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n  rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n  null !== rootFiber &&\n    (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n  if (3 === sourceFiber.tag)\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n  else\n    for (; null !== nearestMountedAncestor; ) {\n      if (3 === nearestMountedAncestor.tag) {\n        captureCommitPhaseErrorOnRoot(\n          nearestMountedAncestor,\n          sourceFiber,\n          error\n        );\n        break;\n      } else if (1 === nearestMountedAncestor.tag) {\n        var instance = nearestMountedAncestor.stateNode;\n        if (\n          \"function\" ===\n            typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n          (\"function\" === typeof instance.componentDidCatch &&\n            (null === legacyErrorBoundariesThatAlreadyFailed ||\n              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n        ) {\n          sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n          error = createClassErrorUpdate(2);\n          instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n          null !== instance &&\n            (initializeClassErrorUpdate(\n              error,\n              instance,\n              nearestMountedAncestor,\n              sourceFiber\n            ),\n            markRootUpdated$1(instance, 2),\n            ensureRootIsScheduled(instance));\n          break;\n        }\n      }\n      nearestMountedAncestor = nearestMountedAncestor.return;\n    }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n  var pingCache = root.pingCache;\n  if (null === pingCache) {\n    pingCache = root.pingCache = new PossiblyWeakMap();\n    var threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else\n    (threadIDs = pingCache.get(wakeable)),\n      void 0 === threadIDs &&\n        ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n  threadIDs.has(lanes) ||\n    ((workInProgressRootDidAttachPingListener = !0),\n    threadIDs.add(lanes),\n    (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n    wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n  null !== pingCache && pingCache.delete(wakeable);\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n  root.warmLanes &= ~pingedLanes;\n  workInProgressRoot === root &&\n    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n    (4 === workInProgressRootExitStatus ||\n    (3 === workInProgressRootExitStatus &&\n      (workInProgressRootRenderLanes & 62914560) ===\n        workInProgressRootRenderLanes &&\n      300 > now() - globalMostRecentFallbackTime)\n      ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n      : (workInProgressRootPingedLanes |= pingedLanes),\n    workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n      (workInProgressSuspendedRetryLanes = 0));\n  ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  0 === retryLane && (retryLane = claimNextRetryLane());\n  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n  null !== boundaryFiber &&\n    (markRootUpdated$1(boundaryFiber, retryLane),\n    ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState,\n    retryLane = 0;\n  null !== suspenseState && (retryLane = suspenseState.retryLane);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = 0;\n  switch (boundaryFiber.tag) {\n    case 13:\n      var retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n      null !== suspenseState && (retryLane = suspenseState.retryLane);\n      break;\n    case 19:\n      retryCache = boundaryFiber.stateNode;\n      break;\n    case 22:\n      retryCache = boundaryFiber.stateNode._retryCache;\n      break;\n    default:\n      throw Error(formatProdErrorMessage(314));\n  }\n  null !== retryCache && retryCache.delete(wakeable);\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n  return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n  lastScheduledRoot = null,\n  didScheduleMicrotask = !1,\n  mightHavePendingSyncWork = !1,\n  isFlushingWork = !1,\n  currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n  root !== lastScheduledRoot &&\n    null === root.next &&\n    (null === lastScheduledRoot\n      ? (firstScheduledRoot = lastScheduledRoot = root)\n      : (lastScheduledRoot = lastScheduledRoot.next = root));\n  mightHavePendingSyncWork = !0;\n  didScheduleMicrotask ||\n    ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n  if (!isFlushingWork && mightHavePendingSyncWork) {\n    isFlushingWork = !0;\n    do {\n      var didPerformSomeWork = !1;\n      for (var root$174 = firstScheduledRoot; null !== root$174; ) {\n        if (!onlyLegacy)\n          if (0 !== syncTransitionLanes) {\n            var pendingLanes = root$174.pendingLanes;\n            if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n            else {\n              var suspendedLanes = root$174.suspendedLanes,\n                pingedLanes = root$174.pingedLanes;\n              JSCompiler_inline_result =\n                (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n              JSCompiler_inline_result &=\n                pendingLanes & ~(suspendedLanes & ~pingedLanes);\n              JSCompiler_inline_result =\n                JSCompiler_inline_result & 201326741\n                  ? (JSCompiler_inline_result & 201326741) | 1\n                  : JSCompiler_inline_result\n                    ? JSCompiler_inline_result | 2\n                    : 0;\n            }\n            0 !== JSCompiler_inline_result &&\n              ((didPerformSomeWork = !0),\n              performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n          } else\n            (JSCompiler_inline_result = workInProgressRootRenderLanes),\n              (JSCompiler_inline_result = getNextLanes(\n                root$174,\n                root$174 === workInProgressRoot ? JSCompiler_inline_result : 0,\n                null !== root$174.cancelPendingCommit ||\n                  -1 !== root$174.timeoutHandle\n              )),\n              0 === (JSCompiler_inline_result & 3) ||\n                checkIfRootIsPrerendering(root$174, JSCompiler_inline_result) ||\n                ((didPerformSomeWork = !0),\n                performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n        root$174 = root$174.next;\n      }\n    } while (didPerformSomeWork);\n    isFlushingWork = !1;\n  }\n}\nfunction processRootScheduleInImmediateTask() {\n  processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n  mightHavePendingSyncWork = didScheduleMicrotask = !1;\n  var syncTransitionLanes = 0;\n  0 !== currentEventTransitionLane &&\n    (shouldAttemptEagerTransition() &&\n      (syncTransitionLanes = currentEventTransitionLane),\n    (currentEventTransitionLane = 0));\n  for (\n    var currentTime = now(), prev = null, root = firstScheduledRoot;\n    null !== root;\n\n  ) {\n    var next = root.next,\n      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n    if (0 === nextLanes)\n      (root.next = null),\n        null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n        null === next && (lastScheduledRoot = prev);\n    else if (\n      ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n    )\n      mightHavePendingSyncWork = !0;\n    root = next;\n  }\n  flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n  for (\n    var suspendedLanes = root.suspendedLanes,\n      pingedLanes = root.pingedLanes,\n      expirationTimes = root.expirationTimes,\n      lanes = root.pendingLanes & -62914561;\n    0 < lanes;\n\n  ) {\n    var index$3 = 31 - clz32(lanes),\n      lane = 1 << index$3,\n      expirationTime = expirationTimes[index$3];\n    if (-1 === expirationTime) {\n      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n        expirationTimes[index$3] = computeExpirationTime(lane, currentTime);\n    } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n    lanes &= ~lane;\n  }\n  currentTime = workInProgressRoot;\n  suspendedLanes = workInProgressRootRenderLanes;\n  suspendedLanes = getNextLanes(\n    root,\n    root === currentTime ? suspendedLanes : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  pingedLanes = root.callbackNode;\n  if (\n    0 === suspendedLanes ||\n    (root === currentTime &&\n      (2 === workInProgressSuspendedReason ||\n        9 === workInProgressSuspendedReason)) ||\n    null !== root.cancelPendingCommit\n  )\n    return (\n      null !== pingedLanes &&\n        null !== pingedLanes &&\n        cancelCallback$1(pingedLanes),\n      (root.callbackNode = null),\n      (root.callbackPriority = 0)\n    );\n  if (\n    0 === (suspendedLanes & 3) ||\n    checkIfRootIsPrerendering(root, suspendedLanes)\n  ) {\n    currentTime = suspendedLanes & -suspendedLanes;\n    if (currentTime === root.callbackPriority) return currentTime;\n    null !== pingedLanes && cancelCallback$1(pingedLanes);\n    switch (lanesToEventPriority(suspendedLanes)) {\n      case 2:\n      case 8:\n        suspendedLanes = UserBlockingPriority;\n        break;\n      case 32:\n        suspendedLanes = NormalPriority$1;\n        break;\n      case 268435456:\n        suspendedLanes = IdlePriority;\n        break;\n      default:\n        suspendedLanes = NormalPriority$1;\n    }\n    pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n    suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n    root.callbackPriority = currentTime;\n    root.callbackNode = suspendedLanes;\n    return currentTime;\n  }\n  null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n  root.callbackPriority = 2;\n  root.callbackNode = null;\n  return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n  if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n    return (root.callbackNode = null), (root.callbackPriority = 0), null;\n  var originalCallbackNode = root.callbackNode;\n  if (flushPendingEffects(!0) && root.callbackNode !== originalCallbackNode)\n    return null;\n  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n    root,\n    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n  );\n  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n  scheduleTaskForRootDuringMicrotask(root, now());\n  return null != root.callbackNode && root.callbackNode === originalCallbackNode\n    ? performWorkOnRootViaSchedulerTask.bind(null, root)\n    : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n  if (flushPendingEffects()) return null;\n  performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n  scheduleMicrotask(function () {\n    0 !== (executionContext & 6)\n      ? scheduleCallback$3(\n          ImmediatePriority,\n          processRootScheduleInImmediateTask\n        )\n      : processRootScheduleInMicrotask();\n  });\n}\nfunction requestTransitionLane() {\n  0 === currentEventTransitionLane &&\n    (currentEventTransitionLane = claimNextTransitionLane());\n  return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n  return null == actionProp ||\n    \"symbol\" === typeof actionProp ||\n    \"boolean\" === typeof actionProp\n    ? null\n    : \"function\" === typeof actionProp\n      ? actionProp\n      : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n  var temp = submitter.ownerDocument.createElement(\"input\");\n  temp.name = submitter.name;\n  temp.value = submitter.value;\n  form.id && temp.setAttribute(\"form\", form.id);\n  submitter.parentNode.insertBefore(temp, submitter);\n  form = new FormData(form);\n  temp.parentNode.removeChild(temp);\n  return form;\n}\nfunction extractEvents$1(\n  dispatchQueue,\n  domEventName,\n  maybeTargetInst,\n  nativeEvent,\n  nativeEventTarget\n) {\n  if (\n    \"submit\" === domEventName &&\n    maybeTargetInst &&\n    maybeTargetInst.stateNode === nativeEventTarget\n  ) {\n    var action = coerceFormActionProp(\n        (nativeEventTarget[internalPropsKey] || null).action\n      ),\n      submitter = nativeEvent.submitter;\n    submitter &&\n      ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n        ? coerceFormActionProp(domEventName.formAction)\n        : submitter.getAttribute(\"formAction\")),\n      null !== domEventName && ((action = domEventName), (submitter = null)));\n    var event = new SyntheticEvent(\n      \"action\",\n      \"action\",\n      null,\n      nativeEvent,\n      nativeEventTarget\n    );\n    dispatchQueue.push({\n      event: event,\n      listeners: [\n        {\n          instance: null,\n          listener: function () {\n            if (nativeEvent.defaultPrevented) {\n              if (0 !== currentEventTransitionLane) {\n                var formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget);\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  null,\n                  formData\n                );\n              }\n            } else\n              \"function\" === typeof action &&\n                (event.preventDefault(),\n                (formData = submitter\n                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n                  : new FormData(nativeEventTarget)),\n                startHostTransition(\n                  maybeTargetInst,\n                  {\n                    pending: !0,\n                    data: formData,\n                    method: nativeEventTarget.method,\n                    action: action\n                  },\n                  action,\n                  formData\n                ));\n          },\n          currentTarget: nativeEventTarget\n        }\n      ]\n    });\n  }\n}\nfor (\n  var i$jscomp$inline_1528 = 0;\n  i$jscomp$inline_1528 < simpleEventPluginEvents.length;\n  i$jscomp$inline_1528++\n) {\n  var eventName$jscomp$inline_1529 =\n      simpleEventPluginEvents[i$jscomp$inline_1528],\n    domEventName$jscomp$inline_1530 =\n      eventName$jscomp$inline_1529.toLowerCase(),\n    capitalizedEvent$jscomp$inline_1531 =\n      eventName$jscomp$inline_1529[0].toUpperCase() +\n      eventName$jscomp$inline_1529.slice(1);\n  registerSimpleEvent(\n    domEventName$jscomp$inline_1530,\n    \"on\" + capitalizedEvent$jscomp$inline_1531\n  );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n  \"onChange\",\n  \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onSelect\",\n  \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n    \" \"\n  )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n  \"compositionend\",\n  \"keypress\",\n  \"textInput\",\n  \"paste\"\n]);\nregisterTwoPhaseEvent(\n  \"onCompositionEnd\",\n  \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionStart\",\n  \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n  \"onCompositionUpdate\",\n  \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n    \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n      \" \"\n    ),\n  nonDelegatedEvents = new Set(\n    \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n      .split(\" \")\n      .concat(mediaEventTypes)\n  );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  eventSystemFlags = 0 !== (eventSystemFlags & 4);\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n      event = _dispatchQueue$i.event;\n    _dispatchQueue$i = _dispatchQueue$i.listeners;\n    a: {\n      var previousInstance = void 0;\n      if (eventSystemFlags)\n        for (\n          var i$jscomp$0 = _dispatchQueue$i.length - 1;\n          0 <= i$jscomp$0;\n          i$jscomp$0--\n        ) {\n          var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n            instance = _dispatchListeners$i.instance,\n            currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n      else\n        for (\n          i$jscomp$0 = 0;\n          i$jscomp$0 < _dispatchQueue$i.length;\n          i$jscomp$0++\n        ) {\n          _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n          instance = _dispatchListeners$i.instance;\n          currentTarget = _dispatchListeners$i.currentTarget;\n          _dispatchListeners$i = _dispatchListeners$i.listener;\n          if (instance !== previousInstance && event.isPropagationStopped())\n            break a;\n          previousInstance = _dispatchListeners$i;\n          event.currentTarget = currentTarget;\n          try {\n            previousInstance(event);\n          } catch (error) {\n            reportGlobalError(error);\n          }\n          event.currentTarget = null;\n          previousInstance = instance;\n        }\n    }\n  }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n  void 0 === JSCompiler_inline_result &&\n    (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n      new Set());\n  var listenerSetKey = domEventName + \"__bubble\";\n  JSCompiler_inline_result.has(listenerSetKey) ||\n    (addTrappedEventListener(targetElement, domEventName, 2, !1),\n    JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  var eventSystemFlags = 0;\n  isCapturePhaseListener && (eventSystemFlags |= 4);\n  addTrappedEventListener(\n    target,\n    domEventName,\n    eventSystemFlags,\n    isCapturePhaseListener\n  );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = !0;\n    allNativeEvents.forEach(function (domEventName) {\n      \"selectionchange\" !== domEventName &&\n        (nonDelegatedEvents.has(domEventName) ||\n          listenToNativeEvent(domEventName, !1, rootContainerElement),\n        listenToNativeEvent(domEventName, !0, rootContainerElement));\n    });\n    var ownerDocument =\n      9 === rootContainerElement.nodeType\n        ? rootContainerElement\n        : rootContainerElement.ownerDocument;\n    null === ownerDocument ||\n      ownerDocument[listeningMarker] ||\n      ((ownerDocument[listeningMarker] = !0),\n      listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n  }\n}\nfunction addTrappedEventListener(\n  targetContainer,\n  domEventName,\n  eventSystemFlags,\n  isCapturePhaseListener\n) {\n  switch (getEventPriority(domEventName)) {\n    case 2:\n      var listenerWrapper = dispatchDiscreteEvent;\n      break;\n    case 8:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n    default:\n      listenerWrapper = dispatchEvent;\n  }\n  eventSystemFlags = listenerWrapper.bind(\n    null,\n    domEventName,\n    eventSystemFlags,\n    targetContainer\n  );\n  listenerWrapper = void 0;\n  !passiveBrowserEventsSupported ||\n    (\"touchstart\" !== domEventName &&\n      \"touchmove\" !== domEventName &&\n      \"wheel\" !== domEventName) ||\n    (listenerWrapper = !0);\n  isCapturePhaseListener\n    ? void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          capture: !0,\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n    : void 0 !== listenerWrapper\n      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n          passive: listenerWrapper\n        })\n      : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n  domEventName,\n  eventSystemFlags,\n  nativeEvent,\n  targetInst$jscomp$0,\n  targetContainer\n) {\n  var ancestorInst = targetInst$jscomp$0;\n  if (\n    0 === (eventSystemFlags & 1) &&\n    0 === (eventSystemFlags & 2) &&\n    null !== targetInst$jscomp$0\n  )\n    a: for (;;) {\n      if (null === targetInst$jscomp$0) return;\n      var nodeTag = targetInst$jscomp$0.tag;\n      if (3 === nodeTag || 4 === nodeTag) {\n        var container = targetInst$jscomp$0.stateNode.containerInfo;\n        if (container === targetContainer) break;\n        if (4 === nodeTag)\n          for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n            var grandTag = nodeTag.tag;\n            if (\n              (3 === grandTag || 4 === grandTag) &&\n              nodeTag.stateNode.containerInfo === targetContainer\n            )\n              return;\n            nodeTag = nodeTag.return;\n          }\n        for (; null !== container; ) {\n          nodeTag = getClosestInstanceFromNode(container);\n          if (null === nodeTag) return;\n          grandTag = nodeTag.tag;\n          if (\n            5 === grandTag ||\n            6 === grandTag ||\n            26 === grandTag ||\n            27 === grandTag\n          ) {\n            targetInst$jscomp$0 = ancestorInst = nodeTag;\n            continue a;\n          }\n          container = container.parentNode;\n        }\n      }\n      targetInst$jscomp$0 = targetInst$jscomp$0.return;\n    }\n  batchedUpdates$1(function () {\n    var targetInst = ancestorInst,\n      nativeEventTarget = getEventTarget(nativeEvent),\n      dispatchQueue = [];\n    a: {\n      var reactName = topLevelEventsToReactNames.get(domEventName);\n      if (void 0 !== reactName) {\n        var SyntheticEventCtor = SyntheticEvent,\n          reactEventType = domEventName;\n        switch (domEventName) {\n          case \"keypress\":\n            if (0 === getEventCharCode(nativeEvent)) break a;\n          case \"keydown\":\n          case \"keyup\":\n            SyntheticEventCtor = SyntheticKeyboardEvent;\n            break;\n          case \"focusin\":\n            reactEventType = \"focus\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"focusout\":\n            reactEventType = \"blur\";\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"beforeblur\":\n          case \"afterblur\":\n            SyntheticEventCtor = SyntheticFocusEvent;\n            break;\n          case \"click\":\n            if (2 === nativeEvent.button) break a;\n          case \"auxclick\":\n          case \"dblclick\":\n          case \"mousedown\":\n          case \"mousemove\":\n          case \"mouseup\":\n          case \"mouseout\":\n          case \"mouseover\":\n          case \"contextmenu\":\n            SyntheticEventCtor = SyntheticMouseEvent;\n            break;\n          case \"drag\":\n          case \"dragend\":\n          case \"dragenter\":\n          case \"dragexit\":\n          case \"dragleave\":\n          case \"dragover\":\n          case \"dragstart\":\n          case \"drop\":\n            SyntheticEventCtor = SyntheticDragEvent;\n            break;\n          case \"touchcancel\":\n          case \"touchend\":\n          case \"touchmove\":\n          case \"touchstart\":\n            SyntheticEventCtor = SyntheticTouchEvent;\n            break;\n          case ANIMATION_END:\n          case ANIMATION_ITERATION:\n          case ANIMATION_START:\n            SyntheticEventCtor = SyntheticAnimationEvent;\n            break;\n          case TRANSITION_END:\n            SyntheticEventCtor = SyntheticTransitionEvent;\n            break;\n          case \"scroll\":\n          case \"scrollend\":\n            SyntheticEventCtor = SyntheticUIEvent;\n            break;\n          case \"wheel\":\n            SyntheticEventCtor = SyntheticWheelEvent;\n            break;\n          case \"copy\":\n          case \"cut\":\n          case \"paste\":\n            SyntheticEventCtor = SyntheticClipboardEvent;\n            break;\n          case \"gotpointercapture\":\n          case \"lostpointercapture\":\n          case \"pointercancel\":\n          case \"pointerdown\":\n          case \"pointermove\":\n          case \"pointerout\":\n          case \"pointerover\":\n          case \"pointerup\":\n            SyntheticEventCtor = SyntheticPointerEvent;\n            break;\n          case \"toggle\":\n          case \"beforetoggle\":\n            SyntheticEventCtor = SyntheticToggleEvent;\n        }\n        var inCapturePhase = 0 !== (eventSystemFlags & 4),\n          accumulateTargetOnly =\n            !inCapturePhase &&\n            (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n          reactEventName = inCapturePhase\n            ? null !== reactName\n              ? reactName + \"Capture\"\n              : null\n            : reactName;\n        inCapturePhase = [];\n        for (\n          var instance = targetInst, lastHostComponent;\n          null !== instance;\n\n        ) {\n          var _instance = instance;\n          lastHostComponent = _instance.stateNode;\n          _instance = _instance.tag;\n          (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n            null === lastHostComponent ||\n            null === reactEventName ||\n            ((_instance = getListener(instance, reactEventName)),\n            null != _instance &&\n              inCapturePhase.push(\n                createDispatchListener(instance, _instance, lastHostComponent)\n              ));\n          if (accumulateTargetOnly) break;\n          instance = instance.return;\n        }\n        0 < inCapturePhase.length &&\n          ((reactName = new SyntheticEventCtor(\n            reactName,\n            reactEventType,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n      }\n    }\n    if (0 === (eventSystemFlags & 7)) {\n      a: {\n        reactName =\n          \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n        SyntheticEventCtor =\n          \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n        if (\n          reactName &&\n          nativeEvent !== currentReplayingEvent &&\n          (reactEventType =\n            nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n          (getClosestInstanceFromNode(reactEventType) ||\n            reactEventType[internalContainerInstanceKey])\n        )\n          break a;\n        if (SyntheticEventCtor || reactName) {\n          reactName =\n            nativeEventTarget.window === nativeEventTarget\n              ? nativeEventTarget\n              : (reactName = nativeEventTarget.ownerDocument)\n                ? reactName.defaultView || reactName.parentWindow\n                : window;\n          if (SyntheticEventCtor) {\n            if (\n              ((reactEventType =\n                nativeEvent.relatedTarget || nativeEvent.toElement),\n              (SyntheticEventCtor = targetInst),\n              (reactEventType = reactEventType\n                ? getClosestInstanceFromNode(reactEventType)\n                : null),\n              null !== reactEventType &&\n                ((accumulateTargetOnly =\n                  getNearestMountedFiber(reactEventType)),\n                (inCapturePhase = reactEventType.tag),\n                reactEventType !== accumulateTargetOnly ||\n                  (5 !== inCapturePhase &&\n                    27 !== inCapturePhase &&\n                    6 !== inCapturePhase)))\n            )\n              reactEventType = null;\n          } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n          if (SyntheticEventCtor !== reactEventType) {\n            inCapturePhase = SyntheticMouseEvent;\n            _instance = \"onMouseLeave\";\n            reactEventName = \"onMouseEnter\";\n            instance = \"mouse\";\n            if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n              (inCapturePhase = SyntheticPointerEvent),\n                (_instance = \"onPointerLeave\"),\n                (reactEventName = \"onPointerEnter\"),\n                (instance = \"pointer\");\n            accumulateTargetOnly =\n              null == SyntheticEventCtor\n                ? reactName\n                : getNodeFromInstance(SyntheticEventCtor);\n            lastHostComponent =\n              null == reactEventType\n                ? reactName\n                : getNodeFromInstance(reactEventType);\n            reactName = new inCapturePhase(\n              _instance,\n              instance + \"leave\",\n              SyntheticEventCtor,\n              nativeEvent,\n              nativeEventTarget\n            );\n            reactName.target = accumulateTargetOnly;\n            reactName.relatedTarget = lastHostComponent;\n            _instance = null;\n            getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n              ((inCapturePhase = new inCapturePhase(\n                reactEventName,\n                instance + \"enter\",\n                reactEventType,\n                nativeEvent,\n                nativeEventTarget\n              )),\n              (inCapturePhase.target = lastHostComponent),\n              (inCapturePhase.relatedTarget = accumulateTargetOnly),\n              (_instance = inCapturePhase));\n            accumulateTargetOnly = _instance;\n            if (SyntheticEventCtor && reactEventType)\n              b: {\n                inCapturePhase = SyntheticEventCtor;\n                reactEventName = reactEventType;\n                instance = 0;\n                for (\n                  lastHostComponent = inCapturePhase;\n                  lastHostComponent;\n                  lastHostComponent = getParent(lastHostComponent)\n                )\n                  instance++;\n                lastHostComponent = 0;\n                for (\n                  _instance = reactEventName;\n                  _instance;\n                  _instance = getParent(_instance)\n                )\n                  lastHostComponent++;\n                for (; 0 < instance - lastHostComponent; )\n                  (inCapturePhase = getParent(inCapturePhase)), instance--;\n                for (; 0 < lastHostComponent - instance; )\n                  (reactEventName = getParent(reactEventName)),\n                    lastHostComponent--;\n                for (; instance--; ) {\n                  if (\n                    inCapturePhase === reactEventName ||\n                    (null !== reactEventName &&\n                      inCapturePhase === reactEventName.alternate)\n                  )\n                    break b;\n                  inCapturePhase = getParent(inCapturePhase);\n                  reactEventName = getParent(reactEventName);\n                }\n                inCapturePhase = null;\n              }\n            else inCapturePhase = null;\n            null !== SyntheticEventCtor &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                reactName,\n                SyntheticEventCtor,\n                inCapturePhase,\n                !1\n              );\n            null !== reactEventType &&\n              null !== accumulateTargetOnly &&\n              accumulateEnterLeaveListenersForEvent(\n                dispatchQueue,\n                accumulateTargetOnly,\n                reactEventType,\n                inCapturePhase,\n                !0\n              );\n          }\n        }\n      }\n      a: {\n        reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n        SyntheticEventCtor =\n          reactName.nodeName && reactName.nodeName.toLowerCase();\n        if (\n          \"select\" === SyntheticEventCtor ||\n          (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n        )\n          var getTargetInstFunc = getTargetInstForChangeEvent;\n        else if (isTextInputElement(reactName))\n          if (isInputEventSupported)\n            getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n          else {\n            getTargetInstFunc = getTargetInstForInputEventPolyfill;\n            var handleEventFunc = handleEventsForInputEventPolyfill;\n          }\n        else\n          (SyntheticEventCtor = reactName.nodeName),\n            !SyntheticEventCtor ||\n            \"input\" !== SyntheticEventCtor.toLowerCase() ||\n            (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n              ? targetInst &&\n                isCustomElement(targetInst.elementType) &&\n                (getTargetInstFunc = getTargetInstForChangeEvent)\n              : (getTargetInstFunc = getTargetInstForClickEvent);\n        if (\n          getTargetInstFunc &&\n          (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n        ) {\n          createAndAccumulateChangeEvent(\n            dispatchQueue,\n            getTargetInstFunc,\n            nativeEvent,\n            nativeEventTarget\n          );\n          break a;\n        }\n        handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n        \"focusout\" === domEventName &&\n          targetInst &&\n          \"number\" === reactName.type &&\n          null != targetInst.memoizedProps.value &&\n          setDefaultValue(reactName, \"number\", reactName.value);\n      }\n      handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n      switch (domEventName) {\n        case \"focusin\":\n          if (\n            isTextInputElement(handleEventFunc) ||\n            \"true\" === handleEventFunc.contentEditable\n          )\n            (activeElement = handleEventFunc),\n              (activeElementInst = targetInst),\n              (lastSelection = null);\n          break;\n        case \"focusout\":\n          lastSelection = activeElementInst = activeElement = null;\n          break;\n        case \"mousedown\":\n          mouseDown = !0;\n          break;\n        case \"contextmenu\":\n        case \"mouseup\":\n        case \"dragend\":\n          mouseDown = !1;\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n          break;\n        case \"selectionchange\":\n          if (skipSelectionChangeEvent) break;\n        case \"keydown\":\n        case \"keyup\":\n          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      }\n      var fallbackData;\n      if (canUseCompositionEvent)\n        b: {\n          switch (domEventName) {\n            case \"compositionstart\":\n              var eventType = \"onCompositionStart\";\n              break b;\n            case \"compositionend\":\n              eventType = \"onCompositionEnd\";\n              break b;\n            case \"compositionupdate\":\n              eventType = \"onCompositionUpdate\";\n              break b;\n          }\n          eventType = void 0;\n        }\n      else\n        isComposing\n          ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n            (eventType = \"onCompositionEnd\")\n          : \"keydown\" === domEventName &&\n            229 === nativeEvent.keyCode &&\n            (eventType = \"onCompositionStart\");\n      eventType &&\n        (useFallbackCompositionData &&\n          \"ko\" !== nativeEvent.locale &&\n          (isComposing || \"onCompositionStart\" !== eventType\n            ? \"onCompositionEnd\" === eventType &&\n              isComposing &&\n              (fallbackData = getData())\n            : ((root = nativeEventTarget),\n              (startText = \"value\" in root ? root.value : root.textContent),\n              (isComposing = !0))),\n        (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n        0 < handleEventFunc.length &&\n          ((eventType = new SyntheticCompositionEvent(\n            eventType,\n            domEventName,\n            null,\n            nativeEvent,\n            nativeEventTarget\n          )),\n          dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n          fallbackData\n            ? (eventType.data = fallbackData)\n            : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n              null !== fallbackData && (eventType.data = fallbackData))));\n      if (\n        (fallbackData = canUseTextInputEvent\n          ? getNativeBeforeInputChars(domEventName, nativeEvent)\n          : getFallbackBeforeInputChars(domEventName, nativeEvent))\n      )\n        (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n          0 < eventType.length &&\n            ((handleEventFunc = new SyntheticCompositionEvent(\n              \"onBeforeInput\",\n              \"beforeinput\",\n              null,\n              nativeEvent,\n              nativeEventTarget\n            )),\n            dispatchQueue.push({\n              event: handleEventFunc,\n              listeners: eventType\n            }),\n            (handleEventFunc.data = fallbackData));\n      extractEvents$1(\n        dispatchQueue,\n        domEventName,\n        targetInst,\n        nativeEvent,\n        nativeEventTarget\n      );\n    }\n    processDispatchQueue(dispatchQueue, eventSystemFlags);\n  });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  for (\n    var captureName = reactName + \"Capture\", listeners = [];\n    null !== targetFiber;\n\n  ) {\n    var _instance2 = targetFiber,\n      stateNode = _instance2.stateNode;\n    _instance2 = _instance2.tag;\n    (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n      null === stateNode ||\n      ((_instance2 = getListener(targetFiber, captureName)),\n      null != _instance2 &&\n        listeners.unshift(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ),\n      (_instance2 = getListener(targetFiber, reactName)),\n      null != _instance2 &&\n        listeners.push(\n          createDispatchListener(targetFiber, _instance2, stateNode)\n        ));\n    if (3 === targetFiber.tag) return listeners;\n    targetFiber = targetFiber.return;\n  }\n  return [];\n}\nfunction getParent(inst) {\n  if (null === inst) return null;\n  do inst = inst.return;\n  while (inst && 5 !== inst.tag && 27 !== inst.tag);\n  return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n  dispatchQueue,\n  event,\n  target,\n  common,\n  inCapturePhase\n) {\n  for (\n    var registrationName = event._reactName, listeners = [];\n    null !== target && target !== common;\n\n  ) {\n    var _instance3 = target,\n      alternate = _instance3.alternate,\n      stateNode = _instance3.stateNode;\n    _instance3 = _instance3.tag;\n    if (null !== alternate && alternate === common) break;\n    (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n      null === stateNode ||\n      ((alternate = stateNode),\n      inCapturePhase\n        ? ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.unshift(\n              createDispatchListener(target, stateNode, alternate)\n            ))\n        : inCapturePhase ||\n          ((stateNode = getListener(target, registrationName)),\n          null != stateNode &&\n            listeners.push(\n              createDispatchListener(target, stateNode, alternate)\n            )));\n    target = target.return;\n  }\n  0 !== listeners.length &&\n    dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n  NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  return (\"string\" === typeof markup ? markup : \"\" + markup)\n    .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n    .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n  clientText = normalizeMarkupForTextOrAttribute(clientText);\n  return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction noop$1() {}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"children\":\n      \"string\" === typeof value\n        ? \"body\" === tag ||\n          (\"textarea\" === tag && \"\" === value) ||\n          setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          \"body\" !== tag &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"className\":\n      setValueForKnownAttribute(domElement, \"class\", value);\n      break;\n    case \"tabIndex\":\n      setValueForKnownAttribute(domElement, \"tabindex\", value);\n      break;\n    case \"dir\":\n    case \"role\":\n    case \"viewBox\":\n    case \"width\":\n    case \"height\":\n      setValueForKnownAttribute(domElement, key, value);\n      break;\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"data\":\n      if (\"object\" !== tag) {\n        setValueForKnownAttribute(domElement, \"data\", value);\n        break;\n      }\n    case \"src\":\n    case \"href\":\n      if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"action\":\n    case \"formAction\":\n      if (\"function\" === typeof value) {\n        domElement.setAttribute(\n          key,\n          \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n        );\n        break;\n      } else\n        \"function\" === typeof prevValue &&\n          (\"formAction\" === key\n            ? (\"input\" !== tag &&\n                setProp(domElement, tag, \"name\", props.name, props, null),\n              setProp(\n                domElement,\n                tag,\n                \"formEncType\",\n                props.formEncType,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formMethod\",\n                props.formMethod,\n                props,\n                null\n              ),\n              setProp(\n                domElement,\n                tag,\n                \"formTarget\",\n                props.formTarget,\n                props,\n                null\n              ))\n            : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n              setProp(domElement, tag, \"method\", props.method, props, null),\n              setProp(domElement, tag, \"target\", props.target, props, null)));\n      if (\n        null == value ||\n        \"symbol\" === typeof value ||\n        \"boolean\" === typeof value\n      ) {\n        domElement.removeAttribute(key);\n        break;\n      }\n      value = sanitizeURL(\"\" + value);\n      domElement.setAttribute(key, value);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"multiple\":\n      domElement.multiple =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"muted\":\n      domElement.muted =\n        value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"defaultValue\":\n    case \"defaultChecked\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"autoFocus\":\n      break;\n    case \"xlinkHref\":\n      if (\n        null == value ||\n        \"function\" === typeof value ||\n        \"boolean\" === typeof value ||\n        \"symbol\" === typeof value\n      ) {\n        domElement.removeAttribute(\"xlink:href\");\n        break;\n      }\n      key = sanitizeURL(\"\" + value);\n      domElement.setAttributeNS(\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:href\",\n        key\n      );\n      break;\n    case \"contentEditable\":\n    case \"spellCheck\":\n    case \"draggable\":\n    case \"value\":\n    case \"autoReverse\":\n    case \"externalResourcesRequired\":\n    case \"focusable\":\n    case \"preserveAlpha\":\n      null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\" + value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"inert\":\n    case \"allowFullScreen\":\n    case \"async\":\n    case \"autoPlay\":\n    case \"controls\":\n    case \"default\":\n    case \"defer\":\n    case \"disabled\":\n    case \"disablePictureInPicture\":\n    case \"disableRemotePlayback\":\n    case \"formNoValidate\":\n    case \"hidden\":\n    case \"loop\":\n    case \"noModule\":\n    case \"noValidate\":\n    case \"open\":\n    case \"playsInline\":\n    case \"readOnly\":\n    case \"required\":\n    case \"reversed\":\n    case \"scoped\":\n    case \"seamless\":\n    case \"itemScope\":\n      value && \"function\" !== typeof value && \"symbol\" !== typeof value\n        ? domElement.setAttribute(key, \"\")\n        : domElement.removeAttribute(key);\n      break;\n    case \"capture\":\n    case \"download\":\n      !0 === value\n        ? domElement.setAttribute(key, \"\")\n        : !1 !== value &&\n            null != value &&\n            \"function\" !== typeof value &&\n            \"symbol\" !== typeof value\n          ? domElement.setAttribute(key, value)\n          : domElement.removeAttribute(key);\n      break;\n    case \"cols\":\n    case \"rows\":\n    case \"size\":\n    case \"span\":\n      null != value &&\n      \"function\" !== typeof value &&\n      \"symbol\" !== typeof value &&\n      !isNaN(value) &&\n      1 <= value\n        ? domElement.setAttribute(key, value)\n        : domElement.removeAttribute(key);\n      break;\n    case \"rowSpan\":\n    case \"start\":\n      null == value ||\n      \"function\" === typeof value ||\n      \"symbol\" === typeof value ||\n      isNaN(value)\n        ? domElement.removeAttribute(key)\n        : domElement.setAttribute(key, value);\n      break;\n    case \"popover\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      setValueForAttribute(domElement, \"popover\", value);\n      break;\n    case \"xlinkActuate\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:actuate\",\n        value\n      );\n      break;\n    case \"xlinkArcrole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:arcrole\",\n        value\n      );\n      break;\n    case \"xlinkRole\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:role\",\n        value\n      );\n      break;\n    case \"xlinkShow\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:show\",\n        value\n      );\n      break;\n    case \"xlinkTitle\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:title\",\n        value\n      );\n      break;\n    case \"xlinkType\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/1999/xlink\",\n        \"xlink:type\",\n        value\n      );\n      break;\n    case \"xmlBase\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:base\",\n        value\n      );\n      break;\n    case \"xmlLang\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:lang\",\n        value\n      );\n      break;\n    case \"xmlSpace\":\n      setValueForNamespacedAttribute(\n        domElement,\n        \"http://www.w3.org/XML/1998/namespace\",\n        \"xml:space\",\n        value\n      );\n      break;\n    case \"is\":\n      setValueForAttribute(domElement, \"is\", value);\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (\n        !(2 < key.length) ||\n        (\"o\" !== key[0] && \"O\" !== key[0]) ||\n        (\"n\" !== key[1] && \"N\" !== key[1])\n      )\n        (key = aliases.get(key) || key),\n          setValueForAttribute(domElement, key, value);\n  }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n  switch (key) {\n    case \"style\":\n      setValueForStyles(domElement, value, prevValue);\n      break;\n    case \"dangerouslySetInnerHTML\":\n      if (null != value) {\n        if (\"object\" !== typeof value || !(\"__html\" in value))\n          throw Error(formatProdErrorMessage(61));\n        key = value.__html;\n        if (null != key) {\n          if (null != props.children) throw Error(formatProdErrorMessage(60));\n          domElement.innerHTML = key;\n        }\n      }\n      break;\n    case \"children\":\n      \"string\" === typeof value\n        ? setTextContent(domElement, value)\n        : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n          setTextContent(domElement, \"\" + value);\n      break;\n    case \"onScroll\":\n      null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n      break;\n    case \"onScrollEnd\":\n      null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n      break;\n    case \"onClick\":\n      null != value && (domElement.onclick = noop$1);\n      break;\n    case \"suppressContentEditableWarning\":\n    case \"suppressHydrationWarning\":\n    case \"innerHTML\":\n    case \"ref\":\n      break;\n    case \"innerText\":\n    case \"textContent\":\n      break;\n    default:\n      if (!registrationNameDependencies.hasOwnProperty(key))\n        a: {\n          if (\n            \"o\" === key[0] &&\n            \"n\" === key[1] &&\n            ((props = key.endsWith(\"Capture\")),\n            (tag = key.slice(2, props ? key.length - 7 : void 0)),\n            (prevValue = domElement[internalPropsKey] || null),\n            (prevValue = null != prevValue ? prevValue[key] : null),\n            \"function\" === typeof prevValue &&\n              domElement.removeEventListener(tag, prevValue, props),\n            \"function\" === typeof value)\n          ) {\n            \"function\" !== typeof prevValue &&\n              null !== prevValue &&\n              (key in domElement\n                ? (domElement[key] = null)\n                : domElement.hasAttribute(key) &&\n                  domElement.removeAttribute(key));\n            domElement.addEventListener(tag, value, props);\n            break a;\n          }\n          key in domElement\n            ? (domElement[key] = value)\n            : !0 === value\n              ? domElement.setAttribute(key, \"\")\n              : setValueForAttribute(domElement, key, value);\n        }\n  }\n}\nfunction setInitialProperties(domElement, tag, props) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"img\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      var hasSrc = !1,\n        hasSrcSet = !1,\n        propKey;\n      for (propKey in props)\n        if (props.hasOwnProperty(propKey)) {\n          var propValue = props[propKey];\n          if (null != propValue)\n            switch (propKey) {\n              case \"src\":\n                hasSrc = !0;\n                break;\n              case \"srcSet\":\n                hasSrcSet = !0;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                throw Error(formatProdErrorMessage(137, tag));\n              default:\n                setProp(domElement, tag, propKey, propValue, props, null);\n            }\n        }\n      hasSrcSet &&\n        setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n      hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n      return;\n    case \"input\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      var defaultValue = (propKey = propValue = hasSrcSet = null),\n        checked = null,\n        defaultChecked = null;\n      for (hasSrc in props)\n        if (props.hasOwnProperty(hasSrc)) {\n          var propValue$188 = props[hasSrc];\n          if (null != propValue$188)\n            switch (hasSrc) {\n              case \"name\":\n                hasSrcSet = propValue$188;\n                break;\n              case \"type\":\n                propValue = propValue$188;\n                break;\n              case \"checked\":\n                checked = propValue$188;\n                break;\n              case \"defaultChecked\":\n                defaultChecked = propValue$188;\n                break;\n              case \"value\":\n                propKey = propValue$188;\n                break;\n              case \"defaultValue\":\n                defaultValue = propValue$188;\n                break;\n              case \"children\":\n              case \"dangerouslySetInnerHTML\":\n                if (null != propValue$188)\n                  throw Error(formatProdErrorMessage(137, tag));\n                break;\n              default:\n                setProp(domElement, tag, hasSrc, propValue$188, props, null);\n            }\n        }\n      initInput(\n        domElement,\n        propKey,\n        defaultValue,\n        checked,\n        defaultChecked,\n        propValue,\n        hasSrcSet,\n        !1\n      );\n      track(domElement);\n      return;\n    case \"select\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      hasSrc = propValue = propKey = null;\n      for (hasSrcSet in props)\n        if (\n          props.hasOwnProperty(hasSrcSet) &&\n          ((defaultValue = props[hasSrcSet]), null != defaultValue)\n        )\n          switch (hasSrcSet) {\n            case \"value\":\n              propKey = defaultValue;\n              break;\n            case \"defaultValue\":\n              propValue = defaultValue;\n              break;\n            case \"multiple\":\n              hasSrc = defaultValue;\n            default:\n              setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n          }\n      tag = propKey;\n      props = propValue;\n      domElement.multiple = !!hasSrc;\n      null != tag\n        ? updateOptions(domElement, !!hasSrc, tag, !1)\n        : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n      return;\n    case \"textarea\":\n      listenToNonDelegatedEvent(\"invalid\", domElement);\n      propKey = hasSrcSet = hasSrc = null;\n      for (propValue in props)\n        if (\n          props.hasOwnProperty(propValue) &&\n          ((defaultValue = props[propValue]), null != defaultValue)\n        )\n          switch (propValue) {\n            case \"value\":\n              hasSrc = defaultValue;\n              break;\n            case \"defaultValue\":\n              hasSrcSet = defaultValue;\n              break;\n            case \"children\":\n              propKey = defaultValue;\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              setProp(domElement, tag, propValue, defaultValue, props, null);\n          }\n      initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n      track(domElement);\n      return;\n    case \"option\":\n      for (checked in props)\n        if (\n          props.hasOwnProperty(checked) &&\n          ((hasSrc = props[checked]), null != hasSrc)\n        )\n          switch (checked) {\n            case \"selected\":\n              domElement.selected =\n                hasSrc &&\n                \"function\" !== typeof hasSrc &&\n                \"symbol\" !== typeof hasSrc;\n              break;\n            default:\n              setProp(domElement, tag, checked, hasSrc, props, null);\n          }\n      return;\n    case \"dialog\":\n      listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      listenToNonDelegatedEvent(\"cancel\", domElement);\n      listenToNonDelegatedEvent(\"close\", domElement);\n      break;\n    case \"iframe\":\n    case \"object\":\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"video\":\n    case \"audio\":\n      for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n        listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n      break;\n    case \"image\":\n      listenToNonDelegatedEvent(\"error\", domElement);\n      listenToNonDelegatedEvent(\"load\", domElement);\n      break;\n    case \"details\":\n      listenToNonDelegatedEvent(\"toggle\", domElement);\n      break;\n    case \"embed\":\n    case \"source\":\n    case \"link\":\n      listenToNonDelegatedEvent(\"error\", domElement),\n        listenToNonDelegatedEvent(\"load\", domElement);\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (defaultChecked in props)\n        if (\n          props.hasOwnProperty(defaultChecked) &&\n          ((hasSrc = props[defaultChecked]), null != hasSrc)\n        )\n          switch (defaultChecked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              throw Error(formatProdErrorMessage(137, tag));\n            default:\n              setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (propValue$188 in props)\n          props.hasOwnProperty(propValue$188) &&\n            ((hasSrc = props[propValue$188]),\n            void 0 !== hasSrc &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propValue$188,\n                hasSrc,\n                props,\n                void 0\n              ));\n        return;\n      }\n  }\n  for (defaultValue in props)\n    props.hasOwnProperty(defaultValue) &&\n      ((hasSrc = props[defaultValue]),\n      null != hasSrc &&\n        setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n  switch (tag) {\n    case \"div\":\n    case \"span\":\n    case \"svg\":\n    case \"path\":\n    case \"a\":\n    case \"g\":\n    case \"p\":\n    case \"li\":\n      break;\n    case \"input\":\n      var name = null,\n        type = null,\n        value = null,\n        defaultValue = null,\n        lastDefaultValue = null,\n        checked = null,\n        defaultChecked = null;\n      for (propKey in lastProps) {\n        var lastProp = lastProps[propKey];\n        if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n          switch (propKey) {\n            case \"checked\":\n              break;\n            case \"value\":\n              break;\n            case \"defaultValue\":\n              lastDefaultValue = lastProp;\n            default:\n              nextProps.hasOwnProperty(propKey) ||\n                setProp(domElement, tag, propKey, null, nextProps, lastProp);\n          }\n      }\n      for (var propKey$205 in nextProps) {\n        var propKey = nextProps[propKey$205];\n        lastProp = lastProps[propKey$205];\n        if (\n          nextProps.hasOwnProperty(propKey$205) &&\n          (null != propKey || null != lastProp)\n        )\n          switch (propKey$205) {\n            case \"type\":\n              type = propKey;\n              break;\n            case \"name\":\n              name = propKey;\n              break;\n            case \"checked\":\n              checked = propKey;\n              break;\n            case \"defaultChecked\":\n              defaultChecked = propKey;\n              break;\n            case \"value\":\n              value = propKey;\n              break;\n            case \"defaultValue\":\n              defaultValue = propKey;\n              break;\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              propKey !== lastProp &&\n                setProp(\n                  domElement,\n                  tag,\n                  propKey$205,\n                  propKey,\n                  nextProps,\n                  lastProp\n                );\n          }\n      }\n      updateInput(\n        domElement,\n        value,\n        defaultValue,\n        lastDefaultValue,\n        checked,\n        defaultChecked,\n        type,\n        name\n      );\n      return;\n    case \"select\":\n      propKey = value = defaultValue = propKey$205 = null;\n      for (type in lastProps)\n        if (\n          ((lastDefaultValue = lastProps[type]),\n          lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n        )\n          switch (type) {\n            case \"value\":\n              break;\n            case \"multiple\":\n              propKey = lastDefaultValue;\n            default:\n              nextProps.hasOwnProperty(type) ||\n                setProp(\n                  domElement,\n                  tag,\n                  type,\n                  null,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      for (name in nextProps)\n        if (\n          ((type = nextProps[name]),\n          (lastDefaultValue = lastProps[name]),\n          nextProps.hasOwnProperty(name) &&\n            (null != type || null != lastDefaultValue))\n        )\n          switch (name) {\n            case \"value\":\n              propKey$205 = type;\n              break;\n            case \"defaultValue\":\n              defaultValue = type;\n              break;\n            case \"multiple\":\n              value = type;\n            default:\n              type !== lastDefaultValue &&\n                setProp(\n                  domElement,\n                  tag,\n                  name,\n                  type,\n                  nextProps,\n                  lastDefaultValue\n                );\n          }\n      tag = defaultValue;\n      lastProps = value;\n      nextProps = propKey;\n      null != propKey$205\n        ? updateOptions(domElement, !!lastProps, propKey$205, !1)\n        : !!nextProps !== !!lastProps &&\n          (null != tag\n            ? updateOptions(domElement, !!lastProps, tag, !0)\n            : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n      return;\n    case \"textarea\":\n      propKey = propKey$205 = null;\n      for (defaultValue in lastProps)\n        if (\n          ((name = lastProps[defaultValue]),\n          lastProps.hasOwnProperty(defaultValue) &&\n            null != name &&\n            !nextProps.hasOwnProperty(defaultValue))\n        )\n          switch (defaultValue) {\n            case \"value\":\n              break;\n            case \"children\":\n              break;\n            default:\n              setProp(domElement, tag, defaultValue, null, nextProps, name);\n          }\n      for (value in nextProps)\n        if (\n          ((name = nextProps[value]),\n          (type = lastProps[value]),\n          nextProps.hasOwnProperty(value) && (null != name || null != type))\n        )\n          switch (value) {\n            case \"value\":\n              propKey$205 = name;\n              break;\n            case \"defaultValue\":\n              propKey = name;\n              break;\n            case \"children\":\n              break;\n            case \"dangerouslySetInnerHTML\":\n              if (null != name) throw Error(formatProdErrorMessage(91));\n              break;\n            default:\n              name !== type &&\n                setProp(domElement, tag, value, name, nextProps, type);\n          }\n      updateTextarea(domElement, propKey$205, propKey);\n      return;\n    case \"option\":\n      for (var propKey$221 in lastProps)\n        if (\n          ((propKey$205 = lastProps[propKey$221]),\n          lastProps.hasOwnProperty(propKey$221) &&\n            null != propKey$205 &&\n            !nextProps.hasOwnProperty(propKey$221))\n        )\n          switch (propKey$221) {\n            case \"selected\":\n              domElement.selected = !1;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                propKey$221,\n                null,\n                nextProps,\n                propKey$205\n              );\n          }\n      for (lastDefaultValue in nextProps)\n        if (\n          ((propKey$205 = nextProps[lastDefaultValue]),\n          (propKey = lastProps[lastDefaultValue]),\n          nextProps.hasOwnProperty(lastDefaultValue) &&\n            propKey$205 !== propKey &&\n            (null != propKey$205 || null != propKey))\n        )\n          switch (lastDefaultValue) {\n            case \"selected\":\n              domElement.selected =\n                propKey$205 &&\n                \"function\" !== typeof propKey$205 &&\n                \"symbol\" !== typeof propKey$205;\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                lastDefaultValue,\n                propKey$205,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    case \"img\":\n    case \"link\":\n    case \"area\":\n    case \"base\":\n    case \"br\":\n    case \"col\":\n    case \"embed\":\n    case \"hr\":\n    case \"keygen\":\n    case \"meta\":\n    case \"param\":\n    case \"source\":\n    case \"track\":\n    case \"wbr\":\n    case \"menuitem\":\n      for (var propKey$226 in lastProps)\n        (propKey$205 = lastProps[propKey$226]),\n          lastProps.hasOwnProperty(propKey$226) &&\n            null != propKey$205 &&\n            !nextProps.hasOwnProperty(propKey$226) &&\n            setProp(domElement, tag, propKey$226, null, nextProps, propKey$205);\n      for (checked in nextProps)\n        if (\n          ((propKey$205 = nextProps[checked]),\n          (propKey = lastProps[checked]),\n          nextProps.hasOwnProperty(checked) &&\n            propKey$205 !== propKey &&\n            (null != propKey$205 || null != propKey))\n        )\n          switch (checked) {\n            case \"children\":\n            case \"dangerouslySetInnerHTML\":\n              if (null != propKey$205)\n                throw Error(formatProdErrorMessage(137, tag));\n              break;\n            default:\n              setProp(\n                domElement,\n                tag,\n                checked,\n                propKey$205,\n                nextProps,\n                propKey\n              );\n          }\n      return;\n    default:\n      if (isCustomElement(tag)) {\n        for (var propKey$231 in lastProps)\n          (propKey$205 = lastProps[propKey$231]),\n            lastProps.hasOwnProperty(propKey$231) &&\n              void 0 !== propKey$205 &&\n              !nextProps.hasOwnProperty(propKey$231) &&\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                propKey$231,\n                void 0,\n                nextProps,\n                propKey$205\n              );\n        for (defaultChecked in nextProps)\n          (propKey$205 = nextProps[defaultChecked]),\n            (propKey = lastProps[defaultChecked]),\n            !nextProps.hasOwnProperty(defaultChecked) ||\n              propKey$205 === propKey ||\n              (void 0 === propKey$205 && void 0 === propKey) ||\n              setPropOnCustomElement(\n                domElement,\n                tag,\n                defaultChecked,\n                propKey$205,\n                nextProps,\n                propKey\n              );\n        return;\n      }\n  }\n  for (var propKey$236 in lastProps)\n    (propKey$205 = lastProps[propKey$236]),\n      lastProps.hasOwnProperty(propKey$236) &&\n        null != propKey$205 &&\n        !nextProps.hasOwnProperty(propKey$236) &&\n        setProp(domElement, tag, propKey$236, null, nextProps, propKey$205);\n  for (lastProp in nextProps)\n    (propKey$205 = nextProps[lastProp]),\n      (propKey = lastProps[lastProp]),\n      !nextProps.hasOwnProperty(lastProp) ||\n        propKey$205 === propKey ||\n        (null == propKey$205 && null == propKey) ||\n        setProp(domElement, tag, lastProp, propKey$205, nextProps, propKey);\n}\nvar eventsEnabled = null,\n  selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return 9 === rootContainerElement.nodeType\n    ? rootContainerElement\n    : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n  switch (namespaceURI) {\n    case \"http://www.w3.org/2000/svg\":\n      return 1;\n    case \"http://www.w3.org/1998/Math/MathML\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n  if (0 === parentNamespace)\n    switch (type) {\n      case \"svg\":\n        return 1;\n      case \"math\":\n        return 2;\n      default:\n        return 0;\n    }\n  return 1 === parentNamespace && \"foreignObject\" === type\n    ? 0\n    : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n  return (\n    \"textarea\" === type ||\n    \"noscript\" === type ||\n    \"string\" === typeof props.children ||\n    \"number\" === typeof props.children ||\n    \"bigint\" === typeof props.children ||\n    (\"object\" === typeof props.dangerouslySetInnerHTML &&\n      null !== props.dangerouslySetInnerHTML &&\n      null != props.dangerouslySetInnerHTML.__html)\n  );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n  var event = window.event;\n  if (event && \"popstate\" === event.type) {\n    if (event === currentPopstateTransitionEvent) return !1;\n    currentPopstateTransitionEvent = event;\n    return !0;\n  }\n  currentPopstateTransitionEvent = null;\n  return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n  cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n  localPromise = \"function\" === typeof Promise ? Promise : void 0,\n  scheduleMicrotask =\n    \"function\" === typeof queueMicrotask\n      ? queueMicrotask\n      : \"undefined\" !== typeof localPromise\n        ? function (callback) {\n            return localPromise\n              .resolve(null)\n              .then(callback)\n              .catch(handleErrorInNextTick);\n          }\n        : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n}\nfunction isSingletonScope(type) {\n  return \"head\" === type;\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n  var node = suspenseInstance,\n    possiblePreambleContribution = 0,\n    depth = 0;\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n    if (nextNode && 8 === nextNode.nodeType)\n      if (((node = nextNode.data), \"/$\" === node)) {\n        if (\n          0 < possiblePreambleContribution &&\n          8 > possiblePreambleContribution\n        ) {\n          node = possiblePreambleContribution;\n          var ownerDocument = parentInstance.ownerDocument;\n          node & 1 && releaseSingletonInstance(ownerDocument.documentElement);\n          node & 2 && releaseSingletonInstance(ownerDocument.body);\n          if (node & 4)\n            for (\n              node = ownerDocument.head,\n                releaseSingletonInstance(node),\n                ownerDocument = node.firstChild;\n              ownerDocument;\n\n            ) {\n              var nextNode$jscomp$0 = ownerDocument.nextSibling,\n                nodeName = ownerDocument.nodeName;\n              ownerDocument[internalHoistableMarker] ||\n                \"SCRIPT\" === nodeName ||\n                \"STYLE\" === nodeName ||\n                (\"LINK\" === nodeName &&\n                  \"stylesheet\" === ownerDocument.rel.toLowerCase()) ||\n                node.removeChild(ownerDocument);\n              ownerDocument = nextNode$jscomp$0;\n            }\n        }\n        if (0 === depth) {\n          parentInstance.removeChild(nextNode);\n          retryIfBlockedOn(suspenseInstance);\n          return;\n        }\n        depth--;\n      } else\n        \"$\" === node || \"$?\" === node || \"$!\" === node\n          ? depth++\n          : (possiblePreambleContribution = node.charCodeAt(0) - 48);\n    else possiblePreambleContribution = 0;\n    node = nextNode;\n  } while (node);\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction clearContainerSparingly(container) {\n  var nextNode = container.firstChild;\n  nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n  for (; nextNode; ) {\n    var node = nextNode;\n    nextNode = nextNode.nextSibling;\n    switch (node.nodeName) {\n      case \"HTML\":\n      case \"HEAD\":\n      case \"BODY\":\n        clearContainerSparingly(node);\n        detachDeletedInstance(node);\n        continue;\n      case \"SCRIPT\":\n      case \"STYLE\":\n        continue;\n      case \"LINK\":\n        if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n    }\n    container.removeChild(node);\n  }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n  for (; 1 === instance.nodeType; ) {\n    var anyProps = props;\n    if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n      if (\n        !inRootOrSingleton &&\n        (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n      )\n        break;\n    } else if (!inRootOrSingleton)\n      if (\"input\" === type && \"hidden\" === instance.type) {\n        var name = null == anyProps.name ? null : \"\" + anyProps.name;\n        if (\n          \"hidden\" === anyProps.type &&\n          instance.getAttribute(\"name\") === name\n        )\n          return instance;\n      } else return instance;\n    else if (!instance[internalHoistableMarker])\n      switch (type) {\n        case \"meta\":\n          if (!instance.hasAttribute(\"itemprop\")) break;\n          return instance;\n        case \"link\":\n          name = instance.getAttribute(\"rel\");\n          if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n            break;\n          else if (\n            name !== anyProps.rel ||\n            instance.getAttribute(\"href\") !==\n              (null == anyProps.href || \"\" === anyProps.href\n                ? null\n                : anyProps.href) ||\n            instance.getAttribute(\"crossorigin\") !==\n              (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n            instance.getAttribute(\"title\") !==\n              (null == anyProps.title ? null : anyProps.title)\n          )\n            break;\n          return instance;\n        case \"style\":\n          if (instance.hasAttribute(\"data-precedence\")) break;\n          return instance;\n        case \"script\":\n          name = instance.getAttribute(\"src\");\n          if (\n            (name !== (null == anyProps.src ? null : anyProps.src) ||\n              instance.getAttribute(\"type\") !==\n                (null == anyProps.type ? null : anyProps.type) ||\n              instance.getAttribute(\"crossorigin\") !==\n                (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n            name &&\n            instance.hasAttribute(\"async\") &&\n            !instance.hasAttribute(\"itemprop\")\n          )\n            break;\n          return instance;\n        default:\n          return instance;\n      }\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) break;\n  }\n  return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n  if (\"\" === text) return null;\n  for (; 3 !== instance.nodeType; ) {\n    if (\n      (1 !== instance.nodeType ||\n        \"INPUT\" !== instance.nodeName ||\n        \"hidden\" !== instance.type) &&\n      !inRootOrSingleton\n    )\n      return null;\n    instance = getNextHydratable(instance.nextSibling);\n    if (null === instance) return null;\n  }\n  return instance;\n}\nfunction isSuspenseInstanceFallback(instance) {\n  return (\n    \"$!\" === instance.data ||\n    (\"$?\" === instance.data && \"complete\" === instance.ownerDocument.readyState)\n  );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n  var ownerDocument = instance.ownerDocument;\n  if (\"$?\" !== instance.data || \"complete\" === ownerDocument.readyState)\n    callback();\n  else {\n    var listener = function () {\n      callback();\n      ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n    };\n    ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n    instance._reactRetry = listener;\n  }\n}\nfunction getNextHydratable(node) {\n  for (; null != node; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n    if (1 === nodeType || 3 === nodeType) break;\n    if (8 === nodeType) {\n      nodeType = node.data;\n      if (\n        \"$\" === nodeType ||\n        \"$!\" === nodeType ||\n        \"$?\" === nodeType ||\n        \"F!\" === nodeType ||\n        \"F\" === nodeType\n      )\n        break;\n      if (\"/$\" === nodeType) return null;\n    }\n  }\n  return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getParentSuspenseInstance(targetInstance) {\n  targetInstance = targetInstance.previousSibling;\n  for (var depth = 0; targetInstance; ) {\n    if (8 === targetInstance.nodeType) {\n      var data = targetInstance.data;\n      if (\"$\" === data || \"$!\" === data || \"$?\" === data) {\n        if (0 === depth) return targetInstance;\n        depth--;\n      } else \"/$\" === data && depth++;\n    }\n    targetInstance = targetInstance.previousSibling;\n  }\n  return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n  props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n  switch (type) {\n    case \"html\":\n      type = props.documentElement;\n      if (!type) throw Error(formatProdErrorMessage(452));\n      return type;\n    case \"head\":\n      type = props.head;\n      if (!type) throw Error(formatProdErrorMessage(453));\n      return type;\n    case \"body\":\n      type = props.body;\n      if (!type) throw Error(formatProdErrorMessage(454));\n      return type;\n    default:\n      throw Error(formatProdErrorMessage(451));\n  }\n}\nfunction releaseSingletonInstance(instance) {\n  for (var attributes = instance.attributes; attributes.length; )\n    instance.removeAttributeNode(attributes[0]);\n  detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n  preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n  return \"function\" === typeof container.getRootNode\n    ? container.getRootNode()\n    : 9 === container.nodeType\n      ? container\n      : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n  f: flushSyncWork,\n  r: requestFormReset,\n  D: prefetchDNS,\n  C: preconnect,\n  L: preload,\n  m: preloadModule,\n  X: preinitScript,\n  S: preinitStyle,\n  M: preinitModuleScript\n};\nfunction flushSyncWork() {\n  var previousWasRendering = previousDispatcher.f(),\n    wasRendering = flushSyncWork$1();\n  return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n  var formInst = getInstanceFromNode(form);\n  null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n    ? requestFormReset$1(formInst)\n    : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n  var ownerDocument = globalDocument;\n  if (ownerDocument && \"string\" === typeof href && href) {\n    var limitedEscapedHref =\n      escapeSelectorAttributeValueInsideDoubleQuotes(href);\n    limitedEscapedHref =\n      'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n    \"string\" === typeof crossOrigin &&\n      (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n    preconnectsSet.has(limitedEscapedHref) ||\n      (preconnectsSet.add(limitedEscapedHref),\n      (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n      null === ownerDocument.querySelector(limitedEscapedHref) &&\n        ((href = ownerDocument.createElement(\"link\")),\n        setInitialProperties(href, \"link\", rel),\n        markNodeAsHoistable(href),\n        ownerDocument.head.appendChild(href)));\n  }\n}\nfunction prefetchDNS(href) {\n  previousDispatcher.D(href);\n  preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n  previousDispatcher.C(href, crossOrigin);\n  preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n  previousDispatcher.L(href, as, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href && as) {\n    var preloadSelector =\n      'link[rel=\"preload\"][as=\"' +\n      escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n      '\"]';\n    \"image\" === as\n      ? options && options.imageSrcSet\n        ? ((preloadSelector +=\n            '[imagesrcset=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(\n              options.imageSrcSet\n            ) +\n            '\"]'),\n          \"string\" === typeof options.imageSizes &&\n            (preloadSelector +=\n              '[imagesizes=\"' +\n              escapeSelectorAttributeValueInsideDoubleQuotes(\n                options.imageSizes\n              ) +\n              '\"]'))\n        : (preloadSelector +=\n            '[href=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n            '\"]')\n      : (preloadSelector +=\n          '[href=\"' +\n          escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n          '\"]');\n    var key = preloadSelector;\n    switch (as) {\n      case \"style\":\n        key = getStyleKey(href);\n        break;\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    preloadPropsMap.has(key) ||\n      ((href = assign(\n        {\n          rel: \"preload\",\n          href:\n            \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n          as: as\n        },\n        options\n      )),\n      preloadPropsMap.set(key, href),\n      null !== ownerDocument.querySelector(preloadSelector) ||\n        (\"style\" === as &&\n          ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n        (\"script\" === as &&\n          ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n        ((as = ownerDocument.createElement(\"link\")),\n        setInitialProperties(as, \"link\", href),\n        markNodeAsHoistable(as),\n        ownerDocument.head.appendChild(as)));\n  }\n}\nfunction preloadModule(href, options) {\n  previousDispatcher.m(href, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n      preloadSelector =\n        'link[rel=\"modulepreload\"][as=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n        '\"][href=\"' +\n        escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n        '\"]',\n      key = preloadSelector;\n    switch (as) {\n      case \"audioworklet\":\n      case \"paintworklet\":\n      case \"serviceworker\":\n      case \"sharedworker\":\n      case \"worker\":\n      case \"script\":\n        key = getScriptKey(href);\n    }\n    if (\n      !preloadPropsMap.has(key) &&\n      ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n      preloadPropsMap.set(key, href),\n      null === ownerDocument.querySelector(preloadSelector))\n    ) {\n      switch (as) {\n        case \"audioworklet\":\n        case \"paintworklet\":\n        case \"serviceworker\":\n        case \"sharedworker\":\n        case \"worker\":\n        case \"script\":\n          if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n            return;\n      }\n      as = ownerDocument.createElement(\"link\");\n      setInitialProperties(as, \"link\", href);\n      markNodeAsHoistable(as);\n      ownerDocument.head.appendChild(as);\n    }\n  }\n}\nfunction preinitStyle(href, precedence, options) {\n  previousDispatcher.S(href, precedence, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && href) {\n    var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n      key = getStyleKey(href);\n    precedence = precedence || \"default\";\n    var resource = styles.get(key);\n    if (!resource) {\n      var state = { loading: 0, preload: null };\n      if (\n        (resource = ownerDocument.querySelector(\n          getStylesheetSelectorFromKey(key)\n        ))\n      )\n        state.loading = 5;\n      else {\n        href = assign(\n          { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n          options\n        );\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForStylesheet(href, options);\n        var link = (resource = ownerDocument.createElement(\"link\"));\n        markNodeAsHoistable(link);\n        setInitialProperties(link, \"link\", href);\n        link._p = new Promise(function (resolve, reject) {\n          link.onload = resolve;\n          link.onerror = reject;\n        });\n        link.addEventListener(\"load\", function () {\n          state.loading |= 1;\n        });\n        link.addEventListener(\"error\", function () {\n          state.loading |= 2;\n        });\n        state.loading |= 4;\n        insertStylesheet(resource, precedence, ownerDocument);\n      }\n      resource = {\n        type: \"stylesheet\",\n        instance: resource,\n        count: 1,\n        state: state\n      };\n      styles.set(key, resource);\n    }\n  }\n}\nfunction preinitScript(src, options) {\n  previousDispatcher.X(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0 }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction preinitModuleScript(src, options) {\n  previousDispatcher.M(src, options);\n  var ownerDocument = globalDocument;\n  if (ownerDocument && src) {\n    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n      key = getScriptKey(src),\n      resource = scripts.get(key);\n    resource ||\n      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n      resource ||\n        ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n        (options = preloadPropsMap.get(key)) &&\n          adoptPreloadPropsForScript(src, options),\n        (resource = ownerDocument.createElement(\"script\")),\n        markNodeAsHoistable(resource),\n        setInitialProperties(resource, \"link\", src),\n        ownerDocument.head.appendChild(resource)),\n      (resource = {\n        type: \"script\",\n        instance: resource,\n        count: 1,\n        state: null\n      }),\n      scripts.set(key, resource));\n  }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n  var JSCompiler_inline_result = (JSCompiler_inline_result =\n    rootInstanceStackCursor.current)\n    ? getHoistableRoot(JSCompiler_inline_result)\n    : null;\n  if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return null;\n    case \"style\":\n      return \"string\" === typeof pendingProps.precedence &&\n        \"string\" === typeof pendingProps.href\n        ? ((currentProps = getStyleKey(pendingProps.href)),\n          (pendingProps = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles),\n          (currentResource = pendingProps.get(currentProps)),\n          currentResource ||\n            ((currentResource = {\n              type: \"style\",\n              instance: null,\n              count: 0,\n              state: null\n            }),\n            pendingProps.set(currentProps, currentResource)),\n          currentResource)\n        : { type: \"void\", instance: null, count: 0, state: null };\n    case \"link\":\n      if (\n        \"stylesheet\" === pendingProps.rel &&\n        \"string\" === typeof pendingProps.href &&\n        \"string\" === typeof pendingProps.precedence\n      ) {\n        type = getStyleKey(pendingProps.href);\n        var styles$244 = getResourcesFromRoot(\n            JSCompiler_inline_result\n          ).hoistableStyles,\n          resource$245 = styles$244.get(type);\n        resource$245 ||\n          ((JSCompiler_inline_result =\n            JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n          (resource$245 = {\n            type: \"stylesheet\",\n            instance: null,\n            count: 0,\n            state: { loading: 0, preload: null }\n          }),\n          styles$244.set(type, resource$245),\n          (styles$244 = JSCompiler_inline_result.querySelector(\n            getStylesheetSelectorFromKey(type)\n          )) &&\n            !styles$244._p &&\n            ((resource$245.instance = styles$244),\n            (resource$245.state.loading = 5)),\n          preloadPropsMap.has(type) ||\n            ((pendingProps = {\n              rel: \"preload\",\n              as: \"style\",\n              href: pendingProps.href,\n              crossOrigin: pendingProps.crossOrigin,\n              integrity: pendingProps.integrity,\n              media: pendingProps.media,\n              hrefLang: pendingProps.hrefLang,\n              referrerPolicy: pendingProps.referrerPolicy\n            }),\n            preloadPropsMap.set(type, pendingProps),\n            styles$244 ||\n              preloadStylesheet(\n                JSCompiler_inline_result,\n                type,\n                pendingProps,\n                resource$245.state\n              )));\n        if (currentProps && null === currentResource)\n          throw Error(formatProdErrorMessage(528, \"\"));\n        return resource$245;\n      }\n      if (currentProps && null !== currentResource)\n        throw Error(formatProdErrorMessage(529, \"\"));\n      return null;\n    case \"script\":\n      return (\n        (currentProps = pendingProps.async),\n        (pendingProps = pendingProps.src),\n        \"string\" === typeof pendingProps &&\n        currentProps &&\n        \"function\" !== typeof currentProps &&\n        \"symbol\" !== typeof currentProps\n          ? ((currentProps = getScriptKey(pendingProps)),\n            (pendingProps = getResourcesFromRoot(\n              JSCompiler_inline_result\n            ).hoistableScripts),\n            (currentResource = pendingProps.get(currentProps)),\n            currentResource ||\n              ((currentResource = {\n                type: \"script\",\n                instance: null,\n                count: 0,\n                state: null\n              }),\n              pendingProps.set(currentProps, currentResource)),\n            currentResource)\n          : { type: \"void\", instance: null, count: 0, state: null }\n      );\n    default:\n      throw Error(formatProdErrorMessage(444, type));\n  }\n}\nfunction getStyleKey(href) {\n  return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n  return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n  return assign({}, rawProps, {\n    \"data-precedence\": rawProps.precedence,\n    precedence: null\n  });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n  ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n    ? (state.loading = 1)\n    : ((key = ownerDocument.createElement(\"link\")),\n      (state.preload = key),\n      key.addEventListener(\"load\", function () {\n        return (state.loading |= 1);\n      }),\n      key.addEventListener(\"error\", function () {\n        return (state.loading |= 2);\n      }),\n      setInitialProperties(key, \"link\", preloadProps),\n      markNodeAsHoistable(key),\n      ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n  return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n  return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n  resource.count++;\n  if (null === resource.instance)\n    switch (resource.type) {\n      case \"style\":\n        var instance = hoistableRoot.querySelector(\n          'style[data-href~=\"' +\n            escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n            '\"]'\n        );\n        if (instance)\n          return (\n            (resource.instance = instance),\n            markNodeAsHoistable(instance),\n            instance\n          );\n        var styleProps = assign({}, props, {\n          \"data-href\": props.href,\n          \"data-precedence\": props.precedence,\n          href: null,\n          precedence: null\n        });\n        instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n          \"style\"\n        );\n        markNodeAsHoistable(instance);\n        setInitialProperties(instance, \"style\", styleProps);\n        insertStylesheet(instance, props.precedence, hoistableRoot);\n        return (resource.instance = instance);\n      case \"stylesheet\":\n        styleProps = getStyleKey(props.href);\n        var instance$250 = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(styleProps)\n        );\n        if (instance$250)\n          return (\n            (resource.state.loading |= 4),\n            (resource.instance = instance$250),\n            markNodeAsHoistable(instance$250),\n            instance$250\n          );\n        instance = stylesheetPropsFromRawProps(props);\n        (styleProps = preloadPropsMap.get(styleProps)) &&\n          adoptPreloadPropsForStylesheet(instance, styleProps);\n        instance$250 = (\n          hoistableRoot.ownerDocument || hoistableRoot\n        ).createElement(\"link\");\n        markNodeAsHoistable(instance$250);\n        var linkInstance = instance$250;\n        linkInstance._p = new Promise(function (resolve, reject) {\n          linkInstance.onload = resolve;\n          linkInstance.onerror = reject;\n        });\n        setInitialProperties(instance$250, \"link\", instance);\n        resource.state.loading |= 4;\n        insertStylesheet(instance$250, props.precedence, hoistableRoot);\n        return (resource.instance = instance$250);\n      case \"script\":\n        instance$250 = getScriptKey(props.src);\n        if (\n          (styleProps = hoistableRoot.querySelector(\n            getScriptSelectorFromKey(instance$250)\n          ))\n        )\n          return (\n            (resource.instance = styleProps),\n            markNodeAsHoistable(styleProps),\n            styleProps\n          );\n        instance = props;\n        if ((styleProps = preloadPropsMap.get(instance$250)))\n          (instance = assign({}, props)),\n            adoptPreloadPropsForScript(instance, styleProps);\n        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n        styleProps = hoistableRoot.createElement(\"script\");\n        markNodeAsHoistable(styleProps);\n        setInitialProperties(styleProps, \"link\", instance);\n        hoistableRoot.head.appendChild(styleProps);\n        return (resource.instance = styleProps);\n      case \"void\":\n        return null;\n      default:\n        throw Error(formatProdErrorMessage(443, resource.type));\n    }\n  else\n    \"stylesheet\" === resource.type &&\n      0 === (resource.state.loading & 4) &&\n      ((instance = resource.instance),\n      (resource.state.loading |= 4),\n      insertStylesheet(instance, props.precedence, hoistableRoot));\n  return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n  for (\n    var nodes = root.querySelectorAll(\n        'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n      ),\n      last = nodes.length ? nodes[nodes.length - 1] : null,\n      prior = last,\n      i = 0;\n    i < nodes.length;\n    i++\n  ) {\n    var node = nodes[i];\n    if (node.dataset.precedence === precedence) prior = node;\n    else if (prior !== last) break;\n  }\n  prior\n    ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n    : ((precedence = 9 === root.nodeType ? root.head : root),\n      precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n  null == stylesheetProps.crossOrigin &&\n    (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n  null == stylesheetProps.referrerPolicy &&\n    (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n  null == scriptProps.crossOrigin &&\n    (scriptProps.crossOrigin = preloadProps.crossOrigin);\n  null == scriptProps.referrerPolicy &&\n    (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n  null == scriptProps.integrity &&\n    (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n  if (null === tagCaches) {\n    var cache = new Map();\n    var caches = (tagCaches = new Map());\n    caches.set(ownerDocument, cache);\n  } else\n    (caches = tagCaches),\n      (cache = caches.get(ownerDocument)),\n      cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n  if (cache.has(type)) return cache;\n  cache.set(type, null);\n  ownerDocument = ownerDocument.getElementsByTagName(type);\n  for (caches = 0; caches < ownerDocument.length; caches++) {\n    var node = ownerDocument[caches];\n    if (\n      !(\n        node[internalHoistableMarker] ||\n        node[internalInstanceKey] ||\n        (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n      ) &&\n      \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n    ) {\n      var nodeKey = node.getAttribute(keyAttribute) || \"\";\n      nodeKey = type + nodeKey;\n      var existing = cache.get(nodeKey);\n      existing ? existing.push(node) : cache.set(nodeKey, [node]);\n    }\n  }\n  return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n  hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n  hoistableRoot.head.insertBefore(\n    instance,\n    \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n  );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n  if (1 === hostContext || null != props.itemProp) return !1;\n  switch (type) {\n    case \"meta\":\n    case \"title\":\n      return !0;\n    case \"style\":\n      if (\n        \"string\" !== typeof props.precedence ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href\n      )\n        break;\n      return !0;\n    case \"link\":\n      if (\n        \"string\" !== typeof props.rel ||\n        \"string\" !== typeof props.href ||\n        \"\" === props.href ||\n        props.onLoad ||\n        props.onError\n      )\n        break;\n      switch (props.rel) {\n        case \"stylesheet\":\n          return (\n            (type = props.disabled),\n            \"string\" === typeof props.precedence && null == type\n          );\n        default:\n          return !0;\n      }\n    case \"script\":\n      if (\n        props.async &&\n        \"function\" !== typeof props.async &&\n        \"symbol\" !== typeof props.async &&\n        !props.onLoad &&\n        !props.onError &&\n        props.src &&\n        \"string\" === typeof props.src\n      )\n        return !0;\n  }\n  return !1;\n}\nfunction preloadResource(resource) {\n  return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n    ? !1\n    : !0;\n}\nvar suspendedState = null;\nfunction noop() {}\nfunction suspendResource(hoistableRoot, resource, props) {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  if (\n    \"stylesheet\" === resource.type &&\n    (\"string\" !== typeof props.media ||\n      !1 !== matchMedia(props.media).matches) &&\n    0 === (resource.state.loading & 4)\n  ) {\n    if (null === resource.instance) {\n      var key = getStyleKey(props.href),\n        instance = hoistableRoot.querySelector(\n          getStylesheetSelectorFromKey(key)\n        );\n      if (instance) {\n        hoistableRoot = instance._p;\n        null !== hoistableRoot &&\n          \"object\" === typeof hoistableRoot &&\n          \"function\" === typeof hoistableRoot.then &&\n          (state.count++,\n          (state = onUnsuspend.bind(state)),\n          hoistableRoot.then(state, state));\n        resource.state.loading |= 4;\n        resource.instance = instance;\n        markNodeAsHoistable(instance);\n        return;\n      }\n      instance = hoistableRoot.ownerDocument || hoistableRoot;\n      props = stylesheetPropsFromRawProps(props);\n      (key = preloadPropsMap.get(key)) &&\n        adoptPreloadPropsForStylesheet(props, key);\n      instance = instance.createElement(\"link\");\n      markNodeAsHoistable(instance);\n      var linkInstance = instance;\n      linkInstance._p = new Promise(function (resolve, reject) {\n        linkInstance.onload = resolve;\n        linkInstance.onerror = reject;\n      });\n      setInitialProperties(instance, \"link\", props);\n      resource.instance = instance;\n    }\n    null === state.stylesheets && (state.stylesheets = new Map());\n    state.stylesheets.set(resource, hoistableRoot);\n    (hoistableRoot = resource.state.preload) &&\n      0 === (resource.state.loading & 3) &&\n      (state.count++,\n      (resource = onUnsuspend.bind(state)),\n      hoistableRoot.addEventListener(\"load\", resource),\n      hoistableRoot.addEventListener(\"error\", resource));\n  }\n}\nfunction waitForCommitToBeReady() {\n  if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n  var state = suspendedState;\n  state.stylesheets &&\n    0 === state.count &&\n    insertSuspendedStylesheets(state, state.stylesheets);\n  return 0 < state.count\n    ? function (commit) {\n        var stylesheetTimer = setTimeout(function () {\n          state.stylesheets &&\n            insertSuspendedStylesheets(state, state.stylesheets);\n          if (state.unsuspend) {\n            var unsuspend = state.unsuspend;\n            state.unsuspend = null;\n            unsuspend();\n          }\n        }, 6e4);\n        state.unsuspend = commit;\n        return function () {\n          state.unsuspend = null;\n          clearTimeout(stylesheetTimer);\n        };\n      }\n    : null;\n}\nfunction onUnsuspend() {\n  this.count--;\n  if (0 === this.count)\n    if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n    else if (this.unsuspend) {\n      var unsuspend = this.unsuspend;\n      this.unsuspend = null;\n      unsuspend();\n    }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n  state.stylesheets = null;\n  null !== state.unsuspend &&\n    (state.count++,\n    (precedencesByRoot = new Map()),\n    resources.forEach(insertStylesheetIntoRoot, state),\n    (precedencesByRoot = null),\n    onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n  if (!(resource.state.loading & 4)) {\n    var precedences = precedencesByRoot.get(root);\n    if (precedences) var last = precedences.get(null);\n    else {\n      precedences = new Map();\n      precedencesByRoot.set(root, precedences);\n      for (\n        var nodes = root.querySelectorAll(\n            \"link[data-precedence],style[data-precedence]\"\n          ),\n          i = 0;\n        i < nodes.length;\n        i++\n      ) {\n        var node = nodes[i];\n        if (\n          \"LINK\" === node.nodeName ||\n          \"not all\" !== node.getAttribute(\"media\")\n        )\n          precedences.set(node.dataset.precedence, node), (last = node);\n      }\n      last && precedences.set(null, last);\n    }\n    nodes = resource.instance;\n    node = nodes.getAttribute(\"data-precedence\");\n    i = precedences.get(node) || last;\n    i === last && precedences.set(null, nodes);\n    precedences.set(node, nodes);\n    this.count++;\n    last = onUnsuspend.bind(this);\n    nodes.addEventListener(\"load\", last);\n    nodes.addEventListener(\"error\", last);\n    i\n      ? i.parentNode.insertBefore(nodes, i.nextSibling)\n      : ((root = 9 === root.nodeType ? root.head : root),\n        root.insertBefore(nodes, root.firstChild));\n    resource.state.loading |= 4;\n  }\n}\nvar HostTransitionContext = {\n  $$typeof: REACT_CONTEXT_TYPE,\n  Provider: null,\n  Consumer: null,\n  _currentValue: sharedNotPendingObject,\n  _currentValue2: sharedNotPendingObject,\n  _threadCount: 0\n};\nfunction FiberRootNode(\n  containerInfo,\n  tag,\n  hydrate,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  formState\n) {\n  this.tag = 1;\n  this.containerInfo = containerInfo;\n  this.pingCache = this.current = this.pendingChildren = null;\n  this.timeoutHandle = -1;\n  this.callbackNode =\n    this.next =\n    this.pendingContext =\n    this.context =\n    this.cancelPendingCommit =\n      null;\n  this.callbackPriority = 0;\n  this.expirationTimes = createLaneMap(-1);\n  this.entangledLanes =\n    this.shellSuspendCounter =\n    this.errorRecoveryDisabledLanes =\n    this.expiredLanes =\n    this.warmLanes =\n    this.pingedLanes =\n    this.suspendedLanes =\n    this.pendingLanes =\n      0;\n  this.entanglements = createLaneMap(0);\n  this.hiddenUpdates = createLaneMap(null);\n  this.identifierPrefix = identifierPrefix;\n  this.onUncaughtError = onUncaughtError;\n  this.onCaughtError = onCaughtError;\n  this.onRecoverableError = onRecoverableError;\n  this.pooledCache = null;\n  this.pooledCacheLanes = 0;\n  this.formState = formState;\n  this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n  containerInfo,\n  tag,\n  hydrate,\n  initialChildren,\n  hydrationCallbacks,\n  isStrictMode,\n  identifierPrefix,\n  onUncaughtError,\n  onCaughtError,\n  onRecoverableError,\n  transitionCallbacks,\n  formState\n) {\n  containerInfo = new FiberRootNode(\n    containerInfo,\n    tag,\n    hydrate,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    formState\n  );\n  tag = 1;\n  !0 === isStrictMode && (tag |= 24);\n  isStrictMode = createFiberImplClass(3, null, null, tag);\n  containerInfo.current = isStrictMode;\n  isStrictMode.stateNode = containerInfo;\n  tag = createCache();\n  tag.refCount++;\n  containerInfo.pooledCache = tag;\n  tag.refCount++;\n  isStrictMode.memoizedState = {\n    element: initialChildren,\n    isDehydrated: hydrate,\n    cache: tag\n  };\n  initializeUpdateQueue(isStrictMode);\n  return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) return emptyContextObject;\n  parentComponent = emptyContextObject;\n  return parentComponent;\n}\nfunction updateContainerImpl(\n  rootFiber,\n  lane,\n  element,\n  container,\n  parentComponent,\n  callback\n) {\n  parentComponent = getContextForSubtree(parentComponent);\n  null === container.context\n    ? (container.context = parentComponent)\n    : (container.pendingContext = parentComponent);\n  container = createUpdate(lane);\n  container.payload = { element: element };\n  callback = void 0 === callback ? null : callback;\n  null !== callback && (container.callback = callback);\n  element = enqueueUpdate(rootFiber, container, lane);\n  null !== element &&\n    (scheduleUpdateOnFiber(element, rootFiber, lane),\n    entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n  fiber = fiber.memoizedState;\n  if (null !== fiber && null !== fiber.dehydrated) {\n    var a = fiber.retryLane;\n    fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n  }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n  if (13 === fiber.tag) {\n    var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n    null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n    markRetryLaneIfNotHydrated(fiber, 67108864);\n  }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 2),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchContinuousEvent(\n  domEventName,\n  eventSystemFlags,\n  container,\n  nativeEvent\n) {\n  var prevTransition = ReactSharedInternals.T;\n  ReactSharedInternals.T = null;\n  var previousPriority = ReactDOMSharedInternals.p;\n  try {\n    (ReactDOMSharedInternals.p = 8),\n      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    (ReactDOMSharedInternals.p = previousPriority),\n      (ReactSharedInternals.T = prevTransition);\n  }\n}\nfunction dispatchEvent(\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (_enabled) {\n    var blockedOn = findInstanceBlockingEvent(nativeEvent);\n    if (null === blockedOn)\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        return_targetInst,\n        targetContainer\n      ),\n        clearIfContinuousEvent(domEventName, nativeEvent);\n    else if (\n      queueIfContinuousEvent(\n        blockedOn,\n        domEventName,\n        eventSystemFlags,\n        targetContainer,\n        nativeEvent\n      )\n    )\n      nativeEvent.stopPropagation();\n    else if (\n      (clearIfContinuousEvent(domEventName, nativeEvent),\n      eventSystemFlags & 4 &&\n        -1 < discreteReplayableEvents.indexOf(domEventName))\n    ) {\n      for (; null !== blockedOn; ) {\n        var fiber = getInstanceFromNode(blockedOn);\n        if (null !== fiber)\n          switch (fiber.tag) {\n            case 3:\n              fiber = fiber.stateNode;\n              if (fiber.current.memoizedState.isDehydrated) {\n                var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n                if (0 !== lanes) {\n                  var root = fiber;\n                  root.pendingLanes |= 2;\n                  for (root.entangledLanes |= 2; lanes; ) {\n                    var lane = 1 << (31 - clz32(lanes));\n                    root.entanglements[1] |= lane;\n                    lanes &= ~lane;\n                  }\n                  ensureRootIsScheduled(fiber);\n                  0 === (executionContext & 6) &&\n                    ((workInProgressRootRenderTargetTime = now() + 500),\n                    flushSyncWorkAcrossRoots_impl(0, !1));\n                }\n              }\n              break;\n            case 13:\n              (root = enqueueConcurrentRenderForLane(fiber, 2)),\n                null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n                flushSyncWork$1(),\n                markRetryLaneIfNotHydrated(fiber, 2);\n          }\n        fiber = findInstanceBlockingEvent(nativeEvent);\n        null === fiber &&\n          dispatchEventForPluginEventSystem(\n            domEventName,\n            eventSystemFlags,\n            nativeEvent,\n            return_targetInst,\n            targetContainer\n          );\n        if (fiber === blockedOn) break;\n        blockedOn = fiber;\n      }\n      null !== blockedOn && nativeEvent.stopPropagation();\n    } else\n      dispatchEventForPluginEventSystem(\n        domEventName,\n        eventSystemFlags,\n        nativeEvent,\n        null,\n        targetContainer\n      );\n  }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n  nativeEvent = getEventTarget(nativeEvent);\n  return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n  return_targetInst = null;\n  targetNode = getClosestInstanceFromNode(targetNode);\n  if (null !== targetNode) {\n    var nearestMounted = getNearestMountedFiber(targetNode);\n    if (null === nearestMounted) targetNode = null;\n    else {\n      var tag = nearestMounted.tag;\n      if (13 === tag) {\n        targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n        if (null !== targetNode) return targetNode;\n        targetNode = null;\n      } else if (3 === tag) {\n        if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n          return 3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        targetNode = null;\n      } else nearestMounted !== targetNode && (targetNode = null);\n    }\n  }\n  return_targetInst = targetNode;\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    case \"beforetoggle\":\n    case \"cancel\":\n    case \"click\":\n    case \"close\":\n    case \"contextmenu\":\n    case \"copy\":\n    case \"cut\":\n    case \"auxclick\":\n    case \"dblclick\":\n    case \"dragend\":\n    case \"dragstart\":\n    case \"drop\":\n    case \"focusin\":\n    case \"focusout\":\n    case \"input\":\n    case \"invalid\":\n    case \"keydown\":\n    case \"keypress\":\n    case \"keyup\":\n    case \"mousedown\":\n    case \"mouseup\":\n    case \"paste\":\n    case \"pause\":\n    case \"play\":\n    case \"pointercancel\":\n    case \"pointerdown\":\n    case \"pointerup\":\n    case \"ratechange\":\n    case \"reset\":\n    case \"resize\":\n    case \"seeked\":\n    case \"submit\":\n    case \"toggle\":\n    case \"touchcancel\":\n    case \"touchend\":\n    case \"touchstart\":\n    case \"volumechange\":\n    case \"change\":\n    case \"selectionchange\":\n    case \"textInput\":\n    case \"compositionstart\":\n    case \"compositionend\":\n    case \"compositionupdate\":\n    case \"beforeblur\":\n    case \"afterblur\":\n    case \"beforeinput\":\n    case \"blur\":\n    case \"fullscreenchange\":\n    case \"focus\":\n    case \"hashchange\":\n    case \"popstate\":\n    case \"select\":\n    case \"selectstart\":\n      return 2;\n    case \"drag\":\n    case \"dragenter\":\n    case \"dragexit\":\n    case \"dragleave\":\n    case \"dragover\":\n    case \"mousemove\":\n    case \"mouseout\":\n    case \"mouseover\":\n    case \"pointermove\":\n    case \"pointerout\":\n    case \"pointerover\":\n    case \"scroll\":\n    case \"touchmove\":\n    case \"wheel\":\n    case \"mouseenter\":\n    case \"mouseleave\":\n    case \"pointerenter\":\n    case \"pointerleave\":\n      return 8;\n    case \"message\":\n      switch (getCurrentPriorityLevel()) {\n        case ImmediatePriority:\n          return 2;\n        case UserBlockingPriority:\n          return 8;\n        case NormalPriority$1:\n        case LowPriority:\n          return 32;\n        case IdlePriority:\n          return 268435456;\n        default:\n          return 32;\n      }\n    default:\n      return 32;\n  }\n}\nvar hasScheduledReplayAttempt = !1,\n  queuedFocus = null,\n  queuedDrag = null,\n  queuedMouse = null,\n  queuedPointers = new Map(),\n  queuedPointerCaptures = new Map(),\n  queuedExplicitHydrationTargets = [],\n  discreteReplayableEvents =\n    \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n      \" \"\n    );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case \"focusin\":\n    case \"focusout\":\n      queuedFocus = null;\n      break;\n    case \"dragenter\":\n    case \"dragleave\":\n      queuedDrag = null;\n      break;\n    case \"mouseover\":\n    case \"mouseout\":\n      queuedMouse = null;\n      break;\n    case \"pointerover\":\n    case \"pointerout\":\n      queuedPointers.delete(nativeEvent.pointerId);\n      break;\n    case \"gotpointercapture\":\n    case \"lostpointercapture\":\n      queuedPointerCaptures.delete(nativeEvent.pointerId);\n  }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n  existingQueuedEvent,\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  if (\n    null === existingQueuedEvent ||\n    existingQueuedEvent.nativeEvent !== nativeEvent\n  )\n    return (\n      (existingQueuedEvent = {\n        blockedOn: blockedOn,\n        domEventName: domEventName,\n        eventSystemFlags: eventSystemFlags,\n        nativeEvent: nativeEvent,\n        targetContainers: [targetContainer]\n      }),\n      null !== blockedOn &&\n        ((blockedOn = getInstanceFromNode(blockedOn)),\n        null !== blockedOn && attemptContinuousHydration(blockedOn)),\n      existingQueuedEvent\n    );\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  blockedOn = existingQueuedEvent.targetContainers;\n  null !== targetContainer &&\n    -1 === blockedOn.indexOf(targetContainer) &&\n    blockedOn.push(targetContainer);\n  return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n  blockedOn,\n  domEventName,\n  eventSystemFlags,\n  targetContainer,\n  nativeEvent\n) {\n  switch (domEventName) {\n    case \"focusin\":\n      return (\n        (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedFocus,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"dragenter\":\n      return (\n        (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedDrag,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"mouseover\":\n      return (\n        (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedMouse,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )),\n        !0\n      );\n    case \"pointerover\":\n      var pointerId = nativeEvent.pointerId;\n      queuedPointers.set(\n        pointerId,\n        accumulateOrCreateContinuousQueuedReplayableEvent(\n          queuedPointers.get(pointerId) || null,\n          blockedOn,\n          domEventName,\n          eventSystemFlags,\n          targetContainer,\n          nativeEvent\n        )\n      );\n      return !0;\n    case \"gotpointercapture\":\n      return (\n        (pointerId = nativeEvent.pointerId),\n        queuedPointerCaptures.set(\n          pointerId,\n          accumulateOrCreateContinuousQueuedReplayableEvent(\n            queuedPointerCaptures.get(pointerId) || null,\n            blockedOn,\n            domEventName,\n            eventSystemFlags,\n            targetContainer,\n            nativeEvent\n          )\n        ),\n        !0\n      );\n  }\n  return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n  if (null !== targetInst) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n    if (null !== nearestMounted)\n      if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n        if (\n          ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n          null !== targetInst)\n        ) {\n          queuedTarget.blockedOn = targetInst;\n          runWithPriority(queuedTarget.priority, function () {\n            if (13 === nearestMounted.tag) {\n              var lane = requestUpdateLane();\n              lane = getBumpedLaneForHydrationByLane(lane);\n              var root = enqueueConcurrentRenderForLane(nearestMounted, lane);\n              null !== root &&\n                scheduleUpdateOnFiber(root, nearestMounted, lane);\n              markRetryLaneIfNotHydrated(nearestMounted, lane);\n            }\n          });\n          return;\n        }\n      } else if (\n        3 === targetInst &&\n        nearestMounted.stateNode.current.memoizedState.isDehydrated\n      ) {\n        queuedTarget.blockedOn =\n          3 === nearestMounted.tag\n            ? nearestMounted.stateNode.containerInfo\n            : null;\n        return;\n      }\n  }\n  queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (null !== queuedEvent.blockedOn) return !1;\n  for (\n    var targetContainers = queuedEvent.targetContainers;\n    0 < targetContainers.length;\n\n  ) {\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n    if (null === nextBlockedOn) {\n      nextBlockedOn = queuedEvent.nativeEvent;\n      var nativeEventClone = new nextBlockedOn.constructor(\n        nextBlockedOn.type,\n        nextBlockedOn\n      );\n      currentReplayingEvent = nativeEventClone;\n      nextBlockedOn.target.dispatchEvent(nativeEventClone);\n      currentReplayingEvent = null;\n    } else\n      return (\n        (targetContainers = getInstanceFromNode(nextBlockedOn)),\n        null !== targetContainers &&\n          attemptContinuousHydration(targetContainers),\n        (queuedEvent.blockedOn = nextBlockedOn),\n        !1\n      );\n    targetContainers.shift();\n  }\n  return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = !1;\n  null !== queuedFocus &&\n    attemptReplayContinuousQueuedEvent(queuedFocus) &&\n    (queuedFocus = null);\n  null !== queuedDrag &&\n    attemptReplayContinuousQueuedEvent(queuedDrag) &&\n    (queuedDrag = null);\n  null !== queuedMouse &&\n    attemptReplayContinuousQueuedEvent(queuedMouse) &&\n    (queuedMouse = null);\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  queuedEvent.blockedOn === unblocked &&\n    ((queuedEvent.blockedOn = null),\n    hasScheduledReplayAttempt ||\n      ((hasScheduledReplayAttempt = !0),\n      Scheduler.unstable_scheduleCallback(\n        Scheduler.unstable_NormalPriority,\n        replayUnblockedEvents\n      )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n  lastScheduledReplayQueue !== formReplayingQueue &&\n    ((lastScheduledReplayQueue = formReplayingQueue),\n    Scheduler.unstable_scheduleCallback(\n      Scheduler.unstable_NormalPriority,\n      function () {\n        lastScheduledReplayQueue === formReplayingQueue &&\n          (lastScheduledReplayQueue = null);\n        for (var i = 0; i < formReplayingQueue.length; i += 3) {\n          var form = formReplayingQueue[i],\n            submitterOrAction = formReplayingQueue[i + 1],\n            formData = formReplayingQueue[i + 2];\n          if (\"function\" !== typeof submitterOrAction)\n            if (null === findInstanceBlockingTarget(submitterOrAction || form))\n              continue;\n            else break;\n          var formInst = getInstanceFromNode(form);\n          null !== formInst &&\n            (formReplayingQueue.splice(i, 3),\n            (i -= 3),\n            startHostTransition(\n              formInst,\n              {\n                pending: !0,\n                data: formData,\n                method: form.method,\n                action: submitterOrAction\n              },\n              submitterOrAction,\n              formData\n            ));\n        }\n      }\n    ));\n}\nfunction retryIfBlockedOn(unblocked) {\n  function unblock(queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  }\n  null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n  for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[i];\n    queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n  }\n  for (\n    ;\n    0 < queuedExplicitHydrationTargets.length &&\n    ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n  )\n    attemptExplicitHydrationTarget(i),\n      null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n  i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n  if (null != i)\n    for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n      var form = i[queuedTarget],\n        submitterOrAction = i[queuedTarget + 1],\n        formProps = form[internalPropsKey] || null;\n      if (\"function\" === typeof submitterOrAction)\n        formProps || scheduleReplayQueueIfNeeded(i);\n      else if (formProps) {\n        var action = null;\n        if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n          if (\n            ((form = submitterOrAction),\n            (formProps = submitterOrAction[internalPropsKey] || null))\n          )\n            action = formProps.formAction;\n          else {\n            if (null !== findInstanceBlockingTarget(form)) continue;\n          }\n        else action = formProps.action;\n        \"function\" === typeof action\n          ? (i[queuedTarget + 1] = action)\n          : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n        scheduleReplayQueueIfNeeded(i);\n      }\n    }\n}\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n  function (children) {\n    var root = this._internalRoot;\n    if (null === root) throw Error(formatProdErrorMessage(409));\n    var current = root.current,\n      lane = requestUpdateLane();\n    updateContainerImpl(current, lane, children, root, null, null);\n  };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n  function () {\n    var root = this._internalRoot;\n    if (null !== root) {\n      this._internalRoot = null;\n      var container = root.containerInfo;\n      updateContainerImpl(root.current, 2, null, root, null, null);\n      flushSyncWork$1();\n      container[internalContainerInstanceKey] = null;\n    }\n  };\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n  if (target) {\n    var updatePriority = resolveUpdatePriority();\n    target = { blockedOn: null, target: target, priority: updatePriority };\n    for (\n      var i = 0;\n      i < queuedExplicitHydrationTargets.length &&\n      0 !== updatePriority &&\n      updatePriority < queuedExplicitHydrationTargets[i].priority;\n      i++\n    );\n    queuedExplicitHydrationTargets.splice(i, 0, target);\n    0 === i && attemptExplicitHydrationTarget(target);\n  }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1785 = React.version;\nif (\n  \"19.1.0\" !==\n  isomorphicReactPackageVersion$jscomp$inline_1785\n)\n  throw Error(\n    formatProdErrorMessage(\n      527,\n      isomorphicReactPackageVersion$jscomp$inline_1785,\n      \"19.1.0\"\n    )\n  );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n  var fiber = componentOrElement._reactInternals;\n  if (void 0 === fiber) {\n    if (\"function\" === typeof componentOrElement.render)\n      throw Error(formatProdErrorMessage(188));\n    componentOrElement = Object.keys(componentOrElement).join(\",\");\n    throw Error(formatProdErrorMessage(268, componentOrElement));\n  }\n  componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n  componentOrElement =\n    null !== componentOrElement\n      ? findCurrentHostFiberImpl(componentOrElement)\n      : null;\n  componentOrElement =\n    null === componentOrElement ? null : componentOrElement.stateNode;\n  return componentOrElement;\n};\nvar internals$jscomp$inline_2256 = {\n  bundleType: 0,\n  version: \"19.1.0\",\n  rendererPackageName: \"react-dom\",\n  currentDispatcherRef: ReactSharedInternals,\n  reconcilerVersion: \"19.1.0\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n  var hook$jscomp$inline_2257 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n  if (\n    !hook$jscomp$inline_2257.isDisabled &&\n    hook$jscomp$inline_2257.supportsFiber\n  )\n    try {\n      (rendererID = hook$jscomp$inline_2257.inject(\n        internals$jscomp$inline_2256\n      )),\n        (injectedHook = hook$jscomp$inline_2257);\n    } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks));\n  options = createFiberRoot(\n    container,\n    1,\n    !1,\n    null,\n    null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    null\n  );\n  container[internalContainerInstanceKey] = options.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n  var isStrictMode = !1,\n    identifierPrefix = \"\",\n    onUncaughtError = defaultOnUncaughtError,\n    onCaughtError = defaultOnCaughtError,\n    onRecoverableError = defaultOnRecoverableError,\n    transitionCallbacks = null,\n    formState = null;\n  null !== options &&\n    void 0 !== options &&\n    (!0 === options.unstable_strictMode && (isStrictMode = !0),\n    void 0 !== options.identifierPrefix &&\n      (identifierPrefix = options.identifierPrefix),\n    void 0 !== options.onUncaughtError &&\n      (onUncaughtError = options.onUncaughtError),\n    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n    void 0 !== options.onRecoverableError &&\n      (onRecoverableError = options.onRecoverableError),\n    void 0 !== options.unstable_transitionCallbacks &&\n      (transitionCallbacks = options.unstable_transitionCallbacks),\n    void 0 !== options.formState && (formState = options.formState));\n  initialChildren = createFiberRoot(\n    container,\n    1,\n    !0,\n    initialChildren,\n    null != options ? options : null,\n    isStrictMode,\n    identifierPrefix,\n    onUncaughtError,\n    onCaughtError,\n    onRecoverableError,\n    transitionCallbacks,\n    formState\n  );\n  initialChildren.context = getContextForSubtree(null);\n  options = initialChildren.current;\n  isStrictMode = requestUpdateLane();\n  isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n  identifierPrefix = createUpdate(isStrictMode);\n  identifierPrefix.callback = null;\n  enqueueUpdate(options, identifierPrefix, isStrictMode);\n  options = isStrictMode;\n  initialChildren.current.lanes = options;\n  markRootUpdated$1(initialChildren, options);\n  ensureRootIsScheduled(initialChildren);\n  container[internalContainerInstanceKey] = initialChildren.current;\n  listenToAllSupportedEvents(container);\n  return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.1.0\";\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-client.production.js');\n} else {\n  module.exports = require('./cjs/react-dom-client.development.js');\n}\n","export function calculatePosition(data, options = {}) {\n    const { x = 0, y = 22, spacingVertical = 30, spacingHorizontal = 140, } = options;\n    calculateInnerBoxSize(data, {\n        x,\n        y,\n        spacingVertical,\n        spacingHorizontal,\n    });\n    calculatePositionSS(data, {\n        x,\n        y,\n        spacingVertical,\n        spacingHorizontal,\n    });\n}\nfunction calculateInnerBoxSize(data, options) {\n    for (const datum of data) {\n        if (datum.children) {\n            calculateInnerBoxSize(datum.children, options);\n            datum.childrenBoxSize = {\n                width: datum.position.width +\n                    options.spacingHorizontal +\n                    Math.max(...datum.children.map((d) => d.childrenBoxSize.width)),\n                height: Math.max(datum.position.height, options.spacingVertical * (datum.children.length - 1) +\n                    datum.children\n                        .map((d) => d.childrenBoxSize.height)\n                        .reduce((a, b) => a + b, 0)),\n            };\n        }\n        else {\n            datum.childrenBoxSize = {\n                width: datum.position.width,\n                height: datum.position.height,\n            };\n        }\n    }\n}\nfunction calculatePositionSS(data, options) {\n    let y = options.y;\n    for (const datum of data) {\n        if (datum.children) {\n            calculatePositionSS(datum.children, {\n                ...options,\n                x: options.x + datum.position.width + options.spacingHorizontal,\n                y,\n            });\n        }\n        datum.position.x = options.x;\n        datum.position.y =\n            datum.childrenBoxSize.height / 2 - datum.position.height / 2 + y;\n        y += datum.childrenBoxSize.height + options.spacingVertical;\n        datum.anchor = {\n            left: {\n                x: datum.position.x,\n                y: datum.position.y + datum.position.height / 2,\n            },\n            right: {\n                x: datum.position.x + datum.position.width,\n                y: datum.position.y + datum.position.height / 2,\n            },\n        };\n        datum.childrenBoxSize.height =\n            datum.childrenBoxSize.height + options.spacingVertical;\n    }\n}\n//# sourceMappingURL=calculatePosition.js.map","import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nexport function MultilineText(props) {\n    const { label, verticalPosition } = props;\n    if (!label)\n        return;\n    const lines = label.split(/\\r?\\n/);\n    const firstDX = verticalPosition === 'top'\n        ? 1\n        : verticalPosition === 'center'\n            ? -lines.length / 2 + 0.5\n            : -lines.length;\n    return (_jsx(_Fragment, { children: lines.map((line, index) => (_jsx(\"tspan\", { x: \"0\", dy: index === 0 ? `${firstDX}em` : '1em', children: line }, index))) }));\n}\n//# sourceMappingURL=MultilineText.js.map","import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { MultilineText } from './MultilineText';\nexport function Text(props) {\n    const { x, y, label, verticalPosition, horizontalPosition } = props;\n    const transform = `translate(${x},${y})`;\n    let textAnchor;\n    switch (horizontalPosition) {\n        case 'left':\n            textAnchor = 'start';\n            break;\n        case 'center':\n            textAnchor = 'middle';\n            break;\n        case 'right':\n            textAnchor = 'end';\n            break;\n        default:\n            textAnchor = 'middle';\n    }\n    return (_jsxs(_Fragment, { children: [_jsx(\"text\", { textAnchor: textAnchor, transform: transform, stroke: \"rgba(255,255,255,0.5)\", strokeWidth: \"0.5em\", fill: \"none\", fontSize: \"14\", children: _jsx(MultilineText, { label: label, verticalPosition: verticalPosition }) }), _jsx(\"text\", { textAnchor: textAnchor, transform: transform, stroke: \"none\", fontSize: \"14\", fill: \"black\", children: _jsx(MultilineText, { label: label, verticalPosition: verticalPosition }) })] }));\n}\n//# sourceMappingURL=Text.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { refX } from './MarkerDef.utils';\nimport { Text } from './Text';\n/**\n * Creates a simple arrow between 2 points. The arrow has one inflection point, which is the middle of the line.\n * The SVG must define a marker with id=\"arrowhead\" for this to work.\n * @param props\n * @returns\n */\nexport function Arrow(props) {\n    const { id, from, to, label, horizontalPosition = 'center', verticalPosition = 'center', } = props;\n    const middle = { x: (from.x + to.x) / 2, y: (from.y + to.y) / 2 };\n    const headInflectionPoint = {\n        x: to.x - refX * 2, // refX attribute of the marker element in the Arrow component shifts the arrow head to the left, and that the vertices of the arrow head are set to refX, which means that the beginning of the arrow head is refX * 2 to the left.\n        y: to.y,\n    };\n    const d = `M ${from.x} ${from.y} C ${middle.x} ${from.y}  ${middle.x} ${to.y}  ${headInflectionPoint.x} ${to.y} Q ${headInflectionPoint.x} ${to.y}  ${to.x} ${to.y} `;\n    return (_jsxs(\"g\", { id: id, children: [_jsx(\"path\", { d: d, style: {\n                    fill: 'none',\n                    strokeWidth: '2',\n                    stroke: 'black',\n                    markerEnd: 'url(#arrowhead)',\n                } }), horizontalPosition === 'center' && (_jsx(Text, { x: middle.x, y: middle.y, label: label, horizontalPosition: horizontalPosition, verticalPosition: verticalPosition })), horizontalPosition === 'right' && (_jsx(Text, { x: to.x - 12, y: to.y - 8, label: label, horizontalPosition: \"right\", verticalPosition: verticalPosition })), horizontalPosition === 'left' && (_jsx(Text, { x: from.x + 12, y: from.y + 8, label: label, horizontalPosition: \"left\", verticalPosition: verticalPosition }))] }));\n}\n//# sourceMappingURL=Arrow.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Arrow } from '../components/Arrow';\nexport function getArrows(nodes, options = {}) {\n    const status = { level: 0 };\n    const arrows = [];\n    getArrowsSS(nodes, arrows, status, options);\n    return arrows;\n}\nfunction getArrowsSS(nodes, arrows, status, options = {}) {\n    const { getLabel, horizontalPosition, getID, verticalPosition } = options;\n    for (const node of nodes) {\n        if (node.children) {\n            for (const child of node.children) {\n                arrows.push(_jsx(Arrow, { id: getID ? getID(node) : undefined, from: node.anchor.right, to: child.anchor.left, label: getLabel?.(child), horizontalPosition: horizontalPosition, verticalPosition: verticalPosition }, arrows.length));\n            }\n            getArrowsSS(node.children, arrows, {\n                ...status,\n                level: status.level + 1,\n            }, options);\n        }\n    }\n}\n//# sourceMappingURL=getArrows.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getBoxes(nodes, options) {\n    const boxes = [];\n    appendBoxes(nodes, boxes, options);\n    return boxes;\n}\nfunction appendBoxes(nodes, boxes, options = {}) {\n    const { getID } = options;\n    for (const node of nodes) {\n        boxes.push(_jsx(\"g\", { id: getID ? getID(node) : undefined, transform: `translate(${node.position.x} ${node.position.y})`, children: node.element }, boxes.length));\n        if (node.children) {\n            appendBoxes(node.children, boxes, options);\n        }\n    }\n}\n//# sourceMappingURL=getBoxes.js.map","/**\n * Will calculate the SVG of all the node\n * @param data\n */\nexport function prepareTree(data, options) {\n    data = structuredClone(data);\n    prepareTreeSS(data, options);\n    return data;\n}\nfunction prepareTreeSS(data, options) {\n    const { nodeRenderer, nodeRendererOptions = {}, shouldSkipBranch } = options;\n    for (const datum of data) {\n        if (options.parent) {\n            datum.parent = options.parent;\n        }\n        const elementAndSize = nodeRenderer(datum, nodeRendererOptions);\n        datum.position = {\n            x: 0,\n            y: 0,\n            width: elementAndSize.width,\n            height: elementAndSize.height,\n        };\n        datum.element = elementAndSize.element;\n        if (datum.children && datum.children.length === 0) {\n            delete datum.children;\n        }\n        if (datum.children) {\n            if (shouldSkipBranch) {\n                const parents = [datum];\n                let parent = datum.parent;\n                while (parent) {\n                    parents.push(parent);\n                    parent = parent.parent;\n                }\n                datum.children = datum.children.filter((child) => !shouldSkipBranch(child, parents));\n            }\n            prepareTreeSS(datum.children, {\n                ...options,\n                parent: datum,\n            });\n        }\n    }\n}\n//# sourceMappingURL=prepareTree.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { refX } from './MarkerDef.utils';\nexport function MarkerDef() {\n    return (_jsx(\"defs\", { children: _jsx(\"marker\", { id: \"arrowhead\", markerWidth: \"10\", markerHeight: \"7\", refX: refX, refY: \"3.5\", orient: \"auto\", children: _jsx(\"polygon\", { points: \"0 0, 10 3.5, 0 7\" }) }) }));\n}\n//# sourceMappingURL=MarkerDef.js.map","export const refX = 10;\n//# sourceMappingURL=MarkerDef.utils.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { calculatePosition } from '../data/calculatePosition';\nimport { getArrows } from '../data/getArrows';\nimport { getBoxes } from '../data/getBoxes';\nimport { prepareTree } from '../data/prepareTree';\nimport { MarkerDef } from './MarkerDef';\nexport function SVGBoxesTree(props) {\n    const { tree, ...options } = props;\n    const { arrowRendererOptions, nodeRendererOptions, positionOptions } = options;\n    const data = prepareTree(tree, options);\n    calculatePosition(data, positionOptions);\n    const boxes = getBoxes(data, nodeRendererOptions);\n    const arrows = getArrows(data, arrowRendererOptions);\n    const svgSize = {\n        width: 0,\n        height: 0,\n    };\n    const width = [];\n    for (const datum of data) {\n        width.push(datum.childrenBoxSize.width);\n        svgSize.height += datum.childrenBoxSize.height;\n    }\n    svgSize.width = Math.max(...width);\n    return (_jsxs(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: `0 0 ${svgSize.width} ${svgSize.height}`, children: [_jsx(MarkerDef, {}), boxes, arrows] }));\n}\n//# sourceMappingURL=SVGBoxesTree.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function Rectangle(props) {\n    return _jsx(\"rect\", { ...props });\n}\n//# sourceMappingURL=Rectangle.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport function SVG(props) {\n    if (!props.svg)\n        return null;\n    return (_jsx(\"g\", { dangerouslySetInnerHTML: {\n            __html: props.svg,\n        } }));\n}\n//# sourceMappingURL=SVG.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Rectangle } from '../components/Rectangle';\nimport { SVG } from '../components/SVG';\nexport function moleculeRenderer(node, nodeRendererOptions) {\n    const molecules = getMolecules(node, nodeRendererOptions);\n    const topLabel = getTopLabel(node, nodeRendererOptions);\n    const width = Math.max(molecules.width, topLabel.width);\n    const height = Math.max(molecules.height, topLabel.height);\n    return {\n        width,\n        height,\n        element: (_jsxs(\"g\", { children: [_jsx(Rectangle, { width: width, height: height, style: {\n                        ...{ stroke: 'black', fill: 'white' },\n                        ...(node.style || {}),\n                        ...(nodeRendererOptions.getBoxStyle?.(node) || {}),\n                    } }), molecules.element, topLabel.element] })),\n    };\n}\nfunction getTopLabel(node, options = {}) {\n    const label = options.getTopLabel?.(node) || node.label;\n    if (!label) {\n        return {\n            width: 0,\n            height: 0,\n            element: null,\n        };\n    }\n    return {\n        width: 200,\n        height: 20,\n        element: (_jsx(\"text\", { x: 0, y: -6, textAnchor: \"left\", stroke: \"none\", fontSize: \"14\", fill: \"black\", children: label })),\n    };\n}\n/**\n * This code is designed to also allow reactions for which we have many molecules\n * @param node\n * @param options\n * @returns\n */\nfunction getMolecules(node, options) {\n    const { maxWidth = 200, maxHeight = 150, getMolecules, getMoleculeStyle, } = options;\n    if (!getMolecules) {\n        throw new Error('getMolecules is not defined');\n    }\n    const molecules = getMolecules(node);\n    if (!molecules) {\n        return {\n            width: 0,\n            height: 0,\n            element: undefined,\n        };\n    }\n    const svgs = molecules\n        .filter((molecule) => molecule)\n        .map((molecule, index) => {\n        const svg = molecule.toSVG(maxWidth, maxHeight, undefined, {\n            autoCrop: true,\n            autoCropMargin: 10,\n            suppressChiralText: true,\n        });\n        if (getMoleculeStyle) {\n            return addStyleToSVG(svg, getMoleculeStyle(molecule, node, index));\n        }\n        return svg;\n    });\n    const { svg, width, height } = joinSVGs(svgs);\n    return {\n        width,\n        height,\n        element: _jsx(SVG, { svg: svg }),\n    };\n}\nfunction getPlus(options = {}) {\n    const { size = 11, padding = 5, strokeWidth = 2 } = options;\n    const x1 = padding + size / 2;\n    const y1 = padding;\n    const x2 = padding + size / 2;\n    const y2 = padding + size;\n    return {\n        svg: `<line x1=\"${x1}\" y1=\"${y1}\" x2=\"${x2}\" y2=\"${y2}\" stroke=\"rgb(0,0,0)\" stroke-width=\"${strokeWidth}\"></line>` +\n            `<line x1=\"${y1}\" y1=\"${x1}\" x2=\"${y2}\" y2=\"${x2}\" stroke=\"rgb(0,0,0)\" stroke-width=\"${strokeWidth}\"></line>`,\n        width: size + padding * 2,\n        height: size + padding * 2,\n    };\n}\nfunction joinSVGs(svgs) {\n    const results = [];\n    let maxHeight = 0;\n    for (const svg of svgs) {\n        const size = getSVGViewBox(svg);\n        if (results.length) {\n            results.push(getPlus());\n        }\n        results.push({ svg, width: size.width, height: size.height });\n        maxHeight = Math.max(maxHeight, size.height);\n    }\n    let currentWidth = 0;\n    for (const result of results) {\n        const shiftX = currentWidth;\n        const shiftY = (maxHeight - result.height) / 2;\n        result.shiftedSVG = `<g transform=\"translate(${shiftX},${shiftY})\">${result.svg}</g>`;\n        currentWidth += result.width;\n    }\n    return {\n        width: currentWidth,\n        height: maxHeight,\n        svg: results.map((result) => result.shiftedSVG).join('\\n'),\n    };\n}\nfunction getSVGViewBox(svg) {\n    const match = svg.match(/.*viewBox=\"(?<minX>-?\\d+) (?<minY>-?\\d+) (?<width>\\d+) (?<height>\\d+)\".*/);\n    if (!match?.groups) {\n        throw new Error('ViewBox not found');\n    }\n    // convert to numbers and return the object\n    return {\n        minX: Number(match.groups.minX),\n        minY: Number(match.groups.minY),\n        width: Number(match.groups.width),\n        height: Number(match.groups.height),\n    };\n}\nfunction styleObjectToString(style) {\n    const styleArray = [];\n    for (const property in style) {\n        if (Object.hasOwn(style, property)) {\n            const kebabCaseProperty = property\n                .replace(/([A-Z])/g, '-$1')\n                .toLowerCase();\n            styleArray.push(`${kebabCaseProperty}: ${style[property]}`);\n        }\n    }\n    return styleArray.join('; ');\n}\nfunction addStyleToSVG(svg, style) {\n    if (!style)\n        return svg;\n    const size = getSVGViewBox(svg);\n    const match = svg.match(/<svg.*>/);\n    if (!match) {\n        throw new Error('SVG tag not found');\n    }\n    const svgTag = match[0];\n    const styleString = styleObjectToString(style);\n    const styleRectange = `<rect x=\"${size.minX}\" y=\"${size.minY}\" width=\"${size.width}\" height=\"${size.height}\" style=\"${styleString}\"></rect>`;\n    return svg.replace(svgTag, `${svgTag}${styleRectange}`);\n}\n//# sourceMappingURL=moleculeRenderer.js.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { flushSync } from 'react-dom';\nimport { createRoot } from 'react-dom/client';\nimport { SVGBoxesTree } from './components/SVGBoxesTree';\nexport function render(tree, options) {\n    const element = _jsx(SVGBoxesTree, { tree: tree, ...options });\n    const div = document.createElement('div');\n    const root = createRoot(div);\n    flushSync(() => {\n        root.render(element);\n    });\n    return div.innerHTML;\n}\n//# sourceMappingURL=render.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Rectangle } from '../components/Rectangle';\nexport function taxonomyRenderer(node) {\n    const minSize = { width: 120, height: 20 };\n    const taxonomy = getTaxonomy(node, minSize);\n    const label = getLabel(node, minSize);\n    const width = Math.max(taxonomy.width, label.width);\n    const height = Math.max(taxonomy.height, label.height);\n    const nbTaxonomies = getNbTaxonomies(node, width, minSize);\n    return {\n        width,\n        height,\n        element: (_jsxs(\"g\", { children: [_jsx(Rectangle, { width: width, height: height, style: {\n                        ...{ stroke: 'black', fill: 'white' },\n                        ...(node.style || {}),\n                    } }), label.element, taxonomy.element, nbTaxonomies.element] })),\n    };\n}\nfunction getNbTaxonomies(node, width, minSize) {\n    return {\n        width: minSize.width,\n        height: minSize.height,\n        element: (_jsx(\"text\", { x: width, y: -5, textAnchor: \"end\", stroke: \"none\", fontSize: \"14\", fill: \"#00008B\" // dark blue\n            , fontStyle: 'bold', fontFamily: \"Arial, Helvetica, sans-serif\", children: node.nbTaxonomies })),\n    };\n}\nfunction getLabel(node, minSize, options = {}) {\n    const { spacingHorizontal } = {\n        spacingHorizontal: 8,\n        ...options,\n    };\n    if (node.rank === '') {\n        return {\n            width: 0,\n            height: 0,\n            element: null,\n        };\n    }\n    return {\n        width: minSize.width,\n        height: minSize.height,\n        element: (_jsx(\"text\", { x: spacingHorizontal / 2, y: -6, textAnchor: \"start\", stroke: \"none\", fontSize: \"14\", fill: \"grey\", fontStyle: 'italic', fontFamily: \"Arial, Helvetica, sans-serif\", children: node.rank })),\n    };\n}\nfunction getTaxonomy(node, minSize, options = {}) {\n    const { font, fontSize, spacingHorizontal } = {\n        font: 'Arial, Helvetica, sans-serif',\n        fontSize: 16,\n        spacingHorizontal: 8,\n        ...options,\n    };\n    if (node.name === '') {\n        return {\n            width: 0,\n            height: 0,\n            element: null,\n        };\n    }\n    let { width, height } = getStringSize(node.name, {\n        font,\n        fontSize,\n        spacingHorizontal,\n    });\n    const textWith = width;\n    let positionX = spacingHorizontal / 2;\n    if (height <= minSize.height) {\n        height = minSize.height;\n    }\n    if (width <= minSize.width) {\n        width = minSize.width;\n        positionX = (width - textWith + spacingHorizontal) / 2;\n    }\n    return {\n        width,\n        height,\n        element: (_jsx(\"g\", { height: height, width: width, dominantBaseline: \"central\", children: _jsx(\"text\", { x: positionX, y: height / 2, stroke: \"none\", fontSize: fontSize, fill: \"black\", ...(node.url ? { 'data-url': node.url } : {}), fontFamily: font, children: node.name }) })),\n    };\n}\nfunction getStringSize(text, options) {\n    const { font = 'Arial, Helvetica, sans-serif', fontSize = 16, spacingHorizontal = 8, } = options;\n    const tempElement = document.createElement('span');\n    tempElement.style.font = `${fontSize}px ${font}`;\n    tempElement.style.visibility = 'hidden';\n    tempElement.style.position = 'absolute';\n    tempElement.style.top = '-9999px';\n    tempElement.style.left = '-9999px';\n    tempElement.textContent = text;\n    document.body.appendChild(tempElement);\n    const { height, width } = tempElement.getBoundingClientRect();\n    document.body.removeChild(tempElement);\n    return { width: width + spacingHorizontal, height };\n}\n//# sourceMappingURL=taxonomyRenderer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFragmentationSVG = getFragmentationSVG;\nconst react_tree_svg_1 = require(\"react-tree-svg\");\n/**\n * @typedef {object} MassPeak\n * @property {number} mass\n * @property {number} intensity\n */\n/**\n * @param {object[]} trees\n * @param {object} [options={}]\n * @param {object} [options.OCL]\n * @param {number} [options.accuracy]\n * @param {MassPeak[]} [options.peaks]\n * @returns\n */\nfunction getFragmentationSVG(trees, options = {}) {\n    const { OCL, accuracy, peaks = [] } = options;\n    const maxIntensity = peaks?.length > 0\n        ? Math.log(Math.max(...peaks.map((peak) => peak.intensity)) + 1)\n        : 0;\n    const rendererOptions = {\n        nodeRenderer: react_tree_svg_1.moleculeRenderer,\n        arrowRendererOptions: {\n            getLabel: (node) => {\n                return node?.reaction?.label;\n            },\n            labelPosition: 'center',\n        },\n        nodeRendererOptions: {\n            getTopLabel: (node) => {\n                const mz = node?.molecules[0]?.info?.mz;\n                if (mz === undefined)\n                    return;\n                return `${mz.toFixed(4)} m/z`;\n            },\n            getBoxStyle: (node) => {\n                for (const molecule of node.molecules) {\n                    const peak = getPeakInRange(peaks, molecule?.info?.mz, accuracy);\n                    if (peak) {\n                        return {\n                            fillOpacity: maxIntensity\n                                ? (0.2 * Math.log(peak.intensity + 1)) / maxIntensity\n                                : 0.2,\n                            fill: 'red',\n                        };\n                    }\n                }\n            },\n            getMolecules: (node) => {\n                return node.molecules.map((molecule) => OCL.Molecule.fromIDCode(molecule.idCode));\n            },\n        },\n        positionOptions: {\n            spacingHorizontal: 150,\n        },\n    };\n    return (0, react_tree_svg_1.render)(trees, rendererOptions);\n}\nfunction getPeakInRange(peaks, mass, accuracy) {\n    if (!mass || !Array.isArray(peaks)) {\n        return undefined;\n    }\n    const massAccuracy = (accuracy * mass) / 1e6;\n    for (const peak of peaks) {\n        if (Math.abs(peak.mass - mass) <= massAccuracy) {\n            return peak;\n        }\n    }\n    return undefined;\n}\n//# sourceMappingURL=getFragmentationSVG.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMolecules = fromMolecules;\nconst mass_fragmentation_1 = require(\"mass-fragmentation\");\nconst mf_matcher_1 = require(\"mf-matcher\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst mf_utilities_1 = require(\"mf-utilities\");\n/** * Generates a database 'monoisotopic' from a monoisotopic mass and various options\n * @param {{smiles?:string,molecule?:string,idCode?:string}[]}    entries - Array of object containing a property to recreate the molecule\n * @param {import('openchemlib')} ocl - The OCL library\n * @param {object}    [options={}]\n * @param {function}  [options.onStep] - Callback to do after each step\n * @param {boolean}   [options.allowNeutral=true]\n * @param {string}    [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {number}    [options.precision=100] - Allowed mass range based on precision\n * @param {boolean}   [options.groupResults=false] - Should we group the results if they have the same monoisotopic mass and experimental mass\n * @param {object}    [options.fragmentation={}]\n * @param {object}    [options.fragmentation.acyclic=false]\n * @param {object}    [options.fragmentation.cyclic=false]\n * @param {object}    [options.fragmentation.full=true]\n * @param {import('mf-matcher').MSEMFilterOptions}        [options.filter={}]\n * @returns {Promise}\n */\nasync function fromMolecules(entries, ocl, options = {}) {\n    let { onStep, ionizations, filter, fragmentation = { acyclic: false, cyclic: false, full: true }, groupResults = false, } = options;\n    ionizations = (0, mf_utilities_1.preprocessIonizations)(ionizations);\n    let results = [];\n    for (let i = 0; i < entries.length; i++) {\n        const entry = entries[i];\n        const molecule = getMolecule(entry, ocl);\n        if (!molecule)\n            continue;\n        const { acyclic = false, cyclic = false, full = true } = fragmentation;\n        const allFragments = (0, mass_fragmentation_1.fragment)(molecule, {\n            acyclic,\n            cyclic,\n            full,\n        });\n        for (const oneFragment of allFragments) {\n            appendResults(results, oneFragment, {\n                entry,\n                ionizations,\n                filter,\n            });\n            if (onStep)\n                onStep(i);\n        }\n    }\n    if (groupResults) {\n        results = groupFragmentationResults(results);\n    }\n    return results.sort((a, b) => a.em - b.em);\n}\n/**\n * We could group the results and replace the property 'fragment' by 'fragments'\n * @param {*} results\n */\nfunction groupFragmentationResults(results) {\n    const sortedResults = results.slice().sort((a, b) => {\n        if (a.em !== b.em) {\n            return a.em - b.em;\n        }\n        if (a.ms.em !== b.ms.em) {\n            return a.ms.em - b.ms.em;\n        }\n        if (a.fragment.idCode < b.fragment.idCode)\n            return -1;\n        return 1;\n    });\n    const groupedResults = [];\n    let currentResult = {};\n    for (let result of sortedResults) {\n        if (result.em !== currentResult.em ||\n            result.ms.em !== currentResult.ms.em) {\n            currentResult = { ...result };\n            currentResult.fragments = [\n                {\n                    idCode: result.fragment.idCode,\n                    type: result.fragment.type,\n                    count: 1,\n                    parents: [{ ...result.fragment.parent, count: 1 }],\n                },\n            ];\n            delete currentResult.fragment;\n            groupedResults.push(currentResult);\n        }\n        else {\n            const lastFragment = currentResult.fragments.at(-1);\n            if (lastFragment.idCode === result.fragment.idCode) {\n                lastFragment.count++;\n                if (lastFragment.parents.at(-1).idCode === result.fragment.parent.idCode) {\n                    lastFragment.parents.at(-1).count++;\n                }\n                else {\n                    lastFragment.parents.push({ ...result.fragment.parent, count: 1 });\n                }\n            }\n            else {\n                currentResult.fragments.push({\n                    idCode: result.fragment.idCode,\n                    type: result.fragment.type,\n                    count: 1,\n                    parents: [{ ...result.fragment.parent, count: 1 }],\n                });\n            }\n        }\n    }\n    for (let group of groupedResults) {\n        group.fragments = group.fragments.sort((a, b) => b.count - a.count);\n    }\n    return groupedResults;\n}\n/**\n *\n * @param {object} entry\n * @param {import('openchemlib')} ocl - The OCL library\n */\nfunction getMolecule(entry, ocl) {\n    if (entry.idCode) {\n        return ocl.Molecule.fromIDCode(entry.idCode);\n    }\n    if (entry.ocl && entry.ocl.idCode) {\n        return ocl.Molecule.fromIDCode(entry.ocl.idCode);\n    }\n    if (entry.smiles) {\n        return ocl.Molecule.fromSmiles(entry.smiles);\n    }\n    if (entry.molfile) {\n        return ocl.Molecule.fromMolfile(entry.molfile);\n    }\n    return undefined;\n}\nfunction appendResults(results, oneFragment, options) {\n    const mf = oneFragment.mfInfo.mf;\n    const { ionizations, filter, entry } = options;\n    const mfInfo = new mf_parser_1.MF(mf).getInfo();\n    for (let ionization of ionizations) {\n        const result = {\n            charge: mfInfo.charge,\n            em: mfInfo.monoisotopicMass,\n            mw: mfInfo.mass,\n            mf: mfInfo.mf,\n            ionization,\n            unsaturation: mfInfo.unsaturation,\n            atoms: mfInfo.atoms,\n            fragment: {\n                parent: {\n                    ...entry,\n                    idCode: oneFragment.parentIDCode,\n                },\n                idCode: oneFragment.idCode,\n                type: oneFragment.fragmentType,\n            },\n        };\n        let match = (0, mf_matcher_1.msemMatcher)(result, filter);\n        if (!match)\n            continue;\n        result.ms = match.ms;\n        result.ionization = match.ionization;\n        results.push(result);\n    }\n}\n//# sourceMappingURL=fromMolecules.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceToMF = sequenceToMF;\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst mf_utilities_1 = require(\"mf-utilities\");\n/**\n * Convert a nucleic sequence to a MF\n * @param {String} sequence\n * @param {object} [options={}]\n * @param {string} [options.kind] - rna, ds-dna or dna. Default if contains U: rna, otherwise ds-dna\n * @param {string} [options.fivePrime=monophosphate] - alcohol, monophosphate, diphosphate, triphosphate\n * @param {string} [options.circular=false]\n */\nfunction sequenceToMF(sequence, options = {}) {\n    let fivePrimeTerminal = 'HO';\n    let threePrimeTerminal = 'H';\n    sequence = sequence.replace(/^HO/, '');\n    sequence = sequence.replace(/H$/, '');\n    sequence = sequence.trim();\n    if (sequence === '')\n        return '';\n    sequence = (0, mf_utilities_1.ensureUppercaseSequence)(sequence);\n    // if the sequence is in lowercase but the parenthesis we should convert it to uppercase\n    if (sequence.match(/^[a-z]+$/)) {\n        sequence = sequence.toUpperCase();\n    }\n    let { kind, circular, fivePrime = 'monophosphate' } = options;\n    fivePrime = fivePrime.replaceAll(/[^A-Za-z]/g, '').toLowerCase();\n    if (!kind) {\n        if (sequence.includes('U')) {\n            kind = 'rna';\n        }\n        else {\n            kind = 'ds-dna';\n        }\n    }\n    kind = kind.replaceAll(/[^A-Za-z]/g, '').toLowerCase();\n    if (sequence.includes('(') && kind === 'dsdna') {\n        throw new Error('Nucleotide sequenceToMF: modifications not allowed for ds-DNA');\n    }\n    let results = [[]];\n    if (kind === 'dsdna')\n        results.push([]);\n    let parenthesisCounter = 0;\n    for (let i = 0; i < sequence.length; i++) {\n        let currentSymbol = sequence[i];\n        while (sequence[i + 1] && sequence[i + 1].match(/[a-z]/)) {\n            i++;\n            currentSymbol += sequence[i];\n        }\n        if (currentSymbol.length > 1) {\n            results[0].push(currentSymbol);\n            continue;\n        }\n        if (currentSymbol === '(' ||\n            currentSymbol === ')' ||\n            parenthesisCounter > 0) {\n            if (currentSymbol === '(') {\n                parenthesisCounter++;\n                if (i === 0)\n                    fivePrimeTerminal = '';\n            }\n            if (currentSymbol === ')') {\n                parenthesisCounter--;\n                if (i === sequence.length - 1)\n                    threePrimeTerminal = '';\n            }\n            switch (kind) {\n                case 'dna':\n                case 'rna':\n                    results[0].push(currentSymbol);\n                    break;\n                default:\n                    // eslint-disable-next-line no-console\n                    console.warn(`Nucleotide sequenceToMF with modification: unknown kind: ${kind}`);\n            }\n            continue;\n        }\n        let nucleotideType = i === 0 ? fivePrime : 'monophosphate';\n        currentSymbol = currentSymbol.replace(/[\\t\\n\\r ]/, '');\n        if (!currentSymbol)\n            continue;\n        switch (kind) {\n            case 'dna':\n                results[0].push(desoxyNucleotides[nucleotideType][currentSymbol]);\n                break;\n            case 'rna':\n                results[0].push(oxyNucleotides[nucleotideType][currentSymbol]);\n                break;\n            case 'dsdna':\n                results[0].push(desoxyNucleotides[nucleotideType][currentSymbol]);\n                results[1].unshift(desoxyNucleotides[nucleotideType][complementary[currentSymbol]]);\n                break;\n            default:\n                // eslint-disable-next-line no-console\n                console.warn(`Nucleotide sequenceToMF: unknown kind: ${kind}`);\n        }\n    }\n    if (!circular) {\n        for (const result of results)\n            result.unshift(fivePrimeTerminal);\n        for (const result of results)\n            result.push(threePrimeTerminal);\n    }\n    return results.map((result) => result.join('')).join('.');\n}\nconst complementary = {\n    A: 'T',\n    T: 'A',\n    C: 'G',\n    G: 'C',\n};\nconst desoxyNucleotides = {\n    alcohol: {},\n    monophosphate: {},\n    diphosphate: {},\n    triphosphate: {},\n};\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'DNA')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.alcohol[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'DNAp')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'NucleotideP')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'DNApp')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.diphosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'DNAppp')) {\n    if (group.oneLetter) {\n        desoxyNucleotides.triphosphate[group.oneLetter] = group.symbol;\n    }\n}\nconst oxyNucleotides = {\n    alcohol: {},\n    monophosphate: {},\n    diphosphate: {},\n    triphosphate: {},\n};\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'RNA')) {\n    if (group.oneLetter) {\n        oxyNucleotides.alcohol[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'RNAp')) {\n    if (group.oneLetter) {\n        oxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'NucleotideP')) {\n    if (group.oneLetter) {\n        oxyNucleotides.monophosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'RNApp')) {\n    if (group.oneLetter) {\n        oxyNucleotides.diphosphate[group.oneLetter] = group.symbol;\n    }\n}\nfor (const group of chemical_groups_1.groups.filter(({ kind }) => kind === 'RNAppp')) {\n    if (group.oneLetter) {\n        oxyNucleotides.triphosphate[group.oneLetter] = group.symbol;\n    }\n}\n//# sourceMappingURL=sequenceToMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.furanThreeTerm = furanThreeTerm;\nfunction furanThreeTerm(nucleotide) {\n    // last residue should become a furan\n    let parts = nucleotide\n        .replaceAll(' ', '')\n        .replaceAll(/([\\d)a-z])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n        .split(/ /);\n    let last = parts.pop();\n    if (!last.match(/D[acgt]mp(.*)$/)) {\n        // eslint-disable-next-line no-console\n        console.warn(`furanThreeTerm can not remove a non monophosphate nucleic acid: ${last}`);\n        return parts.join('') + last;\n    }\n    return parts.join('') + last.replace(/D[acgt]mp(.*)$/, 'Furp');\n}\n//# sourceMappingURL=furanThreeTerm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addFiveTerm = addFiveTerm;\nconst furanThreeTerm_js_1 = require(\"./furanThreeTerm.js\");\nfunction addFiveTerm(mfs, fiveTerm, i, options) {\n    if (options.a)\n        mfs.push(`${fiveTerm}O-1H-1$a${i}`); // neutral ok\n    if (options.ab && i > 1)\n        mfs.push(`${(0, furanThreeTerm_js_1.furanThreeTerm)(fiveTerm)}$a${i}-B`); // A minus base\n    if (options.b)\n        mfs.push(`${fiveTerm}H$b${i}`); // need to add an hydrogen, see: https://books.google.ch/books?id=B57e37bJjqAC&pg=PA172&lpg=PA172&dq=oligonucleotide+b+fragmentation&source=bl&ots=mRr29Pexx2&sig=1NUQcWV-wuj6o9q81my86AVoRto&hl=fr&sa=X&ved=2ahUKEwjI5M3yn-7fAhUJMewKHQR6Bcs4ChDoATADegQIBhAB#v=onepage&q&f=true\n    if (options.c)\n        mfs.push(`${fiveTerm}PO2$c${i}`); // neutral ok\n    if (options.d)\n        mfs.push(`${fiveTerm}PO3H2$d${i}`);\n    if (options.dh2o)\n        mfs.push(`${fiveTerm}PO2$d${i}-H2O`);\n}\n//# sourceMappingURL=addFiveTerm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baseLoss = baseLoss;\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst mfLosses = {};\nfor (const nucleotide of ['Amp', 'Tmp', 'Cmp', 'Gmp', 'Ump']) {\n    mfLosses[nucleotide] = {\n        code: nucleotide.charAt(0),\n        diff: (0, mf_utilities_1.mfDiff)('Rmp', nucleotide),\n    };\n}\nfor (const nucleotide of ['Damp', 'Dtmp', 'Dcmp', 'Dgmp', 'Dump']) {\n    mfLosses[nucleotide] = {\n        code: nucleotide.charAt(1).toUpperCase(),\n        diff: (0, mf_utilities_1.mfDiff)('Drmp', nucleotide),\n    };\n}\nfunction baseLoss(nucleotide) {\n    // any residue can loose a base\n    let results = [];\n    for (let key in mfLosses) {\n        const base = mfLosses[key];\n        if (nucleotide.includes(key)) {\n            results.push(`${nucleotide}(${base.diff})$${base.code}*`);\n        }\n    }\n    return results;\n}\n//# sourceMappingURL=baseLoss.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addFiveTermBaseLoss = addFiveTermBaseLoss;\nconst baseLoss_js_1 = require(\"./baseLoss.js\");\nfunction addFiveTermBaseLoss(mfs, fiveTerm, i, options) {\n    if (!options.abcdBaseLoss)\n        return;\n    let loss = (0, baseLoss_js_1.baseLoss)(fiveTerm);\n    for (const mf of loss) {\n        if (options.a) {\n            mfs.push(`${mf}`.replace('$', `O-1H-1$a${i} `));\n        }\n        if (options.b) {\n            mfs.push(`${mf}`.replace('$', `H-1$b${i} `));\n        }\n        if (options.c) {\n            mfs.push(`${mf}`.replace('$', `PO2$c${i} `));\n        }\n        if (options.d) {\n            mfs.push(`${mf}`.replace('$', `PO3H2$d${i} `));\n        }\n    }\n}\n//# sourceMappingURL=addFiveTermBaseLoss.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addInternalTerm = addInternalTerm;\nconst furanThreeTerm_js_1 = require(\"./furanThreeTerm.js\");\n// https://books.google.ch/books?id=B57e37bJjqAC&pg=PA172&lpg=PA172&dq=oligonucleotide+b+fragmentation&source=bl&ots=mRr29Pexx2&sig=1NUQcWV-wuj6o9q81my86AVoRto&hl=fr&sa=X&ved=2ahUKEwjI5M3yn-7fAhUJMewKHQR6Bcs4ChDoATADegQIBhAB#v=onepage&q=oligonucleotide%20b%20fragmentation&f=false\nfunction addInternalTerm(mfs, internal, ter3, ter5, options = {}) {\n    if (options.aw) {\n        // without base loss\n        mfs.push(`HO${internal}O-1H-1$w${ter3}:a${ter5}`); // A W\n    }\n    if (options.bw) {\n        // without base loss\n        mfs.push(`HO${internal}H$w${ter3}:b${ter5}`); // B W\n    }\n    if (options.abw) {\n        // with base loss\n        let fragment = (0, furanThreeTerm_js_1.furanThreeTerm)(internal);\n        mfs.push(`HO${fragment}$w${ter3}:a${ter5}-B`); // A minus base - W\n    }\n    if (options.aby) {\n        // with base loss\n        let fragment = (0, furanThreeTerm_js_1.furanThreeTerm)(internal);\n        mfs.push(`O-2P-1${fragment}$y${ter3}:a${ter5}-B`); // A minus base - Y\n    }\n}\n//# sourceMappingURL=addInternalTerm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addThreeTerm = addThreeTerm;\nfunction addThreeTerm(mfs, threeTerm, i, options) {\n    if (options.w)\n        mfs.push(`HO${threeTerm}$w${i}`); // neutral ok\n    if (options.x)\n        mfs.push(`H-1${threeTerm}$x${i}`); // neutral ok\n    if (options.y)\n        mfs.push(`O-2P-1${threeTerm}$y${i}`); // neutral ok\n    if (options.z)\n        mfs.push(`O-3H-2P-1${threeTerm}$z${i}`); // neutral ok\n    if (options.zch2)\n        mfs.push(`O-3H-4C-1P-1${threeTerm}$z${i}-CH2`); // TODO to confirm\n}\n//# sourceMappingURL=addThreeTerm.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addThreeTermBaseLoss = addThreeTermBaseLoss;\nconst baseLoss_js_1 = require(\"./baseLoss.js\");\nfunction addThreeTermBaseLoss(mfs, threeTerm, i, options) {\n    if (!options.wxyzBaseLoss)\n        return;\n    let loss = (0, baseLoss_js_1.baseLoss)(threeTerm);\n    for (const mf of loss) {\n        if (options.w) {\n            mfs.push(`HO${mf}`.replace('$', `$w${i} `));\n        }\n        if (options.x) {\n            mfs.push(`H-1${mf}`.replace('$', `$x${i} `));\n        }\n        if (options.y) {\n            mfs.push(`O-2P-1${mf}`.replace('$', `$y${i} `));\n        }\n        if (options.z) {\n            mfs.push(`O-3H-1P-1(+)${mf}`.replace('$', `$z${i} `));\n        }\n    }\n}\n//# sourceMappingURL=addThreeTermBaseLoss.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateFragments = generateFragments;\nconst addFiveTerm_1 = require(\"./addFiveTerm\");\nconst addFiveTermBaseLoss_1 = require(\"./addFiveTermBaseLoss\");\nconst addInternalTerm_1 = require(\"./addInternalTerm\");\nconst addThreeTerm_1 = require(\"./addThreeTerm\");\nconst addThreeTermBaseLoss_1 = require(\"./addThreeTermBaseLoss\");\nfunction generateFragments(mf, options) {\n    if (options === undefined) {\n        options = {\n            a: false,\n            ab: false,\n            b: false,\n            c: false,\n            d: false,\n            dh2o: false,\n            w: false,\n            x: false,\n            y: false,\n            z: false,\n            zch2: false,\n            aw: false,\n            bw: false,\n            abw: false,\n            aby: false,\n            abcdBaseLoss: false,\n            wxyzBaseLoss: false,\n        };\n    }\n    let mfs = [];\n    // need to allow 0-9 to deal with neutral loss\n    let mfparts = mf\n        .replaceAll(/([\\d)a-z])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n        .split(/ /);\n    let fiveTerm = '';\n    let threeTerm = '';\n    if (mfparts[0].startsWith('(')) {\n        fiveTerm += mfparts[0];\n        mfparts = mfparts.splice(1);\n    }\n    if (mfparts.at(-1).includes('(')) {\n        threeTerm += mfparts.at(-1).replace(/^[^()]*/, '');\n        mfparts[mfparts.length - 1] = mfparts.at(-1).replace(/\\(.*/, '');\n    }\n    for (let ter5 = 1; ter5 < mfparts.length; ter5++) {\n        fiveTerm += mfparts[ter5 - 1];\n        threeTerm = mfparts[mfparts.length - ter5] + threeTerm;\n        (0, addFiveTerm_1.addFiveTerm)(mfs, fiveTerm, ter5, options);\n        (0, addFiveTermBaseLoss_1.addFiveTermBaseLoss)(mfs, fiveTerm, ter5, options);\n        (0, addThreeTerm_1.addThreeTerm)(mfs, threeTerm, ter5, options);\n        (0, addThreeTermBaseLoss_1.addThreeTermBaseLoss)(mfs, threeTerm, ter5, options);\n    }\n    for (let i = 1; i < mfparts.length - 1; i++) {\n        let internal = '';\n        for (let j = i; j < mfparts.length - 1; j++) {\n            internal += mfparts[j];\n            if (j > i) {\n                (0, addInternalTerm_1.addInternalTerm)(mfs, internal, mfparts.length - i, j + 1, options);\n            }\n        }\n    }\n    return mfs;\n}\n//# sourceMappingURL=generateFragments.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromNucleicSequence = fromNucleicSequence;\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst mf_generator_1 = require(\"mf-generator\");\nconst nucleotide_1 = require(\"nucleotide\");\n/**\n * Add a database starting from a peptidic sequence\n *\n * @param {string} [sequencesString] Sequence as a string of 1 letter or 3 letters code. Could also be a correct molecular formula respecting uppercase, lowercase\n * @param {object} [options={}]\n * @param {boolean} [options.estimate=false] - estimate the number of MF without filters\n * @param {function} [options.onStep] - Callback to do after each step\n * @param {number} [options.limit=100000]\n * @param {string} [options.ionizations='']\n * @param {object} [options.info={}]\n * @param {string} [options.info.kind] - rna, ds-dna or dna. Default if contains U: rna, otherwise ds-dna\n * @param {string} [options.info.fivePrime=monophosphate] - alcohol, monophosphate, diphosphate, triphosphate\n * @param {string} [options.info.circular=false]\n * @param {array}   [options.mfsArray=[]]\n * @param {object}  [options.fragmentation={}] Object defining options for fragmentation\n * @param {boolean} [options.fragmentation.a=false] If true allow fragments of type 'a'\n * @param {boolean} [options.fragmentation.ab=false] If true allow fragments of type 'a' minus base\n * @param {boolean} [options.fragmentation.b=false] If true allow fragments of type 'b'\n * @param {boolean} [options.fragmentation.c=false] If true allow fragments of type 'c'\n * @param {boolean} [options.fragmentation.d=false] If true allow fragments of type 'd'\n * @param {boolean} [options.fragmentation.dh2o=false] If true allow fragments of type 'd' with water loss\n * @param {boolean} [options.fragmentation.w=false] If true allow fragments of type 'w'\n * @param {boolean} [options.fragmentation.x=false] If true allow fragments of type 'x'\n * @param {boolean} [options.fragmentation.y=false] If true allow fragments of type 'y'\n * @param {boolean} [options.fragmentation.z=false] If true allow fragments of type 'z'\n * @param {boolean} [options.baseLoss=false] If true allow base loss at all the positions\n *\n * @param {object} [options.filter={}] Object defining options for molecular formula filter\n * @param {number} [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number} [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number} [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number} [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number} [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number} [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number} [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number} [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}  [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object} [options.filter.unsaturation={}]\n * @param {number} [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number} [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @returns {Promise}\n */\nasync function fromNucleicSequence(sequencesString, options = {}) {\n    const { mfsArray = [], fragmentation = {}, filter = {}, ionizations = '', info = {}, estimate = false, limit = 100000, onStep, } = options;\n    let sequences = (0, nucleotide_1.sequenceToMF)(sequencesString, info).split('.');\n    let fragmentsArray = sequences.slice();\n    // calculate fragmentation\n    for (let i = 0; i < sequences.length; i++) {\n        let sequence = sequences[i];\n        let fragments = (0, nucleotide_1.generateFragments)(sequence, fragmentation);\n        if (i === 1) {\n            // complementary sequence\n            fragments = fragments.map((fragment) => fragment.replaceAll('$', '$cmp-'));\n        }\n        fragmentsArray = fragmentsArray.concat(fragments);\n        if (fragmentation.baseLoss) {\n            fragmentsArray = fragmentsArray.concat((0, nucleotide_1.baseLoss)(sequence));\n        }\n    }\n    mfsArray.push(fragmentsArray);\n    let combined = await (0, mf_generator_1.generateMFs)(mfsArray, {\n        ionizations,\n        filter,\n        uniqueMFs: false,\n        estimate,\n        onStep,\n        limit,\n    });\n    if (Array.isArray(combined)) {\n        // not an estimation\n        for (const result of combined) {\n            result.sequence = (0, chemical_groups_1.groupsToSequence)(result.parts.filter(Boolean).join(' '));\n        }\n    }\n    return combined;\n}\n//# sourceMappingURL=fromNucleicSequence.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.aminoAcids = void 0;\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\n// Link for UTF8 code for modified: https://codepoints.net/search?sc=Grek\nexports.aminoAcids = [\n    // Standard amino acids\n    {\n        name: 'Alanine',\n        aa3: 'Ala',\n        aa1: 'A',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.33,\n        pKaN: 9.71,\n    },\n    {\n        name: 'Arginine',\n        aa3: 'Arg',\n        aa1: 'R',\n        sc: {\n            type: 'positive',\n            pKa: 12.1,\n        },\n        pKaC: 2.03,\n        pKaN: 9,\n    },\n    {\n        name: 'Asparagine',\n        aa3: 'Asn',\n        aa1: 'N',\n        sc: {\n            type: 'polar',\n        },\n        pKaC: 2.13,\n        pKaN: 9.05,\n    },\n    {\n        name: 'Aspartic acid',\n        aa3: 'Asp',\n        aa1: 'D',\n        sc: {\n            type: 'negative',\n            pKa: 3.71,\n        },\n        pKaC: 1.95,\n        pKaN: 9.66,\n    },\n    {\n        name: 'Cysteine',\n        aa3: 'Cys',\n        aa1: 'C',\n        sc: {\n            type: 'special',\n            pKa: 8.14,\n        },\n        pKaC: 1.91,\n        pKaN: 10.28,\n    },\n    {\n        name: 'Glutamic acid',\n        aa3: 'Glu',\n        aa1: 'E',\n        sc: {\n            type: 'negative',\n            pKa: 4.15,\n        },\n        pKaC: 2.16,\n        pKaN: 9.58,\n    },\n    {\n        name: 'Glutamine',\n        aa3: 'Gln',\n        aa1: 'Q',\n        sc: {\n            type: 'polar',\n        },\n        pKaC: 2.18,\n        pKaN: 9,\n    },\n    {\n        name: 'Glycine',\n        aa3: 'Gly',\n        aa1: 'G',\n        sc: {\n            type: 'special',\n        },\n        pKaC: 2.34,\n        pKaN: 9.58,\n    },\n    {\n        name: 'Histidine',\n        aa3: 'His',\n        aa1: 'H',\n        sc: {\n            type: 'positive',\n            pKa: 6.04,\n        },\n        pKaC: 1.7,\n        pKaN: 9.09,\n    },\n    {\n        name: 'Isoleucine',\n        aa3: 'Ile',\n        aa1: 'I',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.26,\n        pKaN: 9.6,\n    },\n    {\n        name: 'Leucine',\n        aa3: 'Leu',\n        aa1: 'L',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.32,\n        pKaN: 9.58,\n    },\n    {\n        name: 'Lysine',\n        aa3: 'Lys',\n        aa1: 'K',\n        sc: {\n            type: 'positive',\n            pKa: 10.67,\n        },\n        pKaC: 2.15,\n        pKaN: 9.16,\n    },\n    {\n        name: 'Methionine',\n        aa3: 'Met',\n        aa1: 'M',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.16,\n        pKaN: 9.08,\n    },\n    {\n        name: 'Phenylalanine',\n        aa3: 'Phe',\n        aa1: 'F',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.18,\n        pKaN: 9.09,\n    },\n    {\n        name: 'Proline',\n        aa3: 'Pro',\n        aa1: 'P',\n        sc: {\n            type: 'special',\n        },\n        pKaC: 1.95,\n        pKaN: 10.47,\n    },\n    {\n        name: 'Serine',\n        aa3: 'Ser',\n        aa1: 'S',\n        sc: {\n            type: 'polar',\n        },\n        pKaC: 2.13,\n        pKaN: 9.05,\n    },\n    {\n        name: 'Threonine',\n        aa3: 'Thr',\n        aa1: 'T',\n        sc: {\n            type: 'polar',\n        },\n        pKaC: 2.2,\n        pKaN: 8.96,\n    },\n    {\n        name: 'Tryptophan',\n        aa3: 'Trp',\n        aa1: 'W',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.38,\n        pKaN: 9.34,\n    },\n    {\n        name: 'Tyrosine',\n        aa3: 'Tyr',\n        aa1: 'Y',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.24,\n        pKaN: 9.04,\n    },\n    {\n        name: 'Valine',\n        aa3: 'Val',\n        aa1: 'V',\n        sc: {\n            type: 'hydrophobic',\n        },\n        pKaC: 2.27,\n        pKaN: 9.52,\n    },\n    // Additional\n    {\n        name: 'Selenocysteine',\n        aa3: 'Sec',\n        aa1: 'U',\n    },\n    {\n        name: 'Pyrrolysine',\n        aa3: 'Pyl',\n        aa1: 'O',\n    },\n    // Ambiguous\n    {\n        name: 'Asparagine or aspartic acid',\n        aa3: 'Asx',\n        aa1: 'B',\n    },\n    {\n        name: 'Glutamine or glutamic acid',\n        aa3: 'Glx',\n        aa1: 'Z',\n    },\n    {\n        name: 'Leucine or isoleucine',\n        aa3: 'Xle',\n        aa1: 'J',\n    },\n    {\n        name: 'Unspecified or unknown',\n        aa3: 'Xaa',\n        aa1: 'X',\n    },\n];\n//# sourceMappingURL=aminoAcids.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateCharge = calculateCharge;\nexports.calculateIEP = calculateIEP;\nexports.calculateChart = calculateChart;\nexports.getColor = getColor;\nconst aminoAcids_1 = require(\"./aminoAcids\");\n// we will convert the data to an object to be much faster\nlet aaObject = {};\nfor (let i = 0; i < aminoAcids_1.aminoAcids.length; i++) {\n    aaObject[aminoAcids_1.aminoAcids[i].aa3] = aminoAcids_1.aminoAcids[i];\n}\nfunction calculateCharge(aas, pH = 7) {\n    let combined = combine(aas);\n    if (!combined)\n        return;\n    let charge = calculateForPh(combined, pH);\n    return Math.round(charge * 1000) / 1000;\n}\n// this methods required an array of aas\nfunction calculateIEP(aas) {\n    let combined = combine(aas);\n    if (!combined)\n        return;\n    let first = 0;\n    let last = 14;\n    let current = 14;\n    let previous = 0;\n    let currentCharge;\n    while (Math.abs(current - previous) > 0.0001) {\n        previous = current;\n        current = (last + first) / 2;\n        currentCharge = calculateForPh(combined, current);\n        if (currentCharge > 0) {\n            first = current;\n        }\n        else if (currentCharge < 0) {\n            last = current;\n        }\n        else {\n            previous = current;\n        }\n    }\n    return Math.round(current * 1000) / 1000;\n}\nfunction calculateChart(aas) {\n    let combined = combine(aas);\n    if (!combined)\n        return;\n    let y = [];\n    let x = [];\n    let yAbs = [];\n    for (let i = 0; i <= 14; i = i + 0.01) {\n        let charge = calculateForPh(combined, i);\n        x.push(i);\n        y.push(charge);\n        yAbs.push(Math.abs(charge));\n    }\n    combined.x = x;\n    combined.y = y;\n    combined.yAbs = yAbs;\n    return combined;\n}\nfunction calculateForPh(combined, pH) {\n    let total = 0;\n    total += 1 / (1 + 10 ** (pH - combined.first));\n    total += -1 / (1 + 10 ** (combined.last - pH));\n    for (let key in combined.acid) {\n        total += -combined.acid[key] / (1 + 10 ** (aaObject[key].sc.pKa - pH));\n    }\n    for (let key in combined.basic) {\n        total += combined.basic[key] / (1 + 10 ** (pH - aaObject[key].sc.pKa));\n    }\n    return total;\n}\n// we will combine the amino acids\nfunction combine(aas) {\n    let combined = {};\n    if (aaObject[aas[0]]) {\n        combined.first = aaObject[aas[0]].pKaN;\n    }\n    else {\n        return;\n    }\n    if (aaObject[aas.at(-1)]) {\n        combined.last = aaObject[aas.at(-1)].pKaC;\n    }\n    else {\n        return;\n    }\n    combined.basic = {};\n    combined.acid = {};\n    for (let i = 0; i < aas.length; i++) {\n        let currentAA = aas[i];\n        if (!aaObject[currentAA])\n            return;\n        if (aaObject[currentAA].sc && aaObject[currentAA].sc.type) {\n            if (aaObject[currentAA].sc.type === 'positive') {\n                if (!combined.basic[currentAA]) {\n                    combined.basic[currentAA] = 0;\n                }\n                combined.basic[currentAA]++;\n            }\n            else if (aaObject[currentAA].sc.type === 'negative') {\n                if (!combined.acid[currentAA]) {\n                    combined.acid[currentAA] = 0;\n                }\n                combined.acid[currentAA]++;\n            }\n        }\n    }\n    return combined;\n}\n/*\n We can generate a color based on iep\n 0 -> 7 means that at pH 7 it is charged negatively (blue)\n 7 -> 14 means that at pH7 it is charged positively (red)\n */\nfunction getColor(iep) {\n    if (iep < 7) {\n        if (iep < 3)\n            iep = 3;\n        let white = Math.round(255 - (7 - iep) * (200 / 4));\n        return `rgb(${white},${white},255)`;\n    }\n    else if (iep > 7) {\n        if (iep > 11)\n            iep = 11;\n        let white = Math.round(255 - (iep - 7) * (200 / 4));\n        return `rgb(255,${white},${white})`;\n    }\n    return 'rgb(255,255,255)';\n}\n//# sourceMappingURL=isoElectricPoint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitPeptide = splitPeptide;\nfunction splitPeptide(sequence) {\n    let aas = sequence.replaceAll(/([A-Z])/g, ' $1').split(/ /);\n    let begin = 0;\n    while (aas[begin] === '' || aas[begin] === 'H') {\n        begin++;\n    }\n    let end = aas.length - 1;\n    while (aas[end] === 'O' || aas[end] === 'H') {\n        end--;\n    }\n    aas = aas.slice(begin, end + 1);\n    return aas;\n}\n//# sourceMappingURL=splitPeptide.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.allowNeutralLoss = allowNeutralLoss;\n/**\n * Add neutral loss on natural amino acids\n * @param {*} mf\n * @returns\n */\nfunction allowNeutralLoss(mf) {\n    if (Array.isArray(mf)) {\n        for (let i = 0; i < mf.length; i++) {\n            mf[i] = allowOneNeutralLoss(mf[i]);\n        }\n        return mf;\n    }\n    else {\n        return allowOneNeutralLoss(mf);\n    }\n}\nfunction allowOneNeutralLoss(mf) {\n    mf = mf.replaceAll(/(Ser|Thr|Asp|Glu)(?!\\()/g, '$1(H-2O-1)0-1');\n    mf = mf.replaceAll(/(Arg|Lys|Asn|Gln)(?!\\()/g, '$1(N-1H-3)0-1');\n    return mf;\n}\n//# sourceMappingURL=allowNeutralLoss.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAA = getAA;\nconst aminoAcids_1 = require(\"./aminoAcids\");\nfunction getAA(code) {\n    if (code.length === 1) {\n        for (let i = 0; i < aminoAcids_1.aminoAcids.length; i++) {\n            if (aminoAcids_1.aminoAcids[i].aa1 === code) {\n                return aminoAcids_1.aminoAcids[i];\n            }\n        }\n    }\n    if (code.length === 3) {\n        for (let i = 0; i < aminoAcids_1.aminoAcids.length; i++) {\n            if (aminoAcids_1.aminoAcids[i].aa3 === code) {\n                return aminoAcids_1.aminoAcids[i];\n            }\n        }\n    }\n}\n//# sourceMappingURL=getAA.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chargePeptide = chargePeptide;\nconst getAA_1 = require(\"./getAA\");\n// SOURCE: https://en.wikipedia.org/wiki/Amino_acid\nfunction chargePeptide(mf, options = {}) {\n    if (Array.isArray(mf)) {\n        for (let i = 0; i < mf.length; i++) {\n            mf[i] = chargeOnePeptide(mf[i], options);\n        }\n        return mf;\n    }\n    else {\n        return chargeOnePeptide(mf, options);\n    }\n}\nfunction chargeOnePeptide(mf, options) {\n    const { pH = 0 } = options;\n    // we will allow to charge the peptide at a specific pH\n    // first amino acids (N-terminal)\n    if (mf.match(/^H[A-Z][a-z]{2}/)) {\n        let firstAA = mf.replace(/^H([A-Z][a-z]{2}).*/, '$1');\n        if ((0, getAA_1.getAA)(firstAA) && pH < (0, getAA_1.getAA)(firstAA).pKaN) {\n            mf = mf.replace(/^H([^+])/, 'H+H$1');\n        }\n    }\n    // last amino acids (C-terminal)\n    if (mf.match(/[A-Z][a-z]{2}OH$/)) {\n        let lastAA = mf.replace(/.*([A-Z][a-z]{2})OH$/, '$1');\n        if ((0, getAA_1.getAA)(lastAA) && pH > (0, getAA_1.getAA)(lastAA).pKaC) {\n            mf = mf.replace(/OH$/, 'O-');\n        }\n    }\n    // basic AA\n    if (pH < (0, getAA_1.getAA)('Arg').sc.pKa)\n        mf = mf.replaceAll(/(Arg)(?!\\()/g, '$1(H+)');\n    if (pH < (0, getAA_1.getAA)('His').sc.pKa)\n        mf = mf.replaceAll(/(His)(?!\\()/g, '$1(H+)');\n    if (pH < (0, getAA_1.getAA)('Lys').sc.pKa)\n        mf = mf.replaceAll(/(Lys)(?!\\()/g, '$1(H+)');\n    // acid AA\n    if (pH > (0, getAA_1.getAA)('Asp').sc.pKa)\n        mf = mf.replaceAll(/(Asp)(?!\\()/g, '$1(H-1-)');\n    if (pH > (0, getAA_1.getAA)('Glu').sc.pKa)\n        mf = mf.replaceAll(/(Glu)(?!\\()/g, '$1(H-1-)');\n    if (pH > (0, getAA_1.getAA)('Cys').sc.pKa)\n        mf = mf.replaceAll(/(Cys)(?!\\()/g, '$1(H-1-)');\n    return mf;\n}\n//# sourceMappingURL=chargePeptide.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceToMF = sequenceToMF;\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst aminoAcids_1 = require(\"./aminoAcids\");\nfunction sequenceToMF(mf) {\n    if (mf === '')\n        return '';\n    mf = (0, mf_utilities_1.ensureUppercaseSequence)(mf);\n    // this function will check if it is a sequence of aa in 1 letter or 3 letters and convert them if it is the case\n    // it could be a multiline mf !\n    // if it is a multiline we could make some \"tricks\" ...\n    let newMF = mf;\n    // SEQRES   1 B  256  MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n    // SEQRES   2 B  256  GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n    // or\n    // MET PRO VAL GLU ILE THR VAL LYS GLU LEU LEU GLU ALA\n    // GLY VAL HIS PHE GLY HIS GLU ARG LYS ARG TRP ASN PRO\n    if (mf.search(/(?:[A-Z]{3} ){2}[A-Z]{3}/) > -1) {\n        // this is a PDB !\n        let tmpmf = mf.replaceAll(/[\\n\\r]+/g, ' ');\n        tmpmf = tmpmf.replaceAll(/(SEQRES|\\d+| [A-Z] | [\\dA-Z]{4-50})/g, '');\n        // we need to correct the uppercase / lowercase\n        let parts = tmpmf.split(' ');\n        newMF = 'H';\n        for (let i = 0; i < parts.length; i++) {\n            newMF += parts[i].slice(0, 1) + parts[i].slice(1).toLowerCase();\n        }\n        newMF += 'OH';\n    }\n    else if (mf.includes('(') && isOneLetterCode(mf)) {\n        // we expect one-letter code with modification\n        newMF = '';\n        let nTerminal = 'H';\n        let cTerminal = 'OH';\n        let parenthesisCounter = 0;\n        for (let i = 0; i < mf.length; i++) {\n            let currentSymbol = mf[i];\n            if (currentSymbol === '(' ||\n                currentSymbol === ')' ||\n                parenthesisCounter > 0) {\n                if (currentSymbol === '(') {\n                    parenthesisCounter++;\n                    if (i === 0)\n                        nTerminal = '';\n                }\n                if (currentSymbol === ')') {\n                    parenthesisCounter--;\n                    if (i === mf.length - 1)\n                        cTerminal = '';\n                }\n                newMF += currentSymbol;\n                continue;\n            }\n            newMF += convertAA1To3(currentSymbol);\n        }\n        newMF = nTerminal + newMF + cTerminal;\n    }\n    else if (mf.search(/[A-Za-z][\\da-z]/) === -1) {\n        // UNIPROT\n        //   370        380        390        400        410        420\n        //GFKPNLRKTF VSGLFRESCG AHFYRGVDVK PFYIKKPVDN LFALMLILNR LRGWGVVGGM\n        //\n        //    430        440        450        460        470        480\n        //SDPRLYKVWV RLSSQVPSMF FGGTDLAADY YVVSPPTAVS VYTKTPYGRL LADTRTSGFR\n        // We remove all the number, all the spaces, etc\n        newMF = `H${convertAA1To3(newMF.replaceAll(/[^A-Z]/g, ''))}OH`;\n    }\n    return newMF;\n}\nfunction convertAA1To3(mf) {\n    let newmf = '';\n    for (let i = 0; i < mf.length; i++) {\n        newmf += aa1To3(mf.charAt(i));\n    }\n    return newmf;\n}\nfunction aa1To3(code) {\n    for (let i = 0; i < aminoAcids_1.aminoAcids.length; i++) {\n        if (aminoAcids_1.aminoAcids[i].aa1 === code) {\n            return aminoAcids_1.aminoAcids[i].aa3;\n        }\n    }\n    throw new Error(`Invalid 1 letter code: ${code}`);\n}\n// mf can contain as well parenthesis. We need to check if it is not yet a correct molecular formula\nfunction isOneLetterCode(mf) {\n    let parenthesisLevel = 0;\n    for (let char of mf) {\n        if (parenthesisLevel === 0 && char.match(/[a-z]/))\n            return false;\n        if (char === '(')\n            parenthesisLevel++;\n        if (char === ')')\n            parenthesisLevel--;\n    }\n    return true;\n}\n//# sourceMappingURL=sequenceToMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generatePeptideFragments = generatePeptideFragments;\nfunction generatePeptideFragments(mf, options) {\n    if (options === undefined) {\n        options = {\n            a: false,\n            b: true,\n            c: false,\n            x: false,\n            y: true,\n            z: false,\n            i: false,\n            ya: false,\n            yb: false,\n            yc: false,\n            zc: false,\n        };\n    }\n    options.maxInternal = options.maxInternal || Number.MAX_VALUE;\n    options.minInternal = options.minInternal || 0;\n    let mfs = [];\n    // need to allow 0-9 to deal with neutral loss\n    let mfparts = mf\n        .replaceAll(/([\\d)a-z])([A-Z][a-z](?=[a-z]))/g, '$1 $2')\n        .split(/ /);\n    let nTerm = '';\n    let cTerm = '';\n    if (mfparts[0].startsWith('(')) {\n        nTerm += mfparts[0];\n        mfparts = mfparts.splice(1);\n    }\n    if (mfparts.at(-1).includes('(')) {\n        cTerm += mfparts.at(-1).replace(/^[^()]*/, '');\n        mfparts[mfparts.length - 1] = mfparts.at(-1).replace(/\\(.*/, '');\n    }\n    for (let i = 1; i < mfparts.length; i++) {\n        nTerm += mfparts[i - 1];\n        cTerm = mfparts[mfparts.length - i] + cTerm;\n        addNTerm(mfs, nTerm, i, options);\n        addCTerm(mfs, cTerm, i, options);\n        if (options.i)\n            mfs.push(`${mfparts[i]}HC-1O-1(+1)$i:${mfparts[i]}`);\n        if (options.ya || options.yb || options.yc || options.zc) {\n            // we have double fragmentations\n            for (let j = i + 1; j < Math.min(mfparts.length, options.maxInternal + i + 1); j++) {\n                let iTerm = '';\n                if (j - i >= options.minInternal) {\n                    for (let k = i; k < j; k++) {\n                        iTerm += mfparts[k];\n                    }\n                    addITerm(mfs, iTerm, mfparts.length - i, j, options);\n                }\n            }\n        }\n    }\n    // todo does this make sense ??? I think we should remote those 3 lines\n    if (mfs.length === 0) {\n        mfs = mfs.concat([mf]);\n    }\n    return mfs;\n}\nfunction addNTerm(mfs, nTerm, i, options) {\n    if (options.a)\n        mfs.push(`${nTerm}C-1O-1(+1)$a${i}`);\n    if (options.b)\n        mfs.push(`${nTerm}(+1)$b${i}`);\n    if (options.c)\n        mfs.push(`${nTerm}NH3(+1)$c${i}`);\n}\nfunction addITerm(mfs, iTerm, i, j, options) {\n    if (options.ya)\n        mfs.push(`H${iTerm}C-1O-1(+1)$a${j}y${i}`);\n    if (options.yb)\n        mfs.push(`H${iTerm}(+1)$b${j}y${i}`);\n    if (options.yc)\n        mfs.push(`H${iTerm}NH3(+1)$c${j}y${i}`);\n    if (options.zc)\n        mfs.push(`N-1${iTerm}NH3(+1)$c${j}z${i}`);\n}\nfunction addCTerm(mfs, cTerm, i, options) {\n    if (options.x)\n        mfs.push(`CO(+1)${cTerm}$x${i}`);\n    if (options.y)\n        mfs.push(`H2(+1)${cTerm}$y${i}`);\n    if (options.z)\n        mfs.push(`N-1H-1(+1)${cTerm}$z${i}`);\n}\n//# sourceMappingURL=generatePeptideFragments.js.map","\"use strict\";\n/*\nIotuibs:\n* minMissed (default: 0)\n* maxMissed (default: 0)\n* minResidue: 0;\n* maxResidue: infinity\n* enzyme: chymotrypsin, trypsin, glucph4, glucph8, thermolysin, cyanogenbromide : Mandatory, no default value !\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.digestPeptide = digestPeptide;\nfunction digestPeptide(sequence, options = {}) {\n    sequence = sequence.replace(/^H([^a-z])/, '$1').replace(/OH$/, '');\n    options.enzyme = options.enzyme || 'trypsin';\n    if (options.minMissed === undefined)\n        options.minMissed = 0;\n    if (options.maxMissed === undefined)\n        options.maxMissed = 0;\n    if (options.minResidue === undefined)\n        options.minResidue = 0;\n    if (options.maxResidue === undefined)\n        options.maxResidue = Number.MAX_VALUE;\n    let regexp = getRegexp(options.enzyme);\n    let fragments = sequence.replace(regexp, '$1 ').split(/ /).filter(Boolean);\n    {\n        let from = 0;\n        for (let i = 0; i < fragments.length; i++) {\n            let nbResidue = fragments[i]\n                .replaceAll(/([A-Z][a-z]{2})/g, ' $1')\n                .split(/ /)\n                .filter(Boolean).length;\n            fragments[i] = {\n                sequence: fragments[i],\n                nbResidue,\n                from,\n                to: from + nbResidue - 1,\n            };\n            from += nbResidue;\n        }\n    }\n    let results = [];\n    for (let i = 0; i < fragments.length - options.minMissed; i++) {\n        for (let j = options.minMissed; j <= Math.min(options.maxMissed, fragments.length - i - 1); j++) {\n            let fragment = '';\n            let nbResidue = 0;\n            for (let k = i; k <= i + j; k++) {\n                fragment += fragments[k].sequence;\n                nbResidue += fragments[k].nbResidue;\n            }\n            let from = fragments[i].from + 1;\n            let to = fragments[i + j].to + 1;\n            if (fragment &&\n                nbResidue >= options.minResidue &&\n                nbResidue <= options.maxResidue) {\n                results.push(`H${fragment}OH$D${from}>${to}`);\n            }\n        }\n    }\n    return results;\n}\nfunction getRegexp(enzyme) {\n    switch (enzyme.toLowerCase().replaceAll(/[^\\da-z]/g, '')) {\n        case 'chymotrypsin':\n            return /(Phe|Tyr|Trp)(?!Pro)/g;\n        case 'trypsin':\n            return /(Lys|Arg)(?!Pro)/g;\n        case 'lysc':\n            return /(Lys)(?!Pro)/g;\n        case 'glucph4':\n            return /(Glu)(?!Pro|Glu)/g;\n        case 'glucph8':\n            return /(Asp|Glu)(?!Pro|Glu)/g;\n        case 'thermolysin': // N-term of  Leu, Phe, Val, Ile, Ala, Met\n            return /()(?=Ile|Leu|Val|Ala|Met|Phe)/g;\n        case 'cyanogenbromide':\n            return /(Met)/g;\n        case 'any':\n            return /()(?=[A-Z][a-z]{2})/g;\n        default:\n            throw new Error(`Digestion enzyme: ${enzyme} is unknown`);\n    }\n}\n//# sourceMappingURL=digestPeptide.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInfo = getInfo;\nexports.calculateIEP = calculateIEP;\nexports.calculateIEPChart = calculateIEPChart;\nexports.getColorForIEP = getColorForIEP;\nexports.calculateCharge = calculateCharge;\nconst aminoAcids_1 = require(\"./aminoAcids\");\nconst IEP = __importStar(require(\"./isoElectricPoint\"));\nconst splitPeptide_js_1 = require(\"./splitPeptide.js\");\n__exportStar(require(\"./allowNeutralLoss.js\"), exports);\n__exportStar(require(\"./chargePeptide.js\"), exports);\n__exportStar(require(\"./sequenceToMF.js\"), exports);\n__exportStar(require(\"./generatePeptideFragments.js\"), exports);\n__exportStar(require(\"./digestPeptide.js\"), exports);\n__exportStar(require(\"./splitPeptide.js\"), exports);\nfunction getInfo() {\n    return aminoAcids_1.aminoAcids;\n}\n// sequence should be in the \"right\" format like HAlaGlyProOH\nfunction calculateIEP(sequence) {\n    let aas = (0, splitPeptide_js_1.splitPeptide)(sequence);\n    let result = IEP.calculateIEP(aas);\n    return result;\n}\nfunction calculateIEPChart(sequence) {\n    let aas = (0, splitPeptide_js_1.splitPeptide)(sequence);\n    let result = IEP.calculateChart(aas);\n    return result;\n}\nfunction getColorForIEP(iep) {\n    return IEP.getColor(iep);\n}\nfunction calculateCharge(sequence, ph) {\n    let aas = (0, splitPeptide_js_1.splitPeptide)(sequence);\n    return IEP.calculateCharge(aas, ph);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fragmentPeptide = fragmentPeptide;\nconst peptide_1 = require(\"peptide\");\nfunction fragmentPeptide(sequence, options = {}) {\n    const { digestion = {}, protonation, fragmentation, protonationPH } = options;\n    sequence = (0, peptide_1.sequenceToMF)(sequence);\n    let fragmentsArray = [sequence];\n    // do we also have some digest fragments ?\n    if (digestion.enzyme) {\n        let digests = (0, peptide_1.digestPeptide)(sequence, digestion);\n        if (options.protonation) {\n            digests = (0, peptide_1.chargePeptide)(digests, {\n                pH: options.protonationPH,\n            });\n        }\n        fragmentsArray = fragmentsArray.concat(digests);\n    }\n    // allow neutral loss\n    if (options.allowNeutralLoss) {\n        sequence = (0, peptide_1.allowNeutralLoss)(sequence);\n    }\n    // apply protonation\n    if (protonation) {\n        sequence = (0, peptide_1.chargePeptide)(sequence, { pH: protonationPH });\n    }\n    // calculate fragmentation\n    let fragments = (0, peptide_1.generatePeptideFragments)(sequence, fragmentation);\n    fragmentsArray = fragmentsArray.concat(fragments);\n    return fragmentsArray;\n}\n//# sourceMappingURL=fragmentPeptide.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromPeptidicSequence = fromPeptidicSequence;\nconst chemical_groups_1 = require(\"chemical-groups\");\nconst mf_generator_1 = require(\"mf-generator\");\nconst fragmentPeptide_1 = require(\"./util/fragmentPeptide\");\n/**\n * Add a database starting from a peptidic sequence\n *\n * @param {string}         [sequences] Sequence as a string of 1 letter or 3 letters code. Could also be a correct molecular formula respecting uppercase, lowercase. It can be comma separated if you have many peptide sequences\n * @param {object}         [options={}]\n * @param {boolean}        [options.estimate=false] - estimate the number of MF without filters\n * @param {string}         [options.ionizations='']\n * @param {function}       [options.onStep] - Callback to do after each step\n * @param {array}          [options.mfsArray=[]]\n * @param {boolean}        [options.protonation=false]\n * @param {number}         [options.protonationPH=7]\n * @param {boolean}        [options.allowNeutralLoss=false]\n * @param {number}         [options.limit=100000]\n *\n * @param {object}         [options.digestion={}] Object defining options for digestion\n * @param {number}         [options.digestion.minMissed=0] Minimal number of allowed missed cleavage\n * @param {number}         [options.digestion.maxMissed=0] Maximal number of allowed missed cleavage\n * @param {number}         [options.digestion.minResidue=0] Minimal number of residues\n * @param {number}         [options.digestion.maxResidue=+Infinity] Maximal number of residues\n * @param {string}         [options.digestion.enzyme] Mandatory field containing the name of the enzyme among: chymotrypsin, trypsin, glucph4, glucph8, thermolysin, cyanogenbromide\n *\n * @param {object}         [options.fragmentation={}] Object defining options for fragmentation\n * @param {boolean}        [options.fragmentation.a=false] If true allow fragments of type 'a'\n * @param {boolean}        [options.fragmentation.b=false] If true allow fragments of type 'b'\n * @param {boolean}        [options.fragmentation.c=false] If true allow fragments of type 'c'\n * @param {boolean}        [options.fragmentation.x=false] If true allow fragments of type 'x'\n * @param {boolean}        [options.fragmentation.y=false] If true allow fragments of type 'y'\n * @param {boolean}        [options.fragmentation.z=false] If true allow fragments of type 'z'\n * @param {boolean}        [options.fragmentation.ya=false] If true allow fragments of type 'ya'\n * @param {boolean}        [options.fragmentation.yb=false] If true allow fragments of type 'yb'\n * @param {boolean}        [options.fragmentation.yc=false] If true allow fragments of type 'yc'\n * @param {boolean}        [options.fragmentation.zc=false] If true allow fragments of type 'zc'\n * @param {number}         [options.fragmentation.minInternal=0] Minimal internal fragment length\n * @param {number}         [options.fragmentation.maxInternal=+Infinity] Maximal internal fragment length\n *\n * @param {object}         [options.filter={}] Object defining options for molecular formula filter\n * @param {number}         [options.filter.precision=1000] - The precision on the experimental mass\n * @param {number}         [options.filter.targetMass] - Target mass, allows to calculate error and filter results\n * @param {number[]}       [options.filter.targetMasses] - Target masses: SORTED array of numbers\n * @param {number[]}       [options.filter.targetIntensities] - Target intensities: SORTED array of numbers\n * @param {number}         [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number}         [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number}         [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number}         [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number}         [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number}         [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}        [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object}         [options.filter.unsaturation={}]\n * @param {number}         [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number}         [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean}        [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean}        [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {function}       [options.filter.callback] - a function to filter the MF\n * @returns {Promise}\n */\nasync function fromPeptidicSequence(sequences, options = {}) {\n    const { digestion = {}, mfsArray: originalMFsArray = [], allowNeutralLoss = false, protonation = false, protonationPH = 7, fragmentation = {}, filter = {}, ionizations = '', limit = 100000, estimate = false, onStep, links = {}, } = options;\n    const hasLinked = sequences.includes('#');\n    const mfsArrayLinked = structuredClone(originalMFsArray);\n    const mfsArrayUnlinked = structuredClone(originalMFsArray);\n    const unlinked = [];\n    mfsArrayUnlinked.push(unlinked);\n    for (const sequence of sequences.split(/[,:]/)) {\n        let fragmentsArray = (0, fragmentPeptide_1.fragmentPeptide)(sequence, {\n            digestion,\n            protonation,\n            fragmentation,\n            protonationPH,\n            allowNeutralLoss,\n        });\n        mfsArrayLinked.push(fragmentsArray.filter((fragment) => fragment.includes('#')));\n        unlinked.push(...fragmentsArray.filter((fragment) => !fragment.includes('#')));\n    }\n    let combined = await (0, mf_generator_1.generateMFs)(mfsArrayUnlinked, {\n        ionizations,\n        filter,\n        estimate,\n        limit,\n        onStep,\n        links,\n    });\n    if (hasLinked) {\n        combined.push(...(await (0, mf_generator_1.generateMFs)(mfsArrayLinked, {\n            ionizations,\n            filter,\n            estimate,\n            limit,\n            onStep,\n            links,\n        })));\n    }\n    if (!estimate) {\n        for (const result of combined) {\n            result.sequence = (0, chemical_groups_1.groupsToSequence)(result.parts.filter(Boolean).join(' '));\n        }\n    }\n    return combined;\n}\n//# sourceMappingURL=fromPeptidicSequence.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromRange = fromRange;\nconst mf_generator_1 = require(\"mf-generator\");\n/**\n * Generates a database 'generated' from an array of molecular formula\n * @param {string} rangesString - a string representing the range to search\n * @param {object} [options={}]\n * @param {boolean} [options.estimate=false] - estimate the number of MF without filters\n * @param {function} [options.onStep] - Callback to do after each step\n * @param {string} [options.databaseName='generated']\n * @param {number} [options.limit=100000] - Maximum number of results\n * @param {boolean} [options.canonizeMF=true] - Canonize molecular formula\n * @param {boolean} [options.uniqueMFs=true] - Force canonization and make MF unique\n * @param {string} [options.ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n * @param {object} [options.filter={}]\n * @param {number} [options.filter.minMass=0] - Minimal monoisotopic mass\n * @param {number} [options.filter.maxMass=+Infinity] - Maximal monoisotopic mass\n * @param {number} [options.filter.minEM=0] - Minimal neutral monoisotopic mass\n * @param {number} [options.filter.maxEM=+Infinity] - Maximal neutral monoisotopic mass\n * @param {number} [options.filter.minMSEM=0] - Minimal observed monoisotopic mass\n * @param {number} [options.filter.maxMSEM=+Infinity] - Maximal observed monoisotopic mass\n * @param {number} [options.filter.minCharge=-Infinity] - Minimal charge\n * @param {number} [options.filter.maxCharge=+Infinity] - Maximal charge\n * @param {boolean}   [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n * @param {object} [options.filter.unsaturation={}]\n * @param {number} [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n * @param {number} [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n * @param {boolean} [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n * @param {function} [options.filter.callback] - a function to filter the MF\n * @param {object} [options.filter.atoms] - object of atom:{min, max}\n *\n * @returns {Promise} - list of possible molecular formula\n *\n * @example\n * const {EMDB} = require('emdb');\n * let emdb = new EMDB();\n * // semi-columns separated for combination, comma for 'or'\n * emdb.fromRange('C1-10, H1-10; Cl0-1 Br0-1'); // create a database 'generated' combining all possibilies\n * console.log(emdb.get('generated').length); // 80\n */\nasync function fromRange(rangesString, options = {}) {\n    let ranges = rangesString.split(/ *[\\n\\r;] */);\n    for (let i = 0; i < ranges.length; i++) {\n        let range = ranges[i];\n        if (range.includes(',')) {\n            ranges[i] = range.split(/ *, */);\n        }\n    }\n    return (0, mf_generator_1.generateMFs)(ranges, options);\n}\n//# sourceMappingURL=fromRange.js.map","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.1\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchArrayBuffer = fetchArrayBuffer;\nasync function fetchArrayBuffer(url) {\n    const result = await fetch(url);\n    return result.arrayBuffer();\n}\n//# sourceMappingURL=fetchArrayBuffer.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadCommercials = loadCommercials;\nconst jszip_1 = __importDefault(require(\"jszip\"));\nconst fetchArrayBuffer_1 = require(\"./util/fetchArrayBuffer\");\nconst loadingPromises = {};\nasync function loadCommercials(options = {}) {\n    const { url = 'https://couch.cheminfo.org/cheminfo-public/d2eb480198c80275a1d05dd3609414f9/upload/commercials.zip', } = options;\n    if (!loadingPromises[url]) {\n        loadingPromises[url] = (0, fetchArrayBuffer_1.fetchArrayBuffer)(url);\n    }\n    const buffer = await loadingPromises[url];\n    const jsZip = new jszip_1.default();\n    let zip = await jsZip.loadAsync(buffer);\n    let fileData = await zip.files['commercials.json'].async('string');\n    let data = JSON.parse(fileData);\n    data.sort((a, b) => a.em - b.em);\n    return data;\n}\n//# sourceMappingURL=loadCommercials.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchText = fetchText;\nasync function fetchText(url) {\n    const result = await fetch(url);\n    if (result.status !== 200) {\n        throw new Error(String(result.status));\n    }\n    return result.text();\n}\n//# sourceMappingURL=fetchText.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfFromGoogleSheet = mfFromGoogleSheet;\nconst mf_generator_1 = require(\"mf-generator\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst papaparse_1 = __importDefault(require(\"papaparse\"));\nconst fetchText_js_1 = require(\"./util/fetchText.js\");\nasync function mfFromGoogleSheet(url, options = {}) {\n    let { urlReferences } = options;\n    if (urlReferences) {\n        let results = await Promise.all([(0, fetchText_js_1.fetchText)(url), (0, fetchText_js_1.fetchText)(urlReferences)]);\n        return parse(results[0], results[1]);\n    }\n    else {\n        let result = await (0, fetchText_js_1.fetchText)(url);\n        return parse(result);\n    }\n}\nasync function parse(tsv, tsvReferences) {\n    let parsed = papaparse_1.default.parse(tsv, {\n        delimiter: '\\t',\n        header: true,\n    });\n    let fields = parsed.meta.fields;\n    let infoFields = fields.filter((a) => !['mf', 'modif', 'ESI', 'MALDI', 'positive', 'negative'].includes(a));\n    let formulas = parsed.data;\n    let references = {};\n    if (tsvReferences) {\n        let referencesArray = papaparse_1.default.parse(tsvReferences, {\n            delimiter: '\\t',\n            header: true,\n        }).data;\n        for (const r of referencesArray) {\n            references[r.label] = r;\n        }\n    }\n    let results = [];\n    for (let formula of formulas) {\n        if (tsvReferences) {\n            // we add references\n            let refs = formula.references.split(/[ ,]+/);\n            formula.references = [];\n            for (let ref of refs) {\n                formula.references.push(references[ref]);\n            }\n        }\n        // we need to calculate all the possibilities\n        try {\n            let mfs = await (0, mf_generator_1.generateMFs)([formula.mf], {\n                ionizations: formula.modif,\n            });\n            for (let mf of mfs) {\n                mf.info = {};\n                for (let infoField of infoFields) {\n                    mf.info[infoField] = formula[infoField];\n                }\n                if (!formula.ESI &&\n                    !formula.MALDI &&\n                    !formula.positive &&\n                    !formula.negative) {\n                    mf.filter = {\n                        ESI: true,\n                        MALDI: true,\n                        positive: true,\n                        negative: true,\n                    };\n                }\n                else {\n                    mf.filter = {\n                        ESI: formula.ESI === 'X',\n                        MALDI: formula.MALDI === 'X',\n                        positive: formula.positive === 'X',\n                        negative: formula.negative === 'X',\n                    };\n                }\n                mf.mf = new mf_parser_1.MF(mf.mf).toMF();\n                results.push(mf);\n            }\n        }\n        catch (error) {\n            // eslint-disable-next-line no-console\n            console.warn('Non parsable molecular formula:', formula.mf, formula.modif, error.toString());\n        }\n    }\n    results = results.filter((a) => {\n        return a.ms.em !== 0;\n    });\n    results.sort((a, b) => {\n        return a.ms.em - b.ms.em;\n    });\n    let uniqueResults = [results[0]];\n    for (let i = 1; i < results.length; i++) {\n        if (results[i - 1].ms.em !== results[i].ms.em) {\n            uniqueResults.push(results[i]);\n        }\n    }\n    return uniqueResults;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadGoogleSheet = loadGoogleSheet;\nconst mf_from_google_sheet_1 = require(\"mf-from-google-sheet\");\nasync function loadGoogleSheet(options = {}) {\n    let { refUUID = '1C_H9aiJyu9M9in7sHMOaz-d3Sv758rE72oLxEKH9ioA', uuid = '1LrJCl9-xSZKhGA9Y8nKVkYwB-mEOHBkTXg5qYXeFpZY', } = options;\n    if (options.uuid && !options.refUUID)\n        refUUID = '';\n    let url = `https://googledocs.cheminfo.org/spreadsheets/d/${uuid}/export?format=tsv`;\n    let refURL = refUUID\n        ? `https://googledocs.cheminfo.org/spreadsheets/d/${refUUID}/export?format=tsv`\n        : '';\n    let data = await (0, mf_from_google_sheet_1.mfFromGoogleSheet)(url, refURL);\n    data.sort((a, b) => a.em - b.em);\n    return data;\n}\n//# sourceMappingURL=loadGoogleSheet.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadKnapSack = loadKnapSack;\nconst jszip_1 = __importDefault(require(\"jszip\"));\nconst fetchArrayBuffer_1 = require(\"./util/fetchArrayBuffer\");\nconst loadingPromises = {};\nasync function loadKnapSack(options = {}) {\n    const { url = 'https://couch.cheminfo.org/cheminfo-public/d2eb480198c80275a1d05dd3609414f9/upload/ms.zip', } = options;\n    if (!loadingPromises[url]) {\n        loadingPromises[url] = (0, fetchArrayBuffer_1.fetchArrayBuffer)(url);\n    }\n    const buffer = await loadingPromises[url];\n    const jsZip = new jszip_1.default();\n    let zip = await jsZip.loadAsync(buffer);\n    let fileData = await zip.files['ms.json'].async('string');\n    let data = JSON.parse(fileData);\n    for (const d of data) {\n        d.url = `http://kanaya.naist.jp/knapsack_jsp/information.jsp?word=${d.id}`;\n    }\n    data.sort((a, b) => a.em - b.em);\n    return data;\n}\n//# sourceMappingURL=loadKnapSack.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.search = search;\nconst mf_matcher_1 = require(\"mf-matcher\");\n/**\n    Searching by various criteria. This mass will not take into account the mass\n    of the mass of the electron\n* @param {object}   [filter={}]\n* @param {number}   [filter.minMW=0] - Minimal molecular weight\n* @param {number}   [filter.maxMW=+Infinity] - Maximal molecular weight\n* @param {number}   [filter.minEM=0] - Minimal monoisotopic mass\n* @param {number}   [filter.maxEM=+Infinity] - Maximal monoisotopic mass\n* @param {number}   [filter.minCharge=-Infinity] - Minimal charge\n* @param {number}   [filter.maxCharge=+Infinity] - Maximal charge\n* @param {boolean}   [filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n* @param {object}   [filter.unsaturation={}]\n* @param {number}   [filter.unsaturation.min=-Infinity] - Minimal unsaturation\n* @param {number}   [filter.unsaturation.max=+Infinity] - Maximal unsaturation\n* @param {boolean}   [filter.unsaturation.onlyInteger=false] - Integer unsaturation\n* @param {boolean}   [filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n* @param {object}   [filter.atoms] - object of atom:{min, max}\n\n* @param {object}   [options={}]\n* @param {array}    [options.databases] - an array containing the name of the databases so search, by default all\n* @param {boolean}  [options.flatten=false] - should we return the array as a flat result\n*/\nfunction search(emdb, filter, options = {}) {\n    let { databases = Object.keys(emdb.databases), flatten = false } = options;\n    let results = {};\n    for (let database of databases) {\n        results[database] = emdb.databases[database].filter((entry) => (0, mf_matcher_1.generalMatcher)(entry, filter));\n    }\n    if (flatten) {\n        let flattenResults = [];\n        for (let database of databases) {\n            for (let entry of results[database]) {\n                entry.database = database;\n                flattenResults.push(entry);\n            }\n        }\n        return flattenResults;\n    }\n    else {\n        return results;\n    }\n}\n//# sourceMappingURL=search.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchMSEM = searchMSEM;\nconst mf_matcher_1 = require(\"mf-matcher\");\nconst mf_utilities_1 = require(\"mf-utilities\");\n/**\nSearch for an experimental monoisotopic mass\n* @param {number}   msem - The observed monoisotopic mass\n* @param {object}   [options={}]\n* @param {array}    [options.databases] - an array containing the name of the databases so search, by default all\n* @param {boolean}  [options.flatten=false] - should we return the array as a flat result\n* @param {string}   [options.ionizations] - list the allowed ionizations possibilities\n* @param {import('mf-matcher').MSEMFilterOptions}        [options.filter={}]\n*/\nfunction searchMSEM(emdb, msem, options = {}) {\n    let filter = { ...options.filter, targetMass: msem };\n    let { databases = Object.keys(emdb.databases), flatten = false } = options;\n    let ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n    let results = {};\n    for (let database of databases) {\n        results[database] = [];\n    }\n    for (let ionization of ionizations) {\n        filter.ionization = ionization;\n        for (let database of databases) {\n            for (let entry of emdb.databases[database]) {\n                let match = (0, mf_matcher_1.msemMatcher)(entry, filter);\n                if (match) {\n                    results[database].push({\n                        ...entry,\n                        ms: match.ms,\n                        ionization: match.ionization,\n                    });\n                }\n            }\n        }\n    }\n    if (flatten) {\n        let flattenResults = [];\n        for (let database of databases) {\n            for (let entry of results[database]) {\n                entry.database = database;\n                flattenResults.push(entry);\n            }\n        }\n        flattenResults.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n        return flattenResults;\n    }\n    else {\n        for (const k of Object.keys(results)) {\n            results[k].sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n        }\n        return results;\n    }\n}\n//# sourceMappingURL=searchMSEM.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nimport addBaseline from './util/addBaseline';\nimport addNoise from './util/addNoise';\nexport class SpectrumGenerator {\n    constructor(options = {}) {\n        const { from = 0, to = 1000, nbPoints = 10001, peakWidthFct, shape = { kind: 'gaussian', fwhm: 5 }, } = options;\n        this.from = from;\n        this.to = to;\n        this.nbPoints = nbPoints;\n        this.interval = (this.to - this.from) / (this.nbPoints - 1);\n        this.peakWidthFct = peakWidthFct;\n        this.maxPeakHeight = Number.MIN_SAFE_INTEGER;\n        this.data = {\n            x: new Float64Array(this.nbPoints),\n            y: new Float64Array(this.nbPoints),\n        };\n        const shapeGenerator = getShape1D(shape);\n        this.shape = shapeGenerator;\n        assertNumber(this.from, 'from');\n        assertNumber(this.to, 'to');\n        assertInteger(this.nbPoints, 'nbPoints');\n        if (this.to <= this.from) {\n            throw new RangeError('to option must be larger than from');\n        }\n        if (this.peakWidthFct && typeof this.peakWidthFct !== 'function') {\n            throw new TypeError('peakWidthFct option must be a function');\n        }\n        this.reset();\n    }\n    /**\n     * Add a series of peaks to the spectrum.\n     * @param peaks - Peaks to add.\n     * @param options - Options for adding peaks.\n     * @returns The generator instance.\n     */\n    addPeaks(peaks, options) {\n        if (!Array.isArray(peaks) &&\n            (typeof peaks !== 'object' ||\n                peaks.x === undefined ||\n                peaks.y === undefined ||\n                !Array.isArray(peaks.x) ||\n                !Array.isArray(peaks.y) ||\n                peaks.x.length !== peaks.y.length)) {\n            throw new TypeError('peaks must be an array or an object containing x[] and y[]');\n        }\n        if (Array.isArray(peaks)) {\n            for (const peak of peaks) {\n                this.addPeak(peak, options);\n            }\n        }\n        else {\n            for (let i = 0; i < peaks.x.length; i++) {\n                this.addPeak([peaks.x[i], peaks.y[i]], options);\n            }\n        }\n        return this;\n    }\n    /**\n     * Add a single peak to the spectrum.\n     * A peak may be either defined as [x,y,fwhm,...] or as {x, y, shape}\n     * @param peak - The peak to add, defined as array or object.\n     * @param options - Options for adding the peak.\n     * @returns The generator instance.\n     */\n    addPeak(peak, options = {}) {\n        if (Array.isArray(peak) && peak.length < 2) {\n            throw new Error('peak must be an array with two (or three) values or an object with {x,y,width?}');\n        }\n        if (!Array.isArray(peak) &&\n            (peak.x === undefined || peak.y === undefined)) {\n            throw new Error('peak must be an array with two (or three) values or an object with {x,y,width?}');\n        }\n        let xPosition;\n        let intensity;\n        let peakFWHM;\n        let peakWidth;\n        let peakShapeOptions;\n        if (Array.isArray(peak)) {\n            [xPosition, intensity, peakFWHM, peakShapeOptions] = peak;\n        }\n        else {\n            xPosition = peak.x;\n            intensity = peak.y;\n            peakWidth = peak.width;\n            peakShapeOptions = peak.shape;\n        }\n        if (intensity > this.maxPeakHeight)\n            this.maxPeakHeight = intensity;\n        let { shape: shapeOptions } = options;\n        if (peakShapeOptions) {\n            shapeOptions = shapeOptions\n                ? { ...shapeOptions, ...peakShapeOptions }\n                : peakShapeOptions;\n        }\n        const shape = shapeOptions\n            ? getShape1D(shapeOptions)\n            : Object.assign(Object.create(Object.getPrototypeOf(this.shape)), this.shape);\n        const { width } = options;\n        let { widthLeft, widthRight } = options;\n        /*\n         if we don't force the fwhm we just take the one from the shape\n         however we have many way to force it:\n         - use [x,y,fwhm]\n         - define `width` that will be converted to fwhm\n         - define `widthLeft` and `widthRight` to define asymmetric peaks\n         - have a callback `peakWidthFct`\n         This should evolve in the future because we will not always have `fwhm`\n         */\n        const fwhm = peakFWHM !== undefined\n            ? peakFWHM\n            : peakWidth\n                ? shape.widthToFWHM(peakWidth)\n                : this.peakWidthFct\n                    ? this.peakWidthFct(xPosition)\n                    : width !== undefined\n                        ? width\n                        : shape.fwhm;\n        if (!widthLeft)\n            widthLeft = fwhm;\n        if (!widthRight)\n            widthRight = fwhm;\n        if (!widthLeft || !widthRight) {\n            throw new Error('Width left or right is undefined or zero');\n        }\n        const factor = options.factor === undefined ? shape.getFactor() : options.factor;\n        const firstValue = xPosition - (widthLeft / 2) * factor;\n        const lastValue = xPosition + (widthRight / 2) * factor;\n        const firstPoint = Math.max(0, Math.floor((firstValue - this.from) / this.interval));\n        const lastPoint = Math.min(this.nbPoints - 1, Math.ceil((lastValue - this.from) / this.interval));\n        const middlePoint = Math.round((xPosition - this.from) / this.interval);\n        // PEAK SHAPE MAY BE ASYMMETRC (widthLeft and widthRight) !\n        // we calculate the left part of the shape\n        shape.fwhm = widthLeft;\n        for (let index = firstPoint; index < Math.max(middlePoint, 0); index++) {\n            this.data.y[index] +=\n                intensity * shape.fct(this.data.x[index] - xPosition);\n        }\n        // we calculate the right part of the gaussian\n        shape.fwhm = widthRight;\n        for (let index = Math.min(middlePoint, lastPoint); index <= lastPoint; index++) {\n            this.data.y[index] +=\n                intensity * shape.fct(this.data.x[index] - xPosition);\n        }\n        return this;\n    }\n    /**\n     * Add a baseline to the spectrum.\n     * @param baselineFct - Mathematical function producing the baseline you want.\n     * @returns The generator instance.\n     */\n    addBaseline(baselineFct) {\n        addBaseline(this.data, baselineFct);\n        return this;\n    }\n    /**\n     * Add noise to the spectrum.\n     * @param options - Configuration for noise generation.\n     * @returns The generator instance.\n     */\n    addNoise(options) {\n        addNoise(this.data, options);\n        return this;\n    }\n    /**\n     * Get the generated spectrum.\n     * @param options - Options for getting the spectrum.\n     * @returns The generated spectrum data.\n     */\n    getSpectrum(options = {}) {\n        if (typeof options === 'boolean') {\n            options = { copy: options };\n        }\n        const { copy = true, threshold = 0 } = options;\n        if (threshold) {\n            const minPeakHeight = this.maxPeakHeight * threshold;\n            const x = [];\n            const y = [];\n            for (let i = 0; i < this.data.x.length; i++) {\n                if (this.data.y[i] >= minPeakHeight) {\n                    x.push(this.data.x[i]);\n                    y.push(this.data.y[i]);\n                }\n            }\n            return { x: Float64Array.from(x), y: Float64Array.from(y) };\n        }\n        if (copy) {\n            return {\n                x: this.data.x.slice(),\n                y: this.data.y.slice(),\n            };\n        }\n        else {\n            return this.data;\n        }\n    }\n    /**\n     * Resets the generator with an empty spectrum.\n     * @returns The generator instance.\n     */\n    reset() {\n        if (this.nbPoints === 1) {\n            this.data.x[0] = (this.from + this.to) / 2;\n        }\n        else {\n            for (let i = 0; i < this.nbPoints; i++) {\n                this.data.x[i] = this.from + i * this.interval;\n            }\n        }\n        return this;\n    }\n}\nfunction assertInteger(value, name) {\n    if (!Number.isInteger(value)) {\n        throw new TypeError(`${name} option must be an integer`);\n    }\n}\nfunction assertNumber(value, name) {\n    if (!Number.isFinite(value)) {\n        throw new TypeError(`${name} option must be a number`);\n    }\n}\n/**\n * Generates a spectrum and returns it.\n * @param peaks - List of peaks to put in the spectrum.\n * @param options - Configuration for spectrum generation.\n * @returns The generated spectrum data.\n */\nexport function generateSpectrum(peaks, options = {}) {\n    const { generator: generatorOptions, noise, baseline, threshold, peakOptions, } = options;\n    const generator = new SpectrumGenerator(generatorOptions);\n    generator.addPeaks(peaks, peakOptions);\n    if (baseline)\n        generator.addBaseline(baseline);\n    if (noise) {\n        generator.addNoise(noise);\n    }\n    return generator.getSpectrum({\n        threshold,\n    });\n}\n//# sourceMappingURL=SpectrumGenerator.js.map","/**\n * Adds a baseline to the spectrum data.\n * @param data - The spectrum data to modify.\n * @param baselineFct - Function that generates the baseline value for a given x.\n * @returns The modified spectrum data.\n */\nexport default function addBaseline(data, baselineFct) {\n    if (!baselineFct)\n        return data;\n    const xs = data.x;\n    const ys = data.y;\n    for (let i = 0; i < xs.length; i++) {\n        ys[i] += baselineFct(xs[i]);\n    }\n    return data;\n}\n//# sourceMappingURL=addBaseline.js.map","import { xMaxValue, xAdd, createRandomArray } from 'ml-spectra-processing';\n/**\n * Adds noise to the spectrum data.\n * @param data - The spectrum data to modify.\n * @param options - Configuration for noise generation.\n * @returns The modified spectrum data.\n */\nexport default function addNoise(data, options = {}) {\n    const { seed = 0, distribution = 'normal', percent = 1 } = options;\n    const range = (xMaxValue(data.y) * percent) / 100;\n    const noise = createRandomArray({\n        distribution,\n        seed,\n        mean: 0,\n        standardDeviation: range,\n        range,\n        length: data.x.length,\n    });\n    data.y = xAdd(data.y, noise);\n    return data;\n}\n//# sourceMappingURL=addNoise.js.map","import { getShape2D } from 'ml-peak-shape-generator';\nimport { matrixCreateEmpty, matrixMinMaxZ } from 'ml-spectra-processing';\nconst axis2D = ['x', 'y'];\nconst peakCoordinates = ['x', 'y', 'z'];\n/**\n * Converts a width value to full width at half maximum (FWHM).\n * @param shape - The 2D shape to use for conversion.\n * @param width - The width value to convert.\n * @returns The converted FWHM value as an XYNumber object.\n */\nconst convertWidthToFWHM = (shape, width) => {\n    const widthData = ensureXYNumber(width);\n    for (const key of axis2D) {\n        widthData[key] = shape.widthToFWHM(widthData[key]);\n    }\n    return widthData;\n};\nexport class Spectrum2DGenerator {\n    constructor(options = {}) {\n        const { peakWidthFct = () => 5, shape = {\n            kind: 'gaussian',\n        }, } = options;\n        let { from = 0, to = 100, nbPoints = 1001 } = options;\n        from = ensureXYNumber(from);\n        to = ensureXYNumber(to);\n        nbPoints = ensureXYNumber(nbPoints);\n        for (const axis of axis2D) {\n            assertNumber(from[axis], `from-${axis}`);\n            assertNumber(to[axis], `to-${axis}`);\n            assertInteger(nbPoints[axis], `nbPoints-${axis}`);\n        }\n        this.from = from;\n        this.to = to;\n        this.nbPoints = nbPoints;\n        this.interval = calculeIntervals(from, to, nbPoints);\n        this.peakWidthFct = peakWidthFct;\n        this.maxPeakHeight = Number.MIN_SAFE_INTEGER;\n        const shapeGenerator = getShape2D(shape);\n        this.shape = shapeGenerator;\n        this.data = {\n            x: new Float64Array(nbPoints.x),\n            y: new Float64Array(nbPoints.y),\n            z: matrixCreateEmpty({\n                nbRows: this.nbPoints.y,\n                nbColumns: this.nbPoints.x,\n            }),\n        };\n        for (const axis of axis2D) {\n            if (this.to[axis] <= this.from[axis]) {\n                throw new RangeError('to option must be larger than from');\n            }\n        }\n        if (typeof this.peakWidthFct !== 'function') {\n            throw new TypeError('peakWidthFct option must be a function');\n        }\n        this.reset();\n    }\n    /**\n     * Adds multiple peaks to the 2D spectrum.\n     * @param peaks - Array of peaks or peak series to add.\n     * @param options - Options for adding peaks.\n     * @returns The generator instance.\n     */\n    addPeaks(peaks, options) {\n        if (!Array.isArray(peaks) &&\n            (typeof peaks !== 'object' ||\n                peaks.x === undefined ||\n                peaks.y === undefined ||\n                !Array.isArray(peaks.x) ||\n                !Array.isArray(peaks.y) ||\n                peaks.x.length !== peaks.y.length)) {\n            throw new TypeError('peaks must be an array or an object containing x[] and y[]');\n        }\n        if (Array.isArray(peaks)) {\n            for (const peak of peaks) {\n                this.addPeak(peak, options);\n            }\n        }\n        else {\n            const nbPeaks = peaks.x.length;\n            for (const c of peakCoordinates) {\n                if (peaks[c] &&\n                    Array.isArray(peaks[c]) &&\n                    nbPeaks !== peaks[c].length) {\n                    throw new Error('x, y, z should have the same length');\n                }\n            }\n            for (let i = 0; i < peaks.x.length; i++) {\n                this.addPeak([peaks.x[i], peaks.y[i], peaks.z[i]], options);\n            }\n        }\n        return this;\n    }\n    /**\n     * Adds a single peak to the 2D spectrum.\n     * @param peak - Peak to add, can be array or object format.\n     * @param options - Options for adding the peak.\n     * @returns The generator instance.\n     */\n    addPeak(peak, options = {}) {\n        if (Array.isArray(peak) && peak.length < 3) {\n            throw new Error('peak must be an array with three (or four) values or an object with {x,y,z,width?}');\n        }\n        if (!Array.isArray(peak) &&\n            peakCoordinates.some((e) => peak[e] === undefined)) {\n            throw new Error('peak must be an array with three (or four) values or an object with {x,y,z,width?}');\n        }\n        let xPosition;\n        let yPosition;\n        let intensity;\n        let peakFWHM;\n        let peakWidth;\n        let peakShapeOptions;\n        if (Array.isArray(peak)) {\n            [xPosition, yPosition, intensity, peakFWHM, peakShapeOptions] = peak;\n        }\n        else {\n            xPosition = peak.x;\n            yPosition = peak.y;\n            intensity = peak.z;\n            peakFWHM = peak.fwhm;\n            peakWidth = peak.width;\n            peakShapeOptions = peak.shape;\n        }\n        const position = { x: xPosition, y: yPosition };\n        if (intensity > this.maxPeakHeight)\n            this.maxPeakHeight = intensity;\n        const { width } = options;\n        let { shape: shapeOptions } = options;\n        if (peakShapeOptions) {\n            shapeOptions = shapeOptions\n                ? { ...shapeOptions, ...peakShapeOptions }\n                : peakShapeOptions;\n        }\n        const shape = shapeOptions\n            ? getShape2D(shapeOptions)\n            : Object.assign(Object.create(Object.getPrototypeOf(this.shape)), structuredClone(this.shape));\n        let { fwhm = peakFWHM !== undefined\n            ? peakFWHM\n            : peakWidth\n                ? convertWidthToFWHM(shape, peakWidth)\n                : width\n                    ? convertWidthToFWHM(shape, width)\n                    : this.peakWidthFct(xPosition, yPosition), } = options;\n        fwhm = ensureXYNumber(fwhm);\n        let factor = options.factor === undefined ? shape.getFactor() : options.factor;\n        factor = ensureXYNumber(factor);\n        const firstPoint = { x: 0, y: 0 };\n        const lastPoint = { x: 0, y: 0 };\n        for (const axis of axis2D) {\n            const first = position[axis] - (fwhm[axis] / 2) * factor[axis];\n            const last = position[axis] + (fwhm[axis] / 2) * factor[axis];\n            firstPoint[axis] = Math.max(0, Math.floor((first - this.from[axis]) / this.interval[axis]));\n            lastPoint[axis] = Math.min(this.nbPoints[axis], Math.ceil((last - this.from[axis]) / this.interval[axis]));\n        }\n        shape.fwhm = fwhm;\n        for (let xIndex = firstPoint.x; xIndex < lastPoint.x; xIndex++) {\n            for (let yIndex = firstPoint.y; yIndex < lastPoint.y; yIndex++) {\n                const value = intensity *\n                    shape.fct(this.data.x[xIndex] - position.x, this.data.y[yIndex] - position.y);\n                if (Math.abs(value) > 1e-6) {\n                    this.data.z[yIndex][xIndex] += value;\n                }\n            }\n        }\n        return this;\n    }\n    /**\n     * Gets the generated 2D spectrum data.\n     * @param options - Options for getting the spectrum.\n     * @returns The spectrum data object.\n     */\n    getSpectrum(options = {}) {\n        if (typeof options === 'boolean') {\n            options = { copy: options };\n        }\n        const { copy = true } = options;\n        const minMaxZ = matrixMinMaxZ(this.data.z);\n        return {\n            minX: this.from.x,\n            maxX: this.to.x,\n            maxY: this.to.y,\n            minY: this.from.y,\n            minZ: minMaxZ.min,\n            maxZ: minMaxZ.max,\n            z: copy ? this.data.z.slice() : this.data.z,\n        };\n    }\n    /**\n     * Resets the generator to initial state.\n     * @returns The generator instance.\n     */\n    reset() {\n        const spectrum = this.data;\n        for (const axis of axis2D) {\n            for (let i = 0; i < this.nbPoints[axis]; i++) {\n                spectrum[axis][i] = this.from[axis] + i * this.interval[axis];\n            }\n        }\n        for (const row of spectrum.z) {\n            for (let j = 0; j < row.length; j++) {\n                row[j] = 0;\n            }\n        }\n        return this;\n    }\n}\n/**\n * Generates a 2D spectrum with the given peaks.\n * @param peaks - Peaks to include in the spectrum.\n * @param options - Options for spectrum generation.\n * @returns The generated spectrum data.\n */\nexport function generateSpectrum2D(peaks, options = {}) {\n    const { generator: generatorOptions, peaks: addPeaksOptions } = options;\n    const generator = new Spectrum2DGenerator(generatorOptions);\n    generator.addPeaks(peaks, addPeaksOptions);\n    return generator.getSpectrum();\n}\n/**\n * Ensures the input is an XYNumber object.\n * @param input - Number or XYNumber to process.\n * @returns An XYNumber object.\n */\nfunction ensureXYNumber(input) {\n    return typeof input !== 'object' ? { x: input, y: input } : { ...input };\n}\n/**\n * Calculates the intervals between points for both x and y axes.\n * @param from - Starting point coordinates.\n * @param to - Ending point coordinates.\n * @param nbPoints - Number of points in each dimension.\n * @returns The calculated intervals as an XYNumber object.\n */\nfunction calculeIntervals(from, to, nbPoints) {\n    return {\n        x: (to.x - from.x) / (nbPoints.x - 1),\n        y: (to.y - from.y) / (nbPoints.y - 1),\n    };\n}\n/**\n * Validates if a value is an integer.\n * @param value - Number to validate.\n * @param name - Name of the parameter for error message.\n * @throws {TypeError} If value is not an integer.\n */\nfunction assertInteger(value, name) {\n    if (!Number.isInteger(value)) {\n        throw new TypeError(`${name} option must be an integer`);\n    }\n}\n/**\n * Validates if a value is a finite number.\n * @param value - Number to validate.\n * @param name - Name of the parameter for error message.\n * @throws {TypeError} If value is not a finite number.\n */\nfunction assertNumber(value, name) {\n    if (!Number.isFinite(value)) {\n        throw new TypeError(`${name} option must be a number`);\n    }\n}\n//# sourceMappingURL=Spectrum2DGenerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.closestPointX = closestPointX;\nfunction closestPointX(array, target) {\n    let low = 0;\n    let high = array.length - 1;\n    let middle = 0;\n    while (high - low > 1) {\n        middle = low + ((high - low) >> 1);\n        if (array[middle].x < target) {\n            low = middle;\n        }\n        else if (array[middle].x > target) {\n            high = middle;\n        }\n        else {\n            return array[middle];\n        }\n    }\n    if (low < array.length - 1) {\n        if (Math.abs(target - array[low].x) < Math.abs(array[low + 1].x - target)) {\n            return array[low];\n        }\n        else {\n            return array[low + 1];\n        }\n    }\n    else {\n        return array[low];\n    }\n}\n//# sourceMappingURL=closestPointX.js.map","\"use strict\";\n/**\n * Join x values if there are similar\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinX = joinX;\nfunction joinX(self, threshold = Number.EPSILON) {\n    // when we join we will use the center of mass\n    if (self.array.length === 0)\n        return [];\n    self.sortX();\n    let current = self.array[0];\n    let result = [current];\n    for (let i = 1; i < self.array.length; i++) {\n        const item = self.array[i];\n        if (item.x - current.x <= threshold) {\n            // weighted sum\n            current.x =\n                (item.y / (current.y + item.y)) * (item.x - current.x) + current.x;\n            current.y += item.y;\n        }\n        else {\n            current = { ...item };\n            result.push(current);\n        }\n    }\n    self.array = result;\n    self.ySorted = false;\n    return self;\n}\n//# sourceMappingURL=joinX.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multiply = multiply;\nfunction multiply(a, b, options = {}) {\n    const { minY = 1e-8, maxLines = 5000, deltaX = 1e-2 } = options;\n    const result = new a.constructor();\n    a.sortY();\n    b.sortY();\n    for (let entryA of a.array) {\n        for (let entryB of b.array) {\n            let y = entryA.y * entryB.y;\n            if (y > minY) {\n                const composition = calculateComposition(entryA, entryB);\n                if (composition) {\n                    result.push({ x: entryA.x + entryB.x, y, composition });\n                }\n                else {\n                    result.push({ x: entryA.x + entryB.x, y });\n                }\n            }\n            if (result.length > maxLines * 2) {\n                result.joinX(deltaX);\n                result.topY(maxLines);\n            }\n        }\n    }\n    result.joinX(deltaX);\n    result.topY(maxLines);\n    a.move(result);\n    return a;\n}\nfunction calculateComposition(entryA, entryB) {\n    if (!entryA.composition || !entryB.composition)\n        return;\n    let toReturn = {};\n    const keys = [\n        ...new Set(Object.keys(entryA.composition).concat(Object.keys(entryB.composition))),\n    ];\n    for (let key of keys) {\n        toReturn[key] =\n            (entryA.composition[key] || 0) + (entryB.composition[key] || 0);\n    }\n    return toReturn;\n}\n//# sourceMappingURL=multiply.js.map","\"use strict\";\n// https://en.wikipedia.org/wiki/Exponentiation_by_squaring\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.power = power;\nfunction power(array, p, options = {}) {\n    if (p <= 0)\n        throw new Error('power must be larger than 0');\n    if (p === 1)\n        return array;\n    if (p === 2) {\n        return array.square();\n    }\n    p--;\n    let base = array.copy(); // linear time\n    while (p !== 0) {\n        if ((p & 1) !== 0) {\n            array.multiply(base, options); // executed <= log2(p) times\n        }\n        p >>= 1;\n        if (p !== 0)\n            base.square(options); // executed <= log2(p) times\n    }\n    return array;\n}\n//# sourceMappingURL=power.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Distribution = void 0;\nconst closestPointX_js_1 = require(\"./utils/closestPointX.js\");\nconst joinX_js_1 = require(\"./utils/joinX.js\");\nconst multiply_js_1 = require(\"./utils/multiply.js\");\nconst power_js_1 = require(\"./utils/power.js\");\n/**\n * Internal class to deal with isotopic distribution calculations\n */\nclass Distribution {\n    constructor(array = []) {\n        this.array = array;\n        this.cache = getEmptyCache();\n    }\n    emptyCache() {\n        if (this.cache.isEmpty)\n            return;\n        this.cache = getEmptyCache();\n    }\n    get length() {\n        return this.array.length;\n    }\n    get xs() {\n        return this.array.map((p) => p.x);\n    }\n    get ys() {\n        return this.array.map((p) => p.y);\n    }\n    get sumY() {\n        if (!Number.isNaN(this.cache.sumY))\n            return this.cache.sumY;\n        let sumY = 0;\n        for (let item of this.array) {\n            sumY += item.y;\n        }\n        this.cache.sumY = sumY;\n        this.cache.isEmpty = false;\n        return sumY;\n    }\n    get minX() {\n        if (!Number.isNaN(this.cache.minX))\n            return this.cache.minX;\n        let minX = Number.POSITIVE_INFINITY;\n        for (let item of this.array) {\n            if (item.x < minX) {\n                minX = item.x;\n            }\n        }\n        this.cache.minX = minX;\n        this.cache.isEmpty = false;\n        return minX;\n    }\n    get maxX() {\n        if (!Number.isNaN(this.cache.maxX))\n            return this.cache.maxX;\n        let maxX = Number.NEGATIVE_INFINITY;\n        for (let item of this.array) {\n            if (item.x > maxX) {\n                maxX = item.x;\n            }\n        }\n        this.cache.maxX = maxX;\n        this.cache.isEmpty = false;\n        return maxX;\n    }\n    get minY() {\n        if (!Number.isNaN(this.cache.minY))\n            return this.cache.minY;\n        let minY = Number.POSITIVE_INFINITY;\n        for (let item of this.array) {\n            if (item.y < minY) {\n                minY = item.y;\n            }\n        }\n        this.cache.minY = minY;\n        this.cache.isEmpty = false;\n        return minY;\n    }\n    get maxY() {\n        if (!Number.isNaN(this.cache.maxY))\n            return this.cache.maxY;\n        let maxY = Number.NEGATIVE_INFINITY;\n        for (let item of this.array) {\n            if (item.y > maxY) {\n                maxY = item.y;\n            }\n        }\n        this.cache.maxY = maxY;\n        this.cache.isEmpty = false;\n        return maxY;\n    }\n    multiplyY(value) {\n        for (const item of this.array) {\n            item.y *= value;\n        }\n    }\n    setArray(array) {\n        this.array = array;\n        this.emptyCache();\n    }\n    move(other) {\n        this.array = other.array;\n        this.emptyCache();\n    }\n    push(...points) {\n        this.array.push(...points);\n        this.emptyCache();\n    }\n    /**\n     * Sort by ASCENDING x values\n     * @returns {Distribution}\n     */\n    sortX() {\n        this.cache.ySorted = false;\n        if (this.cache.xSorted)\n            return this;\n        this.array.sort((a, b) => a.x - b.x);\n        this.cache.xSorted = true;\n        this.cache.isEmpty = false;\n        return this;\n    }\n    /**\n     * Sort by DESCENDING y values\n     * @returns {Distribution}\n     */\n    sortY() {\n        this.cache.xSorted = false;\n        if (this.cache.ySorted)\n            return this;\n        this.array.sort((a, b) => b.y - a.y);\n        this.cache.ySorted = true;\n        this.cache.isEmpty = false;\n        return this;\n    }\n    normalize() {\n        const sum = this.sumY;\n        for (let item of this.array) {\n            item.y /= sum;\n        }\n        return this;\n    }\n    /**\n     * Only keep a defined number of peaks\n     * @param {number} limit\n     * @returns\n     */\n    topY(limit) {\n        if (!limit)\n            return this;\n        if (this.array.length <= limit)\n            return this;\n        this.sortY();\n        this.array.splice(limit);\n        return this;\n    }\n    /**\n     * remove all the peaks under a defined relative threshold\n     * @param {number} [relativeValue=0] Should be between 0 and 1. 0 means no peak will be removed, 1 means all peaks will be removed\n     */\n    threshold(relativeValue = 0) {\n        if (!relativeValue)\n            return this;\n        const maxY = this.maxY;\n        const threshold = maxY * relativeValue;\n        this.array = this.array.filter((point) => point.y >= threshold);\n    }\n    square(options = {}) {\n        return this.multiply(this, options);\n    }\n    multiply(b, options) {\n        return (0, multiply_js_1.multiply)(this, b, options);\n    }\n    power(p, options) {\n        return (0, power_js_1.power)(this, p, options);\n    }\n    copy() {\n        let distCopy = new Distribution();\n        distCopy.cache = { ...this.cache };\n        distCopy.array = structuredClone(this.array);\n        return distCopy;\n    }\n    maxToOne() {\n        if (this.array.length === 0)\n            return this;\n        let currentMax = this.maxY;\n        for (let item of this.array) {\n            item.y /= currentMax;\n        }\n        return this;\n    }\n    joinX(threshold) {\n        return (0, joinX_js_1.joinX)(this, threshold);\n    }\n    append(distribution) {\n        for (let item of distribution.array) {\n            this.array.push(item);\n        }\n        this.emptyCache();\n    }\n    closestPointX(target) {\n        this.sortX();\n        return (0, closestPointX_js_1.closestPointX)(this.array, target);\n    }\n}\nexports.Distribution = Distribution;\nfunction getEmptyCache() {\n    return {\n        isEmpty: true,\n        xSorted: false,\n        ySorted: false,\n        minX: Number.NaN,\n        maxX: Number.NaN,\n        minY: Number.NaN,\n        maxY: Number.NaN,\n        sumY: Number.NaN,\n    };\n}\n//# sourceMappingURL=Distribution.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDerivedCompositionInfo = getDerivedCompositionInfo;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst mf_parser_1 = require(\"mf-parser\");\n/**\n * Calcultes informations about the isotopic composition explaining a specific mass\n * @param {Record<string, number>} composition\n * @returns\n */\nfunction getDerivedCompositionInfo(composition) {\n    const shortComposition = {};\n    let label = '';\n    let shortLabel = '';\n    for (let key in composition) {\n        let isotopeLabel = '';\n        for (let i = 0; i < key.length; i++) {\n            if (mf_parser_1.superscript[key[i]]) {\n                isotopeLabel += mf_parser_1.superscript[key[i]];\n            }\n            else {\n                isotopeLabel += key[i];\n            }\n        }\n        if (composition[key] > 1) {\n            const number = String(composition[key]);\n            for (let i = 0; i < number.length; i++) {\n                isotopeLabel += mf_parser_1.subscript[number[i]];\n            }\n        }\n        label += isotopeLabel;\n        if (chemical_elements_1.stableIsotopesObject[key].mostAbundant)\n            continue;\n        shortLabel += isotopeLabel;\n        shortComposition[key] = composition[key];\n    }\n    return { label, shortComposition, shortLabel };\n}\n//# sourceMappingURL=getDerivedCompositionInfo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IsotopicDistribution = void 0;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\nconst spectrum_generator_1 = require(\"spectrum-generator\");\nconst Distribution_1 = require(\"./Distribution\");\nconst getDerivedCompositionInfo_1 = require(\"./utils/getDerivedCompositionInfo\");\nconst MINIMAL_FWHM = 1e-8;\nconst MINIMAL_Y = 1e-8;\n/** @typedef {import('mf-parser').IsotopesInfo} IsotopesInfo */\n/** @typedef {import('mf-parser').MFInfo} MFInfo */\n/** @typedef {import('./IsotopicDistribution.types').XY} XY */\n/** @typedef {import('./IsotopicDistribution.types').IsotopicDistributionPart} IsotopicDistributionPart */\n/** @typedef {import('./IsotopicDistribution.types').IsotopicDistributionOptions} IsotopicDistributionOptions */\n/**\n * A class that allows to manage isotopic distribution\n */\nclass IsotopicDistribution {\n    /**\n     * Class that manages isotopic distribution\n     * @param {string|Array<any>} value - Molecular formula or an array of parts.\n     * @param {IsotopicDistributionOptions} [options]\n     */\n    constructor(value, options = {}) {\n        this.threshold = options.threshold;\n        this.limit = options.limit;\n        if (Array.isArray(value)) {\n            this.parts = structuredClone(value);\n            for (let part of this.parts) {\n                part.confidence = 0;\n                part.isotopesInfo = new mf_parser_1.MF(`${part.mf}(${part.ionization.mf})`).getIsotopesInfo();\n            }\n        }\n        else {\n            let mf = new mf_parser_1.MF(value, { ensureCase: options.ensureCase });\n            let mfInfo = mf.getInfo();\n            const ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n            /** @type {MFInfo} */\n            const parts = 'parts' in mfInfo ? mfInfo.parts : [mfInfo];\n            this.parts = [];\n            for (let partOriginal of parts) {\n                // we calculate information for each part\n                for (const ionization of ionizations) {\n                    let part = structuredClone(partOriginal);\n                    part.em = part.monoisotopicMass; // TODO: To remove !!! we change the name !?\n                    part.isotopesInfo = new mf_parser_1.MF(`${part.mf}(${ionization.mf})`).getIsotopesInfo();\n                    part.confidence = 0;\n                    let msInfo = (0, mf_utilities_1.getMsInfo)(part, {\n                        ionization,\n                    });\n                    part.ionization = msInfo.ionization;\n                    part.ms = msInfo.ms;\n                    this.parts.push(part);\n                }\n            }\n        }\n        this.cachedDistribution = undefined;\n        this.fwhm = options.fwhm === undefined ? 0.01 : options.fwhm;\n        // if fwhm is under 1e-8 there are some artifacts in the spectra\n        if (this.fwhm < MINIMAL_FWHM)\n            this.fwhm = MINIMAL_FWHM;\n        this.minY = options.minY === undefined ? MINIMAL_Y : options.minY;\n        this.maxLines = options.maxLines || 5000;\n        this.allowNeutral =\n            options.allowNeutral === undefined ? true : options.allowNeutral;\n    }\n    /**\n     * @returns {Array<IsotopicDistributionPart>}\n     */\n    getParts() {\n        return this.parts;\n    }\n    /**\n     * @return {Distribution} returns the total distribution (for all parts)\n     */\n    getDistribution() {\n        if (this.cachedDistribution)\n            return this.cachedDistribution;\n        let options = {\n            maxLines: this.maxLines,\n            minY: this.minY,\n            deltaX: this.fwhm,\n        };\n        let finalDistribution = new Distribution_1.Distribution();\n        this.confidence = 0;\n        // TODO need to cache each part without ionization\n        // in case of many ionization we don't need to recalculate everything !\n        for (let part of this.parts) {\n            let totalDistribution = new Distribution_1.Distribution([\n                {\n                    x: 0,\n                    y: 1,\n                    composition: this.fwhm === MINIMAL_FWHM ? {} : undefined, // should we calculate composition in isotopes of each peak\n                },\n            ]);\n            let charge = part.ms.charge;\n            let absoluteCharge = Math.abs(charge);\n            if (charge || this.allowNeutral) {\n                for (let isotope of part.isotopesInfo.isotopes) {\n                    if (isotope.number < 0)\n                        return { array: [] };\n                    if (isotope.number > 0) {\n                        const newDistribution = structuredClone(isotope.distribution);\n                        if (this.fwhm === MINIMAL_FWHM) {\n                            // add composition\n                            for (const entry of newDistribution) {\n                                entry.composition = { [Math.round(entry.x) + isotope.atom]: 1 };\n                            }\n                        }\n                        let distribution = new Distribution_1.Distribution(newDistribution);\n                        distribution.power(isotope.number, options);\n                        totalDistribution.multiply(distribution, options);\n                    }\n                }\n                this.confidence = 0;\n                for (const item of totalDistribution.array) {\n                    this.confidence += item.y;\n                }\n                // we finally deal with the charge\n                if (charge) {\n                    for (const e of totalDistribution.array) {\n                        e.x = (e.x - chemical_elements_1.ELECTRON_MASS * charge) / absoluteCharge;\n                    }\n                }\n                if (totalDistribution.array && totalDistribution.array.length > 0) {\n                    totalDistribution.sortX();\n                    part.fromX = totalDistribution.array[0].x;\n                    part.toX = totalDistribution.array.at(-1).x;\n                }\n                if (part?.ms.similarity?.factor) {\n                    totalDistribution.multiplyY(part.ms.similarity.factor);\n                }\n                else if (part.ms?.target?.intensity &&\n                    part.ms?.target?.intensity !== 1) {\n                    // intensity is the value of the monoisotopic mass !\n                    // need to find the intensity of the peak corresponding\n                    // to the monoisotopic mass\n                    if (part.ms.target.mass) {\n                        let target = totalDistribution.closestPointX(part.ms.target.mass);\n                        totalDistribution.multiplyY(part.ms.target.intensity / target.y);\n                    }\n                    else {\n                        totalDistribution.multiplyY(part.ms.target.intensity);\n                    }\n                }\n                else if (part?.intensity && part?.intensity !== 1) {\n                    totalDistribution.multiplyY(part.intensity);\n                }\n                part.isotopicDistribution = totalDistribution.array;\n                const absoluteChargeOrOne = absoluteCharge || 1;\n                for (let entry of totalDistribution.array) {\n                    if (!entry.composition)\n                        continue;\n                    const deltaNeutrons = Math.round(entry.x * absoluteChargeOrOne - part.monoisotopicMass) +\n                        0; // +0 to avoid -0\n                    Object.assign(entry, {\n                        ...(0, getDerivedCompositionInfo_1.getDerivedCompositionInfo)(entry.composition),\n                        deltaNeutrons,\n                    });\n                }\n                if (finalDistribution.array.length === 0) {\n                    finalDistribution = totalDistribution;\n                }\n                else {\n                    finalDistribution.append(totalDistribution);\n                }\n            }\n        }\n        if (finalDistribution)\n            finalDistribution.joinX(this.fwhm);\n        // if there is a threshold we will deal with it\n        // and we will correct the confidence\n        if (this.threshold || this.limit) {\n            const sumBefore = finalDistribution.sumY;\n            if (this.threshold)\n                finalDistribution.threshold(this.threshold);\n            if (this.limit) {\n                finalDistribution.topY(this.limit);\n                finalDistribution.sortX();\n            }\n            const sumAfter = finalDistribution.sumY;\n            this.confidence = (this.confidence * sumAfter) / sumBefore;\n        }\n        this.confidence /= this.parts.length;\n        this.cachedDistribution = finalDistribution;\n        return finalDistribution;\n    }\n    /**\n     *\n     * @param {object} options\n     * @param {string} [options.delimiter=', ']\n     * @param {number} [options.numberXDecimals=4]\n     * @param {number} [options.numberYDecimals=4]\n     * @returns\n     */\n    getCSV(options) {\n        return this.getText({ ...options, delimiter: ', ' });\n    }\n    /**\n     *\n     * @param {object} options\n     * @param {string} [options.delimiter='\\t']\n     * @param {number} [options.numberXDecimals=4]\n     * @param {number} [options.numberYDecimals=4]\n     * @returns\n     */\n    getTSV(options) {\n        return this.getText({ ...options, delimiter: '\\t' });\n    }\n    getTable(options = {}) {\n        const { maxValue, xLabel = 'x', yLabel = 'y' } = options;\n        let points = this.getDistribution().array;\n        if (points.length === 0)\n            return [];\n        let factor = 1;\n        if (maxValue) {\n            let maxY = this.getMaxY(points);\n            factor = maxValue / maxY;\n        }\n        return points.map((point) => {\n            let newPoint = {};\n            newPoint[xLabel] = point.x;\n            newPoint[yLabel] = point.y * factor;\n            return newPoint;\n        });\n    }\n    /**\n     *\n     * @param {object} options\n     * @param {string} [options.delimiter='\\t']\n     * @param {number} [options.numberXDecimals=4]\n     * @param {number} [options.numberYDecimals=4]\n     * @returns\n     */\n    getText(options = {}) {\n        const { delimiter = '\\t', numberXDecimals = 5, numberYDecimals = 3, } = options;\n        let points = this.getDistribution().array;\n        let csv = [];\n        for (let point of points) {\n            csv.push(`${point.x.toFixed(numberXDecimals)}${delimiter}${(point.y * 100).toFixed(numberYDecimals)}`);\n        }\n        return csv.join('\\n');\n    }\n    getMaxY(points) {\n        let maxY = points[0].y;\n        for (let point of points) {\n            if (point.y > maxY)\n                maxY = point.y;\n        }\n        return maxY;\n    }\n    getSumY(points) {\n        let sumY = 0;\n        for (let point of points) {\n            sumY += point.y;\n        }\n        return sumY;\n    }\n    /**\n     * Returns the isotopic distribution as an array of peaks\n     * @param {object} [options={}]\n     * @param {number} [options.maxValue=100]\n     * @param {number} [options.sumValue] // if sumValue is defined, maxValue is ignored\n     * @return {Array<{x:number,y:number}|{x:number,y:number,label:string,shortComposition:string,shortLabel:string,deltaNeutrons:number}>}\n     */\n    getPeaks(options = {}) {\n        const { maxValue = 100, sumValue } = options;\n        let peaks = this.getDistribution().array;\n        if (peaks.length === 0)\n            return [];\n        let factor = 1;\n        if (sumValue) {\n            let sumY = this.getSumY(peaks);\n            factor = sumY / sumValue;\n            if (factor !== 1) {\n                peaks = structuredClone(peaks);\n                for (const peak of peaks) {\n                    peak.y = peak.y / factor;\n                }\n            }\n        }\n        else if (maxValue) {\n            let maxY = this.getMaxY(peaks);\n            if (maxValue !== maxY) {\n                // we need to copy the array because we prefer no side effects\n                peaks = structuredClone(peaks);\n                for (const peak of peaks) {\n                    // we rescale the Y values by first dividing by maxY and then multiplying by maxValue in order to avoid approximation errors\n                    peak.y = (peak.y / maxY) * maxValue;\n                }\n            }\n        }\n        return peaks;\n    }\n    /**\n     * Returns the isotopic distirubtion\n     * @param {object} [options={}]\n     * @param {number} [options.maxValue=100]\n     * @param {number} [options.sumValue] // if sumValue is defined, maxValue is ignored\n     * @return {{x:number[],y:number[]}|{x:number[],y:number[],label:string[],shortComposition:string[],shortLabel:string[],deltaNeutrons:[]}}\n     */\n    getXY(options = {}) {\n        let peaks = this.getPeaks(options);\n        if (peaks.length === 0) {\n            return { x: [], y: [] };\n        }\n        const result = {\n            x: peaks.map((a) => a.x),\n            y: peaks.map((a) => a.y),\n        };\n        for (let key of Object.keys(peaks[0]).filter((k) => k !== 'x' && k !== 'y')) {\n            result[key] = peaks.map((a) => a[key]);\n        }\n        return result;\n    }\n    /**\n     * Returns the isotopic distirubtion\n     * @param {object} [options={}]\n     * @param {number} [options.maxValue=100]\n     * @param {number} [options.sumValue] // if sumValue is defined, maxValue is ignored\n     * @return {import('cheminfo-types').MeasurementXYVariables} an object containing at least the 2 properties: x:[] and y:[]\n     */\n    getVariables(options = {}) {\n        const xy = this.getXY(options);\n        return {\n            x: { data: xy.x, label: 'm/z', units: 'u' },\n            y: { data: xy.y, label: 'Relative intensity', units: '%' },\n        };\n    }\n    /**\n     * Returns the isotopic distribution as the sum of gaussian\n     * @param {object} [options={}]\n     * @param {number} [options.gaussianWidth=10] // how good should look the gaussian ? By default we take 10 times the fwhm as number of points\n     * @param {number} [options.threshold=0.00001] // minimal height to return point\n     * @param {number} [options.maxLength=1e6] // minimal height to return point\n     * @param {number} [options.maxValue] // rescale Y to reach maxValue\n     * @param {number} [options.from] // minimal x value, default to the first point - 2\n     * @param {number} [options.to] // maximal x value, default to the last point + 2\n     * @param {function} [options.peakWidthFct=(mz)=>(this.fwhm)]\n     * @return {XY} isotopic distribution as an object containing 2 properties: x:[] and y:[]\n     */\n    getGaussian(options = {}) {\n        const { peakWidthFct = () => this.fwhm, threshold = 0.00001, gaussianWidth = 10, maxValue, maxLength = 1e6, } = options;\n        let points = this.getTable({ maxValue });\n        if (points.length === 0)\n            return { x: [], y: [] };\n        const from = options.from || points[0].x - 2;\n        const to = options.to || points.at(-1).x + 2;\n        const nbPoints = Math.round(((to - from) * gaussianWidth) / this.fwhm + 1);\n        if (nbPoints > maxLength) {\n            throw new Error(`Number of points is over the maxLength: ${nbPoints}>${maxLength}`);\n        }\n        let gaussianOptions = {\n            from,\n            to,\n            nbPoints,\n            peakWidthFct,\n        };\n        let spectrumGenerator = new spectrum_generator_1.SpectrumGenerator(gaussianOptions);\n        for (let point of points) {\n            spectrumGenerator.addPeak([point.x, point.y]);\n        }\n        let spectrum = spectrumGenerator.getSpectrum({ threshold });\n        if (maxValue) {\n            spectrum.y = (0, ml_spectra_processing_1.xNormed)(spectrum.y, {\n                algorithm: 'max',\n                value: maxValue,\n                output: spectrum.y,\n            });\n        }\n        return spectrum;\n    }\n}\nexports.IsotopicDistribution = IsotopicDistribution;\n//# sourceMappingURL=IsotopicDistribution.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchSimilarity = searchSimilarity;\nconst isotopic_distribution_1 = require(\"isotopic-distribution\");\nconst peaks_similarity_1 = require(\"peaks-similarity\");\n/**\nSearch for an experimental monoisotopic mass and calculate the similarity\n* @param {object}   [options={}]\n* @param {array}    [options.databases] - an array containing the name of the databases so search, by default all\n* @param {boolean}  [options.flatten] - should we return the array as a flat result\n* @param {function} [options.onStep] - Callback to do after each step\n* @param {string}   [options.ionizations=''] - Comma separated list of ionizations (to charge the molecule)\n* @param {object}   [options.minSimilarity=0.5] - min similarity value\n\n* @param {object}   [options.filter={}]\n* @param {boolean}  [options.filter.forceIonization=false] - If true ignore existing ionizations\n* @param {number}   [options.filter.msem] - Observed monoisotopic mass in mass spectrometer\n* @param {number}   [options.filter.precision=1000] - The precision on the experimental mass\n* @param {number}   [options.filter.minCharge=-Infinity] - Minimal charge\n* @param {number}   [options.filter.maxCharge=+Infinity] - Maximal charge\n* @param {boolean}  [options.filter.absoluteCharge=false] - If true, the charge is absolute (so between 0 and +Infinity by default)\n* @param {object}   [options.filter.unsaturation={}]\n* @param {number}   [options.filter.unsaturation.min=-Infinity] - Minimal unsaturation\n* @param {number}   [options.filter.unsaturation.max=+Infinity] - Maximal unsaturation\n* @param {boolean}  [options.filter.unsaturation.onlyInteger=false] - Integer unsaturation\n* @param {boolean}  [options.filter.unsaturation.onlyNonInteger=false] - Non integer unsaturation\n* @param {object}   [options.filter.atoms] - object of atom:{min, max}\n* @param {object}   [options.filter.callback] - a function to filter the MF\n* @param {object}   [options.similarity={}]\n* @param {number}   [options.similarity.widthBottom]\n* @param {number}   [options.similarity.widthTop]\n* @param {object}   [options.similarity.widthFunction] - function called with mass that should return an object width containing top and bottom\n* @param {object}   [options.similarity.zone={}]\n* @param {number}   [options.similarity.zone.low=-0.5] - window shift based on observed monoisotopic mass\n* @param {number}   [options.similarity.zone.high=2.5] - to value for the comparison window\n* @param {boolean}  [options.similarity.zone.auto=false] - if true, low / high is determined based on the isotopic distribution and the threshold\n* @param {string}   [options.similarity.common]\n* @param {number}   [options.similarity.threshold=0.001] - when calculating similarity we only use the isotopic distribution with peaks over this relative threshold\n* @param {number}   [options.similarity.limit] - We may define the maximum number of peaks to keep\n* @returns {Promise}\n*/\nasync function searchSimilarity(emdb, options = {}) {\n    const { similarity = {}, minSimilarity = 0.5, filter = {}, onStep } = options;\n    let width = {\n        bottom: similarity.widthBottom,\n        top: similarity.widthTop,\n    };\n    if (!emdb.experimentalSpectrum ||\n        emdb.experimentalSpectrum.data.x.length === 0) {\n        throw new Error('You need to add an experimental spectrum first using setMassSpectrum');\n    }\n    let experimentalData = emdb.experimentalSpectrum.data;\n    let sumY = emdb.experimentalSpectrum.sumY();\n    // the result of emdb query will be stored in a property 'ms'\n    let results = emdb.searchMSEM(filter.msem, options);\n    let flatEntries = [];\n    if (!options.flatten) {\n        for (let database of Object.keys(results)) {\n            for (let entry of results[database]) {\n                flatEntries.push(entry);\n            }\n        }\n    }\n    else {\n        flatEntries = results;\n    }\n    let { widthFunction, zone = {}, threshold = 0.001, limit } = similarity;\n    if (widthFunction && typeof widthFunction === 'string') {\n        // eslint-disable-next-line no-new-func\n        widthFunction = new Function('mass', widthFunction);\n        let checkTopBottom = widthFunction(123);\n        if (!checkTopBottom.bottom || !checkTopBottom.top) {\n            throw new Error('widthFunction should return an object with bottom and top properties');\n        }\n    }\n    const { low = -0.5, high = 2.5, auto } = zone;\n    // we need to calculate the similarity of the isotopic distribution\n    let similarityProcessor = new peaks_similarity_1.Comparator(similarity);\n    similarityProcessor.setPeaks1([experimentalData.x, experimentalData.y]);\n    for (let i = 0; i < flatEntries.length; i++) {\n        const entry = flatEntries[i];\n        if (onStep)\n            await onStep(i);\n        if (widthFunction) {\n            width = widthFunction(entry.ms.em);\n        }\n        let isotopicDistribution = new isotopic_distribution_1.IsotopicDistribution(entry.mf, {\n            allowNeutral: false,\n            ionizations: [entry.ionization],\n            fwhm: width.top / 2,\n            threshold,\n            limit,\n        });\n        let distribution = isotopicDistribution.getDistribution();\n        // we need to define the comparison zone that depends of the charge\n        let from, to;\n        if (auto) {\n            from = distribution.minX - 0.5;\n            to = distribution.maxX + 0.5;\n            similarityProcessor.setFromTo(from, to);\n        }\n        else {\n            from = entry.ms.em + low / Math.abs(entry.ms.charge);\n            to = entry.ms.em + high / Math.abs(entry.ms.charge);\n            similarityProcessor.setFromTo(from, to);\n        }\n        if (widthFunction) {\n            similarityProcessor.setTrapezoid(width.bottom, width.top);\n        }\n        similarityProcessor.setPeaks2([distribution.xs, distribution.ys]);\n        let result = similarityProcessor.getSimilarity();\n        result.extractInfo1.from = from;\n        result.extractInfo1.to = to;\n        if (result.similarity > minSimilarity) {\n            entry.ms.similarity = {\n                value: result.similarity,\n                experimental: result.extract1,\n                theoretical: result.extract2,\n                difference: result.diff,\n                experimentalInfo: result.extractInfo1,\n                thereoticalInfo: result.extractInfo2,\n                quantity: result.extractInfo1.sum / sumY,\n                factor: result.extractInfo1.max / result.extractInfo2.max, // by how much we should mulitply the extrat2 to reach the spectrum\n                width,\n            };\n        }\n    }\n    if (!options.flatten) {\n        for (let database of Object.keys(results)) {\n            results[database] = results[database]\n                .filter((entry) => entry.ms.similarity)\n                .sort((a, b) => b.ms.similarity.value - a.ms.similarity.value);\n            for (let entry of results[database]) {\n                flatEntries.push(entry);\n            }\n        }\n    }\n    else {\n        results = results\n            .filter((entry) => entry.ms.similarity)\n            .sort((a, b) => b.ms.similarity.value - a.ms.similarity.value);\n    }\n    return results;\n}\n//# sourceMappingURL=searchSimilarity.js.map","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport { median as default };\n","import median from 'ml-array-median';\nimport {\n  BaseRegression,\n  checkArrayLength,\n  maybeToPrecision,\n} from 'ml-regression-base';\n\nexport class TheilSenRegression extends BaseRegression {\n  /**\n   * Theil–Sen estimator\n   * https://en.wikipedia.org/wiki/Theil%E2%80%93Sen_estimator\n   * @param {Array<number>|boolean} x\n   * @param {Array<number>|object} y\n   * @constructor\n   */\n  constructor(x, y) {\n    super();\n    if (x === true) {\n      // loads the model\n      this.slope = y.slope;\n      this.intercept = y.intercept;\n      this.coefficients = y.coefficients;\n    } else {\n      // creates the model\n      checkArrayLength(x, y);\n      theilSen(this, x, y);\n    }\n  }\n\n  toJSON() {\n    return {\n      name: 'TheilSenRegression',\n      slope: this.slope,\n      intercept: this.intercept,\n    };\n  }\n\n  _predict(input) {\n    return this.slope * input + this.intercept;\n  }\n\n  computeX(input) {\n    return (input - this.intercept) / this.slope;\n  }\n\n  toString(precision) {\n    let result = 'f(x) = ';\n    if (this.slope) {\n      let xFactor = maybeToPrecision(this.slope, precision);\n      result += `${Math.abs(xFactor - 1) < 1e-5 ? '' : `${xFactor} * `}x`;\n      if (this.intercept) {\n        let absIntercept = Math.abs(this.intercept);\n        let operator = absIntercept === this.intercept ? '+' : '-';\n        result += ` ${operator} ${maybeToPrecision(absIntercept, precision)}`;\n      }\n    } else {\n      result += maybeToPrecision(this.intercept, precision);\n    }\n    return result;\n  }\n\n  toLaTeX(precision) {\n    return this.toString(precision);\n  }\n\n  static load(json) {\n    if (json.name !== 'TheilSenRegression') {\n      throw new TypeError('not a Theil-Sen model');\n    }\n    return new TheilSenRegression(true, json);\n  }\n}\n\nfunction theilSen(regression, x, y) {\n  let len = x.length;\n  let slopes = new Array(len * len);\n  let count = 0;\n  for (let i = 0; i < len; ++i) {\n    for (let j = i + 1; j < len; ++j) {\n      if (x[i] !== x[j]) {\n        slopes[count++] = (y[j] - y[i]) / (x[j] - x[i]);\n      }\n    }\n  }\n  slopes.length = count;\n  let medianSlope = median(slopes);\n\n  let cuts = new Array(len);\n  for (let i = 0; i < len; ++i) {\n    cuts[i] = y[i] - medianSlope * x[i];\n  }\n\n  regression.slope = medianSlope;\n  regression.intercept = median(cuts);\n  regression.coefficients = [regression.intercept, regression.slope];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massShifts = massShifts;\nconst ml_regression_theil_sen_1 = require(\"ml-regression-theil-sen\");\nconst ml_spectra_processing_1 = require(\"ml-spectra-processing\");\n/**\n * Calculates a function that allows post-calibration on mass spectra based on the error in assignment\n * @param {*} similarities\n * @param {object} [options={}]\n * @returns\n */\nfunction massShifts(similarities, options = {}) {\n    const { minSimilarity = 0.95, minLength = 10 } = options;\n    let results = [];\n    if (!Array.isArray(similarities)) {\n        for (let key of results) {\n            for (let entry of results[key]) {\n                results.push(entry);\n            }\n        }\n    }\n    else {\n        results = similarities;\n    }\n    results = results.filter((result) => result.ms &&\n        result.ms.similarity &&\n        result.ms.similarity.value > minSimilarity);\n    if (results.length < minLength) {\n        throw new Error(`X rescale can not be applied. We need at least ${minLength} peaks with over ${Math.round(minSimilarity * 100)}% similarity`);\n    }\n    const data = results\n        .map((result) => {\n        return {\n            em: result.ms.em,\n            delta: result.ms.delta,\n        };\n    })\n        .sort((a, b) => a.em - b.em);\n    let shifts = { x: [], y: [] };\n    for (const datum of data) {\n        shifts.x.push(Number(datum.em));\n        shifts.y.push(Number(datum.delta));\n    }\n    const regression = new ml_regression_theil_sen_1.TheilSenRegression(shifts.x, shifts.y);\n    let minX = (0, ml_spectra_processing_1.xMinValue)(shifts.x);\n    let maxX = (0, ml_spectra_processing_1.xMaxValue)(shifts.x);\n    let shiftsPPM = { x: shifts.x, y: [] };\n    for (const datum of data) {\n        shiftsPPM.y.push(Number((datum.delta / datum.em) * 1e6));\n    }\n    let regressionChart = { x: [], y: [] };\n    for (let i = minX; i < maxX; i += (maxX - minX) / 1000) {\n        regressionChart.x.push(i);\n        regressionChart.y.push(regression.predict(i));\n    }\n    return {\n        shifts,\n        shiftsPPM,\n        fit: regressionChart,\n        score: regression.score(shifts.x, shifts.y),\n        predictFct: regression.predict.bind(regression),\n        tex: regression.toLaTeX(3),\n        slope: regression.slope,\n        intercept: regression.intercept,\n        predictFctString: `${regression.slope} * mass + ${regression.intercept}`,\n    };\n}\n//# sourceMappingURL=massShifts.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchJSON = fetchJSON;\nasync function fetchJSON(url) {\n    const result = await fetch(url);\n    return result.json();\n}\n//# sourceMappingURL=fetchJSON.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EMDB = void 0;\nconst ms_spectrum_1 = require(\"ms-spectrum\");\nconst appendFragmentsInfo_js_1 = require(\"./append/appendFragmentsInfo.js\");\nconst fromArray_js_1 = require(\"./from/fromArray.js\");\nconst fromMolecules_js_1 = require(\"./from/fromMolecules.js\");\nconst fromNucleicSequence_js_1 = require(\"./from/fromNucleicSequence.js\");\nconst fromPeptidicSequence_js_1 = require(\"./from/fromPeptidicSequence.js\");\nconst fromRange_js_1 = require(\"./from/fromRange.js\");\nconst loadCommercials_js_1 = require(\"./loadCommercials.js\");\nconst loadGoogleSheet_js_1 = require(\"./loadGoogleSheet.js\");\nconst loadKnapSack_js_1 = require(\"./loadKnapSack.js\");\nconst search_js_1 = require(\"./search.js\");\nconst searchMSEM_js_1 = require(\"./searchMSEM.js\");\nconst searchSimilarity_js_1 = require(\"./searchSimilarity.js\");\n__exportStar(require(\"./massShifts.js\"), exports);\n__exportStar(require(\"./util/fetchJSON.js\"), exports);\n/**\n * A class that deals with database of monoisotopic mass and molecular formula\n */\nclass EMDB {\n    constructor() {\n        this.databases = {};\n        this.experimentalSpectrum = undefined;\n    }\n    /**\n     *\n     * @param {*} data\n     * @param {object} [options={}]\n     * @param {boolean} [options.normed=true] Should we normed (sum Y to 1) the experimental spectrum ?\n     * @param {number} [options.threshold=0.00025] Threshold used for peak picking\n     */\n    setExperimentalSpectrum(data, options = {}) {\n        const { normed = true, threshold = 0.00025 } = options;\n        this.experimentalSpectrum = new ms_spectrum_1.Spectrum(data, { threshold });\n        if (normed) {\n            this.experimentalSpectrum.normedY();\n        }\n        return this.experimentalSpectrum;\n    }\n    /**\n     * Add a new database using the KnapSack content\n     * @param {*} options\n     */\n    async loadKnapSack(options = {}) {\n        const { databaseName = 'knapSack', forceReload = false } = options;\n        if (this.databases[databaseName] && !forceReload)\n            return;\n        this.databases[databaseName] = await (0, loadKnapSack_js_1.loadKnapSack)();\n    }\n    /**\n     * Add a new database of 12000 commercial products\n     * @param {*} options\n     */\n    async loadCommercials(options = {}) {\n        const { databaseName = 'commercials', forceReload = false } = options;\n        if (this.databases[databaseName] && !forceReload)\n            return;\n        this.databases[databaseName] = await (0, loadCommercials_js_1.loadCommercials)();\n    }\n    get(databaseName) {\n        return this.databases[databaseName];\n    }\n    /**\n     * Load the contaminants database from a google sheet document\n     * @param {object} [options={}]\n     * @param {string} [options.databaseName='contaminants']\n     * @param {string} [options.forceReload=false]\n     */\n    async loadContaminants(options = {}) {\n        const { databaseName = 'contaminants', forceReload = false } = options;\n        if (this.databases[databaseName] && !forceReload)\n            return;\n        this.databases[databaseName] = await (0, loadGoogleSheet_js_1.loadGoogleSheet)();\n    }\n    /**\n     * Load a google sheet containing MF information\n     * @param {object} [options={}]\n     * @param {string} [options.databaseName='sheet']\n     * @param {string} [options.forceReload=false]\n     */\n    async loadGoogleSheet(options = {}) {\n        const { databaseName = 'sheet', forceReload = false } = options;\n        if (this.databases[databaseName] && !forceReload)\n            return;\n        this.databases[databaseName] = await (0, loadGoogleSheet_js_1.loadGoogleSheet)();\n    }\n    async loadTest() {\n        await this.fromArray(['C1-100'], {\n            databaseName: 'test',\n            ionizations: '+',\n        });\n    }\n    async loadNeutralTest(options = {}) {\n        const { maxC = 100 } = options;\n        await this.fromArray([`C1-${maxC}`], { databaseName: 'test' });\n    }\n    async fromMonoisotopicMass(mass, options = {}) {\n        const { databaseName = 'monoisotopic', append = false } = options;\n        let result = await (0, ms_spectrum_1.fromMonoisotopicMass)(mass, options);\n        replaceOrAppend(this, databaseName, result.mfs, append);\n        return result;\n    }\n    async fromArray(sequence, options = {}) {\n        const { databaseName = 'generated', append = false, estimate } = options;\n        const results = await (0, fromArray_js_1.fromArray)(sequence, options);\n        if (estimate)\n            return results;\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    async fromMolecules(entries, ocl, options = {}) {\n        const { databaseName = 'molecules', append = false } = options;\n        const results = await (0, fromMolecules_js_1.fromMolecules)(entries, ocl, options);\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    async fromRange(sequence, options = {}) {\n        const { databaseName = 'generated', append = false, estimate } = options;\n        const results = await (0, fromRange_js_1.fromRange)(sequence, options);\n        if (estimate)\n            return results;\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    async fromPeptidicSequence(sequence, options = {}) {\n        const { databaseName = 'peptidic', append = false, estimate } = options;\n        const results = await (0, fromPeptidicSequence_js_1.fromPeptidicSequence)(sequence, options);\n        if (estimate)\n            return results;\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    /**\n     *\n     * @param {string} databaseName\n     * @param {object} [options={}]\n     * @param {number} [options.precision=100]\n     * @param {string} [options.ionizations='']\n     * @returns\n     */\n    async appendFragmentsInfo(databaseName, options = {}) {\n        const database = this.databases[databaseName];\n        await (0, appendFragmentsInfo_js_1.appendFragmentsInfo)(this.experimentalSpectrum, database, options);\n        return database;\n    }\n    async fromNucleicSequence(sequence, options = {}) {\n        const { databaseName = 'nucleic', append = false, estimate } = options;\n        const results = await (0, fromNucleicSequence_js_1.fromNucleicSequence)(sequence, options);\n        if (estimate)\n            return results;\n        replaceOrAppend(this, databaseName, results, append);\n    }\n    listDatabases() {\n        return Object.keys(this.databases).sort();\n    }\n    getInfo() {\n        return {\n            databases: Object.keys(this.databases)\n                .sort()\n                .map((key) => {\n                return { name: key, nbEntries: this.databases[key].length };\n            }),\n        };\n    }\n    search(filter, options = {}) {\n        return (0, search_js_1.search)(this, filter, options);\n    }\n    searchMSEM(filter, options = {}) {\n        return (0, searchMSEM_js_1.searchMSEM)(this, filter, options);\n    }\n    searchSimilarity(options = {}) {\n        return (0, searchSimilarity_js_1.searchSimilarity)(this, options);\n    }\n}\nexports.EMDB = EMDB;\nfunction replaceOrAppend(emdb, databaseName, results, append = false) {\n    if (!emdb.databases[databaseName] || !append) {\n        emdb.databases[databaseName] = results;\n        return;\n    }\n    emdb.databases[databaseName] = emdb.databases[databaseName].concat(results);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.preprocessEARanges = preprocessEARanges;\nconst mf_parser_1 = require(\"mf-parser\");\nfunction preprocessEARanges(ranges, targetEA) {\n    ranges = structuredClone(ranges);\n    if (typeof ranges === 'string') {\n        // need to convert to ranges\n        let parsed = (0, mf_parser_1.parse)(ranges.replaceAll(/[\\t\\n\\r ]/g, ''));\n        let newRanges = [];\n        let current = {\n            mf: '',\n            min: 1,\n            max: 1,\n        };\n        // example ClBr2(CH2)0-2NO\n        // the idea is that has long as we don't have a range we don't really care\n        // there is a limitation is that the range has to be first level of parenthesis\n        let parenthesisLevel = 0;\n        let currentMF = ''; // start at an atom first level or a parenthesis\n        for (let item of parsed) {\n            switch (item.kind) {\n                case mf_parser_1.Kind.ATOM:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    currentMF += item.value;\n                    break;\n                case mf_parser_1.Kind.ISOTOPE:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF;\n                        currentMF = '';\n                    }\n                    currentMF += `[${item.value.isotope}${item.value.atom}]`;\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER:\n                    if (parenthesisLevel === 0 && currentMF) {\n                        current.mf += currentMF + item.value;\n                        currentMF = '';\n                    }\n                    else {\n                        currentMF += item.value;\n                    }\n                    break;\n                case mf_parser_1.Kind.MULTIPLIER_RANGE:\n                    if (parenthesisLevel !== 0) {\n                        throw new Error('Range multiplier can only be at the first level');\n                    }\n                    newRanges.push({\n                        mf: currentMF,\n                        min: item.value.from,\n                        max: item.value.to,\n                    });\n                    currentMF = '';\n                    break;\n                case mf_parser_1.Kind.OPENING_PARENTHESIS:\n                    parenthesisLevel++;\n                    currentMF += '(';\n                    break;\n                case mf_parser_1.Kind.CLOSING_PARENTHESIS:\n                    parenthesisLevel--;\n                    currentMF += ')';\n                    break;\n                default:\n                    throw new Error(`can not preprocess ${ranges}`);\n            }\n        }\n        if (currentMF) {\n            current.mf += currentMF;\n        }\n        if (current.mf) {\n            newRanges.push(current);\n        }\n        ranges = newRanges;\n    }\n    let possibilities = [];\n    for (let i = 0; i < ranges.length; i++) {\n        let range = ranges[i];\n        let min = range.min === undefined ? 0 : range.min;\n        let max = range.max === undefined ? 1 : range.max;\n        let possibility = {\n            mf: range.mf,\n            minCount: min, // value defined by the user\n            maxCount: max, // value defined by the user\n            targetEA: targetEA[range.mf],\n            mw: 0, // mw till this level\n            aw: 0, // atomic weight (mass * currentCount)\n            maxRatio: 0, // maximum ratio possible if all next elements are 0\n            currentValue: 0,\n            currentCount: min - 1,\n            currentUnsaturation: 0,\n            initialOrder: i,\n        };\n        possibilities.push(possibility);\n        let info = new mf_parser_1.MF(range.mf).getInfo();\n        possibility.mass = info.mass;\n        possibility.unsaturation =\n            range.unsaturation === undefined\n                ? (info.unsaturation - 1) * 2\n                : range.unsaturation;\n        if (possibility.mf !== info.mf)\n            possibility.isGroup = true;\n    }\n    possibilities = possibilities.filter((r) => r.minCount !== 0 || r.maxCount !== 0);\n    possibilities.sort((a, b) => {\n        return b.targetEA - a.targetEA;\n    });\n    return possibilities;\n}\n//# sourceMappingURL=preprocessEARanges.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfFromEA = mfFromEA;\nconst atom_sorter_1 = require(\"atom-sorter\");\nconst preprocessEARanges_1 = require(\"./preprocessEARanges\");\n/**\n * Returns possible combinations\n * @param {object} [targetEA]\n * @param {object} [options={}]\n * @param {string} [options.ranges='C0-100 H0-100 O0-100 N0-100'] - range of mfs to search\n * @param {number} [options.maxElementError=0.003]\n * @param {number} [options.maxTotalError=0.01]\n * @param {number} [options.minMW=0] minimal molecular weight\n * @param {number} [options.maxMW=+Infinity] maximal molecular weight\n * @param {object} [options.unsaturation={}]\n * @param {number} [options.unsaturation.min=-Infinity] Minimal unsaturation\n * @param {number} [options.unsaturation.max=+Infinity] Maximal unsaturation\n * @param {boolean} [options.unsaturation.onlyInteger=false] Integer unsaturation\n * @param {boolean} [options.unsaturation.onlyNonInteger=false] Non integer unsaturation\n * @return {Array<object>}\n */\nfunction mfFromEA(targetEA, options = {}) {\n    const { unsaturation = {}, maxIterations = 1e8, minMW = 0, maxMW = +Infinity, ranges = [\n        { mf: 'C', min: 0, max: 100 },\n        { mf: 'H', min: 0, max: 100 },\n        { mf: 'O', min: 0, max: 100 },\n        { mf: 'N', min: 0, max: 100 },\n    ], maxElementError = 0.003, maxTotalError = 0.01, } = options;\n    let filterUnsaturation = !!unsaturation;\n    // we calculate not the real unsaturation but the one before dividing by 2 + 1\n    let fakeMinUnsaturation = unsaturation.min === undefined\n        ? Number.MIN_SAFE_INTEGER\n        : (unsaturation.min - 1) * 2;\n    let fakeMaxUnsaturation = unsaturation.max === undefined\n        ? Number.MAX_SAFE_INTEGER\n        : (unsaturation.max - 1) * 2;\n    let results = {\n        mfs: [],\n        info: {\n            numberMFEvaluated: 0,\n            numberResults: 0,\n        },\n    };\n    let orderMapping = []; // used to sort the atoms\n    let possibilities = (0, preprocessEARanges_1.preprocessEARanges)(ranges, targetEA, maxElementError);\n    orderMapping = getOrderMapping(possibilities);\n    if (possibilities.length === 0)\n        return { mfs: [] };\n    let currentPosition = 0;\n    let currentAtom;\n    //  if (DEBUG) console.log('possibilities', possibilities.map((a) => `${a.mf + a.originalMinCount}-${a.originalMaxCount}`));\n    mfWhile: while (true) {\n        while (currentPosition < possibilities.length && currentPosition >= 0) {\n            let previousAtom = currentPosition === 0 ? { mw: 0 } : possibilities[currentPosition - 1];\n            currentAtom = possibilities[currentPosition];\n            if (currentAtom.currentCount < currentAtom.maxCount) {\n                currentAtom.currentCount++;\n                currentAtom.aw = currentAtom.mass * currentAtom.currentCount;\n                currentAtom.mw = currentAtom.aw + previousAtom.mw;\n                currentAtom.maxRatio = currentAtom.aw / currentAtom.mw;\n                // we should check if we can reach the target\n                if (currentAtom.targetEA &&\n                    currentAtom.aw / currentAtom.mw - currentAtom.targetEA <\n                        -maxElementError) {\n                    // we already don't have enough quantity of this element and it can only become worse\n                    continue;\n                }\n                if (currentPosition < possibilities.length - 1) {\n                    currentPosition++;\n                }\n                else {\n                    break;\n                }\n            }\n            else {\n                currentAtom.currentCount = currentAtom.minCount - 1;\n                currentPosition--;\n            }\n        }\n        if (currentPosition < 0) {\n            break;\n        }\n        if (results.info.numberMFEvaluated++ > maxIterations) {\n            throw new Error(`Iteration number is over the current maximum of: ${maxIterations}`);\n        }\n        if (filterUnsaturation) {\n            let unsaturationValue = 0;\n            for (const possibility of possibilities) {\n                unsaturationValue +=\n                    possibility.unsaturation * possibility.currentCount;\n            }\n            let isOdd = Math.abs(unsaturationValue % 2);\n            if ((unsaturation.onlyInteger && isOdd === 1) ||\n                (unsaturation.onlyNonInteger && isOdd === 0) ||\n                fakeMinUnsaturation > unsaturationValue ||\n                fakeMaxUnsaturation < unsaturationValue) {\n                continue;\n            }\n        }\n        let mw = currentAtom.mw;\n        if (mw < minMW || mw > maxMW)\n            continue;\n        let totalError = 0;\n        for (let i = 0; i < possibilities.length; i++) {\n            const possibility = possibilities[i];\n            let ratio = (possibility.mass * possibility.currentCount) / mw;\n            if (possibility.targetEA !== undefined) {\n                let error = Math.abs(possibility.targetEA - ratio);\n                if (error > maxElementError) {\n                    continue mfWhile;\n                }\n                totalError += error;\n            }\n            possibility.currentValue = ratio;\n        }\n        if (Number.isNaN(totalError) || totalError > maxTotalError)\n            continue;\n        results.mfs.push(getResult(possibilities, totalError, orderMapping));\n        results.info.numberResults++;\n    }\n    results.mfs.sort((a, b) => Math.abs(a.totalError) - Math.abs(b.totalError));\n    return results;\n}\nfunction getResult(possibilities, totalError, orderMapping) {\n    const result = { mf: '', totalError };\n    // we check that the first time we meet the ionization group it does not end\n    // in the final result\n    for (let i = 0; i < possibilities.length; i++) {\n        let possibility = possibilities[orderMapping[i]];\n        if (possibility.currentCount !== 0) {\n            if (possibility.isGroup) {\n                result.mf += `(${possibility.mf})`;\n                if (possibility.currentCount !== 1) {\n                    result.mf += possibility.currentCount;\n                }\n            }\n            else {\n                result.mf += possibility.mf;\n                if (possibility.currentCount !== 1) {\n                    result.mf += possibility.currentCount;\n                }\n            }\n        }\n        result.ea = possibilities.map((current) => ({\n            mf: current.mf,\n            value: current.currentValue,\n            expected: current.targetEA,\n            error: current.targetEA === undefined\n                ? undefined\n                : Math.abs(current.targetEA - current.currentValue),\n        }));\n    }\n    return result;\n}\nfunction getOrderMapping(possibilities) {\n    let mapping = possibilities.map((p, i) => ({ atom: p.mf, index: i }));\n    mapping.sort((a, b) => {\n        return (0, atom_sorter_1.atomSorter)(a.atom, b.atom);\n    });\n    return mapping.map((a) => a.index);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfFromAtomicRatio = mfFromAtomicRatio;\nconst mf_generator_1 = require(\"mf-generator\");\nconst mf_parser_1 = require(\"mf-parser\");\n/**\n * @typedef {object} AtomicRatioMF\n * @property {number} em\n * @property {number} mw\n * @property {string} mf\n * @property {Array<MFAtomicComposition>} mfAtomicComposition\n * @property {Array<AtomicRatio>} atomicRatios\n * @property {number} totalError\n */\n/**\n * @typedef {object} MFAtomicComposition\n * @property {string} element\n * @property {number} count\n * @property {number} theoretical\n * @property {number} experimental\n * @property {number} error\n */\n/**\n * @typedef {object} AtomicRatio\n * @property {string} element\n * @property {number} count\n * @property {number} theoretical\n */\n/**\n * Returns possible combinations\n * @param {object} [ratios]\n * @param {object} [options={}]\n * @param {string} [options.ranges='C0-10 H0-10 O0-10 N0-10'] - range of mfs to search\n * @param {number} [options.maxElementError=0.05]\n * @param {number} [options.maxTotalError=0.1]\n * @param {number} [options.minMW=0] minimal molecular weight\n * @param {number} [options.maxMW=+Infinity] maximal molecular weight\n * @param {object} [options.unsaturation={}]\n * @param {number} [options.unsaturation.min=-Infinity] Minimal unsaturation\n * @param {number} [options.unsaturation.max=+Infinity] Maximal unsaturation\n * @param {boolean} [options.unsaturation.onlyInteger=false] Integer unsaturation\n * @param {boolean} [options.unsaturation.onlyNonInteger=false] Non integer unsaturation\n * @return {Promise<AtomicRatioMF[]>}\n */\nasync function mfFromAtomicRatio(ratios, options = {}) {\n    const { unsaturation = {}, minMW = 0, maxMW = +Infinity, ranges = 'C0-10 H0-10 O0-10 N0-10', maxElementError = 0.05, maxTotalError = 0.1, } = options;\n    const elements = Object.keys(ratios);\n    const mfs = await (0, mf_generator_1.generateMFs)([ranges], {\n        limit: 1e7,\n        filter: {\n            minMW,\n            maxMW,\n            unsaturation,\n        },\n    });\n    let sumComposition = 0;\n    for (const element of elements) {\n        sumComposition += ratios[element];\n    }\n    const relativeComposition = {};\n    for (const element of elements) {\n        relativeComposition[element] = ratios[element] / sumComposition;\n    }\n    for (const mf of mfs) {\n        appendInfo(mf, elements);\n    }\n    const filteredMFs = [];\n    mfFor: for (const mf of mfs) {\n        if (mf.nbCompositionAtoms === 0) {\n            continue;\n        }\n        mf.totalError = 0;\n        const atomicRatios = [];\n        for (const element of elements) {\n            const error = mf.atomicRatio[element] - relativeComposition[element];\n            let absError = Math.abs(error);\n            if (absError > maxElementError) {\n                continue mfFor;\n            }\n            mf.totalError += absError;\n            atomicRatios.push({\n                element,\n                experimental: mf.atomicRatio[element],\n                count: mf.atoms[element] || 0,\n                theoretical: relativeComposition[element],\n                error,\n            });\n        }\n        if (mf.totalError > maxTotalError) {\n            continue;\n        }\n        filteredMFs.push({\n            em: mf.em,\n            mw: mf.mw,\n            mf: mf.mf,\n            mfAtomicComposition: getMFAtomicComposition(mf.atoms),\n            atomicRatios,\n            totalError: mf.totalError,\n        });\n    }\n    filteredMFs.sort((a, b) => Math.abs(a.totalError) - Math.abs(b.totalError));\n    return filteredMFs;\n}\nfunction getMFAtomicComposition(atoms) {\n    const nbAtoms = Object.values(atoms).reduce((acc, val) => acc + val, 0);\n    const composition = [];\n    for (const [element, count] of Object.entries(atoms)) {\n        composition.push({\n            element,\n            count,\n            theoretical: count / nbAtoms,\n        });\n    }\n    return composition;\n}\nfunction appendInfo(mf, elements) {\n    const mfInfo = new mf_parser_1.MF(mf.mf).getInfo();\n    let nbCompositionAtoms = 0;\n    for (const element of elements) {\n        nbCompositionAtoms += mfInfo.atoms[element] || 0;\n    }\n    mf.nbCompositionAtoms = nbCompositionAtoms;\n    mf.atomicRatio = {};\n    for (const element of elements) {\n        mf.atomicRatio[element] = (mfInfo.atoms[element] || 0) / nbCompositionAtoms;\n    }\n}\n//# sourceMappingURL=mfFromAtomicRatio.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendAllDBRefs = appendAllDBRefs;\nfunction appendAllDBRefs(object, allDBRefs) {\n    if (Array.isArray(object)) {\n        for (let item of object) {\n            appendAllDBRefs(item, allDBRefs);\n        }\n    }\n    else if (typeof object === 'object' && object !== null) {\n        if (object.$ref && object.$id) {\n            allDBRefs.push(object);\n        }\n        for (let key of Object.keys(object)) {\n            appendAllDBRefs(object[key], allDBRefs);\n        }\n    }\n}\n//# sourceMappingURL=appendAllDBRefs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.appendURLs = appendURLs;\nconst appendAllDBRefs_js_1 = require(\"./appendAllDBRefs.js\");\nasync function appendURLs(object, options = {}) {\n    const { collections, force = false } = options;\n    let allDBRefs = [];\n    (0, appendAllDBRefs_js_1.appendAllDBRefs)(object, allDBRefs);\n    if (collections) {\n        allDBRefs = allDBRefs.filter((dbRef) => collections.includes(dbRef.$ref));\n    }\n    if (!force) {\n        allDBRefs = allDBRefs.filter((dbRef) => !dbRef.url);\n    }\n    const unknowns = {};\n    for (const entry of allDBRefs) {\n        switch (entry.$ref) {\n            case 'compounds':\n                entry.url = `https://pubchem.ncbi.nlm.nih.gov/compound/${entry.$id}`;\n                break;\n            case 'pubmeds':\n                entry.url = `https://pubmed.ncbi.nlm.nih.gov/${entry.$id}`;\n                break;\n            case 'gnps':\n                entry.url = `https://gnps.ucsd.edu/ProteoSAFe/gnpslibraryspectrum.jsp?SpectrumID=${entry.$id}`;\n                break;\n            case 'patents':\n                entry.url = `https://pubchem.ncbi.nlm.nih.gov/patent/${entry.$id}`;\n                break;\n            case 'bioassays':\n                entry.url = `https://pubchem.ncbi.nlm.nih.gov/bioassay/${entry.$id.replace(/.*_/, '')}`;\n                break;\n            case 'npasses':\n                entry.url = `http://bidd.group/NPASS/compound.php?compoundID=${entry.$id}`;\n                break;\n            case 'cmaups':\n                entry.url = `http://bidd.group/CMAUP/ingredient.php?ingredient=${entry.$id}`;\n                break;\n            case 'coconuts':\n                entry.url = `https://coconut.naturalproducts.net/compound/coconut_id/${entry.$id}`;\n                break;\n            case 'lotuses':\n                entry.url = `https://lotus.naturalproducts.net/compound/lotus_id/${entry.$id}`;\n                break;\n            case 'npAtlases':\n                entry.url = `https://www.npatlas.org/explore/compounds/${entry.$id}`;\n                break;\n            case 'massBank':\n                entry.url = `https://massbank.eu/MassBank/RecordDisplay?id=${entry.$id}`;\n                break;\n            default:\n                unknowns[entry.$ref] = true;\n                break;\n        }\n    }\n    if (Object.keys(unknowns).length > 0) {\n        // eslint-disable-next-line no-console\n        console.error('Unknown url to original data for the following collections:', unknowns);\n    }\n}\n//# sourceMappingURL=appendURLs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fetchJSON = fetchJSON;\nasync function fetchJSON(url, data) {\n    if (data) {\n        try {\n            const searchParams = new URLSearchParams(data);\n            const result = await fetch(`${url}?${searchParams.toString()}`);\n            return result.json();\n        }\n        catch {\n            const searchParams = new URLSearchParams(data);\n            const result = await fetch(`${url}?${searchParams.toString()}`);\n            return result.json();\n        }\n    }\n    else {\n        const result = await fetch(url);\n        return result.json();\n    }\n}\n//# sourceMappingURL=fetchJSON.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.postFetchJSON = postFetchJSON;\nasync function postFetchJSON(url, data = {}) {\n    const formData = new FormData();\n    for (const name in data) {\n        formData.append(name, data[name]);\n    }\n    const result = await fetch(url, {\n        method: 'POST',\n        body: formData,\n    });\n    return result.json();\n}\n//# sourceMappingURL=postFetchJSON.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.includeDBRefs = includeDBRefs;\nconst appendAllDBRefs_js_1 = require(\"./appendAllDBRefs.js\");\nconst postFetchJSON_js_1 = require(\"./postFetchJSON.js\");\n/**\n * Load the DBrefs and create a new property `data` for each DBRef\n * @param {any} object\n * @param {object} [options={}]\n * @param {string[]} [options.collections] - List of collections to include\n * @param {string[]} [options.excludedCollections] - List of collections to include\n * @param {boolean} [options.force=false] - Force the inclusion of the data even if it is already present\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n */\nasync function includeDBRefs(object, options = {}) {\n    const { collections, excludedCollections, force = false, baseURL = 'https://octochemdb.cheminfo.org/', } = options;\n    let allDBRefs = [];\n    (0, appendAllDBRefs_js_1.appendAllDBRefs)(object, allDBRefs);\n    if (collections) {\n        allDBRefs = allDBRefs.filter((dbRef) => collections.includes(dbRef.$ref));\n    }\n    if (excludedCollections) {\n        allDBRefs = allDBRefs.filter((dbRef) => !excludedCollections.includes(dbRef.$ref));\n    }\n    if (!force) {\n        allDBRefs = allDBRefs.filter((dbRef) => !dbRef.data);\n    }\n    const groups = groupsByCollection(allDBRefs);\n    const promises = [];\n    for (const [collection, entries] of Object.entries(groups)) {\n        promises.push(addDataForOneCollection(collection, baseURL, entries));\n    }\n    await Promise.allSettled(promises);\n}\nasync function addDataForOneCollection(collection, baseURL, entries) {\n    const url = new URL(`${collection}/v1/ids`, baseURL).toString();\n    const searchParams = {};\n    searchParams.ids = entries.map((entry) => entry.$id).join(',');\n    const data = {};\n    const result = await (0, postFetchJSON_js_1.postFetchJSON)(url, searchParams);\n    if (!result.data) {\n        throw new Error(`No data for ${url}`);\n    }\n    for (const entry of result.data) {\n        data[entry._id] = entry.data;\n    }\n    for (let datum of entries) {\n        datum.data = data[datum.$id];\n    }\n}\nfunction groupsByCollection(allDBRefs) {\n    const groups = {};\n    for (let dbRef of allDBRefs) {\n        if (!groups[dbRef.$ref])\n            groups[dbRef.$ref] = [];\n        groups[dbRef.$ref].push(dbRef);\n    }\n    return groups;\n}\n//# sourceMappingURL=includeDBRefs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeActivities = normalizeActivities;\n/**\n * @description This function normalizes the activities of an entry of ActivesOrNaturals collection.\n * @param {Object} activeOrNatural - an entry of ActivesOrNaturals collection\n * @returns - ActiveOrNatural entry with normalized activities\n */\nfunction normalizeActivities(activeOrNatural) {\n    activeOrNatural = { ...activeOrNatural };\n    let activities = [];\n    for (let activity of activeOrNatural.data.activities) {\n        if (activity?.data?.activities !== undefined) {\n            for (let activityEntry of activity.data.activities) {\n                let normalizedActivity = {\n                    $ref: activity.$ref,\n                    $id: activity.$id,\n                    data: {\n                        assay: activityEntry.assay,\n                        ocl: activity.data.ocl,\n                    },\n                    url: activity.url,\n                };\n                if (activityEntry?.targetTaxonomies !== undefined) {\n                    normalizedActivity.data.targetTaxonomies = [\n                        activityEntry.targetTaxonomies,\n                    ];\n                }\n                activities.push(normalizedActivity);\n            }\n        }\n        else {\n            activities.push(activity);\n        }\n    }\n    activeOrNatural.data.activities = activities;\n    return activeOrNatural;\n}\n//# sourceMappingURL=normalizeActivities.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.activeOrNaturalDetails = activeOrNaturalDetails;\nconst appendURLs_js_1 = require(\"./utils/appendURLs.js\");\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\nconst includeDBRefs_js_1 = require(\"./utils/includeDBRefs.js\");\nconst normalizeActivities_js_1 = require(\"./utils/normalizeActivities.js\");\n/**\n * Search for a specific natural or active compound using its ID\n * @param {object} [options={}]\n * @param {string} [options.fields='_id,data'] - List of fields to retrieve\n * @param {string} [options.route='activesOrNaturals/v1/id'] - URL of the webservice\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n */\nasync function activeOrNaturalDetails(id, options = {}) {\n    const { route = 'activesOrNaturals/v1/id', baseURL = 'https://octochemdb.cheminfo.org/', fields = '_id,data', } = options;\n    const activeOrNatural = await fetchActiveOrNatural(id, {\n        url: new URL(route, baseURL).toString(),\n        fields,\n    });\n    await (0, includeDBRefs_js_1.includeDBRefs)(activeOrNatural, { baseURL });\n    ensureArray(activeOrNatural);\n    (0, appendURLs_js_1.appendURLs)(activeOrNatural);\n    (0, normalizeActivities_js_1.normalizeActivities)(activeOrNatural);\n    return activeOrNatural;\n}\nfunction ensureArray(activeOrNatural) {\n    if (!activeOrNatural.data.activities) {\n        activeOrNatural.data.activities = [];\n    }\n    if (!activeOrNatural.data.pubmeds) {\n        activeOrNatural.data.pubmeds = [];\n    }\n    if (!activeOrNatural.data.patents) {\n        activeOrNatural.data.patents = [];\n    }\n    if (!activeOrNatural.data.taxonomies) {\n        activeOrNatural.data.taxonomies = [];\n    }\n}\nasync function fetchActiveOrNatural(id, options) {\n    const { fields, url } = options;\n    const searchParams = {};\n    searchParams.id = id;\n    if (fields) {\n        searchParams.fields = fields;\n    }\n    const results = await (0, fetchJSON_js_1.fetchJSON)(url, searchParams);\n    return results.data;\n}\n//# sourceMappingURL=activeOrNaturalDetails.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseMasses = parseMasses;\nfunction parseMasses(masses) {\n    if (!masses)\n        return [];\n    if (Array.isArray(masses))\n        return masses;\n    if (typeof masses === 'number') {\n        return [masses];\n    }\n    if (typeof masses === 'string') {\n        return masses\n            .split(/[\\t\\n\\r ,;]+/)\n            .filter(Boolean)\n            .map(Number);\n    }\n    throw new Error('Cannot parse masses');\n}\n//# sourceMappingURL=parseMasses.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAllowedEMs = getAllowedEMs;\nconst mf_finder_1 = require(\"mf-finder\");\nasync function getAllowedEMs(options) {\n    const { ranges, masses, precision, ionizations } = options;\n    if (!ranges)\n        return;\n    const allowedEMs = [];\n    for (let mass of masses) {\n        const { mfs } = await (0, mf_finder_1.findMFs)(mass, {\n            ionizations,\n            precision,\n            ranges,\n            limit: 100000,\n        });\n        for (const mf of mfs) {\n            allowedEMs.push(mf.em);\n        }\n    }\n    return Float64Array.from(allowedEMs).sort();\n}\n//# sourceMappingURL=getAllowedEMs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchWithIonizations = searchWithIonizations;\nconst chemical_elements_1 = require(\"chemical-elements\");\nconst mf_parser_1 = require(\"mf-parser\");\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst fetchJSON_js_1 = require(\"./fetchJSON.js\");\nconst getAllowedEMs_js_1 = require(\"./getAllowedEMs.js\");\nconst parseMasses_js_1 = require(\"./parseMasses.js\");\nasync function searchWithIonizations(options) {\n    const { realURL, fields, precision = 100, limit = 1000, searchParams = {}, ranges, } = options;\n    searchParams.precision = String(precision);\n    searchParams.limit = String(limit);\n    if (fields)\n        searchParams.fields = fields;\n    let ionizations = (0, mf_utilities_1.preprocessIonizations)(options.ionizations);\n    const masses = (0, parseMasses_js_1.parseMasses)(options.masses || [0]);\n    // if we have ranges we need to filter the allowed EMs\n    const allowedEMs = await (0, getAllowedEMs_js_1.getAllowedEMs)({\n        ranges,\n        masses,\n        precision,\n        ionizations,\n    });\n    const promises = [];\n    for (let ionization of ionizations) {\n        for (let mass of masses) {\n            if (mass !== 0) {\n                const realMass = mass * Math.abs(ionization.charge || 1) -\n                    ionization.em +\n                    chemical_elements_1.ELECTRON_MASS * ionization.charge;\n                searchParams.em = String(realMass);\n            }\n            promises.push((0, fetchJSON_js_1.fetchJSON)(realURL, searchParams));\n        }\n    }\n    const results = await Promise.all(promises);\n    const entries = [];\n    let counter = 0;\n    for (const result of results) {\n        const ionization = ionizations[Math.floor(counter / masses.length)];\n        const targetMass = masses[counter % masses.length];\n        counter++;\n        for (const entry of result.data) {\n            if (allowedEMs &&\n                !allowedEMs.some((em) => Math.abs(em - entry.data.em) < 0.0000001)) {\n                continue;\n            }\n            try {\n                entry.mfInfo = new mf_parser_1.MF(entry.data?.mf || entry._id).getInfo({\n                    emFieldName: 'em',\n                    msemFieldName: 'msem',\n                });\n                entry.ionization = ionization;\n                entry.ms = (0, mf_utilities_1.getMsInfo)(entry.mfInfo, {\n                    targetMass,\n                    ionization,\n                }).ms;\n                entries.push(entry);\n            }\n            catch (error) {\n                // eslint-disable-next-line no-console\n                console.warn(`${error}`);\n            }\n        }\n    }\n    if (entries.length > limit) {\n        entries.length = limit;\n    }\n    return entries;\n}\n//# sourceMappingURL=searchWithIonizations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.activesOrNaturals = activesOrNaturals;\nconst appendURLs_js_1 = require(\"./utils/appendURLs.js\");\nconst includeDBRefs_js_1 = require(\"./utils/includeDBRefs.js\");\nconst parseMasses_js_1 = require(\"./utils/parseMasses.js\");\nconst searchWithIonizations_js_1 = require(\"./utils/searchWithIonizations.js\");\n/**\n * Search for natural or active compounds using various criteria\n * @param {object} [options={}]\n * @param {number|string|number[]} [options.masses] - Observed monoisotopic mass\n * @param {string} [options.noStereoTautomerID=''] - ID of the compound to search from the results\n * @param {string} [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {string} [options.ranges=''] - Allows to filter by a range of molecular formula\n * @param {string} [options.mf=''] - Search by molecular formula\n * @param {number} [options.precision=1000] - Precision of the monoisotopic mass in ppm\n * @param {string} [options.fields] - List of fields to retrieve\n * @param {string} [options.kwTaxonomies=''] - Comma separated list of taxonomies family, genus or species of the product source\n * @param {string} [options.kwActiveAgainst=''] - Comma separated list of taxonomies family, genus or species of the bioactivity target\n * @param {string} [options.kwBioassays=''] - Comma separated list of keyword from the description of the bioassay\n * @param {string} [options.kwMeshTerms=''] - Comma separated list of keyword from the medline MeshTerms\n * @param {string} [options.kwTitles=''] - Comma separated list of keyword from the compound title\n * @param {string} [options.minNbMassSpectra] - Minimal number of mass spectra\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {string} [options.route='activesOrNaturals/v1/search'] - Route to this specific webservice\n * @param {string[]|undefined} [options.includes] - Array of DBref collections to include\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - Base URL of the webservice\n */\nasync function activesOrNaturals(options = {}) {\n    const { route = 'activesOrNaturals/v1/search', baseURL = 'https://octochemdb.cheminfo.org/', includes, } = options;\n    const realURL = new URL(route, baseURL).toString();\n    const searchParams = prepareSearchParams(options);\n    const masses = (0, parseMasses_js_1.parseMasses)(options.masses || [0]);\n    const entries = await (0, searchWithIonizations_js_1.searchWithIonizations)({\n        ...options,\n        masses,\n        realURL,\n        searchParams,\n    });\n    if (options.includes) {\n        await (0, includeDBRefs_js_1.includeDBRefs)(entries, { baseURL, collections: includes });\n    }\n    (0, appendURLs_js_1.appendURLs)(entries);\n    entries.sort((a, b) => {\n        if (a.data.nbMassSpectra > b.data.nbMassSpectra)\n            return -1;\n        if (a.data.nbMassSpectra < b.data.nbMassSpectra)\n            return 1;\n        if (a.data.nbPubmeds > b.data.nbPubmeds)\n            return -1;\n        if (a.data.nbPubmeds < b.data.nbPubmeds)\n            return 1;\n        if (a.data.nbPatents > b.data.nbPatents)\n            return -1;\n        if (a.data.nbPatents < b.data.nbPatents)\n            return 1;\n        return 0;\n    });\n    return entries;\n}\nfunction prepareSearchParams(options) {\n    const { noStereoTautomerID, kwTaxonomies, kwActiveAgainst, kwBioassays, kwMeshTerms, kwTitles, mf, minNbMassSpectra, } = options;\n    const searchParams = {};\n    if (noStereoTautomerID) {\n        searchParams.noStereoTautomerID = noStereoTautomerID;\n    }\n    if (kwTaxonomies) {\n        searchParams.kwTaxonomies = kwTaxonomies;\n    }\n    if (kwActiveAgainst) {\n        searchParams.kwActiveAgainst = kwActiveAgainst;\n    }\n    if (kwBioassays) {\n        searchParams.kwBioassays = kwBioassays;\n    }\n    if (kwMeshTerms) {\n        searchParams.kwMeshTerms = kwMeshTerms;\n    }\n    if (kwTitles) {\n        searchParams.kwTitles = kwTitles;\n    }\n    if (mf) {\n        searchParams.mf = mf;\n    }\n    if (minNbMassSpectra) {\n        searchParams.minNbMassSpectra = minNbMassSpectra;\n    }\n    return searchParams;\n}\n//# sourceMappingURL=activesOrNaturals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.activesOrNaturalsByMF = activesOrNaturalsByMF;\nconst activesOrNaturals_js_1 = require(\"./activesOrNaturals.js\");\n/**\n * Search for natural or active compounds and group them by molecular formula\n * @param {object} [options={}]\n * @param {number|string|number[]} [options.masses] - Observed monoisotopic mass\n * @param {string} [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {string} [options.ranges=''] - Allows to filter by a range of molecular formula\n * @param {number} [options.precision=1000] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {string} [options.fields='data.noStereoOcl,data.em,data.mf'] - List of fields to retrieve\n * @param {string} [options.kwTaxonomies=''] - Comma separated list of taxonomies family, genus or species of the product source\n * @param {string} [options.kwActiveAgainst=''] - Comma separated list of taxonomies family, genus or species of the bioactivity target\n * @param {string} [options.kwBioassays=''] - Comma separated list of keyword from the description of the bioassay\n * @param {string} [options.kwMeshTerms=''] - Comma separated list of keyword from the medline MeshTerms\n * @param {string} [options.kwTitles=''] - Comma separated list of keyword from compound title\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {string} [options.route='activesOrNaturals/v1/search'] - URL of the webservice\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n */\nasync function activesOrNaturalsByMF(options = {}) {\n    const fields = 'data.noStereoOcl,data.mf,data.em,data.nbPatents,data.nbPubmeds,data.nbActivities,data.bioactive,data.nbMassSpectra,data.naturalProduct'.split(',');\n    if (options.fields)\n        fields.push(...options.fields.split(/[ ,]+/));\n    const entries = await (0, activesOrNaturals_js_1.activesOrNaturals)({\n        ...options,\n        fields: fields.join(','),\n    });\n    // we will now group the data per mf\n    const grouped = {};\n    for (const entry of entries) {\n        if (!grouped[entry.data.mf]) {\n            grouped[entry.data.mf] = {\n                mfInfo: entry.mfInfo,\n                ms: entry.ms,\n                ionization: entry.ionization,\n                nbNaturals: 0,\n                nbBioactives: 0,\n                nbPatents: 0,\n                nbPubmeds: 0,\n                nbMassSpectra: 0,\n            };\n        }\n        const currentGroup = grouped[entry.data.mf];\n        if (entry.data.naturalProduct)\n            currentGroup.nbNaturals++;\n        if (entry.data.bioactive)\n            currentGroup.nbBioactives++;\n        if (entry.data.nbMassSpectra) {\n            currentGroup.nbMassSpectra += entry.data.nbMassSpectra;\n        }\n        if (entry.data.nbPubmeds)\n            currentGroup.nbPubmeds += entry.data.nbPubmeds;\n        if (entry.data.nbPatents)\n            currentGroup.nbPatents += entry.data.nbPatents;\n    }\n    const groupedArray = Object.keys(grouped).map((key) => grouped[key]);\n    // because we can combine many ionizations we should resort the data\n    groupedArray.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n    return groupedArray;\n}\n//# sourceMappingURL=activesOrNaturalsByMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compoundsFromMF = compoundsFromMF;\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\nconst postFetchJSON_js_1 = require(\"./utils/postFetchJSON.js\");\n/**\n * Retrieve a list of molecular formulas from one or many monoisotopic mass that are present in pubchem compound.\n * in the database and a monoisotopic mass.\n * @param {string} mf - Observed monoisotopic mass\n * @param {object} [options={}]\n * @param {string} [options.fields] - Fields to retrieve from the database\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {string} [options.route='mfs/v1/fromMF'] - URL of the webservice\n * @param {string} [options.titleCompoundsURL='titleCompounds/v1/ids'] - URL of the webservice\n * @param {number} [options.limit=50000] - Maximal number of entries to return\n */\nasync function compoundsFromMF(mf, options = {}) {\n    const { route = 'compounds/v1/fromMF', baseURL = 'https://octochemdb.cheminfo.org/', limit = 50000, fields = 'data.ocl.idCode,data.ocl.index,data.iupac', } = options;\n    const searchParams = {\n        limit,\n        fields,\n        mf,\n    };\n    const realURL = new URL(route, baseURL).toString();\n    const { data } = await (0, fetchJSON_js_1.fetchJSON)(realURL, searchParams);\n    const ids = data.map((datum) => datum._id);\n    const titles = await getTitles(ids, options);\n    for (const datum of data) {\n        if (titles[datum._id])\n            datum.data.title = titles[datum._id];\n    }\n    data.sort((a, b) => (a.data.title?.length || Number.MAX_SAFE_INTEGER) -\n        (b.data.title?.length || Number.MAX_SAFE_INTEGER));\n    return data;\n}\nasync function getTitles(ids, options) {\n    let { titleCompoundsURL = 'titleCompounds/v1/ids', baseURL = 'https://octochemdb.cheminfo.org/', } = options;\n    if (process.env.NODE_ENV === 'test') {\n        baseURL = 'https://octochemdb.cheminfo.org/';\n    }\n    const titlesURL = new URL(titleCompoundsURL, baseURL).toString();\n    const { data: titlesArray } = await (0, postFetchJSON_js_1.postFetchJSON)(titlesURL, { ids });\n    const titles = {};\n    for (const entry of titlesArray) {\n        if (entry.data.title.match(/CID /))\n            continue;\n        titles[entry._id] = entry.data.title;\n    }\n    return titles;\n}\n//# sourceMappingURL=compoundsFromMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchMasses = searchMasses;\nconst mf_utilities_1 = require(\"mf-utilities\");\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\nconst parseMasses_js_1 = require(\"./utils/parseMasses.js\");\n/**\n *\n * @param {object} [options={}]\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {number|string|number[]} [options.masses] - Observed fragment masses\n * @param {string} [options.mf] - Molecular formula of the non ionized molecule (not available for inSilicoFragments)\n * @param {number} [options.precision=100] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {string} [options.modifications=''] - Comma separated list of allowed modifications\n * @param {string} [options.route='massBank/v1/search'] - Route to use\n * @param {string} [options.link='https://massbank.eu/MassBank/RecordDisplay?id='] - Link to the database source\n */\nasync function searchMasses(options = {}) {\n    const { route = 'massBank/v1/search', baseURL = 'https://octochemdb.cheminfo.org/', precision = 100, limit = 1000, mf = '', link = '', } = options;\n    if (route === '') {\n        throw new Error('route is mandatory');\n    }\n    const realURL = new URL(route, baseURL).toString();\n    const masses = (0, parseMasses_js_1.parseMasses)(options.masses);\n    const modifications = (0, mf_utilities_1.preprocessIonizations)(options.modifications);\n    const allResults = [];\n    for (let modification of modifications) {\n        const massShift = modification.em;\n        const searchParams = {\n            masses: masses.map((mass) => mass + massShift).join(','),\n            precision,\n            limit,\n            mf,\n        };\n        const { data: results } = await (0, fetchJSON_js_1.fetchJSON)(realURL, searchParams);\n        for (const result of results) {\n            const modifiedResult = {\n                ...result,\n                modification,\n            };\n            if (link !== '') {\n                modifiedResult.url = link + result._id;\n            }\n            allResults.push(modifiedResult);\n        }\n    }\n    return allResults;\n}\n//# sourceMappingURL=searchMasses.js.map","\"use strict\";\n/**\n * This method will retrieve similar mass spectra\n * @param {object} [options={}]\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {number|string|number[]} [options.masses] - Observed monoisotopic mass\n * @param {number} [options.precision=1000] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {string} [options.modifications=''] - Comma\n * @param {('massBank'|'gnps'|'inSilicoFragments')[]} [options.databases=['massBank','gnps']] - List of databases to search for mass spectra\n * @param {object} [options.routes] - Object that contains the routes to use for each database\n * @param {boolean} [options.uniqueMolecules=true] - If true, only one molecule per entry is returned\n * @param {object} [options.similarity={}]\n * @param {number} [options.similarity.nbPeaks=5] - Number of peaks to use for the similarity\n * @param {number} [options.similarity.massPower=1] - Power to use for the mass\n * @param {number} [options.similarity.minSimilarity=0.2] - Minimal similarity to return\n * @param {number} [options.similarity.intensityPower=0.6] - Power to use for the intensity\n * @param {number} [options.similarity.minNbCommonPeaks=0] - Minimal number of common peaks\n * @param {{x:number[],y:number[]}} [options.similarity.experimental=[]] - Experimental mass spectra to compare to\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.massSpectra = massSpectra;\nconst ms_spectrum_1 = require(\"ms-spectrum\");\nconst searchMasses_js_1 = require(\"./searchMasses.js\");\nconst defaultRoutes = [\n    {\n        name: 'massBank',\n        url: 'https://octochemdb.cheminfo.org/massBank/v1/search',\n        link: 'https://massbank.eu/MassBank/RecordDisplay?id=',\n    },\n    {\n        name: 'gnps',\n        url: 'https://octochemdb.cheminfo.org/gnps/v1/search',\n        link: 'https://gnps.ucsd.edu/ProteoSAFe/gnpslibraryspectrum.jsp?SpectrumID=',\n    },\n    {\n        name: 'inSilicoFragments',\n        url: 'https://octochemdb.cheminfo.org/inSilicoFragments/v1/search',\n    },\n];\nasync function massSpectra(options = {}) {\n    const { uniqueMolecules = true, databases = ['massBank', 'gnps'], routes = defaultRoutes, } = options;\n    const promises = [];\n    for (const route of routes) {\n        if (databases && databases.includes(route.name)) {\n            promises.push((0, searchMasses_js_1.searchMasses)({\n                ...options,\n                route: route.url,\n                link: route.link,\n            }).then((entries) => entries.map((entry) => ({ ...entry, database: route.name }))));\n        }\n    }\n    const allResults = await Promise.all(promises);\n    let results = allResults.flat();\n    results = appendAndFilterSimilarity(results, options);\n    if (uniqueMolecules) {\n        results = uniqueMol(results);\n    }\n    return results;\n}\nfunction uniqueMol(results) {\n    const unique = {};\n    for (const result of results) {\n        if (!result.data?.ocl?.idCode)\n            continue;\n        if (!unique[result.data.ocl.idCode]) {\n            unique[result.data.ocl.idCode] = result;\n        }\n    }\n    return Object.values(unique);\n}\nfunction appendAndFilterSimilarity(results, options = {}) {\n    const { similarity } = options;\n    if (!similarity || !similarity.experimental)\n        return results;\n    const { experimental, nbPeaks = 5, massPower = 1, minSimilarity = 0.2, intensityPower = 0.6, minNbCommonPeaks = 0, } = similarity;\n    const precision = Number(options.precision) / 1e6;\n    const comparator = new ms_spectrum_1.MSComparator({\n        nbPeaks,\n        massPower,\n        intensityPower,\n        delta: (mass) => mass * precision,\n        minNbCommonPeaks,\n    });\n    for (const result of results) {\n        result.similarity = comparator.getSimilarity(experimental, structuredClone(result.data.spectrum.data));\n    }\n    results = results.filter((a) => a.similarity.cosine >= minSimilarity);\n    results.sort((a, b) => b.similarity.cosine - a.similarity.cosine);\n    return results;\n}\n//# sourceMappingURL=massSpectra.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mfsFromEMs = mfsFromEMs;\nconst searchWithIonizations_js_1 = require(\"./utils/searchWithIonizations.js\");\n/**\n * Retrieve a list of molecular formulas from one or many monoisotopic mass that are present in pubchem compound.\n * in the database and a monoisotopic mass.\n * @param {number|string|number[]} masses - Observed monoisotopic mass\n * @param {object} [options={}]\n * @param {string} [options.ionizations=''] - string containing a comma separated list of modifications\n * @param {number} [options.precision=1000] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {string} [options.ranges=''] - Range of allowed molecular formula\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {number} [options.minCount=5] - Minimal number of molecules having a specific MF\n * @param {number} [options.fields] - Fields to retrieve from the database\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {string} [options.route='mfs/v1/fromEM'] - URL of the webservice\n * @param {string} [options.compoundsURL='mfs/v1/fromMF'] - URL to retrieve corresponding compounds\n */\nasync function mfsFromEMs(masses, options = {}) {\n    const { route = 'mfs/v1/fromEM', compoundsURL = 'compounds/v1/fromMF', baseURL = 'https://octochemdb.cheminfo.org/', minCount = 5, } = options;\n    const realURL = new URL(route, baseURL).toString();\n    const searchParams = {};\n    searchParams.minCount = String(minCount);\n    const entries = await (0, searchWithIonizations_js_1.searchWithIonizations)({\n        ...options,\n        masses,\n        realURL,\n        searchParams,\n    });\n    const realCompoundsURL = new URL(compoundsURL, baseURL).toString();\n    const searchParamsCompounds = new URLSearchParams();\n    for (const entry of entries) {\n        searchParamsCompounds.set('mf', String(entry._id));\n        entry.compoundsURL = `${realCompoundsURL}?${searchParamsCompounds.toString()}`;\n    }\n    // because we can combine many ionizations we should resort the data\n    entries.sort((a, b) => Math.abs(a.ms.ppm) - Math.abs(b.ms.ppm));\n    return entries;\n}\n//# sourceMappingURL=mfsFromEMs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pubmedCompounds = pubmedCompounds;\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\nconst includeDBRefs_js_1 = require(\"./utils/includeDBRefs.js\");\n/**\n * Retrieve the compounds from a pubmedID\n * @param {string} pubmedID\n * @param {object} [options={}]\n * @param {string} [options.route='pubmeds/v1/id'] - relative URL of the webservice\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @returns\n */\nasync function pubmedCompounds(pubmedID, options = {}) {\n    const { route = 'pubmeds/v1/id', baseURL = 'https://octochemdb.cheminfo.org/', limit = 1000, } = options;\n    const realURL = new URL(route, baseURL).toString();\n    const searchParams = {\n        id: pubmedID,\n        fields: 'data.compounds',\n        limit,\n    };\n    const { data: results } = await (0, fetchJSON_js_1.fetchJSON)(realURL, searchParams);\n    await (0, includeDBRefs_js_1.includeDBRefs)(results, { baseURL });\n    return results.data.compounds;\n}\n//# sourceMappingURL=pubmedCompounds.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchInSilicoSpectraByMF = searchInSilicoSpectraByMF;\nconst ms_spectrum_1 = require(\"ms-spectrum\");\nconst fetchJSON_js_1 = require(\"./utils/fetchJSON.js\");\n/**\n * @param {object} spectrum - The experimental spectrum to compare to\n * @param {string} mf - Molecular formula of the non ionized molecule\n * @param {object} [options={}]\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {string} [options.mf] - Molecular formula of the non ionized molecule (not available for inSilicoFragments)\n * @param {number} [options.precision=100] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {number} [options.massPower=1000] - Maximal number of entries to return\n * @param {number} [options.massPower=3] - High power will give more weight to the mass. If you would prefer to observe fragments you should use a number less than 1\n * @param {number} [options.intensityPower=0.6] - How important is the intensity. By default we don't give to much importance to it\n * @param {string} [options.route='inSilicoFragments/v1/search'] - Route to use\n */\nasync function searchInSilicoSpectraByMF(spectrum, mf, options = {}) {\n    const { route = 'inSilicoFragments/v1/search', baseURL = 'https://octochemdb.cheminfo.org/', precision = 100, limit = 1000, massPower = 3, intensityPower = 0.6, } = options;\n    if (!route) {\n        throw new Error('route is mandatory');\n    }\n    if (!mf) {\n        throw new Error('mf is mandatory');\n    }\n    const realURL = new URL(route, baseURL).toString();\n    const searchParams = {\n        limit,\n        mf,\n    };\n    const { data: results } = await (0, fetchJSON_js_1.fetchJSON)(realURL, searchParams);\n    const msComparator = new ms_spectrum_1.MSComparator({\n        delta: (mass) => mass * 1e-6 * precision,\n        massPower,\n        intensityPower,\n    });\n    const finals = [];\n    for (const result of results) {\n        const similarity = msComparator.getSimilarityToMasses(spectrum, result.data.spectrum.data.x);\n        if (similarity.cosine > 0) {\n            finals.push({\n                ...result,\n                similarity,\n            });\n        }\n    }\n    finals.sort((a, b) => b.similarity.cosine - a.similarity.cosine);\n    return finals;\n}\n//# sourceMappingURL=searchInSilicoSpectraByMF.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.searchInSilicoSpectraByMasses = searchInSilicoSpectraByMasses;\nconst ms_spectrum_1 = require(\"ms-spectrum\");\nconst searchWithIonizations_js_1 = require(\"./utils/searchWithIonizations.js\");\n/**\n * @param {object} spectrum - The experimental spectrum to compare to\n * @param {number|string|number[]} [masses] - List of experimental monoisotopic mass\n * @param {object} [options={}]\n * @param {string} [options.baseURL='https://octochemdb.cheminfo.org/'] - URL of the webservice\n * @param {string} [options.mf] - Molecular formula of the non ionized molecule (not available for inSilicoFragments)\n * @param {number} [options.precision=100] - Precision (accuracy) of the monoisotopic mass in ppm\n * @param {string} [options.ionizations=\"H+\"] - Comma separated list of allowed ionizations\n * @param {number} [options.limit=1000] - Maximal number of entries to return\n * @param {number} [options.massPower=1000] - Maximal number of entries to return\n * @param {number} [options.massPower=3] - High power will give more weight to the mass. If you would prefer to observe fragments you should use a number less than 1\n * @param {number} [options.intensityPower=0.6] - How important is the intensity. By default we don't give to much importance to it\n * @param {string} [options.route='inSilicoFragments/v1/search'] - Route to use\n * @param {object} [options.technique={}] - Technique used to generate the spectrum\n * @param {string} [options.technique.mode=\"positive\"] - Mode of the acquisition\n * @param {string} [options.technique.ionization=\"esi\"] - Ionization of the acquisition\n */\nasync function searchInSilicoSpectraByMasses(spectrum, masses, options = {}) {\n    const { route = 'inSilicoFragments/v1/search', baseURL = 'https://octochemdb.cheminfo.org/', precision = 100, limit = 10000, massPower = 3, intensityPower = 0.6, ionizations = 'H+', technique = {}, } = options;\n    const { mode = 'positive', ionization = 'esi' } = technique;\n    if (!route) {\n        throw new Error('route is mandatory');\n    }\n    if (!masses) {\n        throw new Error('masses is mandatory');\n    }\n    const realURL = new URL(route, baseURL).toString();\n    let results = await (0, searchWithIonizations_js_1.searchWithIonizations)({\n        precision,\n        realURL,\n        masses,\n        limit,\n        ionizations,\n        searchParams: {\n            mode,\n            ionization,\n        },\n    });\n    const msComparator = new ms_spectrum_1.MSComparator({\n        delta: (mass) => mass * 1e-6 * precision,\n        massPower,\n        intensityPower,\n    });\n    const finals = [];\n    // filter MDMA\n    // results = results.filter(result => result.data.ocl.idCode === 'dg~D@MBdie]v\\\\kahHBjh@@')\n    for (const result of results) {\n        const similarity = msComparator.getSimilarityToMasses(spectrum, result.data.spectrum.data.x);\n        if (similarity.cosine > 0) {\n            finals.push({\n                ...result,\n                similarity,\n            });\n        }\n    }\n    finals.sort((a, b) => b.similarity.cosine - a.similarity.cosine);\n    return finals;\n}\n//# sourceMappingURL=searchInSilicoSpectraByMasses.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OctoChemDB = void 0;\nconst activeOrNaturalDetails_js_1 = require(\"./activeOrNaturalDetails.js\");\nconst activesOrNaturals_js_1 = require(\"./activesOrNaturals.js\");\nconst activesOrNaturalsByMF_js_1 = require(\"./activesOrNaturalsByMF.js\");\nconst compoundsFromMF_js_1 = require(\"./compoundsFromMF.js\");\nconst massSpectra_js_1 = require(\"./massSpectra.js\");\nconst mfsFromEMs_js_1 = require(\"./mfsFromEMs.js\");\nconst pubmedCompounds_js_1 = require(\"./pubmedCompounds.js\");\nconst searchInSilicoSpectraByMF_js_1 = require(\"./searchInSilicoSpectraByMF.js\");\nconst searchInSilicoSpectraByMasses_js_1 = require(\"./searchInSilicoSpectraByMasses.js\");\nconst searchMasses_js_1 = require(\"./searchMasses.js\");\nclass OctoChemDB {\n    /**\n     *\n     * @param {*} options\n     */\n    constructor(options = {}) {\n        this.baseURL = options.baseURL ?? 'https://octochemdb.cheminfo.org/';\n    }\n    async mfsFromEMs(masses, options = {}) {\n        return (0, mfsFromEMs_js_1.mfsFromEMs)(masses, { baseURL: this.baseURL, ...options });\n    }\n    async compoundsFromMF(mf, options = {}) {\n        return (0, compoundsFromMF_js_1.compoundsFromMF)(mf, { baseURL: this.baseURL, ...options });\n    }\n    async activesOrNaturals(options = {}) {\n        return (0, activesOrNaturals_js_1.activesOrNaturals)({ baseURL: this.baseURL, ...options });\n    }\n    async activesOrNaturalsByMF(options = {}) {\n        return (0, activesOrNaturalsByMF_js_1.activesOrNaturalsByMF)({ baseURL: this.baseURL, ...options });\n    }\n    async activeOrNaturalDetails(id, options = {}) {\n        return (0, activeOrNaturalDetails_js_1.activeOrNaturalDetails)(id, { baseURL: this.baseURL, ...options });\n    }\n    async searchMasses(options = {}) {\n        return (0, searchMasses_js_1.searchMasses)({ baseURL: this.baseURL, ...options });\n    }\n    async massSpectra(options = {}) {\n        return (0, massSpectra_js_1.massSpectra)({ baseURL: this.baseURL, ...options });\n    }\n    async searchInSilicoSpectraByMF(spectrum, mf, options = {}) {\n        return (0, searchInSilicoSpectraByMF_js_1.searchInSilicoSpectraByMF)(spectrum, mf, {\n            baseURL: this.baseURL,\n            ...options,\n        });\n    }\n    async searchInSilicoSpectraByMasses(spectrum, masses, options = {}) {\n        return (0, searchInSilicoSpectraByMasses_js_1.searchInSilicoSpectraByMasses)(spectrum, masses, {\n            baseURL: this.baseURL,\n            ...options,\n        });\n    }\n    async pubmedCompounds(pubmedID, options = {}) {\n        return (0, pubmedCompounds_js_1.pubmedCompounds)(pubmedID, { baseURL: this.baseURL, ...options });\n    }\n}\nexports.OctoChemDB = OctoChemDB;\n//# sourceMappingURL=OctoChemDB.js.map","export const STEMMERS = {\n    arabic: 'ar',\n    armenian: 'am',\n    bulgarian: 'bg',\n    czech: 'cz',\n    danish: 'dk',\n    dutch: 'nl',\n    english: 'en',\n    finnish: 'fi',\n    french: 'fr',\n    german: 'de',\n    greek: 'gr',\n    hungarian: 'hu',\n    indian: 'in',\n    indonesian: 'id',\n    irish: 'ie',\n    italian: 'it',\n    lithuanian: 'lt',\n    nepali: 'np',\n    norwegian: 'no',\n    portuguese: 'pt',\n    romanian: 'ro',\n    russian: 'ru',\n    serbian: 'rs',\n    slovenian: 'ru',\n    spanish: 'es',\n    swedish: 'se',\n    tamil: 'ta',\n    turkish: 'tr',\n    ukrainian: 'uk',\n    sanskrit: 'sk'\n};\nexport const SPLITTERS = {\n    dutch: /[^A-Za-zàèéìòóù0-9_'-]+/gim,\n    english: /[^A-Za-zàèéìòóù0-9_'-]+/gim,\n    french: /[^a-z0-9äâàéèëêïîöôùüûœç-]+/gim,\n    italian: /[^A-Za-zàèéìòóù0-9_'-]+/gim,\n    norwegian: /[^a-z0-9_æøåÆØÅäÄöÖüÜ]+/gim,\n    portuguese: /[^a-z0-9à-úÀ-Ú]/gim,\n    russian: /[^a-z0-9а-яА-ЯёЁ]+/gim,\n    spanish: /[^a-z0-9A-Zá-úÁ-ÚñÑüÜ]+/gim,\n    swedish: /[^a-z0-9_åÅäÄöÖüÜ-]+/gim,\n    german: /[^a-z0-9A-ZäöüÄÖÜß]+/gim,\n    finnish: /[^a-z0-9äöÄÖ]+/gim,\n    danish: /[^a-z0-9æøåÆØÅ]+/gim,\n    hungarian: /[^a-z0-9áéíóöőúüűÁÉÍÓÖŐÚÜŰ]+/gim,\n    romanian: /[^a-z0-9ăâîșțĂÂÎȘȚ]+/gim,\n    serbian: /[^a-z0-9čćžšđČĆŽŠĐ]+/gim,\n    turkish: /[^a-z0-9çÇğĞıİöÖşŞüÜ]+/gim,\n    lithuanian: /[^a-z0-9ąčęėįšųūžĄČĘĖĮŠŲŪŽ]+/gim,\n    arabic: /[^a-z0-9أ-ي]+/gim,\n    nepali: /[^a-z0-9अ-ह]+/gim,\n    irish: /[^a-z0-9áéíóúÁÉÍÓÚ]+/gim,\n    indian: /[^a-z0-9अ-ह]+/gim,\n    armenian: /[^a-z0-9ա-ֆ]+/gim,\n    greek: /[^a-z0-9α-ωά-ώ]+/gim,\n    indonesian: /[^a-z0-9]+/gim,\n    ukrainian: /[^a-z0-9а-яА-ЯіїєІЇЄ]+/gim,\n    slovenian: /[^a-z0-9čžšČŽŠ]+/gim,\n    bulgarian: /[^a-z0-9а-яА-Я]+/gim,\n    tamil: /[^a-z0-9அ-ஹ]+/gim,\n    sanskrit: /[^a-z0-9A-Zāīūṛḷṃṁḥśṣṭḍṇṅñḻḹṝ]+/gim,\n    czech: /[^A-Z0-9a-zěščřžýáíéúůóťďĚŠČŘŽÝÁÍÉÓÚŮŤĎ-]+/gim\n};\nexport const SUPPORTED_LANGUAGES = Object.keys(STEMMERS);\nexport function getLocale(language) {\n    return language !== undefined && SUPPORTED_LANGUAGES.includes(language) ? STEMMERS[language] : undefined;\n}\n//# sourceMappingURL=languages.js.map","import { createError } from './errors.js';\nconst baseId = Date.now().toString().slice(5);\nlet lastId = 0;\nconst k = 1024;\nconst nano = BigInt(1e3);\nconst milli = BigInt(1e6);\nconst second = BigInt(1e9);\nexport const isServer = typeof window === 'undefined';\n/**\n * This value can be increased up to 100_000\n * But i don't know if this value change from nodejs to nodejs\n * So I will keep a safer value here.\n */\nexport const MAX_ARGUMENT_FOR_STACK = 65535;\n/**\n * This method is needed to used because of issues like: https://github.com/oramasearch/orama/issues/301\n * that issue is caused because the array that is pushed is huge (>100k)\n *\n * @example\n * ```ts\n * safeArrayPush(myArray, [1, 2])\n * ```\n */\nexport function safeArrayPush(arr, newArr) {\n    if (newArr.length < MAX_ARGUMENT_FOR_STACK) {\n        Array.prototype.push.apply(arr, newArr);\n    }\n    else {\n        const newArrLength = newArr.length;\n        for (let i = 0; i < newArrLength; i += MAX_ARGUMENT_FOR_STACK) {\n            Array.prototype.push.apply(arr, newArr.slice(i, i + MAX_ARGUMENT_FOR_STACK));\n        }\n    }\n}\nexport function sprintf(template, ...args) {\n    return template.replace(/%(?:(?<position>\\d+)\\$)?(?<width>-?\\d*\\.?\\d*)(?<type>[dfs])/g, function (...replaceArgs) {\n        const groups = replaceArgs[replaceArgs.length - 1];\n        const { width: rawWidth, type, position } = groups;\n        const replacement = position ? args[Number.parseInt(position) - 1] : args.shift();\n        const width = rawWidth === '' ? 0 : Number.parseInt(rawWidth);\n        switch (type) {\n            case 'd':\n                return replacement.toString().padStart(width, '0');\n            case 'f': {\n                let value = replacement;\n                const [padding, precision] = rawWidth.split('.').map((w) => Number.parseFloat(w));\n                if (typeof precision === 'number' && precision >= 0) {\n                    value = value.toFixed(precision);\n                }\n                return typeof padding === 'number' && padding >= 0 ? value.toString().padStart(width, '0') : value.toString();\n            }\n            case 's':\n                return width < 0\n                    ? replacement.toString().padEnd(-width, ' ')\n                    : replacement.toString().padStart(width, ' ');\n            default:\n                return replacement;\n        }\n    });\n}\nexport function formatBytes(bytes, decimals = 2) {\n    if (bytes === 0) {\n        return '0 Bytes';\n    }\n    const dm = decimals < 0 ? 0 : decimals;\n    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\n    return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\nexport function isInsideWebWorker() {\n    // @ts-expect-error - WebWorker global scope\n    return typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\n}\nexport function isInsideNode() {\n    return typeof process !== 'undefined' && process.release && process.release.name === 'node';\n}\nexport function getNanosecondTimeViaPerformance() {\n    return BigInt(Math.floor(performance.now() * 1e6));\n}\nexport function formatNanoseconds(value) {\n    if (typeof value === 'number') {\n        value = BigInt(value);\n    }\n    if (value < nano) {\n        return `${value}ns`;\n    }\n    else if (value < milli) {\n        return `${value / nano}μs`;\n    }\n    else if (value < second) {\n        return `${value / milli}ms`;\n    }\n    return `${value / second}s`;\n}\nexport function getNanosecondsTime() {\n    if (isInsideWebWorker()) {\n        return getNanosecondTimeViaPerformance();\n    }\n    if (isInsideNode()) {\n        return process.hrtime.bigint();\n    }\n    if (typeof process !== 'undefined' && typeof process?.hrtime?.bigint === 'function') {\n        return process.hrtime.bigint();\n    }\n    if (typeof performance !== 'undefined') {\n        return getNanosecondTimeViaPerformance();\n    }\n    // @todo: fallback to V8 native method to get microtime\n    return BigInt(0);\n}\nexport function uniqueId() {\n    return `${baseId}-${lastId++}`;\n}\nexport function getOwnProperty(object, property) {\n    // Checks if `hasOwn` method is defined avoiding errors with older Node.js versions\n    if (Object.hasOwn === undefined) {\n        return Object.prototype.hasOwnProperty.call(object, property) ? object[property] : undefined;\n    }\n    return Object.hasOwn(object, property) ? object[property] : undefined;\n}\nexport function getTokenFrequency(token, tokens) {\n    let count = 0;\n    for (const t of tokens) {\n        if (t === token) {\n            count++;\n        }\n    }\n    return count;\n}\nexport function insertSortedValue(arr, el, compareFn = sortTokenScorePredicate) {\n    let low = 0;\n    let high = arr.length;\n    let mid;\n    while (low < high) {\n        mid = (low + high) >>> 1;\n        if (compareFn(el, arr[mid]) < 0) {\n            high = mid;\n        }\n        else {\n            low = mid + 1;\n        }\n    }\n    arr.splice(low, 0, el);\n    return arr;\n}\nexport function sortTokenScorePredicate(a, b) {\n    if (b[1] === a[1]) {\n        return a[0] - b[0];\n    }\n    return b[1] - a[1];\n}\n// Intersection function taken from https://github.com/lovasoa/fast_array_intersect.\n// MIT Licensed at the time of writing.\nexport function intersect(arrays) {\n    if (arrays.length === 0) {\n        return [];\n    }\n    else if (arrays.length === 1) {\n        return arrays[0];\n    }\n    for (let i = 1; i < arrays.length; i++) {\n        if (arrays[i].length < arrays[0].length) {\n            const tmp = arrays[0];\n            arrays[0] = arrays[i];\n            arrays[i] = tmp;\n        }\n    }\n    const set = new Map();\n    for (const elem of arrays[0]) {\n        set.set(elem, 1);\n    }\n    for (let i = 1; i < arrays.length; i++) {\n        let found = 0;\n        for (const elem of arrays[i]) {\n            const count = set.get(elem);\n            if (count === i) {\n                set.set(elem, count + 1);\n                found++;\n            }\n        }\n        if (found === 0)\n            return [];\n    }\n    return arrays[0].filter((e) => {\n        const count = set.get(e);\n        if (count !== undefined)\n            set.set(e, 0);\n        return count === arrays.length;\n    });\n}\nexport function getDocumentProperties(doc, paths) {\n    const properties = {};\n    const pathsLength = paths.length;\n    for (let i = 0; i < pathsLength; i++) {\n        const path = paths[i];\n        const pathTokens = path.split('.');\n        let current = doc;\n        const pathTokensLength = pathTokens.length;\n        for (let j = 0; j < pathTokensLength; j++) {\n            current = current[pathTokens[j]];\n            // We found an object but we were supposed to be done\n            if (typeof current === 'object') {\n                if (current !== null &&\n                    'lat' in current &&\n                    'lon' in current &&\n                    typeof current.lat === 'number' &&\n                    typeof current.lon === 'number') {\n                    current = properties[path] = current;\n                    break;\n                }\n                else if (!Array.isArray(current) && current !== null && j === pathTokensLength - 1) {\n                    current = undefined;\n                    break;\n                }\n            }\n            else if ((current === null || typeof current !== 'object') && j < pathTokensLength - 1) {\n                // We can't recurse anymore but we were supposed to\n                current = undefined;\n                break;\n            }\n        }\n        if (typeof current !== 'undefined') {\n            properties[path] = current;\n        }\n    }\n    return properties;\n}\nexport function getNested(obj, path) {\n    const props = getDocumentProperties(obj, [path]);\n    return props[path];\n}\nexport function flattenObject(obj, prefix = '') {\n    const result = {};\n    for (const key in obj) {\n        const prop = `${prefix}${key}`;\n        const objKey = obj[key];\n        if (typeof objKey === 'object' && objKey !== null) {\n            Object.assign(result, flattenObject(objKey, `${prop}.`));\n        }\n        else {\n            result[prop] = objKey;\n        }\n    }\n    return result;\n}\nconst mapDistanceToMeters = {\n    cm: 0.01,\n    m: 1,\n    km: 1000,\n    ft: 0.3048,\n    yd: 0.9144,\n    mi: 1609.344\n};\nexport function convertDistanceToMeters(distance, unit) {\n    const ratio = mapDistanceToMeters[unit];\n    if (ratio === undefined) {\n        throw new Error(createError('INVALID_DISTANCE_SUFFIX', distance).message);\n    }\n    return distance * ratio;\n}\nexport function removeVectorsFromHits(searchResult, vectorProperties) {\n    searchResult.hits = searchResult.hits.map((result) => ({\n        ...result,\n        document: {\n            ...result.document,\n            // Remove embeddings from the result\n            ...vectorProperties.reduce((acc, prop) => {\n                const path = prop.split('.');\n                const lastKey = path.pop();\n                let obj = acc;\n                for (const key of path) {\n                    obj[key] = obj[key] ?? {};\n                    obj = obj[key];\n                }\n                obj[lastKey] = null;\n                return acc;\n            }, result.document)\n        }\n    }));\n}\nexport function isPromise(obj) {\n    return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n/**\n * Checks if the provided input is an async function or if the input is an array\n * containing at least one async function.\n *\n * @param func - A single function or an array of functions to check.\n *               Non-function values are ignored.\n * @returns `true` if the input is an async function or an array containing at least\n *          one async function, otherwise `false`.\n */\nexport function isAsyncFunction(func) {\n    if (Array.isArray(func)) {\n        return func.some(item => isAsyncFunction(item));\n    }\n    return func?.constructor?.name === 'AsyncFunction';\n}\nconst withIntersection = 'intersection' in (new Set());\nexport function setIntersection(...sets) {\n    // Fast path 1\n    if (sets.length === 0) {\n        return new Set();\n    }\n    // Fast path 2\n    if (sets.length === 1) {\n        return sets[0];\n    }\n    // Fast path 3\n    if (sets.length === 2) {\n        const set1 = sets[0];\n        const set2 = sets[1];\n        if (withIntersection) {\n            return set1.intersection(set2);\n        }\n        const result = new Set();\n        const base = set1.size < set2.size ? set1 : set2;\n        const other = base === set1 ? set2 : set1;\n        for (const value of base) {\n            if (other.has(value)) {\n                result.add(value);\n            }\n        }\n        return result;\n    }\n    // Slow path\n    // Find the smallest set\n    const min = {\n        index: 0,\n        size: sets[0].size,\n    };\n    for (let i = 1; i < sets.length; i++) {\n        if (sets[i].size < min.size) {\n            min.index = i;\n            min.size = sets[i].size;\n        }\n    }\n    if (withIntersection) {\n        let base = sets[min.index];\n        for (let i = 0; i < sets.length; i++) {\n            if (i === min.index) {\n                continue;\n            }\n            base = base.intersection(sets[i]);\n        }\n        return base;\n    }\n    // manual implementation:\n    // intersect all sets with the smallest set\n    const base = sets[min.index];\n    for (let i = 0; i < sets.length; i++) {\n        if (i === min.index) {\n            continue;\n        }\n        const other = sets[i];\n        for (const value of base) {\n            if (!other.has(value)) {\n                base.delete(value);\n            }\n        }\n    }\n    return base;\n}\nconst withUnion = 'union' in (new Set());\nexport function setUnion(set1, set2) {\n    if (withUnion) {\n        if (set1) {\n            return set1.union(set2);\n        }\n        return set2;\n    }\n    if (!set1) {\n        return new Set(set2);\n    }\n    return new Set([...set1, ...set2]);\n}\n// This code is taken from https://github.com/davidmarkclements/atomic-sleep, MIT licensed at the time of commit b8149d3ca276c84a54fa8fa1478f9cc79aabc15a.\n// All credits go to the original author (David Mark Clements, https://github.com/davidmarkclements).\nexport function sleep(ms) {\n    if (typeof SharedArrayBuffer !== 'undefined' && typeof Atomics !== 'undefined') {\n        const nil = new Int32Array(new SharedArrayBuffer(4));\n        const valid = ms > 0 && ms < Infinity;\n        if (valid === false) {\n            if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n                throw TypeError('sleep: ms must be a number');\n            }\n            throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity');\n        }\n        Atomics.wait(nil, 0, 0, Number(ms));\n    }\n    else {\n        const valid = ms > 0 && ms < Infinity;\n        if (valid === false) {\n            if (typeof ms !== 'number' && typeof ms !== 'bigint') {\n                throw TypeError('sleep: ms must be a number');\n            }\n            throw RangeError('sleep: ms must be a number that is greater than 0 but less than Infinity');\n        }\n        const target = Date.now() + Number(ms);\n        while (target > Date.now()) { /* empty */ }\n    }\n}\n//# sourceMappingURL=utils.js.map","import { SUPPORTED_LANGUAGES } from './components/tokenizer/languages.js';\nimport { sprintf } from './utils.js';\nconst allLanguages = SUPPORTED_LANGUAGES.join('\\n - ');\nconst errors = {\n    NO_LANGUAGE_WITH_CUSTOM_TOKENIZER: 'Do not pass the language option to create when using a custom tokenizer.',\n    LANGUAGE_NOT_SUPPORTED: `Language \"%s\" is not supported.\\nSupported languages are:\\n - ${allLanguages}`,\n    INVALID_STEMMER_FUNCTION_TYPE: `config.stemmer property must be a function.`,\n    MISSING_STEMMER: `As of version 1.0.0 @orama/orama does not ship non English stemmers by default. To solve this, please explicitly import and specify the \"%s\" stemmer from the package @orama/stemmers. See https://docs.orama.com/open-source/text-analysis/stemming for more information.`,\n    CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY: 'Custom stop words array must only contain strings.',\n    UNSUPPORTED_COMPONENT: `Unsupported component \"%s\".`,\n    COMPONENT_MUST_BE_FUNCTION: `The component \"%s\" must be a function.`,\n    COMPONENT_MUST_BE_FUNCTION_OR_ARRAY_FUNCTIONS: `The component \"%s\" must be a function or an array of functions.`,\n    INVALID_SCHEMA_TYPE: `Unsupported schema type \"%s\" at \"%s\". Expected \"string\", \"boolean\" or \"number\" or array of them.`,\n    DOCUMENT_ID_MUST_BE_STRING: `Document id must be of type \"string\". Got \"%s\" instead.`,\n    DOCUMENT_ALREADY_EXISTS: `A document with id \"%s\" already exists.`,\n    DOCUMENT_DOES_NOT_EXIST: `A document with id \"%s\" does not exists.`,\n    MISSING_DOCUMENT_PROPERTY: `Missing searchable property \"%s\".`,\n    INVALID_DOCUMENT_PROPERTY: `Invalid document property \"%s\": expected \"%s\", got \"%s\"`,\n    UNKNOWN_INDEX: `Invalid property name \"%s\". Expected a wildcard string (\"*\") or array containing one of the following properties: %s`,\n    INVALID_BOOST_VALUE: `Boost value must be a number greater than, or less than 0.`,\n    INVALID_FILTER_OPERATION: `You can only use one operation per filter, you requested %d.`,\n    SCHEMA_VALIDATION_FAILURE: `Cannot insert document due schema validation failure on \"%s\" property.`,\n    INVALID_SORT_SCHEMA_TYPE: `Unsupported sort schema type \"%s\" at \"%s\". Expected \"string\" or \"number\".`,\n    CANNOT_SORT_BY_ARRAY: `Cannot configure sort for \"%s\" because it is an array (%s).`,\n    UNABLE_TO_SORT_ON_UNKNOWN_FIELD: `Unable to sort on unknown field \"%s\". Allowed fields: %s`,\n    SORT_DISABLED: `Sort is disabled. Please read the documentation at https://docs.oramasearch for more information.`,\n    UNKNOWN_GROUP_BY_PROPERTY: `Unknown groupBy property \"%s\".`,\n    INVALID_GROUP_BY_PROPERTY: `Invalid groupBy property \"%s\". Allowed types: \"%s\", but given \"%s\".`,\n    UNKNOWN_FILTER_PROPERTY: `Unknown filter property \"%s\".`,\n    INVALID_VECTOR_SIZE: `Vector size must be a number greater than 0. Got \"%s\" instead.`,\n    INVALID_VECTOR_VALUE: `Vector value must be a number greater than 0. Got \"%s\" instead.`,\n    INVALID_INPUT_VECTOR: `Property \"%s\" was declared as a %s-dimensional vector, but got a %s-dimensional vector instead.\\nInput vectors must be of the size declared in the schema, as calculating similarity between vectors of different sizes can lead to unexpected results.`,\n    WRONG_SEARCH_PROPERTY_TYPE: `Property \"%s\" is not searchable. Only \"string\" properties are searchable.`,\n    FACET_NOT_SUPPORTED: `Facet doens't support the type \"%s\".`,\n    INVALID_DISTANCE_SUFFIX: `Invalid distance suffix \"%s\". Valid suffixes are: cm, m, km, mi, yd, ft.`,\n    INVALID_SEARCH_MODE: `Invalid search mode \"%s\". Valid modes are: \"fulltext\", \"vector\", \"hybrid\".`,\n    MISSING_VECTOR_AND_SECURE_PROXY: `No vector was provided and no secure proxy was configured. Please provide a vector or configure an Orama Secure Proxy to perform hybrid search.`,\n    MISSING_TERM: `\"term\" is a required parameter when performing hybrid search. Please provide a search term.`,\n    INVALID_VECTOR_INPUT: `Invalid \"vector\" property. Expected an object with \"value\" and \"property\" properties, but got \"%s\" instead.`,\n    PLUGIN_CRASHED: `A plugin crashed during initialization. Please check the error message for more information:`,\n    PLUGIN_SECURE_PROXY_NOT_FOUND: `Could not find '@orama/secure-proxy-plugin' installed in your Orama instance.\\nPlease install it before proceeding with creating an answer session.\\nRead more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy\\n`,\n    PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL: `Could not find a chat model defined in the secure proxy plugin configuration.\\nPlease provide a chat model before proceeding with creating an answer session.\\nRead more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy\\n`,\n    ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT: `The last message in the session is not an assistant message. Cannot regenerate non-assistant messages.`,\n    PLUGIN_COMPONENT_CONFLICT: `The component \"%s\" is already defined. The plugin \"%s\" is trying to redefine it.`,\n};\nexport function createError(code, ...args) {\n    const error = new Error(sprintf(errors[code] ?? `Unsupported Orama Error code: ${code}`, ...args));\n    error.code = code;\n    if ('captureStackTrace' in Error.prototype) {\n        Error.captureStackTrace(error);\n    }\n    return error;\n}\n//# sourceMappingURL=errors.js.map","import { createError } from '../errors.js';\nimport { formatNanoseconds, uniqueId } from '../utils.js';\nexport { getDocumentProperties } from '../utils.js';\nexport function formatElapsedTime(n) {\n    return {\n        raw: Number(n),\n        formatted: formatNanoseconds(n)\n    };\n}\nexport function getDocumentIndexId(doc) {\n    if (doc.id) {\n        if (typeof doc.id !== 'string') {\n            throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof doc.id);\n        }\n        return doc.id;\n    }\n    return uniqueId();\n}\nexport function validateSchema(doc, schema) {\n    for (const [prop, type] of Object.entries(schema)) {\n        const value = doc[prop];\n        if (typeof value === 'undefined') {\n            continue;\n        }\n        if (type === 'geopoint' &&\n            typeof value === 'object' &&\n            typeof value.lon === 'number' &&\n            typeof value.lat === 'number') {\n            continue;\n        }\n        if (type === 'enum' && (typeof value === 'string' || typeof value === 'number')) {\n            continue;\n        }\n        if (type === 'enum[]' && Array.isArray(value)) {\n            const valueLength = value.length;\n            for (let i = 0; i < valueLength; i++) {\n                if (typeof value[i] !== 'string' && typeof value[i] !== 'number') {\n                    return prop + '.' + i;\n                }\n            }\n            continue;\n        }\n        if (isVectorType(type)) {\n            const vectorSize = getVectorSize(type);\n            if (!Array.isArray(value) || value.length !== vectorSize) {\n                throw createError('INVALID_INPUT_VECTOR', prop, vectorSize, value.length);\n            }\n            continue;\n        }\n        if (isArrayType(type)) {\n            if (!Array.isArray(value)) {\n                return prop;\n            }\n            const expectedType = getInnerType(type);\n            const valueLength = value.length;\n            for (let i = 0; i < valueLength; i++) {\n                if (typeof value[i] !== expectedType) {\n                    return prop + '.' + i;\n                }\n            }\n            continue;\n        }\n        if (typeof type === 'object') {\n            if (!value || typeof value !== 'object') {\n                return prop;\n            }\n            // using as ResultDocument is not exactly right but trying to be type-safe here is not useful\n            const subProp = validateSchema(value, type);\n            if (subProp) {\n                return prop + '.' + subProp;\n            }\n            continue;\n        }\n        if (typeof value !== type) {\n            return prop;\n        }\n    }\n    return undefined;\n}\nconst IS_ARRAY_TYPE = {\n    string: false,\n    number: false,\n    boolean: false,\n    enum: false,\n    geopoint: false,\n    'string[]': true,\n    'number[]': true,\n    'boolean[]': true,\n    'enum[]': true\n};\nconst INNER_TYPE = {\n    'string[]': 'string',\n    'number[]': 'number',\n    'boolean[]': 'boolean',\n    'enum[]': 'enum'\n};\nexport function isGeoPointType(type) {\n    return type === 'geopoint';\n}\nexport function isVectorType(type) {\n    return typeof type === 'string' && /^vector\\[\\d+\\]$/.test(type);\n}\nexport function isArrayType(type) {\n    return typeof type === 'string' && IS_ARRAY_TYPE[type];\n}\nexport function getInnerType(type) {\n    return INNER_TYPE[type];\n}\nexport function getVectorSize(type) {\n    const size = Number(type.slice(7, -1));\n    switch (true) {\n        case isNaN(size):\n            throw createError('INVALID_VECTOR_VALUE', type);\n        case size <= 0:\n            throw createError('INVALID_VECTOR_SIZE', type);\n        default:\n            return size;\n    }\n}\n//# sourceMappingURL=defaults.js.map","export function createInternalDocumentIDStore() {\n    return {\n        idToInternalId: new Map(),\n        internalIdToId: [],\n        save,\n        load\n    };\n}\nexport function save(store) {\n    return {\n        internalIdToId: store.internalIdToId\n    };\n}\nexport function load(orama, raw) {\n    const { internalIdToId } = raw;\n    orama.internalDocumentIDStore.idToInternalId.clear();\n    orama.internalDocumentIDStore.internalIdToId = [];\n    const internalIdToIdLength = internalIdToId.length;\n    for (let i = 0; i < internalIdToIdLength; i++) {\n        const internalIdItem = internalIdToId[i];\n        orama.internalDocumentIDStore.idToInternalId.set(internalIdItem, i + 1);\n        orama.internalDocumentIDStore.internalIdToId.push(internalIdItem);\n    }\n}\nexport function getInternalDocumentId(store, id) {\n    if (typeof id === 'string') {\n        const internalId = store.idToInternalId.get(id);\n        if (internalId) {\n            return internalId;\n        }\n        const currentId = store.idToInternalId.size + 1;\n        store.idToInternalId.set(id, currentId);\n        store.internalIdToId.push(id);\n        return currentId;\n    }\n    if (id > store.internalIdToId.length) {\n        return getInternalDocumentId(store, id.toString());\n    }\n    return id;\n}\nexport function getDocumentIdFromInternalId(store, internalId) {\n    if (store.internalIdToId.length < internalId) {\n        throw new Error(`Invalid internalId ${internalId}`);\n    }\n    return store.internalIdToId[internalId - 1];\n}\n//# sourceMappingURL=internal-document-id-store.js.map","import { getInternalDocumentId } from './internal-document-id-store.js';\nexport function create(_, sharedInternalDocumentStore) {\n    return {\n        sharedInternalDocumentStore,\n        docs: {},\n        count: 0\n    };\n}\nexport function get(store, id) {\n    const internalId = getInternalDocumentId(store.sharedInternalDocumentStore, id);\n    return store.docs[internalId];\n}\nexport function getMultiple(store, ids) {\n    const idsLength = ids.length;\n    const found = Array.from({ length: idsLength });\n    for (let i = 0; i < idsLength; i++) {\n        const internalId = getInternalDocumentId(store.sharedInternalDocumentStore, ids[i]);\n        found[i] = store.docs[internalId];\n    }\n    return found;\n}\nexport function getAll(store) {\n    return store.docs;\n}\nexport function store(store, id, internalId, doc) {\n    if (typeof store.docs[internalId] !== 'undefined') {\n        return false;\n    }\n    store.docs[internalId] = doc;\n    store.count++;\n    return true;\n}\nexport function remove(store, id) {\n    const internalId = getInternalDocumentId(store.sharedInternalDocumentStore, id);\n    if (typeof store.docs[internalId] === 'undefined') {\n        return false;\n    }\n    delete store.docs[internalId];\n    store.count--;\n    return true;\n}\nexport function count(store) {\n    return store.count;\n}\nexport function load(sharedInternalDocumentStore, raw) {\n    const rawDocument = raw;\n    return {\n        docs: rawDocument.docs,\n        count: rawDocument.count,\n        sharedInternalDocumentStore\n    };\n}\nexport function save(store) {\n    return {\n        docs: store.docs,\n        count: store.count\n    };\n}\nexport function createDocumentsStore() {\n    return {\n        create,\n        get,\n        getMultiple,\n        getAll,\n        store,\n        remove,\n        count,\n        load,\n        save\n    };\n}\n//# sourceMappingURL=documents-store.js.map","import { createError } from '../errors.js';\nexport const AVAILABLE_PLUGIN_HOOKS = [\n    'beforeInsert',\n    'afterInsert',\n    'beforeRemove',\n    'afterRemove',\n    'beforeUpdate',\n    'afterUpdate',\n    'beforeSearch',\n    'afterSearch',\n    'beforeInsertMultiple',\n    'afterInsertMultiple',\n    'beforeRemoveMultiple',\n    'afterRemoveMultiple',\n    'beforeUpdateMultiple',\n    'afterUpdateMultiple',\n    'beforeLoad',\n    'afterLoad',\n    'afterCreate'\n];\nexport function getAllPluginsByHook(orama, hook) {\n    const pluginsToRun = [];\n    const pluginsLength = orama.plugins?.length;\n    if (!pluginsLength) {\n        return pluginsToRun;\n    }\n    for (let i = 0; i < pluginsLength; i++) {\n        try {\n            const plugin = orama.plugins[i];\n            if (typeof plugin[hook] === 'function') {\n                pluginsToRun.push(plugin[hook]);\n            }\n        }\n        catch (error) {\n            console.error('Caught error in getAllPluginsByHook:', error);\n            throw createError('PLUGIN_CRASHED');\n        }\n    }\n    return pluginsToRun;\n}\n//# sourceMappingURL=plugins.js.map","import { isAsyncFunction } from '../utils.js';\nexport const OBJECT_COMPONENTS = ['tokenizer', 'index', 'documentsStore', 'sorter'];\nexport const FUNCTION_COMPONENTS = [\n    'validateSchema',\n    'getDocumentIndexId',\n    'getDocumentProperties',\n    'formatElapsedTime'\n];\nexport const SINGLE_OR_ARRAY_COMPONENTS = [\n/* deprecated with v2.0.0-beta.5 */\n];\nexport function runSingleHook(hooks, orama, id, doc) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(orama, id, doc);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(orama, id, doc);\n        }\n    }\n}\nexport function runMultipleHook(hooks, orama, docsOrIds) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(orama, docsOrIds);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(orama, docsOrIds);\n        }\n    }\n}\nexport function runAfterSearch(hooks, db, params, language, results) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(db, params, language, results);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(db, params, language, results);\n        }\n    }\n}\nexport function runBeforeSearch(hooks, db, params, language) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(db, params, language);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(db, params, language);\n        }\n    }\n}\nexport function runAfterCreate(hooks, db) {\n    const needAsync = hooks.some(isAsyncFunction);\n    if (needAsync) {\n        return (async () => {\n            for (const hook of hooks) {\n                await hook(db);\n            }\n        })();\n    }\n    else {\n        for (const hook of hooks) {\n            hook(db);\n        }\n    }\n}\n//# sourceMappingURL=hooks.js.map","import { setUnion } from '../utils.js';\nexport class AVLNode {\n    k;\n    v;\n    l = null;\n    r = null;\n    h = 1;\n    constructor(key, value) {\n        this.k = key;\n        this.v = new Set(value);\n    }\n    updateHeight() {\n        this.h = Math.max(AVLNode.getHeight(this.l), AVLNode.getHeight(this.r)) + 1;\n    }\n    static getHeight(node) {\n        return node ? node.h : 0;\n    }\n    getBalanceFactor() {\n        return AVLNode.getHeight(this.l) - AVLNode.getHeight(this.r);\n    }\n    rotateLeft() {\n        const newRoot = this.r;\n        this.r = newRoot.l;\n        newRoot.l = this;\n        this.updateHeight();\n        newRoot.updateHeight();\n        return newRoot;\n    }\n    rotateRight() {\n        const newRoot = this.l;\n        this.l = newRoot.r;\n        newRoot.r = this;\n        this.updateHeight();\n        newRoot.updateHeight();\n        return newRoot;\n    }\n    toJSON() {\n        return {\n            k: this.k,\n            v: Array.from(this.v),\n            l: this.l ? this.l.toJSON() : null,\n            r: this.r ? this.r.toJSON() : null,\n            h: this.h\n        };\n    }\n    static fromJSON(json) {\n        const node = new AVLNode(json.k, json.v);\n        node.l = json.l ? AVLNode.fromJSON(json.l) : null;\n        node.r = json.r ? AVLNode.fromJSON(json.r) : null;\n        node.h = json.h;\n        return node;\n    }\n}\nexport class AVLTree {\n    root = null;\n    insertCount = 0;\n    constructor(key, value) {\n        if (key !== undefined && value !== undefined) {\n            this.root = new AVLNode(key, value);\n        }\n    }\n    insert(key, value, rebalanceThreshold = 1000) {\n        this.root = this.insertNode(this.root, key, value, rebalanceThreshold);\n    }\n    insertMultiple(key, value, rebalanceThreshold = 1000) {\n        for (const v of value) {\n            this.insert(key, v, rebalanceThreshold);\n        }\n    }\n    // Rebalance the tree if the insert count reaches the threshold.\n    // This will improve insertion performance since we won't be rebalancing the tree on every insert.\n    // When inserting docs using `insertMultiple`, the threshold will be set to the number of docs being inserted.\n    // We can force rebalancing the tree by setting the threshold to 1 (default).\n    rebalance() {\n        if (this.root) {\n            this.root = this.rebalanceNode(this.root);\n        }\n    }\n    toJSON() {\n        return {\n            root: this.root ? this.root.toJSON() : null,\n            insertCount: this.insertCount\n        };\n    }\n    static fromJSON(json) {\n        const tree = new AVLTree();\n        tree.root = json.root ? AVLNode.fromJSON(json.root) : null;\n        tree.insertCount = json.insertCount || 0;\n        return tree;\n    }\n    insertNode(node, key, value, rebalanceThreshold) {\n        if (node === null) {\n            return new AVLNode(key, [value]);\n        }\n        const path = [];\n        let current = node;\n        let parent = null;\n        while (current !== null) {\n            path.push({ parent, node: current });\n            if (key < current.k) {\n                if (current.l === null) {\n                    current.l = new AVLNode(key, [value]);\n                    path.push({ parent: current, node: current.l });\n                    break;\n                }\n                else {\n                    parent = current;\n                    current = current.l;\n                }\n            }\n            else if (key > current.k) {\n                if (current.r === null) {\n                    current.r = new AVLNode(key, [value]);\n                    path.push({ parent: current, node: current.r });\n                    break;\n                }\n                else {\n                    parent = current;\n                    current = current.r;\n                }\n            }\n            else {\n                // Key already exists\n                current.v.add(value);\n                /*\n                if (Array.isArray(current.v)) {\n                  if (Array.isArray(value)) {\n                    ;(current.v as any[]).push(...(value as V[]))\n                  } else {\n                    ;(current.v as any[]).push(value)\n                  }\n                } else {\n                  current.v = new Set([value])\n                }\n                */\n                return node;\n            }\n        }\n        // Update heights and rebalance if necessary\n        let needRebalance = false;\n        if (this.insertCount++ % rebalanceThreshold === 0) {\n            needRebalance = true;\n        }\n        for (let i = path.length - 1; i >= 0; i--) {\n            const { parent, node: currentNode } = path[i];\n            currentNode.updateHeight();\n            if (needRebalance) {\n                const rebalancedNode = this.rebalanceNode(currentNode);\n                if (parent) {\n                    if (parent.l === currentNode) {\n                        parent.l = rebalancedNode;\n                    }\n                    else if (parent.r === currentNode) {\n                        parent.r = rebalancedNode;\n                    }\n                }\n                else {\n                    // This is the root node\n                    node = rebalancedNode;\n                }\n            }\n        }\n        return node;\n    }\n    rebalanceNode(node) {\n        const balanceFactor = node.getBalanceFactor();\n        if (balanceFactor > 1) {\n            // Left heavy\n            if (node.l && node.l.getBalanceFactor() >= 0) {\n                // Left Left Case\n                return node.rotateRight();\n            }\n            else if (node.l) {\n                // Left Right Case\n                node.l = node.l.rotateLeft();\n                return node.rotateRight();\n            }\n        }\n        if (balanceFactor < -1) {\n            // Right heavy\n            if (node.r && node.r.getBalanceFactor() <= 0) {\n                // Right Right Case\n                return node.rotateLeft();\n            }\n            else if (node.r) {\n                // Right Left Case\n                node.r = node.r.rotateRight();\n                return node.rotateLeft();\n            }\n        }\n        return node;\n    }\n    find(key) {\n        const node = this.findNodeByKey(key);\n        return node ? node.v : null;\n    }\n    contains(key) {\n        return this.find(key) !== null;\n    }\n    getSize() {\n        let count = 0;\n        const stack = [];\n        let current = this.root;\n        while (current || stack.length > 0) {\n            while (current) {\n                stack.push(current);\n                current = current.l;\n            }\n            current = stack.pop();\n            count++;\n            current = current.r;\n        }\n        return count;\n    }\n    isBalanced() {\n        if (!this.root)\n            return true;\n        const stack = [this.root];\n        while (stack.length > 0) {\n            const node = stack.pop();\n            const balanceFactor = node.getBalanceFactor();\n            if (Math.abs(balanceFactor) > 1) {\n                return false;\n            }\n            if (node.l)\n                stack.push(node.l);\n            if (node.r)\n                stack.push(node.r);\n        }\n        return true;\n    }\n    remove(key) {\n        this.root = this.removeNode(this.root, key);\n    }\n    removeDocument(key, id) {\n        const node = this.findNodeByKey(key);\n        if (!node) {\n            return;\n        }\n        if (node.v.size === 1) {\n            this.root = this.removeNode(this.root, key);\n        }\n        else {\n            node.v = new Set([...node.v.values()].filter((v) => v !== id));\n        }\n    }\n    findNodeByKey(key) {\n        let node = this.root;\n        while (node) {\n            if (key < node.k) {\n                node = node.l;\n            }\n            else if (key > node.k) {\n                node = node.r;\n            }\n            else {\n                return node;\n            }\n        }\n        return null;\n    }\n    removeNode(node, key) {\n        if (node === null)\n            return null;\n        const path = [];\n        let current = node;\n        while (current !== null && current.k !== key) {\n            path.push(current);\n            if (key < current.k) {\n                current = current.l;\n            }\n            else {\n                current = current.r;\n            }\n        }\n        if (current === null) {\n            // Key not found\n            return node;\n        }\n        // Node with only one child or no child\n        if (current.l === null || current.r === null) {\n            const child = current.l ? current.l : current.r;\n            if (path.length === 0) {\n                // Node to be deleted is root\n                node = child;\n            }\n            else {\n                const parent = path[path.length - 1];\n                if (parent.l === current) {\n                    parent.l = child;\n                }\n                else {\n                    parent.r = child;\n                }\n            }\n        }\n        else {\n            // Node with two children: Get the inorder successor\n            let successorParent = current;\n            let successor = current.r;\n            while (successor.l !== null) {\n                successorParent = successor;\n                successor = successor.l;\n            }\n            // Copy the successor's content to current node\n            current.k = successor.k;\n            current.v = successor.v;\n            // Delete the successor\n            if (successorParent.l === successor) {\n                successorParent.l = successor.r;\n            }\n            else {\n                successorParent.r = successor.r;\n            }\n            current = successorParent;\n        }\n        // Update heights and rebalance\n        path.push(current);\n        for (let i = path.length - 1; i >= 0; i--) {\n            const currentNode = path[i];\n            currentNode.updateHeight();\n            const rebalancedNode = this.rebalanceNode(currentNode);\n            if (i > 0) {\n                const parent = path[i - 1];\n                if (parent.l === currentNode) {\n                    parent.l = rebalancedNode;\n                }\n                else if (parent.r === currentNode) {\n                    parent.r = rebalancedNode;\n                }\n            }\n            else {\n                // Root node\n                node = rebalancedNode;\n            }\n        }\n        return node;\n    }\n    rangeSearch(min, max) {\n        let result = new Set();\n        const stack = [];\n        let current = this.root;\n        while (current || stack.length > 0) {\n            while (current) {\n                stack.push(current);\n                current = current.l;\n            }\n            current = stack.pop();\n            if (current.k >= min && current.k <= max) {\n                result = setUnion(result, current.v);\n            }\n            if (current.k > max) {\n                break;\n            }\n            current = current.r;\n        }\n        return result;\n    }\n    greaterThan(key, inclusive = false) {\n        let result = new Set();\n        const stack = [];\n        let current = this.root;\n        while (current || stack.length > 0) {\n            while (current) {\n                stack.push(current);\n                current = current.r; // Traverse right subtree first\n            }\n            current = stack.pop();\n            if ((inclusive && current.k >= key) || (!inclusive && current.k > key)) {\n                result = setUnion(result, current.v);\n            }\n            else if (current.k <= key) {\n                break; // Since we're traversing in descending order, we can break early\n            }\n            current = current.l;\n        }\n        return result;\n    }\n    lessThan(key, inclusive = false) {\n        let result = new Set();\n        const stack = [];\n        let current = this.root;\n        while (current || stack.length > 0) {\n            while (current) {\n                stack.push(current);\n                current = current.l;\n            }\n            current = stack.pop();\n            if ((inclusive && current.k <= key) || (!inclusive && current.k < key)) {\n                result = setUnion(result, current.v);\n            }\n            else if (current.k > key) {\n                break; // Since we're traversing in ascending order, we can break early\n            }\n            current = current.r;\n        }\n        return result;\n    }\n}\n//# sourceMappingURL=avl.js.map","export class FlatTree {\n    numberToDocumentId;\n    constructor() {\n        this.numberToDocumentId = new Map();\n    }\n    insert(key, value) {\n        if (this.numberToDocumentId.has(key)) {\n            this.numberToDocumentId.get(key).add(value);\n        }\n        else {\n            this.numberToDocumentId.set(key, new Set([value]));\n        }\n    }\n    find(key) {\n        const idSet = this.numberToDocumentId.get(key);\n        return idSet ? Array.from(idSet) : null;\n    }\n    remove(key) {\n        this.numberToDocumentId.delete(key);\n    }\n    removeDocument(id, key) {\n        const idSet = this.numberToDocumentId.get(key);\n        if (idSet) {\n            idSet.delete(id);\n            if (idSet.size === 0) {\n                this.numberToDocumentId.delete(key);\n            }\n        }\n    }\n    contains(key) {\n        return this.numberToDocumentId.has(key);\n    }\n    getSize() {\n        let size = 0;\n        for (const idSet of this.numberToDocumentId.values()) {\n            size += idSet.size;\n        }\n        return size;\n    }\n    filter(operation) {\n        const operationKeys = Object.keys(operation);\n        if (operationKeys.length !== 1) {\n            throw new Error('Invalid operation');\n        }\n        const operationType = operationKeys[0];\n        switch (operationType) {\n            case 'eq': {\n                const value = operation[operationType];\n                const idSet = this.numberToDocumentId.get(value);\n                return idSet ? Array.from(idSet) : [];\n            }\n            case 'in': {\n                const values = operation[operationType];\n                const resultSet = new Set();\n                for (const value of values) {\n                    const idSet = this.numberToDocumentId.get(value);\n                    if (idSet) {\n                        for (const id of idSet) {\n                            resultSet.add(id);\n                        }\n                    }\n                }\n                return Array.from(resultSet);\n            }\n            case 'nin': {\n                const excludeValues = new Set(operation[operationType]);\n                const resultSet = new Set();\n                for (const [key, idSet] of this.numberToDocumentId.entries()) {\n                    if (!excludeValues.has(key)) {\n                        for (const id of idSet) {\n                            resultSet.add(id);\n                        }\n                    }\n                }\n                return Array.from(resultSet);\n            }\n            default:\n                throw new Error('Invalid operation');\n        }\n    }\n    filterArr(operation) {\n        const operationKeys = Object.keys(operation);\n        if (operationKeys.length !== 1) {\n            throw new Error('Invalid operation');\n        }\n        const operationType = operationKeys[0];\n        switch (operationType) {\n            case 'containsAll': {\n                const values = operation[operationType];\n                const idSets = values.map((value) => this.numberToDocumentId.get(value) ?? new Set());\n                if (idSets.length === 0)\n                    return [];\n                const intersection = idSets.reduce((prev, curr) => {\n                    return new Set([...prev].filter((id) => curr.has(id)));\n                });\n                return Array.from(intersection);\n            }\n            case 'containsAny': {\n                const values = operation[operationType];\n                const idSets = values.map((value) => this.numberToDocumentId.get(value) ?? new Set());\n                if (idSets.length === 0)\n                    return [];\n                const union = idSets.reduce((prev, curr) => {\n                    return new Set([...prev, ...curr]);\n                });\n                return Array.from(union);\n            }\n            default:\n                throw new Error('Invalid operation');\n        }\n    }\n    static fromJSON(json) {\n        if (!json.numberToDocumentId) {\n            throw new Error('Invalid Flat Tree JSON');\n        }\n        const tree = new FlatTree();\n        for (const [key, ids] of json.numberToDocumentId) {\n            tree.numberToDocumentId.set(key, new Set(ids));\n        }\n        return tree;\n    }\n    toJSON() {\n        return {\n            numberToDocumentId: Array.from(this.numberToDocumentId.entries()).map(([key, idSet]) => [key, Array.from(idSet)])\n        };\n    }\n}\n//# sourceMappingURL=flat.js.map","/**\n * Inspired by:\n * https://github.com/Yomguithereal/talisman/blob/86ae55cbd040ff021d05e282e0e6c71f2dde21f8/src/metrics/levenshtein.js#L218-L340\n */\nfunction _boundedLevenshtein(term, word, tolerance) {\n    // Handle base cases\n    if (tolerance < 0)\n        return -1;\n    if (term === word)\n        return 0;\n    const m = term.length;\n    const n = word.length;\n    // Special case for empty strings\n    if (m === 0)\n        return n <= tolerance ? n : -1;\n    if (n === 0)\n        return m <= tolerance ? m : -1;\n    // term = term.toLowerCase()\n    // word = word.toLowerCase()\n    const diff = Math.abs(m - n);\n    // Special case for prefixes\n    // If the searching word starts with the indexed word, return early.\n    if (term.startsWith(word)) {\n        // We just check if the remaining characters are within the tolerance\n        return diff <= tolerance ? diff : -1;\n    }\n    // If the indexed word starts with the searching word, return early.\n    if (word.startsWith(term)) {\n        // any prefixed word is within the tolerance\n        return 0;\n    }\n    // If the length difference is greater than the tolerance, return early\n    if (diff > tolerance)\n        return -1;\n    // Initialize the matrix\n    const matrix = [];\n    for (let i = 0; i <= m; i++) {\n        matrix[i] = [i];\n        for (let j = 1; j <= n; j++) {\n            matrix[i][j] = i === 0 ? j : 0;\n        }\n    }\n    // Fill the matrix\n    for (let i = 1; i <= m; i++) {\n        let rowMin = Infinity;\n        for (let j = 1; j <= n; j++) {\n            if (term[i - 1] === word[j - 1]) {\n                matrix[i][j] = matrix[i - 1][j - 1];\n            }\n            else {\n                matrix[i][j] = Math.min(matrix[i - 1][j] + 1, // deletion\n                matrix[i][j - 1] + 1, // insertion\n                matrix[i - 1][j - 1] + 1 // substitution\n                );\n            }\n            rowMin = Math.min(rowMin, matrix[i][j]);\n        }\n        // Early termination if all values in this row exceed tolerance\n        if (rowMin > tolerance) {\n            return -1;\n        }\n    }\n    return matrix[m][n] <= tolerance ? matrix[m][n] : -1;\n}\n/**\n * Computes the Levenshtein distance between two strings (a, b), returning early with -1 if the distance\n * is greater than the given tolerance.\n * It assumes that:\n * - tolerance >= ||a| - |b|| >= 0\n */\nexport function boundedLevenshtein(term, w, tolerance) {\n    const distance = _boundedLevenshtein(term, w, tolerance);\n    return {\n        distance,\n        isBounded: distance >= 0\n    };\n}\n// This is only used internally, keep in sync with the previous one\nexport function syncBoundedLevenshtein(term, w, tolerance) {\n    const distance = _boundedLevenshtein(term, w, tolerance);\n    return {\n        distance,\n        isBounded: distance >= 0\n    };\n}\nexport function levenshtein(a, b) {\n    /* c8 ignore next 3 */\n    if (!a.length) {\n        return b.length;\n    }\n    /* c8 ignore next 3 */\n    if (!b.length) {\n        return a.length;\n    }\n    const swap = a;\n    if (a.length > b.length) {\n        a = b;\n        b = swap;\n    }\n    const row = Array.from({ length: a.length + 1 }, (_, i) => i);\n    let val = 0;\n    for (let i = 1; i <= b.length; i++) {\n        let prev = i;\n        for (let j = 1; j <= a.length; j++) {\n            if (b[i - 1] === a[j - 1]) {\n                val = row[j - 1];\n            }\n            else {\n                val = Math.min(row[j - 1] + 1, Math.min(prev + 1, row[j] + 1));\n            }\n            row[j - 1] = prev;\n            prev = val;\n        }\n        row[a.length] = prev;\n    }\n    return row[a.length];\n}\n//# sourceMappingURL=levenshtein.js.map","/* eslint-disable @typescript-eslint/no-this-alias */\nimport { syncBoundedLevenshtein } from '../components/levenshtein.js';\nimport { getOwnProperty } from '../utils.js';\nexport class RadixNode {\n    // Node key\n    k;\n    // Node subword\n    s;\n    // Node children\n    c = new Map();\n    // Node documents\n    d = new Set();\n    // Node end\n    e;\n    // Node word\n    w = '';\n    constructor(key, subWord, end) {\n        this.k = key;\n        this.s = subWord;\n        this.e = end;\n    }\n    updateParent(parent) {\n        this.w = parent.w + this.s;\n    }\n    addDocument(docID) {\n        this.d.add(docID);\n    }\n    removeDocument(docID) {\n        return this.d.delete(docID);\n    }\n    findAllWords(output, term, exact, tolerance) {\n        const stack = [this];\n        while (stack.length > 0) {\n            const node = stack.pop();\n            if (node.e) {\n                const { w, d: docIDs } = node;\n                if (exact && w !== term) {\n                    continue;\n                }\n                // check if _output[w] exists and then add the doc to it\n                // always check in own property to prevent access to inherited properties\n                // fix https://github.com/oramasearch/orama/issues/137\n                if (getOwnProperty(output, w) !== null) {\n                    if (tolerance) {\n                        const difference = Math.abs(term.length - w.length);\n                        if (difference <= tolerance && syncBoundedLevenshtein(term, w, tolerance).isBounded) {\n                            output[w] = [];\n                        }\n                        else {\n                            continue;\n                        }\n                    }\n                    else {\n                        output[w] = [];\n                    }\n                }\n                // check if _output[w] exists and then add the doc to it\n                // always check in own property to prevent access to inherited properties\n                // fix https://github.com/oramasearch/orama/issues/137\n                if (getOwnProperty(output, w) != null && docIDs.size > 0) {\n                    const docs = output[w];\n                    for (const docID of docIDs) {\n                        if (!docs.includes(docID)) {\n                            docs.push(docID);\n                        }\n                    }\n                }\n            }\n            if (node.c.size > 0) {\n                stack.push(...node.c.values());\n            }\n        }\n        return output;\n    }\n    insert(word, docId) {\n        let node = this;\n        let i = 0;\n        const wordLength = word.length;\n        while (i < wordLength) {\n            const currentCharacter = word[i];\n            const childNode = node.c.get(currentCharacter);\n            if (childNode) {\n                const edgeLabel = childNode.s;\n                const edgeLabelLength = edgeLabel.length;\n                let j = 0;\n                // Find the common prefix length between edgeLabel and the remaining word\n                while (j < edgeLabelLength && i + j < wordLength && edgeLabel[j] === word[i + j]) {\n                    j++;\n                }\n                if (j === edgeLabelLength) {\n                    // Edge label fully matches; proceed to the child node\n                    node = childNode;\n                    i += j;\n                    if (i === wordLength) {\n                        // The word is a prefix of an existing word\n                        if (!childNode.e) {\n                            childNode.e = true;\n                        }\n                        childNode.addDocument(docId);\n                        return;\n                    }\n                    continue;\n                }\n                // Split the edgeLabel at the common prefix\n                const commonPrefix = edgeLabel.slice(0, j);\n                const newEdgeLabel = edgeLabel.slice(j);\n                const newWordLabel = word.slice(i + j);\n                // Create an intermediate node for the common prefix\n                const inbetweenNode = new RadixNode(commonPrefix[0], commonPrefix, false);\n                node.c.set(commonPrefix[0], inbetweenNode);\n                inbetweenNode.updateParent(node);\n                // Update the existing childNode\n                childNode.s = newEdgeLabel;\n                childNode.k = newEdgeLabel[0];\n                inbetweenNode.c.set(newEdgeLabel[0], childNode);\n                childNode.updateParent(inbetweenNode);\n                if (newWordLabel) {\n                    // Create a new node for the remaining part of the word\n                    const newNode = new RadixNode(newWordLabel[0], newWordLabel, true);\n                    newNode.addDocument(docId);\n                    inbetweenNode.c.set(newWordLabel[0], newNode);\n                    newNode.updateParent(inbetweenNode);\n                }\n                else {\n                    // The word ends at the inbetweenNode\n                    inbetweenNode.e = true;\n                    inbetweenNode.addDocument(docId);\n                }\n                return;\n            }\n            else {\n                // No matching child; create a new node\n                const newNode = new RadixNode(currentCharacter, word.slice(i), true);\n                newNode.addDocument(docId);\n                node.c.set(currentCharacter, newNode);\n                newNode.updateParent(node);\n                return;\n            }\n        }\n        // If we reach here, the word already exists in the tree\n        if (!node.e) {\n            node.e = true;\n        }\n        node.addDocument(docId);\n    }\n    _findLevenshtein(term, index, tolerance, originalTolerance, output) {\n        const stack = [{ node: this, index, tolerance }];\n        while (stack.length > 0) {\n            const { node, index, tolerance } = stack.pop();\n            if (node.w.startsWith(term)) {\n                node.findAllWords(output, term, false, 0);\n                continue;\n            }\n            if (tolerance < 0) {\n                continue;\n            }\n            if (node.e) {\n                const { w, d: docIDs } = node;\n                if (w) {\n                    if (syncBoundedLevenshtein(term, w, originalTolerance).isBounded) {\n                        output[w] = [];\n                    }\n                    if (getOwnProperty(output, w) !== undefined && docIDs.size > 0) {\n                        const docs = new Set(output[w]);\n                        for (const docID of docIDs) {\n                            docs.add(docID);\n                        }\n                        output[w] = Array.from(docs);\n                    }\n                }\n            }\n            if (index >= term.length) {\n                continue;\n            }\n            const currentChar = term[index];\n            // 1. If node has child matching term[index], push { node: childNode, index +1, tolerance }\n            if (node.c.has(currentChar)) {\n                const childNode = node.c.get(currentChar);\n                stack.push({ node: childNode, index: index + 1, tolerance });\n            }\n            // 2. Push { node, index +1, tolerance -1 } (Delete operation)\n            stack.push({ node: node, index: index + 1, tolerance: tolerance - 1 });\n            // 3. For each child:\n            for (const [character, childNode] of node.c) {\n                // a) Insert operation\n                stack.push({ node: childNode, index: index, tolerance: tolerance - 1 });\n                // b) Substitute operation\n                if (character !== currentChar) {\n                    stack.push({ node: childNode, index: index + 1, tolerance: tolerance - 1 });\n                }\n            }\n        }\n    }\n    find(params) {\n        const { term, exact, tolerance } = params;\n        if (tolerance && !exact) {\n            const output = {};\n            this._findLevenshtein(term, 0, tolerance, tolerance, output);\n            return output;\n        }\n        else {\n            let node = this;\n            let i = 0;\n            const termLength = term.length;\n            while (i < termLength) {\n                const character = term[i];\n                const childNode = node.c.get(character);\n                if (childNode) {\n                    const edgeLabel = childNode.s;\n                    const edgeLabelLength = edgeLabel.length;\n                    let j = 0;\n                    // Compare edge label with the term starting from position i\n                    while (j < edgeLabelLength && i + j < termLength && edgeLabel[j] === term[i + j]) {\n                        j++;\n                    }\n                    if (j === edgeLabelLength) {\n                        // Full match of edge label; proceed to the child node\n                        node = childNode;\n                        i += j;\n                    }\n                    else if (i + j === termLength) {\n                        // The term ends in the middle of the edge label\n                        if (exact) {\n                            // Exact match required but term doesn't end at a node\n                            return {};\n                        }\n                        else {\n                            // Partial match; collect words starting from this node\n                            const output = {};\n                            childNode.findAllWords(output, term, exact, tolerance);\n                            return output;\n                        }\n                    }\n                    else {\n                        // Mismatch found\n                        return {};\n                    }\n                }\n                else {\n                    // No matching child node\n                    return {};\n                }\n            }\n            // Term fully matched; collect words starting from this node\n            const output = {};\n            node.findAllWords(output, term, exact, tolerance);\n            return output;\n        }\n    }\n    contains(term) {\n        let node = this;\n        let i = 0;\n        const termLength = term.length;\n        while (i < termLength) {\n            const character = term[i];\n            const childNode = node.c.get(character);\n            if (childNode) {\n                const edgeLabel = childNode.s;\n                const edgeLabelLength = edgeLabel.length;\n                let j = 0;\n                while (j < edgeLabelLength && i + j < termLength && edgeLabel[j] === term[i + j]) {\n                    j++;\n                }\n                if (j < edgeLabelLength) {\n                    return false;\n                }\n                i += edgeLabelLength;\n                node = childNode;\n            }\n            else {\n                return false;\n            }\n        }\n        return true;\n    }\n    removeWord(term) {\n        if (!term) {\n            return false;\n        }\n        let node = this;\n        const termLength = term.length;\n        const stack = [];\n        for (let i = 0; i < termLength; i++) {\n            const character = term[i];\n            if (node.c.has(character)) {\n                const childNode = node.c.get(character);\n                stack.push({ parent: node, character });\n                i += childNode.s.length - 1;\n                node = childNode;\n            }\n            else {\n                return false;\n            }\n        }\n        // Remove documents from the node\n        node.d.clear();\n        node.e = false;\n        // Clean up any nodes that no longer lead to a word\n        while (stack.length > 0 && node.c.size === 0 && !node.e && node.d.size === 0) {\n            const { parent, character } = stack.pop();\n            parent.c.delete(character);\n            node = parent;\n        }\n        return true;\n    }\n    removeDocumentByWord(term, docID, exact = true) {\n        if (!term) {\n            return true;\n        }\n        let node = this;\n        const termLength = term.length;\n        for (let i = 0; i < termLength; i++) {\n            const character = term[i];\n            if (node.c.has(character)) {\n                const childNode = node.c.get(character);\n                i += childNode.s.length - 1;\n                node = childNode;\n                if (exact && node.w !== term) {\n                    // Do nothing if the exact condition is not met.\n                }\n                else {\n                    node.removeDocument(docID);\n                }\n            }\n            else {\n                return false;\n            }\n        }\n        return true;\n    }\n    static getCommonPrefix(a, b) {\n        const len = Math.min(a.length, b.length);\n        let i = 0;\n        while (i < len && a.charCodeAt(i) === b.charCodeAt(i)) {\n            i++;\n        }\n        return a.slice(0, i);\n    }\n    toJSON() {\n        return {\n            w: this.w,\n            s: this.s,\n            e: this.e,\n            k: this.k,\n            d: Array.from(this.d),\n            c: Array.from(this.c?.entries())?.map(([key, node]) => [key, node.toJSON()])\n        };\n    }\n    static fromJSON(json) {\n        const node = new RadixNode(json.k, json.s, json.e);\n        node.w = json.w;\n        node.d = new Set(json.d);\n        node.c = new Map(json?.c?.map(([key, nodeJson]) => [key, RadixNode.fromJSON(nodeJson)]));\n        return node;\n    }\n}\nexport class RadixTree extends RadixNode {\n    constructor() {\n        super('', '', false);\n    }\n    static fromJSON(json) {\n        const tree = new RadixTree();\n        tree.w = json.w;\n        tree.s = json.s;\n        tree.e = json.e;\n        tree.k = json.k;\n        tree.d = new Set(json.d);\n        tree.c = new Map(json.c?.map(([key, nodeJson]) => [key, RadixNode.fromJSON(nodeJson)]));\n        return tree;\n    }\n    toJSON() {\n        return super.toJSON();\n    }\n}\n//# sourceMappingURL=radix.js.map","const K = 2; // 2D points\nconst EARTH_RADIUS = 6371e3; // Earth radius in meters\nclass BKDNode {\n    point;\n    docIDs;\n    left;\n    right;\n    parent;\n    constructor(point, docIDs) {\n        this.point = point;\n        this.docIDs = new Set(docIDs);\n        this.left = null;\n        this.right = null;\n        this.parent = null;\n    }\n    toJSON() {\n        return {\n            point: this.point,\n            docIDs: Array.from(this.docIDs),\n            left: this.left ? this.left.toJSON() : null,\n            right: this.right ? this.right.toJSON() : null\n        };\n    }\n    static fromJSON(json, parent = null) {\n        const node = new BKDNode(json.point, json.docIDs);\n        node.parent = parent;\n        if (json.left) {\n            node.left = BKDNode.fromJSON(json.left, node);\n        }\n        if (json.right) {\n            node.right = BKDNode.fromJSON(json.right, node);\n        }\n        return node;\n    }\n}\nexport class BKDTree {\n    root;\n    nodeMap;\n    constructor() {\n        this.root = null;\n        this.nodeMap = new Map();\n    }\n    getPointKey(point) {\n        return `${point.lon},${point.lat}`;\n    }\n    insert(point, docIDs) {\n        const pointKey = this.getPointKey(point);\n        const existingNode = this.nodeMap.get(pointKey);\n        if (existingNode) {\n            docIDs.forEach((id) => existingNode.docIDs.add(id));\n            return;\n        }\n        const newNode = new BKDNode(point, docIDs);\n        this.nodeMap.set(pointKey, newNode);\n        if (this.root == null) {\n            this.root = newNode;\n            return;\n        }\n        let node = this.root;\n        let depth = 0;\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const axis = depth % K;\n            if (axis === 0) {\n                if (point.lon < node.point.lon) {\n                    if (node.left == null) {\n                        node.left = newNode;\n                        newNode.parent = node;\n                        return;\n                    }\n                    node = node.left;\n                }\n                else {\n                    if (node.right == null) {\n                        node.right = newNode;\n                        newNode.parent = node;\n                        return;\n                    }\n                    node = node.right;\n                }\n            }\n            else {\n                if (point.lat < node.point.lat) {\n                    if (node.left == null) {\n                        node.left = newNode;\n                        newNode.parent = node;\n                        return;\n                    }\n                    node = node.left;\n                }\n                else {\n                    if (node.right == null) {\n                        node.right = newNode;\n                        newNode.parent = node;\n                        return;\n                    }\n                    node = node.right;\n                }\n            }\n            depth++;\n        }\n    }\n    contains(point) {\n        const pointKey = this.getPointKey(point);\n        return this.nodeMap.has(pointKey);\n    }\n    getDocIDsByCoordinates(point) {\n        const pointKey = this.getPointKey(point);\n        const node = this.nodeMap.get(pointKey);\n        if (node) {\n            return Array.from(node.docIDs);\n        }\n        return null;\n    }\n    removeDocByID(point, docID) {\n        const pointKey = this.getPointKey(point);\n        const node = this.nodeMap.get(pointKey);\n        if (node) {\n            node.docIDs.delete(docID);\n            if (node.docIDs.size === 0) {\n                this.nodeMap.delete(pointKey);\n                this.deleteNode(node);\n            }\n        }\n    }\n    deleteNode(node) {\n        const parent = node.parent;\n        const child = node.left ? node.left : node.right;\n        if (child) {\n            child.parent = parent;\n        }\n        if (parent) {\n            if (parent.left === node) {\n                parent.left = child;\n            }\n            else if (parent.right === node) {\n                parent.right = child;\n            }\n        }\n        else {\n            this.root = child;\n            if (this.root) {\n                this.root.parent = null;\n            }\n        }\n    }\n    searchByRadius(center, radius, inclusive = true, sort = 'asc', highPrecision = false) {\n        const distanceFn = highPrecision ? BKDTree.vincentyDistance : BKDTree.haversineDistance;\n        const stack = [{ node: this.root, depth: 0 }];\n        const result = [];\n        while (stack.length > 0) {\n            const { node, depth } = stack.pop();\n            if (node == null)\n                continue;\n            const dist = distanceFn(center, node.point);\n            if (inclusive ? dist <= radius : dist > radius) {\n                result.push({ point: node.point, docIDs: Array.from(node.docIDs) });\n            }\n            if (node.left != null) {\n                stack.push({ node: node.left, depth: depth + 1 });\n            }\n            if (node.right != null) {\n                stack.push({ node: node.right, depth: depth + 1 });\n            }\n        }\n        if (sort) {\n            result.sort((a, b) => {\n                const distA = distanceFn(center, a.point);\n                const distB = distanceFn(center, b.point);\n                return sort.toLowerCase() === 'asc' ? distA - distB : distB - distA;\n            });\n        }\n        return result;\n    }\n    searchByPolygon(polygon, inclusive = true, sort = null, highPrecision = false) {\n        const stack = [{ node: this.root, depth: 0 }];\n        const result = [];\n        while (stack.length > 0) {\n            const { node, depth } = stack.pop();\n            if (node == null)\n                continue;\n            if (node.left != null) {\n                stack.push({ node: node.left, depth: depth + 1 });\n            }\n            if (node.right != null) {\n                stack.push({ node: node.right, depth: depth + 1 });\n            }\n            const isInsidePolygon = BKDTree.isPointInPolygon(polygon, node.point);\n            if ((isInsidePolygon && inclusive) || (!isInsidePolygon && !inclusive)) {\n                result.push({ point: node.point, docIDs: Array.from(node.docIDs) });\n            }\n        }\n        const centroid = BKDTree.calculatePolygonCentroid(polygon);\n        if (sort) {\n            const distanceFn = highPrecision ? BKDTree.vincentyDistance : BKDTree.haversineDistance;\n            result.sort((a, b) => {\n                const distA = distanceFn(centroid, a.point);\n                const distB = distanceFn(centroid, b.point);\n                return sort.toLowerCase() === 'asc' ? distA - distB : distB - distA;\n            });\n        }\n        return result;\n    }\n    toJSON() {\n        return {\n            root: this.root ? this.root.toJSON() : null\n        };\n    }\n    static fromJSON(json) {\n        const tree = new BKDTree();\n        if (json.root) {\n            tree.root = BKDNode.fromJSON(json.root);\n            tree.buildNodeMap(tree.root);\n        }\n        return tree;\n    }\n    buildNodeMap(node) {\n        if (node == null)\n            return;\n        const pointKey = this.getPointKey(node.point);\n        this.nodeMap.set(pointKey, node);\n        if (node.left) {\n            this.buildNodeMap(node.left);\n        }\n        if (node.right) {\n            this.buildNodeMap(node.right);\n        }\n    }\n    static calculatePolygonCentroid(polygon) {\n        let totalArea = 0;\n        let centroidX = 0;\n        let centroidY = 0;\n        const polygonLength = polygon.length;\n        for (let i = 0, j = polygonLength - 1; i < polygonLength; j = i++) {\n            const xi = polygon[i].lon;\n            const yi = polygon[i].lat;\n            const xj = polygon[j].lon;\n            const yj = polygon[j].lat;\n            const areaSegment = xi * yj - xj * yi;\n            totalArea += areaSegment;\n            centroidX += (xi + xj) * areaSegment;\n            centroidY += (yi + yj) * areaSegment;\n        }\n        totalArea /= 2;\n        const centroidCoordinate = 6 * totalArea;\n        centroidX /= centroidCoordinate;\n        centroidY /= centroidCoordinate;\n        return { lon: centroidX, lat: centroidY };\n    }\n    static isPointInPolygon(polygon, point) {\n        let isInside = false;\n        const x = point.lon;\n        const y = point.lat;\n        const polygonLength = polygon.length;\n        for (let i = 0, j = polygonLength - 1; i < polygonLength; j = i++) {\n            const xi = polygon[i].lon;\n            const yi = polygon[i].lat;\n            const xj = polygon[j].lon;\n            const yj = polygon[j].lat;\n            const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;\n            if (intersect)\n                isInside = !isInside;\n        }\n        return isInside;\n    }\n    static haversineDistance(coord1, coord2) {\n        const P = Math.PI / 180;\n        const lat1 = coord1.lat * P;\n        const lat2 = coord2.lat * P;\n        const deltaLat = (coord2.lat - coord1.lat) * P;\n        const deltaLon = (coord2.lon - coord1.lon) * P;\n        const a = Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) +\n            Math.cos(lat1) * Math.cos(lat2) * Math.sin(deltaLon / 2) * Math.sin(deltaLon / 2);\n        const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n        return EARTH_RADIUS * c;\n    }\n    static vincentyDistance(coord1, coord2) {\n        const a = 6378137;\n        const f = 1 / 298.257223563;\n        const b = (1 - f) * a;\n        const P = Math.PI / 180;\n        const lat1 = coord1.lat * P;\n        const lat2 = coord2.lat * P;\n        const deltaLon = (coord2.lon - coord1.lon) * P;\n        const U1 = Math.atan((1 - f) * Math.tan(lat1));\n        const U2 = Math.atan((1 - f) * Math.tan(lat2));\n        const sinU1 = Math.sin(U1);\n        const cosU1 = Math.cos(U1);\n        const sinU2 = Math.sin(U2);\n        const cosU2 = Math.cos(U2);\n        let lambda = deltaLon;\n        let prevLambda;\n        let iterationLimit = 1000;\n        let sinSigma;\n        let cosSigma;\n        let sigma;\n        let sinAlpha;\n        let cos2Alpha;\n        let cos2SigmaM;\n        do {\n            const sinLambda = Math.sin(lambda);\n            const cosLambda = Math.cos(lambda);\n            sinSigma = Math.sqrt(cosU2 * sinLambda * (cosU2 * sinLambda) +\n                (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) * (cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));\n            if (sinSigma === 0)\n                return 0; // co-incident points\n            cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n            sigma = Math.atan2(sinSigma, cosSigma);\n            sinAlpha = (cosU1 * cosU2 * sinLambda) / sinSigma;\n            cos2Alpha = 1 - sinAlpha * sinAlpha;\n            cos2SigmaM = cosSigma - (2 * sinU1 * sinU2) / cos2Alpha;\n            if (isNaN(cos2SigmaM))\n                cos2SigmaM = 0;\n            const C = (f / 16) * cos2Alpha * (4 + f * (4 - 3 * cos2Alpha));\n            prevLambda = lambda;\n            lambda =\n                deltaLon +\n                    (1 - C) *\n                        f *\n                        sinAlpha *\n                        (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM)));\n        } while (Math.abs(lambda - prevLambda) > 1e-12 && --iterationLimit > 0);\n        if (iterationLimit === 0) {\n            return NaN;\n        }\n        const uSquared = (cos2Alpha * (a * a - b * b)) / (b * b);\n        const A = 1 + (uSquared / 16384) * (4096 + uSquared * (-768 + uSquared * (320 - 175 * uSquared)));\n        const B = (uSquared / 1024) * (256 + uSquared * (-128 + uSquared * (74 - 47 * uSquared)));\n        const deltaSigma = B *\n            sinSigma *\n            (cos2SigmaM +\n                (B / 4) *\n                    (cosSigma * (-1 + 2 * cos2SigmaM * cos2SigmaM) -\n                        (B / 6) * cos2SigmaM * (-3 + 4 * sinSigma * sinSigma) * (-3 + 4 * cos2SigmaM * cos2SigmaM)));\n        const s = b * A * (sigma - deltaSigma);\n        return s;\n    }\n}\n//# sourceMappingURL=bkd.js.map","export class BoolNode {\n    true;\n    false;\n    constructor() {\n        this.true = new Set();\n        this.false = new Set();\n    }\n    insert(value, bool) {\n        if (bool) {\n            this.true.add(value);\n        }\n        else {\n            this.false.add(value);\n        }\n    }\n    delete(value, bool) {\n        if (bool) {\n            this.true.delete(value);\n        }\n        else {\n            this.false.delete(value);\n        }\n    }\n    getSize() {\n        return this.true.size + this.false.size;\n    }\n    toJSON() {\n        return {\n            true: Array.from(this.true),\n            false: Array.from(this.false)\n        };\n    }\n    static fromJSON(json) {\n        const node = new BoolNode();\n        node.true = new Set(json.true);\n        node.false = new Set(json.false);\n        return node;\n    }\n}\n//# sourceMappingURL=bool.js.map","import { createError } from '../errors.js';\nexport function prioritizeTokenScores(arrays, boost, threshold = 0, keywordsCount) {\n    if (boost === 0) {\n        throw createError('INVALID_BOOST_VALUE');\n    }\n    const tokenScoresMap = new Map();\n    const mapsLength = arrays.length;\n    for (let i = 0; i < mapsLength; i++) {\n        const arr = arrays[i];\n        const entriesLength = arr.length;\n        for (let j = 0; j < entriesLength; j++) {\n            const [token, score] = arr[j];\n            const boostScore = score * boost;\n            const oldScore = tokenScoresMap.get(token)?.[0];\n            if (oldScore !== undefined) {\n                tokenScoresMap.set(token, [oldScore * 1.5 + boostScore, (tokenScoresMap?.get(token)?.[1] || 0) + 1]);\n            }\n            else {\n                tokenScoresMap.set(token, [boostScore, 1]);\n            }\n        }\n    }\n    const tokenScores = [];\n    for (const tokenScoreEntry of tokenScoresMap.entries()) {\n        tokenScores.push([tokenScoreEntry[0], tokenScoreEntry[1][0]]);\n    }\n    const results = tokenScores.sort((a, b) => b[1] - a[1]);\n    // If threshold is 1, it means we will return all the results with at least one search term,\n    // prioritizig the ones that contains more search terms (fuzzy match)\n    if (threshold === 1) {\n        return results;\n    }\n    // Prepare keywords count tracking for threshold handling\n    const allResults = results.length;\n    const tokenScoreWithKeywordsCount = [];\n    for (const tokenScoreEntry of tokenScoresMap.entries()) {\n        tokenScoreWithKeywordsCount.push([tokenScoreEntry[0], tokenScoreEntry[1][0], tokenScoreEntry[1][1]]);\n    }\n    // Find the index of the last result with all keywords.\n    // Order the documents by the number of keywords they contain, and then by the score.\n    const keywordsPerToken = tokenScoreWithKeywordsCount.sort((a, b) => {\n        // Compare by the third element, higher numbers first\n        if (a[2] > b[2])\n            return -1;\n        if (a[2] < b[2])\n            return 1;\n        // If the third elements are equal, compare by the second element, higher numbers first\n        if (a[1] > b[1])\n            return -1;\n        if (a[1] < b[1])\n            return 1;\n        // If both the second and third elements are equal, consider the elements equal\n        return 0;\n    });\n    let lastTokenWithAllKeywords = undefined;\n    for (let i = 0; i < allResults; i++) {\n        if (keywordsPerToken[i][2] === keywordsCount) {\n            lastTokenWithAllKeywords = i;\n        }\n        else {\n            break;\n        }\n    }\n    // If no results had all the keywords, either bail out earlier or normalize\n    if (typeof lastTokenWithAllKeywords === 'undefined') {\n        if (threshold === 0) {\n            return [];\n        }\n        lastTokenWithAllKeywords = 0;\n    }\n    const keywordsPerTokenLength = keywordsPerToken.length;\n    const resultsWithIdAndScore = new Array(keywordsPerTokenLength);\n    for (let i = 0; i < keywordsPerTokenLength; i++) {\n        resultsWithIdAndScore[i] = [keywordsPerToken[i][0], keywordsPerToken[i][1]];\n    }\n    // If threshold is 0, it means we will only return all the results that contains ALL the search terms (exact match)\n    if (threshold === 0) {\n        return resultsWithIdAndScore.slice(0, lastTokenWithAllKeywords + 1);\n    }\n    // If the threshold is between 0 and 1, we will return all the results that contains at least the threshold of search terms\n    // For example, if threshold is 0.5, we will return all the results that contains at least 50% of the search terms\n    // (fuzzy match with a minimum threshold)\n    const thresholdLength = lastTokenWithAllKeywords + Math.ceil((threshold * 100 * (allResults - lastTokenWithAllKeywords)) / 100);\n    return resultsWithIdAndScore.slice(0, allResults + thresholdLength);\n}\nexport function BM25(tf, matchingCount, docsCount, fieldLength, averageFieldLength, { k, b, d }) {\n    const idf = Math.log(1 + (docsCount - matchingCount + 0.5) / (matchingCount + 0.5));\n    return (idf * (d + tf * (k + 1))) / (tf + k * (1 - b + (b * fieldLength) / averageFieldLength));\n}\n//# sourceMappingURL=algorithms.js.map","export const DEFAULT_SIMILARITY = 0.8;\nexport class VectorIndex {\n    size;\n    vectors = new Map();\n    constructor(size) {\n        this.size = size;\n    }\n    add(internalDocumentId, value) {\n        if (!(value instanceof Float32Array)) {\n            value = new Float32Array(value);\n        }\n        const magnitude = getMagnitude(value, this.size);\n        this.vectors.set(internalDocumentId, [magnitude, value]);\n    }\n    remove(internalDocumentId) {\n        this.vectors.delete(internalDocumentId);\n    }\n    find(vector, similarity, whereFiltersIDs) {\n        if (!(vector instanceof Float32Array)) {\n            vector = new Float32Array(vector);\n        }\n        const results = findSimilarVectors(vector, whereFiltersIDs, this.vectors, this.size, similarity);\n        return results;\n    }\n    toJSON() {\n        const vectors = [];\n        for (const [id, [magnitude, vector]] of this.vectors) {\n            vectors.push([id, [magnitude, Array.from(vector)]]);\n        }\n        return {\n            size: this.size,\n            vectors,\n        };\n    }\n    static fromJSON(json) {\n        const raw = json;\n        const index = new VectorIndex(raw.size);\n        for (const [id, [magnitude, vector]] of raw.vectors) {\n            index.vectors.set(id, [magnitude, new Float32Array(vector)]);\n        }\n        return index;\n    }\n}\nexport function getMagnitude(vector, vectorLength) {\n    let magnitude = 0;\n    for (let i = 0; i < vectorLength; i++) {\n        magnitude += vector[i] * vector[i];\n    }\n    return Math.sqrt(magnitude);\n}\n// @todo: Write plugins for Node and Browsers to use parallel computation for this function\nexport function findSimilarVectors(targetVector, keys, vectors, length, threshold) {\n    const targetMagnitude = getMagnitude(targetVector, length);\n    const similarVectors = [];\n    const base = keys ? keys : vectors.keys();\n    for (const vectorId of base) {\n        const entry = vectors.get(vectorId);\n        if (!entry) {\n            continue;\n        }\n        const magnitude = entry[0];\n        const vector = entry[1];\n        let dotProduct = 0;\n        for (let i = 0; i < length; i++) {\n            dotProduct += targetVector[i] * vector[i];\n        }\n        const similarity = dotProduct / (targetMagnitude * magnitude);\n        if (similarity >= threshold) {\n            similarVectors.push([vectorId, similarity]);\n        }\n    }\n    return similarVectors;\n}\n//# sourceMappingURL=vector.js.map","import { createError } from '../errors.js';\nimport { AVLTree } from '../trees/avl.js';\nimport { FlatTree } from '../trees/flat.js';\nimport { RadixTree } from '../trees/radix.js';\nimport { BKDTree } from '../trees/bkd.js';\nimport { BoolNode } from '../trees/bool.js';\nimport { convertDistanceToMeters, setIntersection, setUnion } from '../utils.js';\nimport { BM25 } from './algorithms.js';\nimport { getInnerType, getVectorSize, isArrayType, isVectorType } from './defaults.js';\nimport { getInternalDocumentId } from './internal-document-id-store.js';\nimport { VectorIndex } from '../trees/vector.js';\nexport function insertDocumentScoreParameters(index, prop, id, tokens, docsCount) {\n    const internalId = getInternalDocumentId(index.sharedInternalDocumentStore, id);\n    index.avgFieldLength[prop] = ((index.avgFieldLength[prop] ?? 0) * (docsCount - 1) + tokens.length) / docsCount;\n    index.fieldLengths[prop][internalId] = tokens.length;\n    index.frequencies[prop][internalId] = {};\n}\nexport function insertTokenScoreParameters(index, prop, id, tokens, token) {\n    let tokenFrequency = 0;\n    for (const t of tokens) {\n        if (t === token) {\n            tokenFrequency++;\n        }\n    }\n    const internalId = getInternalDocumentId(index.sharedInternalDocumentStore, id);\n    const tf = tokenFrequency / tokens.length;\n    index.frequencies[prop][internalId][token] = tf;\n    if (!(token in index.tokenOccurrences[prop])) {\n        index.tokenOccurrences[prop][token] = 0;\n    }\n    // increase a token counter that may not yet exist\n    index.tokenOccurrences[prop][token] = (index.tokenOccurrences[prop][token] ?? 0) + 1;\n}\nexport function removeDocumentScoreParameters(index, prop, id, docsCount) {\n    const internalId = getInternalDocumentId(index.sharedInternalDocumentStore, id);\n    if (docsCount > 1) {\n        index.avgFieldLength[prop] =\n            (index.avgFieldLength[prop] * docsCount - index.fieldLengths[prop][internalId]) / (docsCount - 1);\n    }\n    else {\n        index.avgFieldLength[prop] = undefined;\n    }\n    index.fieldLengths[prop][internalId] = undefined;\n    index.frequencies[prop][internalId] = undefined;\n}\nexport function removeTokenScoreParameters(index, prop, token) {\n    index.tokenOccurrences[prop][token]--;\n}\nexport function create(orama, sharedInternalDocumentStore, schema, index, prefix = '') {\n    if (!index) {\n        index = {\n            sharedInternalDocumentStore,\n            indexes: {},\n            vectorIndexes: {},\n            searchableProperties: [],\n            searchablePropertiesWithTypes: {},\n            frequencies: {},\n            tokenOccurrences: {},\n            avgFieldLength: {},\n            fieldLengths: {}\n        };\n    }\n    for (const [prop, type] of Object.entries(schema)) {\n        const path = `${prefix}${prefix ? '.' : ''}${prop}`;\n        if (typeof type === 'object' && !Array.isArray(type)) {\n            // Nested\n            create(orama, sharedInternalDocumentStore, type, index, path);\n            continue;\n        }\n        if (isVectorType(type)) {\n            index.searchableProperties.push(path);\n            index.searchablePropertiesWithTypes[path] = type;\n            index.vectorIndexes[path] = {\n                type: 'Vector',\n                node: new VectorIndex(getVectorSize(type)),\n                isArray: false,\n            };\n        }\n        else {\n            const isArray = /\\[/.test(type);\n            switch (type) {\n                case 'boolean':\n                case 'boolean[]':\n                    index.indexes[path] = { type: 'Bool', node: new BoolNode(), isArray };\n                    break;\n                case 'number':\n                case 'number[]':\n                    index.indexes[path] = { type: 'AVL', node: new AVLTree(0, []), isArray };\n                    break;\n                case 'string':\n                case 'string[]':\n                    index.indexes[path] = { type: 'Radix', node: new RadixTree(), isArray };\n                    index.avgFieldLength[path] = 0;\n                    index.frequencies[path] = {};\n                    index.tokenOccurrences[path] = {};\n                    index.fieldLengths[path] = {};\n                    break;\n                case 'enum':\n                case 'enum[]':\n                    index.indexes[path] = { type: 'Flat', node: new FlatTree(), isArray };\n                    break;\n                case 'geopoint':\n                    index.indexes[path] = { type: 'BKD', node: new BKDTree(), isArray };\n                    break;\n                default:\n                    throw createError('INVALID_SCHEMA_TYPE', Array.isArray(type) ? 'array' : type, path);\n            }\n            index.searchableProperties.push(path);\n            index.searchablePropertiesWithTypes[path] = type;\n        }\n    }\n    return index;\n}\nfunction insertScalarBuilder(implementation, index, prop, internalId, language, tokenizer, docsCount, options) {\n    return (value) => {\n        const { type, node } = index.indexes[prop];\n        switch (type) {\n            case 'Bool': {\n                node[value ? 'true' : 'false'].add(internalId);\n                break;\n            }\n            case 'AVL': {\n                const avlRebalanceThreshold = options?.avlRebalanceThreshold ?? 1;\n                node.insert(value, internalId, avlRebalanceThreshold);\n                break;\n            }\n            case 'Radix': {\n                const tokens = tokenizer.tokenize(value, language, prop, false);\n                implementation.insertDocumentScoreParameters(index, prop, internalId, tokens, docsCount);\n                for (const token of tokens) {\n                    implementation.insertTokenScoreParameters(index, prop, internalId, tokens, token);\n                    node.insert(token, internalId);\n                }\n                break;\n            }\n            case 'Flat': {\n                node.insert(value, internalId);\n                break;\n            }\n            case 'BKD': {\n                node.insert(value, [internalId]);\n                break;\n            }\n        }\n    };\n}\nexport function insert(implementation, index, prop, id, internalId, value, schemaType, language, tokenizer, docsCount, options) {\n    if (isVectorType(schemaType)) {\n        return insertVector(index, prop, value, id, internalId);\n    }\n    const insertScalar = insertScalarBuilder(implementation, index, prop, internalId, language, tokenizer, docsCount, options);\n    if (!isArrayType(schemaType)) {\n        return insertScalar(value);\n    }\n    const elements = value;\n    const elementsLength = elements.length;\n    for (let i = 0; i < elementsLength; i++) {\n        insertScalar(elements[i]);\n    }\n}\nexport function insertVector(index, prop, value, id, internalDocumentId) {\n    index.vectorIndexes[prop].node.add(internalDocumentId, value);\n}\nfunction removeScalar(implementation, index, prop, id, internalId, value, schemaType, language, tokenizer, docsCount) {\n    if (isVectorType(schemaType)) {\n        index.vectorIndexes[prop].node.remove(internalId);\n        return true;\n    }\n    const { type, node } = index.indexes[prop];\n    switch (type) {\n        case 'AVL': {\n            node.removeDocument(value, internalId);\n            return true;\n        }\n        case 'Bool': {\n            node[value ? 'true' : 'false'].delete(internalId);\n            return true;\n        }\n        case 'Radix': {\n            const tokens = tokenizer.tokenize(value, language, prop);\n            implementation.removeDocumentScoreParameters(index, prop, id, docsCount);\n            for (const token of tokens) {\n                implementation.removeTokenScoreParameters(index, prop, token);\n                node.removeDocumentByWord(token, internalId);\n            }\n            return true;\n        }\n        case 'Flat': {\n            node.removeDocument(internalId, value);\n            return true;\n        }\n        case 'BKD': {\n            node.removeDocByID(value, internalId);\n            return false;\n        }\n    }\n}\nexport function remove(implementation, index, prop, id, internalId, value, schemaType, language, tokenizer, docsCount) {\n    if (!isArrayType(schemaType)) {\n        return removeScalar(implementation, index, prop, id, internalId, value, schemaType, language, tokenizer, docsCount);\n    }\n    const innerSchemaType = getInnerType(schemaType);\n    const elements = value;\n    const elementsLength = elements.length;\n    for (let i = 0; i < elementsLength; i++) {\n        removeScalar(implementation, index, prop, id, internalId, elements[i], innerSchemaType, language, tokenizer, docsCount);\n    }\n    return true;\n}\nexport function calculateResultScores(index, prop, term, ids, docsCount, bm25Relevance, resultsMap, boostPerProperty, whereFiltersIDs, keywordMatchesMap) {\n    const documentIDs = Array.from(ids);\n    const avgFieldLength = index.avgFieldLength[prop];\n    const fieldLengths = index.fieldLengths[prop];\n    const oramaOccurrences = index.tokenOccurrences[prop];\n    const oramaFrequencies = index.frequencies[prop];\n    // oramaOccurrences[term] can be undefined, 0, string, or { [k: string]: number }\n    const termOccurrences = typeof oramaOccurrences[term] === 'number' ? oramaOccurrences[term] ?? 0 : 0;\n    // Calculate TF-IDF value for each term, in each document, for each index.\n    const documentIDsLength = documentIDs.length;\n    for (let k = 0; k < documentIDsLength; k++) {\n        const internalId = documentIDs[k];\n        if (whereFiltersIDs && !whereFiltersIDs.has(internalId)) {\n            continue;\n        }\n        // Track keyword matches per property\n        if (!keywordMatchesMap.has(internalId)) {\n            keywordMatchesMap.set(internalId, new Map());\n        }\n        const propertyMatches = keywordMatchesMap.get(internalId);\n        propertyMatches.set(prop, (propertyMatches.get(prop) || 0) + 1);\n        const tf = oramaFrequencies?.[internalId]?.[term] ?? 0;\n        const bm25 = BM25(tf, termOccurrences, docsCount, fieldLengths[internalId], avgFieldLength, bm25Relevance);\n        if (resultsMap.has(internalId)) {\n            resultsMap.set(internalId, resultsMap.get(internalId) + bm25 * boostPerProperty);\n        }\n        else {\n            resultsMap.set(internalId, bm25 * boostPerProperty);\n        }\n    }\n}\nfunction searchInProperty(index, tree, prop, tokens, exact, tolerance, resultsMap, boostPerProperty, bm25Relevance, docsCount, whereFiltersIDs, keywordMatchesMap) {\n    const tokenLength = tokens.length;\n    for (let i = 0; i < tokenLength; i++) {\n        const term = tokens[i];\n        const searchResult = tree.find({ term, exact, tolerance });\n        const termsFound = Object.keys(searchResult);\n        const termsFoundLength = termsFound.length;\n        for (let j = 0; j < termsFoundLength; j++) {\n            const word = termsFound[j];\n            const ids = searchResult[word];\n            calculateResultScores(index, prop, word, ids, docsCount, bm25Relevance, resultsMap, boostPerProperty, whereFiltersIDs, keywordMatchesMap);\n        }\n    }\n}\nexport function search(index, term, tokenizer, language, propertiesToSearch, exact, tolerance, boost, relevance, docsCount, whereFiltersIDs, threshold = 0) {\n    const tokens = tokenizer.tokenize(term, language);\n    const keywordsCount = tokens.length || 1;\n    // Track keyword matches per document and property\n    const keywordMatchesMap = new Map();\n    const resultsMap = new Map();\n    for (const prop of propertiesToSearch) {\n        if (!(prop in index.indexes)) {\n            continue;\n        }\n        const tree = index.indexes[prop];\n        const { type } = tree;\n        if (type !== 'Radix') {\n            throw createError('WRONG_SEARCH_PROPERTY_TYPE', prop);\n        }\n        const boostPerProperty = boost[prop] ?? 1;\n        if (boostPerProperty <= 0) {\n            throw createError('INVALID_BOOST_VALUE', boostPerProperty);\n        }\n        // if the tokenizer returns an empty array, we returns all the documents\n        if (tokens.length === 0 && !term) {\n            tokens.push('');\n        }\n        searchInProperty(index, tree.node, prop, tokens, exact, tolerance, resultsMap, boostPerProperty, relevance, docsCount, whereFiltersIDs, keywordMatchesMap);\n    }\n    // Convert to array and sort by score\n    const results = Array.from(resultsMap.entries())\n        .map(([id, score]) => [id, score])\n        .sort((a, b) => b[1] - a[1]);\n    if (results.length === 0) {\n        return [];\n    }\n    // If threshold is 1, return all results\n    if (threshold === 1) {\n        return results;\n    }\n    // Find documents that have all keywords in at least one property\n    const fullMatches = results.filter(([id]) => {\n        const propertyMatches = keywordMatchesMap.get(id);\n        if (!propertyMatches)\n            return false;\n        // Check if any property has all keywords\n        return Array.from(propertyMatches.values()).some(matches => matches === keywordsCount);\n    });\n    // If threshold is 0, return only full matches\n    if (threshold === 0) {\n        return fullMatches;\n    }\n    // If we have full matches and threshold < 1, return full matches plus a percentage of partial matches\n    if (fullMatches.length > 0) {\n        const remainingResults = results.filter(([id]) => !fullMatches.some(([fid]) => fid === id));\n        const additionalResults = Math.ceil(remainingResults.length * threshold);\n        return [...fullMatches, ...remainingResults.slice(0, additionalResults)];\n    }\n    // If no full matches, return all results\n    return results;\n}\nexport function searchByWhereClause(index, tokenizer, filters, language) {\n    const filterKeys = Object.keys(filters);\n    const filtersMap = filterKeys.reduce((acc, key) => ({\n        [key]: new Set(),\n        ...acc\n    }), {});\n    for (const param of filterKeys) {\n        const operation = filters[param];\n        if (typeof index.indexes[param] === 'undefined') {\n            throw createError('UNKNOWN_FILTER_PROPERTY', param);\n        }\n        const { node, type, isArray } = index.indexes[param];\n        if (type === 'Bool') {\n            const idx = node;\n            const filteredIDs = operation ? idx.true : idx.false;\n            filtersMap[param] = setUnion(filtersMap[param], filteredIDs);\n            continue;\n        }\n        if (type === 'BKD') {\n            let reqOperation;\n            if ('radius' in operation) {\n                reqOperation = 'radius';\n            }\n            else if ('polygon' in operation) {\n                reqOperation = 'polygon';\n            }\n            else {\n                throw new Error(`Invalid operation ${operation}`);\n            }\n            if (reqOperation === 'radius') {\n                const { value, coordinates, unit = 'm', inside = true, highPrecision = false } = operation[reqOperation];\n                const distanceInMeters = convertDistanceToMeters(value, unit);\n                const ids = node.searchByRadius(coordinates, distanceInMeters, inside, undefined, highPrecision);\n                filtersMap[param] = addGeoResult(filtersMap[param], ids);\n            }\n            else {\n                const { coordinates, inside = true, highPrecision = false } = operation[reqOperation];\n                const ids = node.searchByPolygon(coordinates, inside, undefined, highPrecision);\n                filtersMap[param] = addGeoResult(filtersMap[param], ids);\n            }\n            continue;\n        }\n        if (type === 'Radix' && (typeof operation === 'string' || Array.isArray(operation))) {\n            for (const raw of [operation].flat()) {\n                const term = tokenizer.tokenize(raw, language, param);\n                for (const t of term) {\n                    const filteredIDsResults = node.find({ term: t, exact: true });\n                    filtersMap[param] = addFindResult(filtersMap[param], filteredIDsResults);\n                }\n            }\n            continue;\n        }\n        const operationKeys = Object.keys(operation);\n        if (operationKeys.length > 1) {\n            throw createError('INVALID_FILTER_OPERATION', operationKeys.length);\n        }\n        if (type === 'Flat') {\n            const results = new Set(isArray\n                ? node.filterArr(operation)\n                : node.filter(operation));\n            filtersMap[param] = setUnion(filtersMap[param], results);\n            continue;\n        }\n        if (type === 'AVL') {\n            const operationOpt = operationKeys[0];\n            const operationValue = operation[operationOpt];\n            let filteredIDs;\n            switch (operationOpt) {\n                case 'gt': {\n                    filteredIDs = node.greaterThan(operationValue, false);\n                    break;\n                }\n                case 'gte': {\n                    filteredIDs = node.greaterThan(operationValue, true);\n                    break;\n                }\n                case 'lt': {\n                    filteredIDs = node.lessThan(operationValue, false);\n                    break;\n                }\n                case 'lte': {\n                    filteredIDs = node.lessThan(operationValue, true);\n                    break;\n                }\n                case 'eq': {\n                    const ret = node.find(operationValue);\n                    filteredIDs = ret ?? new Set();\n                    break;\n                }\n                case 'between': {\n                    const [min, max] = operationValue;\n                    filteredIDs = node.rangeSearch(min, max);\n                    break;\n                }\n                default:\n                    throw createError('INVALID_FILTER_OPERATION', operationOpt);\n            }\n            filtersMap[param] = setUnion(filtersMap[param], filteredIDs);\n        }\n    }\n    // AND operation: calculate the intersection between all the IDs in filterMap\n    return setIntersection(...Object.values(filtersMap));\n}\nexport function getSearchableProperties(index) {\n    return index.searchableProperties;\n}\nexport function getSearchablePropertiesWithTypes(index) {\n    return index.searchablePropertiesWithTypes;\n}\nexport function load(sharedInternalDocumentStore, raw) {\n    const { indexes: rawIndexes, vectorIndexes: rawVectorIndexes, searchableProperties, searchablePropertiesWithTypes, frequencies, tokenOccurrences, avgFieldLength, fieldLengths } = raw;\n    const indexes = {};\n    const vectorIndexes = {};\n    for (const prop of Object.keys(rawIndexes)) {\n        const { node, type, isArray } = rawIndexes[prop];\n        switch (type) {\n            case 'Radix':\n                indexes[prop] = {\n                    type: 'Radix',\n                    node: RadixTree.fromJSON(node),\n                    isArray\n                };\n                break;\n            case 'Flat':\n                indexes[prop] = {\n                    type: 'Flat',\n                    node: FlatTree.fromJSON(node),\n                    isArray\n                };\n                break;\n            case 'AVL':\n                indexes[prop] = {\n                    type: 'AVL',\n                    node: AVLTree.fromJSON(node),\n                    isArray\n                };\n                break;\n            case 'BKD':\n                indexes[prop] = {\n                    type: 'BKD',\n                    node: BKDTree.fromJSON(node),\n                    isArray\n                };\n                break;\n            case 'Bool':\n                indexes[prop] = {\n                    type: 'Bool',\n                    node: BoolNode.fromJSON(node),\n                    isArray\n                };\n                break;\n            default:\n                indexes[prop] = rawIndexes[prop];\n        }\n    }\n    for (const idx of Object.keys(rawVectorIndexes)) {\n        vectorIndexes[idx] = {\n            type: 'Vector',\n            isArray: false,\n            node: VectorIndex.fromJSON(rawVectorIndexes[idx])\n        };\n    }\n    return {\n        sharedInternalDocumentStore,\n        indexes,\n        vectorIndexes,\n        searchableProperties,\n        searchablePropertiesWithTypes,\n        frequencies,\n        tokenOccurrences,\n        avgFieldLength,\n        fieldLengths\n    };\n}\nexport function save(index) {\n    const { indexes, vectorIndexes, searchableProperties, searchablePropertiesWithTypes, frequencies, tokenOccurrences, avgFieldLength, fieldLengths } = index;\n    const dumpVectorIndexes = {};\n    for (const idx of Object.keys(vectorIndexes)) {\n        dumpVectorIndexes[idx] = vectorIndexes[idx].node.toJSON();\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const savedIndexes = {};\n    for (const name of Object.keys(indexes)) {\n        const { type, node, isArray } = indexes[name];\n        if (type === 'Flat'\n            || type === 'Radix'\n            || type === 'AVL'\n            || type === 'BKD'\n            || type === 'Bool') {\n            savedIndexes[name] = {\n                type,\n                node: node.toJSON(),\n                isArray\n            };\n        }\n        else {\n            savedIndexes[name] = indexes[name];\n            savedIndexes[name].node = savedIndexes[name].node.toJSON();\n        }\n    }\n    return {\n        indexes: savedIndexes,\n        vectorIndexes: dumpVectorIndexes,\n        searchableProperties,\n        searchablePropertiesWithTypes,\n        frequencies,\n        tokenOccurrences,\n        avgFieldLength,\n        fieldLengths\n    };\n}\nexport function createIndex() {\n    return {\n        create,\n        insert,\n        remove,\n        insertDocumentScoreParameters,\n        insertTokenScoreParameters,\n        removeDocumentScoreParameters,\n        removeTokenScoreParameters,\n        calculateResultScores,\n        search,\n        searchByWhereClause,\n        getSearchableProperties,\n        getSearchablePropertiesWithTypes,\n        load,\n        save\n    };\n}\nfunction addGeoResult(set, ids) {\n    if (!set) {\n        set = new Set();\n    }\n    const idsLength = ids.length;\n    for (let i = 0; i < idsLength; i++) {\n        const entry = ids[i].docIDs;\n        const idsLength = entry.length;\n        for (let j = 0; j < idsLength; j++) {\n            set.add(entry[j]);\n        }\n    }\n    return set;\n}\nfunction addFindResult(set, filteredIDsResults) {\n    if (!set) {\n        set = new Set();\n    }\n    const keys = Object.keys(filteredIDsResults);\n    const keysLength = keys.length;\n    for (let i = 0; i < keysLength; i++) {\n        const ids = filteredIDsResults[keys[i]];\n        const idsLength = ids.length;\n        for (let j = 0; j < idsLength; j++) {\n            set.add(ids[j]);\n        }\n    }\n    return set;\n}\n//# sourceMappingURL=index.js.map","import { createError } from '../errors.js';\nimport { isVectorType } from './defaults.js';\nimport { getInternalDocumentId } from './internal-document-id-store.js';\nimport { safeArrayPush } from '../utils.js';\nimport { getLocale } from './tokenizer/languages.js';\nfunction innerCreate(orama, sharedInternalDocumentStore, schema, sortableDeniedProperties, prefix) {\n    const sorter = {\n        language: orama.tokenizer.language,\n        sharedInternalDocumentStore,\n        enabled: true,\n        isSorted: true,\n        sortableProperties: [],\n        sortablePropertiesWithTypes: {},\n        sorts: {}\n    };\n    for (const [prop, type] of Object.entries(schema)) {\n        const path = `${prefix}${prefix ? '.' : ''}${prop}`;\n        if (sortableDeniedProperties.includes(path)) {\n            continue;\n        }\n        if (typeof type === 'object' && !Array.isArray(type)) {\n            // Nested\n            const ret = innerCreate(orama, sharedInternalDocumentStore, type, sortableDeniedProperties, path);\n            safeArrayPush(sorter.sortableProperties, ret.sortableProperties);\n            sorter.sorts = {\n                ...sorter.sorts,\n                ...ret.sorts\n            };\n            sorter.sortablePropertiesWithTypes = {\n                ...sorter.sortablePropertiesWithTypes,\n                ...ret.sortablePropertiesWithTypes\n            };\n            continue;\n        }\n        if (!isVectorType(type)) {\n            switch (type) {\n                case 'boolean':\n                case 'number':\n                case 'string':\n                    sorter.sortableProperties.push(path);\n                    sorter.sortablePropertiesWithTypes[path] = type;\n                    sorter.sorts[path] = {\n                        docs: new Map(),\n                        orderedDocsToRemove: new Map(),\n                        orderedDocs: [],\n                        type: type\n                    };\n                    break;\n                case 'geopoint':\n                case 'enum':\n                    // We don't allow to sort by enums or geopoints\n                    continue;\n                case 'enum[]':\n                case 'boolean[]':\n                case 'number[]':\n                case 'string[]':\n                    // We don't allow to sort by arrays\n                    continue;\n                default:\n                    throw createError('INVALID_SORT_SCHEMA_TYPE', Array.isArray(type) ? 'array' : type, path);\n            }\n        }\n    }\n    return sorter;\n}\nfunction create(orama, sharedInternalDocumentStore, schema, config) {\n    const isSortEnabled = config?.enabled !== false;\n    if (!isSortEnabled) {\n        return {\n            disabled: true\n        };\n    }\n    return innerCreate(orama, sharedInternalDocumentStore, schema, (config || {}).unsortableProperties || [], '');\n}\nfunction insert(sorter, prop, id, value) {\n    if (!sorter.enabled) {\n        return;\n    }\n    sorter.isSorted = false;\n    const internalId = getInternalDocumentId(sorter.sharedInternalDocumentStore, id);\n    const s = sorter.sorts[prop];\n    // This happen during a document updating\n    // Because we re-use the same internalId\n    // We need to clean-up the data structure before re-inserting\n    // to avoid duplicates in the orderedDocs array\n    // See: https://github.com/oramasearch/orama/issues/629\n    if (s.orderedDocsToRemove.has(internalId)) {\n        ensureOrderedDocsAreDeletedByProperty(sorter, prop);\n    }\n    s.docs.set(internalId, s.orderedDocs.length);\n    s.orderedDocs.push([internalId, value]);\n}\nfunction ensureIsSorted(sorter) {\n    if (sorter.isSorted || !sorter.enabled) {\n        return;\n    }\n    const properties = Object.keys(sorter.sorts);\n    for (const prop of properties) {\n        ensurePropertyIsSorted(sorter, prop);\n    }\n    sorter.isSorted = true;\n}\nfunction stringSort(language, value, d) {\n    return value[1].localeCompare(d[1], getLocale(language));\n}\nfunction numberSort(value, d) {\n    return value[1] - d[1];\n}\nfunction booleanSort(value, d) {\n    return d[1] ? -1 : 1;\n}\nfunction ensurePropertyIsSorted(sorter, prop) {\n    const s = sorter.sorts[prop];\n    let predicate;\n    switch (s.type) {\n        case 'string':\n            predicate = stringSort.bind(null, sorter.language);\n            break;\n        case 'number':\n            predicate = numberSort.bind(null);\n            break;\n        case 'boolean':\n            predicate = booleanSort.bind(null);\n            break;\n    }\n    s.orderedDocs.sort(predicate);\n    // Increment position for the greather documents\n    const orderedDocsLength = s.orderedDocs.length;\n    for (let i = 0; i < orderedDocsLength; i++) {\n        const docId = s.orderedDocs[i][0];\n        s.docs.set(docId, i);\n    }\n}\nfunction ensureOrderedDocsAreDeleted(sorter) {\n    const properties = Object.keys(sorter.sorts);\n    for (const prop of properties) {\n        ensureOrderedDocsAreDeletedByProperty(sorter, prop);\n    }\n}\nfunction ensureOrderedDocsAreDeletedByProperty(sorter, prop) {\n    const s = sorter.sorts[prop];\n    if (!s.orderedDocsToRemove.size)\n        return;\n    s.orderedDocs = s.orderedDocs.filter((doc) => !s.orderedDocsToRemove.has(doc[0]));\n    s.orderedDocsToRemove.clear();\n}\nfunction remove(sorter, prop, id) {\n    if (!sorter.enabled) {\n        return;\n    }\n    const s = sorter.sorts[prop];\n    const internalId = getInternalDocumentId(sorter.sharedInternalDocumentStore, id);\n    const index = s.docs.get(internalId);\n    if (!index)\n        return;\n    s.docs.delete(internalId);\n    s.orderedDocsToRemove.set(internalId, true);\n}\nfunction sortBy(sorter, docIds, by) {\n    if (!sorter.enabled) {\n        throw createError('SORT_DISABLED');\n    }\n    const property = by.property;\n    const isDesc = by.order === 'DESC';\n    const s = sorter.sorts[property];\n    if (!s) {\n        throw createError('UNABLE_TO_SORT_ON_UNKNOWN_FIELD', property, sorter.sortableProperties.join(', '));\n    }\n    ensureOrderedDocsAreDeletedByProperty(sorter, property);\n    ensureIsSorted(sorter);\n    docIds.sort((a, b) => {\n        // This sort algorithm works leveraging on\n        // that s.docs is a map of docId -> position\n        // If a document is not indexed, it will be not present in the map\n        const indexOfA = s.docs.get(getInternalDocumentId(sorter.sharedInternalDocumentStore, a[0]));\n        const indexOfB = s.docs.get(getInternalDocumentId(sorter.sharedInternalDocumentStore, b[0]));\n        const isAIndexed = typeof indexOfA !== 'undefined';\n        const isBIndexed = typeof indexOfB !== 'undefined';\n        if (!isAIndexed && !isBIndexed) {\n            return 0;\n        }\n        // unindexed documents are always at the end\n        if (!isAIndexed) {\n            return 1;\n        }\n        if (!isBIndexed) {\n            return -1;\n        }\n        return isDesc ? indexOfB - indexOfA : indexOfA - indexOfB;\n    });\n    return docIds;\n}\nfunction getSortableProperties(sorter) {\n    if (!sorter.enabled) {\n        return [];\n    }\n    return sorter.sortableProperties;\n}\nfunction getSortablePropertiesWithTypes(sorter) {\n    if (!sorter.enabled) {\n        return {};\n    }\n    return sorter.sortablePropertiesWithTypes;\n}\nexport function load(sharedInternalDocumentStore, raw) {\n    const rawDocument = raw;\n    if (!rawDocument.enabled) {\n        return {\n            enabled: false\n        };\n    }\n    const sorts = Object.keys(rawDocument.sorts).reduce((acc, prop) => {\n        const { docs, orderedDocs, type } = rawDocument.sorts[prop];\n        acc[prop] = {\n            docs: new Map(Object.entries(docs).map(([k, v]) => [+k, v])),\n            orderedDocsToRemove: new Map(),\n            orderedDocs,\n            type\n        };\n        return acc;\n    }, {});\n    return {\n        sharedInternalDocumentStore,\n        language: rawDocument.language,\n        sortableProperties: rawDocument.sortableProperties,\n        sortablePropertiesWithTypes: rawDocument.sortablePropertiesWithTypes,\n        sorts,\n        enabled: true,\n        isSorted: rawDocument.isSorted\n    };\n}\nexport function save(sorter) {\n    if (!sorter.enabled) {\n        return {\n            enabled: false\n        };\n    }\n    ensureOrderedDocsAreDeleted(sorter);\n    ensureIsSorted(sorter);\n    const sorts = Object.keys(sorter.sorts).reduce((acc, prop) => {\n        const { docs, orderedDocs, type } = sorter.sorts[prop];\n        acc[prop] = {\n            docs: Object.fromEntries(docs.entries()),\n            orderedDocs,\n            type\n        };\n        return acc;\n    }, {});\n    return {\n        language: sorter.language,\n        sortableProperties: sorter.sortableProperties,\n        sortablePropertiesWithTypes: sorter.sortablePropertiesWithTypes,\n        sorts,\n        enabled: sorter.enabled,\n        isSorted: sorter.isSorted\n    };\n}\nexport function createSorter() {\n    return {\n        create,\n        insert,\n        remove,\n        save,\n        load,\n        sortBy,\n        getSortableProperties,\n        getSortablePropertiesWithTypes\n    };\n}\n//# sourceMappingURL=sorter.js.map","const DIACRITICS_CHARCODE_START = 192;\nconst DIACRITICS_CHARCODE_END = 383;\nconst CHARCODE_REPLACE_MAPPING = [\n    65,\n    65,\n    65,\n    65,\n    65,\n    65,\n    65,\n    67,\n    69,\n    69,\n    69,\n    69,\n    73,\n    73,\n    73,\n    73,\n    69,\n    78,\n    79,\n    79,\n    79,\n    79,\n    79,\n    null,\n    79,\n    85,\n    85,\n    85,\n    85,\n    89,\n    80,\n    115,\n    97,\n    97,\n    97,\n    97,\n    97,\n    97,\n    97,\n    99,\n    101,\n    101,\n    101,\n    101,\n    105,\n    105,\n    105,\n    105,\n    101,\n    110,\n    111,\n    111,\n    111,\n    111,\n    111,\n    null,\n    111,\n    117,\n    117,\n    117,\n    117,\n    121,\n    112,\n    121,\n    65,\n    97,\n    65,\n    97,\n    65,\n    97,\n    67,\n    99,\n    67,\n    99,\n    67,\n    99,\n    67,\n    99,\n    68,\n    100,\n    68,\n    100,\n    69,\n    101,\n    69,\n    101,\n    69,\n    101,\n    69,\n    101,\n    69,\n    101,\n    71,\n    103,\n    71,\n    103,\n    71,\n    103,\n    71,\n    103,\n    72,\n    104,\n    72,\n    104,\n    73,\n    105,\n    73,\n    105,\n    73,\n    105,\n    73,\n    105,\n    73,\n    105,\n    73,\n    105,\n    74,\n    106,\n    75,\n    107,\n    107,\n    76,\n    108,\n    76,\n    108,\n    76,\n    108,\n    76,\n    108,\n    76,\n    108,\n    78,\n    110,\n    78,\n    110,\n    78,\n    110,\n    110,\n    78,\n    110,\n    79,\n    111,\n    79,\n    111,\n    79,\n    111,\n    79,\n    111,\n    82,\n    114,\n    82,\n    114,\n    82,\n    114,\n    83,\n    115,\n    83,\n    115,\n    83,\n    115,\n    83,\n    115,\n    84,\n    116,\n    84,\n    116,\n    84,\n    116,\n    85,\n    117,\n    85,\n    117,\n    85,\n    117,\n    85,\n    117,\n    85,\n    117,\n    85,\n    117,\n    87,\n    119,\n    89,\n    121,\n    89,\n    90,\n    122,\n    90,\n    122,\n    90,\n    122,\n    115\n];\nfunction replaceChar(charCode) {\n    if (charCode < DIACRITICS_CHARCODE_START || charCode > DIACRITICS_CHARCODE_END)\n        return charCode;\n    /* c8 ignore next  */\n    return CHARCODE_REPLACE_MAPPING[charCode - DIACRITICS_CHARCODE_START] || charCode;\n}\nexport function replaceDiacritics(str) {\n    const stringCharCode = [];\n    for (let idx = 0; idx < str.length; idx++) {\n        stringCharCode[idx] = replaceChar(str.charCodeAt(idx));\n    }\n    return String.fromCharCode(...stringCharCode);\n}\n//# sourceMappingURL=diacritics.js.map","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nconst step2List = {\n    ational: 'ate',\n    tional: 'tion',\n    enci: 'ence',\n    anci: 'ance',\n    izer: 'ize',\n    bli: 'ble',\n    alli: 'al',\n    entli: 'ent',\n    eli: 'e',\n    ousli: 'ous',\n    ization: 'ize',\n    ation: 'ate',\n    ator: 'ate',\n    alism: 'al',\n    iveness: 'ive',\n    fulness: 'ful',\n    ousness: 'ous',\n    aliti: 'al',\n    iviti: 'ive',\n    biliti: 'ble',\n    logi: 'log'\n};\nconst step3List = {\n    icate: 'ic',\n    ative: '',\n    alize: 'al',\n    iciti: 'ic',\n    ical: 'ic',\n    ful: '',\n    ness: ''\n};\n// Consonant\nconst c = '[^aeiou]';\n// Vowel\nconst v = '[aeiouy]';\n// Consonant sequence\nconst C = c + '[^aeiouy]*';\n// Vowel sequence\nconst V = v + '[aeiou]*';\n// [C]VC... is m>0\nconst mgr0 = '^(' + C + ')?' + V + C;\n// [C]VC[V] is m=1\nconst meq1 = '^(' + C + ')?' + V + C + '(' + V + ')?$';\n// [C]VCVC... is m>1\nconst mgr1 = '^(' + C + ')?' + V + C + V + C;\n// vowel in stem\nconst s_v = '^(' + C + ')?' + v;\nexport function stemmer(w) {\n    let stem;\n    let suffix;\n    let re;\n    let re2;\n    let re3;\n    let re4;\n    if (w.length < 3) {\n        return w;\n    }\n    const firstch = w.substring(0, 1);\n    if (firstch == 'y') {\n        w = firstch.toUpperCase() + w.substring(1);\n    }\n    re = /^(.+?)(ss|i)es$/;\n    re2 = /^(.+?)([^s])s$/;\n    if (re.test(w)) {\n        w = w.replace(re, '$1$2');\n    }\n    else if (re2.test(w)) {\n        w = w.replace(re2, '$1$2');\n    }\n    re = /^(.+?)eed$/;\n    re2 = /^(.+?)(ed|ing)$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        re = new RegExp(mgr0);\n        if (re.test(fp[1])) {\n            re = /.$/;\n            w = w.replace(re, '');\n        }\n    }\n    else if (re2.test(w)) {\n        const fp = re2.exec(w);\n        stem = fp[1];\n        re2 = new RegExp(s_v);\n        if (re2.test(stem)) {\n            w = stem;\n            re2 = /(at|bl|iz)$/;\n            re3 = new RegExp('([^aeiouylsz])\\\\1$');\n            re4 = new RegExp('^' + C + v + '[^aeiouwxy]$');\n            if (re2.test(w)) {\n                w = w + 'e';\n            }\n            else if (re3.test(w)) {\n                re = /.$/;\n                w = w.replace(re, '');\n            }\n            else if (re4.test(w)) {\n                w = w + 'e';\n            }\n        }\n    }\n    re = /^(.+?)y$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        re = new RegExp(s_v);\n        if (stem && re.test(stem)) {\n            w = stem + 'i';\n        }\n    }\n    re =\n        /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        suffix = fp?.[2];\n        re = new RegExp(mgr0);\n        if (stem && re.test(stem)) {\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            w = stem + step2List[suffix];\n        }\n    }\n    re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        suffix = fp?.[2];\n        re = new RegExp(mgr0);\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        if (stem && re.test(stem)) {\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            w = stem + step3List[suffix];\n        }\n    }\n    re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n    re2 = /^(.+?)(s|t)(ion)$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        re = new RegExp(mgr1);\n        if (stem && re.test(stem)) {\n            w = stem;\n        }\n    }\n    else if (re2.test(w)) {\n        const fp = re2.exec(w);\n        stem = fp?.[1] ?? '' + fp?.[2] ?? '';\n        re2 = new RegExp(mgr1);\n        if (re2.test(stem)) {\n            w = stem;\n        }\n    }\n    re = /^(.+?)e$/;\n    if (re.test(w)) {\n        const fp = re.exec(w);\n        stem = fp?.[1];\n        re = new RegExp(mgr1);\n        re2 = new RegExp(meq1);\n        re3 = new RegExp('^' + C + v + '[^aeiouwxy]$');\n        if (stem && (re.test(stem) || (re2.test(stem) && !re3.test(stem)))) {\n            w = stem;\n        }\n    }\n    re = /ll$/;\n    re2 = new RegExp(mgr1);\n    if (re.test(w) && re2.test(w)) {\n        re = /.$/;\n        w = w.replace(re, '');\n    }\n    if (firstch == 'y') {\n        w = firstch.toLowerCase() + w.substring(1);\n    }\n    return w;\n}\n//# sourceMappingURL=english-stemmer.js.map","import { createError } from '../../errors.js';\nimport { replaceDiacritics } from './diacritics.js';\nimport { SPLITTERS, SUPPORTED_LANGUAGES } from './languages.js';\nimport { stemmer as english } from './english-stemmer.js';\nexport function normalizeToken(prop, token, withCache = true) {\n    const key = `${this.language}:${prop}:${token}`;\n    if (withCache && this.normalizationCache.has(key)) {\n        return this.normalizationCache.get(key);\n    }\n    // Remove stopwords if enabled\n    if (this.stopWords?.includes(token)) {\n        if (withCache) {\n            this.normalizationCache.set(key, '');\n        }\n        return '';\n    }\n    // Apply stemming if enabled\n    if (this.stemmer && !this.stemmerSkipProperties.has(prop)) {\n        token = this.stemmer(token);\n    }\n    token = replaceDiacritics(token);\n    if (withCache) {\n        this.normalizationCache.set(key, token);\n    }\n    return token;\n}\n/* c8 ignore next 10 */\nfunction trim(text) {\n    while (text[text.length - 1] === '') {\n        text.pop();\n    }\n    while (text[0] === '') {\n        text.shift();\n    }\n    return text;\n}\nfunction tokenize(input, language, prop, withCache = true) {\n    if (language && language !== this.language) {\n        throw createError('LANGUAGE_NOT_SUPPORTED', language);\n    }\n    /* c8 ignore next 3 */\n    if (typeof input !== 'string') {\n        return [input];\n    }\n    const normalizeToken = this.normalizeToken.bind(this, prop ?? '');\n    let tokens;\n    if (prop && this.tokenizeSkipProperties.has(prop)) {\n        tokens = [normalizeToken(input, withCache)];\n    }\n    else {\n        const splitRule = SPLITTERS[this.language];\n        tokens = input\n            .toLowerCase()\n            .split(splitRule)\n            .map(t => normalizeToken(t, withCache))\n            .filter(Boolean);\n    }\n    const trimTokens = trim(tokens);\n    if (!this.allowDuplicates) {\n        return Array.from(new Set(trimTokens));\n    }\n    return trimTokens;\n}\nexport function createTokenizer(config = {}) {\n    if (!config.language) {\n        config.language = 'english';\n    }\n    else if (!SUPPORTED_LANGUAGES.includes(config.language)) {\n        throw createError('LANGUAGE_NOT_SUPPORTED', config.language);\n    }\n    // Handle stemming - It is disabled by default\n    let stemmer;\n    if (config.stemming || (config.stemmer && !('stemming' in config))) {\n        if (config.stemmer) {\n            if (typeof config.stemmer !== 'function') {\n                throw createError('INVALID_STEMMER_FUNCTION_TYPE');\n            }\n            stemmer = config.stemmer;\n        }\n        else {\n            if (config.language === 'english') {\n                stemmer = english;\n            }\n            else {\n                throw createError('MISSING_STEMMER', config.language);\n            }\n        }\n    }\n    // Handle stopwords\n    let stopWords;\n    if (config.stopWords !== false) {\n        stopWords = [];\n        if (Array.isArray(config.stopWords)) {\n            stopWords = config.stopWords;\n        }\n        else if (typeof config.stopWords === 'function') {\n            stopWords = config.stopWords(stopWords);\n        }\n        else if (config.stopWords) {\n            throw createError('CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY');\n        }\n        // Make sure stopWords is just an array of strings\n        if (!Array.isArray(stopWords)) {\n            throw createError('CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY');\n        }\n        for (const s of stopWords) {\n            if (typeof s !== 'string') {\n                throw createError('CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY');\n            }\n        }\n    }\n    // Create the tokenizer\n    const tokenizer = {\n        tokenize,\n        language: config.language,\n        stemmer,\n        stemmerSkipProperties: new Set(config.stemmerSkipProperties ? [config.stemmerSkipProperties].flat() : []),\n        tokenizeSkipProperties: new Set(config.tokenizeSkipProperties ? [config.tokenizeSkipProperties].flat() : []),\n        stopWords,\n        allowDuplicates: Boolean(config.allowDuplicates),\n        normalizeToken,\n        normalizationCache: new Map()\n    };\n    tokenizer.tokenize = tokenize.bind(tokenizer);\n    tokenizer.normalizeToken = normalizeToken;\n    return tokenizer;\n}\n//# sourceMappingURL=index.js.map","import { formatElapsedTime, getDocumentIndexId, getDocumentProperties, validateSchema } from '../components/defaults.js';\nimport { createDocumentsStore } from '../components/documents-store.js';\nimport { AVAILABLE_PLUGIN_HOOKS, getAllPluginsByHook } from '../components/plugins.js';\nimport { FUNCTION_COMPONENTS, OBJECT_COMPONENTS, runAfterCreate } from '../components/hooks.js';\nimport { createIndex } from '../components/index.js';\nimport { createInternalDocumentIDStore } from '../components/internal-document-id-store.js';\nimport { createSorter } from '../components/sorter.js';\nimport { createTokenizer } from '../components/tokenizer/index.js';\nimport { createError } from '../errors.js';\nimport { uniqueId } from '../utils.js';\nfunction validateComponents(components) {\n    const defaultComponents = {\n        formatElapsedTime,\n        getDocumentIndexId,\n        getDocumentProperties,\n        validateSchema\n    };\n    for (const rawKey of FUNCTION_COMPONENTS) {\n        const key = rawKey;\n        if (components[key]) {\n            if (typeof components[key] !== 'function') {\n                throw createError('COMPONENT_MUST_BE_FUNCTION', key);\n            }\n        }\n        else {\n            // @ts-expect-error TSC is unable to resolve this\n            components[key] = defaultComponents[key];\n        }\n    }\n    for (const rawKey of Object.keys(components)) {\n        if (!OBJECT_COMPONENTS.includes(rawKey) && !FUNCTION_COMPONENTS.includes(rawKey)) {\n            throw createError('UNSUPPORTED_COMPONENT', rawKey);\n        }\n    }\n}\nexport function create({ schema, sort, language, components, id, plugins }) {\n    if (!components) {\n        components = {};\n    }\n    for (const plugin of plugins ?? []) {\n        if (!('getComponents' in plugin)) {\n            continue;\n        }\n        if (typeof plugin.getComponents !== 'function') {\n            continue;\n        }\n        const pluginComponents = plugin.getComponents(schema);\n        const keys = Object.keys(pluginComponents);\n        for (const key of keys) {\n            if (components[key]) {\n                throw createError('PLUGIN_COMPONENT_CONFLICT', key, plugin.name);\n            }\n        }\n        components = {\n            ...components,\n            ...pluginComponents\n        };\n    }\n    if (!id) {\n        id = uniqueId();\n    }\n    let tokenizer = components.tokenizer;\n    let index = components.index;\n    let documentsStore = components.documentsStore;\n    let sorter = components.sorter;\n    if (!tokenizer) {\n        // Use the default tokenizer\n        tokenizer = createTokenizer({ language: language ?? 'english' });\n    }\n    else if (!tokenizer.tokenize) {\n        // If there is no tokenizer function, we assume this is a TokenizerConfig\n        tokenizer = createTokenizer(tokenizer);\n    }\n    else {\n        const customTokenizer = tokenizer;\n        tokenizer = customTokenizer;\n    }\n    if (components.tokenizer && language) {\n        // Accept language only if a tokenizer is not provided\n        throw createError('NO_LANGUAGE_WITH_CUSTOM_TOKENIZER');\n    }\n    const internalDocumentStore = createInternalDocumentIDStore();\n    index ||= createIndex();\n    sorter ||= createSorter();\n    documentsStore ||= createDocumentsStore();\n    // Validate all other components\n    validateComponents(components);\n    // Assign only recognized components and hooks\n    const { getDocumentProperties, getDocumentIndexId, validateSchema, formatElapsedTime } = components;\n    const orama = {\n        data: {},\n        caches: {},\n        schema,\n        tokenizer,\n        index,\n        sorter,\n        documentsStore,\n        internalDocumentIDStore: internalDocumentStore,\n        getDocumentProperties,\n        getDocumentIndexId,\n        validateSchema,\n        beforeInsert: [],\n        afterInsert: [],\n        beforeRemove: [],\n        afterRemove: [],\n        beforeUpdate: [],\n        afterUpdate: [],\n        beforeSearch: [],\n        afterSearch: [],\n        beforeInsertMultiple: [],\n        afterInsertMultiple: [],\n        beforeRemoveMultiple: [],\n        afterRemoveMultiple: [],\n        afterUpdateMultiple: [],\n        beforeUpdateMultiple: [],\n        afterCreate: [],\n        formatElapsedTime,\n        id,\n        plugins,\n        version: getVersion()\n    };\n    orama.data = {\n        index: orama.index.create(orama, internalDocumentStore, schema),\n        docs: orama.documentsStore.create(orama, internalDocumentStore),\n        sorting: orama.sorter.create(orama, internalDocumentStore, schema, sort)\n    };\n    for (const hook of AVAILABLE_PLUGIN_HOOKS) {\n        orama[hook] = (orama[hook] ?? []).concat(getAllPluginsByHook(orama, hook));\n    }\n    const afterCreate = orama['afterCreate'];\n    if (afterCreate) {\n        runAfterCreate(afterCreate, orama);\n    }\n    return orama;\n}\nfunction getVersion() {\n    return '{{VERSION}}';\n}\n//# sourceMappingURL=create.js.map","export function getByID(db, id) {\n    return db.documentsStore.get(db.data.docs, id);\n}\nexport function count(db) {\n    return db.documentsStore.count(db.data.docs);\n}\n//# sourceMappingURL=docs.js.map","export const MODE_FULLTEXT_SEARCH = 'fulltext';\nexport const MODE_HYBRID_SEARCH = 'hybrid';\nexport const MODE_VECTOR_SEARCH = 'vector';\n//# sourceMappingURL=constants.js.map","export { MODE_FULLTEXT_SEARCH, MODE_HYBRID_SEARCH, MODE_VECTOR_SEARCH } from './constants.js';\nexport const kInsertions = Symbol('orama.insertions');\nexport const kRemovals = Symbol('orama.removals');\n//# sourceMappingURL=types.js.map","import { kInsertions, kRemovals } from '../types.js';\n// Web platforms don't have process. React-Native doesn't have process.emitWarning.\nconst warn = globalThis.process?.emitWarning ??\n    function emitWarning(message, options) {\n        console.warn(`[WARNING] [${options.code}] ${message}`);\n    };\nexport function trackInsertion(orama) {\n    if (typeof orama[kInsertions] !== 'number') {\n        queueMicrotask(() => {\n            orama[kInsertions] = undefined;\n        });\n        orama[kInsertions] = 0;\n    }\n    if (orama[kInsertions] > 1000) {\n        warn(\"Orama's insert operation is synchronous. Please avoid inserting a large number of document in a single operation in order not to block the main thread or, in alternative, please use insertMultiple.\", { code: 'ORAMA0001' });\n        orama[kInsertions] = -1;\n    }\n    else if (orama[kInsertions] >= 0) {\n        orama[kInsertions]++;\n    }\n}\nexport function trackRemoval(orama) {\n    if (typeof orama[kRemovals] !== 'number') {\n        queueMicrotask(() => {\n            orama[kRemovals] = undefined;\n        });\n        orama[kRemovals] = 0;\n    }\n    if (orama[kRemovals] > 1000) {\n        warn(\"Orama's remove operation is synchronous. Please avoid removing a large number of document in a single operation in order not to block the main thread, in alternative, please use updateMultiple.\", { code: 'ORAMA0002' });\n        orama[kRemovals] = -1;\n    }\n    else if (orama[kRemovals] >= 0) {\n        orama[kRemovals]++;\n    }\n}\n//# sourceMappingURL=sync-blocking-checker.js.map","import { isArrayType, isGeoPointType, isVectorType } from '../components.js';\nimport { isAsyncFunction, sleep } from '../utils.js';\nimport { runMultipleHook, runSingleHook } from '../components/hooks.js';\nimport { trackInsertion } from '../components/sync-blocking-checker.js';\nimport { createError } from '../errors.js';\nimport { getInternalDocumentId } from '../components/internal-document-id-store.js';\nexport function insert(orama, doc, language, skipHooks, options) {\n    const errorProperty = orama.validateSchema(doc, orama.schema);\n    if (errorProperty) {\n        throw createError('SCHEMA_VALIDATION_FAILURE', errorProperty);\n    }\n    const asyncNeeded = isAsyncFunction(orama.beforeInsert) ||\n        isAsyncFunction(orama.afterInsert) ||\n        isAsyncFunction(orama.index.beforeInsert) ||\n        isAsyncFunction(orama.index.insert) ||\n        isAsyncFunction(orama.index.afterInsert);\n    if (asyncNeeded) {\n        return innerInsertAsync(orama, doc, language, skipHooks, options);\n    }\n    return innerInsertSync(orama, doc, language, skipHooks, options);\n}\nconst ENUM_TYPE = new Set(['enum', 'enum[]']);\nconst STRING_NUMBER_TYPE = new Set(['string', 'number']);\nasync function innerInsertAsync(orama, doc, language, skipHooks, options) {\n    const { index, docs } = orama.data;\n    const id = orama.getDocumentIndexId(doc);\n    if (typeof id !== 'string') {\n        throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof id);\n    }\n    const internalId = getInternalDocumentId(orama.internalDocumentIDStore, id);\n    if (!orama.documentsStore.store(docs, id, internalId, doc)) {\n        throw createError('DOCUMENT_ALREADY_EXISTS', id);\n    }\n    const docsCount = orama.documentsStore.count(docs);\n    if (!skipHooks) {\n        await runSingleHook(orama.beforeInsert, orama, id, doc);\n    }\n    const indexableProperties = orama.index.getSearchableProperties(index);\n    const indexablePropertiesWithTypes = orama.index.getSearchablePropertiesWithTypes(index);\n    const indexableValues = orama.getDocumentProperties(doc, indexableProperties);\n    for (const [key, value] of Object.entries(indexableValues)) {\n        if (typeof value === 'undefined')\n            continue;\n        const actualType = typeof value;\n        const expectedType = indexablePropertiesWithTypes[key];\n        validateDocumentProperty(actualType, expectedType, key, value);\n    }\n    await indexAndSortDocument(orama, id, indexableProperties, indexableValues, docsCount, language, doc, options);\n    if (!skipHooks) {\n        await runSingleHook(orama.afterInsert, orama, id, doc);\n    }\n    trackInsertion(orama);\n    return id;\n}\nfunction innerInsertSync(orama, doc, language, skipHooks, options) {\n    const { index, docs } = orama.data;\n    const id = orama.getDocumentIndexId(doc);\n    if (typeof id !== 'string') {\n        throw createError('DOCUMENT_ID_MUST_BE_STRING', typeof id);\n    }\n    const internalId = getInternalDocumentId(orama.internalDocumentIDStore, id);\n    if (!orama.documentsStore.store(docs, id, internalId, doc)) {\n        throw createError('DOCUMENT_ALREADY_EXISTS', id);\n    }\n    const docsCount = orama.documentsStore.count(docs);\n    if (!skipHooks) {\n        runSingleHook(orama.beforeInsert, orama, id, doc);\n    }\n    const indexableProperties = orama.index.getSearchableProperties(index);\n    const indexablePropertiesWithTypes = orama.index.getSearchablePropertiesWithTypes(index);\n    const indexableValues = orama.getDocumentProperties(doc, indexableProperties);\n    for (const [key, value] of Object.entries(indexableValues)) {\n        if (typeof value === 'undefined')\n            continue;\n        const actualType = typeof value;\n        const expectedType = indexablePropertiesWithTypes[key];\n        validateDocumentProperty(actualType, expectedType, key, value);\n    }\n    indexAndSortDocumentSync(orama, id, indexableProperties, indexableValues, docsCount, language, doc, options);\n    if (!skipHooks) {\n        runSingleHook(orama.afterInsert, orama, id, doc);\n    }\n    trackInsertion(orama);\n    return id;\n}\nfunction validateDocumentProperty(actualType, expectedType, key, value) {\n    if (isGeoPointType(expectedType) &&\n        typeof value === 'object' &&\n        typeof value.lon === 'number' &&\n        typeof value.lat === 'number') {\n        return;\n    }\n    if (isVectorType(expectedType) && Array.isArray(value))\n        return;\n    if (isArrayType(expectedType) && Array.isArray(value))\n        return;\n    if (ENUM_TYPE.has(expectedType) && STRING_NUMBER_TYPE.has(actualType))\n        return;\n    if (actualType !== expectedType) {\n        throw createError('INVALID_DOCUMENT_PROPERTY', key, expectedType, actualType);\n    }\n}\nasync function indexAndSortDocument(orama, id, indexableProperties, indexableValues, docsCount, language, doc, options) {\n    for (const prop of indexableProperties) {\n        const value = indexableValues[prop];\n        if (typeof value === 'undefined')\n            continue;\n        const expectedType = orama.index.getSearchablePropertiesWithTypes(orama.data.index)[prop];\n        await orama.index.beforeInsert?.(orama.data.index, prop, id, value, expectedType, language, orama.tokenizer, docsCount);\n        const internalId = orama.internalDocumentIDStore.idToInternalId.get(id);\n        await orama.index.insert(orama.index, orama.data.index, prop, id, internalId, value, expectedType, language, orama.tokenizer, docsCount, options);\n        await orama.index.afterInsert?.(orama.data.index, prop, id, value, expectedType, language, orama.tokenizer, docsCount);\n    }\n    const sortableProperties = orama.sorter.getSortableProperties(orama.data.sorting);\n    const sortableValues = orama.getDocumentProperties(doc, sortableProperties);\n    for (const prop of sortableProperties) {\n        const value = sortableValues[prop];\n        if (typeof value === 'undefined')\n            continue;\n        const expectedType = orama.sorter.getSortablePropertiesWithTypes(orama.data.sorting)[prop];\n        orama.sorter.insert(orama.data.sorting, prop, id, value, expectedType, language);\n    }\n}\nfunction indexAndSortDocumentSync(orama, id, indexableProperties, indexableValues, docsCount, language, doc, options) {\n    for (const prop of indexableProperties) {\n        const value = indexableValues[prop];\n        if (typeof value === 'undefined')\n            continue;\n        const expectedType = orama.index.getSearchablePropertiesWithTypes(orama.data.index)[prop];\n        const internalDocumentId = getInternalDocumentId(orama.internalDocumentIDStore, id);\n        orama.index.beforeInsert?.(orama.data.index, prop, id, value, expectedType, language, orama.tokenizer, docsCount);\n        orama.index.insert(orama.index, orama.data.index, prop, id, internalDocumentId, value, expectedType, language, orama.tokenizer, docsCount, options);\n        orama.index.afterInsert?.(orama.data.index, prop, id, value, expectedType, language, orama.tokenizer, docsCount);\n    }\n    const sortableProperties = orama.sorter.getSortableProperties(orama.data.sorting);\n    const sortableValues = orama.getDocumentProperties(doc, sortableProperties);\n    for (const prop of sortableProperties) {\n        const value = sortableValues[prop];\n        if (typeof value === 'undefined')\n            continue;\n        const expectedType = orama.sorter.getSortablePropertiesWithTypes(orama.data.sorting)[prop];\n        orama.sorter.insert(orama.data.sorting, prop, id, value, expectedType, language);\n    }\n}\nexport function insertMultiple(orama, docs, batchSize, language, skipHooks, timeout) {\n    const asyncNeeded = isAsyncFunction(orama.afterInsertMultiple) ||\n        isAsyncFunction(orama.beforeInsertMultiple) ||\n        isAsyncFunction(orama.index.beforeInsert) ||\n        isAsyncFunction(orama.index.insert) ||\n        isAsyncFunction(orama.index.afterInsert);\n    if (asyncNeeded) {\n        return innerInsertMultipleAsync(orama, docs, batchSize, language, skipHooks, timeout);\n    }\n    return innerInsertMultipleSync(orama, docs, batchSize, language, skipHooks, timeout);\n}\nasync function innerInsertMultipleAsync(orama, docs, batchSize = 1000, language, skipHooks, timeout = 0) {\n    const ids = [];\n    const processNextBatch = async (startIndex) => {\n        const endIndex = Math.min(startIndex + batchSize, docs.length);\n        const batch = docs.slice(startIndex, endIndex);\n        for (const doc of batch) {\n            const options = { avlRebalanceThreshold: batch.length };\n            const id = await insert(orama, doc, language, skipHooks, options);\n            ids.push(id);\n        }\n        return endIndex;\n    };\n    const processAllBatches = async () => {\n        let currentIndex = 0;\n        while (currentIndex < docs.length) {\n            const startTime = Date.now();\n            currentIndex = await processNextBatch(currentIndex);\n            if (timeout > 0) {\n                const elapsedTime = Date.now() - startTime;\n                const waitTime = timeout - elapsedTime;\n                if (waitTime > 0) {\n                    sleep(waitTime);\n                }\n            }\n        }\n    };\n    await processAllBatches();\n    if (!skipHooks) {\n        await runMultipleHook(orama.afterInsertMultiple, orama, docs);\n    }\n    return ids;\n}\nfunction innerInsertMultipleSync(orama, docs, batchSize = 1000, language, skipHooks, timeout = 0) {\n    const ids = [];\n    let i = 0;\n    function processNextBatch() {\n        const batch = docs.slice(i * batchSize, (i + 1) * batchSize);\n        if (batch.length === 0)\n            return false;\n        for (const doc of batch) {\n            const options = { avlRebalanceThreshold: batch.length };\n            const id = insert(orama, doc, language, skipHooks, options);\n            ids.push(id);\n        }\n        i++;\n        return true;\n    }\n    function processAllBatches() {\n        const startTime = Date.now();\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            const hasMoreBatches = processNextBatch();\n            if (!hasMoreBatches)\n                break;\n            if (timeout > 0) {\n                const elapsedTime = Date.now() - startTime;\n                if (elapsedTime >= timeout) {\n                    const remainingTime = timeout - (elapsedTime % timeout);\n                    if (remainingTime > 0) {\n                        sleep(remainingTime);\n                    }\n                }\n            }\n        }\n    }\n    processAllBatches();\n    if (!skipHooks) {\n        runMultipleHook(orama.afterInsertMultiple, orama, docs);\n    }\n    return ids;\n}\nexport function innerInsertMultiple(orama, docs, batchSize, language, skipHooks, timeout) {\n    const asyncNeeded = isAsyncFunction(orama.beforeInsert) ||\n        isAsyncFunction(orama.afterInsert) ||\n        isAsyncFunction(orama.index.beforeInsert) ||\n        isAsyncFunction(orama.index.insert) ||\n        isAsyncFunction(orama.index.afterInsert);\n    if (asyncNeeded) {\n        return innerInsertMultipleAsync(orama, docs, batchSize, language, skipHooks, timeout);\n    }\n    return innerInsertMultipleSync(orama, docs, batchSize, language, skipHooks, timeout);\n}\n//# sourceMappingURL=insert.js.map","import { runMultipleHook, runSingleHook } from '../components/hooks.js';\nimport { getDocumentIdFromInternalId, getInternalDocumentId, } from '../components/internal-document-id-store.js';\nimport { trackRemoval } from '../components/sync-blocking-checker.js';\nimport { isAsyncFunction } from '../utils.js';\nexport function remove(orama, id, language, skipHooks) {\n    const asyncNeeded = isAsyncFunction(orama.index.beforeRemove) ||\n        isAsyncFunction(orama.index.remove) ||\n        isAsyncFunction(orama.index.afterRemove);\n    if (asyncNeeded) {\n        return removeAsync(orama, id, language, skipHooks